- 需求
用户:
小学、初中和高中数学老师。
功能:
1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个选项中的一个。否则提示“请输入正确的用户名、密码”,重新输入用户名、密码;
2、登录后,系统提示“准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):”,XX为小学、初中和高中三个选项中的一个,用户输入所需出的卷子的题目数量,系统默认将根据账号类型进行出题。每道题目的操作数在1-5个之间,操作数取值范围为1-100;
3、题目数量的有效输入范围是“10-30”(含10,30,或-1退出登录),程序根据输入的题目数量生成符合小学、初中和高中难度的题目的卷子(具体要求见附表)。同一个老师的卷子中的题目不能与以前的已生成的卷子中的题目重复(以指定文件夹下存在的文件为准,见5);
4、在登录状态下,如果用户需要切换类型选项,命令行输入“切换为XX”,XX为小学、初中和高中三个选项中的一个,输入项不符合要求时,程序控制台提示“请输入小学、初中和高中三个选项中的一个”;输入正确后,显示“”系统提示“准备生成XX数学题目,请输入生成题目数量”,用户输入所需出的卷子的题目数量,系统新设置的类型进行出题;
5、生成的题目将以“年-月-日-时-分-秒.txt”的形式保存,每个账号一个文件夹。每道题目有题号,每题之间空一行;
6、个人项目9月28日早上8点以前提交至各自负责的助教处。提交方式:工程文件打包,压缩包名为“几班+姓名.rar”。
- 对自己个人项目的总结:
1.这个个人项目,输入账号密码、切换题目类型等部分都不难,最难的部分是如何设置题目。在出题目这一部分,我选择用stringstream,就比如出小学题目,首先利用随机数生成一个操作数的数量n,之后加入我要生成“5+3*2”的题目,我们先把5放入stringstream ss中,然后再把“+”号放入,就这样依次放,最后再转换成字符串导出。初高中的也是如此,比如高中题目“cos5/2^2-tan1”,先把cos放入ss,之后是5,放完操作数以及操作数的变化,然后才把运算符加入。
-
自己个人项目的优点:
2.与用户交互的界面比较友好,如下图,该怎么操作只需按照提示即可,十分简单易懂,清晰明了。
3.对于其他不符合规则的输入也有提示。 -
自己个人项目的缺点:
1.没有使用类,用的是最低级的主函数调用其他函数体,而且这个工程量比以往的都大,所以我这里有函数疯狂调用其他函数,这其中的关系显得十分乱。
2.对于变量命名和函数体命名不够规范,其他人看不懂。
- 队友的优点:
1.使用了类,建立了工程(主函数放一个cpp,使用的用户类头文件和函数分开放,生成问题地头文件和函数也分开放),使得这个项目各部分写了什么内容还有各部分之间的关系都一目了然。
2.代码写的很简洁,没有使用不必要的临时变量,只用了很少的代码就实现了要求的功能。
编码规范,全局变量以g_XX形式命名,局部变量以XX形式命名,函数以首字母大写形式命名,函数名和参数名具有一定的描述性。
代码的可重用性和可扩展性很好,对于要修改某个东西,只需要到对应部分修改即可,而不需大量地改。
3.注释简明易懂: 队友在必要的地方总会做出相应的注释。因为阅读别人的代码其实是一个难以理解的过程,而在关键代码处注明了一些注释,这就可以帮助团队中的其他成员更好的理解,进而提高完成工程的效率。
4.此外,队友还增加了一个很好的功能,当生成完一份试卷后,可以选择不退出继续生成(由于题目没做这个要求,我的只能生成一份试卷就要重新运行一次程序),这个功能在调试以及实际应用中十分实用。
- 队友的缺点:
1.与用户交互的界面太多文字,看起来有点乱,用户体验不是很好。
2.对于某一些不规范的输入也得到结果。