个人项目-对队友代码的优缺点分析
代码思想:
在命令行根据提示输入账号和密码,如:王五1 123 用空格隔开,如果账号和密码输入正确,就提示登录成功,准备生成xx类型的卷子,然后输入一个数字,根据输入数字的不同分为以下三种情况:
A、如果输入1 表示切换类型,在命令行输入切换为小学或者切换为初中或者切换为高中,然后输入题目数量(10-30)。
B、如果输入-1表示退出登录 可以重新登录。
C、如果输入10-30的整数,表示生成几个对应类型的题目。
如果输入数字不是这几种情况,就提示输入违法,请重新登录。
如何生成对应类型的卷子:
A、根据输入账号的不同,定义两个string类型的变量Name和Type,以此来区分不同的账号Name,不同的账号对应不同的Type,根据Type的不同调用不同的类型题目生成函数。
B、如果Type是小学,调用Getprimary()函数,初中调用Getjunior()函数,高中调用Getsenior()函数。
C、定义一个string类型全局变量g_topic,初始化为空,首先生成小学数学卷子:随机生成1-4个操作符,类型有+ - * /,2-5个操作数,操作数范围为1-100,并且定义一个$符号用于调用inorder函数使g_topic字符串成为合法的算术题目并加上括号逻辑。
*******生成的题目保存在对应Name的文件夹中。每个以Name命名的文件夹中有一个check文档,用于保存所有的题目方便查重。
程序优点:
1、运用了数据结构——树(Anode.h和Bintree.h),编写了树的存储和遍历函数,用于之后题目的生成(定义一个$符号用于调用inorder函数使g_topic字符串成为合法的算术题目并且加上括号逻辑)。
下图为截取部分代码:


2、用户体验很好,输入前命令行输出了多种提示,保证用户可以正确使用卷子自动生成系统,提示很完整也很清晰,如果用户输入的题目生成数量不在规定范围内,还可以重新登录重新进行卷子生成。能够有一定的容错性。

3、很多分装之后的函数能够被多次反复调用,如Getprimary()生成小学卷子函数,Getjunior()生成初中卷子函数,Getsenior()生成高中卷子函数,Checkpaper()查重函数,Gettime_txt()获得系统时间并规格化重命名txt函数,精简了代码,增加代码可读性。
4、代码注释比较多,并且简洁有条理,关键的变量和函数都有清楚的注释,能够很好的帮助读懂代码。(截取部分注释)

程序缺点:
1、生成初中试卷的时候,根号√只能加在题目的开头位置,平方^只能加在题目的最后。同样地,生成高中卷子的时候,sin,cos,tan符号也只能出现在题目的开头位置。因此可选择的题目类型不是很多。


2、生成初中试卷的时候,由于没有考虑根号下数的正负,可能会出现√(2-27),即出现给负数开根号的情况。例如:

3、Checkpaper()查重函数只能把对应账号下生成的题目都存放在一个文件夹下面,但是没有实现程序真正意义上的查重,只能通过后台查看是否有重复的卷子,查重功能实现起来较繁琐。以下为Checkpaper()函数代码:

浙公网安备 33010602011771号