Compare commits

..

No commits in common. 'develop' and 'main' have entirely different histories.

37
.gitignore vendored

@ -1,23 +1,26 @@
# Java编译输出
out/
# ---> Java
# Compiled class file
*.class
# IDE文件
.idea/
*.iml
.vscode/
# Log file
*.log
# 生成的输出文件
output/
*.jar
# BlueJ files
*.ctxt
# 系统文件
.DS_Store
Thumbs.db
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# 临时文件
*.tmp
*.log
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*
# 用户特定文件
*.local

@ -1,2 +0,0 @@
Manifest-Version: 1.0
Main-Class: mathquiz.Main

@ -1,195 +0,0 @@
# 数学题目生成器 (Math Quiz Generator)
## 项目简介
这是一个基于Java开发的数学题目生成器支持小学、初中、高中三个难度级别的数学题目自动生成。程序采用面向对象设计具有良好的扩展性和可维护性。
## 功能特性
- ? **多难度支持** - 支持小学、初中、高中三个难度级别
- ? **用户认证** - 内置用户登录验证系统
- ? **智能去重** - 自动检测并避免生成重复题目
- ? **文件管理** - 自动按用户和日期保存生成的题目
- ? **动态切换** - 支持运行时切换难度级别
- ? **灵活数量** - 支持生成10-30道题目
## 系统要求
- **Java版本**: Java 8 或更高版本
- **操作系统**: Windows、Linux、macOS
- **内存**: 至少 128MB 可用内存
## 项目结构
```
apersonalproject/
├── src/mathquiz/ # 源代码目录
│ ├── Main.java # 主程序入口
│ ├── AccountType.java # 账户类型枚举
│ ├── AuthService.java # 认证服务
│ ├── ConsolePrompter.java # 控制台交互
│ ├── Deduplicator.java # 去重器
│ ├── GeneratorFactory.java # 生成器工厂
│ ├── PaperSaver.java # 文件保存器
│ ├── ProblemGenerator.java # 题目生成器接口
│ ├── PrimaryGenerator.java # 小学题目生成器
│ ├── MiddleGenerator.java # 初中题目生成器
│ ├── HighGenerator.java # 高中题目生成器
│ └── Validators.java # 输入验证器
├── out/production/ # 编译输出目录
├── output/ # 生成的题目保存目录
├── mathquiz.jar # 可执行JAR文件
├── run_mathquiz.bat # Windows启动脚本
└── README.md # 项目说明文档
```
## 快速开始
### 方法一:使用批处理文件(推荐)
1. 双击 `run_mathquiz.bat` 文件
2. 程序将自动启动
### 方法二:命令行运行
```bash
java -jar mathquiz.jar
```
## 使用指南
### 1. 用户登录
程序启动后,会提示输入用户名和密码:
```
请输入用户名和密码(用空格分隔):
```
### 2. 选择难度级别
登录成功后,程序会显示当前选择的难度级别:
```
当前选择为 小学 出题
```
### 3. 生成题目
输入要生成的题目数量10-30之间
```
准备生成 小学 数学题目,请输入生成题目数量(输入-1将退出当前用户重新登录
```
### 4. 切换难度级别
在输入题目数量时,可以使用以下命令切换难度:
- `切换为小学` - 切换到小学难度
- `切换为初中` - 切换到初中难度
- `切换为高中` - 切换到高中难度
### 5. 查看生成的题目
生成的题目会自动保存到 `output/用户名/` 目录下,文件名格式为:
```
YYYY-MM-DD-HH-mm-ss.txt
```
## 技术架构
### 核心类说明
- **Main**: 程序入口,处理用户交互流程
- **AuthService**: 用户认证服务,验证用户名密码
- **GeneratorFactory**: 生成器工厂,根据难度级别创建对应的生成器
- **ProblemGenerator**: 题目生成器接口,定义生成题目的标准
- **Deduplicator**: 去重器,确保生成的题目不重复
- **PaperSaver**: 文件保存器,负责将题目保存到文件
### 设计模式
- **工厂模式**: `GeneratorFactory` 根据难度级别创建对应的生成器
- **策略模式**: 不同难度级别使用不同的题目生成策略
- **单例模式**: 认证服务采用单例模式确保全局唯一
## 开发说明
### 编译项目
```bash
# 编译所有Java文件
javac -d out/production/apersonalproject src/mathquiz/*.java
# 创建JAR文件
jar cfm mathquiz.jar MANIFEST.MF -C out/production/apersonalproject .
```
### 添加新的难度级别
1. 创建新的生成器类,实现 `ProblemGenerator` 接口
2. 在 `GeneratorFactory` 中添加对应的创建逻辑
3. 在 `AccountType` 枚举中添加新的类型
## 输出示例
### 小学题目示例
```
1. 15 + 23 = ?
2. 67 - 34 = ?
3. 8 × 7 = ?
4. 56 ÷ 8 = ?
```
### 初中题目示例
```
1. 解方程2x + 5 = 13
2. 计算:(3x + 2)(x - 1)
3. 求函数 y = 2x + 3 在 x = 4 时的值
```
### 高中题目示例
```
1. 求导数f(x) = x? + 2x? - 5x + 1
2. 计算定积分:∫?? (2x + 1) dx
3. 解不等式x? - 4x + 3 > 0
```
## 故障排除
### 常见问题
1. **"找不到或无法加载主类"**
- 确保已安装Java运行环境
- 检查JAR文件是否完整
2. **"权限被拒绝"**
- 确保有写入output目录的权限
- 检查文件是否被其他程序占用
3. **生成的题目重复**
- 程序内置去重机制,如仍有重复,请检查去重器逻辑
## 版本历史
- **v1.0** (2025-09-28)
- 初始版本发布
- 支持小学、初中、高中三个难度级别
- 实现用户认证和题目去重功能
## 贡献指南
欢迎提交Issue和Pull Request来改进这个项目
## 许可证
本项目采用 MIT 许可证。
## 作者
**赵文琪** - 项目开发者
---
*如有问题或建议请通过Issue联系我们。*

@ -1,33 +0,0 @@
数学题目生成器 - 使用说明
================================
项目简介:
这是一个Java编写的数学题目生成器支持小学、初中、高中三个难度级别的数学题目生成。
可执行文件说明:
1. mathquiz.jar - 主要的可执行JAR文件
2. run_mathquiz.bat - 简单启动脚本
使用方法:
1. 双击"run_mathquiz.bat"文件
2. 或者运行命令java -jar mathquiz.jar
程序功能:
- 支持用户登录验证
- 支持小学、初中、高中三个难度级别
- 可生成10-30道数学题目
- 自动去重,确保题目不重复
- 生成的题目保存到output目录下
系统要求:
- Java 8 或更高版本
- Windows 操作系统
注意事项:
- 确保已安装Java运行环境
- 程序会在output目录下创建用户文件夹保存生成的题目
- 支持用户切换难度级别(输入"切换为小学"、"切换为初中"、"切换为高中"
作者:赵文琪
版本1.0
日期2025年9月28日

@ -0,0 +1,190 @@
# 数学题目生成器 (Math Quiz Generator)
## 项目简介
这是一个基于Java开发的数学题目生成器支持小学、初中、高中三个难度级别的数学题目自动生成。程序采用面向对象设计具有良好的扩展性和可维护性。
## 功能特性
- **多难度支持** - 支持小学、初中、高中三个难度级别
- **用户认证** - 内置用户登录验证系统
- **智能去重** - 自动检测并避免生成重复题目
- **文件管理** - 自动按用户和日期保存生成的题目
- **动态切换** - 支持运行时切换难度级别
- **灵活数量** - 支持生成10-30道题目
## 系统要求
- **Java版本**: Java 8 或更高版本
- **操作系统**: Windows
## 项目结构
```
apersonalproject/
├── src/mathquiz/ # 源代码目录
│ ├── Main.java # 主程序入口
│ ├── AccountType.java # 账户类型枚举
│ ├── AuthService.java # 认证服务
│ ├── ConsolePrompter.java # 控制台交互
│ ├── Deduplicator.java # 去重器
│ ├── GeneratorFactory.java # 生成器工厂
│ ├── PaperSaver.java # 文件保存器
│ ├── ProblemGenerator.java # 题目生成器接口
│ ├── PrimaryGenerator.java # 小学题目生成器
│ ├── MiddleGenerator.java # 初中题目生成器
│ ├── HighGenerator.java # 高中题目生成器
│ └── Validators.java # 输入验证器
├── out/production/ # 编译输出目录
├── output/ # 生成的题目保存目录
├── mathquiz.jar # 可执行JAR文件
├── run_mathquiz.bat # Windows启动脚本
└── README.md # 项目说明文档
```
## 快速开始
### 命令行运行
```bash
java -jar mathquiz.jar
```
## 注意事项
- 确保已安装Java运行环境
- 程序会在output目录下创建用户文件夹保存生成的题目
## 使用指南
### 1. 用户登录
程序启动后,会提示输入用户名和密码:
```
请输入用户名和密码(用空格分隔):
```
### 2. 选择难度级别
登录成功后,程序会显示当前选择的难度级别:
```
当前选择为 小学 出题
```
### 3. 生成题目
输入要生成的题目数量10-30之间
```
准备生成 小学 数学题目,请输入生成题目数量(输入-1将退出当前用户重新登录
```
### 4. 切换难度级别
在输入题目数量时,可以使用以下命令切换难度:
- `切换为小学` - 切换到小学难度
- `切换为初中` - 切换到初中难度
- `切换为高中` - 切换到高中难度
### 5. 查看生成的题目
生成的题目会自动保存到 `output/用户名/` 目录下,文件名格式为:
```
YYYY-MM-DD-HH-mm-ss.txt
```
## 技术架构
### 核心类说明
- **Main**: 程序入口,处理用户交互流程
- **AuthService**: 用户认证服务,验证用户名密码
- **GeneratorFactory**: 生成器工厂,根据难度级别创建对应的生成器
- **ProblemGenerator**: 题目生成器接口,定义生成题目的标准
- **Deduplicator**: 去重器,确保生成的题目不重复
- **PaperSaver**: 文件保存器,负责将题目保存到文件
### 设计模式
- **工厂模式**: `GeneratorFactory` 根据难度级别创建对应的生成器
- **策略模式**: 不同难度级别使用不同的题目生成策略
- **单例模式**: 认证服务采用单例模式确保全局唯一
## 开发说明
### 编译项目
```bash
# 编译所有Java文件
javac -d out/production/apersonalproject src/mathquiz/*.java
# 创建JAR文件
jar cfm mathquiz.jar MANIFEST.MF -C out/production/apersonalproject .
```
### 添加新的难度级别
1. 创建新的生成器类,实现 `ProblemGenerator` 接口
2. 在 `GeneratorFactory` 中添加对应的创建逻辑
3. 在 `AccountType` 枚举中添加新的类型
## 输出示例
### 小学题目示例
```
1. 15 + 23
2. 67 - 34
3. 8 × 7
4. 56 ÷ 8
```
### 初中题目示例
```
1. (15)^2 × 66 + 95
2. 90 ÷ (14)^2
3. sqrt(8)
```
### 高中题目示例
```
1. tan(9) × 41 ÷ 46
2. cos(25)
3. 48 - 73 - sin(100) + 73
```
## 故障排除
### 常见问题
1. **"找不到或无法加载主类"**
- 确保已安装Java运行环境
- 检查JAR文件是否完整
2. **"权限被拒绝"**
- 确保有写入output目录的权限
- 检查文件是否被其他程序占用
3. **生成的题目重复**
- 程序内置去重机制,如仍有重复,请检查去重器逻辑
5. **索引越界**
- 合法在尾部追加
## 版本历史
- **v1.0** (2025-09-26)
- 支持小学、初中、高中三个难度级别
- 实现用户认证和题目去重功能
- **v2.0** (2025-09-28)
- 支持小学、初中、高中三个难度级别
- 实现用户认证和题目去重功能
- 增加小学操作数至少为2表达式答案不出现负数
## 作者
**赵文琪** - 项目开发者
---

@ -1,9 +0,0 @@
@echo off
echo 数学题目生成器
echo ================
echo.
echo 正在启动程序...
java -jar mathquiz.jar
echo.
echo 程序已退出,按任意键关闭窗口...
pause > nul

@ -9,11 +9,13 @@ public class ConsolePrompter {
public ConsolePrompter(Scanner scanner) {
this.scanner = scanner; // 保存传入的Scanner
}
public String readLine(String prompt) {
// 打印提示并读取一行输入
System.out.print(prompt);
return scanner.nextLine();
}
public void println(String msg) {
// 打印一行
System.out.println(msg);

@ -1,7 +1,7 @@
package mathquiz;
import java.util.List;
//题目
// 题目生成器接口(返回题目字符串列表)
public interface ProblemGenerator {
// 生成指定数量的题目列表

Loading…
Cancel
Save