一.项目概述
1.1项目目标和主要内容
(1)设计一个学生信息管理系统,学生和老师可以通过这个平台进行信息的管理。
(2)提供用户注册登录功能,用户可使用学号进行注册。
(3)提供用户更改密码,并且提供用户找回密码的功能。
(4)在教师端提供老师相应的管理功能。
(5)教师可以在这个平台查询个人的基本信息和录入成绩的管理;学生可以在这个平台查询课程成绩和选取本学期的课程。
1.2项目主要功能
(1)建立数据库并实现特定人员的登录和身份识别。
(2)学生端可以查询往年成绩和选择当前学期课程。
(3)教师端可以录入当前学期自己所带课程的成绩,并查看自己班级学生的成绩。
(4)管理员端可以对所有人员的信息以及所有课程的信息进行增删改查。
(5)对于增改后的数据有数据正确性的检验。
二、项目设计
2.1项目总体框架
2.2 项目分工情况说明
本项目是一个团队项目,由徐永乐,黄天权,吴韦烨,贾常鸣共同完成。徐永乐完成了需求分析、代码(50%)和功能测试占项目的 30%;吴韦烨完成了代码(50%)和 GUI 界面占项目的 30%;黄天权完成了数据库的建立、部分数据集占项目的 20%;贾常鸣完成了 PPT 和数据集占项目的 20%。
E-R图设计
三、 下面仅列举几个重要接口的代码:
1.学生端选课
1.void StudentWindow::on_Btn_SelectCourse_clicked() {
2. QString cur_course = ui->Cname_2->text();
3. if (cur_course == "") {
4. SelectCourseRefresh();
5. return ;
6. }
7. QSqlQuery query(db);
8. bool k = query.exec("select cno, cname, tname, grade, period, credit, assess, property "
9. "from course, teacher "
10. "where course.tno = teacher.tno and "
11. "grade = '" + currentTime + "' and "
12. "cno = '" + cur_course + "'");
13. if (k && query.next()) {
14. QMessageBox box;
15. box.setIcon(QMessageBox::Question);
16. box.setWindowTitle("选课中心");
17. box.setWindowIcon(QIcon(":/res/logo.jpg"));
18. box.setText("确定选择课程:" + cur_course + " 吗?");
19. box.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
20. if(box.exec() == QMessageBox::Yes){
21. QSqlQuery t = db.exec("insert into "
22. "sc (sno, cno, score)"
23. "values ( "
24. "'" + username + "', "
25. "'" + query.value(0).toString() + "', "
26. " 0 )" //默认分数 0
27. );
28. if(t.isActive()){
29. QMessageBox::Information(this, "选课中心", "选课成功");
30. SelectCourseRefresh(); // 待选课程表更新
31. SelectedCourseRefresh(); // 已选课程表更新
32. }
33. else
34. QMessageBox::Critical(this, "选课中心", "选课失败");
35. }
36. }
37. else
38. QMessageBox::Critical(this, "选课中心", "未找到该课程");
39.}
2.管理员端 修改课程成绩
1.void ModifyCourse::on_Btn_Save_clicked() {
2. QSqlQuery query(db);
3. query.exec("select tno from teacher where tno = '" + ui->Tno->text() + "'");
4. if (!query.next()) {
5. QMessageBox::Critical(this, "课程管理", "修改失败,请输入有效的教师编号!");
6. return;
7. }
8. QSqlQuery query(db);
9. query.exec("update course set "
10. "cname = '" + ui->Cname->text() + "', "
11. "tno = '" + ui->Tno->text() + "', "
12. "grade = '" + ui->Grade->currentText().simplified() + "', "
13. "period = '" + ui->Period->text() + "', "
14. "credit = '" + ui->Credit->text() + "', "
15. "assess = '" + ui->Assess->text() + "', "
16. "property = '" + ui->Property->text() + "' "
17. "where cno = '" + username + "'");
18. if(query.isActive()){
19. QMessageBox::Information(this, "课程管理", "修改成功");
20. this->close();
21. emit update();
22. }
23. else
24. QMessageBox::Critical(this, "课程管理", "修改失败,请检查数据正确性!");
25.}
3.教师端 成绩录入
1.void TeacherWindow::on_Btn_Save_clicked() {
2. QSqlQuery query(db);
3. bool k = true;
4. for (int i = 0; i < ui->ScoreTable->rowCount(); ++i) {
5. k = query.exec("update SC set score = '" + ui->ScoreTable->item(i,
6. 4)->text() + "' "
7. "where sno = '" + ui->ScoreTable->item(i, 0)->text()
8. + "'");
9. }
10. if (k) QMessageBox::information(this, "保存", "保存成功");
11. else QMessageBox::Critical(this, "保存", "保存成功");
12.}
四.实验总结
(1)通过sql语言实现数据的增删改查,利用高级语言程序实现界面交互和界面的优化。
(2)本项目利用MySQL、Qt等实现了基本的数据增删改查功能,实现了由教师端和学生端两个客户端。教师可以通过教师端录入学生成绩,管理班级和宿舍情况;学生通过客户端可以选取本学期课程,查看课程成绩等功能。
(3)通过此次项目,了解到了Qt程序开发基本流程,熟悉了sql语言,掌握了如何将Mysql和Qt开发连接方法。通过ODBC的文件的插入,在Qt开发过程中增加QODBC数据库,即可和Mysql连接。
(4)这个项目耗时7天时间,通过学习Mysql语言和了解系统开发过程的基本方法。在调试过程中遇到了很多问题,比如:在数据库集的编写中,如果测试集太少会导致部分功能不完善,也会导致项目不能更好地呈现出来。