基于QT的学生管理系统(数据库)

头文件

#ifndef STUSQLDIALOG_H
#define STUSQLDIALOG_H

#include <QDialog>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlQueryModel>
#include <QSqlError>
#include <QDebug>
#include <QMessageBox>

namespace Ui {
class stuSqlDialog;
}

class stuSqlDialog : public QDialog
{
    Q_OBJECT

public:
    explicit stuSqlDialog(QWidget *parent = 0);
    ~stuSqlDialog();

private:
    //创建数据库
    void createDB();
    //创建数据表
    void createTable();
    //查询
    void queryTable();
private slots:
    //插入按钮槽函数
    void on_pushButton_intsert_clicked();
    //删除按钮槽函数
    void on_pushButton_deleta_clicked();
    //修改按钮槽函数
    void on_pushButton_update_clicked();
    //排序按钮槽函数
    void on_pushButton_sort_clicked();

private:
    Ui::stuSqlDialog *ui;
    QSqlDatabase db;//建立QT和数据库链接
    QSqlQueryModel model;//保存结果集
};

#endif // STUSQLDIALOG_H

源文件

#include "stusqldialog.h"
#include "ui_stusqldialog.h"

//解决输出中文乱码
//#if _MSC_VER >= 1600
//#pragma execution_character_set("utf-8")
//#endif
//或
#pragma execution_character_set("utf-8")

stuSqlDialog::stuSqlDialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::stuSqlDialog)
{
    ui->setupUi(this);
    createDB();
    createTable();
    queryTable();
}

stuSqlDialog::~stuSqlDialog()
{
    delete ui;
}
//创建数据库
void stuSqlDialog::createDB()
{
    //添加数据库驱动
    db = QSqlDatabase::addDatabase("QSQLITE");
    //设置数据库名字(文件名)
    db.setDatabaseName("student.db");
    //打开数据库
    if(db.open()==true){
        qDebug() << "创建/打开数据库成功。";
    }
    else{
         qDebug() << "创建/打开数据库失败。";
    }

}
//创建数据表
void stuSqlDialog::createTable()
{
    QSqlQuery query;//无参创建,针对之前打开的默认数据库
    QString str = QString("CREATE TABLE student("
                          "id INT PRIMARY KEY NOT NULL,"
                          "name TEXT NOT NULL,"
                          "score REAL NOT NULL)");

   if(query.exec(str)==false){//执行sql语句
       qDebug() << str;
   }
   else{
       qDebug() << "创建数据表成功。";
   }
}
//查询显示数据表
void stuSqlDialog::queryTable()
{
    QString str = QString("SELECT * FROM student");
    model.setQuery(str);
    ui->tableView->setModel(&model);//控件显示数据表
}
//插入按钮槽函数
void stuSqlDialog::on_pushButton_intsert_clicked()
{
    QSqlQuery query;
    //获取学号、姓名、分数
    int id = ui->lineEdit_id->text().toInt();
    if(id == 0){
        QMessageBox::critical(this,"ERROR","ID输入错误");
        return;
    }

    QString name = ui->lineEdit_name->text();
    if(name == ""){
        QMessageBox::critical(this,"ERROR","姓名输入错误");
        return;
    }

    double score = ui->lineEdit_score->text().toDouble();
    if(score < 0 || score > 100){
        QMessageBox::critical(this,"ERROR","成绩输入错误");
        return;
    }
    QString str = QString("INSERT INTO student VALUES(%1,'%2',%3)").arg(id).arg(name).arg(score);


    if(query.exec(str) == false){
        qDebug() << str;
    }
    else{
        qDebug() << "插入数据成功。";
        queryTable();
    }
}
//删除按钮槽函数
void stuSqlDialog::on_pushButton_deleta_clicked()
{
    QSqlQuery query;
    int id = ui->lineEdit_id->text().toInt();
    QString str = QString("DELETE FROM student WHERE id = %1").arg(id);

    if(QMessageBox::question(this,"删除","确定要删除吗",QMessageBox::Yes|QMessageBox::No) == QMessageBox::No){
        return;
    }
    if(query.exec(str) == false){
        qDebug() << str;
    }
    else{
        qDebug() << "删除数据成功。";
        queryTable();
    }
}
//修改按钮槽函数
void stuSqlDialog::on_pushButton_update_clicked()
{
    QSqlQuery query;
    //获取学号、分数
    int id = ui->lineEdit_id->text().toInt();
    double score = ui->lineEdit_score->text().toDouble();
    QString str = QString("UPDATE student SET score = %1 WHERE id = %2").arg(score).arg(id);

    if(query.exec(str) == false){
        qDebug() << str;
    }
    else{
        qDebug() << "修改数据成功。";
        queryTable();
    }
}
//排序按钮槽函数
void stuSqlDialog::on_pushButton_sort_clicked()
{
   //获取排序依据
    QString value = ui->comboBox_value->currentText();//列名称与ui界面排序依据一致
    //获取排序方式
    QString condition;
    if(ui->comboBox_cond->currentIndex() == 0){
        condition = "ASC";//升序
    }
    else{
        condition = "DESC";
    }
    QString str = QString("SELECT * FROM student ORDER BY %1 %2").arg(value).arg(condition);

    model.setQuery(str);//将查询结果保存到model对象
    ui->tableView->setModel(&model);//重新显示

}

ui界面
在这里插入图片描述
https://www.bilibili.com/video/BV1Wf4y1Y7uh?p=22

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt学生管理系统是一款基于C/S(Client/Server)架构的软件。C/S架构是一种传统的软件架构模式,它采用客户端和服务器之间的分布式模式进行通信,其中客户端负责用户界面的展示和交互,服务器则处理客户端请求并存储数据。 在Qt学生管理系统中,客户端是以桌面应用的形式呈现的,它提供了用户友好的界面,使学生、教师和管理员可以方便地进行操作。客户端通过与服务器建立网络连接来传输数据和请求,因此,在C/S架构中,客户端和服务器之间的通信主要是通过网络实现的。 服务器端负责处理客户端发送过来的请求,包括对学生信息的增加、删除、修改以及查询等操作。服务器还负责存储学生信息的数据库,并且对数据进行管理和维护。通过使用Qt的网络模块,服务器可以监听来自客户端的连接请求,并在连接建立后接收和处理客户端的请求。 使用C/S架构的Qt学生管理系统具有很多优势。首先,由于客户端和服务器分别完成不同的功能,使得系统可以更好地进行模块化设计和开发,提高了系统的可维护性和可扩展性。其次,C/S架构可以实现客户端与服务器之间的分布式部署,提高了系统的并发性和响应速度,可以满足多用户同时访问系统的需求。此外,使用C/S架构还可以实现数据的集中管理和备份,确保了数据的安全性和稳定性。 总的来说,Qt学生管理系统采用C/S架构,充分发挥了客户端和服务器的特点,实现了学生信息的管理和分布式处理,提高了系统的性能和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值