【个人项目互评】————中小学生题目生成程序

发布时间 2023-09-20 15:36:57作者: Aven£哈迪斯

在完成个人项目的建设后,我和搭档互相交换了代码进行分析。在阅读过程中,看到了她代码的优势,也同时看到了自己代码的不足。再次写下这一次的项目分析;

一、题目要求

 

 

 

二、测试与分析

功能完成情况:

 在输入正确的账户名以及密码后,能够获得当前用户年级信息以及后续操作步骤,引导功能完善;

 在输入“-1”进行退出当前用户后,可以重新进行登录操作,并且对输入错误的信息操作能够有所提示,但美中不足的一点是在退出登录后并没有过多的提示语句,也没有下一步的引导信息;

并且发现了一个bug:

搭档在读取账号密码时采取使用两个String来储存,但是没有对登陆时仅输入一个字符串的情况进行处理,导致最开始的一个错误信息占据一个string,后续在输入的正确信息也只能读取到账号,导致后续再进行输入时会造成读取的信息错误,无法登录的情况;

 

 接下来输入想要生成的题目数量,在输入超过范围的数量时,也会有所提示;

 

生成的题目符合当前难度水准,且对于不符合符号要求或数量要求的题目会进行剔除

 进行切换难度操作也会有反馈,输入错误时会提示;

搭档使用了try{}catch{}语句结构能够在出现问题时将问题抛出;之后生成的各种难度题目也同样符合要求;

 

 代码分析:

创建了四个类,分别进行完成不同的操作;

 1.User类完成用户的函数,以及定义了user的账号,密码以及年纪情况;

makeFile()函数:

makefile函数完成了用户文件夹的创建,用来后续保存出的题目,函数思路为根据path路径找到文件夹,如果没有则创建,.txt文件命名为通过SimpleDateFormat类函数获得的时间进行命名;如果出现异常,则通过catch{}语句进行抛出;

makepape函数:

 makepapaer函数通过获得当前用户的年级情况,调用不同的出题函数。完成出题的目的;

2.Operations类则主要用于接受输入的信息进行处理以及存储了用户信息;

设计了log登陆函数,通过调用getPassword()函数获取返回相应的用户信息,如果错误给出提示;

 

prepare()函数则实现了对输入的信息进行处理,接受输入的题目数量,接受切换难度类型语句,并对于错误输入进行提示;

3.PaperMaker类主要实现了出题功能以及题目的写入和检查功能;

题目写入函数witrIn()调用了FileWriter类函数 ;

检查函数check()定义boolean变量进行指示,对读取文件的每一条进行检查,如果有重复则改变变量值,输出“重复”;

出题函数通过获得参数User user,Int number来进行题目的编排;

4.Main类

主函数,通过两个String类变量存储输入的用户信息,此处有bug,前面已经说明,不在赘述;

 

优点分析:

1.结构清晰:代码按照功能设计了4个类,每个类分别完成一个功能,每个类有函数处理这一个功能的不同问题,易读易懂;

2.异常处理:

善用try{}catch{}语句,在一些容易出现问题的地方选用这种结构,使系统能够做出相应的处理;

3.交互性较好:

有多处提示语句,能够引导用户完成,对于错误输入也能够有抽屉式,引导性强;

 

缺点分析:

1.缺少必要的javaDoc和注释:

 代码中,应当每一个类和方法都配置对应的Javadoc,增强可读性,使人一目了然。

在函数中,缺少一些必要的注释,对于方法实现的流程理解会有所不便。

 

2.出现*符号,违反规则:

 

3.在用户登录过程中,出现bug