项目四:小型信息管理系统的设计与实现(团队项目)

一.项目概述

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语言和了解系统开发过程的基本方法。在调试过程中遇到了很多问题,比如:在数据库集的编写中,如果测试集太少会导致部分功能不完善,也会导致项目不能更好地呈现出来。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值