基于Qt与MySQL的学生信息管理系统(含数据库连接)

使用的QT版本:5.9.0

使用的数据库:MySQL

下面是我的整个学生信息管理系统的框架

连接数据库

1.确保自己的qt的位数是和MySQL是相同的(同为32位或是64位)

2.在.pro文件中加入  qt += sql

3.添加以下代码(需要#include <QSqlDatabase>

  QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  db.setHostName("127.0.0.1");
  db.setPort(3306);
  db.setDatabaseName("数据库名称");
  db.setUserName("账号");
  db.setPassword("密码");

 4.若连接不了,报错,则下载ODBC进行连接并且把以上代码"QMYSQL"改为"QODBC"

下面成品展示

 

 最后有源码

 界面切换的实现

#include <QStackedLayout>

使用该库实现多界面的转换功能

QStackedLayout继承自QLayout

QStackedLayout类提供了多页面切换的布局,一次只能看到一个界面。

QStackedLayout可用于创建类似于QTabWidget提供的用户界面。

#include "widget.h"             //必须包含各个界面的头文件,不加用不了他的构造函数
#include "ui_widget.h"
#include <QStackedLayout>
#include "addstudentwidget.h"
#include "menuwidget.h"
#include "selectwidget.h"
#include "changeinfowidget.h"
#include "createwidget.h"
#include "login.h"
#include "coursewidget.h"
#include "student.h"
#include "forgetwidget.h"
#include <QApplication>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    setFixedSize(750,430);
    setWindowTitle("学生信息管理系统");

    menuwidget = new menuWidget;               //添加相关头文件
    addstudentWidget = new addstudentwidget;
    selectwidget = new selectWidget;
    changeinfoWidget = new changeinfowidget;
    Login = new login;
    createWidget = new createwidget;
    courseWidget = new coursewidget;
    Student = new student;
    forgetWidget = new forgetwidget;

    stackLayout = new QStackedLayout;

    stackLayout->addWidget(Login);//0
    stackLayout->addWidget(menuwidget);//1
    stackLayout->addWidget(addstudentWidget);//2
    stackLayout->addWidget(selectwidget);//3
    stackLayout->addWidget(changeinfoWidget);//4
    stackLayout->addWidget(createWidget);//5
    stackLayout->addWidget(courseWidget);//6
    stackLayout->addWidget(Student);//7
    stackLayout->addWidget(forgetWidget);//8

    setLayout(stackLayout);
    connect(Login, &login::display, stackLayout, &QStackedLayout::setCurrentIndex);
    connect(menuwidget, &menuWidget::display, stackLayout, &QStackedLayout::setCurrentIndex);
    connect(addstudentWidget, &addstudentwidget::display, stackLayout, &QStackedLayout::setCurrentIndex);
    connect(selectwidget, &selectWidget::display, stackLayout, &QStackedLayout::setCurrentIndex);
    connect(changeinfoWidget, &changeinfowidget::display, stackLayout, &QStackedLayout::setCurrentIndex);
    connect(createWidget, &createwidget::display, stackLayout, &QStackedLayout::setCurrentIndex);
    connect(courseWidget, &coursewidget::display, stackLayout, &QStackedLayout::setCurrentIndex);
    connect(Student, &student::display, stackLayout, &QStackedLayout::setCurrentIndex);
    connect(forgetWidget, &forgetwidget::display, stackLayout, &QStackedLayout::setCurrentIndex);
}

信号与槽的实现

在头文件中加入该信号:

signals:
    void display(int number);

中间传入的数字对应于上面代码中注释的界面

举例一个槽函数

void menuWidget::on_addbutton_clicked(){
    emit display(2);
}

点击添加学生信息直接跳转

 

 学生数据的增删改查

 主要通过QsqlQuery头文件实现,和tableview的控件展示表的内容

#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QSqlTableModel>



QSqlTableModel * model = new QSqlTableModel(this);
QSqlQueryModel * qmodel = new QSqlQueryModel;
model->setTable("all_students");
model->select();
model->setEditStrategy(QSqlTableModel::OnManualSubmit);//设置编辑策略
QString str = QString("SELECT * FROM all_students");//语句和MySQL的增删改查语句完全一样
qmodel->setQuery(str);
ui->tableView->setModel(qmodel);
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//只读模式

https://download.csdn.net/download/qq_16656875/20585834?spm=1001.2014.3001.5503

源代码下载

哈哈哈,小白在学校期间的练手作品,很粗糙,很简陋,bug也有,但是对于新手来说还是很具有参考价值的,不喜勿喷,指出问题,共同进步。 项目简介: 1.项目名称:学生信息管理与收发系统(客户端+服务器)-(学生端-服务器-教师端) 2.使用工具:QT Creator 5.6 + Mysql5.6; 3.使用技术:C/S(客户端-服务器)、TCP/IP(协议)、socket、多线程、数据库; 4.项目描述:1)服务器:服务器监听一个IP地址,用来连接教师端和学生端,用于数据转发(eg:教师端发消息到服务器,在由服务器发消息到学生端); 2)教师端:教师端的主要功能是选择需要发送的学生(可以发送给不在线学生),输入将要发送给一部分学生的表格名(标题),和1-8个字段名(不能重复,因为数据库中的字段名不能重复),在点击发送后由服务器转发给学生端。在学生端收到消息并且提交消息后可以查询学生的信息和提交的信息,还可以将数据表导出成xls文件。文件发送还没有完成0.0…… 3)学生端:学生端可以编辑个人信息。学生端可以查询收到的并未提交的数据表并且提交信息。(可以收到离线信息)(在线学生收到消息提示后从数据库中查找教师端所发出的数据)(不在线学生在上线后从数据库中查找数据)。文件发送还没有完成0.0…… 5.注意事项:本系统只能用于局域网中的数据传输,并且由于本项目是在学校完成后并没有改动,所以服务器所监听的地址为我本身的地址,在下载后本系统是不可用的。还有就是数据库的问题,数据库是我在花钱买的一个远程服务器上搭建的,所以数据库也是不可用的。因此 1)在拿到本系统的代码时应该修改IP地址(服务器-教师端-学生端)改为你所需要的。 2)在拿到本系统的代码时应该把我所发的数据库加入到你的数据库中,并且修改代码中跟数据库有关的代码。 代码我就不贴了,自己下载看吧。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值