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.
aksa92 284bc255cd
tese1
4 months ago
..
README.md tese1 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 平台(使用 _mkdirGetLocalTime
  • 查重基于字符串匹配,不识别数学等价表达式(如 1+22+1 视为不同)
  • 输入命令需完全匹配(如 切换为初中,不能多空格)

八、未来优化建议

  • 支持跨平台Linux/macOS
  • 增加表达式标准化,提升查重准确性
  • 添加图形界面GUI
  • 支持导出为 PDF 或 Word 格式

九、致谢

感谢软件工程导论课程提供本次实践机会,让我深入理解了面向对象设计、代码规范与功能完整性的重要性。