You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
LYQ eacdceb9dc
添加了使用大模型文档,更新代码
5 months ago
..
README.md 添加了使用大模型文档,更新代码 5 months ago
个人项目使用大模型后人工修改代码一览表.docx 添加了使用大模型文档,更新代码 5 months ago

README.md

MyMathQuiz_New

软4_李瑜清_个人项目

1. 项目简介

本项目是一个基于 Java 实现的中小学数学卷子自动生成程序。程序通过命令行与用户交互,可以根据不同用户类型(小学、初中、高中)的教师账号,生成符合特定难度要求的数学题目,并将生成的卷子保存为 .txt 文件。

本项目严格按照《软件工程导论-个人项目需求-2025》文档的要求进行开发。

2. 已实现功能

  • 用户登录支持小学、初中、高中各3个预设账号登录并进行身份验证。
  • 题目生成
    • 小学难度:生成包含 +, -, *, /() 的四则运算题目。
    • 初中难度:生成的题目中至少包含一个平方或开根号运算。
    • 高中难度:生成的题目中至少包含一个 sin, costan 三角函数运算。
  • 题目格式:所有生成的题目末尾都以 = 结尾,方便作答。
  • 数量控制支持用户输入10-30之间的整数用于指定生成题目的数量。
  • 题目查重:确保为同一位老师生成的卷子中,不会出现与历史卷子(该老师文件夹下已存在的文件)重复的题目。
  • 类型切换:登录后,用户可以通过 切换为XX 命令动态改变当前要生成的题目类型。
  • 文件保存:生成的卷子会自动保存在以用户名命名的文件夹下,文件名格式为 年-月-日-时-分-秒.txt
  • 用户退出:支持输入 -1 退出当前登录,返回登录界面。

3. 如何运行

本项目最终交付的可执行文件位于 src 目录下。请按照以下步骤运行程序:

  1. 检查Java环境 确保您的计算机已安装 Java 8 (JDK 1.8) 或更高版本的 JRE。您可以在命令行工具中执行 java -version 来进行验证。

  2. 启动程序 打开您的命令行工具(如 Windows 的 CMD 或 PowerShellmacOS/Linux 的 Terminal然后执行以下两个步骤

    第一步:进入 .jar 文件所在的 src 目录。 您需要使用 cd 命令切换到 src 文件夹。例如,如果您的整个项目文件夹在桌面上,命令可能如下:

    # 这是一个示例路径,请根据您的实际情况修改
    cd C:\Users\YourName\Desktop\MyMathQuiz_New\src
    

    第二步:执行 .jar 文件。src 目录下,运行以下命令来启动数学卷子生成程序:

    java -jar MyMathQuiz_New.jar
    

    (注意: MyMathQuiz_New.jar 是我们项目默认的打包文件名,如果您的文件名不同,请相应修改)

    成功执行后,您将在命令行看到程序的欢迎界面和登录提示。

4. 代码结构

.
├── doc/ # 存放说明文档
 └── README.md
└── src/ # 存放所有 Java 源代码
└── com/
└── student/
└── mathquiz/
├── Main.java # 程序主入口和用户交互逻辑
├── UserType.java # 用户类型枚举 (小学, 初中, 高中)
├── UserDatabase.java # 模拟数据库,负责用户账户管理与验证
├── QuestionGenerator.java # 核心题目生成器,负责各难度题目创建
└── QuizManager.java # 文件管理器,负责卷子保存与历史题目

5. 开发环境

  • 操作系统: Windows

  • IDE: IntelliJ IDEA

  • JDK: Java 1.8 (Amazon Corretto 8)

  • 代码规范: Google Java Style Guide

  • 版本控制: Git

6. 项目目标与设计思路

本项目的核心目标是创建一个稳定、可靠且易于扩展的命令行数学题目生成工具。在设计上,主要遵循了以下原则:

  • 单一职责原则 (SRP):将不同的功能严格划分到不同的类中。例如,QuestionGenerator 只负责生成题目,QuizManager 只负责文件I/OUserDatabase 只负责用户数据管理。这种分离使得代码更易于理解、测试和维护。
  • 面向对象设计:通过 UserType 枚举来管理用户类型,避免了使用“魔法字符串”(如直接用 "小学" 字符串),增强了代码的健壮性。
  • 可扩展性:项目的结构设计考虑了未来的功能扩展。例如,若要支持新的学科(如物理),只需在 UserType 中添加新的枚举值,并在 QuestionGenerator 中实现新的题目生成逻辑,而无需大规模改动现有代码。