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.
hnu202326010426 5d96af1a65
readme.md update
4 months ago
..
readme.md readme.md update 4 months ago

readme.md

中小学数学卷子自动生成程序

一、项目简介

本程序用于自动生成小学、初中、高中三个难度级别的数学题目,支持用户登录、难度切换、题目去重保存等功能。采用面向对象设计(依赖注入、接口化思想),降低耦合度,便于扩展,已在 Linux 和 Windows 平台验证可正常运行。


二、功能特点

  • 用户认证:固定账号密码登录(小学/初中/高中各3个测试账号
  • 难度切换:支持“小学→初中→高中”相互切换
  • 题目生成按10-30道的数量生成对应难度题目通过历史题目比对实现去重
  • 文件保存:题目保存到用户专属文件夹,文件名带时间戳(格式:yyyy-MM-dd-HH-mm-ss.txt

三、目录结构

com.mathgen/
├── Main.java                 # 程序入口(依赖接口,通过构造注入解耦)
├── entity/                   # 实体类(封装数据)
│   ├── DifficultyLevel.java  # 难度等级枚举(小学/初中/高中)
│   ├── Question.java         # 题目实体(题号、内容、难度)
│   └── User.java             # 用户实体(用户名、密码、当前难度)
├── service/                  # 接口定义(抽象规范)
│   ├── IFileManager.java     # 文件管理接口(保存/读取题目)
│   ├── IQuestionGenerator.java # 题目生成接口(批量/单个题目生成)
│   └── IUserManager.java     # 用户管理接口(登录认证)
└── impl/                     # 接口实现(具体业务逻辑)
    ├── ConcreteFileManager.java  # 文件操作实现
    ├── ConcreteQuestionGenerator.java # 题目生成实现(分难度逻辑)
    └── ConcreteUserManager.java  # 用户认证实现(初始化测试账号)

四、运行环境

  • JDK 版本JDK 21 及以上(测试用 JDK 21.0.5、JDK 23.0.1
  • 支持系统LinuxUbuntu 等、WindowsWin10/Win11
  • 编码要求Java 源文件编码为 UTF-8避免中文乱码windows需要切换编码

五、编译、打包、运行jar

linux

  1. 进入项目根目录

    cd 路径
    
  2. 编译所有 Java 文件到 out 目录

    javac -encoding UTF-8 -d out src/com/mathgen/Main.java src/com/mathgen/entity/*.java src/com/mathgen/service/*.java src/com/mathgen/impl/*.java
    
  3. 此时,可以直接运行程序

    java -cp out com.mathgen.Main
    

打包成可执行jar文件

  1. 创建 Manifest.mf 文件

    echo "Main-Class: com.mathgen.Main" > Manifest.mf
    
  2. 打包生成可执行 JAR 文件

    jar cfm MathGen.jar Manifest.mf -C out .
    

直接运行jar

  1. 运行 JAR 程序
    java -jar MathGen.jar
    

Windows

Windows 默认控制台编码为 GBK需切换为 UTF-8 避免中文登录失败: (其余指令同linux)

  1. 切换控制台编码为 UTF-8

    chcp 65001
    
  2. 进入项目根目录

    cd 路径
    
  3. 运行 JAR 程序

    java -jar MathGen.jar
    

六、使用说明

  1. 登录:运行程序后,输入“用户名 密码”(空格分隔),如 张三1 123;输入 exit 直接退出程序。
  2. 生成题目:登录成功后,输入 10-30 的数字(如 15),生成对应数量题目并自动保存。
  3. 切换难度:输入“切换为 难度”(如 切换为 初中),支持小学/初中/高中切换。
  4. 退出当前用户:输入 -1 退出当前登录,返回登录界面。

七、测试账号

用户名 密码 默认难度
张三1 123 小学
张三2 123 小学
张三3 123 小学
李四1 123 初中
李四2 123 初中
李四3 123 初中
王五1 123 高中
王五2 123 高中
王五3 123 高中

八、题目存储路径

生成的题目保存在项目根目录下的 exam_papers 文件夹,按用户名分目录存储:

  • Linux 路径/文件路径/exam_papers/用户名/yyyy-MM-dd-HH-mm-ss.txt
  • Windows 路径\文件路径\exam_papers\用户名\yyyy-MM-dd-HH-mm-ss.txt

九、常见问题解决

  1. Windows 中文用户名登录失败:未切换编码,执行 chcp 65001 后重新运行。
  2. Linux 打包提示“jar 不是命令”JDK 环境变量未配置,需将 JDK 的 bin 目录加入 PATH(如 export PATH=$PATH:/usr/lib/jvm/jdk-21/bin)。
  3. 题目保存失败检查项目目录是否有写入权限Linux 可执行 chmod 755 ~/1 赋予权限。