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
中小学数学卷子自动生成程序
一、项目简介
本程序用于自动生成小学、初中、高中三个难度级别的数学题目,支持用户登录、难度切换、题目去重保存等功能。采用面向对象设计(依赖注入、接口化思想),降低耦合度,便于扩展,已在 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)
- 支持系统:Linux(Ubuntu 等)、Windows(Win10/Win11)
- 编码要求:Java 源文件编码为 UTF-8(避免中文乱码),windows需要切换编码
五、编译、打包、运行jar
linux
-
进入项目根目录
cd 路径 -
编译所有 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 -
此时,可以直接运行程序
java -cp out com.mathgen.Main
打包成可执行jar文件
-
创建 Manifest.mf 文件
echo "Main-Class: com.mathgen.Main" > Manifest.mf -
打包生成可执行 JAR 文件
jar cfm MathGen.jar Manifest.mf -C out .
直接运行jar
- 运行 JAR 程序
java -jar MathGen.jar
Windows
Windows 默认控制台编码为 GBK,需切换为 UTF-8 避免中文登录失败: (其余指令同linux)
-
切换控制台编码为 UTF-8
chcp 65001 -
进入项目根目录
cd 路径 -
运行 JAR 程序
java -jar MathGen.jar
六、使用说明
- 登录:运行程序后,输入“用户名 密码”(空格分隔),如
张三1 123;输入exit直接退出程序。 - 生成题目:登录成功后,输入 10-30 的数字(如
15),生成对应数量题目并自动保存。 - 切换难度:输入“切换为 难度”(如
切换为 初中),支持小学/初中/高中切换。 - 退出当前用户:输入
-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
九、常见问题解决
- Windows 中文用户名登录失败:未切换编码,执行
chcp 65001后重新运行。 - Linux 打包提示“jar 不是命令”:JDK 环境变量未配置,需将 JDK 的
bin目录加入PATH(如export PATH=$PATH:/usr/lib/jvm/jdk-21/bin)。 - 题目保存失败:检查项目目录是否有写入权限,Linux 可执行
chmod 755 ~/1赋予权限。