湖南大学个人项目互评
以下对高茂庭的个人项目代码进行评析:
一、项目需求
用户:
小学、初中和高中数学老师。
功能:
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的运算符 |
|
二、功能测试
1.登录->出题
生成文件及位置:
功能正常
2.登录->退出->登录->切换题目难度
功能正常
三、代码分析
1.ElementarySchoolExam.java
两个函数分别实现一道问题的生成和一套试卷的生成,条理较为清晰,要求均实现,且代码重要节点有注释解释,除了代码规范有些许瑕疵,整体较为完善。
2.GenerateExam.java
这个类实现文件的写入和读取,二者皆为文件读写相关功能,实现与文件的交互,并且地址选择并未定死为绝对地址;但读写文件并未使用诸如try,catch结构防止读写错误情况的发生。
3.HighSchoolExam.java、JuniorHighSchoolExam.java
实现初中难度与高中难度的题目的生成,因代码较长且与小学难度题目生成结构类似,不再贴图。
但高中难度题目生成类中存在方法函数过长问题。
4.User.java
用户的抽象类
5.UserManage.java
代码较长,仅贴部分代码
交互人性化,每一个步骤均有提示,输入错误则经过判断后返回且有反馈,输入正确则提示下一步的输入及规范;
每一个模块分类清晰,每一步交互区分开单独作为一个函数,整个结构较为简洁。
6.Main.java
主函数
四、总体分析
优点:
整体代码基本符合代码规范,清晰明了,并且中间关键代码处有注释解释,整体依据功能实现分为七个类,每个类所实现的功能区分明显;
项目所要求的实现的功能,经过测试,都有效实现了;
整个程序运行过程中,交互功能较为完善,有详细的操作提示以及错误操作反馈;
地址采用相对地址,在他人运行程序时能够轻松执行、测验;
缺点:
存在部分的代码规范问题,如代码缩进问题等;
有部分方法函数的实现较为冗杂,超过了要求的40行;