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.3 KiB
4.3 KiB
中小学数学卷子自动生成程序
项目概述
本项目是一个基于C++开发的中小学数学卷子自动生成程序,面向小学、初中和高中数学老师,能够根据不同学段的难度要求自动生成数学题目并保存为试卷文件。
功能特性
1. 用户登录系统
- 预设小学、初中、高中各3个教师账号
- 用户名密码验证机制
- 根据账户类型自动识别出题难度
2. 智能题目生成
- 小学题目:2-3个操作数,数值范围1-50,支持加减乘除和括号运算
- 初中题目:3-4个操作数,数值范围1-100,支持加减乘除和括号运算,并能计算平方和开根号
- 高中题目:4-5个操作数,数值范围1-100,支持加减乘除和括号运算,并能计算平方和开根号,而且题目中至少有一个sin,cos或tan运算符
3. 题目管理
- 自动避免同一教师生成重复题目
- 按教师账号创建独立文件夹
- 以时间戳命名保存试卷文件(年-月-日-时-分-秒.txt)
4. 灵活的类型切换
- 登录后可切换不同学段出题类型
- 支持命令行快速切换
预设账号信息
| 学段 | 用户名 | 密码 |
|---|---|---|
| 小学 | 张三1 | 123 |
| 小学 | 张三2 | 123 |
| 小学 | 张三3 | 123 |
| 初中 | 李四1 | 123 |
| 初中 | 李四2 | 123 |
| 初中 | 李四3 | 123 |
| 高中 | 王五1 | 123 |
| 高中 | 王五2 | 123 |
| 高中 | 王五3 | 123 |
编译和运行
编译要求
- C++17 或更高版本
- 支持
<filesystem>库的编译器(如 GCC 8+ 或 Clang 7+)
编译方法
使用 Makefile(推荐)
cd src
make
手动编译
cd src
g++ -std=c++17 -Wall -Wextra -O2 -o math_exam_generator main.cpp
运行程序
cd src
./math_exam_generator
使用说明
1. 登录
启动程序后,输入用户名和密码,用空格隔开:
请输入用户名和密码(用空格隔开): 张三1 123
2. 生成试卷
登录成功后,输入要生成的题目数量(10-30题):
准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):20
3. 切换类型
在登录状态下,可以切换出题类型:
切换为初中
4. 退出登录
输入 -1 可退出当前用户,重新登录:
准备生成小学数学题目,请输入生成题目数量(输入-1将退出当前用户,重新登录):-1
文件结构
项目根目录/
├── doc/ # 文档目录
│ ├── README.md # 本项目的详细说明
│ └── README_root.md # 根目录的README
└── src/ # 源代码目录
├── Makefile # 编译配置文件
├── app.cpp # 应用逻辑
├── auth.cpp # 用户认证模块
├── exam.cpp # 试卷生成模块
├── include/ # 头文件目录
├── login.cpp # 登录逻辑
├── main.cpp # 主程序入口
├── math_exam_generator.exe # 编译后的可执行文件
└── utils.cpp # 工具函数
注:程序运行时,会在src目录下自动生成paper文件夹,用于存放用户生成的试卷。
src/
└── paper/
└── [用户名]/ # 自动生成的用户文件夹
└── 年-月-日-时-分-秒.txt # 生成的试卷文件
试卷格式示例
1. 25 + 18 - 7 = ?
2. 42 - 15 + 23 = ?
3. 8 + 17 - 9 + 14 = ?
4. 36 * 4 - 20 = ?
5. 16^2 - 4 = ?
6. 2^3 - 1 = ?
7. sin(30°) = ?
8. cos(60°) = ?
9. tan(45°) +2= ?
技术特点
- 面向对象设计:使用类封装功能模块
- STL容器:使用 vector、map、set 等容器管理数据
- 文件系统操作:使用 C++17 filesystem 库进行文件管理
- 随机数生成:使用现代C++随机数生成器
- 异常处理:对用户输入进行验证和异常处理
开发环境
- 编程语言:C++17
- 编译器:GCC 8+ / Clang 7+ / MSVC 2019+
- 操作系统:Windows / Linux / macOS
版本控制
本项目使用Git进行版本控制:
main分支:稳定版本develop分支:开发版本
作者
软件2301班 - 沈永佳