简单的图书管理系统

实现步骤:

先创建一个图书管理系统工程(默认一直点)

 在工程目录中添加sql,qt才能加载数据库对应的类

将准备好的软件盘导入你的工程 

 导入软键盘(可以先把程序跑成功再导入)

 

 

 要放到对应的文件夹中

 

  ui设计界面主要控件:

软件键盘主要控件 

子窗口提升才可以加载软键盘 

 准备工作结束,进入代码。

mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
//数据库相关类头文件
#include <QSqlDatabase>
#include <QSqlQuery>
//消息盒子
#include <QMessageBox>
//列表格相关类头文件
#include <QTableWidgetItem>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();//插入

    void on_pushButton_2_clicked();//删除

    void on_pushButton_3_clicked();//修改

    void on_pushButton_4_clicked();//查看

private:
    Ui::MainWindow *ui;
    QSqlDatabase mydb;//数据库对象

};
#endif // MAINWINDOW_H

mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QDebug"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    //下载安装数据库的驱动
    mydb=QSqlDatabase::addDatabase("QSQLITE");
    mydb.setDatabaseName("./first.db");
    bool ok=mydb.open();
    if(!ok)
    {
        QMessageBox::warning(this,"警告","数据库打开失败",QMessageBox::Ok);
        return ;
    }

    QSqlQuery sqdb(mydb);
    bool ko1=sqdb.exec("create table if not exists booktable(name text,auther text,number text)");
    //bool ko1 = sqdb.exec("CREATE TABLE IF NOT EXISTS booktable(name TEXT, author TEXT, number TEXT)");
     if(!ko1)
     {
         QMessageBox::warning(this,"警告","创建数据表失败",QMessageBox::Ok);
         return ;
     }

     //设置表的列数
     ui->tableWidget->setRowCount(100);
     //设置表格的列数
     ui->tableWidget->setColumnCount(3);
     //设置列名
     ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"书名"<<"作者名"<<"书编号");
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_pushButton_clicked()
{
    //插入书籍
    QSqlQuery sqdb(mydb);
    QString name=ui->le1->text();
    QString auther=ui->le2->text();
    QString number=ui->le3->text();
    QString cmd=QString("insert into booktable values('%1','%2','%3')").arg(name).arg(auther).arg(number);
    bool ok=sqdb.exec(cmd);
    if(!ok)
    {
        QMessageBox::warning(this,"警告","添加书籍失败",QMessageBox::Ok);
    }
}

void MainWindow::on_pushButton_2_clicked()
{
    //删除书籍
    QSqlQuery sqdb(mydb);
    QString name=ui->le4->text();
    QString cmd=QString("delete  from booktable where name='%1'").arg(name);
    bool ok=sqdb.exec(cmd);
    if(!ok)
    {
        QMessageBox::warning(this,"警告","删除数据失败",QMessageBox::Ok);
    }
    if(sqdb.numRowsAffected()==0)
    {
         QMessageBox::warning(this, "警告", "删除数据失败未找到要删除的数据", QMessageBox::Ok);
    }
}

void MainWindow::on_pushButton_3_clicked()
{
    //修改书籍信息
    QSqlQuery sqdb(mydb);
    QString name=ui->le5->text();
    QString newname=ui->le6->text();
    QString newauther=ui->le7->text();
    QString newnumber=ui->lineEdit_5->text();
    if(!newname.isEmpty())//判断编辑框中是否为空
    {
        QString cmd=QString("update booktable set name='%1' where name='%2'").arg(newname).arg(name);
        bool ok=sqdb.exec(cmd);
        if(!ok)
        {
            QMessageBox::warning(this,"警告","修改数据失败",QMessageBox::Ok);
        }

    }
    if(!newauther.isEmpty())
    {
        QString cmd=QString("update booktable set auther='%1' where name='%2'").arg(newauther).arg(name);
        bool ok=sqdb.exec(cmd);
        if(!ok)
        {
            QMessageBox::warning(this,"警告","修改数据失败",QMessageBox::Ok);
        }

    }
    if(!newnumber.isEmpty())
    {
        QString cmd=QString("update booktable set number='%1' where name='%2'").arg(newnumber).arg(name);
        bool ok=sqdb.exec(cmd);
        if(!ok)
        {
            QMessageBox::warning(this,"警告","修改数据失败",QMessageBox::Ok);
        }

    }
    if(sqdb.numRowsAffected()==0)//没有找到
    {
         QMessageBox::warning(this, "警告", "修改数据失败未找到要修改的数据", QMessageBox::Ok);
    }
}

void MainWindow::on_pushButton_4_clicked()
{
    int i=0;
    ui->tableWidget->clear();
    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"书名"<<"作者名"<<"书编号");
    //查看书籍列表
    QSqlQuery sqdb(mydb);
    QString cmd=QString("select * from booktable");
    bool ok=sqdb.exec(cmd);
    if(!ok)
    {
        QMessageBox::warning(this,"警告","查询失败",QMessageBox::Ok);
    }
    while (sqdb.next())
    {
        QTableWidgetItem *item1=new QTableWidgetItem(sqdb.value(0).toString());
        ui->tableWidget->setItem(i,0,item1);
        QTableWidgetItem *item2=new QTableWidgetItem(sqdb.value(1).toString());
        ui->tableWidget->setItem(i,1,item2);
        QTableWidgetItem *item3=new QTableWidgetItem(sqdb.value(2).toString());
        ui->tableWidget->setItem(i,2,item3);
        i++;

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值