一、前言
上周完成了个人项目的编写。这里对伙伴的个人项目代码稍作分析,学习她的长处,分析不足,使我们都能得到进步。
二、分析
(一)功能需求:
总的来说,队友的项目实现了老师给出的需求,可以进行登录、切换登录、出题、题目查重、切换试卷类型等功能。在对细节的处理上,队友的项目可以实现保存文件到相对路径、题目存储在正确的文件夹下、题目符合试卷难度类型、处理输入错误等问题。
(二)优点:
- 代码模块结构清晰,层次分明。登录和出题模块分离,类设置和功能函数的定义分离,使阅读清晰方便,层次分明。代码逻辑清晰,对功能做了很好的细化,同时又不显繁琐。 队友的项目分为两个cpp文件和三个头文件。 cpp文件中为功能函数的定义,头文件中包含类的定义。值得一提的是,队友新建了一个question_sys.h文件,在该文件中包含源文件所需的库函数的所有头文件,在源文件中只需包含这一个头文件即可,让代码更加简洁明了,是一个小巧思。
- 根据项目类型,队友建立了两个抽象类,分别为Teacher类和Question类。每一个具体类都继承了一个抽象类。如PrimarySchoolQuestion、MiddleSchoolQuestion、HighSchoolQuestion类继承了Question类,这样便于功能的扩展。新建的子类,通过注入接口能够便利的与系统原有架构发生联系。如果日后项目改动,需要加入新要求的题目,如要求包含积分、坐标,可以根据该抽象类再建立出新的子类。这体现了队友良好的抽象概括能力,值得我学习。
- 在页面切换之间设置了sleep休眠函数,方便用户观察提示信息。在每个功能切换之间,运行界面会清屏,这样的设计让用户在操作多次的情况下,页面依旧干净整洁,用户观感好。
- 队友的代码严格遵循了代码规范。例如,队友的注释写得十分清楚,在每个函数的开头都写明了该函数的功能、输入、返回值,在每个文件的开头写明了该文件所实现的功能,在重要部分也给出了注解。再例如,队友规范使用名字空间,防止污染名字空间。最后,室友的函数名、变量名都很符合规范。诸如此类,让代码看起来赏心悦目。
- 在出题方面队友独具匠心。初中、高中的操作符,队友关心用户体验和题目的实用性,用括号来标识根号、平方、三角函数作用的数字范围,即可以出现类似7+(7*8)^2类型的题目,使题目看起来更加清晰明了,也符合实际要求。
-
队友熟练使用c_str()函数,实现了string转换到char,解决了scanf读入中文会产生乱码,导致输入正确信息却无法登录的问题出现。
- 登录信息、已出过的题目均保存在文件中,日后增加用户非常方便,此外,这样的查重方式为结对项目编写提供了灵感。
(二)缺点:
- 生成题目时需要先包含用户名文件夹,否则在生成时会生成错误信息。这样在日后有大量新加入用户的需求时,准备工作会比较繁琐,需要大量创建文件夹。
- 每个操作数左边只能有一个左括号,且右边只能有一个右括号。
- 在“输入出题数量(-1退出登录)”这里缺少一点提示信息,可以进行改进。
三、总结
通过这次个人项目的编写和结对伙伴对互相项目的分析,让我发现了对方的长处,也认识到了自己的不足。同时,对方的代码为我解决一些困难问题提供了思路。相信我们会一起进步!
标签:功能,题目,登录,项目,代码,队友,卷子,中小学 From: https://www.cnblogs.com/bbsys/p/17715589.html