基于QT学生管理系统

首先给大家展示成品效果
点击开始使用即可进入登录页面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我把数据库操作单独封装在一个文件夹里了如下:
程序源码://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";
    else
        qDebug()<<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";
    else
        qDebug()<<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";
    else
        qDebug()<<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";
    else
        qDebug()<<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";
    else
        qDebug()<<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();
    }
    else
        qDebug()<<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_OBJECT

public:
    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();
}

  • 9
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值