欢迎来到天天文库
浏览记录
ID:6650061
大小:431.76 KB
页数:45页
时间:2018-01-21
《算法设计与分析课程论文-24计算问题》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、算法设计与分析课程论文论文名称24计算问题学院教育信息技术学院学生姓名学号2017年1月3日目录一、问题描述1二、前端分析11、功能需求12、工具选择1三、详细设计及说明1四、算法设计思想4核心算法4辅助算法5五、问题及解决6六、总结反思7七、小组分工7八、小组互评7九、编程日记811月29日编程日记812月6日编程日记812月7日编程日记9十、源代码924计算问题一、问题描述24点游戏是指任意输入1-9的四个数,通过加减乘除四则运算连接,使得计算结果为24,而使用计算机模拟该游戏,就是让程序随机产生数字,由用户组
2、合成表达式,交给程序进行结果判断。二、前端分析1、功能需求(1)模式选择:根据玩家人数选择单人模式或者双人模式(2)用户登录/注册:允许用户登录、注册,确保账号安全(3)随机:自动产生随机数,供用户选择(4)验证:对用户输入的表达式进行判断(5)计算:对随机产生的数字求解,得出符合要求的表达式(6)记录:能够根据玩家的输赢情况,实时更新玩家等级(7)存储:存储并动态更新用户的相关信息,包括用户名、密码、游戏等级2、工具选择工具:DW,语言:php,用本机localhost做服务器和测试端(1)交互性强,用户能够通过
3、鼠标、键盘等输入与网页进行交互(2)界面编写容易,div+css可以实现网页布局(3)数据存储读取方便,能够实时与AppServ自带的数据库链接(4)24点游戏本身适合做成网页版三、详细设计及说明1、模式选择:选择不同的模式将会跳转至不同游戏界面单人模式双人模式帮助:游戏规则:选择单人模式将独自完成任务,每完成一关将会上升一个等级,回答错误将会下降一个等级;选择双人模式胜利者将上升一个等级,失败者将下降一个等级。432、登录/注册界面登录:与数据库连接,验证用户名密码是否一致,用post方法获取表单提交的数据,将数
4、据库的信息与之匹配,登录成功则跳转至游戏界面,并为用户创建session,保存用户名与等级;否则提示用户名密码错误,重新回到登录界面。注册:用户名已经存在的不能被注册,保证用户名的唯一,新注册的用户等级为0。3、单人模式游戏界面用户信息:利用登陆界面传递的session获取用户名和密码开始游戏:产生4个随机数新一轮:即下一关,页面刷新,用户等级实施更新提交:对用户输入的表达式进行验证,给出“回答正确”或者“回答错误”的结果,实施更新用户等级退出:返回模式选择界面43无解:计算是否有符合24要求的表达式,对用户的答案
5、判断,如果存在符合的表达式,则会显示表达式的个数和其中一个解,并实施更新用户等级2、双人模式游戏界面用户信息:利用登陆界面传递的session获取用户名和密码开始游戏:产生4个随机数新一轮:即下一关,页面刷新,用户等级实施更新提交:对用户输入的表达式进行验证,给出“回答正确”或者“回答错误”的结果,实施更新用户等级退出:返回模式选择界面无解:计算是否有符合24要求的表达式,对用户的答案判断,如果存在符合的表达式,则会显示表达式的个数和其中一个解,并实施更新用户等级抢答:每个用户分别有抢答按钮,当一个用户抢答之后,通
6、过cookie将js中的变量传递给php,所有的输入都被看成是该用户的输入,因此达到了区分用户的目的432、数据库存储四、算法设计思想核心算法1、验证算法:数据结构:堆栈算法时间复杂度:O(n)(1)将表达式分为数字栈和符号栈两部分存储,并且以#作为开始符和结束符(2)定义优先级关系表(3)根据表决定运算顺序如果即将压栈的符号的优先级小于栈顶的符号,则弹出数字栈栈顶的两个数字进行运算,否则压入符号栈,直到完成表达式的计算。例如:43(4)计算表达式的值运行结果:2、计算算法:穷举法:嵌套循环操作算法时间复杂度:O(
7、n^3)(1)对运算符号进行编码(2)打乱四个数的顺序(3)计算每一种情况可能出现的运算(两种):两两运算、三个和剩下一个运算(4)对于符合条件的情况输出表达式运行结果:辅助算法1、随机产生数自定义“functiongetRandNum()”产生随机数组的函数,采用“document.getElement-43ById(i).value”,通过获取button的id,对它的value值进行赋值,并且通过循环,每产生一个随机数就与之前产生的随机数比较,确保随机数不相同。1、实施更新用户等级使用mysql_query(
8、"UPDATE")语句与数据库交互,借助于核心算法的判断算法进行相应的加减,同时改变SESSION的值,使之与数据库关联,点击“新一轮”时页面刷新,由于一开始程序就必须显示SESSION,所以就达到了等级的实时更新。五、问题及解决1、变量传递问题:程序大部分是通过触发按钮onclick执行事件,因此事件发生采用的是js函数,但是由于核心算法部分是用php来实
此文档下载收益归作者所有