Qt实现图书管理系统(C++)

2024-06-13 1914阅读

文章目录

  • 数据库表的实现
      • 创建表
      • 将powerDesigner里面的表导出成xxx.sql脚本
      • 将SQL文件导入数据库创建表
      • 图书管理系统思维导图
      • 创建工程
      • 开发阶段
            • 创建Dlg_login登录页面
            • login页面样式
            • 主页页面布局
            • 主函数测试login
            • 设置logo
            • 打包程序
            • 子页面的样子
            • 将子页面放到StackedWidget里面
            • 按钮直接形成互斥效果
            • 用属性选择器来改变样式
              • 设置user页面的标头和设置文本不可编辑
              • 创建SqlMgr类进行SQL操作
                  • 初始化数据库
                  • 登录功能login
                  • 用户功能
                    • getUsers功能
                    • 导入用户(导入文件里面的数据到数据库)
                    • 删除用户(del)
                    • 搜索用户
                    • 图书管理功能
                      • 获取图书
                      • 添加图书
                      • 修改图书
                      • 删除图书
                        • 遇到的错误
                        • 借阅图书
                        • 搜索图书
                        • 借阅记录管理功能
                          • 获取借阅记录
                          • 模糊查询记录
                          • 归还图书
                            • 出现的问题
                            • 清空借阅记录
                            • 登录功能
                            • 页面展示

                              数据库表的实现

                              Qt实现图书管理系统(C++)

                              创建表

                              Qt实现图书管理系统(C++)

                              创建三个表

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              将powerDesigner里面的表导出成xxx.sql脚本

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              此时就会生成文件在桌面了

                              Qt实现图书管理系统(C++)

                              将SQL文件导入数据库创建表

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              运行sql文件

                              Qt实现图书管理系统(C++)

                              设置主键自增

                              图书管理系统思维导图

                              Qt实现图书管理系统(C++)

                              创建工程

                              在qt上创建一个工程项目

                              Qt实现图书管理系统(C++)

                              把这个四个文件发到controller文件夹下,在创建一个dao文件夹

                              Qt实现图书管理系统(C++)

                              controller文件夹下面是一些界面类和逻辑类,dao文件夹下就是和数据库交互的

                              Qt实现图书管理系统(C++)

                              进入项目

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              加上这一句话

                              include($$PWD/controller/controller.pri)

                              正在右键项目执行qmake

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              添加一句这个以后生成的目标文件都在这里(当前文件目录的上一级创建一个bin 文件夹

                              Qt实现图书管理系统(C++)

                              开发阶段

                              创建Dlg_login登录页面

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              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实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              主函数测试login
                              int main(int argc, char *argv[])
                              {
                                  QApplication a(argc, argv);
                                  //实现登录
                                  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;
                              }
                              

                              实现Dlg_login函数

                              void Dlg_login::on_btn_login_clicked()
                              {
                                  setResult(1);
                                  this->hide();
                              }
                              void Dlg_login::on_btn_exit_clicked()
                              {
                                  setResult(0);
                                  this->hide();
                              }
                              
                              设置logo

                              Qt实现图书管理系统(C++)

                              在资源文件中添加一个app.rc文件,在打开这个app.rc文件 添加一句话:

                              IDI_ICON1 ICON DISCARDABLE “tubiao.ico”

                              再把这个ico图标放到这个资源文件里

                              Qt实现图书管理系统(C++)

                              打包程序

                              Qt实现图书管理系统(C++)

                              如果还 运行不了,可能是有些库没有权限没靠过来,手动考

                              Qt实现图书管理系统(C++)

                              子页面的样子

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              将子页面放到StackedWidget里面

                              Qt实现图书管理系统(C++)

                              #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);
                                  //设置首页是用户管理
                                  ui->stackedWidget->setCurrentIndex(0);
                                  qDebug()children();//获得子控件
                                  for(auto it:l){
                                     //为每个页面进行绑定槽函数
                                      if(it->objectName().contains("btn"))
                                      {
                                          connect(static_cast(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实现图书管理系统(C++)

                              按钮直接形成互斥效果

                              Qt实现图书管理系统(C++)

                              用属性选择器来改变样式

                              Qt实现图书管理系统(C++)

                              Qt实现图书管理系统(C++)

                              设置user页面的标头和设置文本不可编辑
                                ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);//一次选中一行
                                  ui->tableView->setModel(&m_model);
                                  ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//设置不可编辑
                                  m_model.setHorizontalHeaderLabels(QStringList{"用户id","年级","部门","权限","人物类型","密码","用户名"});
                              

                              Qt实现图书管理系统(C++)

                              创建SqlMgr类进行SQL操作

                              涉及到的函数函数和变量

                              class SqlMgr
                              {
                              public:
                                  SqlMgr();
                                  //设置单例模式
                                  static SqlMgr*  instance;
                                  static SqlMgr*  getInstance(){
                                      if(nullptr==instance){
                                          instance=new SqlMgr();
                                      }
                                      return instance;
                                  }
                                  void test1();
                                  void init();//初始化数据库
                                  //登录
                                  bool login(QString username,QString password,int &userId);
                                  //获取所有用户
                                  QVector getUsers(QString StrCondition="");
                                  //添加用户
                                  void addUsers(QVector );
                                  //删除用户
                                  void delUser(QString userId);
                                  //获取所有图书
                                  QVector getBooks(QString StrCondition="");
                                  //添加图书
                                  void addBooks(QVector );
                                  //修改图书
                                  void updateBook(QStringList);
                                  //删除图书
                                  QString delBook(QString bookId);
                                  //归还图书
                                  QString returnBook(QString userId,QString bookId);
                                  //图书借阅
                                  QString borrowBook(QString userId,QString bookId);
                                  //获取借阅记录
                                  QVector  getRecord(QString strCondition="");
                                  //清除借阅记录
                                  void clearRecord();
                                  //
                              private:
                                  QSqlDatabase m_db;
                              

                              初始化数据库

                              void SqlMgr::init()
                              {
                                  m_db=QSqlDatabase::addDatabase("QSQLITE");
                                  m_db.setDatabaseName(QCoreApplication::applicationDirPath()+"/db/WpcBook.db");
                                  qDebug()
                                  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);//执行查询语句 执行成功返回true
                                  if(ret==false){
                                      qDebug()
                                  QSqlQuery q(m_db);
                                  //StrCondition里可以写模糊查询的东西
                                  QString sql=QString("select *from user %1").arg(StrCondition);
                                  //获取到的数据可能是多行
                                  QVector
                                      qDebug()
                                      //读取返回来的数据
                                      //获取这个数据是几行
                                      int col =q.record().count();
                                      QStringList temp;
                                      while(q.next()){//向下读
                                          temp.clear();
                                          for(int i=0;i
                                              //将这一行数据转换为QString放到
                                              temp
                                  qDebug()"用户id","年级","部门","权限","人物类型","密码","用户名"});
                                   QList 
                                       items.clear();//清理
                                      for(int i=0;i
                                           //追加每一个元素
                                           items.append(new QStandardItem(tempList[i]));
                                      }
                                      //追加到一行上面
                                      m_model.appendRow(items);
                                  }
                              }
                              
                                  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()
                                  //会弹出页面窗口
                                  auto strPath=QFileDialog::getOpenFileName(nullptr,"输入文件路径");
                                  QVector
                                      QFile f(strPath);//读这个文件
                                      qDebug()
                                      QByteArray bytes= f.readLine();//一次读一行
                                      //转换为QString 里面的数据类型是 : xxx,xxx,xxx,xxx用,分割
                                      QString str(bytes);
                                      qDebug()
                                           QMessageBox::information(nullptr,"信息","导入失败",QMessageBox::Ok);
                                              return;
                                           }
                                           //把一行数据的最后的元素的最后两个字节去掉\n\r去掉
                                     strList[strList.size()-1]=strList[strList.size()-1].chopped(2);
                                      //存
                                       vec.push_back(strList);
                                      }
                                      //调用数据库
                                      SqlMgr::getInstance()-addUsers(vec);
                                      f.close();
                                      //刷新页面
                                      //ui-le_search-clear();
                                      initPage();
                                  }
                              }
                              
                                  QSqlQuery q(m_db);
                                  QString sql=QString("delete from user where id= %1").arg(userId);
                                  bool ret=q.exec(sql);
                                  if(!ret){
                                      qDebug()
                                  //获取鼠标点击到的哪一行的
                                  //第一列的数据
                                  int r=ui-tableView-currentIndex().row();//获取当前行号
                                  if(r
                                      QMessageBox::information(nullptr,"提示","请选中一行...",QMessageBox::Ok);
                                  }else{
                                  //获取r行 的0列
                                  auto id=m_model.item(r,0)-text();
                                  SqlMgr::getInstance()-delUser(id);
                                      //刷新页面
                                  initPage();
                                  }
                              }
                              
                                      QString sql=QString("where username like '%%1%' or department like '%%1%'").arg(arg1);
                                  
                                      initPage(sql);
                                  }
                              
                                  QSqlQuery q(m_db);
                                  QString sql=QString("select *from book %1").arg(StrCondition);
                                   QVector
                                      qDebug()
                                      QStringList strList;
                                      //获取这些数据有几列
                                      int col=q.record().count();
                                      //从q里面获取数据
                                      while(q.next()){
                                          strList.clear();
                                          for(int i=0;i
                                              //把这一行数据放进去
                                              strList
                                  //添加图书是一次添加一本
                                  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);//执行查询语句
                                  if(ret==false){
                                      qDebug()
                                  //调用dao的getbooks
                                  auto vec=SqlMgr::getInstance()-getBooks(condition);
                                  //拿数据显示到页面
                                  m_model.clear();//在设置一次头
                                  m_model.setHorizontalHeaderLabels(QStringList{"图书id","图书名称","价格","类型1","类型2","类型3","数量","图片"});
                                  for(QStringList tlist:vec){//拿出一行QStringList
                                      QList
                                          //追加到items
                                          items.append(new QStandardItem(tlist[i]));
                                      }
                                      qDebug()
                                  //添加图书是一次添加一本
                                  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);//执行查询语句
                                  if(ret==false){
                                      qDebug()
                                  //调用子窗口
                                  Dlg_addOrUp dlg;
                                  dlg.setFlag(-1);//添加就设置为-1
                                  dlg.exec();
                              }
                              
                                  ui-setupUi(this);
                              }
                              Dlg_addOrUp::~Dlg_addOrUp()
                              {
                                  delete ui;
                              }
                              void Dlg_addOrUp::addOrUp()
                              {
                                  QStringList strList;
                                  //添加
                                  if(m_flag==-1){
                                    //获取页面输入
                                      strList
                                  m_flag=flag;
                              }
                              void Dlg_addOrUp::on_btn_ok_clicked()
                              {
                                  addOrUp();
                                  //隐藏页面
                                  this-hide();
                              }
                              void Dlg_addOrUp::on_btn_cancel_clicked()
                              {
                                  this-hide();
                              }
                              
                                  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);//执行查询语句
                                  if(ret==false){
                                      qDebug()
                                  //判断有没有选中一行将要修改的数据
                                  //要知道鼠标点中哪一行
                                  int r=ui-tableView-currentIndex().row();
                                  if(r
                                      QMessageBox::information(nullptr,"信息","请选中要更新的一行",QMessageBox::Ok);
                                  }
                                  else{
                                      qDebug()
                                  QString sql=QString("where bookid= %1").arg(id);
                                  //先查询信息显示到页面上
                                  QVector
                                  QStringList strList;
                                  //添加
                                  if(m_flag==-1){
                                    //获取页面输入
                                      strList//修改
                                      strList.clear();
                                      strList
                                  QSqlQuery q(m_db);
                                  QString sql=QString("delete from book where bookid= %1").arg(bookId);
                                  bool ret=q.exec(sql);
                                  if(!ret){
                                      qDebug()
                                  //获取鼠标点击到哪一行了
                                  int r=ui-tableView-currentIndex().row();
                                  if(r
                                      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();
                                  }
                              }
                              
                                  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()
                              {
                                  //点击确定之后获取页面上的数据进行调用数据库
                                  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 
                              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
                              
                                  QSqlQuery q(m_db);
                                  QString sql=QString("update book set cnt=cnt-1 where bookid = %1").arg(bookId);
                                  bool ret=q.exec(sql);//执行查询语句
                                  if(ret==false){
                                      qDebug()
                                      qDebug()
                                  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);//执行查询语句
                                  if(ret==false){
                                      qDebug() // 移动到结果集中的第一条记录
                                      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;
                              }
                              
                                  //判断点击了哪一行数据
                                  int r=ui-tableView-currentIndex().row();
                                  if(r
                                      QMessageBox::information(nullptr,"信息","请选中要借阅的图书",QMessageBox::Ok);
                                  }else{
                                      auto bookid =m_model.item(r,0)-text();
                                      //获得cnt cnt
                                         QMessageBox::information(nullptr,"信息","该书没有库存了,嗷了个嗷~",QMessageBox::Ok);
                                          return;
                                      }
                                      //否则向下执行 要进行登记是谁借了这本书调用子页面
                                      Dlg_getSetBook dlg;
                                      //获得书的名字
                                      auto bookName =m_model.item(r,1)-text();
                                      dlg.setBookId(bookid);//设置图书id
                                      dlg.showBorrowBook(bookName);
                                      dlg.exec();
                                      initPage();
                                  }
                              
                                  QString sql=QString("where name like '%%1%' or type1 = '%1' or type2 = '%1' or type3 = '%1' ").arg(arg1);
                                  initPage(sql);
                              }
                              
                                  QSqlQuery q(m_db);
                                  QString sql=QString("select * from record %1").arg(strCondition);
                                  QVector
                                      qDebug()
                                      QStringList strList;
                                      //获取这些数据有几列
                                      int col=q.record().count();
                                      //从q里面获取数据
                                      while(q.next()){
                                          strList.clear();
                                          for(int i=0;i
                                              //把这一行数据放进去
                                              strList
                                  auto vec=SqlMgr::getInstance()-getRecord(condition);
                                  //拿数据显示到页面
                                  m_model.clear();//在设置一次头
                                  m_model.setHorizontalHeaderLabels(QStringList{"图书id","图书名称","价格","类型1","类型2","类型3","数量","图片"});
                                  for(QStringList strList:vec){
                                      QList
                                          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);
                              }
                              
                                  //同过开始时间和结束时间与用户名和密码进行查询
                                  QString sql=QString("where start like '%%1%' or end like '%%1%' or user.username = '%1' or book.name= '%1'").arg(arg1);
                                  initPage(sql);
                              }
                              
                                  //根据userid==bookid删除记录 在根据bookid为本书cnt(库存+1)
                                  QSqlQuery q(m_db);
                              //    qDebug()
                                      qDebug()
                                      qDebug()
                                  //获取鼠标点中的哪一行
                                  int r=ui-tableView-currentIndex().row();
                                  if(r
                                      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);//设置到页面上
                                      dlg.exec();
                                      initPage();
                                  }
                              }
                              QString cell_Record::getBookName(int bookid)
                              {
                                  QString bookName;
                                  bookName=SqlMgr::getInstance()-getBookName(bookid);
                                  return bookName;
                              }
                              
                                  //点击确定之后获取页面上的数据进行调用数据库
                                  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;
                                 }
                                      //获取当前登录在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){//借阅
                                      //借阅图书的时候用当前登录的用户的用户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();
                              }
                              
                                  //根据userid==bookid删除记录 在根据bookid为本书cnt(库存+1)
                                  QSqlQuery q(m_db);
                              //    qDebug()
                                      qDebug()
                                      qDebug()
                                  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()
                                      bookName= q.value(0).toString();
                                      return bookName;
                                  }
                                  return bookName;
                              }
                              
                                  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()
                              {
                                  //点击确定之后获取页面上的数据进行调用数据库
                                  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;
                                 }
                                      //获取当前登录在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){//借阅
                                      //借阅图书的时候用当前登录的用户的用户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();
                              }
                              
                                  //删除所有图书
                                      QSqlQuery q(m_db);
                                      QString sql=QString("delete from record;");
                                      bool ret=q.exec(sql);//执行查询语句
                                      if(ret==false){
                                          qDebug()
                                          qDebug()
                                  SqlMgr::getInstance()-clearRecord();
                                  initPage();
                              }
                              
                                  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);
                                  }
                              }
                              
                                  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);//执行查询语句 执行成功返回true
                                  if(ret==false){
                                      qDebug()
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]