├── README.md ├── libmanage_demo ├── D3Dcompiler_47.dll ├── Qt5Core.dll ├── Qt5Gui.dll ├── Qt5Sql.dll ├── Qt5Svg.dll ├── Qt5Widgets.dll ├── iconengines │ └── qsvgicon.dll ├── imageformats │ ├── qgif.dll │ ├── qicns.dll │ ├── qico.dll │ ├── qjpeg.dll │ ├── qsvg.dll │ ├── qtga.dll │ ├── qtiff.dll │ ├── qwbmp.dll │ └── qwebp.dll ├── libEGL.dll ├── libGLESV2.dll ├── libgcc_s_seh-1.dll ├── libmanage.exe ├── libstdc++-6.dll ├── libwinpthread-1.dll ├── opengl32sw.dll ├── platforms │ └── qwindows.dll ├── sqldrivers │ ├── qsqlite.dll │ ├── qsqlmysql.dll │ ├── qsqlodbc.dll │ └── qsqlpsql.dll ├── styles │ └── qwindowsvistastyle.dll └── translations │ ├── qt_ar.qm │ ├── qt_bg.qm │ ├── qt_ca.qm │ ├── qt_cs.qm │ ├── qt_da.qm │ ├── qt_de.qm │ ├── qt_en.qm │ ├── qt_es.qm │ ├── qt_fi.qm │ ├── qt_fr.qm │ ├── qt_gd.qm │ ├── qt_he.qm │ ├── qt_hu.qm │ ├── qt_it.qm │ ├── qt_ja.qm │ ├── qt_ko.qm │ ├── qt_lv.qm │ ├── qt_pl.qm │ ├── qt_ru.qm │ ├── qt_sk.qm │ ├── qt_uk.qm │ └── qt_zh_TW.qm ├── report.pdf └── src └── libmanage ├── addcard.cpp ├── addcard.h ├── addcard.ui ├── allwindows.h ├── bookborrow.cpp ├── bookborrow.h ├── bookborrow.ui ├── borrowbook.cpp ├── borrowbook.h ├── borrowbook.ui ├── const.cpp ├── const.h ├── createuser.cpp ├── createuser.h ├── createuser.ui ├── deletecard.cpp ├── deletecard.h ├── deletecard.ui ├── deleteuser.cpp ├── deleteuser.h ├── deleteuser.ui ├── filebookinsert.cpp ├── filebookinsert.h ├── filebookinsert.ui ├── getdatabase.cpp ├── getdatabase.h ├── getdatabase.ui ├── libmanage.pro ├── libmanage.pro.user ├── login.cpp ├── login.h ├── login.ui ├── main.cpp ├── mainwindow.cpp ├── mainwindow.h ├── mainwindow.ui ├── mylineedit.cpp ├── mylineedit.h ├── returnbook.cpp ├── returnbook.h ├── returnbook.ui ├── searchbook.cpp ├── searchbook.h ├── searchbook.ui ├── searchcard.cpp ├── searchcard.h ├── searchcard.ui ├── searchuser.cpp ├── searchuser.h ├── searchuser.ui ├── showrecord.cpp ├── showrecord.h ├── showrecord.ui ├── singlebookinsert.cpp ├── singlebookinsert.h ├── singlebookinsert.ui ├── updatecard.cpp ├── updatecard.h └── updatecard.ui /README.md: -------------------------------------------------------------------------------- 1 | # ReadMe 2 | 3 | * 压缩包内提供libmanage与libmanage_demo 4 | 5 | * libmanage为代码源文件,运行软件为QT Creator,编译环境为MinGW7.3.0 64bits,如需进行重新编译,需对.pro文件中的路径(INCLUDEPATH += D:\mysql-8.0.19-winx64\mysql-8.0.19-winx64\include)进行修改 6 | 7 | * libmanage_demo为qt发行版本的可执行文件,内附各种所需.dll驱动文件,可直接使用 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /libmanage_demo/D3Dcompiler_47.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/D3Dcompiler_47.dll -------------------------------------------------------------------------------- /libmanage_demo/Qt5Core.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/Qt5Core.dll -------------------------------------------------------------------------------- /libmanage_demo/Qt5Gui.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/Qt5Gui.dll -------------------------------------------------------------------------------- /libmanage_demo/Qt5Sql.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/Qt5Sql.dll -------------------------------------------------------------------------------- /libmanage_demo/Qt5Svg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/Qt5Svg.dll -------------------------------------------------------------------------------- /libmanage_demo/Qt5Widgets.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/Qt5Widgets.dll -------------------------------------------------------------------------------- /libmanage_demo/iconengines/qsvgicon.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/iconengines/qsvgicon.dll -------------------------------------------------------------------------------- /libmanage_demo/imageformats/qgif.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/imageformats/qgif.dll -------------------------------------------------------------------------------- /libmanage_demo/imageformats/qicns.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/imageformats/qicns.dll -------------------------------------------------------------------------------- /libmanage_demo/imageformats/qico.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/imageformats/qico.dll -------------------------------------------------------------------------------- /libmanage_demo/imageformats/qjpeg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/imageformats/qjpeg.dll -------------------------------------------------------------------------------- /libmanage_demo/imageformats/qsvg.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/imageformats/qsvg.dll -------------------------------------------------------------------------------- /libmanage_demo/imageformats/qtga.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/imageformats/qtga.dll -------------------------------------------------------------------------------- /libmanage_demo/imageformats/qtiff.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/imageformats/qtiff.dll -------------------------------------------------------------------------------- /libmanage_demo/imageformats/qwbmp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/imageformats/qwbmp.dll -------------------------------------------------------------------------------- /libmanage_demo/imageformats/qwebp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/imageformats/qwebp.dll -------------------------------------------------------------------------------- /libmanage_demo/libEGL.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/libEGL.dll -------------------------------------------------------------------------------- /libmanage_demo/libGLESV2.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/libGLESV2.dll -------------------------------------------------------------------------------- /libmanage_demo/libgcc_s_seh-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/libgcc_s_seh-1.dll -------------------------------------------------------------------------------- /libmanage_demo/libmanage.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/libmanage.exe -------------------------------------------------------------------------------- /libmanage_demo/libstdc++-6.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/libstdc++-6.dll -------------------------------------------------------------------------------- /libmanage_demo/libwinpthread-1.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/libwinpthread-1.dll -------------------------------------------------------------------------------- /libmanage_demo/opengl32sw.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/opengl32sw.dll -------------------------------------------------------------------------------- /libmanage_demo/platforms/qwindows.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/platforms/qwindows.dll -------------------------------------------------------------------------------- /libmanage_demo/sqldrivers/qsqlite.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/sqldrivers/qsqlite.dll -------------------------------------------------------------------------------- /libmanage_demo/sqldrivers/qsqlmysql.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/sqldrivers/qsqlmysql.dll -------------------------------------------------------------------------------- /libmanage_demo/sqldrivers/qsqlodbc.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/sqldrivers/qsqlodbc.dll -------------------------------------------------------------------------------- /libmanage_demo/sqldrivers/qsqlpsql.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/sqldrivers/qsqlpsql.dll -------------------------------------------------------------------------------- /libmanage_demo/styles/qwindowsvistastyle.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/styles/qwindowsvistastyle.dll -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_ar.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_ar.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_bg.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_bg.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_ca.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_ca.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_cs.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_cs.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_da.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_da.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_de.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_de.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_en.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_en.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_es.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_es.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_fi.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_fi.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_fr.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_fr.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_gd.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_gd.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_he.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_he.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_hu.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_hu.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_it.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_it.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_ja.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_ja.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_ko.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_ko.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_lv.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_lv.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_pl.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_pl.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_ru.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_ru.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_sk.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_sk.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_uk.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_uk.qm -------------------------------------------------------------------------------- /libmanage_demo/translations/qt_zh_TW.qm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/libmanage_demo/translations/qt_zh_TW.qm -------------------------------------------------------------------------------- /report.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/report.pdf -------------------------------------------------------------------------------- /src/libmanage/addcard.cpp: -------------------------------------------------------------------------------- 1 | #include "addcard.h" 2 | #include "ui_addcard.h" 3 | 4 | Addcard::Addcard(QWidget *parent) : 5 | QDialog(parent), 6 | ui(new Ui::Addcard) 7 | { 8 | ui->setupUi(this); 9 | } 10 | 11 | Addcard::~Addcard() 12 | { 13 | delete ui; 14 | } 15 | 16 | void Addcard::on_pushButton_clicked() 17 | { 18 | opendb(); 19 | if(!db.isOpen()){ 20 | qDebug()<<"数据库连接失败"; 21 | } 22 | else{ 23 | QString cno,name,department,type; 24 | cno=ui->text_cno->text(); 25 | if(cno.isEmpty()){ 26 | ui->label_info->setText("必须输入卡号"); 27 | } 28 | else{ 29 | name=ui->text_name->text(); 30 | department=ui->text_department->text(); 31 | if(ui->box_type->currentIndex()==1){ 32 | type="T"; 33 | } 34 | else if(ui->box_type->currentIndex()==2){ 35 | type="S"; 36 | } 37 | else{ 38 | type=""; 39 | } 40 | //****************查询是否已经存在该借书证********** 41 | QString str1="select * from card where cno='"+cno+"';"; 42 | qDebug()<label_info->setText("已经存在卡号"+cno); 48 | } 49 | //**************新建借书证*********** 50 | else{ 51 | str1="insert into card values('"+cno+"'"; 52 | if(!name.isEmpty()){ 53 | str1=str1+",'"+name+"'"; 54 | } 55 | else{ 56 | qDebug()<<"未设置姓名"; 57 | str1=str1+",null"; 58 | } 59 | if(!department.isEmpty()){ 60 | str1=str1+",'"+department+"'"; 61 | } 62 | else{ 63 | qDebug()<<"未设置部门"; 64 | str1=str1+",null"; 65 | } 66 | if(!type.isEmpty()){ 67 | str1=str1+",'"+type+"'"; 68 | } 69 | else{ 70 | qDebug()<<"未设置类别"; 71 | str1=str1+",null"; 72 | } 73 | str1=str1+");"; 74 | qDebug()<label_info->setText("新建借书证"+cno+"成功"); 79 | } 80 | else { 81 | qDebug()<<"新建借书证失败"; 82 | QString error=query1.lastError().text(); 83 | ui->label_info->setText(error); 84 | } 85 | } 86 | } 87 | db.close(); 88 | } 89 | } 90 | 91 | void Addcard::opendb(){ 92 | db=QSqlDatabase::addDatabase("QMYSQL"); 93 | db.setHostName("localhost"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost) 94 | db.setPort(3306); //连接数据库端口号,与设置一致 95 | db.setDatabaseName(database); //连接数据库名,与设置一致 96 | db.setUserName(username); //数据库用户名,与设置一致 97 | db.setPassword(password); //数据库密码,与设置一致 98 | db.open(); 99 | } 100 | -------------------------------------------------------------------------------- /src/libmanage/addcard.h: -------------------------------------------------------------------------------- 1 | #ifndef ADDCARD_H 2 | #define ADDCARD_H 3 | 4 | #include 5 | #include"const.h" 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | namespace Ui { 12 | class Addcard; 13 | } 14 | 15 | class Addcard : public QDialog 16 | { 17 | Q_OBJECT 18 | 19 | public: 20 | explicit Addcard(QWidget *parent = nullptr); 21 | ~Addcard(); 22 | 23 | private slots: 24 | void on_pushButton_clicked(); 25 | void opendb(); 26 | 27 | private: 28 | Ui::Addcard *ui; 29 | QSqlDatabase db; 30 | }; 31 | 32 | #endif // ADDCARD_H 33 | -------------------------------------------------------------------------------- /src/libmanage/addcard.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Addcard 4 | 5 | 6 | 7 | 0 8 | 0 9 | 552 10 | 425 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 200 20 | 40 21 | 151 22 | 61 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 20 29 | 30 | 31 | 32 | 新增借书证 33 | 34 | 35 | 36 | 37 | 38 | 130 39 | 120 40 | 101 41 | 21 42 | 43 | 44 | 45 | 46 | 汉仪劲楷简 47 | 12 48 | 49 | 50 | 51 | 卡号 52 | 53 | 54 | 55 | 56 | 57 | 130 58 | 160 59 | 101 60 | 21 61 | 62 | 63 | 64 | 65 | 汉仪劲楷简 66 | 12 67 | 68 | 69 | 70 | 姓名 71 | 72 | 73 | 74 | 75 | 76 | 130 77 | 240 78 | 101 79 | 21 80 | 81 | 82 | 83 | 84 | 汉仪劲楷简 85 | 12 86 | 87 | 88 | 89 | 类别 90 | 91 | 92 | 93 | 94 | 95 | 130 96 | 200 97 | 101 98 | 21 99 | 100 | 101 | 102 | 103 | 汉仪劲楷简 104 | 12 105 | 106 | 107 | 108 | 单位 109 | 110 | 111 | 112 | 113 | 114 | 190 115 | 119 116 | 211 117 | 21 118 | 119 | 120 | 121 | 122 | 楷体 123 | 10 124 | 125 | 126 | 127 | 128 | 129 | 130 | 190 131 | 160 132 | 211 133 | 21 134 | 135 | 136 | 137 | 138 | 楷体 139 | 10 140 | 141 | 142 | 143 | 144 | 145 | 146 | 190 147 | 199 148 | 211 149 | 21 150 | 151 | 152 | 153 | 154 | 楷体 155 | 10 156 | 157 | 158 | 159 | 160 | 161 | 162 | 210 163 | 300 164 | 130 165 | 50 166 | 167 | 168 | 169 | 170 | 汉仪劲楷简 171 | 15 172 | 173 | 174 | 175 | 确认新增 176 | 177 | 178 | 179 | 180 | 181 | 190 182 | 240 183 | 81 184 | 22 185 | 186 | 187 | 188 | 189 | 楷体 190 | 10 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 教师 201 | 202 | 203 | 204 | 205 | 学生 206 | 207 | 208 | 209 | 210 | 211 | 212 | 240 213 | 360 214 | 221 215 | 31 216 | 217 | 218 | 219 | 220 | 汉仪劲楷简 221 | 12 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | -------------------------------------------------------------------------------- /src/libmanage/allwindows.h: -------------------------------------------------------------------------------- 1 | #ifndef ALLWINDOWS_H 2 | #define ALLWINDOWS_H 3 | 4 | #endif // ALLWINDOWS_H 5 | -------------------------------------------------------------------------------- /src/libmanage/bookborrow.cpp: -------------------------------------------------------------------------------- 1 | #include "bookborrow.h" 2 | #include "ui_bookborrow.h" 3 | 4 | bookborrow::bookborrow(QWidget *parent) : 5 | QDialog(parent), 6 | ui(new Ui::bookborrow) 7 | { 8 | ui->setupUi(this); 9 | } 10 | 11 | bookborrow::~bookborrow() 12 | { 13 | delete ui; 14 | } 15 | -------------------------------------------------------------------------------- /src/libmanage/bookborrow.h: -------------------------------------------------------------------------------- 1 | #ifndef BOOKBORROW_H 2 | #define BOOKBORROW_H 3 | 4 | #include 5 | 6 | namespace Ui { 7 | class bookborrow; 8 | } 9 | 10 | class bookborrow : public QDialog 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | explicit bookborrow(QWidget *parent = nullptr); 16 | ~bookborrow(); 17 | 18 | private: 19 | Ui::bookborrow *ui; 20 | }; 21 | 22 | #endif // BOOKBORROW_H 23 | -------------------------------------------------------------------------------- /src/libmanage/bookborrow.ui: -------------------------------------------------------------------------------- 1 | 2 | bookborrow 3 | 4 | 5 | 6 | 0 7 | 0 8 | 400 9 | 300 10 | 11 | 12 | 13 | Dialog 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/libmanage/borrowbook.cpp: -------------------------------------------------------------------------------- 1 | #include "borrowbook.h" 2 | #include "ui_borrowbook.h" 3 | #include 4 | 5 | 6 | Borrowbook::Borrowbook(QWidget *parent) : 7 | QDialog(parent), 8 | ui(new Ui::Borrowbook) 9 | { 10 | ui->setupUi(this); 11 | QDate date(QDate::currentDate()); 12 | int year = date.year(); 13 | int month = date.month(); 14 | int day = date.day(); 15 | ui->text_date->setText(QString::number(year)+"."+QString::number(month)+"."+QString::number(day)); 16 | ui->text_date->setEnabled(0); 17 | //qDebug()<label_info->clear(); 29 | QSqlQuery query(db); 30 | QString str1="select * from card where cno='"+ui->text_cno->text()+"';"; 31 | query.exec(str1); 32 | if(!query.next()){ 33 | ui->label_info->setText("不存在该借书证"); 34 | } 35 | else{ 36 | str1="select stock from book where bno='"+ui->text_bno->text()+"';"; 37 | qDebug()<label_info->setText("不存在该书号"); 41 | } 42 | else{ 43 | if(query.value(0).toInt()>0){ 44 | //有库存 45 | QString str2="update book set stock=stock-1 where bno='"+ui->text_bno->text()+"';"; 46 | bool s1=query.exec(str2); 47 | int day=QDateTime::currentSecsSinceEpoch()/3600/24; 48 | qDebug()<text_cno->text()+"','"+ui->text_bno->text()+"',"+QString::number(day)+",null);"; 50 | bool s2=query.exec(str2); 51 | if(s1&s2)ui->label_info->setText("借阅成功"); 52 | else ui->label_info->setText("借阅失败,该借书证已借阅该书"); 53 | } 54 | else{ 55 | ui->label_info->setText("本书无库存"); 56 | QString str3="select borrow_date from borrow where bno='"+ui->text_bno->text()+"';"; 57 | query.exec(str3); 58 | query.next(); 59 | int date=query.value(0).toInt(); 60 | 61 | while(query.next()){ 62 | if(query.value(0).toInt()>date)date=query.value(0).toInt(); 63 | } 64 | QString temp; 65 | temp=QDateTime::fromSecsSinceEpoch(date*24*3600).toString(); 66 | QListlst; 67 | lst=temp.split(' '); 68 | ui->label_info->setText("本书无库存,最近借阅时间为"+lst[4]+"年"+lst[1]+lst[2]); 69 | qDebug()< 5 | #include"const.h" 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | namespace Ui { 17 | class Borrowbook; 18 | } 19 | 20 | class Borrowbook : public QDialog 21 | { 22 | Q_OBJECT 23 | 24 | public: 25 | explicit Borrowbook(QWidget *parent = nullptr); 26 | ~Borrowbook(); 27 | 28 | private slots: 29 | void on_btn_borrow_clicked(); 30 | void opendb(); 31 | 32 | private: 33 | Ui::Borrowbook *ui; 34 | QSqlDatabase db; 35 | }; 36 | 37 | #endif // BORROWBOOK_H 38 | -------------------------------------------------------------------------------- /src/libmanage/borrowbook.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Borrowbook 4 | 5 | 6 | 7 | 0 8 | 0 9 | 395 10 | 300 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 50 20 | 80 21 | 81 22 | 31 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 12 29 | 30 | 31 | 32 | 卡号 33 | 34 | 35 | 36 | 37 | 38 | 130 39 | 170 40 | 101 41 | 31 42 | 43 | 44 | 45 | 46 | 楷体 47 | 10 48 | 49 | 50 | 51 | 52 | 53 | 54 | 160 55 | 10 56 | 141 57 | 61 58 | 59 | 60 | 61 | 62 | 汉仪劲楷简 63 | 20 64 | 65 | 66 | 67 | 借书 68 | 69 | 70 | 71 | 72 | 73 | 50 74 | 120 75 | 81 76 | 31 77 | 78 | 79 | 80 | 81 | 汉仪劲楷简 82 | 12 83 | 84 | 85 | 86 | 书号 87 | 88 | 89 | 90 | 91 | 92 | 100 93 | 79 94 | 211 95 | 31 96 | 97 | 98 | 99 | 100 | 楷体 101 | 10 102 | 103 | 104 | 105 | 106 | 107 | 108 | 100 109 | 120 110 | 211 111 | 31 112 | 113 | 114 | 115 | 116 | 楷体 117 | 10 118 | 119 | 120 | 121 | 122 | 123 | 124 | 40 125 | 220 126 | 301 127 | 31 128 | 129 | 130 | 131 | 132 | 汉仪劲楷简 133 | 12 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 240 144 | 170 145 | 71 146 | 31 147 | 148 | 149 | 150 | 151 | 汉仪劲楷简 152 | 15 153 | 154 | 155 | 156 | 借书 157 | 158 | 159 | 160 | 161 | 162 | 50 163 | 170 164 | 81 165 | 31 166 | 167 | 168 | 169 | 170 | 汉仪劲楷简 171 | 12 172 | 173 | 174 | 175 | 借书日期 176 | 177 | 178 | 179 | 180 | 181 | 182 | -------------------------------------------------------------------------------- /src/libmanage/const.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MiracleZeroPenguin/Library-Manager-DBMS-QtCpp/3aeee173a9e456924b6271af8abf385feb0d7c65/src/libmanage/const.cpp -------------------------------------------------------------------------------- /src/libmanage/const.h: -------------------------------------------------------------------------------- 1 | #ifndef CONST_H 2 | #define CONST_H 3 | #include 4 | extern QString username; 5 | extern QString password; 6 | extern QString database; 7 | QSqlDatabase opendb(); 8 | #endif // CONST_H 9 | -------------------------------------------------------------------------------- /src/libmanage/createuser.cpp: -------------------------------------------------------------------------------- 1 | #include "createuser.h" 2 | #include "ui_createuser.h" 3 | #include"const.h" 4 | 5 | Createuser::Createuser(QWidget *parent) : 6 | QDialog(parent), 7 | ui(new Ui::Createuser) 8 | { 9 | ui->setupUi(this); 10 | } 11 | 12 | Createuser::~Createuser() 13 | { 14 | delete ui; 15 | } 16 | 17 | void Createuser::on_pushButton_clicked() 18 | { 19 | opendb(); 20 | //QSqlDatabase db; 21 | 22 | if(!db.open()){ 23 | qDebug()<<"不能连接createuser"<<"connect to mysql error"; 24 | } 25 | else{ 26 | qDebug()<<"连接成功createuser"<<"connect to mysql OK"; 27 | QString new_username; 28 | QString new_password; 29 | new_username=ui->text_newname->text(); 30 | new_password=ui->text_newpassword->text(); 31 | QSqlQuery query; 32 | QString str1; 33 | str1="CREATE USER '"+new_username+"'@'localhost' IDENTIFIED BY '"+new_password+"';"; 34 | qDebug()<label_createinfo->setText("创建用户"+new_username+"成功"); 52 | } 53 | else{ 54 | qDebug()<<"创建用户失败"; 55 | ui->label_createinfo->setText("创建用户"+new_username+"失败"); 56 | } 57 | } 58 | db.close(); 59 | } 60 | 61 | void Createuser::opendb(){ 62 | db=QSqlDatabase::addDatabase("QMYSQL"); 63 | db.setHostName("localhost"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost) 64 | db.setPort(3306); //连接数据库端口号,与设置一致 65 | db.setDatabaseName(database); //连接数据库名,与设置一致 66 | db.setUserName(username); //数据库用户名,与设置一致 67 | db.setPassword(password); //数据库密码,与设置一致 68 | db.open(); 69 | } 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /src/libmanage/createuser.h: -------------------------------------------------------------------------------- 1 | #ifndef CREATEUSER_H 2 | #define CREATEUSER_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | namespace Ui { 9 | class Createuser; 10 | } 11 | 12 | class Createuser : public QDialog 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | explicit Createuser(QWidget *parent = nullptr); 18 | ~Createuser(); 19 | 20 | private slots: 21 | void on_pushButton_clicked(); 22 | void opendb(); 23 | 24 | private: 25 | Ui::Createuser *ui; 26 | QSqlDatabase db; 27 | 28 | }; 29 | 30 | #endif // CREATEUSER_H 31 | -------------------------------------------------------------------------------- /src/libmanage/createuser.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Createuser 4 | 5 | 6 | 7 | 0 8 | 0 9 | 552 10 | 425 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 200 20 | 70 21 | 151 22 | 61 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 20 29 | 30 | 31 | 32 | 创建管理员 33 | 34 | 35 | 36 | 37 | 38 | 220 39 | 160 40 | 160 41 | 30 42 | 43 | 44 | 45 | 46 | 10 47 | 48 | 49 | 50 | 51 | 52 | 53 | 220 54 | 220 55 | 160 56 | 30 57 | 58 | 59 | 60 | 61 | 10 62 | 63 | 64 | 65 | 66 | 67 | 68 | 140 69 | 160 70 | 71 71 | 21 72 | 73 | 74 | 75 | 76 | 汉仪劲楷简 77 | 12 78 | 79 | 80 | 81 | 用户名 82 | 83 | 84 | 85 | 86 | 87 | 140 88 | 220 89 | 71 90 | 21 91 | 92 | 93 | 94 | 95 | 汉仪劲楷简 96 | 12 97 | 98 | 99 | 100 | 密码 101 | 102 | 103 | 104 | 105 | 106 | 200 107 | 320 108 | 130 109 | 50 110 | 111 | 112 | 113 | 114 | 汉仪劲楷简 115 | 15 116 | 117 | 118 | 119 | 创建 120 | 121 | 122 | 123 | 124 | 125 | 208 126 | 279 127 | 121 128 | 31 129 | 130 | 131 | 132 | 133 | 汉仪劲楷简 134 | 10 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | -------------------------------------------------------------------------------- /src/libmanage/deletecard.cpp: -------------------------------------------------------------------------------- 1 | #include "deletecard.h" 2 | #include "ui_deletecard.h" 3 | 4 | Deletecard::Deletecard(QWidget *parent) : 5 | QDialog(parent), 6 | ui(new Ui::Deletecard) 7 | { 8 | ui->setupUi(this); 9 | } 10 | 11 | Deletecard::~Deletecard() 12 | { 13 | delete ui; 14 | } 15 | 16 | void Deletecard::on_pushButton_clicked() 17 | { 18 | opendb(); 19 | if(!db.isOpen()){ 20 | qDebug()<<"数据库连接失败"; 21 | } 22 | else{ 23 | qDebug()<<"数据库连接成功"; 24 | QString cno; 25 | cno=ui->text_cno->text(); 26 | if(cno.isEmpty()){ 27 | ui->label_deleteinfo->setText("必须输入卡号"); 28 | } 29 | else{ 30 | 31 | //****************查询是否已经存在该借书证********** 32 | QString str1="select * from card where cno='"+cno+"';"; 33 | qDebug()<label_deleteinfo->setText("不存在卡号"+cno); 39 | } 40 | //**************删除借书证*********** 41 | else{ 42 | str1="delete from card where cno='"+cno+"';"; 43 | 44 | qDebug()<label_deleteinfo->setText("删除借书证"+cno+"成功"); 50 | } 51 | else { 52 | qDebug()<<"删除借书证失败"; 53 | QString error=query1.lastError().text(); 54 | ui->label_deleteinfo->setText(error); 55 | } 56 | } 57 | } 58 | db.close(); 59 | } 60 | } 61 | 62 | void Deletecard::opendb(){ 63 | db=QSqlDatabase::addDatabase("QMYSQL"); 64 | db.setHostName("localhost"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost) 65 | db.setPort(3306); //连接数据库端口号,与设置一致 66 | db.setDatabaseName(database); //连接数据库名,与设置一致 67 | db.setUserName(username); //数据库用户名,与设置一致 68 | db.setPassword(password); //数据库密码,与设置一致 69 | db.open(); 70 | } 71 | -------------------------------------------------------------------------------- /src/libmanage/deletecard.h: -------------------------------------------------------------------------------- 1 | #ifndef DELETECARD_H 2 | #define DELETECARD_H 3 | 4 | #include 5 | #include"const.h" 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | namespace Ui { 13 | class Deletecard; 14 | } 15 | 16 | class Deletecard : public QDialog 17 | { 18 | Q_OBJECT 19 | 20 | public: 21 | explicit Deletecard(QWidget *parent = nullptr); 22 | ~Deletecard(); 23 | 24 | private slots: 25 | void on_pushButton_clicked(); 26 | void opendb(); 27 | 28 | private: 29 | Ui::Deletecard *ui; 30 | QSqlDatabase db; 31 | }; 32 | 33 | #endif // DELETECARD_H 34 | -------------------------------------------------------------------------------- /src/libmanage/deletecard.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Deletecard 4 | 5 | 6 | 7 | 0 8 | 0 9 | 381 10 | 326 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 120 20 | 40 21 | 151 22 | 61 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 20 29 | 30 | 31 | 32 | 删除借书证 33 | 34 | 35 | 36 | 37 | 38 | 60 39 | 120 40 | 81 41 | 31 42 | 43 | 44 | 45 | 46 | 汉仪劲楷简 47 | 12 48 | 49 | 50 | 51 | 卡号 52 | 53 | 54 | 55 | 56 | 57 | 110 58 | 120 59 | 201 60 | 31 61 | 62 | 63 | 64 | 65 | 楷体 66 | 10 67 | 68 | 69 | 70 | 71 | 72 | 73 | 120 74 | 190 75 | 130 76 | 50 77 | 78 | 79 | 80 | 81 | 汉仪劲楷简 82 | 15 83 | 84 | 85 | 86 | 确认删除 87 | 88 | 89 | 90 | 91 | 92 | 118 93 | 260 94 | 161 95 | 31 96 | 97 | 98 | 99 | 100 | 汉仪劲楷简 101 | 10 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /src/libmanage/deleteuser.cpp: -------------------------------------------------------------------------------- 1 | #include "deleteuser.h" 2 | #include "ui_deleteuser.h" 3 | #include"const.h" 4 | 5 | Deleteuser::Deleteuser(QWidget *parent) : 6 | QDialog(parent), 7 | ui(new Ui::Deleteuser) 8 | { 9 | ui->setupUi(this); 10 | 11 | } 12 | 13 | Deleteuser::~Deleteuser() 14 | { 15 | delete ui; 16 | } 17 | 18 | void Deleteuser::on_pushButton_clicked() 19 | { 20 | opendb(); 21 | if(!db.open()){ 22 | qDebug()<<"不能连接deleteuser"<<"connect to mysql error"; 23 | } 24 | else{ 25 | qDebug()<<"连接成功deleteuser"<<"connect to mysql OK"; 26 | QString delete_name; 27 | delete_name=ui->text_deletename->text(); 28 | QSqlQuery query; 29 | QString str1; 30 | str1="drop user "+delete_name+"@'localhost';"; 31 | qDebug()<label_deleteinfo->setText("删除用户"+delete_name+"成功"); 37 | } 38 | else{ 39 | qDebug()<<"删除用户失败"; 40 | ui->label_deleteinfo->setText("删除用户"+delete_name+"失败"); 41 | } 42 | db.close(); 43 | } 44 | 45 | } 46 | 47 | 48 | void Deleteuser::opendb(){ 49 | db=QSqlDatabase::addDatabase("QMYSQL"); 50 | db.setHostName("localhost"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost) 51 | db.setPort(3306); //连接数据库端口号,与设置一致 52 | db.setDatabaseName(database); //连接数据库名,与设置一致 53 | db.setUserName(username); //数据库用户名,与设置一致 54 | db.setPassword(password); //数据库密码,与设置一致 55 | db.open(); 56 | } 57 | -------------------------------------------------------------------------------- /src/libmanage/deleteuser.h: -------------------------------------------------------------------------------- 1 | #ifndef DELETEUSER_H 2 | #define DELETEUSER_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | namespace Ui { 9 | class Deleteuser; 10 | } 11 | 12 | class Deleteuser : public QDialog 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | explicit Deleteuser(QWidget *parent = nullptr); 18 | ~Deleteuser(); 19 | 20 | private slots: 21 | void on_pushButton_clicked(); 22 | void opendb(); 23 | 24 | private: 25 | Ui::Deleteuser *ui; 26 | QSqlDatabase db; 27 | }; 28 | 29 | #endif // DELETEUSER_H 30 | -------------------------------------------------------------------------------- /src/libmanage/deleteuser.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Deleteuser 4 | 5 | 6 | 7 | 0 8 | 0 9 | 552 10 | 425 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 200 20 | 70 21 | 151 22 | 61 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 20 29 | 30 | 31 | 32 | 删除管理员 33 | 34 | 35 | 36 | 37 | 38 | 140 39 | 180 40 | 71 41 | 21 42 | 43 | 44 | 45 | 46 | 汉仪劲楷简 47 | 12 48 | 49 | 50 | 51 | 用户名 52 | 53 | 54 | 55 | 56 | 57 | 210 58 | 170 59 | 160 60 | 30 61 | 62 | 63 | 64 | 65 | 10 66 | 67 | 68 | 69 | 70 | 71 | 72 | 200 73 | 280 74 | 130 75 | 50 76 | 77 | 78 | 79 | 80 | 汉仪劲楷简 81 | 15 82 | 83 | 84 | 85 | 确认删除 86 | 87 | 88 | 89 | 90 | 91 | 200 92 | 235 93 | 171 94 | 41 95 | 96 | 97 | 98 | 99 | 汉仪劲楷简 100 | 10 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /src/libmanage/filebookinsert.cpp: -------------------------------------------------------------------------------- 1 | #include "filebookinsert.h" 2 | #include "ui_filebookinsert.h" 3 | #include"QString" 4 | #include"QSqlQueryModel" 5 | Filebookinsert::Filebookinsert(QWidget *parent) : 6 | QDialog(parent), 7 | ui(new Ui::Filebookinsert) 8 | { 9 | ui->setupUi(this); 10 | } 11 | 12 | Filebookinsert::~Filebookinsert() 13 | { 14 | delete ui; 15 | } 16 | 17 | void Filebookinsert::on_pushButton_clicked() 18 | { 19 | 20 | filename=QFileDialog::getOpenFileName(this,tr("选择文件"),"D:\\",tr("*.txt")); 21 | if(!filename.isEmpty()){ 22 | ui->text_filename->setText(filename); 23 | } 24 | } 25 | 26 | void Filebookinsert::opendb(){ 27 | db=QSqlDatabase::addDatabase("QMYSQL"); 28 | db.setHostName("localhost"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost) 29 | db.setPort(3306); //连接数据库端口号,与设置一致 30 | db.setDatabaseName(database); //连接数据库名,与设置一致 31 | db.setUserName(username); //数据库用户名,与设置一致 32 | db.setPassword(password); //数据库密码,与设置一致 33 | db.open(); 34 | 35 | } 36 | 37 | void Filebookinsert::on_pushButton_2_clicked() 38 | { 39 | opendb(); 40 | 41 | //ui->table_new->setHorizontalHeaderLabels(strs); 42 | //ui->table_old->setHorizontalHeaderLabels(strs); 43 | 44 | if(!filename.isEmpty()){ 45 | //ui->text_filename->setText(filename); 46 | QFile file(filename); 47 | file.open(QIODevice::ReadOnly); 48 | 49 | if(file.isOpen()){ 50 | qDebug()<<"文件加载成功"; 51 | QTextStream in(&file); 52 | in.setCodec("UTF-8"); 53 | QString line=in.readLine(); 54 | int x=0; 55 | ui->table_bookinfo->setColumnCount(9); 56 | 57 | QString str1="select * from book;"; 58 | 59 | qDebug()<table_old->setColumnCount(9); 67 | QStringList strsold = {"bno","category","title","press","year","author","price","total","stock"}; 68 | ui->table_old->setHorizontalHeaderLabels(strsold); 69 | 70 | while(queryold.next()){ 71 | i=i+1; 72 | ui->table_old->setRowCount(i); 73 | ui->table_old->setItem(i-1,0,new QTableWidgetItem(queryold.value("bno").toString())); 74 | ui->table_old->setItem(i-1,1,new QTableWidgetItem(queryold.value("category").toString())); 75 | ui->table_old->setItem(i-1,2,new QTableWidgetItem(queryold.value("title").toString())); 76 | ui->table_old->setItem(i-1,3,new QTableWidgetItem(queryold.value("press").toString())); 77 | ui->table_old->setItem(i-1,4,new QTableWidgetItem(queryold.value("year").toString())); 78 | ui->table_old->setItem(i-1,5,new QTableWidgetItem(queryold.value("author").toString())); 79 | ui->table_old->setItem(i-1,6,new QTableWidgetItem(queryold.value("price").toString())); 80 | ui->table_old->setItem(i-1,7,new QTableWidgetItem(queryold.value("total").toString())); 81 | ui->table_old->setItem(i-1,8,new QTableWidgetItem(queryold.value("stock").toString())); 82 | } 83 | //************************************* 84 | while(!line.isNull()){ 85 | x=x+1; 86 | qDebug()<lst; 88 | //line.remove(QChar('('), Qt::CaseInsensitive); 89 | line=line.mid(1,line.length()-2); 90 | lst=line.split(','); 91 | for(int i=0;itable_bookinfo->setHorizontalHeaderLabels(strs); 111 | ui->table_bookinfo->setRowCount(x); 112 | for(int j=0;j<=7;j++){ 113 | lst[j]=lst[j].mid(1,lst[j].length()-2); 114 | ui->table_bookinfo->setItem(x-1,j+1,new QTableWidgetItem(lst[j])); 115 | } 116 | if(error_sim!="Dup"){ 117 | ui->table_bookinfo->setItem(x-1,0,new QTableWidgetItem(error)); 118 | } 119 | else{ 120 | ui->table_bookinfo->setItem(x-1,0,new QTableWidgetItem("更新信息")); 121 | 122 | //****************更新***************************** 123 | qDebug()<<"更新信息"; 124 | QSqlQuery query2; 125 | QString str2,str0; 126 | 127 | str0=" WHERE bno='"+lst[0]+"';"; 128 | bool successupdate=1; 129 | if(!lst[1].isEmpty()){ 130 | str2="UPDATE book SET category='"+lst[1]+"'"+str0; 131 | qDebug()<table_bookinfo->setRowCount(x); 175 | for(int j=0;j<=7;j++){ 176 | lst[j]=lst[j].mid(1,lst[j].length()-2); 177 | ui->table_bookinfo->setItem(x-1,j+1,new QTableWidgetItem(lst[j])); 178 | } 179 | ui->table_bookinfo->setItem(x-1,0,new QTableWidgetItem("成功导入")); 180 | //ui->table_bookinfo->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); 181 | } 182 | line=in.readLine(); 183 | } 184 | } 185 | 186 | //************************ 187 | QSqlQuery querynew(db); 188 | QString strnew="select * from book;"; 189 | querynew.exec(strnew); 190 | 191 | int i=0; 192 | ui->table_new->setColumnCount(9); 193 | QStringList strsnew = {"bno","category","title","press","year","author","price","total","stock"}; 194 | ui->table_new->setHorizontalHeaderLabels(strsnew); 195 | 196 | while(querynew.next()){ 197 | i=i+1; 198 | ui->table_new->setRowCount(i); 199 | ui->table_new->setItem(i-1,0,new QTableWidgetItem(querynew.value("bno").toString())); 200 | ui->table_new->setItem(i-1,1,new QTableWidgetItem(querynew.value("category").toString())); 201 | ui->table_new->setItem(i-1,2,new QTableWidgetItem(querynew.value("title").toString())); 202 | ui->table_new->setItem(i-1,3,new QTableWidgetItem(querynew.value("press").toString())); 203 | ui->table_new->setItem(i-1,4,new QTableWidgetItem(querynew.value("year").toString())); 204 | ui->table_new->setItem(i-1,5,new QTableWidgetItem(querynew.value("author").toString())); 205 | ui->table_new->setItem(i-1,6,new QTableWidgetItem(querynew.value("price").toString())); 206 | ui->table_new->setItem(i-1,7,new QTableWidgetItem(querynew.value("total").toString())); 207 | ui->table_new->setItem(i-1,8,new QTableWidgetItem(querynew.value("stock").toString())); 208 | } 209 | //************************************* 210 | db.close(); 211 | } 212 | else{ 213 | ui->text_filename->setText("文件导入失败"); 214 | } 215 | } 216 | -------------------------------------------------------------------------------- /src/libmanage/filebookinsert.h: -------------------------------------------------------------------------------- 1 | #ifndef FILEBOOKINSERT_H 2 | #define FILEBOOKINSERT_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include"const.h" 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | namespace Ui { 17 | class Filebookinsert; 18 | } 19 | 20 | class Filebookinsert : public QDialog 21 | { 22 | Q_OBJECT 23 | 24 | public: 25 | explicit Filebookinsert(QWidget *parent = nullptr); 26 | ~Filebookinsert(); 27 | 28 | private slots: 29 | void on_pushButton_clicked(); 30 | void opendb(); 31 | 32 | void on_pushButton_2_clicked(); 33 | 34 | private: 35 | Ui::Filebookinsert *ui; 36 | QString filename; 37 | QSqlDatabase db; 38 | 39 | }; 40 | 41 | #endif // FILEBOOKINSERT_H 42 | -------------------------------------------------------------------------------- /src/libmanage/filebookinsert.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Filebookinsert 4 | 5 | 6 | 7 | 0 8 | 0 9 | 717 10 | 626 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 270 20 | 30 21 | 201 22 | 61 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 20 29 | 30 | 31 | 32 | 图书批量入库 33 | 34 | 35 | 36 | 37 | 38 | 360 39 | 110 40 | 91 41 | 31 42 | 43 | 44 | 45 | 46 | 汉仪劲楷简 47 | 12 48 | 49 | 50 | 51 | 打开文件 52 | 53 | 54 | 55 | 56 | 57 | 60 58 | 110 59 | 291 60 | 31 61 | 62 | 63 | 64 | 65 | 楷体 66 | 10 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 570 77 | 110 78 | 91 79 | 31 80 | 81 | 82 | 83 | 84 | 汉仪劲楷简 85 | 12 86 | 87 | 88 | 89 | 导入图书 90 | 91 | 92 | 93 | 94 | 95 | 30 96 | 160 97 | 651 98 | 91 99 | 100 | 101 | 102 | 103 | 宋体 104 | 105 | 106 | 107 | 108 | 109 | 110 | 360 111 | 270 112 | 321 113 | 321 114 | 115 | 116 | 117 | 118 | 宋体 119 | 120 | 121 | 122 | 123 | 124 | 125 | 30 126 | 270 127 | 321 128 | 321 129 | 130 | 131 | 132 | 133 | 宋体 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | -------------------------------------------------------------------------------- /src/libmanage/getdatabase.cpp: -------------------------------------------------------------------------------- 1 | #include "getdatabase.h" 2 | #include "ui_getdatabase.h" 3 | #include"const.h" 4 | #include"mainwindow.h" 5 | QString database; 6 | 7 | Getdatabase::Getdatabase(QWidget *parent) : 8 | QDialog(parent), 9 | ui(new Ui::Getdatabase) 10 | { 11 | ui->setupUi(this); 12 | } 13 | 14 | Getdatabase::~Getdatabase() 15 | { 16 | delete ui; 17 | } 18 | 19 | void Getdatabase::on_pushButton_clicked() 20 | { 21 | database=ui->text_database->text(); 22 | MainWindow * mymain=new MainWindow; 23 | mymain->show(); 24 | this->close(); 25 | } 26 | -------------------------------------------------------------------------------- /src/libmanage/getdatabase.h: -------------------------------------------------------------------------------- 1 | #ifndef GETDATABASE_H 2 | #define GETDATABASE_H 3 | 4 | #include 5 | 6 | namespace Ui { 7 | class Getdatabase; 8 | } 9 | 10 | class Getdatabase : public QDialog 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | explicit Getdatabase(QWidget *parent = nullptr); 16 | ~Getdatabase(); 17 | 18 | private slots: 19 | void on_pushButton_clicked(); 20 | 21 | private: 22 | Ui::Getdatabase *ui; 23 | }; 24 | 25 | #endif // GETDATABASE_H 26 | -------------------------------------------------------------------------------- /src/libmanage/getdatabase.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Getdatabase 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 245 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 80 20 | 70 21 | 181 22 | 21 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 12 29 | 30 | 31 | 32 | 请输入对应数据库名 33 | 34 | 35 | 36 | 37 | 38 | 80 39 | 100 40 | 231 41 | 31 42 | 43 | 44 | 45 | 46 | 47 | 48 | 150 49 | 150 50 | 101 51 | 41 52 | 53 | 54 | 55 | 56 | 汉仪劲楷简 57 | 12 58 | 59 | 60 | 61 | 确认 62 | 63 | 64 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /src/libmanage/libmanage.pro: -------------------------------------------------------------------------------- 1 | #------------------------------------------------- 2 | # 3 | # Project created by QtCreator 2020-04-07T22:48:17 4 | # 5 | #------------------------------------------------- 6 | 7 | QT += core gui 8 | 9 | greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 10 | 11 | TARGET = libmanage 12 | TEMPLATE = app 13 | 14 | # The following define makes your compiler emit warnings if you use 15 | # any feature of Qt which has been marked as deprecated (the exact warnings 16 | # depend on your compiler). Please consult the documentation of the 17 | # deprecated API in order to know how to port your code away from it. 18 | DEFINES += QT_DEPRECATED_WARNINGS 19 | 20 | # You can also make your code fail to compile if you use deprecated APIs. 21 | # In order to do so, uncomment the following line. 22 | # You can also select to disable deprecated APIs only up to a certain version of Qt. 23 | #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 24 | 25 | CONFIG += c++11 26 | 27 | SOURCES += \ 28 | addcard.cpp \ 29 | borrowbook.cpp \ 30 | const.cpp \ 31 | createuser.cpp \ 32 | deletecard.cpp \ 33 | deleteuser.cpp \ 34 | filebookinsert.cpp \ 35 | getdatabase.cpp \ 36 | login.cpp \ 37 | main.cpp \ 38 | mainwindow.cpp \ 39 | mylineedit.cpp \ 40 | returnbook.cpp \ 41 | searchbook.cpp \ 42 | searchcard.cpp \ 43 | searchuser.cpp \ 44 | showrecord.cpp \ 45 | singlebookinsert.cpp \ 46 | updatecard.cpp 47 | 48 | HEADERS += \ 49 | addcard.h \ 50 | borrowbook.h \ 51 | const.h \ 52 | createuser.h \ 53 | deletecard.h \ 54 | deleteuser.h \ 55 | filebookinsert.h \ 56 | getdatabase.h \ 57 | login.h \ 58 | mainwindow.h \ 59 | mylineedit.h \ 60 | returnbook.h \ 61 | searchbook.h \ 62 | searchcard.h \ 63 | searchuser.h \ 64 | showrecord.h \ 65 | singlebookinsert.h \ 66 | updatecard.h 67 | 68 | FORMS += \ 69 | addcard.ui \ 70 | borrowbook.ui \ 71 | createuser.ui \ 72 | deletecard.ui \ 73 | deleteuser.ui \ 74 | filebookinsert.ui \ 75 | getdatabase.ui \ 76 | login.ui \ 77 | mainwindow.ui \ 78 | returnbook.ui \ 79 | searchbook.ui \ 80 | searchcard.ui \ 81 | searchuser.ui \ 82 | showrecord.ui \ 83 | singlebookinsert.ui \ 84 | updatecard.ui 85 | 86 | QT += sql 87 | 88 | INCLUDEPATH += D:\mysql-8.0.19-winx64\mysql-8.0.19-winx64\include 89 | 90 | 91 | # Default rules for deployment. 92 | qnx: target.path = /tmp/$${TARGET}/bin 93 | else: unix:!android: target.path = /opt/$${TARGET}/bin 94 | !isEmpty(target.path): INSTALLS += target 95 | -------------------------------------------------------------------------------- /src/libmanage/libmanage.pro.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | EnvironmentId 7 | {f53153c7-dbda-4fdb-a2f6-1f0a4214e472} 8 | 9 | 10 | ProjectExplorer.Project.ActiveTarget 11 | 0 12 | 13 | 14 | ProjectExplorer.Project.EditorSettings 15 | 16 | true 17 | false 18 | true 19 | 20 | Cpp 21 | 22 | CppGlobal 23 | 24 | 25 | 26 | QmlJS 27 | 28 | QmlJSGlobal 29 | 30 | 31 | 2 32 | UTF-8 33 | false 34 | 4 35 | false 36 | 80 37 | true 38 | true 39 | 1 40 | true 41 | false 42 | 0 43 | true 44 | true 45 | 0 46 | 8 47 | true 48 | 1 49 | true 50 | true 51 | true 52 | false 53 | 54 | 55 | 56 | ProjectExplorer.Project.PluginSettings 57 | 58 | 59 | -fno-delayed-template-parsing 60 | 61 | true 62 | 63 | 64 | 65 | ProjectExplorer.Project.Target.0 66 | 67 | Desktop Qt 5.13.0 MinGW 64-bit 68 | Desktop Qt 5.13.0 MinGW 64-bit 69 | qt.qt5.5130.win64_mingw73_kit 70 | 1 71 | 0 72 | 0 73 | 74 | D:/Qt/projects/build-libmanage-Desktop_Qt_5_13_0_MinGW_64_bit-Debug 75 | 76 | 77 | true 78 | qmake 79 | 80 | QtProjectManager.QMakeBuildStep 81 | true 82 | 83 | false 84 | false 85 | false 86 | 87 | 88 | true 89 | Make 90 | 91 | Qt4ProjectManager.MakeStep 92 | 93 | false 94 | 95 | 96 | false 97 | 98 | 2 99 | Build 100 | 101 | ProjectExplorer.BuildSteps.Build 102 | 103 | 104 | 105 | true 106 | Make 107 | 108 | Qt4ProjectManager.MakeStep 109 | 110 | true 111 | clean 112 | 113 | false 114 | 115 | 1 116 | Clean 117 | 118 | ProjectExplorer.BuildSteps.Clean 119 | 120 | 2 121 | false 122 | 123 | Debug 124 | Debug 125 | Qt4ProjectManager.Qt4BuildConfiguration 126 | 2 127 | true 128 | 129 | 130 | D:/Qt/projects/build-libmanage-Desktop_Qt_5_13_0_MinGW_64_bit-Release 131 | 132 | 133 | true 134 | qmake 135 | 136 | QtProjectManager.QMakeBuildStep 137 | false 138 | 139 | false 140 | false 141 | true 142 | 143 | 144 | true 145 | Make 146 | 147 | Qt4ProjectManager.MakeStep 148 | 149 | false 150 | 151 | 152 | false 153 | 154 | 2 155 | Build 156 | 157 | ProjectExplorer.BuildSteps.Build 158 | 159 | 160 | 161 | true 162 | Make 163 | 164 | Qt4ProjectManager.MakeStep 165 | 166 | true 167 | clean 168 | 169 | false 170 | 171 | 1 172 | Clean 173 | 174 | ProjectExplorer.BuildSteps.Clean 175 | 176 | 2 177 | false 178 | 179 | Release 180 | Release 181 | Qt4ProjectManager.Qt4BuildConfiguration 182 | 0 183 | true 184 | 185 | 186 | D:/Qt/projects/build-libmanage-Desktop_Qt_5_13_0_MinGW_64_bit-Profile 187 | 188 | 189 | true 190 | qmake 191 | 192 | QtProjectManager.QMakeBuildStep 193 | true 194 | 195 | false 196 | true 197 | true 198 | 199 | 200 | true 201 | Make 202 | 203 | Qt4ProjectManager.MakeStep 204 | 205 | false 206 | 207 | 208 | false 209 | 210 | 2 211 | Build 212 | 213 | ProjectExplorer.BuildSteps.Build 214 | 215 | 216 | 217 | true 218 | Make 219 | 220 | Qt4ProjectManager.MakeStep 221 | 222 | true 223 | clean 224 | 225 | false 226 | 227 | 1 228 | Clean 229 | 230 | ProjectExplorer.BuildSteps.Clean 231 | 232 | 2 233 | false 234 | 235 | Profile 236 | Profile 237 | Qt4ProjectManager.Qt4BuildConfiguration 238 | 0 239 | true 240 | 241 | 3 242 | 243 | 244 | 0 245 | 部署 246 | 247 | ProjectExplorer.BuildSteps.Deploy 248 | 249 | 1 250 | Deploy Configuration 251 | 252 | ProjectExplorer.DefaultDeployConfiguration 253 | 254 | 1 255 | 256 | 257 | dwarf 258 | 259 | cpu-cycles 260 | 261 | 262 | 250 263 | -F 264 | true 265 | 4096 266 | false 267 | false 268 | 1000 269 | 270 | true 271 | 272 | false 273 | false 274 | false 275 | false 276 | true 277 | 0.01 278 | 10 279 | true 280 | kcachegrind 281 | 1 282 | 25 283 | 284 | 1 285 | true 286 | false 287 | true 288 | valgrind 289 | 290 | 0 291 | 1 292 | 2 293 | 3 294 | 4 295 | 5 296 | 6 297 | 7 298 | 8 299 | 9 300 | 10 301 | 11 302 | 12 303 | 13 304 | 14 305 | 306 | 2 307 | 308 | libmanage 309 | 310 | Qt4ProjectManager.Qt4RunConfiguration:D:/Qt/projects/libmanage/libmanage.pro 311 | 312 | 3768 313 | false 314 | true 315 | true 316 | false 317 | false 318 | true 319 | 320 | D:/Qt/projects/build-libmanage-Desktop_Qt_5_13_0_MinGW_64_bit-Release 321 | 322 | 1 323 | 324 | 325 | 326 | ProjectExplorer.Project.TargetCount 327 | 1 328 | 329 | 330 | ProjectExplorer.Project.Updater.FileVersion 331 | 21 332 | 333 | 334 | Version 335 | 21 336 | 337 | 338 | -------------------------------------------------------------------------------- /src/libmanage/login.cpp: -------------------------------------------------------------------------------- 1 | #include "login.h" 2 | #include "ui_login.h" 3 | #include"mainwindow.h" 4 | #include"const.h" 5 | QString username; 6 | QString password; 7 | //QString database; 8 | 9 | login::login(QWidget *parent) : 10 | QDialog(parent), 11 | uilogin(new Ui::login) 12 | { 13 | uilogin->setupUi(this); 14 | uilogin->edit_username->clear(); 15 | uilogin->edit_password->clear(); 16 | uilogin->edit_password->setEchoMode(QLineEdit::Password); 17 | 18 | } 19 | 20 | login::~login() 21 | { 22 | delete uilogin; 23 | } 24 | 25 | void login::on_btn1_login_clicked() 26 | { 27 | //database="libmanage"; 28 | username=uilogin->edit_username->text(); 29 | password=uilogin->edit_password->text(); 30 | db=QSqlDatabase::addDatabase("QMYSQL"); 31 | db.setHostName("localhost"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost) 32 | db.setPort(3306); //连接数据库端口号,与设置一致 33 | db.setDatabaseName(database); //连接数据库名,与设置一致 34 | db.setUserName(username); //数据库用户名,与设置一致 35 | db.setPassword(password); //数据库密码,与设置一致 36 | db.open(); 37 | if(!db.open()){ 38 | uilogin->label4_logininfo->setText("用户名与密码不匹配"); 39 | qDebug()<<"不能连接"<<"connect to mysql error"<label4_logininfo->setText("登陆成功"); 43 | qDebug()<<"连接成功"<<"connect to mysql OK"; 44 | emit sendUsername(username); 45 | this->close(); 46 | } 47 | db.close(); 48 | } 49 | -------------------------------------------------------------------------------- /src/libmanage/login.h: -------------------------------------------------------------------------------- 1 | #ifndef LOGIN_H 2 | #define LOGIN_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include"const.h" 9 | #include 10 | 11 | namespace Ui { 12 | class login; 13 | } 14 | 15 | class login : public QDialog 16 | { 17 | Q_OBJECT 18 | 19 | public: 20 | explicit login(QWidget *parent = nullptr); 21 | ~login(); 22 | 23 | private slots: 24 | void on_btn1_login_clicked(); 25 | 26 | private: 27 | Ui::login *uilogin; 28 | QSqlDatabase db; 29 | 30 | signals: 31 | void sendUsername(QString); 32 | 33 | }; 34 | 35 | 36 | #endif // LOGIN_H 37 | -------------------------------------------------------------------------------- /src/libmanage/login.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | login 4 | 5 | 6 | 7 | 0 8 | 0 9 | 552 10 | 425 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 200 20 | 60 21 | 141 22 | 71 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 20 29 | 30 | 31 | 32 | 管理员登录 33 | 34 | 35 | 36 | 37 | 38 | 210 39 | 160 40 | 160 41 | 30 42 | 43 | 44 | 45 | 46 | 10 47 | 48 | 49 | 50 | 51 | 52 | 53 | 210 54 | 220 55 | 160 56 | 30 57 | 58 | 59 | 60 | 61 | 10 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 140 72 | 170 73 | 71 74 | 21 75 | 76 | 77 | 78 | 79 | 汉仪劲楷简 80 | 12 81 | 82 | 83 | 84 | 用户名 85 | 86 | 87 | 88 | 89 | 90 | 150 91 | 230 92 | 51 93 | 21 94 | 95 | 96 | 97 | 98 | 汉仪劲楷简 99 | 12 100 | 101 | 102 | 103 | 密码 104 | 105 | 106 | 107 | 108 | 109 | 200 110 | 320 111 | 130 112 | 50 113 | 114 | 115 | 116 | 117 | 汉仪劲楷简 118 | 15 119 | 120 | 121 | 122 | 登录 123 | 124 | 125 | 126 | 127 | 128 | 200 129 | 280 130 | 181 131 | 41 132 | 133 | 134 | 135 | 136 | 汉仪劲楷简 137 | 13 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | -------------------------------------------------------------------------------- /src/libmanage/main.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | #include"getdatabase.h" 3 | #include 4 | #include 5 | #include 6 | 7 | #include 8 | #include 9 | 10 | int main(int argc, char *argv[]) 11 | { 12 | qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1"); 13 | QApplication a(argc, argv); 14 | MainWindow w; 15 | Getdatabase d; 16 | //login L; 17 | d.show(); 18 | 19 | return a.exec(); 20 | } 21 | -------------------------------------------------------------------------------- /src/libmanage/mainwindow.cpp: -------------------------------------------------------------------------------- 1 | #include "mainwindow.h" 2 | #include "ui_mainwindow.h" 3 | 4 | 5 | MainWindow::MainWindow(QWidget *parent) : 6 | QMainWindow(parent), 7 | ui(new Ui::MainWindow) 8 | { 9 | ui->setupUi(this); 10 | login *dlg = &mylog; 11 | connect(dlg,SIGNAL(sendUsername(QString)),this,SLOT(receiveUsername(QString))); 12 | 13 | } 14 | 15 | MainWindow::~MainWindow() 16 | { 17 | delete ui; 18 | } 19 | 20 | void MainWindow::on_btn_login_clicked() 21 | { 22 | mylog.show(); 23 | } 24 | 25 | void MainWindow::receiveUsername(QString data) 26 | { 27 | ui->label4_username->setText(data); 28 | if(username=="root"){ 29 | ui->user_manage->setEnabled(1); 30 | } 31 | else{ 32 | ui->user_manage->setEnabled(0); 33 | } 34 | ui->book_insert->setEnabled(1); 35 | ui->btn_login->setEnabled(1); 36 | ui->book_borrow->setEnabled(1); 37 | ui->book_return->setEnabled(1); 38 | ui->card_manage->setEnabled(1); 39 | ui->book_search->setEnabled(1); 40 | } 41 | 42 | 43 | 44 | void MainWindow::on_user_manage_currentIndexChanged(const QString &arg1) 45 | { 46 | if(ui->user_manage->currentIndex() == 1){ 47 | Createuser * mycrea=new Createuser; 48 | mycrea->show();//新增管理员 49 | } 50 | else if(ui->user_manage->currentIndex() == 2){ 51 | Deleteuser *mydele=new Deleteuser; 52 | mydele->show(); 53 | } 54 | else if(ui->user_manage->currentIndex() == 3){ 55 | Searchuser * mysear=new Searchuser; 56 | mysear->show(); 57 | } 58 | ui->user_manage->setCurrentIndex(0); 59 | } 60 | 61 | void MainWindow::on_pushButton_2_clicked() 62 | { 63 | username=""; 64 | password=""; 65 | ui->user_manage->setEnabled(0); 66 | ui->book_insert->setEnabled(0); 67 | ui->label4_username->setText("游客");// 登出 68 | 69 | 70 | ui->book_borrow->setEnabled(0); 71 | ui->book_return->setEnabled(0); 72 | ui->card_manage->setEnabled(0); 73 | ui->book_search->setEnabled(0); 74 | } 75 | 76 | void MainWindow::on_book_insert_currentIndexChanged(const QString &arg1) 77 | { 78 | if(ui->book_insert->currentIndex()==1){ 79 | Singlebookinsert * mysbookin=new Singlebookinsert; 80 | mysbookin->show(); 81 | } 82 | if(ui->book_insert->currentIndex()==2){ 83 | Filebookinsert * myfbookin=new Filebookinsert; 84 | myfbookin->show(); 85 | } 86 | ui->book_insert->setCurrentIndex(0); 87 | } 88 | 89 | void MainWindow::on_book_search_clicked() 90 | { 91 | Searchbook * mysbook=new Searchbook; 92 | mysbook->show(); 93 | } 94 | 95 | void MainWindow::on_card_manage_currentIndexChanged(int index) 96 | { 97 | if(ui->card_manage->currentIndex()==1){ 98 | Addcard * myaddc=new Addcard; 99 | myaddc->show(); 100 | } 101 | else if(ui->card_manage->currentIndex()==2){ 102 | Updatecard * myupdc=new Updatecard; 103 | myupdc->show(); 104 | } 105 | else if(ui->card_manage->currentIndex()==3){ 106 | Deletecard * mydelc=new Deletecard; 107 | mydelc->show(); 108 | } 109 | else if(ui->card_manage->currentIndex()==4){ 110 | Searchcard * myseac=new Searchcard; 111 | myseac->show(); 112 | } 113 | 114 | ui->card_manage->setCurrentIndex(0); 115 | } 116 | 117 | void MainWindow::on_book_return_currentIndexChanged(const QString &arg1) 118 | { 119 | if(ui->book_return->currentIndex()==1){//显示 120 | Showrecord * myshowr=new Showrecord; 121 | myshowr->show(); 122 | } 123 | else if(ui->book_return->currentIndex()==2){//还书 124 | Returnbook * myretnb=new Returnbook; 125 | myretnb->show(); 126 | } 127 | ui->book_return->setCurrentIndex(0); 128 | } 129 | 130 | void MainWindow::on_book_borrow_currentIndexChanged(const QString &arg1) 131 | { 132 | if(ui->book_borrow->currentIndex()==1){ 133 | Showrecord * myshowr=new Showrecord; 134 | myshowr->show(); 135 | } 136 | else if(ui->book_borrow->currentIndex()==2){//借书 137 | Borrowbook * myborrb=new Borrowbook; 138 | myborrb->show(); 139 | } 140 | } 141 | -------------------------------------------------------------------------------- /src/libmanage/mainwindow.h: -------------------------------------------------------------------------------- 1 | #ifndef MAINWINDOW_H 2 | #define MAINWINDOW_H 3 | 4 | #include 5 | 6 | #include"login.h" 7 | #include"createuser.h" 8 | #include"deleteuser.h" 9 | #include"searchuser.h" 10 | #include"singlebookinsert.h" 11 | #include"filebookinsert.h" 12 | #include"searchbook.h" 13 | #include"addcard.h" 14 | #include"deletecard.h" 15 | #include"updatecard.h" 16 | #include"searchcard.h" 17 | #include"showrecord.h" 18 | #include"borrowbook.h" 19 | #include"returnbook.h" 20 | 21 | #include 22 | #include"const.h" 23 | namespace Ui { 24 | class MainWindow; 25 | } 26 | 27 | class MainWindow : public QMainWindow 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | explicit MainWindow(QWidget *parent = nullptr); 33 | ~MainWindow(); 34 | 35 | 36 | private slots: 37 | 38 | 39 | void on_btn_login_clicked(); 40 | 41 | private: 42 | Ui::MainWindow *ui; 43 | login mylog; 44 | //login mylog; 45 | //Createuser mycreateuser; 46 | //Deleteuser mydeleteuser; 47 | 48 | 49 | private slots: 50 | void receiveUsername(QString data); 51 | 52 | 53 | void on_user_manage_currentIndexChanged(const QString &arg1); 54 | 55 | void on_pushButton_2_clicked(); 56 | 57 | void on_book_insert_currentIndexChanged(const QString &arg1); 58 | 59 | void on_book_search_clicked(); 60 | 61 | void on_card_manage_currentIndexChanged(int index); 62 | 63 | void on_book_return_currentIndexChanged(const QString &arg1); 64 | 65 | void on_book_borrow_currentIndexChanged(const QString &arg1); 66 | 67 | signals: 68 | void sendSQL(QSqlDatabase); 69 | }; 70 | 71 | #endif // MAINWINDOW_H 72 | -------------------------------------------------------------------------------- /src/libmanage/mainwindow.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | MainWindow 4 | 5 | 6 | 7 | 0 8 | 0 9 | 800 10 | 600 11 | 12 | 13 | 14 | MainWindow 15 | 16 | 17 | 18 | 19 | 20 | 210 21 | 150 22 | 351 23 | 151 24 | 25 | 26 | 27 | 28 | 汉仪秦川飞影W 29 | 45 30 | 31 | 32 | 33 | 图书管理系统 34 | 35 | 36 | 37 | 38 | 39 | 570 40 | 30 41 | 91 42 | 41 43 | 44 | 45 | 46 | 47 | 楷体 48 | 20 49 | 50 | 51 | 52 | 登入 53 | 54 | 55 | 56 | 57 | 58 | 670 59 | 30 60 | 91 61 | 41 62 | 63 | 64 | 65 | 66 | 楷体 67 | 20 68 | 69 | 70 | 71 | 登出 72 | 73 | 74 | 75 | 76 | 77 | 570 78 | 80 79 | 81 80 | 51 81 | 82 | 83 | 84 | 85 | 楷体 86 | 15 87 | 88 | 89 | 90 | 用户名: 91 | 92 | 93 | 94 | 95 | 96 | 650 97 | 95 98 | 101 99 | 21 100 | 101 | 102 | 103 | 104 | 楷体 105 | 15 106 | 107 | 108 | 109 | 游客 110 | 111 | 112 | 113 | 114 | false 115 | 116 | 117 | 118 | 170 119 | 330 120 | 141 121 | 31 122 | 123 | 124 | 125 | 126 | 楷体 127 | 15 128 | 129 | 130 | 131 | 132 | 管理员增减 133 | 134 | 135 | 136 | 137 | 新增管理员 138 | 139 | 140 | 141 | 142 | 删除管理员 143 | 144 | 145 | 146 | 147 | 查看全部管理员 148 | 149 | 150 | 151 | 152 | 153 | false 154 | 155 | 156 | 157 | 330 158 | 330 159 | 141 160 | 31 161 | 162 | 163 | 164 | 165 | 楷体 166 | 15 167 | 168 | 169 | 170 | 171 | 图书入库 172 | 173 | 174 | 175 | 176 | 单本图书入库 177 | 178 | 179 | 180 | 181 | 批量入库 182 | 183 | 184 | 185 | 186 | 187 | false 188 | 189 | 190 | 191 | 490 192 | 330 193 | 141 194 | 31 195 | 196 | 197 | 198 | 199 | 楷体 200 | 15 201 | 202 | 203 | 204 | 图书查询 205 | 206 | 207 | 208 | 209 | false 210 | 211 | 212 | 213 | 170 214 | 400 215 | 141 216 | 31 217 | 218 | 219 | 220 | 221 | 楷体 222 | 15 223 | 224 | 225 | 226 | 227 | 借书 228 | 229 | 230 | 231 | 232 | 显示已借书籍 233 | 234 | 235 | 236 | 237 | 借书操作 238 | 239 | 240 | 241 | 242 | 243 | false 244 | 245 | 246 | 247 | 330 248 | 400 249 | 141 250 | 31 251 | 252 | 253 | 254 | 255 | 楷体 256 | 15 257 | 258 | 259 | 260 | 261 | 还书 262 | 263 | 264 | 265 | 266 | 显示已借书籍 267 | 268 | 269 | 270 | 271 | 还书操作 272 | 273 | 274 | 275 | 276 | 277 | false 278 | 279 | 280 | 281 | 490 282 | 400 283 | 141 284 | 31 285 | 286 | 287 | 288 | 289 | 楷体 290 | 15 291 | 292 | 293 | 294 | 295 | 借书证管理 296 | 297 | 298 | 299 | 300 | 新增借书证 301 | 302 | 303 | 304 | 305 | 修改借书证 306 | 307 | 308 | 309 | 310 | 删除借书证 311 | 312 | 313 | 314 | 315 | 查询借书证 316 | 317 | 318 | 319 | 320 | 321 | 322 | 560 323 | 510 324 | 251 325 | 31 326 | 327 | 328 | 329 | 330 | 10 331 | 332 | 333 | 334 | Created by Miracle_Zero 2020/4/11 335 | 336 | 337 | 338 | 339 | 340 | 341 | 0 342 | 0 343 | 800 344 | 21 345 | 346 | 347 | 348 | 349 | 350 | TopToolBarArea 351 | 352 | 353 | false 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | -------------------------------------------------------------------------------- /src/libmanage/mylineedit.cpp: -------------------------------------------------------------------------------- 1 | #include "mylineedit.h" 2 | 3 | mylineedit::mylineedit(QWidget *parent) : 4 | QLineEdit(parent) 5 | { 6 | } 7 | 8 | //重写mousePressEvent事件,检测事件类型是不是点击了鼠标左键 9 | void mylineedit::mousePressEvent(QMouseEvent *event) 10 | { 11 | //如果单击了就触发clicked信号 12 | if (event->button() == Qt::LeftButton) 13 | { 14 | //触发clicked信号 15 | emit clicked(); 16 | } 17 | //将该事件传给父类处理 18 | QLineEdit::mousePressEvent(event); 19 | } 20 | -------------------------------------------------------------------------------- /src/libmanage/mylineedit.h: -------------------------------------------------------------------------------- 1 | #ifndef MYLINEEDIT_H 2 | #define MYLINEEDIT_H 3 | #include 4 | #include 5 | 6 | class mylineedit: public QLineEdit 7 | { 8 | Q_OBJECT 9 | public: 10 | mylineedit(); 11 | explicit mylineedit(QWidget *parent = 0); 12 | protected: 13 | //重写mousePressEvent事件 14 | virtual void mousePressEvent(QMouseEvent *event); 15 | signals: 16 | //自定义clicked()信号,在mousePressEvent事件发生时触发 17 | void clicked(); 18 | public slots: 19 | }; 20 | #endif // MYLINEEDIT_H 21 | -------------------------------------------------------------------------------- /src/libmanage/returnbook.cpp: -------------------------------------------------------------------------------- 1 | #include "returnbook.h" 2 | #include "ui_returnbook.h" 3 | 4 | Returnbook::Returnbook(QWidget *parent) : 5 | QDialog(parent), 6 | ui(new Ui::Returnbook) 7 | { 8 | ui->setupUi(this); 9 | QDate date(QDate::currentDate()); 10 | int year = date.year(); 11 | int month = date.month(); 12 | int day = date.day(); 13 | ui->text_date->setText(QString::number(year)+"."+QString::number(month)+"."+QString::number(day)); 14 | ui->text_date->setEnabled(0); 15 | } 16 | 17 | Returnbook::~Returnbook() 18 | { 19 | delete ui; 20 | } 21 | 22 | void Returnbook::on_btn_return_clicked() 23 | { 24 | opendb(); 25 | ui->label_info->clear(); 26 | QSqlQuery query(db); 27 | QString str1="select * from card where cno='"+ui->text_cno->text()+"';"; 28 | query.exec(str1); 29 | if(!query.next()){ 30 | ui->label_info->setText("不存在该借书证"); 31 | } 32 | else{ 33 | str1="select return_date from borrow where bno='"+ui->text_bno->text()+"'and cno='"+ui->text_cno->text()+"';"; 34 | qDebug()<label_info->setText("该借书证无该记录"); 38 | } 39 | else{ 40 | qDebug()<label_info->setText("本书已归还"); 43 | } 44 | else{ 45 | 46 | //有借书未还 47 | QString str2="update book set stock=stock+1 where bno='"+ui->text_bno->text()+"';"; 48 | bool s1=query.exec(str2); 49 | int day=QDateTime::currentSecsSinceEpoch()/3600/24; 50 | qDebug()<label_info->setText("归还成功"); 55 | else ui->label_info->setText("归还失败"); 56 | } 57 | } 58 | } 59 | db.close(); 60 | } 61 | 62 | void Returnbook::opendb(){ 63 | db=QSqlDatabase::addDatabase("QMYSQL"); 64 | db.setHostName("localhost"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost) 65 | db.setPort(3306); //连接数据库端口号,与设置一致 66 | db.setDatabaseName(database); //连接数据库名,与设置一致 67 | db.setUserName(username); //数据库用户名,与设置一致 68 | db.setPassword(password); //数据库密码,与设置一致 69 | db.open(); 70 | } 71 | -------------------------------------------------------------------------------- /src/libmanage/returnbook.h: -------------------------------------------------------------------------------- 1 | #ifndef RETURNBOOK_H 2 | #define RETURNBOOK_H 3 | 4 | #include 5 | #include"const.h" 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | namespace Ui { 17 | class Returnbook; 18 | } 19 | 20 | class Returnbook : public QDialog 21 | { 22 | Q_OBJECT 23 | 24 | public: 25 | explicit Returnbook(QWidget *parent = nullptr); 26 | ~Returnbook(); 27 | 28 | private slots: 29 | void on_btn_return_clicked(); 30 | void opendb(); 31 | 32 | private: 33 | Ui::Returnbook *ui; 34 | QSqlDatabase db; 35 | }; 36 | 37 | #endif // RETURNBOOK_H 38 | -------------------------------------------------------------------------------- /src/libmanage/returnbook.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Returnbook 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 50 20 | 90 21 | 81 22 | 31 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 12 29 | 30 | 31 | 32 | 卡号 33 | 34 | 35 | 36 | 37 | 38 | 130 39 | 180 40 | 101 41 | 31 42 | 43 | 44 | 45 | 46 | 楷体 47 | 10 48 | 49 | 50 | 51 | 52 | 53 | 54 | 160 55 | 20 56 | 141 57 | 61 58 | 59 | 60 | 61 | 62 | 汉仪劲楷简 63 | 20 64 | 65 | 66 | 67 | 还书 68 | 69 | 70 | 71 | 72 | 73 | 50 74 | 130 75 | 81 76 | 31 77 | 78 | 79 | 80 | 81 | 汉仪劲楷简 82 | 12 83 | 84 | 85 | 86 | 书号 87 | 88 | 89 | 90 | 91 | 92 | 100 93 | 89 94 | 211 95 | 31 96 | 97 | 98 | 99 | 100 | 楷体 101 | 10 102 | 103 | 104 | 105 | 106 | 107 | 108 | 100 109 | 130 110 | 211 111 | 31 112 | 113 | 114 | 115 | 116 | 楷体 117 | 10 118 | 119 | 120 | 121 | 122 | 123 | 124 | 40 125 | 230 126 | 301 127 | 31 128 | 129 | 130 | 131 | 132 | 汉仪劲楷简 133 | 12 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 240 144 | 180 145 | 71 146 | 31 147 | 148 | 149 | 150 | 151 | 汉仪劲楷简 152 | 15 153 | 154 | 155 | 156 | 还书 157 | 158 | 159 | 160 | 161 | 162 | 50 163 | 180 164 | 81 165 | 31 166 | 167 | 168 | 169 | 170 | 汉仪劲楷简 171 | 12 172 | 173 | 174 | 175 | 还书日期 176 | 177 | 178 | 179 | 180 | 181 | 182 | -------------------------------------------------------------------------------- /src/libmanage/searchbook.cpp: -------------------------------------------------------------------------------- 1 | #include "searchbook.h" 2 | #include "ui_searchbook.h" 3 | 4 | Searchbook::Searchbook(QWidget *parent) : 5 | QDialog(parent), 6 | ui(new Ui::Searchbook) 7 | { 8 | ui->setupUi(this); 9 | ui->text_price1->setValidator(new QDoubleValidator(0,10000000 , 2, this)); 10 | ui->text_price2->setValidator(new QDoubleValidator(0,10000000 , 2, this)); 11 | QRegExp regExp("[0-9][0-9][0-9][0-9]");//正则表达式,第一位数字为a-z的数字,第二位为1-9的数字,后边是0-2位0-9的数字 12 | ui->text_year1->setValidator(new QRegExpValidator(regExp,this)); 13 | ui->text_year2->setValidator(new QRegExpValidator(regExp,this)); 14 | connect(ui->text_category, SIGNAL(clicked()), this, SLOT(text_category_clicked())); 15 | connect(ui->text_title, SIGNAL(clicked()), this, SLOT(text_title_clicked())); 16 | connect(ui->text_press, SIGNAL(clicked()), this, SLOT(text_press_clicked())); 17 | connect(ui->text_year1, SIGNAL(clicked()), this, SLOT(text_year1_clicked())); 18 | connect(ui->text_year2, SIGNAL(clicked()), this, SLOT(text_year2_clicked())); 19 | connect(ui->text_author, SIGNAL(clicked()), this, SLOT(text_author_clicked())); 20 | connect(ui->text_price1, SIGNAL(clicked()), this, SLOT(text_price1_clicked())); 21 | connect(ui->text_price2, SIGNAL(clicked()), this, SLOT(text_price2_clicked())); 22 | 23 | } 24 | 25 | Searchbook::~Searchbook() 26 | { 27 | delete ui; 28 | } 29 | 30 | void Searchbook::on_btn_search_clicked() 31 | { 32 | QString str="SELECT * from book where "; 33 | bool flag,lack; 34 | flag=0; 35 | lack=1; 36 | if(ui->check_category->checkState()){ 37 | qDebug()<<"规定类别"; 38 | QString category=ui->text_category->text(); 39 | if(category.isEmpty()){ 40 | ui->text_category->setText("请取消勾选或输入类别"); 41 | lack=0; 42 | } 43 | else{ 44 | str=str+"category='"+category+"'"; 45 | flag=1; 46 | } 47 | } 48 | if(ui->check_title->checkState()){ 49 | qDebug()<<"规定书名"; 50 | QString title=ui->text_title->text(); 51 | if(title.isEmpty()){ 52 | ui->text_title->setText("请取消勾选或输入类别"); 53 | lack=0; 54 | } 55 | else{ 56 | if(flag==1)str=str+" and title like'5"+title+"%'"; 57 | else str=str+"title like'%"+title+"%'"; 58 | flag=1; 59 | } 60 | } 61 | if(ui->check_press->checkState()){ 62 | qDebug()<<"规定出版社"; 63 | QString press=ui->text_press->text(); 64 | if(press.isEmpty()){ 65 | ui->text_press->setText("请取消勾选或输入类别"); 66 | lack=0; 67 | } 68 | else{ 69 | if(flag==1)str=str+" and press like'%"+press+"%'"; 70 | else str=str+"press like'%"+press+"%'"; 71 | flag=1; 72 | } 73 | } 74 | if(ui->check_year->checkState()){ 75 | qDebug()<<"规定年份"; 76 | QString year1=ui->text_year1->text(); 77 | QString year2=ui->text_year2->text(); 78 | if(year1.isEmpty()&&year1.isEmpty()){ 79 | ui->text_year1->setText("请取消勾选或输入类别"); 80 | ui->text_year2->setText("请取消勾选或输入类别"); 81 | lack=0; 82 | } 83 | else if((!year1.isEmpty())&&year2.isEmpty()){ 84 | if(flag==1)str=str+" and year>="+year1; 85 | else str=str+"year>="+year1; 86 | ui->text_year2->setText("默认无穷大"); 87 | flag=1; 88 | } 89 | else if((!year2.isEmpty())&&year1.isEmpty()){ 90 | if(flag==1)str=str+" and year<="+year2; 91 | else str=str+"year<="+year2; 92 | ui->text_year1->setText("默认无穷小"); 93 | flag=1; 94 | } 95 | else{ 96 | if(flag==1)str=str+" and year>="+year1+" and year<="+year2; 97 | else str=str+"year>="+year1+" and year<="+year2; 98 | flag=1; 99 | } 100 | } 101 | if(ui->check_author->checkState()){ 102 | qDebug()<<"规定作者"; 103 | QString author=ui->text_author->text(); 104 | if(author.isEmpty()){ 105 | ui->text_author->setText("请取消勾选或输入类别"); 106 | lack=0; 107 | } 108 | else{ 109 | if(flag==1)str=str+" and author like'%"+author+"%'"; 110 | else str=str+"author like'%"+author+"%'"; 111 | flag=1; 112 | } 113 | } 114 | if(ui->check_price->checkState()){ 115 | qDebug()<<"规定价格"; 116 | QString price1=ui->text_price1->text(); 117 | QString price2=ui->text_price2->text(); 118 | if(price1.isEmpty()&&price1.isEmpty()){ 119 | ui->text_price1->setText("请取消勾选或输入类别"); 120 | ui->text_price2->setText("请取消勾选或输入类别"); 121 | lack=0; 122 | } 123 | else if((!price1.isEmpty())&&price2.isEmpty()){ 124 | if(flag==1)str=str+" and price>="+price1; 125 | else str=str+"price>="+price1; 126 | ui->text_price2->setText("默认无穷大"); 127 | flag=1; 128 | } 129 | else if((!price2.isEmpty())&&price1.isEmpty()){ 130 | if(flag==1)str=str+" and price<="+price2; 131 | else str=str+"price<="+price2; 132 | ui->text_price1->setText("默认无穷小"); 133 | flag=1; 134 | } 135 | else{ 136 | if(flag==1)str=str+" and price>="+price1+" and year<="+price2; 137 | else str=str+"price>="+price1+" and price<="+price2; 138 | flag=1; 139 | } 140 | } 141 | if(!flag)str="select * from book;"; 142 | 143 | if(lack){ 144 | qDebug()<table_bookinfo->setRowCount(i); 155 | 156 | ui->table_bookinfo->setItem(i-1,0,new QTableWidgetItem(query.value("bno").toString())); 157 | ui->table_bookinfo->setItem(i-1,1,new QTableWidgetItem(query.value("category").toString())); 158 | ui->table_bookinfo->setItem(i-1,2,new QTableWidgetItem(query.value("title").toString())); 159 | ui->table_bookinfo->setItem(i-1,3,new QTableWidgetItem(query.value("press").toString())); 160 | ui->table_bookinfo->setItem(i-1,4,new QTableWidgetItem(query.value("year").toString())); 161 | ui->table_bookinfo->setItem(i-1,5,new QTableWidgetItem(query.value("author").toString())); 162 | ui->table_bookinfo->setItem(i-1,6,new QTableWidgetItem(query.value("price").toString())); 163 | ui->table_bookinfo->setItem(i-1,7,new QTableWidgetItem(query.value("total").toString())); 164 | ui->table_bookinfo->setItem(i-1,8,new QTableWidgetItem(query.value("stock").toString())); 165 | db.close(); 166 | } 167 | } 168 | 169 | } 170 | 171 | void Searchbook::opendb(){ 172 | db=QSqlDatabase::addDatabase("QMYSQL"); 173 | db.setHostName("localhost"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost) 174 | db.setPort(3306); //连接数据库端口号,与设置一致 175 | db.setDatabaseName(database); //连接数据库名,与设置一致 176 | db.setUserName(username); //数据库用户名,与设置一致 177 | db.setPassword(password); //数据库密码,与设置一致 178 | db.open(); 179 | } 180 | 181 | void Searchbook::text_category_clicked() 182 | { 183 | if(ui->text_category->text()=="请取消勾选或输入类别")ui->text_category->clear(); 184 | } 185 | void Searchbook::text_title_clicked(){ 186 | if(ui->text_title->text()=="请取消勾选或输入类别")ui->text_title->clear(); 187 | } 188 | void Searchbook::text_press_clicked(){ 189 | if(ui->text_press->text()=="请取消勾选或输入类别")ui->text_press->clear(); 190 | } 191 | void Searchbook::text_year1_clicked(){ 192 | if(ui->text_year1->text()=="请取消勾选或输入类别")ui->text_year1->clear(); 193 | } 194 | void Searchbook::text_year2_clicked(){ 195 | if(ui->text_year2->text()=="请取消勾选或输入类别")ui->text_year2->clear(); 196 | } 197 | void Searchbook::text_author_clicked(){ 198 | if(ui->text_author->text()=="请取消勾选或输入类别")ui->text_author->clear(); 199 | } 200 | void Searchbook::text_price1_clicked(){ 201 | if(ui->text_price1->text()=="请取消勾选或输入类别"||ui->text_price1->text()=="默认无穷大")ui->text_price1->clear(); 202 | } 203 | void Searchbook::text_price2_clicked(){ 204 | if(ui->text_price2->text()=="请取消勾选或输入类别"||ui->text_price2->text()=="默认无穷小")ui->text_price2->clear(); 205 | } 206 | 207 | 208 | 209 | 210 | 211 | 212 | void Searchbook::on_check_category_clicked(bool checked) 213 | { 214 | if(checked){ 215 | ui->text_category->setEnabled(1); 216 | } 217 | else{ 218 | ui->text_category->clear(); 219 | ui->text_category->setEnabled(0); 220 | } 221 | } 222 | 223 | void Searchbook::on_check_title_clicked(bool checked) 224 | { 225 | if(checked){ 226 | ui->text_title->setEnabled(1); 227 | } 228 | else{ 229 | ui->text_title->clear(); 230 | ui->text_title->setEnabled(0); 231 | } 232 | } 233 | 234 | void Searchbook::on_check_press_clicked(bool checked) 235 | { 236 | if(checked){ 237 | ui->text_press->setEnabled(1); 238 | } 239 | else{ 240 | ui->text_press->clear(); 241 | ui->text_press->setEnabled(0); 242 | } 243 | } 244 | 245 | void Searchbook::on_check_year_clicked(bool checked) 246 | { 247 | if(checked){ 248 | ui->text_year1->setEnabled(1); 249 | ui->text_year2->setEnabled(1); 250 | } 251 | else{ 252 | ui->text_year1->clear(); 253 | ui->text_year2->clear(); 254 | ui->text_year1->setEnabled(0); 255 | ui->text_year2->setEnabled(0); 256 | } 257 | } 258 | 259 | void Searchbook::on_check_author_clicked(bool checked) 260 | { 261 | if(checked){ 262 | ui->text_author->setEnabled(1); 263 | } 264 | else{ 265 | ui->text_author->clear(); 266 | ui->text_author->setEnabled(0); 267 | } 268 | } 269 | 270 | 271 | void Searchbook::on_check_price_clicked(bool checked) 272 | { 273 | if(checked){ 274 | ui->text_price1->setEnabled(1); 275 | ui->text_price2->setEnabled(1); 276 | } 277 | else{ 278 | ui->text_price1->clear(); 279 | ui->text_price2->clear(); 280 | ui->text_price1->setEnabled(0); 281 | ui->text_price2->setEnabled(0); 282 | } 283 | } 284 | -------------------------------------------------------------------------------- /src/libmanage/searchbook.h: -------------------------------------------------------------------------------- 1 | #ifndef SEARCHBOOK_H 2 | #define SEARCHBOOK_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include"const.h" 9 | #include 10 | #include 11 | 12 | namespace Ui { 13 | class Searchbook; 14 | } 15 | 16 | class Searchbook : public QDialog 17 | { 18 | Q_OBJECT 19 | 20 | public: 21 | explicit Searchbook(QWidget *parent = nullptr); 22 | ~Searchbook(); 23 | 24 | private slots: 25 | void on_btn_search_clicked(); 26 | void opendb(); 27 | 28 | 29 | private: 30 | Ui::Searchbook *ui; 31 | QSqlDatabase db; 32 | 33 | private slots: 34 | //定义槽函数处理lineedit clicked 35 | //void handlelineeditclicked(); 36 | void text_category_clicked(); 37 | void text_title_clicked(); 38 | void text_press_clicked(); 39 | void text_year1_clicked(); 40 | void text_year2_clicked(); 41 | void text_author_clicked(); 42 | void text_price1_clicked(); 43 | void text_price2_clicked(); 44 | 45 | 46 | void on_check_category_clicked(bool checked); 47 | void on_check_title_clicked(bool checked); 48 | void on_check_press_clicked(bool checked); 49 | void on_check_year_clicked(bool checked); 50 | void on_check_author_clicked(bool checked); 51 | void on_check_price_clicked(bool checked); 52 | }; 53 | 54 | #endif // SEARCHBOOK_H 55 | -------------------------------------------------------------------------------- /src/libmanage/searchbook.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Searchbook 4 | 5 | 6 | 7 | 0 8 | 0 9 | 809 10 | 509 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 340 20 | 30 21 | 121 22 | 71 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 20 29 | 30 | 31 | 32 | 图书查询 33 | 34 | 35 | 36 | 37 | true 38 | 39 | 40 | 41 | 50 42 | 110 43 | 64 44 | 17 45 | 46 | 47 | 48 | 49 | 汉仪劲楷简 50 | 12 51 | 52 | 53 | 54 | 类别 55 | 56 | 57 | true 58 | 59 | 60 | 61 | 62 | 63 | 50 64 | 150 65 | 64 66 | 17 67 | 68 | 69 | 70 | 71 | 汉仪劲楷简 72 | 12 73 | 74 | 75 | 76 | 年份 77 | 78 | 79 | 80 | 81 | 82 | 290 83 | 150 84 | 64 85 | 17 86 | 87 | 88 | 89 | 90 | 汉仪劲楷简 91 | 12 92 | 93 | 94 | 95 | 作者 96 | 97 | 98 | 99 | 100 | 101 | 290 102 | 110 103 | 64 104 | 17 105 | 106 | 107 | 108 | 109 | 汉仪劲楷简 110 | 12 111 | 112 | 113 | 114 | 书名 115 | 116 | 117 | 118 | 119 | 120 | 530 121 | 150 122 | 64 123 | 17 124 | 125 | 126 | 127 | 128 | 汉仪劲楷简 129 | 12 130 | 131 | 132 | 133 | 价格 134 | 135 | 136 | 137 | 138 | 139 | 530 140 | 110 141 | 81 142 | 17 143 | 144 | 145 | 146 | 147 | 汉仪劲楷简 148 | 12 149 | 150 | 151 | 152 | 出版社 153 | 154 | 155 | 156 | 157 | false 158 | 159 | 160 | 161 | 110 162 | 109 163 | 151 164 | 21 165 | 166 | 167 | 168 | 169 | 楷体 170 | 9 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | false 180 | 181 | 182 | 183 | 350 184 | 110 185 | 151 186 | 21 187 | 188 | 189 | 190 | 191 | 楷体 192 | 9 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | false 202 | 203 | 204 | 205 | 610 206 | 110 207 | 151 208 | 21 209 | 210 | 211 | 212 | 213 | 楷体 214 | 9 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | false 224 | 225 | 226 | 227 | 350 228 | 150 229 | 151 230 | 21 231 | 232 | 233 | 234 | 235 | 楷体 236 | 9 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | false 246 | 247 | 248 | 249 | 110 250 | 150 251 | 61 252 | 21 253 | 254 | 255 | 256 | 257 | 楷体 258 | 9 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | false 268 | 269 | 270 | 271 | 200 272 | 150 273 | 61 274 | 21 275 | 276 | 277 | 278 | 279 | 楷体 280 | 9 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 179 291 | 150 292 | 21 293 | 21 294 | 295 | 296 | 297 | 298 | 楷体 299 | 11 300 | 75 301 | true 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 680 312 | 150 313 | 20 314 | 21 315 | 316 | 317 | 318 | 319 | 楷体 320 | 11 321 | 75 322 | true 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | false 332 | 333 | 334 | 335 | 700 336 | 150 337 | 61 338 | 21 339 | 340 | 341 | 342 | 343 | 楷体 344 | 9 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | false 354 | 355 | 356 | 357 | 610 358 | 150 359 | 61 360 | 21 361 | 362 | 363 | 364 | 365 | 楷体 366 | 9 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 50 377 | 220 378 | 711 379 | 261 380 | 381 | 382 | 383 | 384 | 书号 385 | 386 | 387 | 388 | 389 | 类别 390 | 391 | 392 | 393 | 394 | 书名 395 | 396 | 397 | 398 | 399 | 出版社 400 | 401 | 402 | 403 | 404 | 年份 405 | 406 | 407 | 408 | 409 | 作者 410 | 411 | 412 | 413 | 414 | 总藏书量 415 | 416 | 417 | 418 | 419 | 库存 420 | 421 | 422 | 423 | 424 | 425 | 426 | 50 427 | 180 428 | 711 429 | 31 430 | 431 | 432 | 433 | 434 | 汉仪劲楷简 435 | 12 436 | 437 | 438 | 439 | 查询 440 | 441 | 442 | 443 | 444 | 445 | mylineedit 446 | QLineEdit 447 |
mylineedit.h
448 |
449 |
450 | 451 | 452 |
453 | -------------------------------------------------------------------------------- /src/libmanage/searchcard.cpp: -------------------------------------------------------------------------------- 1 | #include "searchcard.h" 2 | #include "ui_searchcard.h" 3 | 4 | Searchcard::Searchcard(QWidget *parent) : 5 | QDialog(parent), 6 | ui(new Ui::Searchcard) 7 | { 8 | ui->setupUi(this); 9 | ui->table_card->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); 10 | } 11 | 12 | Searchcard::~Searchcard() 13 | { 14 | delete ui; 15 | } 16 | 17 | void Searchcard::on_check_cno_clicked(bool checked) 18 | { 19 | if(checked){ 20 | ui->text_cno->setEnabled(1); 21 | } 22 | else{ 23 | ui->text_cno->setEnabled(0); 24 | ui->text_cno->clear(); 25 | } 26 | } 27 | 28 | void Searchcard::on_check_name_clicked(bool checked) 29 | { 30 | if(checked){ 31 | ui->text_name->setEnabled(1); 32 | } 33 | else{ 34 | ui->text_name->setEnabled(0); 35 | ui->text_name->clear(); 36 | } 37 | } 38 | 39 | 40 | void Searchcard::on_check_department_clicked(bool checked) 41 | { 42 | if(checked){ 43 | ui->text_department->setEnabled(1); 44 | } 45 | else{ 46 | ui->text_department->setEnabled(0); 47 | ui->text_department->clear(); 48 | } 49 | } 50 | 51 | void Searchcard::on_check_type_clicked(bool checked) 52 | { 53 | if(checked){ 54 | ui->box_type->setEnabled(1); 55 | } 56 | else{ 57 | ui->box_type->setEnabled(0); 58 | ui->box_type->setCurrentIndex(0); 59 | } 60 | } 61 | 62 | void Searchcard::on_btn_search_clicked() 63 | { 64 | ui->table_card->clearContents(); 65 | opendb(); 66 | QString cno,name,dep,type,str; 67 | bool flag=0; 68 | cno=ui->text_cno->text(); 69 | name=ui->text_name->text(); 70 | dep=ui->text_department->text(); 71 | if(ui->box_type->currentIndex()==1){ 72 | type="T"; 73 | } 74 | else if(ui->box_type->currentIndex()==2){ 75 | type="S"; 76 | } 77 | else{ 78 | type.clear(); 79 | } 80 | str="select * from card where "; 81 | if(!cno.isEmpty()){ 82 | str=str+"cno='"+cno+"' "; 83 | flag=1; 84 | } 85 | if(!name.isEmpty()){ 86 | if(flag){ 87 | str=str+"and name='"+name+"' "; 88 | } 89 | else{ 90 | flag=1; 91 | str=str+"name='"+name+"' "; 92 | } 93 | } 94 | if(!dep.isEmpty()){ 95 | if(flag){ 96 | str=str+"and department='"+dep+"' "; 97 | } 98 | else{ 99 | flag=1; 100 | str=str+"department='"+dep+"' "; 101 | } 102 | } 103 | if(!type.isEmpty()){ 104 | if(flag){ 105 | str=str+"and type='"+type+"' "; 106 | } 107 | else{ 108 | flag=1; 109 | str=str+"type='"+type+"' "; 110 | } 111 | } 112 | if(!flag){ 113 | str="select * from card;"; 114 | } 115 | else{ 116 | str=str+";"; 117 | } 118 | 119 | QSqlQuery query(db); 120 | qDebug()<table_card->setRowCount(0); 126 | ui->label_exist->setText("不存在符合条件的借书证"); 127 | } 128 | else{ 129 | ui->label_exist->clear(); 130 | int i=0; 131 | do{ 132 | i=i+1; 133 | ui->table_card->setRowCount(i); 134 | 135 | ui->table_card->setItem(i-1,0,new QTableWidgetItem(query.value("cno").toString())); 136 | ui->table_card->setItem(i-1,1,new QTableWidgetItem(query.value("name").toString())); 137 | ui->table_card->setItem(i-1,2,new QTableWidgetItem(query.value("department").toString())); 138 | QString t; 139 | if(query.value("type").toString()=="T")t="教师"; 140 | else if(query.value("type").toString()=="S")t="学生"; 141 | else t.clear(); 142 | ui->table_card->setItem(i-1,3,new QTableWidgetItem(t)); 143 | 144 | }while(query.next()); 145 | } 146 | } 147 | } 148 | 149 | 150 | 151 | void Searchcard::opendb(){ 152 | db=QSqlDatabase::addDatabase("QMYSQL"); 153 | db.setHostName("localhost"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost) 154 | db.setPort(3306); //连接数据库端口号,与设置一致 155 | db.setDatabaseName(database); //连接数据库名,与设置一致 156 | db.setUserName(username); //数据库用户名,与设置一致 157 | db.setPassword(password); //数据库密码,与设置一致 158 | db.open(); 159 | 160 | } 161 | -------------------------------------------------------------------------------- /src/libmanage/searchcard.h: -------------------------------------------------------------------------------- 1 | #ifndef SEARCHCARD_H 2 | #define SEARCHCARD_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include"const.h" 9 | 10 | namespace Ui { 11 | class Searchcard; 12 | } 13 | 14 | class Searchcard : public QDialog 15 | { 16 | Q_OBJECT 17 | 18 | public: 19 | explicit Searchcard(QWidget *parent = nullptr); 20 | ~Searchcard(); 21 | 22 | private slots: 23 | void on_check_cno_clicked(bool checked); 24 | 25 | void on_check_name_clicked(bool checked); 26 | 27 | void on_check_department_clicked(bool checked); 28 | 29 | void on_check_type_clicked(bool checked); 30 | 31 | void on_btn_search_clicked(); 32 | void opendb(); 33 | 34 | private: 35 | Ui::Searchcard *ui; 36 | QSqlDatabase db; 37 | 38 | }; 39 | 40 | #endif // SEARCHCARD_H 41 | -------------------------------------------------------------------------------- /src/libmanage/searchcard.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Searchcard 4 | 5 | 6 | 7 | 0 8 | 0 9 | 552 10 | 426 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 210 20 | 30 21 | 161 22 | 51 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 20 29 | 30 | 31 | 32 | 借书卡查询 33 | 34 | 35 | 36 | 37 | 38 | 60 39 | 100 40 | 64 41 | 17 42 | 43 | 44 | 45 | 46 | 汉仪劲楷简 47 | 12 48 | 49 | 50 | 51 | 卡号 52 | 53 | 54 | 55 | 56 | 57 | 290 58 | 100 59 | 64 60 | 17 61 | 62 | 63 | 64 | 65 | 汉仪劲楷简 66 | 12 67 | 68 | 69 | 70 | 姓名 71 | 72 | 73 | 74 | 75 | 76 | 60 77 | 130 78 | 64 79 | 17 80 | 81 | 82 | 83 | 84 | 汉仪劲楷简 85 | 12 86 | 87 | 88 | 89 | 部门 90 | 91 | 92 | 93 | 94 | 95 | 290 96 | 130 97 | 64 98 | 17 99 | 100 | 101 | 102 | 103 | 汉仪劲楷简 104 | 12 105 | 106 | 107 | 108 | 类型 109 | 110 | 111 | 112 | 113 | false 114 | 115 | 116 | 117 | 120 118 | 100 119 | 141 120 | 21 121 | 122 | 123 | 124 | 125 | 楷体 126 | 9 127 | 128 | 129 | 130 | 131 | 132 | false 133 | 134 | 135 | 136 | 120 137 | 130 138 | 141 139 | 21 140 | 141 | 142 | 143 | 144 | 楷体 145 | 9 146 | 147 | 148 | 149 | 150 | 151 | false 152 | 153 | 154 | 155 | 350 156 | 100 157 | 141 158 | 21 159 | 160 | 161 | 162 | 163 | 楷体 164 | 9 165 | 166 | 167 | 168 | 169 | 170 | false 171 | 172 | 173 | 174 | 350 175 | 130 176 | 141 177 | 21 178 | 179 | 180 | 181 | 182 | 楷体 183 | 9 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 教师 194 | 195 | 196 | 197 | 198 | 学生 199 | 200 | 201 | 202 | 203 | 204 | 205 | 60 206 | 160 207 | 431 208 | 31 209 | 210 | 211 | 212 | 213 | 汉仪劲楷简 214 | 12 215 | 216 | 217 | 218 | 查询 219 | 220 | 221 | 222 | 223 | 224 | 60 225 | 210 226 | 431 227 | 181 228 | 229 | 230 | 231 | 232 | 卡号 233 | 234 | 235 | 236 | 237 | 姓名 238 | 239 | 240 | 241 | 242 | 部门 243 | 244 | 245 | 246 | 247 | 类型 248 | 249 | 250 | 251 | 252 | 253 | 254 | 190 255 | 290 256 | 171 257 | 31 258 | 259 | 260 | 261 | 262 | 楷体 263 | 10 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | -------------------------------------------------------------------------------- /src/libmanage/searchuser.cpp: -------------------------------------------------------------------------------- 1 | #include "searchuser.h" 2 | #include "ui_searchuser.h" 3 | #include"const.h" 4 | Searchuser::Searchuser(QWidget *parent) : 5 | QDialog(parent), 6 | ui(new Ui::Searchuser) 7 | { 8 | ui->setupUi(this); 9 | show_table(); 10 | } 11 | 12 | Searchuser::~Searchuser() 13 | { 14 | delete ui; 15 | } 16 | 17 | void Searchuser::show_table(){ 18 | opendb(); 19 | if(db.open()){ 20 | qDebug()<<"连接成功Searchuser"; 21 | QSqlQuery query(db); 22 | bool success=query.exec("SELECT User, Host,password_last_changed FROM mysql.user;"); 23 | if(success) qDebug()<<"用户寻找成功"; 24 | int i=0; 25 | ui->table_users->setColumnCount(3); 26 | QStringList strs = {"Username","Host","Create time"}; 27 | ui->table_users->setHorizontalHeaderLabels(strs); 28 | while(query.next()){ 29 | i=i+1; 30 | ui->table_users->setRowCount(i); 31 | QString user=query.value("User").toString(); 32 | QString host=query.value("Host").toString(); 33 | QString time=query.value("password_last_changed").toString(); 34 | ui->table_users->setItem(i-1,0,new QTableWidgetItem(user)); 35 | ui->table_users->setItem(i-1,1,new QTableWidgetItem(host)); 36 | ui->table_users->setItem(i-1,2,new QTableWidgetItem(time)); 37 | 38 | } 39 | ui->table_users->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); 40 | db.close(); 41 | } 42 | else qDebug()<<"连接失败Searchuser"; 43 | } 44 | 45 | void Searchuser::opendb(){ 46 | db=QSqlDatabase::addDatabase("QMYSQL"); 47 | db.setHostName("localhost"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost) 48 | db.setPort(3306); //连接数据库端口号,与设置一致 49 | db.setDatabaseName(database); //连接数据库名,与设置一致 50 | db.setUserName(username); //数据库用户名,与设置一致 51 | db.setPassword(password); //数据库密码,与设置一致 52 | db.open(); 53 | } 54 | 55 | void Searchuser::on_pushButton_clicked() 56 | { 57 | opendb(); 58 | if(db.open()){ 59 | qDebug()<<"连接成功Searchuser_sp"; 60 | QSqlQuery query(db); 61 | QString name; 62 | name=ui->text_username->text(); 63 | bool success=query.exec("SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = '"+name+"')as ans"); 64 | int exit=0; 65 | if(query.next()) 66 | exit=query.value("ans").toInt(); 67 | if(exit==1){ 68 | qDebug()<<"用户存在"; 69 | ui->label_result->setText("用户"+name+"存在"); 70 | } 71 | else{ 72 | qDebug()<<"用户不存在"; 73 | ui->label_result->setText("用户"+name+"不存在"); 74 | } 75 | db.close(); 76 | } 77 | else qDebug()<<"连接失败Searchuser_sp"; 78 | } 79 | 80 | -------------------------------------------------------------------------------- /src/libmanage/searchuser.h: -------------------------------------------------------------------------------- 1 | #ifndef SEARCHUSER_H 2 | #define SEARCHUSER_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | namespace Ui { 9 | class Searchuser; 10 | } 11 | 12 | class Searchuser : public QDialog 13 | { 14 | Q_OBJECT 15 | 16 | public: 17 | explicit Searchuser(QWidget *parent = nullptr); 18 | ~Searchuser(); 19 | 20 | private: 21 | Ui::Searchuser *ui; 22 | QSqlDatabase db; 23 | 24 | private slots: 25 | void show_table(); 26 | void opendb(); 27 | void on_pushButton_clicked(); 28 | }; 29 | 30 | #endif // SEARCHUSER_H 31 | -------------------------------------------------------------------------------- /src/libmanage/searchuser.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Searchuser 4 | 5 | 6 | 7 | 0 8 | 0 9 | 552 10 | 425 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 180 20 | 60 21 | 221 22 | 61 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 20 29 | 30 | 31 | 32 | 查看全部管理员 33 | 34 | 35 | 36 | 37 | 38 | 50 39 | 130 40 | 451 41 | 181 42 | 43 | 44 | 45 | 46 | 楷体 47 | 8 48 | 49 | 50 | 51 | 52 | 53 | 54 | 60 55 | 320 56 | 131 57 | 31 58 | 59 | 60 | 61 | 62 | 汉仪劲楷简 63 | 10 64 | 65 | 66 | 67 | 单独查询某用户 68 | 69 | 70 | 71 | 72 | 73 | 60 74 | 350 75 | 113 76 | 31 77 | 78 | 79 | 80 | 81 | 楷体 82 | 8 83 | 84 | 85 | 86 | 输入用户名 87 | 88 | 89 | 90 | 91 | 92 | 200 93 | 348 94 | 61 95 | 31 96 | 97 | 98 | 99 | 100 | 汉仪劲楷简 101 | 10 102 | 103 | 104 | 105 | 查询 106 | 107 | 108 | 109 | 110 | 111 | 290 112 | 350 113 | 171 114 | 31 115 | 116 | 117 | 118 | 119 | 汉仪劲楷简 120 | 10 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | -------------------------------------------------------------------------------- /src/libmanage/showrecord.cpp: -------------------------------------------------------------------------------- 1 | #include "showrecord.h" 2 | #include "ui_showrecord.h" 3 | #include 4 | #include 5 | Showrecord::Showrecord(QWidget *parent) : 6 | QDialog(parent), 7 | ui(new Ui::Showrecord) 8 | { 9 | ui->setupUi(this); 10 | } 11 | 12 | Showrecord::~Showrecord() 13 | { 14 | delete ui; 15 | } 16 | 17 | void Showrecord::on_btn_search_clicked() 18 | { 19 | ui->table_borrow->clearContents(); 20 | ui->label_info->clear(); 21 | opendb(); 22 | QString searchcno; 23 | QSqlQuery query; 24 | searchcno="select * from card where cno='"+ui->text_cno->text()+"';"; 25 | qDebug()<label_info->setText("不存在该借书证"); 29 | } 30 | else{ 31 | QString searchbook; 32 | searchbook="select bno,borrow_date,return_date from borrow where borrow.cno='"+ui->text_cno->text()+"';"; 33 | qDebug()<check_ifreturn->isChecked()){ 41 | i=i+1; 42 | ui->table_borrow->setRowCount(i); 43 | 44 | int date=query.value(1).toInt(); 45 | QString temp; 46 | temp=QDateTime::fromSecsSinceEpoch(date*24*3600).toString(); 47 | QListlst; 48 | lst=temp.split(' '); 49 | ui->table_borrow->setItem(i-1,0,new QTableWidgetItem(lst[4]+"年"+lst[1]+lst[2])); 50 | 51 | //ui->table_borrow->setItem(i-1,0,new QTableWidgetItem(query.value(1).toString())); 52 | ui->table_borrow->setItem(i-1,2,new QTableWidgetItem(query.value(0).toString())); 53 | if(query.value(2).toString()=="0") 54 | ui->table_borrow->setItem(i-1,1,new QTableWidgetItem("未还")); 55 | else{ 56 | date=query.value(2).toInt(); 57 | temp=QDateTime::fromSecsSinceEpoch(date*24*3600).toString(); 58 | lst=temp.split(' '); 59 | ui->table_borrow->setItem(i-1,1,new QTableWidgetItem(lst[4]+"年"+lst[1]+lst[2])); 60 | } 61 | 62 | QString str2="select * from book where bno='"+query.value(0).toString()+"';"; 63 | QSqlQuery query2; 64 | qDebug()<table_borrow->setItem(i-1,3,new QTableWidgetItem(query2.value("category").toString())); 68 | ui->table_borrow->setItem(i-1,4,new QTableWidgetItem(query2.value("title").toString())); 69 | ui->table_borrow->setItem(i-1,5,new QTableWidgetItem(query2.value("year").toString())); 70 | ui->table_borrow->setItem(i-1,6,new QTableWidgetItem(query2.value("press").toString())); 71 | ui->table_borrow->setItem(i-1,7,new QTableWidgetItem(query2.value("author").toString())); 72 | ui->table_borrow->setItem(i-1,8,new QTableWidgetItem(query2.value("price").toString())); 73 | ui->table_borrow->setItem(i-1,9,new QTableWidgetItem(query2.value("total").toString())); 74 | ui->table_borrow->setItem(i-1,10,new QTableWidgetItem(query2.value("stock").toString())); 75 | } 76 | } 77 | else{ 78 | qDebug()<table_borrow->setRowCount(i); 83 | 84 | int date=query.value(1).toInt(); 85 | QString temp; 86 | temp=QDateTime::fromSecsSinceEpoch(date*24*3600).toString(); 87 | QListlst; 88 | lst=temp.split(' '); 89 | ui->table_borrow->setItem(i-1,0,new QTableWidgetItem(lst[4]+"年"+lst[1]+lst[2])); 90 | ui->table_borrow->setItem(i-1,2,new QTableWidgetItem(query.value(0).toString())); 91 | ui->table_borrow->setItem(i-1,1,new QTableWidgetItem("未归还")); 92 | QString str2="select * from book where bno='"+query.value(0).toString()+"';"; 93 | QSqlQuery query2; 94 | qDebug()<table_borrow->setItem(i-1,3,new QTableWidgetItem(query2.value("category").toString())); 98 | ui->table_borrow->setItem(i-1,4,new QTableWidgetItem(query2.value("title").toString())); 99 | ui->table_borrow->setItem(i-1,5,new QTableWidgetItem(query2.value("year").toString())); 100 | ui->table_borrow->setItem(i-1,6,new QTableWidgetItem(query2.value("press").toString())); 101 | ui->table_borrow->setItem(i-1,7,new QTableWidgetItem(query2.value("author").toString())); 102 | ui->table_borrow->setItem(i-1,8,new QTableWidgetItem(query2.value("price").toString())); 103 | ui->table_borrow->setItem(i-1,9,new QTableWidgetItem(query2.value("total").toString())); 104 | ui->table_borrow->setItem(i-1,10,new QTableWidgetItem(query2.value("stock").toString())); 105 | } 106 | } 107 | 108 | } 109 | } 110 | } 111 | 112 | } 113 | 114 | 115 | void Showrecord::opendb(){ 116 | db=QSqlDatabase::addDatabase("QMYSQL"); 117 | db.setHostName("localhost"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost) 118 | db.setPort(3306); //连接数据库端口号,与设置一致 119 | db.setDatabaseName(database); //连接数据库名,与设置一致 120 | db.setUserName(username); //数据库用户名,与设置一致 121 | db.setPassword(password); //数据库密码,与设置一致 122 | db.open(); 123 | } 124 | -------------------------------------------------------------------------------- /src/libmanage/showrecord.h: -------------------------------------------------------------------------------- 1 | #ifndef SHOWRECORD_H 2 | #define SHOWRECORD_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include"const.h" 14 | 15 | namespace Ui { 16 | class Showrecord; 17 | } 18 | 19 | class Showrecord : public QDialog 20 | { 21 | Q_OBJECT 22 | 23 | public: 24 | explicit Showrecord(QWidget *parent = nullptr); 25 | ~Showrecord(); 26 | 27 | private slots: 28 | void on_btn_search_clicked(); 29 | void opendb(); 30 | 31 | private: 32 | Ui::Showrecord *ui; 33 | QSqlDatabase db; 34 | }; 35 | 36 | #endif // SHOWRECORD_H 37 | -------------------------------------------------------------------------------- /src/libmanage/showrecord.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Showrecord 4 | 5 | 6 | 7 | 0 8 | 0 9 | 540 10 | 398 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 180 20 | 40 21 | 231 22 | 51 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 20 29 | 30 | 31 | 32 | 查询已借图书 33 | 34 | 35 | 36 | 37 | 38 | 70 39 | 100 40 | 51 41 | 31 42 | 43 | 44 | 45 | 46 | 汉仪劲楷简 47 | 12 48 | 49 | 50 | 51 | 卡号 52 | 53 | 54 | 55 | 56 | 57 | 120 58 | 100 59 | 181 60 | 31 61 | 62 | 63 | 64 | 65 | 楷体 66 | 9 67 | 68 | 69 | 70 | 71 | 72 | 73 | 399 74 | 100 75 | 61 76 | 31 77 | 78 | 79 | 80 | 81 | 汉仪劲楷简 82 | 12 83 | 84 | 85 | 86 | 查询 87 | 88 | 89 | 90 | 91 | 92 | 70 93 | 140 94 | 391 95 | 221 96 | 97 | 98 | 99 | 100 | 借书时间 101 | 102 | 103 | 104 | 105 | 归还时间 106 | 107 | 108 | 109 | 110 | 书号 111 | 112 | 113 | 114 | 115 | 类别 116 | 117 | 118 | 119 | 120 | 书名 121 | 122 | 123 | 124 | 125 | 出版社 126 | 127 | 128 | 129 | 130 | 年份 131 | 132 | 133 | 134 | 135 | 作者 136 | 137 | 138 | 139 | 140 | 价格 141 | 142 | 143 | 144 | 145 | 总藏书量 146 | 147 | 148 | 149 | 150 | 库存 151 | 152 | 153 | 154 | 155 | 156 | 157 | 180 158 | 300 159 | 151 160 | 31 161 | 162 | 163 | 164 | 165 | 汉仪劲楷简 166 | 12 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 310 177 | 110 178 | 81 179 | 17 180 | 181 | 182 | 183 | 184 | 汉仪劲楷简 185 | 8 186 | 187 | 188 | 189 | 仅显示未还 190 | 191 | 192 | 193 | 194 | 195 | 196 | -------------------------------------------------------------------------------- /src/libmanage/singlebookinsert.cpp: -------------------------------------------------------------------------------- 1 | #include "singlebookinsert.h" 2 | #include "ui_singlebookinsert.h" 3 | #include"const.h" 4 | #include"QString" 5 | Singlebookinsert::Singlebookinsert(QWidget *parent) : 6 | QDialog(parent), 7 | ui(new Ui::Singlebookinsert) 8 | { 9 | ui->setupUi(this); 10 | 11 | QRegExp regExp("[0-9][0-9][0-9][0-9]");//正则表达式,第一位数字为a-z的数字,第二位为1-9的数字,后边是0-2位0-9的数字 12 | ui->text_year->setValidator(new QRegExpValidator(regExp,this)); 13 | ui->text_price->setValidator(new QDoubleValidator(0,10000000 , 2, this)); 14 | //ui->text_year->setValidator(new QIntValidator(0, 4, this)); 15 | ui->text_total->setValidator(new QIntValidator(0, 10000000, this)); 16 | } 17 | 18 | Singlebookinsert::~Singlebookinsert() 19 | { 20 | delete ui; 21 | } 22 | 23 | void Singlebookinsert::on_btn_insert_clicked() 24 | { 25 | opendb(); 26 | 27 | QString str="select * from book;"; 28 | 29 | qDebug()<table_bookinfo->setRowCount(i); 40 | 41 | ui->table_bookinfo->setItem(i-1,0,new QTableWidgetItem(query.value("bno").toString())); 42 | ui->table_bookinfo->setItem(i-1,1,new QTableWidgetItem(query.value("category").toString())); 43 | ui->table_bookinfo->setItem(i-1,2,new QTableWidgetItem(query.value("title").toString())); 44 | ui->table_bookinfo->setItem(i-1,3,new QTableWidgetItem(query.value("press").toString())); 45 | ui->table_bookinfo->setItem(i-1,4,new QTableWidgetItem(query.value("year").toString())); 46 | ui->table_bookinfo->setItem(i-1,5,new QTableWidgetItem(query.value("author").toString())); 47 | ui->table_bookinfo->setItem(i-1,6,new QTableWidgetItem(query.value("price").toString())); 48 | ui->table_bookinfo->setItem(i-1,7,new QTableWidgetItem(query.value("total").toString())); 49 | ui->table_bookinfo->setItem(i-1,8,new QTableWidgetItem(query.value("stock").toString())); 50 | if(ui->text_bno->text()==query.value("bno").toString()){ 51 | for(int m=0;m<=8;m++){ 52 | ui->table_bookinfo->item(i-1, m)->setForeground(Qt::red); 53 | ui->table_bookinfo->item(i-1,m)->setBackground(Qt::yellow); 54 | } 55 | } 56 | } 57 | 58 | if(!db.open()){ 59 | qDebug()<<"不能连接createuser"<<"connect to mysql error"; 60 | } 61 | else{ 62 | qDebug()<<"连接成功createuser"<<"connect to mysql OK"; 63 | 64 | QString bno,category,title,press,year,author,price,total,stock; 65 | 66 | bno="'"+ui->text_bno->text()+"'"; 67 | if(bno=="''"){ui->label_insertinfo->setText("请输入书号");bno="null";} 68 | category="'"+ui->text_category->text()+"'"; 69 | if(category=="''")category="null"; 70 | title="'"+ui->text_title->text()+"'"; 71 | if(title=="''")title="null"; 72 | press="'"+ui->text_press->text()+"'"; 73 | if(press=="''")press="null"; 74 | year="'"+ui->text_year->text()+"'"; 75 | if(year=="''")year="null"; 76 | author="'"+ui->text_author->text()+"'"; 77 | if(author=="''")author="null"; 78 | price="'"+ui->text_price->text()+"'"; 79 | if(price=="''")price="null"; 80 | total="'"+ui->text_total->text()+"'"; 81 | if(total=="''")total="null"; 82 | stock="'"+ui->text_stock_2->text()+"'"; 83 | if(stock=="''")stock=total; 84 | else if(ui->text_stock_2->text().toInt()>ui->text_total->text().toInt()){ 85 | ui->text_stock_2->setText("库存需小于总藏书量,否则库存设置为空"); 86 | stock="null"; 87 | } 88 | 89 | 90 | QSqlQueryModel querym; 91 | QString str1; 92 | str1="INSERT INTO book VALUES("+bno+","+category+","+title+","+press+","+year+","+author+","+price+","+total+","+stock+");"; 93 | qDebug()<label_insertinfo->setText("插入图书"+ui->text_bno->text()+ui->text_title->text()+"成功"); 101 | 102 | query.exec(str); 103 | 104 | int i=0; 105 | 106 | while(query.next()){ 107 | i=i+1; 108 | ui->table_new->setRowCount(i); 109 | 110 | ui->table_new->setItem(i-1,0,new QTableWidgetItem(query.value("bno").toString())); 111 | ui->table_new->setItem(i-1,1,new QTableWidgetItem(query.value("category").toString())); 112 | ui->table_new->setItem(i-1,2,new QTableWidgetItem(query.value("title").toString())); 113 | ui->table_new->setItem(i-1,3,new QTableWidgetItem(query.value("press").toString())); 114 | ui->table_new->setItem(i-1,4,new QTableWidgetItem(query.value("year").toString())); 115 | ui->table_new->setItem(i-1,5,new QTableWidgetItem(query.value("author").toString())); 116 | ui->table_new->setItem(i-1,6,new QTableWidgetItem(query.value("price").toString())); 117 | ui->table_new->setItem(i-1,7,new QTableWidgetItem(query.value("total").toString())); 118 | ui->table_new->setItem(i-1,8,new QTableWidgetItem(query.value("stock").toString())); 119 | if(bno=="'"+query.value("bno").toString()+"'"){ 120 | for(int m=0;m<=8;m++){ 121 | ui->table_new->item(i-1, m)->setForeground(Qt::red); 122 | ui->table_new->item(i-1,m)->setBackground(Qt::yellow); 123 | } 124 | } 125 | 126 | } 127 | } 128 | else{ 129 | QString error=querym.lastError().text(); 130 | error=error.mid(0,3); 131 | qDebug()<label_insertinfo->setText("更新信息"+ui->text_bno->text()+"成功"); 180 | else ui->label_insertinfo->setText("更新信息"+ui->text_bno->text()+"失败"); 181 | 182 | //*************** 183 | query.exec(str); 184 | 185 | int i=0; 186 | 187 | while(query.next()){ 188 | i=i+1; 189 | ui->table_new->setRowCount(i); 190 | 191 | ui->table_new->setItem(i-1,0,new QTableWidgetItem(query.value("bno").toString())); 192 | ui->table_new->setItem(i-1,1,new QTableWidgetItem(query.value("category").toString())); 193 | ui->table_new->setItem(i-1,2,new QTableWidgetItem(query.value("title").toString())); 194 | ui->table_new->setItem(i-1,3,new QTableWidgetItem(query.value("press").toString())); 195 | ui->table_new->setItem(i-1,4,new QTableWidgetItem(query.value("year").toString())); 196 | ui->table_new->setItem(i-1,5,new QTableWidgetItem(query.value("author").toString())); 197 | ui->table_new->setItem(i-1,6,new QTableWidgetItem(query.value("price").toString())); 198 | ui->table_new->setItem(i-1,7,new QTableWidgetItem(query.value("total").toString())); 199 | ui->table_new->setItem(i-1,8,new QTableWidgetItem(query.value("stock").toString())); 200 | if(bno=="'"+query.value("bno").toString()+"'"){ 201 | for(int m=0;m<=8;m++){ 202 | ui->table_new->item(i-1, m)->setForeground(Qt::red); 203 | ui->table_new->item(i-1,m)->setBackground(Qt::yellow); 204 | } 205 | } 206 | 207 | } 208 | 209 | 210 | 211 | } 212 | else{ 213 | qDebug()<<"插入图书失败"; 214 | ui->label_insertinfo->setText("插入图书"+ui->text_bno->text()+ui->text_title->text()+"失败"); 215 | } 216 | 217 | } 218 | db.close(); 219 | } 220 | } 221 | 222 | 223 | void Singlebookinsert::opendb(){ 224 | db=QSqlDatabase::addDatabase("QMYSQL"); 225 | db.setHostName("localhost"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost) 226 | db.setPort(3306); //连接数据库端口号,与设置一致 227 | db.setDatabaseName(database); //连接数据库名,与设置一致 228 | db.setUserName(username); //数据库用户名,与设置一致 229 | db.setPassword(password); //数据库密码,与设置一致 230 | db.open(); 231 | } 232 | -------------------------------------------------------------------------------- /src/libmanage/singlebookinsert.h: -------------------------------------------------------------------------------- 1 | #ifndef SINGLEBOOKINSERT_H 2 | #define SINGLEBOOKINSERT_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include"const.h" 14 | namespace Ui { 15 | class Singlebookinsert; 16 | } 17 | 18 | class Singlebookinsert : public QDialog 19 | { 20 | Q_OBJECT 21 | 22 | public: 23 | explicit Singlebookinsert(QWidget *parent = nullptr); 24 | ~Singlebookinsert(); 25 | 26 | private slots: 27 | void on_btn_insert_clicked(); 28 | void opendb(); 29 | 30 | private: 31 | Ui::Singlebookinsert *ui; 32 | QSqlDatabase db; 33 | }; 34 | 35 | #endif // SINGLEBOOKINSERT_H 36 | -------------------------------------------------------------------------------- /src/libmanage/singlebookinsert.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Singlebookinsert 4 | 5 | 6 | 7 | 0 8 | 0 9 | 700 10 | 626 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 260 20 | 20 21 | 171 22 | 71 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 20 29 | 30 | 31 | 32 | 单本图书入库 33 | 34 | 35 | 36 | 37 | 38 | 50 39 | 110 40 | 91 41 | 31 42 | 43 | 44 | 45 | 46 | 汉仪劲楷简 47 | 12 48 | 49 | 50 | 51 | 书号 52 | 53 | 54 | 55 | 56 | 57 | 260 58 | 110 59 | 91 60 | 31 61 | 62 | 63 | 64 | 65 | 汉仪劲楷简 66 | 12 67 | 68 | 69 | 70 | 类别 71 | 72 | 73 | 74 | 75 | 76 | 30 77 | 160 78 | 91 79 | 31 80 | 81 | 82 | 83 | 84 | 汉仪劲楷简 85 | 12 86 | 87 | 88 | 89 | 出版社 90 | 91 | 92 | 93 | 94 | 95 | 470 96 | 110 97 | 91 98 | 31 99 | 100 | 101 | 102 | 103 | 汉仪劲楷简 104 | 12 105 | 106 | 107 | 108 | 书名 109 | 110 | 111 | 112 | 113 | 114 | 470 115 | 160 116 | 91 117 | 31 118 | 119 | 120 | 121 | 122 | 汉仪劲楷简 123 | 12 124 | 125 | 126 | 127 | 作者 128 | 129 | 130 | 131 | 132 | 133 | 50 134 | 210 135 | 91 136 | 31 137 | 138 | 139 | 140 | 141 | 汉仪劲楷简 142 | 12 143 | 144 | 145 | 146 | 价格 147 | 148 | 149 | 150 | 151 | 152 | 230 153 | 210 154 | 91 155 | 31 156 | 157 | 158 | 159 | 160 | 汉仪劲楷简 161 | 12 162 | 163 | 164 | 165 | 总藏书量 166 | 167 | 168 | 169 | 170 | 171 | 260 172 | 160 173 | 91 174 | 31 175 | 176 | 177 | 178 | 179 | 汉仪劲楷简 180 | 12 181 | 182 | 183 | 184 | 年份 185 | 186 | 187 | 188 | 189 | 190 | 100 191 | 109 192 | 131 193 | 31 194 | 195 | 196 | 197 | 198 | 楷体 199 | 10 200 | 201 | 202 | 203 | 204 | 205 | 206 | 520 207 | 110 208 | 131 209 | 31 210 | 211 | 212 | 213 | 214 | 楷体 215 | 10 216 | 217 | 218 | 219 | 220 | 221 | 222 | 310 223 | 160 224 | 131 225 | 31 226 | 227 | 228 | 229 | 230 | 楷体 231 | 10 232 | 233 | 234 | 235 | 236 | 237 | 238 | 100 239 | 210 240 | 131 241 | 31 242 | 243 | 244 | 245 | 246 | 楷体 247 | 10 248 | 249 | 250 | 251 | 252 | 253 | 254 | 310 255 | 109 256 | 131 257 | 31 258 | 259 | 260 | 261 | 262 | 楷体 263 | 10 264 | 265 | 266 | 267 | 268 | 269 | 270 | 310 271 | 210 272 | 131 273 | 31 274 | 275 | 276 | 277 | 278 | 楷体 279 | 10 280 | 281 | 282 | 283 | 284 | 285 | 286 | 520 287 | 160 288 | 131 289 | 31 290 | 291 | 292 | 293 | 294 | 楷体 295 | 10 296 | 297 | 298 | 299 | 300 | 301 | 302 | 100 303 | 160 304 | 131 305 | 31 306 | 307 | 308 | 309 | 310 | 楷体 311 | 10 312 | 313 | 314 | 315 | 316 | 317 | 318 | 280 319 | 270 320 | 130 321 | 50 322 | 323 | 324 | 325 | 326 | 汉仪劲楷简 327 | 15 328 | 329 | 330 | 331 | 入库 332 | 333 | 334 | 335 | 336 | 337 | 270 338 | 330 339 | 161 340 | 31 341 | 342 | 343 | 344 | 345 | 汉仪劲楷简 346 | 10 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 520 357 | 210 358 | 131 359 | 31 360 | 361 | 362 | 363 | 364 | 楷体 365 | 10 366 | 367 | 368 | 369 | 370 | 371 | 372 | 470 373 | 210 374 | 91 375 | 31 376 | 377 | 378 | 379 | 380 | 汉仪劲楷简 381 | 12 382 | 383 | 384 | 385 | 库存 386 | 387 | 388 | 389 | 390 | 391 | 20 392 | 380 393 | 311 394 | 221 395 | 396 | 397 | 398 | 399 | bno 400 | 401 | 402 | 403 | 404 | category 405 | 406 | 407 | 408 | 409 | title 410 | 411 | 412 | 413 | 414 | press 415 | 416 | 417 | 418 | 419 | year 420 | 421 | 422 | 423 | 424 | author 425 | 426 | 427 | 428 | 429 | price 430 | 431 | 432 | 433 | 434 | total 435 | 436 | 437 | 438 | 439 | stock 440 | 441 | 442 | 443 | 444 | 445 | 446 | 370 447 | 380 448 | 311 449 | 221 450 | 451 | 452 | 453 | 454 | bno 455 | 456 | 457 | 458 | 459 | category 460 | 461 | 462 | 463 | 464 | title 465 | 466 | 467 | 468 | 469 | press 470 | 471 | 472 | 473 | 474 | year 475 | 476 | 477 | 478 | 479 | author 480 | 481 | 482 | 483 | 484 | price 485 | 486 | 487 | 488 | 489 | total 490 | 491 | 492 | 493 | 494 | stock 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | -------------------------------------------------------------------------------- /src/libmanage/updatecard.cpp: -------------------------------------------------------------------------------- 1 | #include "updatecard.h" 2 | #include "ui_updatecard.h" 3 | 4 | Updatecard::Updatecard(QWidget *parent) : 5 | QDialog(parent), 6 | ui(new Ui::Updatecard) 7 | { 8 | ui->setupUi(this); 9 | } 10 | 11 | Updatecard::~Updatecard() 12 | { 13 | delete ui; 14 | } 15 | 16 | void Updatecard::on_btn_check_clicked() 17 | { 18 | if(ui->label_check->text()=="√"){ 19 | ui->btn_check->setText("Check"); 20 | ui->label_check->clear(); 21 | ui->text_cno->setEnabled(1); 22 | ui->check_name->setEnabled(0); 23 | ui->check_type->setEnabled(0); 24 | ui->check_department->setEnabled(0); 25 | ui->btn_update->setEnabled(0); 26 | ui->text_name->clear(); 27 | ui->text_department->clear(); 28 | ui->box_type->setCurrentIndex(0); 29 | ui->text_name->setEnabled(0); 30 | ui->text_department->setEnabled(0); 31 | ui->check_name->setChecked(0); 32 | ui->check_department->setChecked(0); 33 | ui->check_type->setChecked(0); 34 | ui->update_name->clear(); 35 | ui->update_type->clear(); 36 | ui->update_department->clear(); 37 | } 38 | else{ 39 | opendb(); 40 | if(!db.isOpen()){ 41 | qDebug()<<"数据库连接失败"; 42 | } 43 | else{ 44 | qDebug()<<"数据库连接成功"; 45 | QString cno; 46 | cno=ui->text_cno->text(); 47 | if(cno.isEmpty()){ 48 | ui->label_check->setText("×"); 49 | } 50 | else{ 51 | //****************查询是否已经存在该借书证********** 52 | 53 | QString str1="select * from card where cno='"+cno+"';"; 54 | qDebug()<label_check->setText("×"); 60 | QPalette pa; 61 | pa.setColor(QPalette::WindowText,Qt::red); 62 | ui->label_check->setPalette(pa); 63 | ui->check_name->setEnabled(0); 64 | ui->check_type->setEnabled(0); 65 | ui->check_department->setEnabled(0); 66 | ui->btn_update->setEnabled(0); 67 | } 68 | else{ 69 | qDebug()<<"存在该卡号"; 70 | ui->label_check->setText("√"); 71 | ui->btn_check->setText("Clear"); 72 | QPalette pa; 73 | pa.setColor(QPalette::WindowText,Qt::green); 74 | ui->label_check->setPalette(pa); 75 | ui->check_name->setEnabled(1); 76 | ui->check_type->setEnabled(1); 77 | ui->check_department->setEnabled(1); 78 | ui->text_cno->setEnabled(0); 79 | ui->btn_update->setEnabled(1); 80 | } 81 | } 82 | db.close(); 83 | } 84 | } 85 | } 86 | 87 | void Updatecard::opendb(){ 88 | db=QSqlDatabase::addDatabase("QMYSQL"); 89 | db.setHostName("localhost"); //连接数据库主机名,这里需要注意(若填的为”127.0.0.1“,出现不能连接,则改为localhost) 90 | db.setPort(3306); //连接数据库端口号,与设置一致 91 | db.setDatabaseName(database); //连接数据库名,与设置一致 92 | db.setUserName(username); //数据库用户名,与设置一致 93 | db.setPassword(password); //数据库密码,与设置一致 94 | db.open(); 95 | } 96 | 97 | void Updatecard::on_check_name_clicked(bool checked) 98 | { 99 | if(checked){ 100 | ui->text_name->setEnabled(1); 101 | } 102 | else{ 103 | ui->text_name->clear(); 104 | ui->text_name->setEnabled(0); 105 | } 106 | } 107 | 108 | void Updatecard::on_check_department_clicked(bool checked) 109 | { 110 | if(checked){ 111 | qDebug()<<"check"; 112 | ui->text_department->setEnabled(1); 113 | } 114 | else{ 115 | ui->text_department->setEnabled(0); 116 | ui->text_department->clear(); 117 | 118 | } 119 | } 120 | 121 | void Updatecard::on_check_type_clicked(bool checked) 122 | { 123 | if(checked){ 124 | ui->box_type->setEnabled(1); 125 | } 126 | else{ 127 | ui->box_type->setCurrentIndex(0); 128 | ui->box_type->setEnabled(0); 129 | } 130 | } 131 | 132 | void Updatecard::on_btn_update_clicked() 133 | { 134 | opendb(); 135 | //**********更新借书证********* 136 | QSqlQuery query(db); 137 | QPalette pa; 138 | QString str1="update card set "; 139 | QString str2=" where cno='"+ui->text_cno->text()+"';"; 140 | 141 | if(ui->check_name->isChecked()){ 142 | QString str; 143 | bool success; 144 | if(ui->text_name->text().isEmpty()){ 145 | str1=str1+"name=null"; 146 | } 147 | else{ 148 | str1=str1+"name='"+ui->text_name->text()+"'"; 149 | } 150 | str=str1+str2; 151 | qDebug()<update_name->setText("√"); 156 | pa.setColor(QPalette::WindowText,Qt::green); 157 | ui->update_name->setPalette(pa); 158 | } 159 | else{ 160 | qDebug()<<"更新姓名失败"; 161 | ui->update_name->setText("×"); 162 | pa.setColor(QPalette::WindowText,Qt::red); 163 | ui->update_name->setPalette(pa); 164 | } 165 | } 166 | if(ui->check_department->isChecked()){ 167 | str1="update card set "; 168 | bool success; 169 | QString str; 170 | if(ui->text_department->text().isEmpty()){ 171 | str1=str1+"department=null"; 172 | } 173 | else{ 174 | str1=str1+"department='"+ui->text_name->text()+"'"; 175 | } 176 | str=str1+str2; 177 | qDebug()<update_department->setText("√"); 182 | pa.setColor(QPalette::WindowText,Qt::green); 183 | ui->update_department->setPalette(pa); 184 | } 185 | else{ 186 | qDebug()<<"更新姓名失败"; 187 | ui->update_department->setText("×"); 188 | pa.setColor(QPalette::WindowText,Qt::red); 189 | ui->update_department->setPalette(pa); 190 | } 191 | } 192 | if(ui->check_type->isChecked()){ 193 | str1="update card set "; 194 | bool success; 195 | QString str; 196 | 197 | if(ui->box_type->currentIndex()==0){ 198 | str1=str1+"type=null"; 199 | } 200 | else{ 201 | QString temptype; 202 | if(ui->box_type->currentIndex()==1)temptype="T"; 203 | else temptype="S"; 204 | str1=str1+"type='"+temptype+"'"; 205 | } 206 | str=str1+str2; 207 | 208 | query.exec(str); 209 | if(!query.lastError().isValid()){ 210 | qDebug()<<"更新类型成功"; 211 | ui->update_type->setText("√"); 212 | pa.setColor(QPalette::WindowText,Qt::green); 213 | ui->update_type->setPalette(pa); 214 | } 215 | else{ 216 | qDebug()<<"更新类型失败"; 217 | ui->update_type->setText("×"); 218 | pa.setColor(QPalette::WindowText,Qt::red); 219 | ui->update_type->setPalette(pa); 220 | } 221 | } 222 | } 223 | -------------------------------------------------------------------------------- /src/libmanage/updatecard.h: -------------------------------------------------------------------------------- 1 | #ifndef UPDATECARD_H 2 | #define UPDATECARD_H 3 | 4 | #include 5 | #include"const.h" 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | namespace Ui { 15 | class Updatecard; 16 | } 17 | 18 | class Updatecard : public QDialog 19 | { 20 | Q_OBJECT 21 | 22 | public: 23 | explicit Updatecard(QWidget *parent = nullptr); 24 | ~Updatecard(); 25 | 26 | private slots: 27 | void on_btn_check_clicked(); 28 | void opendb(); 29 | void on_check_name_clicked(bool checked); 30 | void on_check_department_clicked(bool checked); 31 | void on_check_type_clicked(bool checked); 32 | 33 | void on_btn_update_clicked(); 34 | 35 | private: 36 | Ui::Updatecard *ui; 37 | QSqlDatabase db; 38 | }; 39 | 40 | #endif // UPDATECARD_H 41 | -------------------------------------------------------------------------------- /src/libmanage/updatecard.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Updatecard 4 | 5 | 6 | 7 | 0 8 | 0 9 | 552 10 | 425 11 | 12 | 13 | 14 | Dialog 15 | 16 | 17 | 18 | 19 | 190 20 | 60 21 | 171 22 | 41 23 | 24 | 25 | 26 | 27 | 汉仪劲楷简 28 | 20 29 | 30 | 31 | 32 | 修改借书证 33 | 34 | 35 | 36 | 37 | 38 | 130 39 | 120 40 | 71 41 | 21 42 | 43 | 44 | 45 | 46 | 汉仪劲楷简 47 | 12 48 | 49 | 50 | 51 | 卡号 52 | 53 | 54 | 55 | 56 | 57 | 170 58 | 120 59 | 191 60 | 21 61 | 62 | 63 | 64 | 65 | 楷体 66 | 10 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 370 77 | 120 78 | 41 79 | 19 80 | 81 | 82 | 83 | 84 | 楷体 85 | 8 86 | 87 | 88 | 89 | Check 90 | 91 | 92 | 93 | 94 | 95 | 420 96 | 120 97 | 39 98 | 21 99 | 100 | 101 | 102 | 103 | 10 104 | 75 105 | true 106 | 107 | 108 | 109 | false 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | false 118 | 119 | 120 | 121 | 170 122 | 170 123 | 191 124 | 21 125 | 126 | 127 | 128 | 129 | 楷体 130 | 10 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | false 140 | 141 | 142 | 143 | 170 144 | 210 145 | 191 146 | 21 147 | 148 | 149 | 150 | 151 | 楷体 152 | 10 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | false 162 | 163 | 164 | 165 | 170 166 | 250 167 | 58 168 | 22 169 | 170 | 171 | 172 | 173 | 楷体 174 | 10 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 教师 185 | 186 | 187 | 188 | 189 | 学生 190 | 191 | 192 | 193 | 194 | 195 | false 196 | 197 | 198 | 199 | 180 200 | 300 201 | 130 202 | 50 203 | 204 | 205 | 206 | 207 | 汉仪劲楷简 208 | 15 209 | 210 | 211 | 212 | 更新 213 | 214 | 215 | 216 | 217 | false 218 | 219 | 220 | 221 | 110 222 | 170 223 | 64 224 | 21 225 | 226 | 227 | 228 | 229 | 汉仪劲楷简 230 | 12 231 | 232 | 233 | 234 | 姓名 235 | 236 | 237 | 238 | 239 | false 240 | 241 | 242 | 243 | 110 244 | 210 245 | 64 246 | 21 247 | 248 | 249 | 250 | 251 | 汉仪劲楷简 252 | 12 253 | 254 | 255 | 256 | 部门 257 | 258 | 259 | 260 | 261 | false 262 | 263 | 264 | 265 | 110 266 | 250 267 | 64 268 | 21 269 | 270 | 271 | 272 | 273 | 汉仪劲楷简 274 | 12 275 | 276 | 277 | 278 | 类别 279 | 280 | 281 | 282 | 283 | 284 | 180 285 | 350 286 | 171 287 | 41 288 | 289 | 290 | 291 | 292 | 汉仪劲楷简 293 | 12 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 380 304 | 170 305 | 39 306 | 21 307 | 308 | 309 | 310 | 311 | 10 312 | 75 313 | true 314 | 315 | 316 | 317 | false 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 380 327 | 210 328 | 39 329 | 21 330 | 331 | 332 | 333 | 334 | 10 335 | 75 336 | true 337 | 338 | 339 | 340 | false 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 250 350 | 250 351 | 39 352 | 21 353 | 354 | 355 | 356 | 357 | 10 358 | 75 359 | true 360 | 361 | 362 | 363 | false 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | --------------------------------------------------------------------------------