HNU个人项目评测

发布时间 2023-09-21 19:46:33作者: 旋转拖把

HNU个人项目评测——中小学数学试卷自动生成程序

简介

本博客是对于结对编程队友周润荣个人项目代码的评价与总结,代码使用Java语言编写。

项目要求

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. 登录功能

分析:登陆界面中英混杂,可能会让用户感觉混乱,基本功能成功实现。

  1. 出题功能

分析:基本功能成功实现,小学初中高中题目均成功实现,给了用户多次选择,但选项也有一些冗余,繁琐,题目最后没有等号。

  1. 切换功能

分析:基本功能完全实现,切多次切换没有bug产生。

  1. 项目结构

该项目共有10个java文件,其中一个Makepaper抽象类,在PrimaryMakePaper,MiddleMakePaper,HighMakePaper中都对randomOperator和makePaper进行了继承。

  1. 具体结构

·Main类

该类主要是登录界面以及对GetPaper类,SwitchSchool类的调用

·GetPaper类

该类主要实现对出题年级的判断

·SwitchSchool类

该类主要实现年纪的切换

·Login类

该类主要实现登录判断用户名与密码是否匹配等一系列登录问题

·MakePaper类

该类是抽象类,对随机操作数,生成试卷,以及随机括号位的函数的抽象

·PrimaryMakePaper类

该类实现了生成小学试卷

·MiddleMakePaper类

该类实现了生成初中试卷

·HighMakePaper类

该类实现了生成高中试卷

·Output类

该类主要实现试卷的查重和试卷写入文件

·User类

该类主要定义了用户类的基本元素和函数

总结

优点:

很好地实现了所有功能。也能给用户带来很好的使用体验,也能进行很好地分工,同时有抽象类,可以进行很好地继承。

缺点:

查重之后题号未发生变化,以及选择功能太多导致的有一些繁琐。