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.
202326010410 711c5e1c44
cs
5 months ago
..
README.md cs 5 months ago

README.md

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

专为数学教师打造的智能试卷生成解决方案

项目简介

🎯 中小学数学卷子自动生成程序是一个专为中小学数学老师设计的智能试卷生成系统。系统能够根据不同学段(小学、初中、高中)自动生成相应难度的数学题目,并保存为规范的试卷文件。

功能特性

1. 🔐 用户认证系统

  • 预设小学、初中、高中各三个教师账号
  • 支持用户名密码登录验证
  • 登录后显示当前学段类型

2. 🎲 智能题目生成

  • 小学题目:基础四则运算,保证减法不产生负数,随机按规则添加括号
  • 初中题目:包含平方和开方运算
  • 高中题目:包含三角函数运算
  • 操作数范围1-100
  • 操作数数量1-5个
  • 题目数量10-30道

3. 🔍 题目查重机制

  • 自动检测历史生成的题目
  • 确保新生成的题目不与已有题目重复

4. 🔄 学段切换功能

  • 支持登录状态下切换出题学段
  • 实时更新出题难度

5. 💾 文件管理

  • 按用户分目录存储试卷
  • 文件名格式:年-月-日-时-分-秒.txt
  • 题目格式规范,包含题号和空行

文件结构

项目根目录/
├── AccountManager.java
├── BaseQuestionGenerator.java
├── Constants.java
├── FileManager.java
├── HighQuestionGenerator.java
├── MathExamGenerator.java
├── MiddleQuestionGenerator.java
├── PrimaryQuestionGenerator.java
└── output/
    ├── 张三1/
    ├── 李四1/
    └── 王五1/

系统架构

核心类说明

1. MathExamGenerator - 程序入口

主要职责:系统主控制器,协调各个模块的工作流程

核心函数

  • main(String[] args) - 程序入口点
  • run() - 主循环控制
  • processLogin() - 处理用户登录

2. AccountManager - 账号管理

主要职责:管理用户账户信息和身份验证

核心函数

  • authenticate(String username, String password) - 用户认证
  • switchStage(String newStage) - 切换学段
  • getCurrentStage() - 获取当前学段

3. BaseQuestionGenerator - 题目生成基类

主要职责:定义题目生成的通用接口和公共功能

核心函数

  • generateQuestion() - 生成单个题目
  • checkDuplicate(String question) - 检查题目重复
  • generateOperands() - 生成操作数

4. 具体题目生成器

  • PrimaryQuestionGenerator - 小学题目生成
  • MiddleQuestionGenerator - 初中题目生成
  • HighQuestionGenerator - 高中题目生成

5. FileManager - 文件管理

主要职责:处理试卷文件的保存和读取

核心函数

  • saveExamPaper(String username, List<String> questions) - 保存试卷(相对路径,与被执行文件同级,每个账号一个文件夹)
  • loadHistoryQuestions(String username) - 加载历史题目
  • getUserOutputPath(String username) - 获取用户输出路径

🚀 使用说明

运行环境

  • JDK 版本JDK 25 及以上
  • 支持系统WindowsWin10/Win11
  • 编码要求windows需要切换编码

⚙️ 环境配置

Java环境检查

在运行程序前请确保您的系统已正确安装Java环境

# 检查Java运行时环境
java -version

# 检查Java编译器
javac -version

要求确保两个命令都能正确显示版本信息且版本为JDK 25及以上。

字符编码设置(重要)

由于程序包含中文字符,需要正确设置编码:

在Windows PowerShell中

# 设置UTF-8编码
[Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8

# 然后运行程序
cd ..
java -jar school.jar

在CMD命令提示符中

# 设置UTF-8编码
chcp 65001

# 然后运行程序
cd ..
java -jar school.jar

⚠️ 注意:如果未正确设置编码,可能会导致中文字符显示乱码。

操作流程示例

  1. 登录系统

    请输入用户名 密码用空格分隔张三1 123
    当前选择为 小学 出题
    
  2. 生成题目

    准备生成 小学 数学题目,请输入生成题目数量(输入-1将退出当前用户重新登录15
    试卷已保存output/张三1/2025-09-28-14-30-25.txt
    
  3. 切换学段

    准备生成 小学 数学题目,请输入生成题目数量(输入-1将退出当前用户重新登录切换为初中
    当前选择为 初中 出题
    
  4. 退出登录

    准备生成 初中 数学题目,请输入生成题目数量(输入-1将退出当前用户重新登录-1
    

📝 题目示例

小学题目:

第1题: 45 + 23
第2题: ( 67 - 34 ) * 2

初中题目:

第1题: 25 + sqrt( 16 ) * 3
第2题: ( 5^2 ) - sqrt( 9 )

高中题目:

第1题: sin( 30 ) + 45 * 2
第2题: cos( 45 ) * ( 3^2 ) - tan( 30 )

技术特点

  1. 面向对象设计:清晰的类职责分离
  2. 可扩展性:易于添加新的题目类型
  3. 健壮性:完善的异常处理和输入验证
  4. 一致性:统一的代码风格和命名规范
  5. 文档完整:详细的代码注释

开发环境

  • Java 8+
  • 标准Java库无外部依赖

👥 预设账户

账户类型 账户 密码 备注
小学 张三1 123
小学 张三2 123
小学 张三3 123
初中 李四1 123
初中 李四2 123
初中 李四3 123
高中 王五1 123
高中 王五2 123
高中 王五3 123

💡 提示:请使用上表中的账户和密码进行登录测试

⚠️ 注意事项

  1. 首次运行会自动创建output目录
  2. 题目数量必须在10-30之间
  3. 切换学段时需输入完整名称(小学/初中/高中)
  4. 系统会确保同一用户的题目不重复
  5. 如无法生成足够题目,请删除部分历史文件或减少生成数量
  6. 确保您的命令提示符使用UTF-8编码以正确显示中文

开发规范与优化建议

编码标准

  • 架构设计:采用面向对象思想,确保类结构清晰、职责明确
  • 代码规范方法长度控制在40行内保持代码简洁性
  • 命名约定遵循Java驼峰命名规则确保名称表意明确
  • 注释要求:为核心方法和复杂算法提供完整注释说明

异常处理

  • 输入校验:对用户输入数据进行严格的格式和有效性验证
  • 异常管理:合理使用异常处理机制捕获运行时错误
  • 用户提示:设计友好的错误提示信息,提升用户体验

功能拓展方向

  • 难度分级:在各学段内实现题目难度分层设计
  • 题型丰富:拓展几何、代数等多元化题目类型
  • 批量操作:支持试卷批量生成功能
  • 个性化设置:提供试卷模板自定义选项

技术升级路径

  • 数据存储:引入数据库管理系统存储用户和题目数据
  • 界面优化开发Web端界面改善用户交互体验
  • 算法改进:优化题目生成算法,提升题目质量
  • 多语言支持:实现系统界面国际化

🔧 维护说明

如需修改系统参数,请编辑Constants.java文件:

  • 题目数量范围
  • 操作数范围
  • 输出目录等