基于c++Mysql学生信息管理系统

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 基于c++Mysql学生信息管理系统

完整代码:

https://download.csdn.net/download/qq_38735017/87382424

使用说明

该学生信息管理系统使用的数据库为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 表(管理员登录表)


d91e4fe397821b376092298afd08d867.png


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

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

c59ed116d325b61688fcd2ec29d9182b.png


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

3.class表 (班级信息表)+

3529debe114db0839d12b05919a87497.png

4.course 表(课程信息表)

9bbc9b006417cf99e00e8c6f295e40ef.png

5.fee 表(缴费信息表)

92b90301d2c486df2f8ae2f86800b5a2.png

6.score 表(分数信息表)

c83c9b972b807d2d47642e61f11236a3.png


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


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

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

  • 如何使用qt 连接数据库。


连接数据库 要使用qt 的QSqlDatabase类,该类提供了数据库连接的相关方法,以及执行mysql的sql 命令的功能。

  • 从数据库获取信息乱码问题。


在连接完数据库时输入以下代码,可解决数据库乱码问题。

1. QSqlQuery query(db);
2. db.exec("SET NAMES 'GBK'");


  • 登录功能的实现
  • 在qt的ui界面将登入界面设计好后实现登录功能
  • 连接数据库
  • 通过判断哪个单选框被选中,来判断是学生还是管理员。
  • 从数据库查找相应管理员表,和学生表,通过 while(query.next())循环 一一对从行编辑器中获取的账号,密码与从数据库中获取的账号密码进行匹配,若匹配成功则跳转进入相应的学生端和管理员端界面。
  • 如何实现间界面间传值。

面传值使用全局变量实现的


创建全局变量:新建了一个C++类文件globle。声明全局变量使用关键字extern。在另一个C++类文件中只需要包含globle.h 的头文件就可以使用该全局变量,就能通过全局变量在不同的界面中传值。

  • 如何实现界面跳转。


举个例子:

this->hide();userlogin*ti=newuserlogin;ti->show();// 就先hide当前界面,在创建要新跳的界面对象指针,
// 通过对象指针show跳转后的界面;


  • 对于使用qttablewidget 表格类显示所有学生信息的方法。

此处我用了QVariantList 这个数据结构将从数据库中或取得所有学生信息储存起来。在用嵌套的两个for循环将其展现到qttablewidget 表格中具体代码如下:


//遍历list_all_student,将获取的学生信息展现到表格tablewidget中
for(inti1=0;i1<list_all_student.size();i1++){introw=ui->tableWidget->rowCount();ui->tableWidget->insertRow(row);QStringListrowdata=list_all_student[i1].toStringList();for(inti=0;i<rowdata.size();i++){
      QTableWidgetItem*item=newQTableWidgetItem;
      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;


功能展现


登录功能

bd4a35e69a06e5067918d948a0e57b6b.png

管理员端

7fc8156df961090fc4b8395fc6d6774d.png


学生端

28bb340cab4b9f171ca7591c70a4ba46.png


显示所有学生信息

a8e83044f383638a61f748633490e342.png


班级信息查询

bceb0a15282bf4e8bbd286383cd40f83.png


学生信息管理

a9cb79dc2667c13f52011d68c9888efb.png


增添功能

3212d52530a94befa9e52386c1fdcc6a.png


删除功能

b66e54ac779f4f01971140e997174183.png


更改功能

3ebf17a2294a70a09798ade43f62d470.png


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


相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8月前
|
存储 Java 关系型数据库
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
个人成绩信息管理系统【GUI/Swing+MySQL】(Java课设)
53 0
|
5月前
|
算法 数据可视化 C++
【C++】C++ 学生信息管理系统(源码+面向对象)【独一无二】
【C++】C++ 学生信息管理系统(源码+面向对象)【独一无二】
111 0
|
5月前
|
存储 C++
【C++】C++ QT实现 学生信息管理系统(QT源码)【独一无二】
【C++】C++ QT实现 学生信息管理系统(QT源码)【独一无二】
191 0
|
7月前
|
SQL 关系型数据库 MySQL
C++orm使用插曲——MySQL保留字
C++orm使用插曲——MySQL保留字
66 7
|
7月前
|
SQL 关系型数据库 MySQL
使用 C++ 结合 MySQL 数据库实现留言板
使用 C++ 结合 MySQL 数据库实现留言板
172 1
|
7月前
|
SQL 关系型数据库 MySQL
MySQL数据库基础练习系列1、学生信息管理系统
MySQL数据库基础练习系列1、学生信息管理系统
107 0
|
7月前
|
C++
学生信息管理系统(C++实现)
学生信息管理系统(C++实现)
101 0
|
8月前
|
存储 人工智能 机器人
【C/C++】C语言 学生信息管理系统(源码)【独一无二】
【C/C++】C语言 学生信息管理系统(源码)【独一无二】
183 2
|
8月前
|
存储 Java 关系型数据库
员工信息管理系统【控制台+MySQL】(Java课设)
员工信息管理系统【控制台+MySQL】(Java课设)
62 0
员工信息管理系统【控制台+MySQL】(Java课设)
|
8月前
|
NoSQL 关系型数据库 MySQL
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
Docker安装详细步骤及相关环境安装配置(mysql、jdk、redis、自己的私有仓库Gitlab 、C和C++环境以及Nginx服务代理)
720 0