news 2026/4/3 5:17:06

基于QT(C++)+MySQL实现(窗体)学生信息管理系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于QT(C++)+MySQL实现(窗体)学生信息管理系统

学生信息管理系统使用说明及其报告

使用说明

该学生信息管理系统使用的数据库为MySQL;

在另外一台电脑上(老师的电脑)运行时运行环境必须满足以下要求:

  • 那台电脑必须要安装数据库MySQL;安装引导里一定要将默认的latin1编码换成utf8编码,不然后面会中文乱码
  • 在那台电脑的MySQL中导入本人数据库脚本文件 studentmanager.sql (该文件已打包好)(这里推荐使用navicate for mysql 导入 数据库创建是要选择utf8编码,不然后期会出现数据库中文乱码)
  • 在MySQL的安装目录下的lib文件夹中的libmysql.dll文件复制到Qt安装目录下的bin目录中
  • 最后在原代码中的globle.cpp 文件中更改连接数据库的账号和密码( 更改QString sqluser="root" 的值为更改账号。更改QString sqlpass="123456" 的值为更改密码。

此处我的数据库账号为root 密码为123456。此处账号密码要对应自己MySQL账号密码)

以上步骤若没完成则会编译运行不了

studentmanager 数据库表格说明

该 studentmanager.sql 有六张表:用Navicat for MySQL (数据库图形界面操作软件)展现的

1.admin 表(管理员登录表)

用该表的username作为账号和password作为密码可登录管理员端

2.student (学生基本信息表)

用该表的id 作为账号, password 作为密码可登录学生端

3.class表 (班级信息表)

4.course 表(课程信息表)

5.fee 表(缴费信息表)

6.score 表(分数信息表)

本程序需解决的关键技术问题

该学生管理系统主要使用到Qt 的数据库编程开发。

在Qt框架下进行数据库的增删查改相关功能开发。

  • 如何使用qt 连接数据库。
    连接数据库 要使用qt 的QSqlDatabase类,该类提供了数据库连接的相关方法,以及执行mysql的sql 命令的功能。
  • 从数据库获取信息乱码问题。
    在连接完数据库时输入以下代码,可解决数据库乱码问题。
QSqlQuery query(db); db.exec("SET NAMES 'GBK'");
  • 登录功能的实现
    • 在qt的ui界面将登入界面设计好后实现登录功能
    • 连接数据库
    • 通过判断哪个单选框被选中,来判断是学生还是管理员。
    • 从数据库查找相应管理员表,和学生表,通过 while(query.next())循环 一一对从行编辑器中获取的账号,密码与从数据库中获取的账号密码进行匹配,若匹配成功则跳转进入相应的学生端和管理员端界面。
  • 如何实现间界面间传值。
    面传值使用全局变量实现的
    创建全局变量:新建了一个C类文件globle。声明全局变量使用关键字extern。在另一个C类文件中只需要包含globle.h 的头文件就可以使用该全局变量,就能通过全局变量在不同的界面中传值。
  • 如何实现界面跳转。
    举个例子:
this->hide(); userlogin *ti=new userlogin; ti->show(); // 就先hide当前界面,在创建要新跳的界面对象指针, // 通过对象指针show跳转后的界面;
  • 对于使用qttablewidget 表格类显示所有学生信息的方法。
    此处我用了QVariantList 这个数据结构将从数据库中或取得所有学生信息储存起来。在用嵌套的两个for循环将其展现到qttablewidget 表格中具体代码如下:
//遍历list_all_student,将获取的学生信息展现到表格tablewidget中 for(int i1=0;i1<list_all_student.size();i1++){ int row = ui->tableWidget->rowCount(); ui->tableWidget->insertRow(row); QStringList rowdata=list_all_student[i1].toStringList(); for(int i = 0 ; i <rowdata .size() ; i++){ QTableWidgetItem *item = new QTableWidgetItem; item->setText(rowdata.at(i)); ui->tableWidget->setItem(row , i , item); } }
  • 如何实现对数据库进行增删查改。
    具体代码:
QSqlQuery query(db); db.exec("SET NAMES 'GBK'"); query.exec("select dormnum,id,name,sex,bednum,beizhu from student"); while(query.next())...........
  • 只需要更改 query.exec("select dormnum,id,name,sex,bednum,beizhu from student");中的sql 命令即可实现增删查改
    • 添加数据:insert xxx(id, username) values(xx, "xxx");
    • 修改数据:update tablename set xx=xx,xxx=xx where xxx=xxx and xxx=xxx;
    • 删除数据:delete from tablename where xx=xxx and xxx = xxx or xxx = xxx;
    • 查询数据:select * from xxx;

功能展现

登录功能

管理员端

学生端

显示所有学生信息

班级信息查询

学生信息管理

增添功能

删除功能

更改功能

其他的功能也是有关 增删查改功能 功能类似就不一一列举

小结:

写这个学生信息管理系统历时两个星期。一开始拿到任务书感觉这是一个不可能完成的任务 ,主要是我们还没有学数据库原理,对数据库非常的陌生。千里之行始于足下,即使困难也要努力去完成,我就去看了一下老师给我们的书籍资料,并没有完全看懂。之后又去网上找了个Qt视频教程,对Qt的信号与槽机制了解比较深了。开始写一个像计算器的小程序,更加深刻体会qt的框架。然后又去网上找了一些数据库MySQL的教程于是就安装了MySQL,和Navicat for MySQL。初步了解数据库的使用。慢慢的开始写,从一开始解决如何连接数据库,如何页面跳转,到后面的如何进行数据库增删查改,和使用qttablewidget表格,都是去查阅文档,网上查资料。当我遇到一个数据结构QVariantList 不知如何下手是也是翻阅文档找到它的使用方法。

总的来说,这次编程经历让我深刻体会到:不要一开始就胆怯害怕,千里之行始于足下。当迈出了第一步你会发现问题并没有你想想的那么难。学习编程不懂的,要学会查文档,网上查资料。自学是很重要的能力。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/23 15:52:38

隐蔽XSS攻击如何通过PNG图片payload实现安全防护

网络安全领域的潜在风险正在以图片形式传播&#xff0c;传统Web安全防御体系中的PNG图片往往被视为安全的静态资源&#xff0c;但xss2png工具的出现改变了这一认知。这款工具能够将XSS代码嵌入PNG图片的IDAT数据块中&#xff0c;创造出视觉正常但包含代码的图片。 【免费下载链…

作者头像 李华
网站建设 2026/4/1 16:25:15

构建跨平台虚拟助手:Kotaemon移动端适配方案

构建跨平台虚拟助手&#xff1a;Kotaemon移动端适配方案 在智能手机成为数字生活核心入口的今天&#xff0c;用户对应用内智能服务的期待早已超越简单的关键词匹配。他们希望与APP“对话”——就像和真人客服交谈一样自然、连续、有记忆。但现实是&#xff0c;大多数内置AI助手…

作者头像 李华
网站建设 2026/3/27 6:26:37

GetQzonehistory终极教程:一键备份QQ空间所有历史说说

想要永久珍藏QQ空间里那些承载青春记忆的说说吗&#xff1f;GetQzonehistory这款强大的Python工具能够帮你轻松实现QQ空间历史说说的完整备份&#xff0c;将多年来的情感记录导出为可编辑的Excel文件。无论你是想要整理个人回忆&#xff0c;还是需要数据归档&#xff0c;这款工…

作者头像 李华
网站建设 2026/3/31 17:07:34

【专家亲授】MCP MS-720 Agent集成核心机密:99%工程师忽略的关键步骤

第一章&#xff1a;MCP MS-720 Agent集成概述MCP MS-720 Agent 是专为现代云原生环境设计的监控代理组件&#xff0c;旨在实现对分布式系统的高效性能采集与实时状态上报。该代理支持多种协议接入&#xff0c;能够无缝集成至 Kubernetes、Docker 等容器化平台&#xff0c;同时兼…

作者头像 李华
网站建设 2026/4/1 15:43:30

Arcade-plus终极教程:从零开始制作专业级Arcaea谱面

想要创作出令人惊艳的Arcaea谱面却不知从何下手&#xff1f;Arcade-plus这款完全免费的谱面编辑器就是你开启音乐创作之旅的最佳选择&#xff01;作为一款专为Arcaea谱面制作设计的强大工具&#xff0c;它提供了从基础编辑到高级特效的完整解决方案。在这篇完整指南中&#xff…

作者头像 李华