国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Qt實現(xiàn)圖書管理系統(tǒng)(C++)

這篇具有很好參考價值的文章主要介紹了Qt實現(xiàn)圖書管理系統(tǒng)(C++)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

數(shù)據(jù)庫表的實現(xiàn)

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

創(chuàng)建表

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

創(chuàng)建三個表
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

將powerDesigner里面的表導(dǎo)出成xxx.sql腳本

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
此時就會生成文件在桌面了
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

將SQL文件導(dǎo)入數(shù)據(jù)庫創(chuàng)建表

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
運行sql文件
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
設(shè)置主鍵自增

圖書管理系統(tǒng)思維導(dǎo)圖

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

創(chuàng)建工程

在qt上創(chuàng)建一個工程項目

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

把這個四個文件發(fā)到controller文件夾下,在創(chuàng)建一個dao文件夾

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

controller文件夾下面是一些界面類和邏輯類,dao文件夾下就是和數(shù)據(jù)庫交互的

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

進入項目

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

加上這一句話

include($$PWD/controller/controller.pri)
正在右鍵項目執(zhí)行qmake
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

添加一句這個以后生成的目標文件都在這里(當(dāng)前文件目錄的上一級創(chuàng)建一個bin 文件夾

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

開發(fā)階段

創(chuàng)建Dlg_login登錄頁面

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

login頁面樣式
QLabel#le_title{font:38px '方正姚體';}
QLabel#name,QLabel#pwd{font: 18px '楷體';}
QLineEdit{border-radius:4px;min-height:25px;border:1px solid gray;}
QPushButton{border-radius:4px;background-color:#409eff;color:white;font-size:18px;}
QWidget#bg{background:white;}
主頁頁面布局

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

主函數(shù)測試login
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //實現(xiàn)登錄
    Dlg_login dlg;
    int ret=dlg.exec();
    if(1==ret){
        Cell_main w;
        w.show();
        return a.exec();
    }
    if(0==ret){
        exit(0);
        return 0;
    }
    return 0;

}

實現(xiàn)Dlg_login函數(shù)

void Dlg_login::on_btn_login_clicked()
{
    setResult(1);
    this->hide();
}


void Dlg_login::on_btn_exit_clicked()
{
    setResult(0);
    this->hide();
}

設(shè)置logo

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
在資源文件中添加一個app.rc文件,在打開這個app.rc文件 添加一句話:

IDI_ICON1 ICON DISCARDABLE “tubiao.ico”
再把這個ico圖標放到這個資源文件里

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

打包程序

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
如果還 運行不了,可能是有些庫沒有權(quán)限沒靠過來,手動考
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

子頁面的樣子

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

將子頁面放到StackedWidget里面

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

#include "cell_main.h"
#include "ui_cell_main.h"
#include"dlg_login.h"
#include"QPushButton"
#include"QDebug"

Cell_main::Cell_main(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::Cell_main),
    m_bookPage(nullptr),
    m_recordPage(nullptr),
    m_userPage(nullptr)
{
    ui->setupUi(this);

    //初始化棧窗口
    initPage();

}
void Cell_main::initPage()
{
    m_bookPage=new cell_BookMgr(this);
    m_userPage=new cell_UserMgr(this);
    m_recordPage=new cell_Record(this);
    //把頁面放到棧窗口
    ui->stackedWidget->addWidget(m_userPage);
    ui->stackedWidget->addWidget(m_bookPage);
    ui->stackedWidget->addWidget(m_recordPage);
    //設(shè)置首頁是用戶管理
    ui->stackedWidget->setCurrentIndex(0);
    qDebug()<<"helloworld";

    auto l=ui->tool->children();//獲得子控件
    for(auto it:l){
       //為每個頁面進行綁定槽函數(shù)
        if(it->objectName().contains("btn"))
        {
            connect(static_cast<QPushButton*>(it),&QPushButton::clicked,this,&Cell_main::DealMenu);
        }
    }
    //主頁初始化一下
   // m_userPage->initPage();

}

void Cell_main::DealMenu()
{
    auto str=sender()->objectName();

    //切換頁面
    do{
        if("btn_user"==str){
            //m_userPage->initPage();
            ui->stackedWidget->setCurrentIndex(0);
            break;
        }

        if("btn_book"==str){
            //m_bookPage->initPage();
            ui->stackedWidget->setCurrentIndex(1);
            break;
        }

        if("btn_his"==str){
            //m_recordPage->initPage();
            ui->stackedWidget->setCurrentIndex(2);
            break;
        }

    }while(false);

}



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


在添加完之后在進行切換操作,頁面之間切換
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

按鈕直接形成互斥效果

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

用屬性選擇器來改變樣式

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

設(shè)置user頁面的標頭和設(shè)置文本不可編輯
  ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);//一次選中一行
    ui->tableView->setModel(&m_model);
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//設(shè)置不可編輯
    m_model.setHorizontalHeaderLabels(QStringList{"用戶id","年級","部門","權(quán)限","人物類型","密碼","用戶名"});

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

創(chuàng)建SqlMgr類進行SQL操作

涉及到的函數(shù)函數(shù)和變量

class SqlMgr
{
public:
    SqlMgr();

    //設(shè)置單例模式
    static SqlMgr*  instance;
    static SqlMgr*  getInstance(){
        if(nullptr==instance){
            instance=new SqlMgr();
        }
        return instance;
    }
    void test1();


    void init();//初始化數(shù)據(jù)庫


    //登錄
    bool login(QString username,QString password,int &userId);

    //獲取所有用戶
    QVector<QStringList> getUsers(QString StrCondition="");

    //添加用戶
    void addUsers(QVector<QStringList> );

    //刪除用戶
    void delUser(QString userId);

    //獲取所有圖書
    QVector<QStringList> getBooks(QString StrCondition="");

    //添加圖書
    void addBooks(QVector<QStringList> );

    //修改圖書
    void updateBook(QStringList);

    //刪除圖書
    QString delBook(QString bookId);

    //歸還圖書
    QString returnBook(QString userId,QString bookId);

    //圖書借閱
    QString borrowBook(QString userId,QString bookId);

    //獲取借閱記錄
    QVector <QStringList> getRecord(QString strCondition="");

    //清除借閱記錄
    void clearRecord();
    //

private:
    QSqlDatabase m_db;

初始化數(shù)據(jù)庫

void SqlMgr::init()
{
    m_db=QSqlDatabase::addDatabase("QSQLITE");
    m_db.setDatabaseName(QCoreApplication::applicationDirPath()+"/db/WpcBook.db");
    qDebug()<<m_db.open();
}

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
失敗啦?。?!
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
成功啦,失敗原因是之前把一些文件打包到bin目錄下了,所以就不走系統(tǒng)的了缺少一些文件就會報錯,把bin目錄下的文件刪除就走系統(tǒng)的了
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

m_db.setDatabaseName(QCoreApplication::applicationDirPath()

app目錄是這個路徑

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

登錄功能login

先不實現(xiàn)鍵盤輸入登錄功能,先測試一下,查詢數(shù)據(jù)庫里面是否有這個用戶,有就返回true

//返回      true登錄成功
bool SqlMgr::login(QString username, QString password)
{
    QSqlQuery q(m_db);
    QString sql=QString("select *from user where username='%1' and password='%2'").arg(username).arg(password);
    bool ret=q.exec(sql);//執(zhí)行查詢語句 執(zhí)行成功返回true
    if(ret==false){
        qDebug()<<q.lastError();
    }

    return ret;
}

用戶功能

getUsers功能

(數(shù)據(jù)庫層)SqlMgr代碼:

//獲取所有用戶
QVector<QStringList> SqlMgr::getUsers(QString StrCondition){

    QSqlQuery q(m_db);
    //StrCondition里可以寫模糊查詢的東西
    QString sql=QString("select *from user %1").arg(StrCondition);
    //獲取到的數(shù)據(jù)可能是多行
    QVector<QStringList> vec;
    bool ret=q.exec(sql);
    if(ret==false){
        qDebug()<<q.lastError();
    }else{
        //讀取返回來的數(shù)據(jù)
        //獲取這個數(shù)據(jù)是幾行
        int col =q.record().count();
        QStringList temp;
        while(q.next()){//向下讀
            temp.clear();
            for(int i=0;i<col;i++){
                //將這一行數(shù)據(jù)轉(zhuǎn)換為QString放到
                temp<<q.value(i).toString();
            }
            vec.push_back(temp);

        }
        qDebug()<<"sqlMgr getuser被執(zhí)行";

    }

    return vec;

}

(控制層代碼)cell_UserMgr:

//初始化用戶管理頁面
void cell_UserMgr::initPage(QString strCondition){
    qDebug()<<"initUSer被執(zhí)行";
    //調(diào)用數(shù)據(jù)庫進行查詢
    QVector<QStringList>vec= SqlMgr::getInstance()->getUsers(strCondition);
    m_model.clear();//在設(shè)置一次頭
    m_model.setHorizontalHeaderLabels(QStringList{"用戶id","年級","部門","權(quán)限","人物類型","密碼","用戶名"});
     QList <QStandardItem*>items;//添加到頁面
    //獲取每一個QStringList
    for(QStringList tempList:vec){
         items.clear();//清理
        for(int i=0;i<tempList.size();i++){
             //追加每一個元素
             items.append(new QStandardItem(tempList[i]));
        }
        //追加到一行上面
        m_model.appendRow(items);
    }

}

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

導(dǎo)入用戶(導(dǎo)入文件里面的數(shù)據(jù)到數(shù)據(jù)庫)

使用: QFileDialog::getOpenFileName(nullptr,“輸入文件路徑”);會出現(xiàn)彈窗

**dao代碼(SqlMgr) **

//導(dǎo)入用戶(.txt類型 是GBK編碼)
void SqlMgr::addUsers(QVector<QStringList> vec){
    QSqlQuery q(m_db);
    //StrCondition里可以寫模糊查詢的東西

    //一個個拿出來
    for(auto tempList:vec){
            QString sql=QString("insert into user VALUES(NULL,'%1','%2','%3','%4','%5','%6')")
                              .arg(tempList[0])
                              .arg(tempList[1])
                              .arg(tempList[2])
                              .arg(tempList[3])
                              .arg(tempList[4])
                              .arg(tempList[5]);
        bool ret=q.exec(sql);
            if(ret==false){
            qDebug()<<q.lastError();
        }
    }

}

控制層代碼:

//導(dǎo)入用戶
void cell_UserMgr::on_btn_UserAdd_clicked()
{
    //會彈出頁面窗口
    auto strPath=QFileDialog::getOpenFileName(nullptr,"輸入文件路徑");
    QVector<QStringList>vec;

    if(strPath.isEmpty()!=true){
        QFile f(strPath);//讀這個文件
        qDebug()<<"路徑: "<<strPath;
        f.open(QFile::ReadOnly);

        while(!f.atEnd()){
        QByteArray bytes= f.readLine();//一次讀一行
        //轉(zhuǎn)換為QString 里面的數(shù)據(jù)類型是 : xxx,xxx,xxx,xxx用,分割
        QString str(bytes);
        qDebug()<<"str = "<<str;
        //分割
        QStringList  strList=str.split(",");
        //判斷
        if(strList.size()!=6){
             QMessageBox::information(nullptr,"信息","導(dǎo)入失敗",QMessageBox::Ok);
                return;
             }

             //把一行數(shù)據(jù)的最后的元素的最后兩個字節(jié)去掉\n\r去掉
       strList[strList.size()-1]=strList[strList.size()-1].chopped(2);
        //存
         vec.push_back(strList);

        }
        //調(diào)用數(shù)據(jù)庫
        SqlMgr::getInstance()->addUsers(vec);
        f.close();
        //刷新頁面
        //ui->le_search->clear();
        initPage();
    }
}

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
先寫數(shù)據(jù)層庫層

效果:
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

刪除用戶(del)

數(shù)據(jù)庫:

void SqlMgr::delUser(QString userId){
    QSqlQuery q(m_db);
    QString sql=QString("delete from user where id= %1").arg(userId);

    bool ret=q.exec(sql);
    if(!ret){
        qDebug()<<q.lastError().text();
    }


}

控制層:

//刪除用戶
void cell_UserMgr::on_btn_UserDel_clicked()
{
    //獲取鼠標點擊到的哪一行的
    //第一列的數(shù)據(jù)
    int r=ui->tableView->currentIndex().row();//獲取當(dāng)前行號
    if(r<0){
        QMessageBox::information(nullptr,"提示","請選中一行...",QMessageBox::Ok);

    }else{
    //獲取r行 的0列
    auto id=m_model.item(r,0)->text();
    SqlMgr::getInstance()->delUser(id);

        //刷新頁面
    initPage();
    }
}

搜索用戶

控制層:(直接調(diào)用initPage函數(shù))

    void cell_UserMgr::on_le_search_textChanged(const QString &arg1)
    {
        QString sql=QString("where username like '%%1%' or department like '%%1%'").arg(arg1);
    
        initPage(sql);
    }

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

圖書管理功能

獲取圖書

數(shù)據(jù)庫:

//獲取圖書
QVector<QStringList> SqlMgr::getBooks(QString StrCondition)
{
    QSqlQuery q(m_db);
    QString sql=QString("select *from book %1").arg(StrCondition);
     QVector<QStringList> vec;
    //執(zhí)行
    bool ret=q.exec(sql);
    if(!ret){
        qDebug()<<q.lastError().text();

    }else{

        QStringList strList;

        //獲取這些數(shù)據(jù)有幾列
        int col=q.record().count();
        //從q里面獲取數(shù)據(jù)
        while(q.next()){
            strList.clear();
            for(int i=0;i<col;i++){
                //把這一行數(shù)據(jù)放進去
                strList<<q.value(i).toString();
            }
            vec.push_back(strList);
        }
    }
    return vec;

}

//添加圖書
void SqlMgr::addBooks(QVector<QStringList> vec ){
    //添加圖書是一次添加一本

    QSqlQuery q(m_db);
    auto data= vec[0];
    QString sql=QString("insert into Wbook values(null,'%1','%2','%3','%4','%5',%6,'');")
                      .arg(data[1])
                      .arg(data[2])
                      .arg(data[3])
                      .arg(data[4])
                      .arg(data[5])
                      .arg(data[6]);
    bool ret=q.exec(sql);//執(zhí)行查詢語句
    if(ret==false){
        qDebug()<<q.lastError();
        return;
    }
}

控制層:

//初始化圖書管理頁面
void cell_BookMgr::initPage(QString condition){
    //調(diào)用dao的getbooks
    auto vec=SqlMgr::getInstance()->getBooks(condition);
    //拿數(shù)據(jù)顯示到頁面
    m_model.clear();//在設(shè)置一次頭
    m_model.setHorizontalHeaderLabels(QStringList{"圖書id","圖書名稱","價格","類型1","類型2","類型3","數(shù)量","圖片"});

    for(QStringList tlist:vec){//拿出一行QStringList
        QList<QStandardItem*> items;
        for(int i=0;i<tlist.size();i++){
            //追加到items
            items.append(new QStandardItem(tlist[i]));
        }
        qDebug()<<"圖書被調(diào)用";
        //加到model
        m_model.appendRow(items);
    }


}

添加圖書

添加圖書要彈出一個頁面Dlg_addOrUp

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
數(shù)據(jù)庫層:

//添加圖書
void SqlMgr::addBooks(QStringList data ){
    //添加圖書是一次添加一本

    QSqlQuery q(m_db);

    QString sql=QString("insert into book values(null,'%1','%2','%3','%4','%5',%6,'');")
                      .arg(data[0])
                      .arg(data[1])
                      .arg(data[3])
                      .arg(data[4])
                      .arg(data[5])
                      .arg(data[2]);
    bool ret=q.exec(sql);//執(zhí)行查詢語句
    if(ret==false){
        qDebug()<<q.lastError().text();

    }
}

控制層:

void cell_BookMgr::on_btn_bookAdd_clicked()
{
    //調(diào)用子窗口
    Dlg_addOrUp dlg;
    dlg.setFlag(-1);//添加就設(shè)置為-1
    dlg.exec();



}

Dlg_addOrUp類

#include "dlg_addorup.h"
#include "ui_dlg_addorup.h"
#include"dao/sqlmgr.h"
#include"QDebug"
Dlg_addOrUp::Dlg_addOrUp(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dlg_addOrUp)
{
    ui->setupUi(this);

}

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

void Dlg_addOrUp::addOrUp()
{
    QStringList strList;
    //添加
    if(m_flag==-1){
      //獲取頁面輸入
        strList<<ui->le_name->text();
        strList<<ui->le_press->text();
        strList<<ui->le_count->text();
        strList<<ui->cb1->currentText();
        strList<<ui->cb2->currentText();
        strList<<ui->cb3->currentText();
        qDebug()<<"==== "<<strList;
        //調(diào)用數(shù)據(jù)添加函數(shù)
        SqlMgr::getInstance()->addBooks(strList);
    }
}

void Dlg_addOrUp::setFlag(int flag)
{
    m_flag=flag;
}

void Dlg_addOrUp::on_btn_ok_clicked()
{
    addOrUp();
    //隱藏頁面
    this->hide();
}


void Dlg_addOrUp::on_btn_cancel_clicked()
{
    this->hide();
}


這個Dlg_addOrUp既是添加頁面又是修改頁面里面m_flag=-1時是添加,非-1時是修改

修改圖書

dao層:

//修改圖書
void SqlMgr::updateBook(QStringList data){
    QSqlQuery q(m_db);
    QString sql=QString("update book set"
                          " name='%1',press='%2',type1='%3',type2='%4',"
                          "type3='%5',cnt='%6' where bookid='%7';")
                      .arg(data[1])
                      .arg(data[2])
                      .arg(data[4])
                      .arg(data[5])
                      .arg(data[6])
                      .arg(data[3])
                      .arg(data[0]);
    bool ret=q.exec(sql);//執(zhí)行查詢語句
    if(ret==false){
        qDebug()<<q.lastError();
    }
}

控制層:


void cell_BookMgr::on_btn_bookUpdate_clicked()
{
    //判斷有沒有選中一行將要修改的數(shù)據(jù)
    //要知道鼠標點中哪一行
    int r=ui->tableView->currentIndex().row();

    if(r<0){
        QMessageBox::information(nullptr,"信息","請選中要更新的一行",QMessageBox::Ok);

    }
    else{
        qDebug()<<"update被調(diào)用...";
        //獲得選中的一行的id拿出來
        auto it= m_model.item(r,0)->text();
        Dlg_addOrUp dlg;
        dlg.setFlag(it.toInt());//修改
        dlg.showDetial(it.toInt());//顯示要修改的信息
        dlg.exec();
        initPage();
    }
}

顯示到頁面上信息(Dlg_addOrUp):

void Dlg_addOrUp::showDetial(int id)
{
    QString sql=QString("where bookid= %1").arg(id);
    //先查詢信息顯示到頁面上
    QVector<QStringList> vec =SqlMgr::getInstance()->getBooks(sql);
    QStringList data=vec[0];//查出來的是一條數(shù)據(jù)
    ui->le_name->setText(data[1]);
    ui->le_press->setText(data[2]);
    ui->cb1->setCurrentText(data[3]);
    ui->cb2->setCurrentText(data[4]);
    ui->cb3->setCurrentText(data[5]);
    ui->le_count->setText(data[6]);
}

更新:

void Dlg_addOrUp::addOrUp()
{
    QStringList strList;
    //添加
    if(m_flag==-1){
      //獲取頁面輸入
        strList<<ui->le_name->text();
        strList<<ui->le_press->text();
        strList<<ui->le_count->text();
        strList<<ui->cb1->currentText();
        strList<<ui->cb2->currentText();
        strList<<ui->cb3->currentText();
        qDebug()<<"==== "<<strList;
        //調(diào)用數(shù)據(jù)添加函數(shù)
        SqlMgr::getInstance()->addBooks(strList);
    }else{//修改
        strList.clear();

        strList<<QString::number(m_flag);//把bookid拿進去
        //獲取頁面輸入
        strList<<ui->le_name->text();
        strList<<ui->le_press->text();
        strList<<ui->le_count->text();
        strList<<ui->cb1->currentText();
        strList<<ui->cb2->currentText();
        strList<<ui->cb3->currentText();
        SqlMgr::getInstance()->updateBook(strList);
    }
}

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

刪除圖書

遇到的錯誤

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

//刪除圖書
QString SqlMgr:: delBook(QString bookId){
    QSqlQuery q(m_db);
    QString sql=QString("delete from book where bookid= %1").arg(bookId);

    bool ret=q.exec(sql);
    if(!ret){
        qDebug()<<q.lastError().text();
        return "fail";
    }
    return "success";
}
void cell_BookMgr::on_btn_bookDel_clicked()
{
    //獲取鼠標點擊到哪一行了
    int r=ui->tableView->currentIndex().row();
    if(r<0){
        QMessageBox::information(nullptr,"信息","請選中要刪除的一行",QMessageBox::Ok);
    }else{
        auto  id =m_model.item(r,0)->text();
        QString str=SqlMgr::getInstance()->delBook(id);
        QMessageBox::information(nullptr,"信息",str=="success"?"刪除成功":"刪除失敗",QMessageBox::Ok);
        initPage();
    }
}

借閱圖書

創(chuàng)建一個窗口類
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Dlg_getsetbook

#include "dlg_getsetbook.h"
#include "ui_dlg_getsetbook.h"
#include"dao/sqlmgr.h"
#include"QMessageBox"
Dlg_getSetBook::Dlg_getSetBook(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dlg_getSetBook)
{
    ui->setupUi(this);
}

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

void Dlg_getSetBook::showBorrowBook(QString bookName)
{
    //在頁面上顯示圖書
    ui->le_bookname->setText(bookName);
}

void Dlg_getSetBook::setBookId(QString bookid)
{
    m_bookid=bookid;
}

void Dlg_getSetBook::on_btn_ok_clicked()
{
    //點擊確定之后獲取頁面上的數(shù)據(jù)進行調(diào)用數(shù)據(jù)庫
    auto userName=ui->le_username->text();
    auto pwd=ui->le_pwd->text();
    //判斷用戶是否存在
   bool ret=SqlMgr::getInstance()->login(userName,pwd);
    if(ret==false){
       QMessageBox::information(nullptr,"提示","該用戶不存在",QMessageBox::Ok);
        return;
   }
   //  圖書借閱   QString borrowBook(QString userId,QString bookId);
        //獲取用戶id
  QString userid =  SqlMgr::getInstance()->getUserid(userName,pwd);
   m_userid=userid;
  if(m_userid==""&&m_bookid==""){
    QMessageBox::information(nullptr,"提示","用戶id或圖書id為null",QMessageBox::Ok);
        return;
   }
  QString str=SqlMgr::getInstance()->borrowBook(m_userid,m_bookid);
 QMessageBox::information(nullptr,"提示",str=="借閱成功"?"借閱成功":"借閱失敗",QMessageBox::Ok);
  //隱藏窗口
  this->hide();
}


#ifndef DLG_GETSETBOOK_H
#define DLG_GETSETBOOK_H

#include <QDialog>

namespace Ui {
class Dlg_getSetBook;
}

class Dlg_getSetBook : public QDialog
{
    Q_OBJECT

public:
    explicit Dlg_getSetBook(QWidget *parent = nullptr);
    ~Dlg_getSetBook();
    //顯示你借的那一本書
    void showBorrowBook(QString bookName);
    void setBookId(QString bookid);

private slots:
    void on_btn_ok_clicked();

private:
    Ui::Dlg_getSetBook *ui;
    QString m_bookid;
    QString m_userid;
};

#endif // DLG_GETSETBOOK_H


dao:

//圖書借閱
QString SqlMgr::borrowBook(QString userId,QString bookId){
    QSqlQuery q(m_db);
    QString sql=QString("update book set cnt=cnt-1 where bookid = %1").arg(bookId);
    bool ret=q.exec(sql);//執(zhí)行查詢語句
    if(ret==false){
        qDebug()<<q.lastError().text();
        return "借閱失敗";
    }
    //QDateTime::currentSecsSinceEpoch()
    QString start =secondsToDateString(QDateTime::currentSecsSinceEpoch());
    QString end =secondsToDateString(QDateTime::currentSecsSinceEpoch()+3600*24*10);
    sql=QString("insert into record values(null,%1,%2,'%3','%4')")
              .arg(userId)
              .arg(bookId)
              .arg(start)
              .arg(end);
    ret=q.exec(sql);//執(zhí)行查詢語句
    if(ret==false){
        qDebug()<<q.lastError().text();
        return "借閱失敗";
    }
    return "借閱成功";

}

dao:(getuserid)


QString SqlMgr::getUserid(QString userName, QString pwd)
{
    QSqlQuery q(m_db);
    QString sql=QString("select id from user where username = '%1' and password = '%2' ")
                      .arg(userName)
                      .arg(pwd);
    bool ret=q.exec(sql);//執(zhí)行查詢語句
    if(ret==false){
        qDebug()<<q.lastError().text();
        return "";
    }

    QString userid = "";
    if (q.next()) { // 移動到結(jié)果集中的第一條記錄
        userid = q.value(0).toString();
    }
    return userid;
}
QString SqlMgr::secondsToDateString(qint64 seconds)
{
    QDateTime dateTime = QDateTime::fromSecsSinceEpoch(seconds);
    QString dateString = dateTime.toString("yyyy-MM-dd");
    return dateString;
}

控制層:

//借閱圖書
void cell_BookMgr::on_btn_BookRecord_clicked()
{
    //判斷點擊了哪一行數(shù)據(jù)
    int r=ui->tableView->currentIndex().row();
    if(r<0){
        QMessageBox::information(nullptr,"信息","請選中要借閱的圖書",QMessageBox::Ok);
    }else{
        auto bookid =m_model.item(r,0)->text();
        //獲得cnt cnt<=0 庫存沒了不能借 r行的6列
        auto cnt =m_model.item(r,6)->text();
        if(cnt<="0"){
           QMessageBox::information(nullptr,"信息","該書沒有庫存了,嗷了個嗷~",QMessageBox::Ok);
            return;
        }
        //否則向下執(zhí)行 要進行登記是誰借了這本書調(diào)用子頁面
        Dlg_getSetBook dlg;
        //獲得書的名字
        auto bookName =m_model.item(r,1)->text();
        dlg.setBookId(bookid);//設(shè)置圖書id
        dlg.showBorrowBook(bookName);
        dlg.exec();
        initPage();
    }

搜索圖書

控制層:(直接調(diào)用initPage函數(shù))

void cell_BookMgr::on_le_search_textChanged(const QString &arg1)
{
    QString sql=QString("where name like '%%1%' or type1 = '%1' or type2 = '%1' or type3 = '%1' ").arg(arg1);

    initPage(sql);
}

借閱記錄管理功能

獲取借閱記錄

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
dao:

//獲取借閱記錄
QVector <QStringList> SqlMgr::getRecord(QString strCondition){
    QSqlQuery q(m_db);
    QString sql=QString("select * from record %1").arg(strCondition);
    QVector<QStringList> vec;
    //執(zhí)行
    bool ret=q.exec(sql);
    if(!ret){
        qDebug()<<q.lastError().text();

    }else{

        QStringList strList;

        //獲取這些數(shù)據(jù)有幾列
        int col=q.record().count();
        //從q里面獲取數(shù)據(jù)
        while(q.next()){
            strList.clear();
            for(int i=0;i<col;i++){
                //把這一行數(shù)據(jù)放進去
                strList<<q.value(i).toString();
            }
            vec.push_back(strList);
        }
    }
    return vec;
}

控制層:

void cell_Record::initPage(QString condition){

    auto vec=SqlMgr::getInstance()->getRecord(condition);
    //拿數(shù)據(jù)顯示到頁面
    m_model.clear();//在設(shè)置一次頭
    m_model.setHorizontalHeaderLabels(QStringList{"圖書id","圖書名稱","價格","類型1","類型2","類型3","數(shù)量","圖片"});
    for(QStringList strList:vec){
        QList<QStandardItem*> items;
        for(int i=0;i<strList.size();i++){
            items.append(new QStandardItem(strList[i]));
        }
        m_model.appendRow(items);
    }

}

void cell_Record::on_le_search_textChanged(const QString &arg1)
{
    QString sql=QString("where start like '%%1%' or end like '%%1%' or userid = %1 or bookid = %1").arg(arg1);

    initPage(sql);
}

模糊查詢記錄

通過開始時間和結(jié)束時間與用戶名和密碼進行查詢

void cell_Record::on_le_search_textChanged(const QString &arg1)
{
    //同過開始時間和結(jié)束時間與用戶名和密碼進行查詢
    QString sql=QString("where start like '%%1%' or end like '%%1%' or user.username = '%1' or book.name= '%1'").arg(arg1);

    initPage(sql);
}

歸還圖書

數(shù)據(jù)庫層:

//歸還圖書
QString SqlMgr::returnBook(QString userId,QString bookId){
    //根據(jù)userid==bookid刪除記錄 在根據(jù)bookid為本書cnt(庫存+1)
    QSqlQuery q(m_db);
//    qDebug()<<"bookid= "<<bookId<<" userid = "<<userId;
    /*
     * 假如a(id=1)借西游記(bookid=6) b(id=2)借了西游記(bookid=6)
     * 登錄b還a借的書也是會成功的 b(id=2) a借的書(bookid=6)
*/
    QString sql=QString("delete from record where userid = %1 and bookid = %2")
                      .arg(userId)
                      .arg(bookId);
    bool ret=q.exec(sql);
    if(ret==false){
        qDebug()<<q.lastError().text();
        return "歸還失敗";
    }

    sql=QString("update book set cnt = cnt+1 where bookid = %1")
              .arg(bookId);

//    qDebug()<<"bookid= ======"<<bookId;
     ret=q.exec(sql);
    if(ret==false){
        qDebug()<<q.lastError().text();
        return "歸還失敗";
    }
    return "歸還成功";
}

控制層:


//歸還圖書
void cell_Record::on_btn_return_clicked()
{
    //獲取鼠標點中的哪一行
    int r=ui->tableView->currentIndex().row();
    if(r<0){
        QMessageBox::information(nullptr,"信息","請選中要歸還的圖書",QMessageBox::Ok);
    }else{
        //彈出子頁面用戶登錄之后在刪除
        Dlg_getSetBook dlg;
        //獲得書的名字
        QString tempBookid=m_model.item(r,2)->text();
        QString bookName=getBookName(tempBookid.toInt());
        //獲取圖書id
        auto bookid = m_model.item(r,2)->text();
        //獲取userid
        auto userid = m_model.item(r,1)->text();
        dlg.setBookId(bookid);
        dlg.setUserId(userid);
        dlg.setFlag(true);
        dlg.showBorrowBook(bookName);//設(shè)置到頁面上
        dlg.exec();
        initPage();

    }
}

QString cell_Record::getBookName(int bookid)
{
    QString bookName;
    bookName=SqlMgr::getInstance()->getBookName(bookid);
    return bookName;
}

Dlg_setgetBook

void Dlg_getSetBook::on_btn_ok_clicked()
{
    //點擊確定之后獲取頁面上的數(shù)據(jù)進行調(diào)用數(shù)據(jù)庫
    auto userName=ui->le_username->text();
    auto pwd=ui->le_pwd->text();
    //判斷用戶是否存在
   bool ret=SqlMgr::getInstance()->login(userName,pwd);
    if(ret==false){
       QMessageBox::information(nullptr,"提示","該用戶不存在",QMessageBox::Ok);
        return;
   }

        //獲取當(dāng)前登錄在Dlg_getsetbook窗口的用戶id
  QString CurUserid =  SqlMgr::getInstance()->getUserid(userName,pwd);

  if(m_userid==""&&m_bookid==""){
    QMessageBox::information(nullptr,"提示","用戶id或圖書id為null",QMessageBox::Ok);
        return;
   }
  if(m_flag==false){//借閱
        //借閱圖書的時候用當(dāng)前登錄的用戶的用戶id借閱
        m_userid=CurUserid;
        QString str=SqlMgr::getInstance()->borrowBook(m_userid,m_bookid);
        QMessageBox::information(nullptr,"提示",str=="借閱成功"?"借閱成功":"借閱失敗",QMessageBox::Ok);
  }else{//歸還
        if(CurUserid==m_userid){
        QString str=SqlMgr::getInstance()->returnBook(m_userid,m_bookid);
        QMessageBox::information(nullptr,"提示",str=="歸還成功"?"歸還成功":"歸還失敗",QMessageBox::Ok);
        }
        else{
        QMessageBox::information(nullptr,"提示","用戶: "+userName+" 未借此書",QMessageBox::Ok);
        }
  }
  //隱藏窗口
  this->hide();
}



出現(xiàn)的問題

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
改造一下歸還函數(shù)

//歸還圖書
QString SqlMgr::returnBook(QString userId,QString bookId,QString recordId){
    //根據(jù)userid==bookid刪除記錄 在根據(jù)bookid為本書cnt(庫存+1)
    QSqlQuery q(m_db);
//    qDebug()<<"bookid= "<<bookId<<" userid = "<<userId;
    /*
     * 假如a(id=1)借西游記(bookid=6) b(id=2)借了西游記(bookid=6)
     * 登錄b還a借的書也是會成功的 b(id=2) a借的書(bookid=6)
*/
    QString sql=QString("delete from record where userid = %1 and bookid = %2 and id= %3")
                      .arg(userId)
                      .arg(bookId)
                      .arg(recordId);
    bool ret=q.exec(sql);
    if(ret==false){
        qDebug()<<q.lastError().text();
        return "歸還失敗";
    }

    sql=QString("update book set cnt = cnt+1 where bookid = %1")
              .arg(bookId);

//    qDebug()<<"bookid= ======"<<bookId;
     ret=q.exec(sql);
    if(ret==false){
        qDebug()<<q.lastError().text();
        return "歸還失敗";
    }
    return "歸還成功";
}




//轉(zhuǎn)換日期格式
QString SqlMgr::secondsToDateString(qint64 seconds)
{
    QDateTime dateTime = QDateTime::fromSecsSinceEpoch(seconds);
    QString dateString = dateTime.toString("yyyy-MM-dd");
    return dateString;
}

QString SqlMgr::getBookName(int bookid)
{
    QSqlQuery q(m_db);
    QString sql=QString("select name from book where bookid = %1").arg(bookid);
    bool ret =q.exec(sql);
    if(!ret){
        qDebug()<<q.lastError().text();
        return "";
    }
    QString bookName="";
    if(q.next()){
        bookName= q.value(0).toString();
        return bookName;
    }
    return bookName;
}

添加一下這個函數(shù)
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

#include "dlg_getsetbook.h"
#include "ui_dlg_getsetbook.h"
#include"dao/sqlmgr.h"
#include"QMessageBox"
Dlg_getSetBook::Dlg_getSetBook(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dlg_getSetBook)
{
    ui->setupUi(this);
}

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

void Dlg_getSetBook::showBorrowBook(QString bookName)
{
    //在頁面上顯示圖書
    ui->le_bookname->setText(bookName);
}

void Dlg_getSetBook::setBookId(QString bookid)
{
    m_bookid=bookid;
}

void Dlg_getSetBook::setFlag(bool flag)
{
    m_flag=flag;
}

void Dlg_getSetBook::setUserId(QString userid)
{
    m_userid=userid;
}

void Dlg_getSetBook::setRecordId(QString recordid)
{
    m_recordid=recordid;
}

void Dlg_getSetBook::on_btn_ok_clicked()
{
    //點擊確定之后獲取頁面上的數(shù)據(jù)進行調(diào)用數(shù)據(jù)庫
    auto userName=ui->le_username->text();
    auto pwd=ui->le_pwd->text();
    //判斷用戶是否存在
   bool ret=SqlMgr::getInstance()->login(userName,pwd);
    if(ret==false){
       QMessageBox::information(nullptr,"提示","該用戶不存在",QMessageBox::Ok);
        return;
   }

        //獲取當(dāng)前登錄在Dlg_getsetbook窗口的用戶id
  QString CurUserid =  SqlMgr::getInstance()->getUserid(userName,pwd);

  if(m_userid==""&&m_bookid==""){
    QMessageBox::information(nullptr,"提示","用戶id或圖書id為null",QMessageBox::Ok);
        return;
   }
  if(m_flag==false){//借閱
        //借閱圖書的時候用當(dāng)前登錄的用戶的用戶id借閱
        m_userid=CurUserid;
        QString str=SqlMgr::getInstance()->borrowBook(m_userid,m_bookid);
        QMessageBox::information(nullptr,"提示",str=="借閱成功"?"借閱成功":"借閱失敗",QMessageBox::Ok);
  }else{//歸還
        if(CurUserid==m_userid){
         //歸還的時候還要用到記錄id
        QString str=SqlMgr::getInstance()->returnBook(m_userid,m_bookid,m_recordid);
        QMessageBox::information(nullptr,"提示",str=="歸還成功"?"歸還成功":"歸還失敗",QMessageBox::Ok);
        }
        else{
        QMessageBox::information(nullptr,"提示","用戶: "+userName+" 未借此書",QMessageBox::Ok);
        }
  }
  //隱藏窗口
  this->hide();
}



清空借閱記錄

dao:


void SqlMgr::clearRecord()
{
    //刪除所有圖書
        QSqlQuery q(m_db);
        QString sql=QString("delete from record;");
        bool ret=q.exec(sql);//執(zhí)行查詢語句
        if(ret==false){
            qDebug()<<q.lastError();
            return;
        }


        sql=QString("delete from sqlite_sequence where name= 'record';");
        ret=q.exec(sql);//執(zhí)行查詢語句
        if(ret==false){
            qDebug()<<q.lastError();
            return;
        }

        qDebug()<<"clearRecord()成功.......";


}

控制層:

void cell_Record::on_btn_clear_clicked()
{
    SqlMgr::getInstance()->clearRecord();
    initPage();
}

登錄功能

控制層:

void Dlg_login::on_btn_login_clicked()
{
    auto username=ui->username->text();
    auto pwd=ui->password->text();
    if(username==""||pwd==""){
        QMessageBox::information(nullptr,"提示","用戶名或密碼不能為空",QMessageBox::Ok);
        return;
    }
    bool ret=SqlMgr::getInstance()->login(username,pwd);
    if(ret){

        setResult(1);
        hide();
    }else{

    QMessageBox::information(nullptr,"提示","用戶名或密碼錯誤",QMessageBox::Ok);
    }
}

dao:

//返回      true登錄成功
bool SqlMgr::login(QString username, QString password)
{
    QSqlQuery q(m_db);
    QString sql=QString("select *from user where username='%1' and password='%2'").arg(username).arg(password);
    bool ret=q.exec(sql);//執(zhí)行查詢語句 執(zhí)行成功返回true
    if(ret==false){

        qDebug()<<q.lastError().text();
    }

    //執(zhí)行這個q.next()判斷是否還有可以執(zhí)行成功
    ret=q.next();
    return ret;
}

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫

頁面展示

Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫
Qt實現(xiàn)圖書管理系統(tǒng)(C++),C語言,qt,c++,數(shù)據(jù)庫文章來源地址http://www.zghlxwxcb.cn/news/detail-699952.html

到了這里,關(guān)于Qt實現(xiàn)圖書管理系統(tǒng)(C++)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【數(shù)據(jù)庫課設(shè)】圖書館資源管理系統(tǒng) 源碼+流程圖+結(jié)構(gòu)設(shè)計(借還圖書 逾期罰款 圖書管理 讀者管理 信息查詢)python實現(xiàn)

    【數(shù)據(jù)庫課設(shè)】圖書館資源管理系統(tǒng) 源碼+流程圖+結(jié)構(gòu)設(shè)計(借還圖書 逾期罰款 圖書管理 讀者管理 信息查詢)python實現(xiàn)

    一個管理員編號對應(yīng)一個密碼,且需要有管理員注冊密匙。 可以在圖書信息表中錄入、修改、刪除圖書。 可以在圖書信息表中查詢書籍。 可以編輯圖書借閱、歸還信息。 可以編輯欠款信息。 可以編輯讀者信息表。 圖書館注冊,獲得讀者編號。 可以在圖書信息表中查閱書籍

    2024年02月10日
    瀏覽(26)
  • 圖書管理系統(tǒng)(C語言實現(xiàn))

    設(shè)計并實現(xiàn)一個簡單的圖書管理系統(tǒng) 本次實訓(xùn)內(nèi)容主要在于訓(xùn)練學(xué)生的C語言的基本編程能力,通過C語言輸入輸出、循環(huán)語句、子函數(shù)設(shè)計、數(shù)組、結(jié)構(gòu)體等知識點,完成一個簡單圖書管理系統(tǒng)的設(shè)計開發(fā)。實現(xiàn)錄入圖書、刪除指定圖書、修改指定圖書和查詢指定圖書的基本

    2024年02月12日
    瀏覽(16)
  • Java連接數(shù)據(jù)庫實現(xiàn)圖書館管理系統(tǒng)(詳細教程)

    Java連接數(shù)據(jù)庫實現(xiàn)圖書館管理系統(tǒng)(詳細教程)

    該功能用到的軟件為 IDEA 、Navicat 、云服務(wù)器(非必須) 源碼下載 https://www.aliyundrive.com/s/UTz8pNxobGK 在自己的服務(wù)器或者電腦本機安裝數(shù)據(jù)庫系統(tǒng),本次系統(tǒng)演示的數(shù)據(jù)庫版本為5.6。 1.創(chuàng)建圖書管理數(shù)據(jù)庫library 字符集為:utf8 -utf8_general_ci 2.設(shè)計好將要使用的sql語句 視圖、存儲

    2024年02月06日
    瀏覽(35)
  • 數(shù)據(jù)庫課程設(shè)計-圖書館管理系統(tǒng)(2.數(shù)據(jù)庫實現(xiàn)-基于mysql)

    數(shù)據(jù)庫課程設(shè)計-圖書館管理系統(tǒng)(2.數(shù)據(jù)庫實現(xiàn)-基于mysql)

    如果對你有幫助,可以給卑微的博主留個贊、關(guān)注、收藏? ?(不是)? (騙一下數(shù)據(jù),說不定以后面試就過了,拜謝) 好像有讀者說現(xiàn)在不要積分的資源也要vip才能下,如果下不了可以留郵箱到評論區(qū)或者私聊,我也把資源放到github了,地址如下: https://github.com/goLSX/library_mana

    2024年02月06日
    瀏覽(39)
  • 用Java語言實現(xiàn)一個簡單的圖書管理系統(tǒng)

    用Java語言實現(xiàn)一個簡單的圖書管理系統(tǒng)

    這個系統(tǒng)有兩個登錄選項:用戶和管理員,選擇兩者進入都需要輸入賬號和密碼進行審核。 用戶有查看圖書列表,借閱圖書,歸還圖書這些選項,管理員有查看圖書列表,增加圖書,刪除圖書,修改圖書這些選項。 我們先建一個Book類,用來存放圖書名稱以及借閱狀態(tài),圖書

    2024年02月09日
    瀏覽(26)
  • 將Java與數(shù)據(jù)庫連接起來(配置idea),實現(xiàn)一個簡單的圖書管理系統(tǒng)

    將Java與數(shù)據(jù)庫連接起來(配置idea),實現(xiàn)一個簡單的圖書管理系統(tǒng)

    目錄 1.通過connector連接Java和Mysql數(shù)據(jù)庫 (1)首先配置idea (2)如何把java和mysql連接起來 1.簡單連接 2.認識PrepareStatement 2.實現(xiàn)簡單的圖書管理系統(tǒng) (1)創(chuàng)建數(shù)據(jù)庫jdbc,并且創(chuàng)建出book表 ?(2)在idea中書寫代碼將mysql與java連接,實現(xiàn)基本的增刪改查 1.JdbcUtiles類,一個使用jdbc的工具

    2024年02月11日
    瀏覽(29)
  • 基于java的圖書借閱管理系統(tǒng)設(shè)計與實現(xiàn)(源代碼+數(shù)據(jù)庫+部署文檔+部署視頻)

    基于java的圖書借閱管理系統(tǒng)設(shè)計與實現(xiàn)(源代碼+數(shù)據(jù)庫+部署文檔+部署視頻)

    ?????? 圖書管理系統(tǒng) 該系統(tǒng)對數(shù)據(jù)進行保存、修改、刪除等管理。為用戶提供了一個友好、簡單快捷的運行操作平臺。該統(tǒng)對數(shù)據(jù)進行保存、修改、刪除等管理,為用戶提供了一個友好、簡單快捷的運行操作平臺。本系統(tǒng)的各界面設(shè)計友好、流程正確、功能也較為完善,

    2024年02月03日
    瀏覽(29)
  • 跨平臺C++ Qt數(shù)據(jù)庫管理系統(tǒng)設(shè)計與實戰(zhàn):從理論到實踐的全面解析

    跨平臺C++ Qt數(shù)據(jù)庫管理系統(tǒng)設(shè)計與實戰(zhàn):從理論到實踐的全面解析

    在我們的日常生活中,數(shù)據(jù)無處不在。無論是我們的個人信息,還是我們的購物習(xí)慣,甚至是我們的工作記錄,都可以被視為數(shù)據(jù)。這些數(shù)據(jù)的管理和處理,對于個人和企業(yè)來說,都是至關(guān)重要的。這就是數(shù)據(jù)庫管理系統(tǒng)(Database Management System,簡稱DBMS)的重要性所在。 數(shù)據(jù)

    2024年02月06日
    瀏覽(95)
  • qt實現(xiàn)信息管理系統(tǒng)(學(xué)生信息管理系統(tǒng))功能更完善

    qt實現(xiàn)信息管理系統(tǒng)(學(xué)生信息管理系統(tǒng))功能更完善

    信息系統(tǒng)代碼地址:https://gitee.com/dxl96/StdMsgSystem 本學(xué)生信息管理系統(tǒng)同升級改造的幅度較大,涉及到的東西對于初學(xué)者來說,可能稍顯復(fù)雜,可以先移步到?https://blog.csdn.net/IT_CREATE/article/details/82027462?查看簡易的系統(tǒng)。 本系統(tǒng)引入日志管理,數(shù)據(jù)庫選擇支持sqllite、mysql,自

    2024年02月13日
    瀏覽(20)
  • qt實現(xiàn)物業(yè)管理系統(tǒng)源代碼

    qt實現(xiàn)物業(yè)管理系統(tǒng)源代碼

    ? ? ? ? ? 需要源碼加我QQ ? ?源代碼不要998現(xiàn)在只要299元即可拿到手。

    2024年02月12日
    瀏覽(92)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包