|
|
4 months ago | |
|---|---|---|
| .. | ||
| README.md | 4 months ago | |
README.md
MathExamSystem 数学考试系统
#项目简介 MathExamSystem 是一个基于Java开发的数学考试题目自动生成系统。该系统根据不同教育阶段(小学、初中、高中)的学生需求,生成相应难度的数学题目,并将试卷保存为文本文件。
#功能特性 ##1. 多层次题目生成 小学题目: 基础四则运算和带括号表达式,避免负数结果 初中题目: 包含平方和开方运算的复合表达式 高中题目: 包含三角函数的复杂数学表达式
##2. 用户管理系统 预设三类用户账户(小学、初中、高中各3个测试账户) 用户认证和权限管理 支持账户类型切换功能
##3. 题目去重机制 自动检测并避免生成重复题目 基于历史记录的题目唯一性保证
##4. 文件管理 自动生成带时间戳的试卷文件 按用户和账户类型分类存储 结构化的文件目录组织
#系统架构
##核心组件
###QuestionGenerator 抽象类 作为所有题目生成器的基类,提供通用的随机数生成和运算符生成功能。 具体题目生成器
###PrimaryQuestionGenerator: 小学题目生成器 支持2-5个操作数的四则运算 50%概率生成带括号表达式 确保运算过程中不出现负数
###JuniorQuestionGenerator: 初中题目生成器 包含平方(²)和开方(√)运算 随机插入特殊运算符 支持复杂表达式组合
###SeniorQuestionGenerator: 高中题目生成器 集成三角函数(sin, cos, tan) 角度制计算支持 高级数学表达式构建
###User 类 用户身份验证和管理 账户类型控制 预设测试用户数据
###FileUtils 工具类 历史题目加载和管理 试卷文件生成和保存 用户目录结构维护
###ExamGenerator 考试生成器 协调各组件完成试卷生成流程 题目数量验证和控制 调用文件保存功能
#使用指南
##登录系统 运行程序后,首先需要登录: 请输入用户名和密码(用空格隔开): 预设账户信息: 小学账户: 张三1/123, 张三2/123, 张三3/123 初中账户: 李四1/123, 李四2/123, 李四3/123 高中账户: 王五1/123, 王五2/123, 王五3/123
##生成试卷 登录成功后,按提示输入题目数量(10-30题): 准备生成[账户类型]数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):
##特殊命令 输入 -1: 退出当前用户,返回登录界面 输入 切换为[小学|初中|高中]: 切换账户类型(无需重新登录)
##文件输出 生成的试卷将保存在以下路径结构中: users/ ├── 小学/ │ ├── 张三1/ │ ├── 张三2/ │ └── 张三3/ ├── 初中/ │ ├── 李四1/ │ ├── 李四2/ │ └── 李四3/ └── 高中/ ├── 王五1/ ├── 王五2/ └── 王五3/
每个试卷文件以时间戳命名,例如:2023-12-01-14-30-25.txt
##编译和运行 程序可在IDEA里直接编译运行 若使用cmd和powershell运行,先在命令行输入 chcp 65001 [Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 并执行java -jar MathExamSystem.jar
#代码特点
##设计模式应用 抽象工厂模式: 通过 QuestionGenerator 抽象类和具体实现类体现 单例模式: User 类中的预设账户映射采用静态初始化 工具类模式: FileUtils 提供静态方法集合
##安全特性 输入验证和边界检查 异常处理机制 用户认证保护
##扩展性设计 模块化结构便于新增题目类型 清晰的接口定义支持功能扩展 配置化的用户管理
##注意事项 程序需要在具有文件读写权限的环境中运行 题目数量限制在10-30题之间 生成的试卷文件为纯文本格式 程序默认会在当前目录创建 users 文件夹用于存储试卷