|
|
# kang
|
|
|
|
|
|
## 项目简介
|
|
|
|
|
|
本项目是一个基于命令行的**中小学数学试卷自动生成程序**。旨在帮助小学、初中和高中数学教师快速、批量地生成符合对应难度要求的数学练习试卷。程序支持用户登录、难度切换、题目数量自定义,并具备**题目查重**和**结果文件保存**功能,确保生成的试卷具有实用性和唯一性。
|
|
|
|
|
|
## 核心功能
|
|
|
|
|
|
1. **多用户登录与权限管理:**
|
|
|
* 预设小学、初中、高中三类账户,通过命令行输入用户名和密码登录。
|
|
|
* 登录成功后,系统自动识别并显示当前的出题类型。
|
|
|
2. **分级难度出题:**
|
|
|
* 支持小学、初中、高中三个难度等级的题目生成。
|
|
|
* **小学:** 仅包含 `+`, `-`, `*`, `/` 和 `()` 运算。
|
|
|
* **初中:** 题目中**至少包含一个**平方或开根号运算。
|
|
|
* **高中:** 题目中**至少包含一个** `sin`, `cos` 或 `tan` 三角函数运算。
|
|
|
* 所有题目操作数在 1-5 个之间,操作数取值范围为 1-100。
|
|
|
3. **试卷生成与数量控制:**
|
|
|
* 用户可输入所需生成的题目数量,有效范围为 **10 到 30** 题。
|
|
|
* 输入 `-1` 可退出当前用户登录状态。
|
|
|
4. **题目查重机制:**
|
|
|
* **强大的查重功能:** 确保同一用户新生成的试卷中的题目,不与该用户**历史已生成**的任何题目重复。
|
|
|
5. **难度切换功能:**
|
|
|
* 登录状态下,用户可通过输入 `切换为XX` (XX 为小学/初中/高中) 随时切换出题类型。
|
|
|
6. **结果保存:**
|
|
|
* 生成的试卷将自动保存到以用户名命名的文件夹下。
|
|
|
* 文件命名格式为:`年-月-日-时-分-秒.txt`。
|
|
|
* 试卷内容包含题号,每题之间空一行。
|
|
|
|
|
|
## 技术栈
|
|
|
|
|
|
本项目主要采用 **Java** 语言开发,并遵循面向对象的设计原则。
|
|
|
|
|
|
* **主要语言:** Java
|
|
|
* **开发环境:** JDK 8+
|
|
|
* **核心设计:** 接口/抽象类定义(如 `QuestionGenerator`),具体类实现(如 `ElementaryQuestionGenerator`),以实现不同难度题目的解耦和扩展。
|
|
|
|
|
|
## 目录结构与规范
|
|
|
|
|
|
本项目遵循头歌项目提交规范,采用以下目录结构:
|
|
|
|
|
|
```
|
|
|
MathQuestionGenerator/
|
|
|
├── src/
|
|
|
│ ├── com/
|
|
|
│ │ └── mathgen/
|
|
|
│ │ ├── Main.java
|
|
|
│ │ ├── auth/
|
|
|
│ │ │ ├── AuthService.java
|
|
|
│ │ │ └── User.java
|
|
|
│ │ ├── enums/
|
|
|
│ │ │ └── AccountType.java
|
|
|
│ │ ├── io/
|
|
|
│ │ │ └── FileService.java
|
|
|
│ │ ├── question/
|
|
|
│ │ │ ├── ElementaryQuestionGenerator.java
|
|
|
│ │ │ ├── HighSchoolQuestionGenerator.java
|
|
|
│ │ │ ├── MiddleSchoolQuestionGenerator.java
|
|
|
│ │ │ ├── Question.java
|
|
|
│ │ │ └── QuestionGenerator.java
|
|
|
│ │ └── util/
|
|
|
│ │ ├── ExpressionBuilder.java
|
|
|
│ │ └── RandomUtil.java
|
|
|
```
|
|
|
|
|
|
### Git 提交规范
|
|
|
|
|
|
* **分支管理:** 设有 `main` 和 `develop` 两个分支。
|
|
|
* `main`:存放稳定、可发布版本。
|
|
|
* `develop`:存放最新开发版本。
|
|
|
* **提交流程:** 代码需先提交到 `develop` 分支,测试正常后方可合并到 `main` 分支。
|
|
|
|
|
|
## 安装与运行
|
|
|
|
|
|
### 1. 先决条件
|
|
|
|
|
|
* 已安装 **Java Development Kit (JDK 8 或更高版本)**。
|
|
|
* 已安装 **Git**。
|
|
|
|
|
|
### 2. 获取代码
|
|
|
|
|
|
使用 Git 克隆项目到本地:
|
|
|
|
|
|
```bash
|
|
|
git clone [您的项目仓库地址]
|
|
|
cd [您的项目名称]
|
|
|
```
|
|
|
|
|
|
|
|
|
## 使用指南
|
|
|
|
|
|
程序启动后,将进入登录界面。
|
|
|
|
|
|
### 1. 用户登录
|
|
|
|
|
|
在命令行输入用户名和密码,用空格隔开:
|
|
|
|
|
|
```
|
|
|
请输入用户名和密码(用空格隔开):
|
|
|
张三1 123
|
|
|
```
|
|
|
|
|
|
**预设账户信息(供测试):**
|
|
|
|
|
|
| 账户类型 | 账户 | 密码 |
|
|
|
| :--- | :--- | :--- |
|
|
|
| **小学** | 张三1, 张三2, 张三3 | 123 |
|
|
|
| **初中** | 李四1, 李四2, 李四3 | 123 |
|
|
|
| **高中** | 王五1, 王五2, 王五3 | 123 |
|
|
|
|
|
|
### 2. 生成试卷
|
|
|
|
|
|
登录成功后,系统会提示当前出题类型,并要求输入题目数量:
|
|
|
|
|
|
```
|
|
|
当前选择为小学 出题
|
|
|
准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):
|
|
|
20
|
|
|
```
|
|
|
|
|
|
### 3. 切换出题类型
|
|
|
|
|
|
在提示输入题目数量的界面,输入切换命令:
|
|
|
|
|
|
```
|
|
|
切换为高中
|
|
|
```
|
|
|
|
|
|
系统将确认切换并再次提示输入题目数量:
|
|
|
|
|
|
```
|
|
|
系统提示“准备生成高中数学题目,请输入生成题目数量”
|
|
|
```
|
|
|
|
|
|
### 4. 退出登录
|
|
|
|
|
|
在提示输入题目数量的界面,输入 `-1` 即可退出当前用户,返回登录界面:
|
|
|
|
|
|
```
|
|
|
-1
|
|
|
```
|
|
|
|
|
|
|
|
|
|