|
|
|
|
@ -1,2 +1,264 @@
|
|
|
|
|
# ERICPROJECT
|
|
|
|
|
|
|
|
|
|
# 中小学数学卷子自动生成程序
|
|
|
|
|
|
|
|
|
|
> 专为数学教师打造的智能试卷生成解决方案
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 项目简介
|
|
|
|
|
|
|
|
|
|
🎯 **中小学数学卷子自动生成程序**是一个专为中小学数学老师设计的智能试卷生成系统。系统能够根据不同学段(小学、初中、高中)自动生成相应难度的数学题目,并保存为规范的试卷文件。
|
|
|
|
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
|
|
|
|
### 1. 🔐 用户认证系统
|
|
|
|
|
- 预设小学、初中、高中各三个教师账号
|
|
|
|
|
- 支持用户名密码登录验证
|
|
|
|
|
- 登录后显示当前学段类型
|
|
|
|
|
|
|
|
|
|
### 2. 🎲 智能题目生成
|
|
|
|
|
- **小学题目**:基础四则运算,保证减法不产生负数,随机按规则添加括号
|
|
|
|
|
- **初中题目**:包含平方和开方运算
|
|
|
|
|
- **高中题目**:包含三角函数运算
|
|
|
|
|
- 操作数范围:1-100
|
|
|
|
|
- 操作数数量:1-5个
|
|
|
|
|
- 题目数量:10-30道
|
|
|
|
|
|
|
|
|
|
### 3. 🔍 题目查重机制
|
|
|
|
|
- 自动检测历史生成的题目
|
|
|
|
|
- 确保新生成的题目不与已有题目重复
|
|
|
|
|
|
|
|
|
|
### 4. 🔄 学段切换功能
|
|
|
|
|
- 支持登录状态下切换出题学段
|
|
|
|
|
- 实时更新出题难度
|
|
|
|
|
|
|
|
|
|
### 5. 💾 文件管理
|
|
|
|
|
- 按用户分目录存储试卷
|
|
|
|
|
- 文件名格式:`年-月-日-时-分-秒.txt`
|
|
|
|
|
- 题目格式规范,包含题号和空行
|
|
|
|
|
|
|
|
|
|
## 文件结构
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
项目根目录/
|
|
|
|
|
├── AccountManager.java
|
|
|
|
|
├── BaseQuestionGenerator.java
|
|
|
|
|
├── Constants.java
|
|
|
|
|
├── FileManager.java
|
|
|
|
|
├── HighQuestionGenerator.java
|
|
|
|
|
├── MathExamGenerator.java
|
|
|
|
|
├── MiddleQuestionGenerator.java
|
|
|
|
|
├── PrimaryQuestionGenerator.java
|
|
|
|
|
└── output/
|
|
|
|
|
├── 张三1/
|
|
|
|
|
├── 李四1/
|
|
|
|
|
└── 王五1/
|
|
|
|
|
```
|
|
|
|
|
## 系统架构
|
|
|
|
|
|
|
|
|
|
### 核心类说明
|
|
|
|
|
|
|
|
|
|
#### 1. `MathExamGenerator` - 程序入口
|
|
|
|
|
**主要职责**:系统主控制器,协调各个模块的工作流程
|
|
|
|
|
|
|
|
|
|
**核心函数**:
|
|
|
|
|
- `main(String[] args)` - 程序入口点
|
|
|
|
|
- `run()` - 主循环控制
|
|
|
|
|
- `processLogin()` - 处理用户登录
|
|
|
|
|
|
|
|
|
|
#### 2. `AccountManager` - 账号管理
|
|
|
|
|
**主要职责**:管理用户账户信息和身份验证
|
|
|
|
|
|
|
|
|
|
**核心函数**:
|
|
|
|
|
- `authenticate(String username, String password)` - 用户认证
|
|
|
|
|
- `switchStage(String newStage)` - 切换学段
|
|
|
|
|
- `getCurrentStage()` - 获取当前学段
|
|
|
|
|
|
|
|
|
|
#### 3. `BaseQuestionGenerator` - 题目生成基类
|
|
|
|
|
**主要职责**:定义题目生成的通用接口和公共功能
|
|
|
|
|
|
|
|
|
|
**核心函数**:
|
|
|
|
|
- `generateQuestion()` - 生成单个题目
|
|
|
|
|
- `checkDuplicate(String question)` - 检查题目重复
|
|
|
|
|
- `generateOperands()` - 生成操作数
|
|
|
|
|
|
|
|
|
|
#### 4. 具体题目生成器
|
|
|
|
|
- `PrimaryQuestionGenerator` - 小学题目生成
|
|
|
|
|
- `MiddleQuestionGenerator` - 初中题目生成
|
|
|
|
|
- `HighQuestionGenerator` - 高中题目生成
|
|
|
|
|
|
|
|
|
|
#### 5. `FileManager` - 文件管理
|
|
|
|
|
**主要职责**:处理试卷文件的保存和读取
|
|
|
|
|
|
|
|
|
|
**核心函数**:
|
|
|
|
|
- `saveExamPaper(String username, List<String> questions)` - 保存试卷(相对路径,与被执行文件同级,每个账号一个文件夹)
|
|
|
|
|
- `loadHistoryQuestions(String username)` - 加载历史题目
|
|
|
|
|
- `getUserOutputPath(String username)` - 获取用户输出路径
|
|
|
|
|
|
|
|
|
|
## 🚀 使用说明
|
|
|
|
|
|
|
|
|
|
### 运行环境
|
|
|
|
|
- JDK 版本:JDK 25 及以上
|
|
|
|
|
- 支持系统:Windows(Win10/Win11)
|
|
|
|
|
- 编码要求:windows需要切换编码
|
|
|
|
|
|
|
|
|
|
## ⚙️ 环境配置
|
|
|
|
|
|
|
|
|
|
### Java环境检查
|
|
|
|
|
|
|
|
|
|
在运行程序前,请确保您的系统已正确安装Java环境:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
# 检查Java运行时环境
|
|
|
|
|
java -version
|
|
|
|
|
|
|
|
|
|
# 检查Java编译器
|
|
|
|
|
javac -version
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
✅ **要求**:确保两个命令都能正确显示版本信息,且版本为JDK 8及以上。
|
|
|
|
|
|
|
|
|
|
### 字符编码设置(重要)
|
|
|
|
|
|
|
|
|
|
由于程序包含中文字符,需要正确设置编码:
|
|
|
|
|
|
|
|
|
|
#### 在Windows PowerShell中:
|
|
|
|
|
```powershell
|
|
|
|
|
# 设置UTF-8编码
|
|
|
|
|
[Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
|
|
|
|
|
|
|
|
|
|
# 然后运行程序
|
|
|
|
|
cd ..
|
|
|
|
|
java -jar school.jar
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 在CMD命令提示符中:
|
|
|
|
|
```cmd
|
|
|
|
|
# 设置UTF-8编码
|
|
|
|
|
chcp 65001
|
|
|
|
|
|
|
|
|
|
# 然后运行程序
|
|
|
|
|
cd ..
|
|
|
|
|
java -jar school.jar
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
⚠️ **注意**:如果未正确设置编码,可能会导致中文字符显示乱码。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 操作流程示例
|
|
|
|
|
|
|
|
|
|
1. **登录系统**
|
|
|
|
|
```
|
|
|
|
|
请输入用户名 密码(用空格分隔):张三1 123
|
|
|
|
|
当前选择为 小学 出题
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. **生成题目**
|
|
|
|
|
```
|
|
|
|
|
准备生成 小学 数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):15
|
|
|
|
|
试卷已保存:output/张三1/2025-09-28-14-30-25.txt
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. **切换学段**
|
|
|
|
|
```
|
|
|
|
|
准备生成 小学 数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):切换为初中
|
|
|
|
|
当前选择为 初中 出题
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
4. **退出登录**
|
|
|
|
|
```
|
|
|
|
|
准备生成 初中 数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):-1
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 📝 题目示例
|
|
|
|
|
|
|
|
|
|
**小学题目:**
|
|
|
|
|
```
|
|
|
|
|
第1题: 45 + 23
|
|
|
|
|
第2题: ( 67 - 34 ) * 2
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**初中题目:**
|
|
|
|
|
```
|
|
|
|
|
第1题: 25 + sqrt( 16 ) * 3
|
|
|
|
|
第2题: ( 5^2 ) - sqrt( 9 )
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**高中题目:**
|
|
|
|
|
```
|
|
|
|
|
第1题: sin( 30 ) + 45 * 2
|
|
|
|
|
第2题: cos( 45 ) * ( 3^2 ) - tan( 30 )
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 技术特点
|
|
|
|
|
|
|
|
|
|
1. **面向对象设计**:清晰的类职责分离
|
|
|
|
|
2. **可扩展性**:易于添加新的题目类型
|
|
|
|
|
3. **健壮性**:完善的异常处理和输入验证
|
|
|
|
|
4. **一致性**:统一的代码风格和命名规范
|
|
|
|
|
5. **文档完整**:详细的代码注释
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 开发环境
|
|
|
|
|
|
|
|
|
|
- Java 8+
|
|
|
|
|
- 标准Java库,无外部依赖
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 👥 预设账户
|
|
|
|
|
|
|
|
|
|
| 账户类型 | 账户 | 密码 | 备注 |
|
|
|
|
|
|---------|--------|------|------|
|
|
|
|
|
| 小学 | 张三1 | 123 | |
|
|
|
|
|
| 小学 | 张三2 | 123 | |
|
|
|
|
|
| 小学 | 张三3 | 123 | |
|
|
|
|
|
| 初中 | 李四1 | 123 | |
|
|
|
|
|
| 初中 | 李四2 | 123 | |
|
|
|
|
|
| 初中 | 李四3 | 123 | |
|
|
|
|
|
| 高中 | 王五1 | 123 | |
|
|
|
|
|
| 高中 | 王五2 | 123 | |
|
|
|
|
|
| 高中 | 王五3 | 123 | |
|
|
|
|
|
|
|
|
|
|
💡 **提示**:请使用上表中的账户和密码进行登录测试
|
|
|
|
|
|
|
|
|
|
## ⚠️ 注意事项
|
|
|
|
|
|
|
|
|
|
1. 首次运行会自动创建output目录
|
|
|
|
|
2. 题目数量必须在10-30之间
|
|
|
|
|
3. 切换学段时需输入完整名称(小学/初中/高中)
|
|
|
|
|
4. 系统会确保同一用户的题目不重复
|
|
|
|
|
5. 如无法生成足够题目,请删除部分历史文件或减少生成数量
|
|
|
|
|
6. 确保您的命令提示符使用UTF-8编码,以正确显示中文
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 开发规范与优化建议
|
|
|
|
|
|
|
|
|
|
## 编码标准
|
|
|
|
|
- **架构设计**:采用面向对象思想,确保类结构清晰、职责明确
|
|
|
|
|
- **代码规范**:方法长度控制在40行内,保持代码简洁性
|
|
|
|
|
- **命名约定**:遵循Java驼峰命名规则,确保名称表意明确
|
|
|
|
|
- **注释要求**:为核心方法和复杂算法提供完整注释说明
|
|
|
|
|
|
|
|
|
|
## 异常处理
|
|
|
|
|
- **输入校验**:对用户输入数据进行严格的格式和有效性验证
|
|
|
|
|
- **异常管理**:合理使用异常处理机制捕获运行时错误
|
|
|
|
|
- **用户提示**:设计友好的错误提示信息,提升用户体验
|
|
|
|
|
|
|
|
|
|
## 功能拓展方向
|
|
|
|
|
- **难度分级**:在各学段内实现题目难度分层设计
|
|
|
|
|
- **题型丰富**:拓展几何、代数等多元化题目类型
|
|
|
|
|
- **批量操作**:支持试卷批量生成功能
|
|
|
|
|
- **个性化设置**:提供试卷模板自定义选项
|
|
|
|
|
|
|
|
|
|
## 技术升级路径
|
|
|
|
|
- **数据存储**:引入数据库管理系统存储用户和题目数据
|
|
|
|
|
- **界面优化**:开发Web端界面,改善用户交互体验
|
|
|
|
|
- **算法改进**:优化题目生成算法,提升题目质量
|
|
|
|
|
- **多语言支持**:实现系统界面国际化
|
|
|
|
|
|
|
|
|
|
## 🔧 维护说明
|
|
|
|
|
|
|
|
|
|
如需修改系统参数,请编辑`Constants.java`文件:
|
|
|
|
|
- 题目数量范围
|
|
|
|
|
- 操作数范围
|
|
|
|
|
- 输出目录等
|