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.
|
|
3 months ago | |
|---|---|---|
| .vscode | 3 months ago | |
| build/Desktop_Qt_6_5_3_MinGW_64_bit-Debug | 3 months ago | |
| debug | 3 months ago | |
| doc | 3 months ago | |
| release | 3 months ago | |
| src | 3 months ago | |
| .qmake.stash | 3 months ago | |
| C++.gitignore | 3 months ago | |
| Makefile | 3 months ago | |
| Makefile.Debug | 3 months ago | |
| Makefile.Release | 3 months ago | |
| README.md | 3 months ago | |
| examSystem.pro | 3 months ago | |
| examSystem.pro.user | 3 months ago | |
| examSystem.pro.user.d4e5c96 | 3 months ago | |
| examSystem_zh_CN.ts | 3 months ago | |
| mainwindow.ui | 3 months ago | |
| ui_mainwindow.h | 3 months ago | |
| users.csv | 3 months ago | |
README.md
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+
依赖库
# 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. 克隆项目
git clone <repository-url>
cd MathExamSystem
2. 创建构建目录
mkdir build
cd build
3. 配置项目
cmake ..
4. 编译项目
# Linux/macOS
make -j4
# Windows (Visual Studio)
cmake --build . --config Release
5. 运行程序
# Linux/macOS
./MathExamSystem
# Windows
./Release/MathExamSystem.exe
使用指南
首次使用
-
启动程序:运行编译后的可执行文件
-
注册账号:
- 点击"注册新账号"
- 输入邮箱地址,点击"发送验证码"
- 检查邮箱获取验证码并填写
- 设置用户名和密码(6-10位,包含大小写字母和数字)
- 点击"注册"
-
登录系统:
- 输入用户名和密码
- 点击"登录"
开始学习
-
选择难度:
- 小学:基础四则运算
- 初中:包含平方、开根号
- 高中:包含三角函数
-
设置题目数量:通过数字选择框设置(5-50题)
-
开始测试:点击"开始测试"进入答题界面
答题流程
- 阅读题目:仔细阅读题目内容
- 选择答案:从A、B、C、D四个选项中选择
- 导航题目:
- 使用"上一题"、"下一题"按钮切换
- 最后一题显示"提交试卷"按钮
- 提交答案:完成所有题目后提交
查看结果
- 系统自动批改并显示得分
- 查看正确题目数量和总题目数
- 可选择"继续做题"或"退出"
配置说明
邮件服务配置
如需使用邮箱验证功能,请编辑 backend_interface.cc 中的邮箱配置:
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
cmake -DCMAKE_PREFIX_PATH=/path/to/qt ..
Q: 邮件发送失败
A:
- 检查邮箱配置是否正确
- 确认网络连接正常
- 检查防火墙设置
Q: 题目生成失败
A:
- 检查是否有写入权限
- 确认磁盘空间充足
Q: 程序崩溃
A:
- 检查依赖库版本兼容性
- 查看控制台输出的错误信息
开发指南
添加新的题目类型
- 在
problem_generator.h中定义新的生成器类 - 实现
GenerateProblem()方法 - 在工厂类中注册新的生成器
扩展用户界面
- 继承
BaseWidget创建新的界面组件 - 在
main_window.h中声明新的界面 - 在
main_window.cc中管理界面切换