结对子项目分析
u 题目需求:
用户:小学、初中和高中数学老师。
功能:
1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个选项中的一个。否则提示“请输入正确的用户名、密码”,重新输入用户名、密码;
2、登录后,系统提示“准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):”,XX为小学、初中和高中三个选项中的一个,用户输入所需出的卷子的题目数量,系统默认将根据账号类型进行出题。每道题目的操作数在1-5个之间,操作数取值范围为1-100;
3、题目数量的有效输入范围是“10-30”(含10,30,或-1退出登录),程序根据输入的题目数量生成符合小学、初中和高中难度的题目的卷子(具体要求见附表)。同一个老师的卷子中的题目不能与以前的已生成的卷子中的题目重复(以指定文件夹下存在的文件为准,见5);
4、在登录状态下,如果用户需要切换类型选项,命令行输入“切换为XX”,XX为小学、初中和高中三个选项中的一个,输入项不符合要求时,程序控制台提示“请输入小学、初中和高中三个选项中的一个”;输入正确后,显示“”系统提示“准备生成XX数学题目,请输入生成题目数量”,用户输入所需出的卷子的题目数量,系统新设置的类型进行出题;
5、生成的题目将以“年-月-日-时-分-秒.txt”的形式保存,每个账号一个文件夹。每道题目有题号,每题之间空一行;
附表-1:账户、密码
|
账户类型 |
账户 |
密码 |
备注 |
|
小学 |
张三1 |
123 |
|
|
张三2 |
123 |
|
|
|
张三3 |
123 |
|
|
|
初中 |
李四1 |
123 |
|
|
李四2 |
123 |
|
|
|
李四3 |
123 |
|
|
|
高中 |
王五1 |
123 |
|
|
王五2 |
123 |
|
|
|
王五3 |
123 |
|
附表-2:小学、初中、高中题目难度要求
|
|
小学 |
初中 |
高中 |
|
|
难度要求 |
+,-,*./ |
平方,开根号 |
sin,cos,tan |
|
|
备注 |
只能有+,-,*./和() |
题目中至少有一个平方或开根号的运算符 |
题目中至少有一个sin,cos或tan的运算符 |
|
u 代码思路
细看代码所知,思路有点儿复杂难懂,首先很巧妙利用字符串数组,定义账户名,题型,运算符。用了一些普通的选择循环就实现了很多功能。这项目难点主要是出题,题目要求比较复杂,不过这代码利用取随机数减小了项目难度而且全部出题都在一个函数里面实现了。先考虑随取运算数的范围然后输入每一个数之前有考虑它带平方或者平方根或者括号再然后输出什么运算符等等,我本人觉得真的很复杂。因代码没有注释很难懂,不能再深入理解思路了,抱歉!
u 结果测试及实现功能程度:
1、已实现:
代码已实现了对账户输入用户名、密码的匹配判断,不匹配的正确提 示,一个账户生成一个文件夹,不同年级按照难度要求生成输入数目的题目,以“年-月-日-时-分-秒.txt”的形式保存在对应账户的文件夹内,等一系列功能。
2、未实现 :
代码没有查重功能。(同一个账户的卷子中的题目与以前的已生成的卷子中的题目不重复。)还要生成题数超过要求,运算中括号位置虽然随机生成实现了,不过没考虑括起来全部题的错误。(27)
用户登陆后,对出题年级的切换,输入不正确的提示。输入-1没有退出登录,返回到第一步。并且要切换别类型卷子需要重新修改账号和密码。
u 优点:
代码看起来很简单而且很独特,编译页面设置的很整齐且好看。输入之前有提示让人很放松。题目都生成在后台运行,卡顿底,操作流畅。代码运行时间复杂度底,运行时间短。
u 缺点:
(1) 没有注释!没有注释!没有注释!队友在各个代码块都没有进行注释,这是一个不好的习惯。对于读者来说,注释能让人快速准确的理解作者所要表达的意思。对于作者,注释也能让自己的逻辑更加清晰。我本人看了半天很难懂很多很多定义的变量作用,而且有些地方通过反复调用及测试才理解了。
(2) 没有使用类,封装性比较差,所有的操作都在几个函数和主函数中进行,而且各个操作的实现紧密联系有点儿难懂,,并且由于没有模块化,因此在修改的时候,尤其在删减增加变量的话,必考虑对其他函数的影响。
u 总结:
队友的代码写的很独特,使用巧妙地简写语言实现了。但还是有些欠缺的地方,有些内容还是可以再优化一下。比如代码逻辑还是有些复杂不够清晰,可考虑再多分成几个小函数,使代码更加容易读懂。我希望我们在接下来的结对项目中共同努力,互相学习,写出更好的代码。

浙公网安备 33010602011771号