个人项目:中小学数学卷子自动生成程序---队友代码点评

根据需求,将各功能分开实现,使用User类定义用户的相关属性以及账户密码认证,用Demo类进行登录认证以及出题。

其中User类包含了用户名、账户对应的密码以及用户的年级信息,登录时的账号密码检测函数以及年级的返回函数,此处没有过多可分析的内容。

Demo类则包含了命令行下的登录界面、登录后的二级菜单界面,试卷生成等部分,需要注意的是,题目需求中的预定账户在此类中以static形式声明并赋值,是一种比较方便的实现方式,但内嵌的方式使得后续的更改必须重新编译整个源文件,可以说有利有弊。

优点:二级菜单中输入生成题目数量的部分比较巧妙,此处如果输入<10或>30的数字则是非法输入,需要重新输入,而输入切换为XX则要进行功能切换,输入-1返回。属于数字/字符串类型的随机输入,此处直接使用了.hasNextInt方法进行是否为数字的判断,如果输入是整型则将输入赋值给num,若不是整型则赋值给select字符串,后续判断较为方便。

总体的题目生成方法为先随机符号,然后进行判断,+ - * /等符号可用作连接,而平方、根号、括号、三角函数部分不能,在本篇代码中,现将所有符号视作同一类,先随机符号,与随机数字合并时,如果发现是不可作为连接的符号,则补充连接符号,并将先前的符号进行移动。

题目生成时,将所需的符号存储在string数组中,前四个为小学所需符号,中间两个为初中必须出现的符号,后三个为高中必须出现的符号。

使用Math.random方法对符号进行随机,小学部分仅需要对前四个符号进行随机运算,而初中为了确保出线平方和根号中的一个,在第一个符号的随机上强行规定对第5、6个符号进行随机,高中部分则要先对后三个符号进行随机。此种设计下,三种出题方式互相分离,可以单独修改,较为方便。

缺点:比如此处高中出题需要对初中题有所继承,需要包含平方和根号,由于本代码中先随机符号然后再合并进行判断的出题方式和最少两项数字的限制(符号最少为1个),导致无法同时保证平方和三角函数出现。最终编写者选择在第一位数字上添加根号/平方算式的随机,破坏了题目整体的随机性,是一项较大的不足。

posted @ 2020-09-30 14:07  南川没有北鱼  阅读(203)  评论(0)    收藏  举报