|
|
4 months ago | |
|---|---|---|
| .. | ||
| README.md | 4 months ago | |
README.md
数学题目生成器项目说明文档
1. 项目概述
该项目实现了一个基于不同难度的数学题目生成器,旨在为不同年级(小学、初中和高中)的学生生成数学考试题目。系统支持用户登录、选择不同的年级出题难度、生成题目并保存至文件。通过此系统,教师可以快速生成符合教学需要的数学题目。
2. 项目功能
2.1 用户管理
- 用户登录:系统支持通过用户名和密码进行登录验证。
- 用户类型:支持小学、初中和高中三种用户类型。不同用户类型对应不同的题目生成规则。
- 用户切换:登录后可以在不同难度的题目生成器之间切换。
2.2 题目生成
- 题目生成器:根据用户选择的年级,使用不同的题目生成规则。生成的题目包括加法、减法、乘法、除法、平方、开根号以及三角函数等操作。
- 题目数量:用户可以指定生成题目的数量,数量范围在10到30道题目之间。
- 题目保存:生成的题目会自动保存到用户目录下,并以时间戳命名文件。
- 唯一性验证:系统确保生成的题目在当前用户目录下是唯一的,避免重复。
2.3 用户界面
- 提供命令行交互,用户可以查看帮助信息、生成题目、切换题目难度或退出程序。
- 支持查看帮助信息,提供清晰的操作说明。
3. 系统架构
该项目采用面向对象设计,主要类如下:
3.1 ExamManager
ExamManager是整个系统的核心类,负责题目的生成与管理。主要功能包括:
- 根据用户类型创建相应的题目生成器。
- 管理用户目录,确保每个用户有独立的存储空间。
- 生成符合要求的题目并保存。
3.2 QuestionGenerator接口
所有题目生成器都实现了QuestionGenerator接口。此接口定义了生成题目和验证题目的方法。
generateQuestion():生成一道数学题目。getType():返回生成器对应的年级类型。isValidQuestion():验证生成的题目是否符合规范。
3.3PrimaryQuestionGenerator、JuniorQuestionGenerator、SeniorQuestionGenerator
这三个类分别实现了QuestionGenerator接口,为不同年级的用户提供题目生成服务。它们根据年级的不同,生成不同难度的数学题目。
3.4 User和UserManager
User类存储用户的基本信息,包括用户名、密码和用户类型。UserManager类管理所有的用户,负责用户的登录认证。
3.5 MathExamApp
这是整个应用程序的入口,提供了一个命令行界面。用户可以通过输入命令进行登录、选择难度、生成题目等操作。
4. 代码详解
4.1 题目生成规则
4.1.1 PrimaryQuestionGenerator
为小学用户生成简单的数学题目。题目中包含1至5个运算符(加法、减法、乘法、除法),每道题目包含2至6个数字,生成类似:
25 + 30 - 12
4.1.2 JuniorQuestionGenerator
为初中用户生成的题目包括平方(^2)和开根号(√)等扩展操作。题目中包括1至5个操作符以及平方或开根号操作,生成类似:
12 + 24 - √(36) + 45
4.1.3 SeniorQuestionGenerator
为高中用户生成的题目包含三角函数(sin, cos, tan)以及基础运算符(加、减、乘、除)。题目中包括1至5个操作符和至少一个三角函数,生成类似:
sin(45) + 20 * 3 - cos(30)
4.2 用户管理与登录
UserManager类提供了用户的认证功能,使用用户名和密码进行验证。支持去除用户输入中的空格,确保用户名与密码的匹配不会受到空格影响。
4.3 题目保存
每当生成的题目数量满足要求后,ExamManager会将题目保存到用户目录下,并以当前时间戳命名文件。保存的文件格式为:
1. 12 + 24 - 15
2. 18 * 3 + 50
5. 运行说明
5.1 启动程序
运行MathExamApp类,启动命令行应用程序。程序将提示用户输入用户名和密码。
5.2 用户登录
用户需要输入用户名和密码,用户名和密码必须和UserManager中预设的用户匹配。登录成功后,用户可以选择生成题目或切换题目难度。
5.3 生成题目
用户输入题目数量(10-30道题),系统将生成相应数量的题目。用户还可以选择切换题目难度(小学、初中、高中)。
5.4 退出程序
输入-1可以退出程序。输入0将退出当前用户,重新登录。
6. 代码结构
.
├── ExamManager.java # 题目管理类
├── MathExamApp.java # 程序入口与交互逻辑
├── PrimaryQuestionGenerator.java # 小学题目生成器
├── JuniorQuestionGenerator.java # 初中题目生成器
├── SeniorQuestionGenerator.java # 高中题目生成器
├── QuestionGenerator.java # 题目生成器接口
├── User.java # 用户类
├── UserManager.java # 用户管理类
└── UserType.java # 用户类型枚举类
7. 依赖与配置
Windows 系统下运行步骤
-
配置 Java 22 编译环境
确保系统已安装 Java 22 JDK 版本
-
设置控制台编码
打开 cmd 命令行工具
执行以下命令设置 .NET 控制台输入输出编码:
powershell
[Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 -
运行程序
使用以下指令执行 .jar 文件:
cmd
java -jar .\MathExamApp.jar
Linux 系统下运行步骤
-
配置 Java 22 JDK 版本
确保系统已安装 Java 22 JDK
-
运行程序
使用以下指令执行程序:
bash
java -jar MathExamApp.jar