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.
fangqiongMa 30b592507c
v1.0
4 months ago
..
README.md v1.0 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 包(推荐)

  1. 获取 JAR 包:从项目 out/artifacts/ 目录复制 MyProject.jar 到目标文件夹(如 D:\MathTool)。
  2. 打开命令行
    • WindowsWin + R 输入 cmd,进入 JAR 所在目录(示例:cd D:\MathTool)。
    • 解决中文乱码:执行 chcp 65001(切换 cmd 编码为 UTF-8
  3. 启动系统:执行 java -jar MyProject.jar
  4. 操作流程 ① 输入预设账户(如 张三1 123)登录; ② 选择“0-保持学段”或“1-切换学段”; ③ 输入题目数量10-30等待生成保存 ④ 生成后可选择“-2 继续出题”“-1 返回主页”“-3 退出系统”。

方式2IntelliJ IDEA 中运行

  1. 导入项目:打开 IDEA → 选择“Open” → 导入项目文件夹(MyProject)。
  2. 配置 JDKFile → Project Structure → Project SDK 选择 JDK 1.8 及以上。
  3. 启动主类:找到 src/Main.java → 右键“Run Main.main()”。
  4. 后续操作同“方式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 导出 JARFile → Project Structure → Artifacts → Build),确保导出路径正确。

Q2输入中文用户名/密码后显示乱码?

A2在 cmd 中先执行 chcp 65001 切换编码,再运行 JAR。

Q3账户正确却提示“登录失败”

A3确认输入时用 半角空格(英文空格)分隔用户名和密码,避免全角空格(中文空格)。

Q4生成题目后找不到文件

A4文件保存在“项目根目录/用户名/时间戳.txt”示例MyProject/张三1/2024-05-20-15-40-00.txt

七、代码规范说明

  1. 设计原则:采用“接口先行”模式(如 AccountServiceQuestionGenerator),降低模块耦合。
  2. 方法行数:所有方法行数 ≤ 40 行,通过拆分逻辑(如 generateAndSaveQuestions)提升可读性。
  3. 容错处理:包含输入校验、异常捕获(如 NumberFormatException)、空值判断,避免程序崩溃。
  4. 命名规范:遵循 Java 标准(类名 PascalCase、方法名 camelCase语义化命名switchTypequestionLoop)。