首先给大家展示成品效果




我把数据库操作单独封装在一个文件夹里了如下:
程序源码://download.csdn.net/download/wanghonghu1/12255206
头文件:

#ifndef DATABASETOOLS_H
#define DATABASETOOLS_H
#include<QSqlDatabase>
#include<QSqlError>
#include<QSqlQuery>
#include<QString>
#include<QtWidgets>
#include<QDebug>
#include"student.h"
#include<QList>
class databasetools
{public:databasetools();static void getDatabase();//在此函数中,判断数据库是否打开,如果打开则关闭。static void closeDatabase();//调用getDatabase函数后,调用此函数可以创建一个表//表中的字段要求为 学号、姓名、年龄、性别、学院、专业、地址static void createTable();//插入一个学生,此函数的参数分别为数据库中的字段值,一一对应static void insert(QString name,int age,QString sex,QString college,QString major,QString addr);//根据学号来删除一条数据,参数是学号;例如删除学号为3的同学。static void delete_row(int no);//更新学号为no的学生的信息。(除了学号外,其他字段可以更改值)static void update(int no,QString name,int age,QString sex,QString college,QString major,QString addr);//查询所有学生,并将所有学生的数据库信息组装为Student对象后,放入QList来作为返回值static QList<student> query();//使用学号no查找固定一个学生static student query(int no);//静态变量static QSqlDatabase db;static QList<student>list;~databasetools();
};#endif // DATABASETOOLS_H

源文件:

#include "databasetools.h"databasetools::databasetools()
{}
QSqlDatabase databasetools::db;
QList<student> databasetools::list;void databasetools::getDatabase()
{db = QSqlDatabase::addDatabase("QSQLITE");db.setDatabaseName("stu_info.db");db.setUserName("123");if(db.isOpen())qDebug()<<"open database";elseqDebug()<<db.lastError();
}
//在此函数中,判断数据库是否打开,如果打开则关闭。
void databasetools::closeDatabase()
{if(db.isOpen()){db.close();qDebug()<<"close database";}
}
//调用getDatabase函数后,调用此函数可以创建一个表
//表中的字段要求为 学号、姓名、年龄、性别、学院、专业、地址
void databasetools::createTable()
{QSqlQuery sql;sql.prepare("CREATE TABLE IF NOT EXISTS student(no INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NO NULL,age INTEGER,sex TEXT NO NULL,college TEXT NO NULL,major TEXT NO NULL,addr TEXT NO NULL)");if(sql.exec())qDebug()<<"create table sucess";elseqDebug()<<sql.lastError();
}//插入一个学生,此函数的参数分别为数据库中的字段值,一一对应
void databasetools::insert(QString name, int age, QString sex, QString college, QString major, QString addr)
{QSqlQuery sql;sql.prepare("insert into student(name,age,sex,college,major,addr) values(?,?,?,?,?,?)");sql.bindValue(0,name);sql.bindValue(1,age);sql.bindValue(2,sex);sql.bindValue(3,college);sql.bindValue(4,major);sql.bindValue(5,addr);if(sql.exec())qDebug()<<"insert table sucess";elseqDebug()<<sql.lastError();
}//根据学号来删除一条数据,参数是学号;
void databasetools::delete_row(int no)
{QSqlQuery sql;sql.prepare("delete from student where no = ?");sql.bindValue(0,no);if(sql.exec())qDebug()<<"delete table sucess";elseqDebug()<<sql.lastError();
}//更新学号为no的学生的信息。(除了学号外,其他字段可以更改值)
void databasetools::update(int no, QString name, int age, QString sex, QString college, QString major, QString addr)
{QSqlQuery sql;sql.prepare("update student set name = ?,age = ?,sex = ?,college = ?,major = ?,addr = ? where no = ?");sql.bindValue(0,name);sql.bindValue(1,age);sql.bindValue(2,sex);sql.bindValue(3,college);sql.bindValue(4,major);sql.bindValue(5,addr);sql.bindValue(6,no);if(sql.exec())qDebug()<<"update table sucess";elseqDebug()<<sql.lastError();
}
//查询所有学生,并将所有学生的数据库信息组装为Student对象后,放入QList来作为返回值
QList<student> databasetools::query()
{list.clear();student stu;QSqlQuery sql;sql.prepare("select * from student");if(sql.exec()){while(sql.next()){stu.no= sql.value(0).toInt();stu.name= sql.value(1).toString();stu.age= sql.value(2).toInt();stu.sex= sql.value(3).toString();stu.college= sql.value(4).toString();stu.major= sql.value(5).toString();stu.addr= sql.value(6).toString();list.append(stu);}}return list;
}
//使用学号no查找固定一个学生
student databasetools::query(int no)
{student stu;QSqlQuery sql;sql.prepare("select * from student where no = ?");sql.bindValue(0,no);sql.exec();qDebug()<<no;if(sql.first()){stu.no<<sql.value(0).toInt();stu.name= sql.value(1).toString();stu.age= sql.value(2).toInt();stu.sex= sql.value(3).toString();stu.college= sql.value(4).toString();stu.major= sql.value(5).toString();stu.addr= sql.value(6).toString();
//            int no = sql.value(0).toInt();}elseqDebug()<<sql.lastError();return stu;
}
databasetools::~databasetools()
{}

欢迎页面:

#ifndef WELCOME_H
#define WELCOME_H#include <QDialog>
#include"dialog.h"
#include<QTimer>
namespace Ui {class welcome;
}class welcome : public QDialog
{Q_OBJECTpublic:explicit welcome(QWidget *parent = 0);~welcome();private slots:void on_pushButton_clicked();private:Ui::welcome *ui;Dialog *s;};#endif // WELCOME_H#include "welcome.h"
#include "ui_welcome.h"welcome::welcome(QWidget *parent) :QDialog(parent),ui(new Ui::welcome)
{ui->setupUi(this);s = new Dialog(this);setWindowTitle("王洪虎");
}welcome::~welcome()
{delete ui;
}void welcome::on_pushButton_clicked()
{s->show();this->hide();
}

基于QT学生管理系统相关推荐

  1. qt学生管理系统(一)

    主界面: 添加页面dialog: dialog头文件: #ifndef DIALOG_H #define DIALOG_H #include"student.h" #include ...

  2. 基于JAVA学生协会管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA学生协会管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA学生协会管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语 ...

  3. (附源码)ssm学生管理系统 毕业设计 141543

    基于ssm学生管理系统 摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理.在现实运用中,应用软件的工作规则和开发步骤,采用 ...

  4. 基于php学生信息管理系统设计

    获取项目源文件,联系Q:1415736481,可指导毕设,课设 摘要 若干年前,各个学校的学生成绩管理基本上都是靠手工进行,随着学校的规模增大,有关学生信息管理工作所涉及的数据量越来越大,有的学校不得 ...

  5. 基于JAVA家教管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA家教管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA家教管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  6. 基于JAVA车位管理系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA车位管理系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA车位管理系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软 ...

  7. 基于QT的人脸识别考勤管理系统【二】

    前言: 上一篇我们实现了考勤管理系统的用户考勤打卡系统https://blog.csdn.net/qq_42449351/article/details/99716413,这一篇我将为大家带来这个系统 ...

  8. 基于BootStrap,FortAweSome,Ajax的学生管理系统

    一. 基于BootStrap,FortAweSome,Ajax的学生管理系统代码部分 1.students.html <1>html页面文件 <!DOCTYPE html> & ...

  9. 学生管理系统——基于双向循环链表

    基于双向循环链表实现的学生管理系统,包括初始化,插入,删除,查抄,保存,自动按照姓名排序功能,退出并保存功能. 实现思想是将程序的各个部分划分为三个层次.主函数为界面层,即客户端层:其中后缀为Stud ...

  10. 学生管理系统c#语言代码,基于C#语言的学生管理系统的设计(ASP.NET2.0)

    摘  要 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用.学生管理系统是学校管理中不可少的一部分.而基于B/S架构的学生管 ...

最新文章

  1. 基于Cobbler实现多版本系统批量部署
  2. 测试start backup和ndb_restore
  3. leetcode 58. Length of Last Word 题解【C++/Java/Python/JS】
  4. numpy.floor详解
  5. T5 PEGASUS:开源一个中文生成式预训练模型
  6. [转载]让SQL运行得更快
  7. Python3解题:二叉树路径总和问题
  8. Storm精华问答 | Kafka在Storm中的角色是什么?
  9. InnoDB原理篇:如何用好索引
  10. java简历项目经验描述,分分钟搞定!
  11. 计算机标准差平方差怎么按,数学标准差公式
  12. 论文解读--Multi-class Road User Detection with 3+1D Radar in the View-of-Delft Dataset
  13. slim android7 nexus7,新Nexus 7详细拆解:拆装不难,外壳脆弱
  14. Linux下使用磁带机的直接备份操作
  15. 2021-DASCTF-三月赛-Writeup
  16. CodeForces 3B Lorry 贪心
  17. java基础案例教程答案,2021最新版!
  18. Win10桌面我的电脑怎么调出来?最简单方法教学
  19. 药学薛定谔专题干货总结
  20. 【HTML】制作一个简单的浮动广告页面

热门文章

  1. HttpClientHelper
  2. elasticsearch搜索报错ElasticsearchException: failed to map source
  3. 每日170219-20
  4. 阅兵方阵-蓝桥杯国赛
  5. 【活动更新】第一届Openbravo社区早餐会将与5/28在上海举办
  6. CloudStack快速安装使用
  7. [老文档]2015-08-11一种WiFi阶梯式省电控制的策略及装置
  8. 初学者学Python必看的几个练手小项目,轻松不枯燥哦
  9. DataHunter完成千万级A轮融资 打造数据协作平台
  10. Google Earth Engine(GEE)——估计未来人口密度(越南2100年人口预测)