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.
hnu202326010223 37089bff50
Update ValidationService.java
3 months ago
.idea 完整代码与相关测试文件 3 months ago
doc 完整代码与相关测试文件 3 months ago
out/artifacts/MathGenerator1_jar 完整代码与相关测试文件 3 months ago
src/main Update ValidationService.java 3 months ago
.gitignore 完整代码与相关测试文件 3 months ago
README.md Markdown文件更新 3 months ago
pom.xml 完整代码与相关测试文件 3 months ago

README.md

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

项目概述

中小学数学卷子自动生成程序是一个基于 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

...

扩展性

程序具有良好的扩展性,可以轻松:

添加新的题目难度级别

支持更多的数学运算符

集成数据库存储

添加图形用户界面

支持自定义题目模板