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.
|
|
5 months ago | |
|---|---|---|
| .. | ||
| README.md | 5 months ago | |
README.md
中小学数学卷子自动生成系统文档
注意事项(已经经过终端测试)
为了方便助教检查,将此注意事项放在最前面:
- 有关功能中的查重:
实现了双重查重机制:
内存级查重 - 当前会话中生成的题目查重 文件级查重 - 历史生成的所有题目查重 主要代码在 AbstractQuestionGenerator 类和FileServiceImpl中:
- 测试时的java-version; java version "23" 2024-09-17 Java(TM) SE Runtime Environment (build 23+37-2369) Java HotSpot(TM) 64-Bit Server VM (build 23+37-2369, mixed mode, sharing)
- 使用可执行文件:在cmd中运行,如果是在登录时一直出现用户名密码不匹配,可输入chcp 65001(成功运行);
- 在powershell中运行,# 设置 .NET 控制台输入/输出编码为 UTF-8; [Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
- 运行指令 java -jar 可执行文件
- 生成的文件(存放的题目)会保存在可执行文件存放的文件夹中的exam_papers文件夹中(若没有会创建该文件夹);
- 由于需求文件中有些提示词的连接并不是很流畅,我是尽可能按照提示词来写的;且需求文档的描述并不是特别清晰,在此提出是为了表明某些情况并不是提示信息错误,而是为了合理可能稍作改动;
- 例如只有输入 切换成XX 但是XX并不是正确选项时才会给出“请输入小学、初中和高中三个选项中的一个”,而输入的文字信息没有关键词 切换为,或者输入的数字范围不对,则会给出其他的提示词,
项目概述
这是一个中小学数学卷子自动生成系统,支持小学、初中和高中三个难度级别的数学题目生成。系统具有用户认证、题目生成、文件保存和查重等功能。
系统架构
核心类结构
src/
├── Main.java # 程序入口和主控制逻辑
├── 业务接口层/
│ ├── IAuthService.java # 用户认证服务接口
│ ├── IFileService.java # 文件服务接口
│ ├── IQuestionFactory.java # 题目工厂接口
│ └── IQuestionService.java # 题目服务接口
├── 业务实现层/
│ ├── AuthServiceImpl.java # 认证服务实现
│ ├── FileServiceImpl.java # 文件服务实现
│ ├── QuestionServiceImpl.java # 题目服务实现
│ └── QuestionFactory.java # 题目工厂实现
├── 抽象基类/
│ └── AbstractQuestionGenerator.java # 题目生成器抽象基类
├── 实体类/
│ ├── User.java # 用户实体
│ └── Question.java # 题目实体
├── 工具类/
│ ├── DifficultyLevel.java # 难度等级枚举
│ └── Validator.java # 输入验证工具
└── 配置文件/
├── .gitignore
├── codeStyleConfig.xml
├── misc.xml
├── modules.xml
└── workspace.xml
核心功能模块说明
1. 用户认证模块 (IAuthService)
功能:管理用户登录认证
实现类:AuthServiceImpl
- 预置了三个难度等级的用户账户
- 小学:张三1/张三2/张三3 (密码:123)
- 初中:李四1/李四2/李四3 (密码:123)
- 高中:王五1/王五2/王五3 (密码:123)
2. 题目生成模块 (IQuestionFactory)
核心类:
AbstractQuestionGenerator:题目生成器抽象基类QuestionFactory:具体题目生成实现
题目生成逻辑:
- 小学:基础四则运算,支持括号
- 初中:增加平方和开方运算
- 高中:增加三角函数运算
3. 文件服务模块 (IFileService)
实现类:FileServiceImpl
- 按用户分目录保存题目文件
- 支持题目内容查重
- 文件路径:
./exam_papers/用户名/时间戳.txt
4. 题目服务模块 (IQuestionService)
实现类:QuestionServiceImpl
- 协调题目生成和文件保存
- 提供完整的题目生成流程
使用指南
启动程序
在idea中运行Main即可,在终端运行可执行文件按照注意事项中提到的方法即可;
操作流程
- 登录:输入用户名和密码(用空格隔开)
- 生成题目:输入题目数量(10-30)
- 切换难度:输入"切换为小学/初中/高中"
- 退出用户:输入"-1"
示例会话
=== 中小学数学卷子自动生成程序 ===
请输入用户名和密码(用空格隔开): 张三1 123
当前选择为小学出题
准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录)
20
题目已生成并保存到: ./exam_papers/张三1/2024-01-01-10-30-45.txt
生成完成!可以继续生成题目或切换难度
切换为初中
准备生成初中数学题目,请输入生成题目数量
技术特点
1. 设计模式应用
- 工厂模式:题目生成器工厂
- 策略模式:不同难度级别的题目生成策略
- 依赖注入:通过构造函数注入依赖
2. 查重机制
- 内存级查重(当前会话)
- 文件级查重(历史题目)
- 避免生成重复题目
3. 异常处理
- 文件操作异常处理
- 输入验证机制
- 备用题目生成策略
配置说明
项目配置
- JDK版本:22
- 代码风格:Google Style
- 输出目录:
./exam_papers/
文件结构配置
<!-- misc.xml -->
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_22" />
</project>