From b6265c4a607063f3e9316bd61ab04e00c3e67187 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9F=B3=E6=85=95=E9=9B=AA?= <3420852069@qq.com> Date: Sun, 12 Oct 2025 13:56:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=E4=BB=A3=E7=A0=81=E6=9C=80?= =?UTF-8?q?=E7=BB=88=E7=89=88=EF=BC=8C=E8=AF=B4=E6=98=8E=E6=96=87=E6=A1=A3?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/README.md | 111 ++++++++++++++++++++++++++++++++ src/frontend/examwidget.h | 6 +- src/frontend/mainmenuwidget.cpp | 2 +- src/frontend/mainmenuwidget.h | 8 +-- src/frontend/mainwindow.h | 2 +- src/frontend/mainwindow.ui | 22 +++++++ 6 files changed, 142 insertions(+), 9 deletions(-) create mode 100644 src/frontend/mainwindow.ui diff --git a/doc/README.md b/doc/README.md index dc45f65..9338fb5 100644 --- a/doc/README.md +++ b/doc/README.md @@ -1,2 +1,113 @@ # teamwork-project +## 项目简介 +这是一个面向小学、初中和高中学生的数学学习软件,采用图形化界面操作,提供数学题目生成、在线考试、成绩记录等功能。项目基于C++和Qt框架开发,实现了完整的用户注册、登录、考试和成绩管理流程。 + +## 项目特点 +1.多学段支持:覆盖小学、初中、高中三个学段的数学题目 +2.安全认证:支持用户注册、登录、密码修改功能 +3.智能出题:根据学段自动生成相应难度的数学题目 +4.实时评分:自动批改试卷并显示详细成绩 +5.数据持久化:本地文件存储用户数据和考试记录 +6.邮箱验证:支持真实邮箱验证码发送功能 + +## 功能模块 + +## 用户管理 +1.用户注册:邮箱验证、密码强度校验 +2.用户登录:安全的身份认证 +3.密码修改:支持在线修改密码 + +## 考试系统 +1.题目生成:根据学段生成不同难度的选择题 +2.考试界面:清晰的题目展示和选项选择 +3.进度跟踪:实时显示答题进度 +4.成绩统计:自动计算得分和正确率 + +## 数据管理 +1.用户数据:本地文件存储用户信息 +2.考试记录:保存历史考试成绩 +3.题目文件:导出生成的题目试卷 + +## 技术架构 + +## 前端界面 +Qt Widgets:跨平台的图形界面框架 +响应式设计:自适应不同屏幕尺寸 +美观UI:现代化的界面风格设计 + +## 后端逻辑 +C++11/14:核心业务逻辑实现 +面向对象设计:模块化的类结构 +跨平台支持:Windows/Linux/macOS兼容 + +## 核心类说明 +## 前端类 +MainWindow:主窗口控制器 +LoginWidget:登录界面 +RegisterWidget:注册界面 +MainMenuWidget:主菜单界面 +ExamWidget:考试界面 +ResultWidget:成绩界面 + +## 后端类 +User:用户信息管理 +UserManager:用户认证和注册 +QuestionGenerator:题目生成器 +FileSaver:文件存储管理 + +## 项目结构 +teamwork-project/ +├── src/ # 源代码目录 +│ ├── frontend/ # 前端代码目录 +│ │ ├── mathlearningApp.pro # Qt项目配置文件 +│ │ ├── main.cpp # 程序入口 +│ │ ├── mainwindow.h/cpp # 主窗口控制器 +│ │ ├── loginwidget.h/cpp # 登录界面 +│ │ ├── registerwidget.h/cpp # 注册界面 +│ │ ├── mainmenuwidget.h/cpp # 主菜单界面 +│ │ ├── examwidget.h/cpp # 考试界面 +│ │ └── resultwidget.h/cpp # 成绩界面 +│ └── backend/ # 后端代码目录 +│ ├── user.h/cpp # 用户类 +│ ├── usermanage.h/cpp # 用户管理 +│ ├── questiongenerator.h/cpp # 题目生成器 +│ └── filesaver.h/cpp # 文件存储 +└── doc/ # 文档目录 + └── README.md # 项目说明 + +## 编译运行 +双击.exe文件运行 + +## 环境要求 +Qt 5.12 或更高版本 +C++11 兼容编译器 +CMake 3.10 或更高版本 + +## 使用说明 +## 首次使用 +运行程序,进入登录界面 +点击"注册新账号"创建用户账户 +输入邮箱获取验证码完成注册 +设置符合要求的密码(6-10位,包含大小写字母和数字) + +## 参加考试 +登录成功后进入主菜单 +选择考试年级和题目数量(5-30题) +点击"开始考试"进入考试界面 +逐题作答,可前后翻页检查 +提交后查看成绩和正确率 + +## 架构设计说明 +## 前后端分离 +前端:负责UI展示、用户交互、界面逻辑 +后端:负责业务逻辑、数据处理、算法实现 +通信方式:通过类接口和信号槽机制进行通信 + +## 设计模式 +MVC模式:清晰的数据-视图-控制器分离 +观察者模式:通过Qt信号槽实现组件间通信 +单例模式:用户管理等核心服务 + +## 问题反馈 +如在使用过程中遇到问题,请联系开发团队或提交Issue。 \ No newline at end of file diff --git a/src/frontend/examwidget.h b/src/frontend/examwidget.h index 2463d3d..e741829 100644 --- a/src/frontend/examwidget.h +++ b/src/frontend/examwidget.h @@ -27,19 +27,19 @@ signals: private slots: void onNextClicked(); - void onPreviousClicked(); // 新增:上一题 + void onPreviousClicked(); // 上一题 void onSubmitClicked(); private: void showQuestion(int index); void generateOptions(); - void updateButtonStates(); // 新增:更新按钮状态 + void updateButtonStates(); // 更新按钮状态 QLabel *questionLabel; QLabel *progressLabel; QButtonGroup *optionGroup; QRadioButton *optionButtons[4]; - QPushButton *previousButton; // 新增:上一题按钮 + QPushButton *previousButton; // 上一题按钮 QPushButton *nextButton; QPushButton *submitButton; diff --git a/src/frontend/mainmenuwidget.cpp b/src/frontend/mainmenuwidget.cpp index 3dbf12d..ae6f2a1 100644 --- a/src/frontend/mainmenuwidget.cpp +++ b/src/frontend/mainmenuwidget.cpp @@ -76,7 +76,7 @@ MainMenuWidget::MainMenuWidget(QWidget *parent) : QWidget(parent) "}"); startButton->setFixedSize(150, 50); - // 退出登录按钮 - 修改为与开始考试按钮相同大小 + // 退出登录按钮 logoutButton = new QPushButton("退出登录"); logoutButton->setStyleSheet("QPushButton {" "background-color: #95a5a6;" diff --git a/src/frontend/mainmenuwidget.h b/src/frontend/mainmenuwidget.h index e4cae4f..f3c56d4 100644 --- a/src/frontend/mainmenuwidget.h +++ b/src/frontend/mainmenuwidget.h @@ -17,15 +17,15 @@ class MainMenuWidget : public QWidget public: explicit MainMenuWidget(QWidget *parent = nullptr); void setUserInfo(const std::wstring& username, const std::wstring& grade); - QString getSelectedGrade() const; // 新增方法 + QString getSelectedGrade() const; signals: void startExam(int questionCount); - void logoutRequested(); // 新增信号:退出登录 + void logoutRequested(); // 退出登录 private slots: void onStartExamClicked(); - void onLogoutClicked(); // 新增槽函数:处理退出登录 + void onLogoutClicked(); // 处理退出登录 private: QLabel *welcomeLabel; @@ -33,7 +33,7 @@ private: QComboBox *gradeComboBox; QSpinBox *questionCountSpinBox; QPushButton *startButton; - QPushButton *logoutButton; // 新增:退出登录按钮 + QPushButton *logoutButton; // 退出登录按钮 }; #endif diff --git a/src/frontend/mainwindow.h b/src/frontend/mainwindow.h index 4dcb6e3..7135fcc 100644 --- a/src/frontend/mainwindow.h +++ b/src/frontend/mainwindow.h @@ -27,7 +27,7 @@ private slots: void showResult(int score, int total); void onUserLoggedIn(User* user); void onRegisterSuccess(); - void onLogoutRequested(); // 新增:处理退出登录 + void onLogoutRequested(); // 处理退出登录 private: QStackedWidget *stackedWidget; diff --git a/src/frontend/mainwindow.ui b/src/frontend/mainwindow.ui new file mode 100644 index 0000000..b232854 --- /dev/null +++ b/src/frontend/mainwindow.ui @@ -0,0 +1,22 @@ + + + MainWindow + + + + 0 + 0 + 800 + 600 + + + + MainWindow + + + + + + + + -- 2.34.1