Update 类的设计.md

develop
hnu202304060319 7 months ago
parent 0bf5f2860e
commit f3bbed9fa3

@ -11,7 +11,7 @@ User 是用户信息的封装类,用于存储单个用户的登录凭证和所
### 属性
- `username`:字符串类型,表示用户名。
- `password`:字符串类型,表示用户密码(明文存储,仅用于演示)
- `password`:字符串类型,表示用户密码。
- `userType`:字符串类型,表示用户类型,取值为“小学”、“初中”或“高中”。
### 方法
@ -40,7 +40,7 @@ UserManager 负责管理所有用户账户、处理登录逻辑,并维护当
### 属性
- `users``Map<String, User>` 类型,以用户名为键存储所有预设用户。
- `currentUser``User` 类型,表示当前已登录的用户。
- `currentType``String` 类型,缓存当前用户类型(冗余字段,可由 currentUser 推导)
- `currentType``String` 类型,缓存当前出题类型
### 方法
- **构造方法** `UserManager()`
@ -76,7 +76,7 @@ UserManager 负责管理所有用户账户、处理登录逻辑,并维护当
### 方法
- `Expression setQuestion(int count)`
根据指定的操作数数量 `count`通常为3,生成一个符合当前学段要求的数学表达式对象。返回 `Expression` 实例。
根据指定的操作数数量 `count`,生成一个符合当前学段要求的数学表达式对象。返回 `Expression` 实例。
---
@ -233,7 +233,66 @@ UserManager 负责管理所有用户账户、处理登录逻辑,并维护当
- 生成时间戳文件名(格式:`yyyy-MM-dd-HH-mm-ss.txt`
- 以 UTF-8 编码写入题目,格式为 `1. 表达式\n\n2. 表达式\n\n...`
- `checkQuestion(String question, User user)`
- `checkQuestion(String question, User user)`
- 若用户目录不存在,返回 true无需去重
- 遍历该用户所有历史试卷文件
- 对每行去除题号
- 对每行去除题号,与历史文件进行匹配,如果相同则重新生成(查重功能)
> 去重基于字符串精确匹配,不进行数学等价判断。
---
## 11. AllSystem 类
### 功能概述
系统的主控制器,协调用户交互、流程跳转和模块调用。
### 属性
- `scanner``Scanner` 实例,用于读取用户输入
- `userManager`:用户管理器
- `fileManager`:文件管理器
- `questionSettingFactory`:题目生成器工厂
- `questionSetting`:当前使用的题目生成器
- `currentMode`:当前学段类型(如“小学”)
- `isFirstLogin`:标志是否首次登录,用于提示信息
- `tipMessage`:临时提示信息(如“切换成功”)
### 核心方法
- `clearScreen()`
调用系统命令 `cls`Windows清屏失败时打印堆栈不影响主流程
- `initialize()`
初始化所有组件和状态变量
- `showHomeMenu()`
显示欢迎界面,循环处理登录输入,成功后进入 `setPaper()`
- `setPaper()`
提示用户输入题目数量10~30调用 `handleFirstInput`
- `handleFirstInput(String input)`
- 输入 `-1`:返回登录界面
- 输入 10~30循环生成题目调用 `checkQuestion` 去重,显示并保存
- 其他输入:提示重试
- `showChoiceMenu()`
显示主菜单,循环处理用户选择
- `handleSecondInput(String input)`
- 输入 `-1`:返回登录
- 输入 `1`:重新生成试卷
- 输入 `切换为XX`:解析类型,调用工厂切换 `questionSetting`,进入生成流程
- 其他输入:提示重试
---
## 12. Main 类
### 功能概述
程序入口类,启动整个系统。
### 方法
- `main(String[] args)`
创建 `AllSystem` 实例,调用 `showHomeMenu()` 启动交互流程
捕获 `IOException` 并转为运行时异常抛出
---
Loading…
Cancel
Save