源码资源:https://gitee.com/dxl96/qt_resource/blob/master/%E5%AD%A6%E7%94%9F%E4%BF%A1%E6%81%AF%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F.zip

以下是效果图

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QString>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QtWidgets>
#include <QTimer>
#include "insertdialog.h"
#include "updatedialog.h"namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);// 刷新表格void tableReflash(QString selectSql = QString());~MainWindow();private slots://-----------------------------------界面转到槽函数----------------void on_add_pushButton_clicked();void on_change_pushButton_clicked();void on_delete_pushButton_clicked();void on_refer_pushButton_clicked();//-----------------------------------自定义槽函数----------------void changeBackground(); // 更改背景
private:Ui::MainWindow *ui;QSqlDatabase db;// 背景色集合QList<QString> backgrounds;// 当前指向景色集合的索引int backgroundIndex;// 初始化背景色集合void initBackgrounds();// 单元格设置void cellSetting(int row, int column, QString text);// 删除学生信息void deleteStudent();// 查询学生信息void selectStudent();
};#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);setWindowTitle("学生信息管理系统");// 设置输入框提示信息ui->select_param_edit->setToolTip("查询支持模糊查询,输入姓名或者学号关键词即可");// 设置列表第一列宽度100ui->information_tableWidget->setColumnWidth(0,100);// 设置列表自动填充满窗口ui->information_tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);// 设置列表列头ui->information_tableWidget->setColumnCount(7);ui->information_tableWidget->setHorizontalHeaderItem(0, new QTableWidgetItem("*选择栏"));ui->information_tableWidget->setHorizontalHeaderItem(1, new QTableWidgetItem("主键(id)"));ui->information_tableWidget->setHorizontalHeaderItem(2, new QTableWidgetItem("学生姓名"));ui->information_tableWidget->setHorizontalHeaderItem(3, new QTableWidgetItem("学生学号"));ui->information_tableWidget->setHorizontalHeaderItem(4, new QTableWidgetItem("学生专业"));ui->information_tableWidget->setHorizontalHeaderItem(5, new QTableWidgetItem("学生年龄"));ui->information_tableWidget->setHorizontalHeaderItem(6, new QTableWidgetItem("学生性别"));db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("my.db");if(db.open()){qDebug()<<"打开成功";}QString createSql = "create table student(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,studentName VARCHAR(30),studentNumber VARCHAR(30),""studentCollege VARCHAR(30),studentAge VARCHAR(30),studentSex VARCHAR(30))";qDebug()<<createSql;QSqlQuery query;if(query.exec(createSql)){qDebug()<<"创建成功";} else {qDebug()<<"创建失败,表或已存在";}// 刷新表格数据tableReflash();// 初始化背景色集合数据initBackgrounds();// 定时改变背景,20秒切换一次QTimer* backgroundTimer = new QTimer(this);backgroundTimer->start(20000);connect(backgroundTimer,SIGNAL(timeout()),this,SLOT(changeBackground()));// 隐藏工具栏和状态栏this->statusBar()->hide();ui->mainToolBar->setVisible (false);
}MainWindow::~MainWindow()
{delete ui;
}// 初始化背景色集合
void MainWindow::initBackgrounds()
{this->backgrounds.append("background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 white,stop:1 white);");this->backgrounds.append("background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #79F1A4,stop:1 #0E5CAD);");this->backgrounds.append("background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #97ABFF,stop:1 #123597);");this->backgrounds.append("background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #90F7EC,stop:1 #32CCBC);");this->backgrounds.append("background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #43CBFF,stop:1 #9708CC);");this->backgrounds.append("background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #5EFCE8,stop:1 #736EFE);");this->backgrounds.append("background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #FFD26F,stop:1 #3677FF);");this->backgrounds.append("background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #92FFC0,stop:1 #002661);");this->backgrounds.append("background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #C2FFD8,stop:1 #465EFB);");this->backgrounds.append("background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #81FFEF,stop:1 #F067B4);");this->backgrounds.append("background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 #FFF886,stop:1 #F072B6);");
}// 更改背景
void MainWindow::changeBackground()
{if(backgroundIndex < backgrounds.size()) {this->setStyleSheet(backgrounds.at(backgroundIndex));backgroundIndex++;} else {backgroundIndex = 0;}
}// 添加按钮点击事件
void MainWindow::on_add_pushButton_clicked()
{insertDialog* student_insert = new insertDialog(this);student_insert->setAttribute(Qt::WA_DeleteOnClose); // 关闭时销毁对象student_insert->setModal(true); // 设置为模态窗口,即窗口打开后只能该修改界面操作,不能在其他窗口进行操作,保证操作时的唯一性student_insert->show();
}// 修改按钮点击事件
void MainWindow::on_change_pushButton_clicked()
{int rowCount = ui->information_tableWidget->rowCount();QList<int> ids;for(int row = 0;row<rowCount;row++) {QTableWidgetItem * item = ui->information_tableWidget->item(row,0);Qt::CheckState status = item->checkState();if(status == Qt::CheckState::Checked) {QLineEdit* idItem = (QLineEdit*) ui->information_tableWidget->cellWidget(row, 1);ids.append(idItem->text().toInt());}}if(ids.isEmpty()) {QMessageBox::information(this,"提示","请先勾选要修改的行");return;}if(ids.size() > 1) {QMessageBox::information(this,"提示","修改时只能勾选单行数据");return;}updateDialog* student_update = new updateDialog(this);student_update->setAttribute(Qt::WA_DeleteOnClose); // 关闭时销毁对象student_update->setModal(true); // 设置为模态窗口,即窗口打开后只能该修改界面操作,不能在其他窗口进行操作,保证操作时的唯一性student_update->load(ids.at(0));student_update->show();
}// 删除按钮点击事件
void MainWindow::on_delete_pushButton_clicked()
{deleteStudent();
}// 查询按钮点击事件
void MainWindow::on_refer_pushButton_clicked()
{selectStudent();
}// 设置单元格信息
void MainWindow::cellSetting(int row, int column, QString text)
{QLineEdit* lineEdit = new QLineEdit(text);lineEdit->setStyleSheet("border: 0px;color:black"); // 设置该输入框无边框,黑色字体// 设置只读lineEdit->setReadOnly(true);ui->information_tableWidget->setCellWidget(row, column, lineEdit);
}// 删除学生信息
void MainWindow::deleteStudent()
{int rowCount = ui->information_tableWidget->rowCount();QList<int> ids;for(int row = 0;row<rowCount;row++) {QTableWidgetItem * item = ui->information_tableWidget->item(row,0);Qt::CheckState status = item->checkState();if(status == Qt::CheckState::Checked) {QLineEdit* idItem = (QLineEdit*) ui->information_tableWidget->cellWidget(row, 1);ids.append(idItem->text().toInt());}}if(ids.isEmpty()) {QMessageBox::information(this,"提示","请先勾选要删除的行");return;}qDebug()<<"删除数据ids: "<<ids;QString idsStr = "";for(int i = 0;i< ids.size();i++) {if(i == 0) {idsStr = idsStr + QString::number(ids.at(i));} else {idsStr = idsStr + ","+QString::number(ids.at(i));}}QString sql = "delete from student where id in(" + idsStr + ")";qDebug()<<sql;QSqlQuery query;if(query.exec(sql)) {// 刷新表格tableReflash();QMessageBox::information(this,"成功","删除成功");} else {QMessageBox::information(this,"失败","删除失败");}
}// 查询学生信息
void MainWindow::selectStudent()
{QString searchParam = ui->select_param_edit->text().trimmed();if(searchParam.isEmpty()) {tableReflash();return;}tableReflash(QString("select id,studentName,studentNumber,studentCollege,studentAge,studentSex from student where studentName like \"%1%2\" or studentNumber like \"%3%4\"").arg(searchParam,"%",searchParam,"%"));
}// 刷新表格数据
void MainWindow::tableReflash(QString selectSql)
{// 先移除表格所有行for(int row = ui->information_tableWidget->rowCount() - 1;row >= 0; row--){ui->information_tableWidget->removeRow(row);}// 查询数据添加到表格QSqlQuery query;if(selectSql.isEmpty()) {QString sql = "select id,studentName,studentNumber,studentCollege,studentAge,studentSex from student order by id desc";qDebug()<<sql;query.exec(sql);} else {qDebug()<<selectSql;query.exec(selectSql);}int row =0;while(query.next()){int index_row =ui->information_tableWidget->rowCount();ui->information_tableWidget->setRowCount(index_row+1);// 第一列插入复选框QTableWidgetItem *check = new QTableWidgetItem();check->setCheckState(Qt::Unchecked);check->setFlags(check->flags() ^ Qt::ItemIsEditable);ui->information_tableWidget->setItem(row,0,check); //插入复选框cellSetting(row,1, query.value(0).toString());cellSetting(row,2, query.value(1).toString());cellSetting(row,3, query.value(2).toString());cellSetting(row,4, query.value(3).toString());cellSetting(row,5, query.value(4).toString());cellSetting(row,6, query.value(5).toString());qDebug()<<query.value(0).toString()<<","<<query.value(1).toString()<<","<<query.value(2).toString()<<","<<query.value(3).toString()<<","<<query.value(4).toString()<<","<<query.value(5).toString();row++;}
}

insertdialog.h

#ifndef INSERTDIALOG_H
#define INSERTDIALOG_H#include <QMainWindow>
#include <QDialog>namespace Ui {
class insertDialog;
}class insertDialog : public QDialog
{Q_OBJECTpublic:explicit insertDialog(QWidget *parent = 0);~insertDialog();private slots:void on_insert_pushButton_clicked();private:Ui::insertDialog *ui;
};#endif // INSERTDIALOG_H

insertdialog.cpp

#include "insertdialog.h"
#include "ui_insertdialog.h"
#include "ui_mainwindow.h"
#include "mainwindow.h"
#include <QSqlQuery>insertDialog::insertDialog(QWidget *parent) :QDialog(parent),ui(new Ui::insertDialog)
{ui->setupUi(this);setWindowTitle("新增学生信息");
}insertDialog::~insertDialog()
{delete ui;
}void insertDialog::on_insert_pushButton_clicked()
{QString student_name = ui->studentname_lineEdit->text().trimmed();QString student_number = ui->studentnumber_ineEdit->text().trimmed();QString student_college = ui->studentcollege_lineEdit->text().trimmed();QString student_age =ui->studentage_lineEdit->text().trimmed();QString student_sex =ui->studentsex_lineEdit->text().trimmed();if(student_name.isEmpty() || student_number.isEmpty() ||student_college.isEmpty() || student_age.isEmpty() ||student_sex.isEmpty()){QMessageBox::information(this,"提示","请输入完整");return;}QSqlQuery query;QString sql = QString("select count(1) from student where studentNumber = \"%1\"").arg(student_number);qDebug()<<sql;query.exec(sql);while(query.next()){int count = query.value(0).toInt();if(count > 0) {QMessageBox::information(this,"提示","学号已存在");return;}}QString insertSql = QString("insert into student (studentName,studentNumber,studentCollege,studentAge,studentSex) values (\"%1\",\"%2\",\"%3\",\"%4\",\"%5\")").arg(student_name,student_number,student_college,student_age,student_sex);qDebug()<<insertSql;if(query.exec(insertSql)){// 关闭窗口close();// 刷新列表MainWindow* mainWidget = (MainWindow*) parentWidget();mainWidget->tableReflash();QMessageBox::information(this,"成功","插入成功");}elseQMessageBox::information(this,"失败","插入失败");}

updatedialog.h

#ifndef UPDATEDIALOG_H
#define UPDATEDIALOG_H#include <QDialog>namespace Ui {
class updateDialog;
}class updateDialog : public QDialog
{Q_OBJECTpublic:explicit updateDialog(QWidget *parent = 0);// 通过学生表id字段值加载数据到修改界面void load(int id);~updateDialog();private slots:void on_update_pushButton_clicked();private:Ui::updateDialog *ui;// id,学生信息的id字段值int id;
};#endif // UPDATEDIALOG_H

updatedialog.cpp

#include "updatedialog.h"
#include "ui_updatedialog.h"
#include "mainwindow.h"
#include <QSqlQuery>
updateDialog::updateDialog(QWidget *parent) :QDialog(parent),ui(new Ui::updateDialog)
{ui->setupUi(this);setWindowTitle("修改学生信息");
}void updateDialog::load(int id)
{this->id = id;QSqlQuery query;query.exec(QString("select studentName,studentNumber,studentCollege,studentAge,studentSex from student where id = %1").arg(QString::number(id)));QString studentName;QString studentNumber;QString studentCollege;QString studentAge;QString studentSex;while(query.next()){studentName = query.value(0).toString();studentNumber = query.value(1).toString();studentCollege = query.value(2).toString();studentAge = query.value(3).toString();studentSex = query.value(4).toString();}ui->number_lineEdit->setText(studentNumber);ui->number_lineEdit->setReadOnly(true);ui->namechange_lineEdit->setText(studentName);ui->numberchange_lineEdit->setText(studentNumber);ui->collegechange_lineEdit->setText(studentCollege);ui->agechange_lineEdit->setText(studentAge);ui->sexchange_lineEdit->setText(studentSex);
}updateDialog::~updateDialog()
{delete ui;
}void updateDialog::on_update_pushButton_clicked()
{QString number = ui->number_lineEdit->text().trimmed();QString namechange =ui->namechange_lineEdit->text().trimmed();QString numberchange = ui->numberchange_lineEdit->text().trimmed();QString collegechange = ui->collegechange_lineEdit->text().trimmed();QString agechange =ui->agechange_lineEdit->text().trimmed();QString sexchange =ui->sexchange_lineEdit->text().trimmed();if(number.isEmpty() || namechange.isEmpty() ||collegechange.isEmpty() || numberchange.isEmpty() ||agechange.isEmpty() || sexchange.isEmpty()){QMessageBox::information(this,"提示","请输入完整内容");return;}QString  countSql = QString("select count(1) from student where studentNumber = \"%1\" and id != %2").arg(numberchange, QString::number(id));qDebug()<<countSql;QSqlQuery query;query.exec(countSql);while(query.next()){int count = query.value(0).toInt();if(count > 0) {QMessageBox::information(this,"提示","已经存在相同的学号");return;}}QString sql = QString("update student set studentName=\"%1\" ,studentNumber = \"%2\",""studentCollege =\"%3\" ,studentAge =\"%4\",studentSex  =\"%5\" where id =%6").arg(namechange,numberchange,collegechange,agechange,sexchange,QString::number(id));qDebug()<<sql;if(query.exec(sql)){// 关闭窗口close();// 刷新表格数据MainWindow* mainWindow = (MainWindow*) parentWidget();mainWindow->tableReflash();QMessageBox::information(this,"成功","修改成功");}elseQMessageBox::information(this,"失败","修改失败");
}

如何用qt实现学生信息管理系统相关推荐

  1. Qt开发学生信息管理系统

    在本项目中,我们将使用Qt开发一个简单的学生信息管理系统,实现以下功能: 添加学生信息(姓名.学号.性别.年龄.班级): 显示学生信息列表: 根据学号或姓名搜索学生信息: 修改学生信息: 删除学生信息 ...

  2. Linux学生QT成绩查询系统大作业报告,GitHub - cxc1357/Student-Information-Manage-System: QT实现的学生信息管理系统,高程大作业...

    学生信息管理系统 一.系统指南 本系统为表格式的学生信息管理系统,提供了文件新建.打开及保存功能,还可在表格中对数据进行增加.删除.修改.搜索,下面将一一介绍这些功能 1.新建文件 新建文件将会产生一 ...

  3. QT大作业之---学生信息管理系统

    金樽清酒斗十千,玉盘珍羞直万钱. 停杯投箸不能食,拔剑四顾心茫然. 欲渡黄河冰塞川,将登太行雪满山. 闲来垂钓碧溪上,忽复乘舟梦日边. 行路难!行路难!多歧路,今安在? 长风破浪会有时,直挂云帆济沧海 ...

  4. QT学生信息管理系统

    QT学生信息管理系统 项目描述 效果图 登录页面 管理员页面 用户页面 数据库表 用户表 学生表 项目描述 使用QT5.14和SQLite3 本项目分为登录界面,管理员界面,用户界面等界面.使用QSt ...

  5. 学生信息管理系统QT版本(附带qchart组件)

    此程序采用qt5编写与实现,编译器采用的为gcc32位,Windows10测试 需要用到的库:core gui charts 程序有点bug存在,但终究能用 github开源地址 废话不多说,上代码 ...

  6. Java项目开发,学生信息管理系统

    Java项目开发,学生信息管理系统 @author:Mr.Gu @date:2020/5/31 开发时间大二年级,数据结构综合实习 文章目录 Java项目开发,学生信息管理系统 开发效果 开发要求 开 ...

  7. python:pyqt5+mysql=学生信息管理系统(图文并茂,超详细)——登录,注册及找回密码篇

    python:pyqt5+mysql=学生信息管理系统(图文并茂,超详细)--登录,注册及找回密码篇 前言 一.pyqt5是什么? 二.代码方面 1.引入库及效果展示 2.首先介绍一下登录,注册及密码 ...

  8. python:pyqt5+mysql=学生信息管理系统(图文并茂,超详细, 附源码)——增删改查篇

    python:pyqt5+mysql=学生信息管理系统(图文并茂,超详细, 附源码)--增删改查篇 前言 一.主界面的样式 二.学生信息的增,删,改,查 1.增加学生信息 2.删除学生信息 3.更改学 ...

  9. C++实践项目一:学生信息管理系统(内附完整代码)

    引言 这几乎是任何一门语言的经典案例. 管理信息系统. MIS(管理信息系统--Management Information System)系统 ,是一个由人.计算机及其他外围设备等组成的能进行信息的 ...

最新文章

  1. 鼠标放在图片连接上面,预览图片
  2. go微服务框架go-micro深度学习(五) stream 调用过程详解
  3. 第二篇: Mysql____语法格式——键值
  4. ZeroC ICE的远程调用框架 代理引用地址
  5. 手把手教你用ECharts画折线图
  6. golang 锁的使用
  7. “机海战术”已死!后智能手机时代靠什么才能赢?
  8. 有k个list列表, 各个list列表的元素是有序的,将这k个列表元素进行排序( 基于堆排序的K路归并排序)...
  9. 保乐力加在四川峨眉山兴建中国首家麦芽威士忌酒厂
  10. 色彩管理实验 matlab,EFI色彩管理实验指导手册.doc
  11. 百度搜索引擎结果网址参数_反馈搜索结果用时(rsv_sug4)
  12. MyBatis-第三章 动态SQL
  13. 小程序实现商品详情页的tap标签与页面滚动联动效果
  14. 上海大学计算机学院2021,2020-2021学年秋季学期新生选课通知
  15. 进大专好还是去北大青鸟这类培训机构好呢?
  16. 机房收费系统——验收报告
  17. 固原2021年高考成绩查询,固原高考成绩查询入口
  18. [观点]诺基亚是如何衰落的
  19. MSSQL账号+IP限制登录限制触发器
  20. 关于C#控制台的详解

热门文章

  1. 四川SFSCB-A15/4PY智能浪涌后备保护器 遥信功能 上传防雷系统平台
  2. 访问远程Redis服务。Connect to Remote Redis Server
  3. ESM2蛋白预训练模型 蛋白质、氨基酸向量表示
  4. 字节跳动或推独立出口电商APP,亚马逊阿里虾皮:不慌
  5. (均方、均方根、平均绝对值、标准)误差
  6. ECMAScript 6 简明教程
  7. UVA1335-Beijin Guards(二分)
  8. Web全栈~05.CSS属性
  9. 2019-9-17【Javase】object、final、实现关系、抽象类、接口、多态、UML类图
  10. 使用ORACLE DBCA创建数据库