You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

145 lines
4.7 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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
```