• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Qt軟件開發之sqlite數據庫操作

          這段時間接觸Qt開發,做了一個簡單的數字圖書管理系統,最后有一點功能不是很完善,在這里把已經完成的功能設計作品分享給大家,喜歡的朋友可以體驗一下。(文章末尾附有此設計的下載鏈接,包括工程文件和打包后的應用程序文件。)

          先看一下總體的功能設計框圖,其中紅色字體標出的模塊是沒有完善的。“是否為管理員”這個步驟是通過判別輸入的賬號是否是特定的字符開頭來認定該使用者是管理員,之所以產生這個想法,是因為想到一個學校應該有一個包含教職工和學生等的工號數據庫,如果在注冊時提醒注冊者使用工號注冊,并和數據庫中的特定人員工號進行比較從而認定管理員。這里只是簡單使用了這種思路,登陸者的賬號前5個字符如果是“admin”,則密碼和賬號匹配的情況下進入管理員界面;其他賬號進入用戶界面。

          工程經過打包過后成為可執行應用程序,運行軟件,首先進入登錄界面。登錄界面有登錄、注冊、找回密碼等按鈕,觸發按鈕可以執行相應功能。登錄界面、注冊界面、找回密碼界面分別如下圖:

               

          登錄按鈕觸發事件的響應函數代碼如下,matchFlag為用戶名是否匹配標志,在登錄對話框初始化時在用戶表(表存在)中查找該用戶信息,確認該用戶是否為已注冊用戶。

    void LoginDialog::on_LoginBtn_clicked()
    {
        if(matchFlag==false)
        {
            //用戶名錯誤
            qDebug()<<"name invalid";
            //建立消息對話框,提示用戶
            QMessageBox msgBox(this);
            msgBox.setWindowTitle("Tips");
            msgBox.setText("無效的用戶名!");
            msgBox.exec();
        }
        else
        {
            if(usr_passwd!=ui->pwd_lineEdit->text())
            {
                //密碼錯誤
                qDebug()<<"passwd not match";
                QMessageBox msgBox(this);
                msgBox.setWindowTitle("Tips");
                msgBox.setText("密碼錯誤!");
                msgBox.exec();
            }
            else
            {
                //用戶名和密碼均正確
                //判斷該user是否是管理員
               if(ui->id_lineEdit->text().left(5)=="admin")
                {
                   qDebug()<<QString("輸出:yes");
                   AccFlag=1;
                }
               if(ui->id_lineEdit->text().isEmpty())
               {
                   qDebug()<<"Signal Fail.";
               }
               else
               {
                   if(vv==0)
                   {
                       emit namesender(ui->id_lineEdit->text());
                       QDialog::accept();
                       qDebug()<<QString(ui->id_lineEdit->text())<<" Signal Success.";
                       vv++;
                   }
               }
            }
        }
    }

          接下來是用戶界面,相比于管理員界面,用戶界面設計的不是很好。用戶主窗口主要是通過和多個對話框交互然后完成相應功能的。

          以修改個人信息為例,代碼如下:

    void Style1Dialog::on_pushButton_clicked()
    {
        qDebug()<<"style1_linedit: "<<ui->style1_lineEdit->text();
        QSqlQuery sql_query2;
        //更新數據
        sql_query2.prepare(update_sql100);
        sql_query2.bindValue(":truename",ui->style1_lineEdit->text().trimmed());
        sql_query2.bindValue(":address", ui->addr_lineEdit->text().trimmed());
        sql_query2.bindValue(":telephone",ui->tele_lineEdit_2->text().trimmed());
        sql_query2.bindValue(":email",ui->email_lineEdit_3->text().trimmed());
        sql_query2.bindValue(":name",QString(nameusrIndex10));
    
    
        if(!sql_query2.exec())
        {
            qDebug()<<sql_query2.lastError();
        }
        else
        {
            qDebug()<<"chacter updated!";
        }
    }

    管理員界面的設計相對完善,點擊“圖書管理”按鈕可以展開具體的功能模塊按鈕,以執行相應操作。sqlite數據庫的各種操作,如增加、刪除、更新、導出數據(全部顯示、篩選顯示)等都在這里體現。

          根據篩選條件對數據表中的數據進行篩選,并通過tableview工具進行顯示。這里以圖書編號(data8)和圖書名(data9)為篩選條件進行顯示數據為例,代碼如下:

    void MainWindow2::receiveIndex8(int data8, QString data9)
    {
        QSqlTableModel *model = new QSqlTableModel;
        model->setTable("books");
    
        model->setHeaderData(1, Qt::Horizontal, "圖書編號");
        model->setHeaderData(2, Qt::Horizontal, "圖書名");
        model->setHeaderData(3, Qt::Horizontal, "圖書類別");
        model->setHeaderData(4, Qt::Horizontal, "館藏總量");
        model->setHeaderData(5, Qt::Horizontal, "館藏余量");
        model->setHeaderData(6,Qt::Horizontal,"借閱者1");
        model->setHeaderData(7,Qt::Horizontal,"歸還時間");
        model->setHeaderData(8,Qt::Horizontal,"借閱者2");
        model->setHeaderData(9,Qt::Horizontal,"歸還時間");
        model->setHeaderData(10,Qt::Horizontal,"借閱者3");
        model->setHeaderData(11,Qt::Horizontal,"歸還時間");
        model->setFilter(QObject::tr("book_id=%1 and book_name='%2'").arg(data8).arg(data9));
        model->select();
    
        ui->sqltableView->setModel(model);
        ui->sqltableView->setSelectionMode(QAbstractItemView::SingleSelection);
        ui->sqltableView->setSelectionBehavior(QAbstractItemView::SelectRows);
        ui->sqltableView->resizeColumnsToContents();
        ui->sqltableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
        ui->sqltableView->setColumnHidden(0,true);
    
        QHeaderView *header = ui->sqltableView->horizontalHeader();
        header->setStretchLastSection(true);
    
        ui->stackedWidget_2->setCurrentWidget(ui->page_4);
        ui->sqltableView->setEnabled(true);
    }

    以下是工程源碼和打包應用程序的下載鏈接,感興趣的朋友可以看一看:

    https://download.csdn.net/download/qq_38189484/10330257

    版權聲明:本文為qq_38189484原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_38189484/article/details/79839036

    智能推薦

    Qt學習筆記之SQLITE數據庫

    1. SQLite數據庫介紹 SQLite,是一款輕型的數據庫,是遵守ACID的關系型數據庫管理系統,它包含在一個相對小的C庫中。它是D.RichardHipp建立的公有領域項目。它的設計目標是嵌入式的,而且已經在很多嵌入式產品中使用了它,它占用資源非常的低,在嵌入式設備中,可能只需要幾百K的內存就夠了。它能夠支持Windows/Linux/Unix等等主流的操作系統,同時能夠跟很多程序語言相結合...

    Qt之SQLite數據庫可視化工具

    文章目錄 SQLite可視化工具 Linux以及Windows下的SQLite的可視化工具SQLiteStudio Windows下的SQLite的可視化工具SQLite Expert linux下的SQLite的可視化工具SQLiteBrowser SQLite可視化工具 Linux以及Windows下的SQLite的可視化工具SQLiteStudio SQLiteStudio官網下載地址 SQ...

    QT之SQLITE3數據庫

    目錄 一、數據庫簡介 二、Linux下使用sqlite3 三、SQL語句 1.Create Table 2.Drop Table 3.Truncate Table 4.Insert Into 5.Select 6.Delete 7.Update 8.Alter Table 9.約束  四、Sqlite3類 1.QSqlDatabase  2.QSqlQuery 3.QStand...

    移動互聯網開發之SQLite數據庫的DAO標準CRUD操作

    移動互聯網開發之SQLite數據庫的DAO標準CRUD操作 項目要求 項目源碼地址 項目過程 項目要求 通過實例掌握SQLite數據庫的DAO標準CRUD操作 項目源碼地址 碼云倉庫地址:https://gitee.com/si–yue/MySQLite 項目過程 目錄結構 MainActivity對應的主布局activity_main.xml: 2個TextView:分別表示姓名和年...

    Android開發之SQLite數據庫的DAO標準CRUD操作

    Android開發之SQLite數據庫的DAO標準CRUD操作 一、功能說明 二、設計分析 三、運行界面展示 四、源碼代碼倉庫地址 一、功能說明 實現SQLITE數據庫基礎CRUD操作。 需實現的具體功能為: 創建包括姓名和年齡的數據庫,實現數據 -增:輸入姓名和年齡信息,點擊添加按鈕,數據添加進數據庫中在數據顯示欄顯示 -刪:在數據顯示欄點擊要刪除的數據,數據顯示在輸入信息欄,數據點擊刪除按鈕,...

    猜你喜歡

    Android開發之SQLite數據庫的DAO標準CRUD操作

    SQLite數據庫的DAO標準CRUD操作 功能說明: 實現SQLITE數據庫基礎CRUD操作。 需實現的具體功能為: 創建包括姓名和年齡的數據庫,實現數據 -增:輸入姓名和年齡信息,點擊添加按鈕,數據添加進數據庫中在數據顯示欄顯示 -刪:在數據顯示欄點擊要刪除的數據,數據顯示在輸入信息欄,數據點擊刪除按鈕,數據在數據顯示欄刪除 -查:呈現數據庫中的所有信息到數據顯示欄上 -改:在數據顯示欄點擊要...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    精品国产乱码久久久久久蜜桃不卡