Compare commits

...

5 Commits
zyh ... main

@ -1,2 +1,258 @@
# eaxmSystem
# 数学学习考试系统
## 项目简介
一个基于C++和Qt框架开发的跨平台数学学习考试系统支持小学、初中、高中三个学段的数学题目生成、在线答题、成绩统计等功能。系统采用前后端分离架构。
## 功能特性
### 🔐 用户管理
- 用户注册(邮箱验证码验证)
- 用户登录/登出
- 密码修改
- 个人信息查看
### 📚 题目生成
- **小学**:基础四则运算,确保结果非负
- **初中**:包含平方、开根号运算
- **高中**:包含三角函数运算
- 智能查重,避免重复题目
- 历史题目保存和加载
### 🎯 考试功能
- 自定义题目数量5-50题
- 实时答题进度显示
- 上一题/下一题导航
- 自动批改和成绩统计
- 错题回顾
### 💾 数据管理
- 用户数据持久化存储
- 题目历史记录保存
- 自动备份和恢复
## 技术栈
### 前端
- **框架**Qt 5/6
- **语言**C++
- **UI组件**QWidget、QStackedWidget、QPushButton等
### 后端
- **核心架构**:模块化设计,工厂模式
- **数学计算**:表达式解析和求值
- **文件管理**CSV格式用户数据TXT格式题目存储
- **邮件服务**libcurl + SMTP协议
### 开发工具
- **编译器**支持C++11的编译器gcc/clang/MSVC
- **构建工具**CMake
- **版本控制**Git
## 项目结构
```
MathExamSystem/
├── frontend/ # 前端界面
│ ├── base_widget.h/.cc # 基础窗口组件
│ ├── login_widget.h/.cc # 登录注册界面
│ ├── selection_widget.h/.cc # 难度选择界面
│ ├── question_widget.h/.cc # 答题界面
│ ├── result_widget.h/.cc # 成绩显示界面
│ ├── main_window.h/.cc # 主窗口管理
│ └── change_password_dialog.h/.cc # 修改密码对话框
├── backend/ # 后端核心
│ ├── exam_system/ # 考试系统核心
│ │ ├── exam_system.h/.cc # 系统控制层
│ │ ├── problem_generator.h/.cc # 题目生成器
│ │ ├── duplicate_checker.h/.cc # 重复检查器
│ │ └── input_validator.h/.cc # 输入验证器
│ ├── file_manager/ # 文件管理
│ │ └── file_manager.h/.cc
│ └── logger/ # 日志系统
│ └── logger.h/.cc
├── shared/ # 共享接口
│ └── backend_interface.h/.cc # 前后端通信接口
├── main.cc # 程序入口
└── CMakeLists.txt # 构建配置
```
## 环境要求
### 系统要求
- **Windows**: Windows 10/11, Visual Studio 2019+
- **Linux**: Ubuntu 18.04+, CentOS 7+
- **macOS**: macOS 10.14+
### 依赖库
```bash
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install build-essential cmake qt6-base-dev libcurl4-openssl-dev
# CentOS/RHEL
sudo yum groupinstall "Development Tools"
sudo yum install cmake qt6-qtbase-devel libcurl-devel
# macOS (Homebrew)
brew install cmake qt6 curl
```
## 编译和运行
### 1. 克隆项目
```bash
git clone <repository-url>
cd MathExamSystem
```
### 2. 创建构建目录
```bash
mkdir build
cd build
```
### 3. 配置项目
```bash
cmake ..
```
### 4. 编译项目
```bash
# Linux/macOS
make -j4
# Windows (Visual Studio)
cmake --build . --config Release
```
### 5. 运行程序
```bash
# Linux/macOS
./MathExamSystem
# Windows
./Release/MathExamSystem.exe
```
## 使用指南
### 首次使用
1. **启动程序**:运行编译后的可执行文件
2. **注册账号**
- 点击"注册新账号"
- 输入邮箱地址,点击"发送验证码"
- 检查邮箱获取验证码并填写
- 设置用户名和密码6-10位包含大小写字母和数字
- 点击"注册"
3. **登录系统**
- 输入用户名和密码
- 点击"登录"
### 开始学习
1. **选择难度**
- 小学:基础四则运算
- 初中:包含平方、开根号
- 高中:包含三角函数
2. **设置题目数量**通过数字选择框设置5-50题
3. **开始测试**:点击"开始测试"进入答题界面
### 答题流程
1. **阅读题目**:仔细阅读题目内容
2. **选择答案**从A、B、C、D四个选项中选择
3. **导航题目**
- 使用"上一题"、"下一题"按钮切换
- 最后一题显示"提交试卷"按钮
4. **提交答案**:完成所有题目后提交
### 查看结果
- 系统自动批改并显示得分
- 查看正确题目数量和总题目数
- 可选择"继续做题"或"退出"
## 配置说明
### 邮件服务配置
如需使用邮箱验证功能,请编辑 `backend_interface.cc` 中的邮箱配置:
```cpp
email_config_.smtp_server = "smtp.163.com";
email_config_.smtp_port = 587;
email_config_.username = "your_email@163.com";
email_config_.password = "your_authorization_code";
```
**注意**
- 使用163邮箱需要开启SMTP服务并获取授权码
- 授权码不是登录密码
- 其他邮箱服务商配置类似
### 数据文件说明
- `users.csv`:用户数据文件(自动生成)
- `用户名/` 目录:用户题目历史记录
- 日志输出到控制台
## 常见问题
### Q: 编译时找不到Qt库
A: 确保已安装Qt开发包并设置正确的CMAKE_PREFIX_PATH
```bash
cmake -DCMAKE_PREFIX_PATH=/path/to/qt ..
```
### Q: 邮件发送失败
A:
1. 检查邮箱配置是否正确
2. 确认网络连接正常
3. 检查防火墙设置
### Q: 题目生成失败
A:
1. 检查是否有写入权限
2. 确认磁盘空间充足
### Q: 程序崩溃
A:
1. 检查依赖库版本兼容性
2. 查看控制台输出的错误信息
## 开发指南
### 添加新的题目类型
1. 在 `problem_generator.h` 中定义新的生成器类
2. 实现 `GenerateProblem()` 方法
3. 在工厂类中注册新的生成器
### 扩展用户界面
1. 继承 `BaseWidget` 创建新的界面组件
2. 在 `main_window.h` 中声明新的界面
3. 在 `main_window.cc` 中管理界面切换
## 类说明请看doc/ExamSystem.md

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save