湖南大学结对编程——搭档个人项目代码评价
一、 简介
本博客用于对结对编程搭档许殷祯同学的个人项目的评价。
二、 项目需求
用户:
小学、初中和高中数学老师。
功能:
1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个选项中的一个。否则提示“请输入正确的用户名、密码”,重新输入用户名、密码;
2、登录后,系统提示“准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):”,XX为小学、初中和高中三个选项中的一个,用户输入所需出的卷子的题目数量,系统默认将根据账号类型进行出题。每道题目的操作数在1-5个之间,操作数取值范围为1-100;
3、题目数量的有效输入范围是“10-30”(含10,30,或-1退出登录),程序根据输入的题目数量生成符合小学、初中和高中难度的题目的卷子。同一个老师的卷子中的题目不能与以前的已生成的卷子中的题目重复;
4、在登录状态下,如果用户需要切换类型选项,命令行输入“切换为XX”,XX为小学、初中和高中三个选项中的一个,输入项不符合要求时,程序控制台提示“请输入小学、初中和高中三个选项中的一个”;输入正确后,显示“”系统提示“准备生成XX数学题目,请输入生成题目数量”,用户输入所需出的卷子的题目数量,系统新设置的类型进行出题;
5、生成的题目将以“年-月-日-时-分-秒.txt”的形式保存,每个账号一个文件夹。每道题目有题号,每题之间空一行。
三、 代码逻辑分析

调用四个函数分别实现登录Login()、读取历史题库All_Problem()、出题Math_Problem()、切换类型Change_Type(),利用全局变量g_logout判断是否退出当前账户的登录。程序框图如下:

四、 功能测试
输入:登录李四2出20道初中题,再分别切换为高中和小学出20道题。
结果:成功登录,生成符合要求的初中试卷和小学试卷,但是没有成功切换至高中无法生成高中试卷。

异常原因:代码中“切换至高中”错码成“切换至高中”,修改一下即可消除此bug。

五、 优缺点分析
优点:
1.基于面向过程完成中小学数学卷子自动生成程序,300行左右代码完成整个设计,代码简洁凝练。
2.采用工程的方法,头文件和变量放在System.h,函数实现放在Function.h,main函数中是程序运行流程的实现,结构清晰,代码易于阅读和管理。

3.变量命名精确规范,全局变量很细节地用g_前缀标识了出来。

4.头文件使用了define保护,虽然头文件中的内容并未反复包含不会多次编译,使用define保护保证了头文件中的内容只编译一次。

5.熟练运用C++的文件操作和STL,登录用户后读取历史题目存储在set中,调用set的find()函数实现查重。
缺点:
1.非常可惜出现了一个无法切换至高中的小bug,但问题不大,因为代码结构清晰,很容易定位到错误来源。此次失误应该是功能测试不完全所致,希望parner以后在测试中多加细心。
2.关键函数实现缺乏足够的注释,数学题目产生原理直接看代码较费解,希望partner能多注意注释的安排。

六、 总结
非常荣幸有机会能阅读分析许同学的个人项目代码,学习优秀编码经验,共同进步。在结对编程前先学习partner的代码,在吸取编码优秀经验的同时,也能够充足地了解partner书写代码习惯,许同学的代码简洁凝练、处处规范,熟练掌握和运用c++编程语言和面向过程编程思想,我对未来的结对编程充满信心。

浙公网安备 33010602011771号