# qtcoursemanage **Repository Path**: foisca/qtcoursemanage ## Basic Information - **Project Name**: qtcoursemanage - **Description**: Qt实现学生选课系统app - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-07-24 - **Last Updated**: 2024-10-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: Cpp, Qt ## README # CPP-Qt6-MySQL项目 - 学生教师选课管理系统 ## 一、项目简介 该项目是一个基于 C++ 和 Qt6 框架开发的学生教师选课系统,旨在为学校管理学生选课、教师授课以及管理员管理提供一套完整的解决方案。系统分为多个角色,包括学生、教师和管理员,每个角色都有各自的功能和界面。以下是项目的详细介绍: ## 二、运行指南请 ### 项目已经打包成Windows系统可执行的exe文件,下载项目后直接运行 [QtMySQL.exe](cmake-build-default-qt%2FQtMySQL.exe) 即可。 ### 若需要重新编译项目,请参考 [build.md](doc%2Fbuild.md) ## 三、登陆窗口 [loginwindow.md](doc/loginwindow.md) - 通过用户名和密码登陆 - 通过输入的用户名自动识别用户属于什么类型,分别是: - 学生 Type 1 (能注册) - 老师 Type 2 (能注册) - 管理员 Type 3 (不能注册) - 注册功能 - 学生注册功能 [registerstudent.md](doc%2Fregister%2FSubwindows%2Fregisterstudent.md) - 老师注册功能 [registerteacher.md](doc%2Fregister%2FSubwindows%2Fregisterteacher.md) - 用户名(ID)是自动生成的,即原有最大编号的ID+1的编号,密码是初始密码。学生的初始密码是生日组成的8位数字字符串;老师的密码是其电话号码。 - 例如学生的生日是2000年1月1日,那么初始密码就是20000101 - 例如老师的电话号码是12345678,那么初始密码就是12345678 - 找回密码功能 [forgetpassword.md](doc%2Fforget%2Fforgetpassword.md) 将密码重设成初始状态 ## 四、学生窗口 [studentwindow.md](student%2Fstudentwindow.md) UI如下: ![studentwindow.png](res%2Fimages%2Fstudentwindow.png) - 显示学生已经选修的课程,并提供搜索功能,输入文件即可实时搜索(文本框内容改变时自动触发搜索事件); ### 1.修改个人信息 [studentinformation.md](doc%2Fstudent%2FSubwindows%2Fstudentinformation.md) UI如下: ![studentinformation.png](res%2Fimages%2Fstudentinformation.png) 需要修改某些个人信息时,直接在对应的文本框中输入新的信息,然后单击“确定”按钮、或者使用快捷键Enter键即可; ### 2. 选课 [studentcourseselect.md](doc%2Fstudent%2FSubwindows%2Fstudentcourseselect.md) UI如下: ![studentcourseselect.png](res%2Fimages%2Fstudentcourseselect.png) 当鼠标点某一行课程实例之后,表格上方的“当前选中课程ID”和“当前选中课程名”会相应改变,此时单击“选课”按钮即可选课; ### 3. 退课 当鼠标单击某一行的课程实例之后,表格上方的“当前选中课程ID”会相应改变,此时单击“退课”按钮即可退课当前选中的课程; ### 4. 返回按钮,快捷键ESC。 ## 五、教师窗口 [teacherwindow.md](teacher%2Fteacherwindow.md) UI如下: ![teacherwindow.png](res%2Fimages%2Fteacherwindow.png) - 显示教师已经教授的课程,并提供搜索功能,输入文件即可实时搜索(文本框内容改变时自动触发搜索事件); ### 1. 修改个人信息 [teacherinformation.md](doc%2Fteacher%2FSubwindows%2Fteacherinformation.md) UI如下: ![teacherinformation.png](res%2Fimages%2Fteacherinformation.png) 需要修改某些个人信息时,直接在对应的文本框中输入新的信息,然后单击“确定”按钮、或者使用快捷键Enter键即可; 对基础课程进行一些额外的信息补充(详细请见UI)之后,即可添加新课程;新课程的ID是自动生成的:CourseBaseID-TeacherID-当前教师教授此门课程的次数; ### 2. 给选修自己所授课程的学生打分 [teachercoursejudge.md](doc%2Fteacher%2FSubwindows%2Fteachercoursejudge.md) ,如果课程已经结束,那么学生的成绩就不能再修改了,否则可以修改; UI如下: ![teacherjudge.png](res%2Fimages%2Fteacherjudge.png) 双击某个学生的信息即可进入对单个学生的打分界面,UI如下: ![teacherjudgeonestudent.png](res%2Fimages%2Fteacherjudgeonestudent.png) 分数形式为平时分、期末分、期末分占比三个部分,总分会根据公式{ 总分=平时分 * (1-期末占比%) + 期末分 * 期末占比% } 自动计算出来,但是总分不可修改,只能修改平时分和期末分占比; 当所有学生的分数都分配完之后,单击“提交打分”按钮即可提交分数,此后这门课程就完成了,不能再修改分数了。 ### 3. 申请教学新课程 [teacheraddnewcourse.md](doc%2Fteacher%2FSubwindows%2Fteacheraddnewcourse.md) UI如下: ![teacheraddnewcourse.png](res%2Fimages%2Fteacheraddnewcourse.png) 当鼠标点某一行基础课程信息之后,表格上方的“课程ID”和“课程名”会相应改变,此时单击“授课”按钮会弹出课程实例信息选择的界面,UI如下: ![teacheraddnewcourseinfo.png](res%2Fimages%2Fteacheraddnewcourseinfo.png) ### 4. 取消教学课程 鼠标单击表格中像删除的一行课程实例,然后点击“申请取消教学”按钮即可取消教学某门课程,但是当一门课程已经结束之后就不能再申请取消教学了。 ### 5. 返回,快捷键ESC。 ## 六、管理员窗口 [adminwindow.md](admin%2Fadminwindow.md) UI如下: ![adminwindow.png](res%2Fimages%2Fadminwindow.png) 显示所有学生信息、所有教师信息、所有基础课程信息。 ### 1. 登陆任意学生主页 鼠标单击学生信息表格的某一列,然后单击“学生模拟”按钮即可进入选中的学生主页;或者直接双击某个学生所在的行,就可以进入其主页。 ### 2. 登陆任意教师主页 鼠标单击教师信息表格的某一列,然后单击“教师模拟”按钮即可进入选中的学生主页;或者直接双击某个教师所在的行,就可以进入其主页。 ### 3. 新建基础课程 在“添加基础课程”按钮的上方填好基础课程信息,然后单击“添加基础课程”按钮即可添加基础课程。 ### 4. 返回,快捷键ESC ## 七、项目结构 ```angular2html ├───.idea │ └───dataSources │ └───eff918cb-df65-40c2-b9a2-999cbdebee40 │ └───storage_v2 │ └───_src_ │ └───schema ├───cmake-build-debug │ ├───.cmake │ │ └───api │ │ └───v1 │ │ ├───query │ │ └───reply │ ├───.qt │ ├───CMakeFiles │ │ ├───3.28.1 │ │ │ ├───CompilerIdC │ │ │ │ └───tmp │ │ │ └───CompilerIdCXX │ │ │ └───tmp │ │ ├───CMakeScratch │ │ ├───d │ │ ├───pkgRedirects │ │ ├───QtMySQL.dir │ │ │ └───QtMySQL_autogen │ │ └───QtMySQL_autogen.dir │ ├───QtMySQL_autogen │ │ └───include │ └───Testing │ └───Temporary ├───cmake-build-default-qt │ ├───.cmake │ │ └───api │ │ └───v1 │ │ ├───query │ │ └───reply │ ├───.qt │ ├───CMakeFiles │ │ ├───3.28.1 │ │ │ ├───CompilerIdC │ │ │ │ └───tmp │ │ │ └───CompilerIdCXX │ │ │ └───tmp │ │ ├───d │ │ ├───pkgRedirects │ │ ├───QtMySQL.dir │ │ │ ├───QtMySQL_autogen │ │ │ │ └───EWIEGA46WW │ │ │ ├───res │ │ │ └───src │ │ ├───QtMySQLqt.dir │ │ │ ├───QtMySQLqt_autogen │ │ │ ├───res │ │ │ └───src │ │ ├───QtMySQLqt_autogen.dir │ │ └───QtMySQL_autogen.dir │ ├───plugins │ │ ├───platforms │ │ └───sqldrivers │ ├───QtMySQL_autogen │ │ ├───6YEA5652QU │ │ ├───cmake-build-default-qt │ │ │ └───QtMySQL_autogen │ │ │ └───include │ │ ├───EWIEGA46WW │ │ └───include │ └───Testing │ └───Temporary ├───doc │ ├───admin │ │ └───Subwindows │ ├───forget │ ├───register │ │ └───Subwindows │ ├───student │ │ └───Subwindows │ └───teacher │ └───Subwindows ├───include ├───res │ ├───icons │ └───images ├───src └───ui ```