【个人项目互评】小初高试卷自动生成器

发布时间 2023-09-21 10:14:26作者: leokunkun

目录

  • 简介
  • 项目介绍
  • 代码分析
  • 优缺点分析

简介

本文将分析博主结对编程队友个人项目的代码,从项目完成程度、实用性、规范性分析代码的优缺点。

项目介绍

根据湖南大学软件工导论课程中个人项目要求,用java语言完成一个简单的小、初、高数学试卷自动生成工具。具体要求详见个人项目需求文件。

代码分析

此项目中总共定义了三个实体类,Paper、Question、User。

Paper

此类封装了一个问题集合,同时包含了创建文件夹、得到当前时间字符串、添加问题、添加问题、展示问题等方法。

Question

此类是问题类,其中包含了很多与问题生成相关的代码。

User

此类是用户类,包含了添加用户文件夹和登录等方法。

项目测试

登录

image

更改出题等级

image

选择出题数量

image

题目展示

image

优缺点分析

优点

  1. 交互界面清晰明了,易于交互,每次生成试卷前都有提示说明即将生成什么类型的试卷。
  2. 定义的三个实体类包含与之相关的方法,结构较为清晰。
  3. 各个功能都有自己的方法,并未杂糅在一起,代码易于阅读。
  4. 每次生成试卷后都会在操作台展示生成的问题,易于操作者预读试卷。
  5. 整体基本符合Google的java编程规范。

不足之处

  1. 登录时即使不按格式输入也可能登录成功
    image
  • 出现此类问题的原因分析:
    登录时的代码:
 Scanner sc = new Scanner(System.in);
            user = User.login(sc.next(), sc.next());
            if (user == null) {
                System.out.println("---请输入正确的用户名、密码----\n输入0或其他:重输入用户名、密码\n输入-1:退出");
            } else {
                break;
            }

登录时只是将输入的前两个值作为登录的函数传入,如果在账号密码之后跟进其他输入也不会有错误提示。

  1. 登录后如果输入-1应该是退出登录,重新登录而不是结束整个程序
    image
  2. 登录后选择下一步进行的功能时,如果输入的不是数字,则整个程序会报错而被迫终止
    image
    此种错误在用户输入题目数量时也会出现,原因是代码编写时,接受数字的函数使用的是:
Scanner sc3 = new Scanner(System.in);
int n = Integer.parseInt(sc3.next()); 

当输入接收的并不是一个数字字符串时程序就会报错,而并未处理此种异常。个人建议此处可以采用try{}catch(){}来捕获异常,如果输入的并非数字则提示输入有误并重新输入。可以采用下列形式:

input = scanner.nextLine();
      try {
        num = Integer.parseInt(input);
      } catch (Exception e) {
        System.out.println("输入有误,请重新输入");
        continue;
      }
  1. 有几处地方未按照Google编程规范编程。
  • 如一行的字符数超过列限制后并未自动换行。
  • 块缩进应该是2个空格,而代码中的块缩进是4个空格。

总结

总体而言,此项目完成了所有功能,并进行了一定的优化。但是有些细节有待优化。
通过此项目,我们最重要的是要意识到规范编程的重要性。规范编程可以提高代码质量、增加可维护性和可读性、利于团队协作并且提高我们编程的效率。此次个人项目编程是我们规范编程的试手,希望在未来的编程中,我们能一直坚持规范编程。