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

二、 代码分析
优点:
1、 整体分析:使用Python作为编程语言显著的特点是可读性更强,并且代码更为简洁;项目的需求基本都已实现,部分功能还需改进,会在下文缺点中谈及。代码模块结构非常清晰,层次明显。大致是用户登录(其中确定试卷类型),获取随机操作数,获取操作符,生成单个问题表达式,生成试卷等。这些都基本吻合“高内聚,低耦合”。结构逻辑非常清晰,通俗易懂。
2、本项目包括一个文件名为“config.py”的设置文件,在运行前根据需要可以更改用户和路径,非常方便。

3、灵活运用三角函数,为设置三角函数取值为15的倍数,这样tan(30º)等运算起来方便,用户体验感好,同时tan,cos取值设置好是度数,而不是数还要转换成度数。

4、为保证编码的正确性,编码要规范化、标准化,即需有标准的编码格式。常见的编码格式有ASCII、ANSI、GBK、GB2312、UTF-8。本项目源码为使用UTF-8编码的python3文件,需要在运行前检查编码方式和python版本。在生成模块中,把生成的题目保存在对应试卷文件夹文件中,并用open以只读的方式打开。这里注意文件中包含有中文,需要用utf8的编码打开。查重是将目前题目与历史题库对比,若有一样的,出题失败。

不足:
1、一个重要功能没有实现,就是用户界面不显示“切换年级”的功能,给某一个年级出完试卷就一次性退出程序,需要重新启动并出卷子。

2、功能里面没有实现加括号的功能,每一道题目都只是涉及到了符号之间的运算,而没有括号。
3、如果能够在提示句前加类似“====”这种符号,提示是哪个年级的试卷等细节会可能更美观,用户体验感也好。


浙公网安备 33010602011771号