|
|
|
|
@ -0,0 +1,294 @@
|
|
|
|
|
中小学数学卷子自动生成程序
|
|
|
|
|
|
|
|
|
|
项目概述
|
|
|
|
|
|
|
|
|
|
中小学数学卷子自动生成程序是一个基于 Java 开发的命令行应用程序,旨在帮助小学、初中和高中数学老师快速生成符合教学要求的数学题目。程序支持不同难度级别的题目生成、用户认证、题目查重和文件保存等功能。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
核心功能
|
|
|
|
|
|
|
|
|
|
🔐 用户认证系统
|
|
|
|
|
|
|
|
|
|
预设账户:系统内置小学、初中、高中各三个教师账户
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
登录验证:通过用户名和密码进行身份验证
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
权限分级:根据账户类型自动确定题目难度级别
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
📚 题目生成引擎
|
|
|
|
|
|
|
|
|
|
小学题目
|
|
|
|
|
|
|
|
|
|
运算符:加(+)、减(-)、乘(\*)、除(/)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
特殊要求:可能包含括号
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
操作数:2-5个操作数,取值范围1-100
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
初中题目
|
|
|
|
|
|
|
|
|
|
运算符:包含平方(²)、开根号(√)等高级运算符
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
特殊要求:至少包含一个平方或开根号运算符,且必须通过四则运算连接其他操作数
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
操作数:3-5个操作数,取值范围1-100
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
高中题目
|
|
|
|
|
|
|
|
|
|
运算符:包含三角函数(sin、cos、tan)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
特殊要求:至少包含一个三角函数和一个平方/开根号运算符
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
操作数:2-5个操作数,取值范围1-100
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
🔄 交互功能
|
|
|
|
|
|
|
|
|
|
难度切换:登录后可通过命令切换题目难度
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
题目数量控制:支持生成10-30道题目
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
重复检测:避免生成与历史题目重复的内容
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
灵活退出:支持退出当前用户重新登录
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
💾 文件管理
|
|
|
|
|
|
|
|
|
|
按用户分文件夹:每个用户的题目单独存放
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
时间戳命名:文件格式为"年-月-日-时-分-秒.txt"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
规范格式:每道题目有序号,题目间空一行
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
技术架构
|
|
|
|
|
|
|
|
|
|
项目结构
|
|
|
|
|
|
|
|
|
|
text
|
|
|
|
|
|
|
|
|
|
MathGenerator/
|
|
|
|
|
|
|
|
|
|
└── src/
|
|
|
|
|
|
|
|
|
|
└── main/
|
|
|
|
|
|
|
|
|
|
└── java/
|
|
|
|
|
|
|
|
|
|
├── org.example/
|
|
|
|
|
|
|
|
|
|
│ └── Main.java # 主程序入口
|
|
|
|
|
|
|
|
|
|
├── entity/
|
|
|
|
|
|
|
|
|
|
│ ├── User.java # 用户实体类
|
|
|
|
|
|
|
|
|
|
│ └── Question.java # 题目实体类
|
|
|
|
|
|
|
|
|
|
├── service/
|
|
|
|
|
|
|
|
|
|
│ ├── UserService.java # 用户认证服务
|
|
|
|
|
|
|
|
|
|
│ ├── QuestionService.java # 题目生成服务
|
|
|
|
|
|
|
|
|
|
│ ├── FileService.java # 文件操作服务
|
|
|
|
|
|
|
|
|
|
│ └── ValidationService.java # 输入验证服务
|
|
|
|
|
|
|
|
|
|
├── factory/
|
|
|
|
|
|
|
|
|
|
│ ├── QuestionFactory.java # 题目生成器工厂
|
|
|
|
|
|
|
|
|
|
│ └── QuestionGenerator.java # 题目生成器接口
|
|
|
|
|
|
|
|
|
|
└── generator/
|
|
|
|
|
|
|
|
|
|
├── PrimaryQuestionGenerator.java # 小学题目生成器
|
|
|
|
|
|
|
|
|
|
├── JuniorQuestionGenerator.java # 初中题目生成器
|
|
|
|
|
|
|
|
|
|
└── SeniorQuestionGenerator.java # 高中题目生成器
|
|
|
|
|
|
|
|
|
|
设计模式
|
|
|
|
|
|
|
|
|
|
工厂模式:通过 QuestionFactory 创建不同难度的题目生成器
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
策略模式:QuestionGenerator 接口支持多难度题目生成策略
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
分层架构:清晰的 entity-service-factory 分层结构
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
使用指南
|
|
|
|
|
|
|
|
|
|
启动程序
|
|
|
|
|
|
|
|
|
|
bash
|
|
|
|
|
|
|
|
|
|
mvn clean package
|
|
|
|
|
|
|
|
|
|
java -jar target/math-test-generator.jar
|
|
|
|
|
|
|
|
|
|
操作流程
|
|
|
|
|
|
|
|
|
|
登录系统
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
text
|
|
|
|
|
|
|
|
|
|
请输入用户名和密码(用空格隔开): 张三1 123
|
|
|
|
|
|
|
|
|
|
当前选择为小学出题
|
|
|
|
|
|
|
|
|
|
生成题目
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
text
|
|
|
|
|
|
|
|
|
|
准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录): 15
|
|
|
|
|
|
|
|
|
|
题目已生成并保存到: exams/张三1/2025-01-20-14-30-25.txt
|
|
|
|
|
|
|
|
|
|
切换难度
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
text
|
|
|
|
|
|
|
|
|
|
切换为初中
|
|
|
|
|
|
|
|
|
|
准备生成初中数学题目,请输入生成题目数量
|
|
|
|
|
|
|
|
|
|
退出登录
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
text
|
|
|
|
|
|
|
|
|
|
输入-1将退出当前用户,重新登录
|
|
|
|
|
|
|
|
|
|
预设账户
|
|
|
|
|
|
|
|
|
|
类型 用户名 密码
|
|
|
|
|
|
|
|
|
|
小学 张三1, 张三2, 张三3 123
|
|
|
|
|
|
|
|
|
|
初中 李四1, 李四2, 李四3 123
|
|
|
|
|
|
|
|
|
|
高中 王五1, 王五2, 王五3 123
|
|
|
|
|
|
|
|
|
|
代码规范
|
|
|
|
|
|
|
|
|
|
项目严格遵循 Google Java 编码规范:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
使用 2 空格缩进
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
完整的 Javadoc 注释
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
清晰的包和类结构
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
方法长度控制在 40 行以内
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
有意义的命名约定
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
输出示例
|
|
|
|
|
|
|
|
|
|
生成的题目文件格式:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
text
|
|
|
|
|
|
|
|
|
|
1\. 25 + 47 - 13
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2\. (18 \* 3) / 6 + 29
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3\. 45 - 17 + 32 \* 2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
...
|
|
|
|
|
|
|
|
|
|
扩展性
|
|
|
|
|
|
|
|
|
|
程序具有良好的扩展性,可以轻松:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
添加新的题目难度级别
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
支持更多的数学运算符
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
集成数据库存储
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
添加图形用户界面
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
支持自定义题目模板
|
|
|
|
|
|