2017年秋季学期软件工程第三次作业

源代码链接:https://github.com/superwales/Random_test

PSP表格:

基本解题思路:

        本次作业共提出了五大功能点:

                1,历史记录,可统计与查询,再次运行不会丢失

                2,练习模式与测验模式

                3,错题本,可以回顾与改正错题

                4,根据用户错题推荐有针对性的练习

                5,拥有计时功能。

        根据这五大功能点,可以搭建一个大概的框架。首先,不同的用户就应该有不同的答题记录和错题记录,这意味着不同的用户之间要建立账户以区分。然后需要具体实现五大功能:1,随机练习模式,即用户可以一题一题的往下做,每做一题要判断做对还是做错,用时多少等信息。2,测验模式,测验模式的数据就要相对固定,在限定的时间内,有有限道题,用户在提交之前都可以浏览和更改已经做过的题。3,历史记录本,点开就有用户做过的所有题,题目是多少,正确解答是多少,用户回答的答案是多少等等,还要可以根据关键词查找指定的题目。4,错题本,与历史记录类似,但是可以在查找出指定题目之后将其移除。5,错题针对练习,这是本次练习的难点。我将从错题本中随机挑一道错题,然后根据这道题出一道类似的题,答题框架可以沿用随机练习的模式。

设计实现过程:

登录界面:

为了把每个用户的答题区分开,需要给不同用户创建不同的账户。基本要求:1,用户可以自行注册,用户名不可以重复;2,用户账号信息再次运行不会丢失。

其实可以把用户的账号密码信息放置在数据库中,特别是在数据量比较大的时候,这样做很有必要。但是本次项目一切从简,我在指定目录下用文本的形式存储用户的账号密码。在选择登录时,打开指定目录下的文本文件,如果用户名和密码不匹配,则不能正常登录;当选择注册时,用户名不能为空,也不能与文本中的已存在用户名重复。

运行截图:

 

主界面:

主界面就像一个功能夹,在上面设立了五大按钮用来进入五大不同的功能。

下面分开说明:

随机练习界面:

随机测试模式可以让用户在里面随机获取题目,提交立马判对错,统计时间。界面设计如下:

界面功能说明:在左上角输入题目的运算范围,点击开始答题,随机生成的题目会出现在题目栏中,题目栏下方是作答区域,点击“确认“提交答案,这时本题是否正确,用时多少等信息会出现在右下角的交互栏中。右上角是时间戳和答题进度说明。

设计实现说明:根据运算范围随机出题的函数已经在上一次作业中实现,判对错、计时等功能均在上次作业基础上修改而成。

测试模式界面:

测试模式界面分为三个,第一个是信息收集界面,用来获取需要多少道题、运算范围是多少、测试时间为多少等问题。第二个是测试主体界面,负责出题答题,有时间显示,在提交前可以缓存和修改答案,当时间截止时,停止答题。第三个是成绩单界面,当提交答卷或者时间截止后,跳转进入成绩单界面,可以点击“打印”保存成绩单为文本。

点击保存后,写入txt:

具体设计说明:在信息收集界面收集相关信息后,得到一个题目列表,把所有的题都存放在列表中。对应的还有正确答案列表,用户作答列表和分值列表,通过相同的索引联系起来。倒计时则是我自己编写了一个时间转换函数,可以把用户收集的min转换成时分秒。

错题针对练习界面:

该界面由随机联系界面修改而来,主要的区别是,不再需要手动输入运算范围,而是会根据收藏夹(错题集)中的题目生成类似的题目,比如:

设计实现说明:针对一道原题,以操作符和它之前的那个数为节点,我设计了三种“类似方式”,第一种,删除,即删除这个操作符和它之前的数字,第二种,修改,操作符不变,前面的数字进行增减,第三种,数字不变,操作符随机更换。在执行这三种操作之后,再把题目检查一边,进行自动约分,然后利用自定义的函数计算出表达式的值。

历史记录界面:

界面功能说明:在最上方显示了用户的名称,历史记录共有多少道题,答题的正确率为多少。然后是所有的历史记录。在历史记录下方有两个查询框,可以根据题目或者答案中的关键字进行查询搜索。

具体设计说明:在随机模式中,用户每完成一道题,就会自动把题目、正确答案和用户作答答案自动保存到文本文件中(测试模式是在提交答卷后),然后遍历这个文本文件就可以执行统计和查询。

错题本界面:

与历史记录界面类似,只是添加了删除功能:

原理与历史记录类似,只是在txt中删除一行数据有点难度。

代码复审记录:代码复审工作由刘少帅同志完:

一、 测试目的

通过对代码进行测试,确保其按照预期结果稳定运行,并查看在界面设计、功能构成等方面需要改进的地方,使用户能够更加便捷、更加舒适地使用本产品。

二、测试内容

1.主界面能否正常登录;

2.随机练习、针对练习、测验模式、收藏夹、历史记录界面能否正常运行;

3.程序设计标识是否清楚,是否便于操作;

4.程序设计是否人性化,能否考虑用户在使用过程中的舒适性;

5.是否能针对不同用户的不同特点,达到程序是为了提高用户四则运算能力的目的。

三、测试方法

通过运行程序,并在各个界面上操作进行测试。

四、测试结果

主界面以及各子界面运行结果已在前面详细阐述,这里不再赘述。主界面能正常注册并登录;五个子界面均能按照预期结果稳定运行;各按键标识比较清楚,能方便用户快速确认并选择。

五、几个需要改进的地方

1.在随机练习模式中,增加时间控制功能,当用户做题达到一定时间后,提示用户该休息了,使程序更加人性化。

2.不论是练习模式还是测验模式,都可以进一步增强针对性,即把“范围”功能进行拓展。既包括运算符的规定,也包括数据类型的规定,即用户可以要求只进行加减或乘除或加减乘除混合运算,同时也可以要求是进行整数与整数之间还是真分数与真分数之间或是整数与真分数之间的运算。

3.在历史查询和收藏夹中,在现有界面基础上,增加“解题步骤”按钮。当用户想看具体解题步骤时,可以点击“解题步骤”按钮;如果只想看正确答案结果,则不用点击“解题步骤”按钮。

六、结论

经测试,目前编写的程序代码各界面运行稳定,能满足最初设计时的功能要求。

 更多细节于矩阵考试后添加。

原文地址:https://www.cnblogs.com/seven-v13/p/8283471.html