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.
|
|
4 months ago | |
|---|---|---|
| .. | ||
| README.md | 4 months ago | |
README.md
中小学数学题生成系统 README
一、项目介绍
本系统是一款面向中小学场景的数学题自动生成工具,支持按学段(小学/初中/高中)生成对应难度题目,集成登录验证、学段切换、重复题目检测、本地保存等功能,满足教学练习中的题目生成需求。
二、运行环境要求
| 依赖项 | 版本要求 | 说明 |
|---|---|---|
| JDK | JDK 1.8 及以上 | 需配置 JAVA_HOME 环境变量 |
| 运行载体 | 可执行 JAR / IntelliJ IDEA | 推荐直接运行 JAR 包 |
| 操作系统 | Windows 10/11、macOS | 跨平台兼容 |
三、核心功能说明
1. 登录验证
- 预设测试账户(按学段分类):
- 小学:
张三1/123、张三2/123、张三3/123 - 初中:
李四1/123、李四2/123、李四3/123 - 高中:
王五1/123、王五2/123、王五3/123
- 小学:
- 输入校验:支持用户名密码格式检测,错误时提示“输入格式错误”或“用户名/密码错误”。
2. 题目生成(按学段区分)
- 小学题:无负数、可整除的加减乘除运算(支持括号,如
(4 + 6) × 3) - 初中题:小学题基础上新增平方(
^2)、根号(√),如5^2 - √16 - 高中题:小学题基础上新增三角函数(
sin/cos/tan),如tan(45) + 8 - 数量限制:每次生成 10-30 道题,超出范围会提示调整。
3. 学段切换
- 操作逻辑:登录后选择“1-切换学段”或“0-保持当前学段”,支持小学/初中/高中三选一。
- 错误处理:输入非“0/1”或非学段名称(如“大学”)时,提示重新输入,直至合法。
4. 重复题目检测(查重)
- 检测范围:自动扫描当前用户文件夹下所有历史
.txt题目文件。 - 匹配规则:排除题号干扰,仅精确对比题目内容(如
2 + 3不会与12 + 3误判重复)。 - 处理方式:生成重复题目时自动重新生成,确保输出题目无重复。
5. 题目保存
- 保存路径:项目根目录自动创建“用户名”文件夹(如
张三1),题目保存在该文件夹内。 - 文件名格式:
yyyy-MM-dd-HH-mm-ss.txt(时间戳命名,避免文件覆盖)。 - 内容格式(带题号+空行分隔):
1. 3 + 7 × 2 2. sin(30) + √9
四、使用步骤
方式1:直接运行 JAR 包(推荐)
- 获取 JAR 包:从项目
out/artifacts/目录复制MyProject.jar到目标文件夹(如D:\MathTool)。 - 打开命令行:
- Windows:
Win + R输入cmd,进入 JAR 所在目录(示例:cd D:\MathTool)。 - 解决中文乱码:执行
chcp 65001(切换 cmd 编码为 UTF-8)。
- Windows:
- 启动系统:执行
java -jar MyProject.jar。 - 操作流程:
① 输入预设账户(如
张三1 123)登录; ② 选择“0-保持学段”或“1-切换学段”; ③ 输入题目数量(10-30),等待生成保存; ④ 生成后可选择“-2 继续出题”“-1 返回主页”“-3 退出系统”。
方式2:IntelliJ IDEA 中运行
- 导入项目:打开 IDEA → 选择“Open” → 导入项目文件夹(
MyProject)。 - 配置 JDK:
File → Project Structure → Project SDK选择 JDK 1.8 及以上。 - 启动主类:找到
src/Main.java→ 右键“Run Main.main()”。 - 后续操作:同“方式1”步骤4。
五、项目目录结构
MyProject/
├─ src/ # 源码目录
│ ├─ account/ # 登录相关类
│ │ ├─ Account.java # 账户实体(用户名/密码/学段)
│ │ ├─ AccountService.java # 登录接口
│ │ └─ SimpleAccountService.java # 登录实现(预设账户)
│ ├─ persistence/ # 持久化相关类
│ │ ├─ FileSaver.java # 题目保存类
│ │ └─ QuestionChecker.java # 查重类
│ ├─ question/ # 题目生成相关类
│ │ ├─ Question.java # 题目实体(内容/答案)
│ │ ├─ QuestionGenerator.java # 题目生成接口
│ │ ├─ PrimaryQuestionGenerator.java # 小学题生成
│ │ ├─ MiddleQuestionGenerator.java # 初中题生成
│ │ └─ HighQuestionGenerator.java # 高中题生成
│ └─ Main.java # 程序入口(主类)
├─ out/ # 编译输出目录
│ └─ artifacts/ # JAR 包输出目录(MyProject.jar)
└─ README.md # 项目说明文档
六、常见问题(FAQ)
Q1:运行 JAR 提示“找不到或无法加载主类”?
A1:重新通过 IDEA 导出 JAR(File → Project Structure → Artifacts → Build),确保导出路径正确。
Q2:输入中文用户名/密码后显示乱码?
A2:在 cmd 中先执行 chcp 65001 切换编码,再运行 JAR。
Q3:账户正确却提示“登录失败”?
A3:确认输入时用 半角空格(英文空格)分隔用户名和密码,避免全角空格(中文空格)。
Q4:生成题目后找不到文件?
A4:文件保存在“项目根目录/用户名/时间戳.txt”,示例:MyProject/张三1/2024-05-20-15-40-00.txt。
七、代码规范说明
- 设计原则:采用“接口先行”模式(如
AccountService、QuestionGenerator),降低模块耦合。 - 方法行数:所有方法行数 ≤ 40 行,通过拆分逻辑(如
generateAndSaveQuestions)提升可读性。 - 容错处理:包含输入校验、异常捕获(如
NumberFormatException)、空值判断,避免程序崩溃。 - 命名规范:遵循 Java 标准(类名 PascalCase、方法名 camelCase),语义化命名(如
switchType、questionLoop)。