首页 > 编程语言 >个人项目互评——中小学数学卷子自动生成程序

个人项目互评——中小学数学卷子自动生成程序

时间:2023-09-21 11:15:47浏览次数:49  
标签:题目 String 互评 卷子 println new 中小学 输入 name

个人项目互评——中小学数学卷子自动生成程序

一、个人项目简介

用户:

​ 小学、初中和高中数学老师。

功能:

​ 1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个选项中的一个。否则提示“请输入正确的用户名、密码”,重新输入用户名、密码;

​ 2、登录后,系统提示“准备生成XX数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):”,XX为小学、初中和高中三个选项中的一个,用户输入所需出的卷子的题目数量,系统默认将根据账号类型进行出题。每道题目的操作数在1-5个之间,操作数取值范围为1-100;

​ 3、题目数量的有效输入范围是“10-30”(含10,30,或-1退出登录),程序根据输入的题目数量生成符合小学、初中和高中难度的题目的卷子(具体要求见附表)。同一个老师的卷子中的题目不能与以前的已生成的卷子中的题目重复(以指定文件夹下存在的文件为准,见5);

​ 4、在登录状态下,如果用户需要切换类型选项,命令行输入“切换为XX”,XX为小学、初中和高中三个选项中的一个,输入项不符合要求时,程序控制台提示“请输入小学、初中和高中三个选项中的一个”;输入正确后,显示“”系统提示“准备生成XX数学题目,请输入生成题目数量”,用户输入所需出的卷子的题目数量,系统新设置的类型进行出题;

​ 5、生成的题目将以“年-月-日-时-分-秒.txt”的形式保存,每个账号一个文件夹。每道题目有题号,每题之间空一行;

二、个人项目运行测试与分析

​ 本次结对编程的队友为王致远同学,现对队友的个人项目进行测试分析。

测试:



登录功能测试:测试正常,有文字提示。

​ 部分代码展示:

public static void main(String[] args) {
  JudgeUser temp = new JudgeUser();
  System.out.println("********中小学数学自动出题系统*********");
  System.out.println("**请输入用户名和密码,两者之间用空格隔开**");
  String name = U.next();
  String pwd = U.next();
  while (temp.Judge(name, pwd) == null) {
    System.out.println("!!!!请输入正确的用户名、密码!!!!");
    System.out.println("********中小学数学自动出题系统*********");
    System.out.println("**请输入用户名和密码,两者之间用空格隔开**");
    name = U.next();
    pwd = U.next();
  }
  System.out.println("登陆成功!!");
  User tempUser = temp.Judge(name, pwd);
  type = tempUser.getUsertype();
  while (Login(name, type)) {
    continue;
  }

​ 优点:界面简洁干练,提示恰当到位

​ 存在的问题:当出现错误的格式输入时,会正常报错并提示重新输入,但是此后再次多次的正确输入,都会存在报错情况。

​ 原因分析:当一次输入三个内容,即两个空格内容分离时,.next()代码会处理第三次输入,并将第三次输入设置为下一次代码的第一次输入。

出题功能测试:测试正常:小初高中题目满足要求,生成的题目有题号和换号,切换类型时有正确的提示和正确的切换功能。

​ 部分代码展示:

public void txt(int randNum, String rand[], String type, String name, int num, String fo) {
  PaperMaker temp = new PaperMaker();
  String[] sign = {"+", "-", "*", "÷"};
  if (randNum >= 3 && number.nextBoolean()) {
    int length = number.nextInt(randNum - 2) + 1;
    int a = number.nextInt(randNum - length);
    int b = a + length;
    rand[a] = "(" + rand[a];
    rand[b] = rand[b] + ")";
  }
  fo += rand[0];
  for (int i = 0; i < randNum - 1; i++) {
    fo += sign[number.nextInt(4)];
    fo += rand[i + 1];
  }
  fo += "=\n";
  File file = new File(name);
  if (!file.exists()) {
    file.mkdirs();
  }

  PaperMaker temp2 = new PaperMaker();
  String time = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date().getTime());
  String file_name = time + ".txt";
  File math = new File(file, file_name);
  FileWriter ww = null;
  try {
    ww = new FileWriter(math, true);
  } catch (IOException e) {
    e.printStackTrace();
  }
  PrintWriter pw = new PrintWriter(ww);
  pw.println("第" + num + "题为" + fo);
  pw.flush();
}

查重功能测试:查重功能缺失,未找到相关代码。

切换功能测试:测试正常,切换难度时处理符合要求,功能正常。

​ 部分代码展示:

public static void changeType() {
  System.out.println("请输入“切换为xx”\n"
      + "xx只可输入小学/初中/高中\n");
  String newType = U.next();
  if (newType.equals("切换为小学") || newType.equals("切换为初中") || newType.equals(
      "切换为高中")) {
    System.out.println("已" + newType);
    type = newType.substring(3);
  } else {
    System.out.println("请输入小学、初中和高中三个选项中的一个");
    System.out.println("\n");
    changeType();
  }

保存功能测试:测试正常,文件名与需求一致。

​ 部分代码展示:

PaperMaker temp2 = new PaperMaker();
String time = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date().getTime());
String file_name = time + ".txt";
File math = new File(file, file_name);
FileWriter ww = null;
try {
  ww = new FileWriter(math, true);
} catch (IOException e) {
  e.printStackTrace();
}

代码规范检查:代码规范符合要求。

设计合理检查:设计合理符合要求。

分析:

User类:定义了方法,并将属性进行封装。

JudgeUser类:初始化用户,当用户名和密码不匹配时,判断错误并返回。

PaperMaker类:实现了小学,初中,高中类型题目出题,不同类型题目包含不同如平方根号,三角符号,以及实现文本的生成,其中包含文件,文件夹路径生成。

Main类:包含界面文字与文字交互,输入内容的处理。

三、总结与个人心得

优点:代码简洁干练,除了查重功能缺失以外,很好的实现了功能要求。

不足:缺少可以package包以更好的管理java文件,这一点可以做的更好。

心得:看完队友的代码,才发现我还有很多处代码可以优化改进,以及修复一些bug,要再接再厉啊!

标签:题目,String,互评,卷子,println,new,中小学,输入,name
From: https://www.cnblogs.com/hnu2021Lyrics/p/17718946.html

相关文章

  • 【个人项目互评】小初高试卷自动生成器
    目录简介项目介绍代码分析优缺点分析简介本文将分析博主结对编程队友个人项目的代码,从项目完成程度、实用性、规范性分析代码的优缺点。项目介绍根据湖南大学软件工导论课程中个人项目要求,用java语言完成一个简单的小、初、高数学试卷自动生成工具。具体要求详见个人项......
  • 个人项目互评
    评价:软件2104党郑骅霖代码:软件2104熊偲彤一、项目介绍个人项目:中小学数学卷子自动生成程序用户:小学、初中和高中数学老师。功能:命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择......
  • HNU个人项目互评
    一、前言这篇博客是对软件工程导论的个人项目进行互评,项目要求实现一个简单的中小学数学卷子自动生成程序。我的搭档谢先衍同学使用Python完成了项目,而我则是使用java。尽管语言不同增加了一定的阅读成本,但是接触到另一种新语言并体会编程者发挥语言特性独特的心得,确实是拓展了......
  • HNU个人项目互评
    一、前言本次博客是对“中小学数学试卷自动生成程序”的个人项目的互评,编程语言都是java.二、代码需求个人项目:中小学数学卷子自动生成程序用户:小学、初中和高中数学老师。功能:1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如......
  • HNU软件工程导论个人项目互评
    HNU软件工程导论个人项目互评代码作者:张益洋  评价人:熊魁一:项目需求用户:小学、初中和高中数学老师。功能:1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小......
  • 【Java】个人项目互评——中小学数学卷子自动生成程序
     目录一、简介二、项目要求三、测试与分析1、功能测试2、代码分析四、项目总结1、代码优点2、代码缺点五、结语一、简介本博客用于分析和总结我的结对编程队友王晓婧的个人项目代码,代码使用语言为Java,与本......
  • 个人项目互评
    代码:软件2102王珏评价:软件2102刘良宸一、项目介绍用户:小学、初中和高中数学老师。功能:1、命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小学、初中和高中三个......
  • HNU个人项目分析互评
    笔者:万宇龙项目作者:梁钰项目目标个人项目:中小学数学卷子自动生成程序用户:小学、初中和高中数学老师。功能:命令行输入用户名和密码,两者之间用空格隔开(程序预设小学、初中和高中各三个账号,具体见附表),如果用户名和密码都正确,将根据账户类型显示“当前选择为XX出题”,XX为小......
  • 软件工程导论个人项目互评
    评价人:软件2101谢先衍评价对象:软件2101方毅前言个人项目是实现一个中小学数学卷子自动生成程序,用户为小学、初中和高中老师,老师可以登录自己的账号生成对应年级的题目并保存到对应的文件夹下,并且还可以切换年级以生成不同难度的题目。具体要求如下:1、命令行输入用户名和密码......
  • 与结对队友的个人项目互评
    与我结对的队友是木拉迪力.艾海提同学,接下来我来分析一下他的个人项目:#include<iostream>#include<string>#include<fstream>#include<ctime>#include<cstdlib>usingnamespacestd;classTeacher{public:Teacher();Teacher(stringusername,stringpwd,str......