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
ExamGenerator 项目
本项目是一个 数学试题自动生成系统,支持 小学、初中、高中 三个年级的数学题目。 系统采用 抽象类 + 子类继承 的设计模式,分别实现不同年级的出题逻辑,并支持用户登录、题目查重和自动保存功能。
📂 项目结构
ExamGenerator/
├── main.py # 主入口程序
├── exam_generator.py # 考试生成器核心逻辑(含查重)
├── account_manager.py # 用户账户管理模块
├── history_manager.py # 历史管理模块(负责保存/读取历史题目)
├── generators/ # 出题生成器目录
│ ├── base_generator.py # 抽象类:出题生成器基类
│ ├── primary_generator.py # 小学出题生成器
│ ├── junior_generator.py # 初中出题生成器
│ └── senior_generator.py # 高中出题生成器
└── exams/ # 保存生成的试卷目录
功能介绍
用户登录
- 支持小学、初中、高中账号登录
- 登录后自动进入对应出题模式
出题生成
- 小学:四则运算
- 初中:四则运算 + 平方/开方
- 高中:四则运算 + 三角函数
历史查重
HistoryManager只负责保存和读取历史题目- 查重逻辑已集成在
ExamGenerator._generate_and_save_questions,生成题目时会自动避免重复
题目保存
- 生成的题目自动保存为
.txt文件 - 文件名格式:
YYYY-MM-DD-HH-MM-SS.txt
使用方法
运行项目(开发环境)
cd ExamGenerator
python main.py
登录系统
- 输入用户名和密码(例如:
张三1 123) - 系统会识别年级,并提示你输入要生成的题目数量
生成题目
- 输入
10-30之间的数字,生成对应数量的数学题 - 输入
-1可退出当前用户 - 输入
切换为 小学/初中/高中可切换出题难度
技术亮点
- 抽象类设计:使用
BaseQuestionGenerator定义统一接口,小学/初中/高中继承实现 - 模块化结构:按功能拆分文件,便于维护和扩展
- 查重机制优化:查重逻辑整合进
ExamGenerator,HistoryManager仅负责保存/读取 - 可扩展性强:后续可新增 “大学” 出题生成器,只需继承抽象类即可
⚠️ 注意事项
- 默认账号信息存放在
exam_generator.py中 - 生成的题目文件会自动存放在
exams/用户名/目录下 - Python 版本需 >= 3.8
发布与运行(Release 版本)
Windows 平台
-
打包:
pyinstaller --onefile main.py生成的
main.exe位于dist/目录。 -
运行方式:
main.exe
Linux 平台
-
打包:
pyinstaller --onefile main.py生成的可执行文件在
dist/main。 -
运行方式:
./main- 确保执行权限:
chmod +x main - 注意 Linux 路径分隔符为
/
- 确保执行权限:
参数设置
发布版本运行时,需要在交互过程中输入以下参数:
-
用户名
- 例如:
张三1 - 用于识别所属年级(小学/初中/高中)
- 例如:
-
密码
- 默认均为
123(可在exam_generator.py中修改)
- 默认均为
-
题目数量
- 输入范围:
10 - 30 - 系统会生成对应数量的题目
- 输入
-1退出当前用户
- 输入范围:
-
切换难度
- 输入
切换为 小学/切换为 初中/切换为 高中 - 可在运行中调整题目难度
- 输入
开发环境 vs 发布环境
- 开发环境:本地运行,需 Python >= 3.8
- 发布环境:打包成可执行文件(Windows 为
.exe,Linux 为二进制文件),用户无需安装 Python - 跨平台差异:注意路径分隔符和执行权限的不同