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.
|
|
4 months ago | |
|---|---|---|
| .. | ||
| README.md | 4 months ago | |
README.md
中小学数学卷子自动生成程序
个人项目:软件工程导论
学生姓名:周竞由
学号:202326010122
班级:软件2301班
提交日期:2025年09月28日
一、项目简介
本程序是一个面向中小学数学教师的数学题目自动生成系统,支持根据用户身份自动匹配出题难度,并生成不重复的练习卷。程序通过命令行交互,具备登录、切换难度、查重、文件命名与保存等完整功能。
二、功能特性
用户登录系统
- 预设小学、初中、高中各3个账号(共9个)
- 登录成功后自动识别出题类型
智能出题引擎
- 小学:支持
+ - * /和括号运算,操作数 1~100 - 初中:包含平方(
^2)或开根号(sqrt(...)) - 高中:包含三角函数(
sin,cos,tan)
防重复机制
- 自动扫描用户历史文件夹中的所有题目
- 新生成题目与历史题目不重复(基于字符串匹配)
灵活切换难度
- 登录后可输入
切换为小学/切换为初中/切换为高中切换出题类型 - 实时生效,无需重新登录
规范文件保存
- 每个用户独立文件夹(如
张三1/) - 文件名格式:
年-月-日-时-分-秒.txt - 每道题带题号,题目之间空一行
安全退出与重新登录
- 输入
-1可退出当前账号,重新登录
三、使用说明
1. 启动程序
运行可执行文件,进入命令行界面。
2. 登录
输入用户名和密码,用空格隔开: 请输入用户名和密码(空格隔开):张三1 123
text 编辑
登录成功后显示: 当前选择为 小学出题
text 编辑
3. 生成题目
程序提示: 准备生成 小学数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):
text 编辑
输入 10~30 之间的数字,例如: 10
text 编辑
程序将生成10道不重复的题目,并保存至 张三1/2025-09-28-20-00-00.txt。
4. 切换出题类型
在登录状态下,输入: 切换为初中
text 编辑 或 切换为高中
text 编辑
程序将切换难度并重新提示出题数量。
5. 重新登录
输入 -1 可退出当前账号,返回登录界面。
四、账号列表
| 账户类型 | 账户 | 密码 |
|---|---|---|
| 小学 | 张三1 | 123 |
| 张三2 | 123 | |
| 张三3 | 123 | |
| 初中 | 李四1 | 123 |
| 李四2 | 123 | |
| 李四3 | 123 | |
| 高中 | 王五1 | 123 |
| 王五2 | 123 | |
| 王五3 | 123 |
五、技术实现
- 语言:C++
- 核心设计:抽象基类
ProblemGenerator+ 多态实现 - 查重机制:
ProblemChecker类扫描用户目录,使用set<string>去重 - 文件操作:基于 Windows API(
_mkdir,FindFirstFile) - 时间命名:
GetLocalTime获取当前时间,生成唯一文件名 - 编码兼容:支持 GBK 中文输入(
chcp 936)
六、目录结构
X班_姓名_个人项目/ ├── src/ │ └── main.cpp # 项目源码 ├── doc/ │ └── README.md # 本说明文件 └── README.md # (可选)根目录说明
text 编辑
注:实际提交时请按头歌平台要求组织目录。
七、已知限制
- 仅支持 Windows 平台(使用
_mkdir和GetLocalTime) - 查重基于字符串匹配,不识别数学等价表达式(如
1+2与2+1视为不同) - 输入命令需完全匹配(如
切换为初中,不能多空格)
八、未来优化建议
- 支持跨平台(Linux/macOS)
- 增加表达式标准化,提升查重准确性
- 添加图形界面(GUI)
- 支持导出为 PDF 或 Word 格式
九、致谢
感谢软件工程导论课程提供本次实践机会,让我深入理解了面向对象设计、代码规范与功能完整性的重要性。