结对编程——中小学数学卷子自动生成程序
项目需求:
1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个选项中的一个。否则提示“请输入正确的用户名、密码”,重新输入用户名、密码;
2、登录后,系统提示“准备生成XX数学题目,请输入生成题目数量:”,XX为小学、初中和高中三个选项中的一个,用户输入所需出的卷子的题目数量,系统默认将根据账号类型进行出题。每道题目的操作数在1-5个之间,操作数取值范围为1-100;
3、题目数量的有效输入范围是“10-30”(含10,30),程序根据输入的题目数量生成符合小学、初中和高中难度的题目的卷子(具体要求见附表)。同一个老师的卷子中的题目不能与以前的已生成的卷子中的题目重复(以指定文件夹下存在的文件为准,见5);
4、在登录状态下,如果用户需要切换类型选项,命令行输入“切换为XX”,XX为小学、初中和高中三个选项中的一个,输入项不符合要求时,程序控制台提示“请输入小学、初中和高中三个选项中的一个”;输入正确后,显示“”系统提示“准备生成XX数学题目,请输入生成题目数量”,用户输入所需出的卷子的题目数量,系统新设置的类型进行出题;
5、生成的题目将以“年-月-日-时-分-秒.txt”的形式保存,每个账号一个文件夹。每道题目有题号,每题之间空一行;
6、个人项目9月25日早上8点以前提交至各自负责的助教处。提交方式:工程文件打包,压缩包名为“几班+姓名.rar”。
优点:
1、通过基类与继承类来实现题目的生成。其中基类的功能为控制操作数的数量、生成操作数、检验重复并判断是否重新生成算式、生成括号(定义为私有类,直接在public类PreEquation中作为附加调用,添加括号)。
2、小初高三套试卷分别为三个从PreEquation类中继承而来。因为小初高三套试卷都有操作数、运算符和括号的使用,这样的生成方式便可实现代码的重复利用和模块化编写,避免代码重写的情况发生。其中类中对于私有类和公有类的区分实现了不同功能的分装,也提供了更加统一的接口。
3、代码的用户体验很好,对用户输入的提示完整且清晰。且当用户输入错误信息后能够有一定的容错性(如输入题目数量超出或不足,便输出指定数量)
4、注释详细易懂,关键变量、关键步骤、函数都有注释。
缺点:
部分一行代码有些长,建议换行。
自己的反思:
1、我在实现程序的时候没有使用类与类的继承,而是通过调用功能函数来分别组成小初高三分试卷(独立生成数值、独立生成操作符、独立生成括号),这样会出现组成算式时代码的重复,也缺少了三套试卷中彼此的关联性。
2、用户体验方面,我在用户切换模式并输出试卷后便终止程序,应该加入一个while循环,让用户可以不断输入试题数。
3、还有为实现的功能,如未实现生成试卷的查重以及重复后重新生成。