赞
踩
随着教育信息化的推进,学生管理系统成为学校管理的重要工具。传统的学生管理方式效率低、易出错,且难以满足现代化教育的需求。基于此,开发了一款基于 Qt 和 MySQL 的学生管理系统,以提高学校管理的效率和准确性。
学生管理系统旨在为学校提供一个高效、可靠的学生信息管理平台,主要目标包括:
1.1 管理员登陆
1.2 学生添加
1.3 学生展示
1.4 学生查询
1.5 学生信息修改
1.6 删除学生信息
1.7 审计日志
密码框在输入的使用应该隐藏数据输入内容。
以下图数据流程图,通过这个图我们可以知道数据从界面到数据库,以及数据库数据到界面的整体流程
管理员的登录流程,也是上面2.3.1中的流程的具体使用,整体框架都是对标2.3.1
表名:student
字段 | 类型 | 是否必填 | 备注 |
---|---|---|---|
id | int | 是 | 学生学生号,主键 |
name | varchar(255) | 是 | 学生名字 |
sex | varchar(10) | 是 | 性别,男OR女 |
sfz | varchar(20) | 是 | 身份证,唯一值 |
tel | varchar(20) | 是 | 电话号码 |
address | varchar(255) | 是 | 学生地址 |
weixin | varchar(255) | 否 | 微信号 |
varchar(255) | 否 | qq号 | |
status | varchar(100) | 是 | 默认状态为active, active |
create_time | TIMESTAMP | 是 | 创建时间,使用时间戳记录 |
create_by | varchar(100) | 是 | 创建用户 |
update_time | TIMESTAMP | 否 | 更新时间,使用时间戳记录 |
update_by | varchar(100) | 否 | 更新学生信息的用户 |
CREATE TABLE IF NOT EXISTS student(
id INT NOT NULl PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL COMMENT "学生名字",
sex VARCHAR(10) NOT NULL COMMENT "学生性别",
sfz VARCHAR(20) NOT NULL UNIQUE COMMENT "身份证",
tel VARCHAR(20) NOT NULL COMMENT "电话号码",
address VARCHAR(20) NOT NULl COMMENT "学生地址",
weixin VARCHAR(255) COMMENT "微信号",
QQ VARCHAR(255) COMMENT "qq号",
status VARCHAR(100) NOT NULl COMMENT "qq号",
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT "创建时间",
create_by VARCHAR(100) NOT NULL COMMENT "创建用户",
update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT "创建时间",
update_by VARCHAR(100) NOT NULL COMMENT "创建用户"
) ENGINE=InnoDB;
表名:manager
字段 | 类型 | 是否必填 | 备注 |
---|---|---|---|
id | int | 是 | 管理员ID,主键 |
user | varchar(100) | 是 | 登陆账户 |
pw | varchar(100) | 是 | 密码 |
safety_code | varchar(10) | 是 | 安全码 |
CREATE TABLE IF NOT EXISTS manager(
id INT NOT NULl PRIMARY KEY AUTO_INCREMENT,
user VARCHAR(100) NOT NULL COMMENT "登陆账户",
pw VARCHAR(100) NOT NULL COMMENT "密码",
safety_code VARCHAR(10) NOT NULL COMMENT "安全码"
)ENGINE=InnoDB;
表名:audit_logs 审计记录
字段 | 类型 | 是否必填 | 备注 |
---|---|---|---|
id | int | 是 | 管理员ID,主键 |
option | varchar(100) | 是 | 操作类型,update,delete,insert |
detail | varchar(1024) | 是 | 操作日志 |
create_by | varchar(100) | 是 | 操作管理员名称 |
create_time | TIMESTAMP | 是 | 创建时间 |
CREATE TABLE IF NOT EXISTS audit_logs(
id INT NOT NULl PRIMARY KEY AUTO_INCREMENT,
option VARCHAR(100) NOT NULL COMMENT "操作类型",
detail VARCHAR(1024) NOT NULL COMMENT "操作管理员名称",
create_by VARCHAR(100) NOT NULL COMMENT "登陆账户",
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT "创建时间"
)ENGINE=InnoDB;
stuct Student{
int id,
QString name,
QString sex,
QString sfz,
QString tel,
QStrnig address,
QString weixin,
QString qq,
QString status,
QString create_time,
QString create_by,
QString update_time,
QString update_by
};
stuct User{
int id,
QString user,
QString pw;
QString safety_code
} ;
struct AuditLogs{
int id ,
QString option,
QString detail,
QString create_by,
QString create_time
};
struct StudentListRequest{
int page, // 当前页码 必填
int size, // 每一页的数量 必填
QString id, // 查询请求的id 非必填
QString name, // 查询请求用户名 非必填
QString sex, // 查询请求用户性别 非必填
QString sfz, // 查询请求身份证 非必填
QString weixin, // 查询请求微信号 非必填
QString qq // 查询请求QQ号 非必填
};
struct StudentListResponse{
int msg_code, // 请求状态,0表示成功,其他表示错误
QString msg, // 请求错误信息
int current, // 当前页
int total, // 请求数据的总数
vector<Student> vecStudent // 学生数据
};
struct LoginRequest{
QString user; // 用户账号 必填
QString pw; // 用户名称
};
struct LoginResponse{
int msg_code,
QString msg,
QString user,
QString loginTime
};
struct AuditLogsRequest{
QString option,
QString detail,
QString createBy
};
接口表示view层与controller层的对接接口,view层只需要通过controller层的接口调用获取数据,剩下展示的内容有view层进行展示。
view和controller对接的接口
bool addStudentInfo(Student info);
QString sql = QString("insert into student (name,sex,sfz,tel,address,weixin,qq,status,create_by) " "values ('%0','%1','%2','%3','%4','%5','%6','%7','%8');") .arg(info.name) .arg(info.sex) .arg(info.tel) .arg(info.address) .arg(info.weixin) .arg(info.qq) .arg(QString::number(1)) .arg("test"); QSqlQuery query; if(!query.exec(sql)){ qInfo()<<"init db data failed!"<<query.lastError()<< ":" << query.lastQuery(); return Result(0,""); } return Result(0,"");
bool deleteStudentInfo(QString id);
bool updateStudentInfo(QString id,Student newInfo);
StudentListResponse selectStudentList(StudentListRequest studentListRequest);
StudentListResponse res; QString where = getStudentListRequestWhere(studentListRequest); // 获取数据总数 res.total = getCountSelectStudentList(studentListRequest); res.current = studentListRequest.page; res.msg_code = 0; QSqlQuery query; QString currentOffset = QString::number(studentListRequest.page * studentListRequest.size); QString strSize = QString::number(studentListRequest.size); QString sql = "select * from student " +where +"limit "+ currentOffset +","+ strSize; if(!query.exec(sql)){ res.msg_code = -1; res.msg = query.lastError().text(); return res; } qInfo()<<"last:" << query.lastQuery(); // 处理查询结果 while (query.next()) { Student stu; stu.id = query.value(0).toString(); stu.name = query.value(1).toString(); stu.sex = query.value(2).toString(); stu.sfz = query.value(3).toString(); stu.tel = query.value(4).toString(); stu.address = query.value(5).toString(); stu.weixin = query.value(6).toString(); stu.qq = query.value(7).toString(); res.vecStudent.push_back(stu); } return res;
LoginResponse userLogin(LoginResponse loginResponse);
if(pw.isNull() || pw.isEmpty()){ return Result(LOGIN_ERROR_PASSWORD_EMPTY,LOGIN_ERROR_PASSWORD_EMPTY_MSG); } Result res(0,""); QSqlQuery query; query.clear(); QString sql = QString("SELECT * FROM manager WHERE user = '%1'").arg(user); query.prepare(sql); qInfo() << query.lastQuery(); if (!query.exec()) { qDebug() << "Error: Failed to insert student." << query.lastError(); return res; } QString spw; while (query.next()) { int id = query.value("id").toInt(); spw = query.value("pw").toString(); } if(pw == spw){ return Result(LOGIN_OK,LOGIN_OK_MSG); } return Result(LOGIN_ERROR_PASSWORD,LOGIN_ERROR_PASSWORD_MSG);
void addAuditLogs(AuditLogsRequest auditLogsRequest);
该学生管理系统由 Qt 前端应用程序和 MySQL 数据库组成。Qt 应用程序通过读取配置文件 my.xml 连接到位于服务器上的 MySQL 数据库。
操作系统:win10
QT:版本
编译环境配置:
https://gitcode.net/arv002/database/-/tree/master/StudentManagementSystem/StudentManagementSystem
https://gitcode.net/arv002/database/-/tree/master/StudentManagementSystem/StudentManagementSystem
其他QT文章
1. QT开发环境安装以配置。
2. QT线段画板实战
3. 半小时玩转QT桌面系统托盘(含托盘消息)
4. QT入门开发一个时钟
5. 半小时教你做大转盘游戏(QT篇)
6. 手把手教你制作【带吸附效果的线段绘制】(QT)
7. 手把手教你开发-滚动效果号码抽奖(QT)
8. 100行代码实现贪吃蛇小游戏
9.C++实现《扫雷》游戏(入门经典)
10. svg转图片工具开发
11. Qt网路与通信(获取本机网络信息)
12. Qt网路与通信(UDP客户与服务)
13. Qt网络与通信(TCP聊天室)
14. Qt多线程以及线程池
15. Qt散点图、折线图、柱状图、盒须图、饼状图、雷达图开发实例
16. 取色器(QT)
17. MQTT客户端入门开发
18.QT文件上传带进度条实例(含源码)
19. Qt音乐播放器开发实例(可毕设含源码)
20. Qt学生管理系统-- 数据库课程设计(付源码)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。