|
|
|
|
@ -0,0 +1,152 @@
|
|
|
|
|
# 中小学数学卷子自动生成程序 - 项目说明文档
|
|
|
|
|
|
|
|
|
|
## 项目概述
|
|
|
|
|
|
|
|
|
|
本项目是一个基于Java开发的中小学数学卷子自动生成程序,旨在为小学、初中和高中数学老师提供便捷的题目生成工具。
|
|
|
|
|
|
|
|
|
|
## 项目信息
|
|
|
|
|
|
|
|
|
|
- **项目名称**: 中小学数学卷子自动生成程序
|
|
|
|
|
- **开发语言**: Java
|
|
|
|
|
- **开发环境**: JDK 8+
|
|
|
|
|
- **项目类型**: 命令行应用程序
|
|
|
|
|
- **目标用户**: 小学、初中、高中数学老师
|
|
|
|
|
|
|
|
|
|
## 功能特性
|
|
|
|
|
|
|
|
|
|
### 1. 用户认证系统
|
|
|
|
|
- 支持用户名密码登录验证
|
|
|
|
|
- 预设小学、初中、高中各3个账户
|
|
|
|
|
- 根据账户类型自动选择出题难度
|
|
|
|
|
|
|
|
|
|
### 2. 分层题目生成
|
|
|
|
|
- **小学题目**: 支持+、-、*、/和括号运算,操作数范围1-100
|
|
|
|
|
- **初中题目**: 在小学基础上增加平方和开根号运算
|
|
|
|
|
- **高中题目**: 在初中基础上增加sin、cos、tan三角函数运算
|
|
|
|
|
|
|
|
|
|
### 3. 智能去重机制
|
|
|
|
|
- 自动检测历史生成的题目
|
|
|
|
|
- 确保同一账户类型下题目不重复
|
|
|
|
|
- 支持跨会话的题目历史记录
|
|
|
|
|
|
|
|
|
|
### 4. 灵活的用户交互
|
|
|
|
|
- 支持题目数量设置(10-30题)
|
|
|
|
|
- 支持在线切换账户类型
|
|
|
|
|
- 支持退出登录重新选择
|
|
|
|
|
|
|
|
|
|
### 5. 文件管理系统
|
|
|
|
|
- 按账户类型分文件夹存储
|
|
|
|
|
- 时间戳命名格式:yyyy-MM-dd-HH-mm-ss.txt
|
|
|
|
|
- 自动创建目录结构
|
|
|
|
|
|
|
|
|
|
## 系统架构
|
|
|
|
|
|
|
|
|
|
### 核心类设计
|
|
|
|
|
|
|
|
|
|
1. **MathQuestion.java** - 数学题目数据模型
|
|
|
|
|
2. **User.java** - 用户账户数据模型
|
|
|
|
|
3. **UserManager.java** - 用户管理和认证
|
|
|
|
|
4. **MathQuestionGenerator.java** - 题目生成核心算法
|
|
|
|
|
5. **QuestionManager.java** - 题目管理和去重逻辑
|
|
|
|
|
6. **MathTestGenerator.java** - 主程序入口
|
|
|
|
|
7. **SimpleMathTestGenerator.java** - 优化版主程序
|
|
|
|
|
|
|
|
|
|
### 数据流程
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
用户登录 → 选择题目类型 → 设置题目数量 → 生成题目 → 去重检查 → 保存文件 → 显示结果
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 预设账户信息
|
|
|
|
|
|
|
|
|
|
| 账户类型 | 用户名 | 密码 |
|
|
|
|
|
|----------|--------|------|
|
|
|
|
|
| 小学 | 张三1, 张三2, 张三3 | 123 |
|
|
|
|
|
| 初中 | 李四1, 李四2, 李四3 | 123 |
|
|
|
|
|
| 高中 | 王五1, 王五2, 王五3 | 123 |
|
|
|
|
|
|
|
|
|
|
## 使用说明
|
|
|
|
|
|
|
|
|
|
### 启动程序
|
|
|
|
|
```bash
|
|
|
|
|
java MathTestGenerator
|
|
|
|
|
# 或
|
|
|
|
|
java SimpleMathTestGenerator
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 基本操作流程
|
|
|
|
|
|
|
|
|
|
1. **登录**: 输入用户名和密码,用空格分隔
|
|
|
|
|
2. **生成题目**: 输入题目数量(10-30)
|
|
|
|
|
3. **切换类型**: 输入"切换为小学"、"切换为初中"或"切换为高中"
|
|
|
|
|
4. **退出**: 输入-1退出当前用户
|
|
|
|
|
|
|
|
|
|
### 示例操作
|
|
|
|
|
```
|
|
|
|
|
请输入用户名和密码(用空格隔开):张三1 123
|
|
|
|
|
当前选择为小学出题
|
|
|
|
|
准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):15
|
|
|
|
|
正在生成15道小学数学题目...
|
|
|
|
|
题目已保存到文件:小学/2025-09-29-14-30-25.txt
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 项目目录结构
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
项目根目录/
|
|
|
|
|
├── src/ # 源代码目录
|
|
|
|
|
│ ├── MathQuestion.java
|
|
|
|
|
│ ├── User.java
|
|
|
|
|
│ ├── UserManager.java
|
|
|
|
|
│ ├── MathQuestionGenerator.java
|
|
|
|
|
│ ├── QuestionManager.java
|
|
|
|
|
│ ├── MathTestGenerator.java
|
|
|
|
|
│ └── SimpleMathTestGenerator.java
|
|
|
|
|
├── doc/ # 文档目录
|
|
|
|
|
│ └── 项目说明文档.md
|
|
|
|
|
├── 小学/ # 小学题目存储目录
|
|
|
|
|
├── 初中/ # 初中题目存储目录
|
|
|
|
|
├── 高中/ # 高中题目存储目录
|
|
|
|
|
├── 项目需求.md
|
|
|
|
|
├── 个人项目使用大模型后人工修改代码一览表.md
|
|
|
|
|
└── run_utf8.bat # 运行脚本
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## 技术特点
|
|
|
|
|
|
|
|
|
|
### 1. 面向对象设计
|
|
|
|
|
- 采用MVC架构模式
|
|
|
|
|
- 良好的类职责分离
|
|
|
|
|
- 高内聚低耦合的设计原则
|
|
|
|
|
|
|
|
|
|
### 2. 算法优化
|
|
|
|
|
- 高效的题目生成算法
|
|
|
|
|
- 智能的去重机制
|
|
|
|
|
- 合理的随机数生成策略
|
|
|
|
|
|
|
|
|
|
### 3. 中文支持
|
|
|
|
|
- 完整的中文输入输出支持
|
|
|
|
|
- 中文路径和文件名处理
|
|
|
|
|
- 友好的中文用户界面
|
|
|
|
|
|
|
|
|
|
### 4. 健壮性设计
|
|
|
|
|
- 全面的异常处理机制
|
|
|
|
|
- 输入验证和错误提示
|
|
|
|
|
- 良好的容错能力
|
|
|
|
|
|
|
|
|
|
## 扩展性
|
|
|
|
|
|
|
|
|
|
本项目具有良好的扩展性,可以方便地:
|
|
|
|
|
- 添加新的题目类型和难度
|
|
|
|
|
- 扩展用户管理功能
|
|
|
|
|
- 增加题目导出格式
|
|
|
|
|
- 集成数据库存储
|
|
|
|
|
- 开发图形用户界面
|
|
|
|
|
|
|
|
|
|
## 开发环境要求
|
|
|
|
|
|
|
|
|
|
- JDK 8 或更高版本
|
|
|
|
|
- 支持UTF-8编码的IDE
|
|
|
|
|
- Windows/Linux/macOS操作系统
|
|
|
|
|
|
|
|
|
|
|