结对编程项目:个人项目互评

总述

互评对象:软件2002刘旭


代码简介

采用Java语言实现了中小学生数学试卷生成器的功能,一共有四大类:Datebase、main、Question、User,生成的文件以绝对路径存放在相关主文件夹的下属lib文件夹中,采用数据库存放数据的思想以图存放数据,而用户的信息从一开始就通过代码写出来,并通过Hashmap来获取。
实际情况是将内容保存在txt文本中,并未保存在数据库中,因此Datebase这个类的实际功能并没有用到,作者本人可能是为了以后实现功能的拓展,提高代码的可扩展性

代码流程

main函数入口开始,通过User类生成一个对象,然后调用User类中的log_in方法,此时提供登录界面;登录成功后用count变量记录用户的出题数;用户进行下一步操作,输入的内容为-1系统会直接退出,如果输入的内容包含切换为XX的字样,则会调用String.contain()方法进行下一步判断;如果输入的数字规范,则会通过Question类调用其中含有的makeQuestion方法生成试卷。
Question类中的Question方法用来获取user的账号。然后通过Question类中的makeQuestion方法,根据传入参数type用户的类型不同,生成不同的数学题目。


image


代码架构

├── PaperCreateProgram
├── idea
├── lib
│   └── paperManageSystem.sqlite
├── lib
│   ├── 张三1
│   ├── 张三2
│   ├── 张三3
│   ├── 李四1
│   ├── 李四2
│   ├── 李四3
│   ├── 王五1
│   ├── 王五2
│   ├── 王五3
│   └── mysql-connerctor-java.8.0.28.jar
├── out
│   └── production
│       └── PaperCreateProgram
│           ├── Datebase.java
│           │   ├── getConnection()
│           │   ├── select()
│           │   └── setUsers()
│           ├── main.java
│           ├── Question.java
│           │   ├── makeQuestion()
│           │   ├── primary()
│           │   ├── middle()
│           │   ├── high()
│           │   ├── singleMiddle()
│           │   ├── singleHigh()
│           │   ├── getTime()
│           │   ├── makeFile()
│           │   ├── writeFile()
│           │   └── getHashset()
│           ├── User.java
│           │   ├── reset()
│           │   ├── log_in()
│           │   └── log_out()
└── src
│    └── Datebase.java
│      │    ├── getConnection()
│      │    ├──  select()
│      │    └──  setUsers()
│      ├── main.java
│      ├──  Question.java
│      │    ├──  makeQuestion()
│      │    ├──  primary()
│      │    ├──  middle()
│      │    ├──  high()
│      │    ├──  singleMiddle()
│      │    ├──  singleHigh()
│      │    ├──  getTime()
│      │    ├──  makeFile()
│      │    ├──  writeFile()
│      │    └──  getHashset()
│      ├── User.java
│      │    ├── reset()
│      │    ├── log_in()
│      │    └── log_out()


示例演示

首先从main类里面运行主程序,显示出用户初始登录界面:


image


输入九个用户的账号和密码,在此我们选择以张三1 123为例:


image


如果直接输入10-30范围内的题量,在此我们选择以15为例:


image


我们可以看到,在lib文件夹下的张三1文件夹中已经出现对应时间的文件:


image


相关题目如下:


image


如果在出题页面的时候,输入切换为XX,在此以切换为切换为初中为例:


image


输入题数15,亦可正常出题


image


所以程序的大概流程可以运行,除了程序之间会出现一些小bug,但是不影响程序的整体性和大体框架,说明作者本人较好地了解了项目需求,较为完整地复现了所需功能。

优点

1、代码构架思想清晰,尤其是在Question类中,通过用户类型的不同生成不同的题目类型。
2、使用Java语言,通过面向对象的方式实现功能,便于此后的维护和修改。
3、部分代码写法规范,部分方法名通过Google制定的Java语言规范书写,如Question类中的getHashset()方法,与要求的驼峰法命名规范一致。
4、采用数据库的思想存放试卷内容,虽然在本次个人项目中并没有使用,但是很容易改动投入使用,值得肯定。
5、采用Hashset进行题目的重复筛选。
6、开根号符号用^0.5代替,有新意,进行了较为新奇的转换。

缺点

1、部分代码命名不规范,如main这个类,实际上应为Main类;还如User类中的lon_in方法,按照命名规范应写为logIn;其余代码规范在此不再赘述。
2、没有考虑到用户输入情况是-2此类负数的情况,系统仍会生成一个空白文件夹;没有按照题目要求进行10-30之间的规范输入,如输入500可能生成500道题。下面是实例截图:


image


3、没有考虑到输入情况为张三1 123 123此类输入,亦可登录成功。下面是实例截图:


image


4、代码注释有一点少,批改本人看着不太吃力,但是写得再稍微多一点可能开源时便于理解。
5、高中的题目中无法出现初中的题目,没有根号和开根号的符号;括号没有内嵌括号,无法进行低优先级符号的优先运算。


批改人:软件2002常守豪

posted on 2022-09-13 20:39  MiraitowaC  阅读(249)  评论(0编辑  收藏  举报