山东大学数据库实验课设2019.12

   1 from PyQt5 import QtCore, QtGui, QtWidgets
   2 from dl import *
   3 from shoujiemian import *
   4 from dzdl import *
   5 from glydl import *
   6 from zc import *
   7 from dzzc import *
   8 from glyzc import *
   9 from dzdlcw import *
  10 from dzcz import *
  11 from dzxxcx import *
  12 from dzxgmm import *
  13 from xgmmsuccessful import *
  14 from xgmmfail import *
  15 from dzjs import *
  16 from jsxxcx import *
  17 from hsxxcx import *
  18 from dzzcsuccess import *
  19 from dzzcfail import *
  20 from glycz import *
  21 from jssuccess import *
  22 from jsfail import *
  23 from hssuccess import *
  24 from hsfail import *
  25 from pccz import *
  26 from wxskhhh import *
  27 from glydzxxcz import *
  28 from glyhsxxcz import *
  29 from glyjsxxcz import *
  30 from glypcxxcz import *
  31 from glysjcz import *
  32 from glyxgmm import *
  33 from dzxxscsuccess import *
  34 from dzxxscfail import *
  35 from tjsuccess import *
  36 from tjfail import *
  37 from pcfail import *
  38 from cqpc import *
  39 from xjcg import *
  40 from xjfail import *
  41 from unexpected import *
  42 import pymysql,sys,re
  43 from PyQt5.QtCore import QDate, QTime, QDateTime, Qt
  44 from PyQt5.QtWidgets import (QFrame,QApplication,QDialog, QDialogButtonBox,
  45         QMessageBox,QVBoxLayout, QLineEdit,QTableWidgetItem,QTableWidget,QHBoxLayout)
  46 
  47 global dzid,glyid
  48 
  49 def ok(num):
  50     pattern = re.compile(r'^[-+]?[-0-9]d*.d*|[-+]?.?[0-9]d*$')
  51     result = pattern.match(num)
  52     if result:
  53         return True
  54     else:
  55         return False
  56 
  57 class Ui_Dialog(QtWidgets.QDialog, Ui_2):
  58     def __init__(self):
  59         super(Ui_Dialog, self).__init__()
  60         self.setupUi(self)
  61 
  62 class First(QtWidgets.QMainWindow,Ui_1):
  63     def __init__(self):
  64         super(First,self).__init__()
  65         self.setupUi(self)
  66 
  67 class Ui_dzdl(QtWidgets.QDialog, Ui_3):
  68     def __init__(self):
  69         super(Ui_dzdl, self).__init__()
  70         self.setupUi(self)
  71     def Clean(self):
  72         self.lineEdit.setText("")
  73         self.lineEdit_2.setText("")
  74     def get_word(self):
  75         global dzid
  76         dzid = self.lineEdit.text()
  77         dzpassword = self.lineEdit_2.text()
  78         dzcount=cur.execute("SELECT * FROM 读者信息 where Reader_id='%s' and Password='%s';" % (dzid,dzpassword))
  79         if dzcount!=0:
  80             dzd.hide()
  81             dzcz.show()
  82             dzcz.pushButton.clicked.connect(dzcz.hide)
  83             dzcz.pushButton.clicked.connect(dzxxcx.dzxxcxshow)
  84             dzcz.pushButton.clicked.connect(dzxxcx.show)#从读者操作界面进入读者信息查询界面
  85 
  86             dzcz.pushButton_2.clicked.connect(dzcz.hide)
  87             dzcz.pushButton_2.clicked.connect(dzxgmm.show)#从读者操作界面进入到修改密码界面
  88 
  89             dzxgmm.pushButton_3.clicked.connect(dzxgmm.get_word)#调用get_word函数
  90 
  91             dzxgmm.pushButton.clicked.connect(dzxgmm.hide)
  92             dzxgmm.pushButton.clicked.connect(dzxgmm.Clean)
  93             dzxgmm.pushButton.clicked.connect(dzcz.show)  # 从读者操作界面返回到登录界面
  94 
  95             dzjs.pushButton.clicked.connect(dzjs.dimquery)#调用模糊查询函数
  96 
  97             dzjs.pushButton_6.clicked.connect(dzjs.exactquery)  # 调用精准查询函数
  98 
  99             dzjs.pushButton_2.clicked.connect(dzjs.borrowbook)  # 调用借书函数
 100 
 101             dzjs.pushButton_5.clicked.connect(dzjs.returnbook)  # 调用还书函数
 102 
 103             dzjs.pushButton_7.clicked.connect(dzjs.renew)  # 调用续借函数
 104 
 105             dzcz.pushButton_3.clicked.connect(dzcz.hide)
 106             dzcz.pushButton_3.clicked.connect(dzjs.show)  # 从读者操作界面进入到借书操作界面
 107 
 108             dzjs.pushButton_3.clicked.connect(dzjs.hide)
 109             dzjs.pushButton_3.clicked.connect(dzjs.Clean)
 110             dzjs.pushButton_3.clicked.connect(dzcz.show)  # 从借书操作界面返回到读者操作界面
 111 
 112             dzcz.pushButton_9.clicked.connect(dzd.Clean)
 113             dzcz.pushButton_9.clicked.connect(dzcz.hide)
 114             dzcz.pushButton_9.clicked.connect(dzd.show)  # 从读者操作界面返回到登录界面
 115 
 116             dzcz.pushButton_5.clicked.connect(dzcz.hide)
 117             dzcz.pushButton_5.clicked.connect(jsxxcx.jsxxcxshow)
 118             dzcz.pushButton_5.clicked.connect(jsxxcx.show)#从读者操作界面进入到借书信息查询界面
 119 
 120             dzcz.pushButton_6.clicked.connect(dzcz.hide)
 121             dzcz.pushButton_6.clicked.connect(hsxxcx.hsxxcxshow)
 122             dzcz.pushButton_6.clicked.connect(hsxxcx.show)#从读者操作界面进入到还书信息查询界面
 123 
 124             dzcz.pushButton_7.clicked.connect(dzcz.hide)
 125             dzcz.pushButton_7.clicked.connect(pccz.show)  # 从读者操作界面进入到赔偿操作界面
 126 
 127             pccz.pushButton_4.clicked.connect(pccz.dimquery)#模糊查询
 128 
 129             pccz.pushButton_5.clicked.connect(pccz.exactquery)#精准查询
 130 
 131             pccz.pushButton_3.clicked.connect(pccz.pay) #调用赔偿函数
 132 
 133             jsxxcx.pushButton.clicked.connect(jsxxcx.hide)
 134             jsxxcx.pushButton.clicked.connect(dzcz.show)#从借书信息查询界面回到读者操作界面
 135 
 136             hsxxcx.pushButton.clicked.connect(hsxxcx.hide)
 137             hsxxcx.pushButton.clicked.connect(dzcz.show)#从还书信息查询界面回到读者操作界面
 138 
 139             dzxxcx.pushButton.clicked.connect(dzxxcx.hide)
 140             dzxxcx.pushButton.clicked.connect(dzcz.show)#从读者信息查询界面回到读者操作界面
 141 
 142             pccz.pushButton.clicked.connect(pccz.hide)
 143             pccz.pushButton.clicked.connect(pccz.Clean)
 144             pccz.pushButton.clicked.connect(dzcz.show)  # 从赔偿操作界面回到读者操作界面
 145         else:
 146             dzdlcw.show()
 147 
 148 class Ui_glydl(QtWidgets.QDialog, Ui_4):
 149     def __init__(self):
 150         super(Ui_glydl, self).__init__()
 151         self.setupUi(self)
 152     def Clean(self):
 153         self.lineEdit.setText("")
 154         self.lineEdit_2.setText("")
 155     def get_word(self):
 156         global glyid
 157         glyid = self.lineEdit.text()
 158         glypassword = self.lineEdit_2.text()
 159         glycount=cur.execute("SELECT * FROM 管理员 where Admin_id='%s' and Password='%s';" % (glyid,glypassword))
 160         if glycount != 0:
 161 
 162             glyd.hide()
 163             glycz.show()
 164 
 165             self.lineEdit.setText("")
 166             self.lineEdit_2.setText("")
 167 
 168             glycz.pushButton.clicked.connect(glycz.hide)
 169             glycz.pushButton.clicked.connect(glydzxxcz.show)  # 从管理员操作界面进入管理员读者信息操作界面
 170 
 171             glydzxxcz.pushButton_3.clicked.connect(glydzxxcz.hide)
 172             glydzxxcz.pushButton_3.clicked.connect(glydzxxcz.Clean)
 173             glydzxxcz.pushButton_3.clicked.connect(glycz.show)  # 从管理员读者信息操作界面进入管理员操作界面
 174 
 175             glydzxxcz.pushButton.clicked.connect(glydzxxcz.dimquery) #读者信息模糊查询
 176 
 177             glydzxxcz.pushButton_5.clicked.connect(glydzxxcz.exactquery) #读者信息精准查询
 178 
 179             glydzxxcz.pushButton_2.clicked.connect(glydzxxcz.Delete) #读者信息删除
 180 
 181             glycz.pushButton_2.clicked.connect(glycz.hide)
 182             glycz.pushButton_2.clicked.connect(glyxgmm.show)  # 从管理员操作界面进入管理员修改密码界面
 183 
 184             glyxgmm.pushButton_3.clicked.connect(glyxgmm.xgmm)  # 调用修改密码函数
 185 
 186             glyxgmm.pushButton.clicked.connect(glyxgmm.hide)
 187             glyxgmm.pushButton.clicked.connect(glyxgmm.Clean)
 188             glyxgmm.pushButton.clicked.connect(glycz.show)# 从管理员修改密码界面返回管理员操作界面
 189 
 190             glycz.pushButton_5.clicked.connect(glycz.hide)
 191             glycz.pushButton_5.clicked.connect(glysjcz.show)  # 从管理员操作界面进入管理员书籍操作界面
 192 
 193             glysjcz.pushButton.clicked.connect(glysjcz.dimquery)#模糊查询
 194 
 195             glysjcz.pushButton_2.clicked.connect(glysjcz.exactquery)#精确查询
 196 
 197             glysjcz.pushButton_3.clicked.connect(glysjcz.add)#添加书籍
 198 
 199             glysjcz.pushButton_6.clicked.connect(glysjcz.Delete)#删除书籍
 200 
 201             glysjcz.pushButton_4.clicked.connect(glysjcz.hide)
 202             glysjcz.pushButton_4.clicked.connect(glysjcz.Clean)
 203             glysjcz.pushButton_4.clicked.connect(glycz.show)  # 从管理员书籍操作界面返回管理员操作界面
 204 
 205             glycz.pushButton_7.clicked.connect(glycz.hide)
 206             glycz.pushButton_7.clicked.connect(glypcxxcz.show)  # 从管理员操作界面进入管理员赔偿信息查询界面
 207 
 208             glypcxxcz.pushButton_3.clicked.connect(glypcxxcz.dimquery)#模糊查询
 209 
 210             glypcxxcz.pushButton_4.clicked.connect(glypcxxcz.exactquery)#精确查询
 211 
 212             glypcxxcz.pushButton.clicked.connect(glypcxxcz.hide)
 213             glypcxxcz.pushButton.clicked.connect(glypcxxcz.Clean)
 214             glypcxxcz.pushButton.clicked.connect(glycz.show)  # 从管理员赔偿信息查询界面返回管理员操作界面
 215 
 216             glycz.pushButton_6.clicked.connect(glycz.hide)
 217             glycz.pushButton_6.clicked.connect(glyjsxxcz.show)  # 从管理员操作界面进入管理员借书信息查询界面
 218 
 219             glyjsxxcz.pushButton.clicked.connect(glyjsxxcz.dimquery)#模糊查询
 220 
 221             glyjsxxcz.pushButton_2.clicked.connect(glyjsxxcz.exactquery)#精确查询
 222 
 223             glyjsxxcz.pushButton_3.clicked.connect(glyjsxxcz.hide)
 224             glyjsxxcz.pushButton_3.clicked.connect(glyjsxxcz.Clean)
 225             glyjsxxcz.pushButton_3.clicked.connect(glycz.show)  # 从管理员借书信息查询界面返回管理员操作界面
 226 
 227             glycz.pushButton_8.clicked.connect(glycz.hide)
 228             glycz.pushButton_8.clicked.connect(glyhsxxcz.show)  # 从管理员操作界面进入管理员还书信息查询界面
 229 
 230             glyhsxxcz.pushButton.clicked.connect(glyhsxxcz.dimquery)  # 模糊查询
 231 
 232             glyhsxxcz.pushButton_2.clicked.connect(glyhsxxcz.exactquery)  # 精确查询
 233 
 234             glyhsxxcz.pushButton_3.clicked.connect(glyhsxxcz.hide)
 235             glyhsxxcz.pushButton_3.clicked.connect(glyhsxxcz.Clean)
 236             glyhsxxcz.pushButton_3.clicked.connect(glycz.show) # 从管理员还书信息查询界面返回管理员操作界面
 237 
 238             glycz.pushButton_3.clicked.connect(glycz.hide)
 239             glycz.pushButton_3.clicked.connect(glyd.show)  # 从管理员操作界面进入管理员登陆界面
 240 
 241             glycz.pushButton_9.clicked.connect(glycz.hide)
 242             glycz.pushButton_9.clicked.connect(unexpected.show)  # 从管理员操作界面进入意外处理界面
 243 
 244             unexpected.pushButton.clicked.connect(unexpected.hide)
 245             unexpected.pushButton.clicked.connect(glycz.show)  # 从意外处理界面进入管理员操作界面
 246 
 247             unexpected.pushButton_3.clicked.connect(unexpected.add)#调用添加函数
 248             unexpected.pushButton.clicked.connect(unexpected.Clean)  # 调用清空函数
 249         else:
 250             dzdlcw.show()
 251 
 252 
 253 class Ui_zc(QtWidgets.QDialog, Ui_5):
 254     def __init__(self):
 255         super(Ui_zc, self).__init__()
 256         self.setupUi(self)
 257 
 258 class Ui_dzzc(QtWidgets.QDialog, Ui_6):
 259     def __init__(self):
 260         super(Ui_dzzc, self).__init__()
 261         self.setupUi(self)
 262     def Clean(self):
 263         self.lineEdit.setText("")
 264         self.lineEdit_2.setText("")
 265         self.lineEdit_3.setText("")
 266         self.lineEdit_4.setText("")
 267     def get_word(self):
 268         dzname = self.lineEdit.text()
 269         dzid = self.lineEdit_2.text()
 270         pw = self.lineEdit_3.text()
 271         sex = self.lineEdit_4.text()
 272         count = cur.execute("SELECT * FROM 读者信息 where reader_id='%s';" % (dzid))
 273         if count==0:
 274             if dzname!=""and dzid !="" and pw!="" and sex!="":
 275                 if sex!="" and sex!="":
 276                     sex="未知"
 277                 cur.execute("INSERT INTO 读者信息 values('%s','%s','%s','%s',0,null,null)" % (dzname,dzid,pw,sex))
 278                 conn.commit()
 279                 dzzcsuccess.show()
 280                 self.lineEdit.setText("")
 281                 self.lineEdit_2.setText("")
 282                 self.lineEdit_3.setText("")
 283                 self.lineEdit_4.setText("")
 284             else:
 285                 dzzcfail.show()
 286         else:
 287              dzzcfail.show()
 288 
 289 class Ui_glyzc(QtWidgets.QDialog, Ui_7):
 290     def __init__(self):
 291         super(Ui_glyzc, self).__init__()
 292         self.setupUi(self)
 293     def Clean(self):
 294         self.lineEdit.setText("")
 295         self.lineEdit_2.setText("")
 296         self.lineEdit_3.setText("")
 297     def get_word(self):
 298         glyname = self.lineEdit.text()
 299         glyid = self.lineEdit_2.text()
 300         pw = self.lineEdit_3.text()
 301         count = cur.execute("SELECT * FROM 管理员 where admin_id='%s';" % (glyid))
 302         if glyname!="" and glyid!="" and pw!="":
 303             if count==0:
 304                 if glyname!=""and glyid !="" and pw!="":
 305                     cur.execute("INSERT INTO 管理员 values('%s','%s','%s')" % (glyname,glyid,pw))
 306                     conn.commit()
 307                     self.lineEdit.setText("")
 308                     self.lineEdit_2.setText("")
 309                     self.lineEdit_3.setText("")
 310                     dzzcsuccess.show()
 311                 else:
 312                     dzzcfail.show()
 313             else:
 314                 dzzcfail.show()
 315 
 316 class Ui_dzdlcw(QtWidgets.QDialog, Ui_8):
 317     def __init__(self):
 318         super(Ui_dzdlcw, self).__init__()
 319         self.setupUi(self)
 320 
 321 class Ui_dzcz(QtWidgets.QDialog, Ui_9):
 322     def __init__(self):
 323         super(Ui_dzcz, self).__init__()
 324         self.setupUi(self)
 325 
 326 class Ui_dzxxcx(QtWidgets.QDialog, Ui_10):
 327     def __init__(self):
 328         super(Ui_dzxxcx, self).__init__()
 329         self.setupUi(self)
 330     def dzxxcxshow(self):
 331         global dzid
 332         cur.execute("SELECT * FROM 读者信息 where Reader_id = '%s';" % (dzid))
 333         data=cur.fetchall()
 334         row=len(data)
 335         vol=len(data[0])
 336         self.tableWidget.setRowCount(row)
 337         self.tableWidget.setColumnCount(vol)
 338         for i in range(row):
 339             for j in range(vol):
 340                 temp_data=data[i][j]
 341                 data1=QTableWidgetItem(str(temp_data))
 342                 self.tableWidget.setItem(i,j,data1)
 343 
 344 class Ui_dzxgmm(QtWidgets.QDialog, Ui_11):
 345     def __init__(self):
 346         super(Ui_dzxgmm, self).__init__()
 347         self.setupUi(self)
 348     def Clean(self):
 349         self.lineEdit.setText("")
 350         self.lineEdit_2.setText("")
 351     def get_word(self):
 352         firstpw = self.lineEdit.text()
 353         secondpw = self.lineEdit_2.text()
 354         global dzid
 355         if  firstpw!="" and secondpw!="":
 356             if firstpw==secondpw and firstpw!="":
 357                 cur.execute("update 读者信息 set password = ('%s') where reader_id='%s'"% (firstpw,dzid))
 358                 conn.commit()
 359                 self.lineEdit.setText("")
 360                 self.lineEdit_2.setText("")
 361                 xgmmsuccessful.show()
 362             else:
 363                 print(firstpw)
 364                 print(secondpw)
 365                 print("hhh")
 366                 xgmmfail.show()
 367 
 368 
 369 class Ui_xgmmsuccessful(QtWidgets.QDialog, Ui_12):
 370     def __init__(self):
 371         super(Ui_xgmmsuccessful, self).__init__()
 372         self.setupUi(self)
 373 
 374 class Ui_xgmmfail(QtWidgets.QDialog, Ui_13):
 375     def __init__(self):
 376         super(Ui_xgmmfail, self).__init__()
 377         self.setupUi(self)
 378 
 379 class Ui_dzjs(QtWidgets.QDialog, Ui_14):
 380     def __init__(self):
 381         super(Ui_dzjs, self).__init__()
 382         self.setupUi(self)
 383     def Clean(self):
 384         self.lineEdit.setText("")
 385         self.lineEdit_2.setText("")
 386         self.lineEdit_3.setText("")
 387         self.lineEdit_4.setText("")
 388         self.tableWidget.setRowCount(0)
 389         self.tableWidget.setColumnCount(0)
 390         self.tableWidget.setHorizontalHeaderLabels(['书名', '索书号', '类型', '价格', '是否可借'])
 391     def dimquery(self):
 392         bookname = self.lineEdit.text()
 393         bookid = self.lineEdit_2.text()
 394         Type = self.lineEdit_3.text()
 395         money = self.lineEdit_4.text()
 396         if ok(money) == False:
 397             sjcount = cur.execute(
 398                 "SELECT * FROM 书籍信息 where Book_id='%s' or book_name='%s' or Type = '%s'" % (
 399                     bookid, bookname, Type))
 400         else:
 401             sjcount = cur.execute(
 402                 "SELECT * FROM 书籍信息 where Book_id='%s' or book_name='%s' or Type = '%s' or money='%f'" % (
 403                 bookid, bookname, Type, float(money)))
 404         if bookname == "" and bookid == "" and Type == "" and money == "":
 405             sjcount = cur.execute("SELECT * FROM 书籍信息")
 406         if sjcount != 0:
 407             data = cur.fetchall()
 408             row = len(data)
 409             vol = len(data[0])
 410             self.tableWidget.setRowCount(row)
 411             self.tableWidget.setColumnCount(vol)
 412             self.tableWidget.setHorizontalHeaderLabels(['书名', '索书号', '类型', '价格', '是否可借'])
 413             for i in range(row):
 414                 for j in range(vol):
 415                     temp_data = data[i][j]
 416                     data1 = QTableWidgetItem(str(temp_data))
 417                     self.tableWidget.setItem(i, j, data1)
 418         else:
 419             self.tableWidget.setRowCount(0)
 420             self.tableWidget.setColumnCount(0)
 421 
 422     def exactquery(self):
 423         bookname = self.lineEdit.text()
 424         bookid = self.lineEdit_2.text()
 425         Type =  self.lineEdit_3.text()
 426         money= self.lineEdit_4.text()
 427         if ok(money)==False:
 428             sjcount = cur.execute(
 429                 "SELECT * FROM 书籍信息 where Book_id='%s' and book_name='%s' and Type = '%s'" % (
 430                 bookid, bookname, Type))
 431         else:
 432             sjcount=cur.execute("SELECT * FROM 书籍信息 where Book_id='%s' and book_name='%s' and Type = '%s' and money='%f'" % (bookid,bookname,Type,float(money)))
 433         if sjcount!=0:
 434             data = cur.fetchall()
 435             row = len(data)
 436             vol = len(data[0])
 437             self.tableWidget.setRowCount(row)
 438             self.tableWidget.setColumnCount(vol)
 439             self.tableWidget.setHorizontalHeaderLabels(['书名', '索书号', '类型', '价格', '是否可借'])
 440             for i in range(row):
 441                 for j in range(vol):
 442                     temp_data = data[i][j]
 443                     data1 = QTableWidgetItem(str(temp_data))
 444                     self.tableWidget.setItem(i, j, data1)
 445         else:
 446             self.tableWidget.setRowCount(0)
 447             self.tableWidget.setColumnCount(0)
 448 
 449     def borrowbook(self):
 450         bookname = self.lineEdit.text()
 451         bookid = self.lineEdit_2.text()
 452         Type = self.lineEdit_3.text()
 453         money = self.lineEdit_4.text()
 454         if ok(money) == False:
 455             sjcount = cur.execute(
 456                 "SELECT * FROM 书籍信息 where Book_id='%s' and book_name='%s' and Type = '%s'" % (
 457                     bookid, bookname, Type))
 458         else:
 459             sjcount = cur.execute(
 460                 "SELECT * FROM 书籍信息 where Book_id='%s' and book_name='%s' and Type = '%s' and money='%f'" % (
 461                 bookid, bookname, Type, float(money)))
 462         if bookname != "" and bookid != "" and Type != "" and money != "":
 463             if sjcount==1:
 464                 data = cur.fetchall()
 465                 now = QDateTime.currentDateTime()
 466                 temp_data = data[0][4]
 467                 if temp_data == "可借":
 468                     jssuccess.show()
 469                     Key = '不可借'
 470                     global dzid
 471                     cur.execute("update 书籍信息 set state=('%s') where book_id = '%s'" % (Key, bookid))
 472                     conn.commit()
 473                     cur.execute("update 读者信息 set number=(number+1) where reader_id = '%s'" % (dzid))
 474                     conn.commit()
 475                     cur.execute("insert into 借书信息 values('%s','%s','%s','%s',6,'未归还')" % (
 476                     bookname, bookid, dzid, now.toString(Qt.ISODate)))
 477                     conn.commit()
 478                 else:
 479                      jsfail.show()
 480             else:
 481                 jsfail.show()
 482 
 483     def returnbook(self):
 484         bookname = self.lineEdit.text()
 485         bookid = self.lineEdit_2.text()
 486         Type = self.lineEdit_3.text()
 487         money = self.lineEdit_4.text()
 488         global dzid
 489         jscount=cur.execute("SELECT * FROM 借书信息 where Book_id='%s' and reader_id='%s' and state='未归还'" % (bookid,dzid))
 490         now = QDateTime.currentDateTime()
 491         if bookname!="" and bookid!="" and Type!="" and money!="":
 492             if jscount==1:
 493                 key = "可借"
 494                 cur.execute("update 书籍信息 set state=('%s') where book_id = '%s'" % (key,bookid))
 495                 conn.commit()
 496                 cur.execute("select * from 借书信息 where book_id = '%s' and reader_id='%s'" % (bookid,dzid))
 497                 data=cur.fetchall()
 498                 row=len(data)
 499                 Starttime=QDateTime.fromString(data[row-1][3],"yyyy-MM-ddThh:mm:ss")
 500                 difftime=float(Starttime.secsTo(now))
 501                 cur.execute("update 借书信息 set state=('已归还') where Book_id='%s' and reader_id='%s' and state='未归还'" % (bookid, dzid))
 502                 conn.commit()
 503                 if difftime>float(data[row-1][4]):#超期了
 504                     cur.execute("select * from 赔偿信息")
 505                     data1=cur.fetchall()
 506                     row1=len(data1)
 507                     row1=row1+1
 508                     cur.execute("select * from 读者信息 where reader_id='%s'" % (dzid))
 509                     data2=cur.fetchall()
 510                     readername=data2[0][0]
 511                     cur.execute(
 512                         "insert into 赔偿信息 values('%s','%s','%s','%s','%s','超期','%f','%s','未支付')" % (str(row1),readername,dzid,bookname,bookid,difftime*0.1,now.toString(Qt.ISODate)))
 513                     conn.commit()
 514                     cur.execute("insert into 还书信息 values('%s','%s','%s','%s','超期')" % (bookname,bookid,dzid,now.toString(Qt.ISODate)))
 515                     conn.commit()
 516                     cur.execute("update 读者信息 set number=(number-1) where reader_id = '%s'" % (dzid))
 517                     conn.commit()
 518                     cqpc.show()
 519                 else:
 520                     cur.execute("insert into 还书信息 values('%s','%s','%s','%s','正常')" % (
 521                     bookname, bookid, dzid, now.toString(Qt.ISODate)))
 522                     conn.commit()
 523                     hssuccess.show()
 524             else:
 525                 hsfail.show()
 526 
 527     def renew(self):
 528         bookname = self.lineEdit.text()
 529         bookid = self.lineEdit_2.text()
 530         Type = self.lineEdit_3.text()
 531         money = self.lineEdit_4.text()
 532         global dzid
 533         jscount = cur.execute(
 534             "SELECT * FROM 借书信息 where Book_id='%s' and reader_id='%s' and state='未归还'" % (bookid, dzid))
 535         now = QDateTime.currentDateTime()
 536         if bookname!="" and bookid!="" and Type!="" and money!="":
 537             if jscount == 1:
 538                 cur.execute("select * from 借书信息 where book_id = '%s' and reader_id='%s'" % (bookid, dzid))
 539                 data = cur.fetchall()
 540                 row = len(data)
 541                 Starttime = QDateTime.fromString(data[row - 1][3], "yyyy-MM-ddThh:mm:ss")
 542                 difftime = float(Starttime.secsTo(now))
 543                 if difftime > float(data[row - 1][4]):  # 超期了
 544                     xjfail.show()
 545                 else:
 546                     cur.execute("update 借书信息 set time=(time+6) where Book_id='%s' and reader_id='%s' and state='未归还'" % (bookid, dzid))
 547                     conn.commit()
 548                     xjcg.show()
 549             else:
 550                 xjfail.show()
 551 
 552 class Ui_jsxxcx(QtWidgets.QDialog, Ui_15):
 553     def __init__(self):
 554         super(Ui_jsxxcx, self).__init__()
 555         self.setupUi(self)
 556     def jsxxcxshow(self):
 557         global dzid
 558         count=cur.execute("SELECT * FROM 借书信息 where Reader_id = '%s';" % (dzid))
 559         if count != 0:
 560             data = cur.fetchall()
 561             row = len(data)
 562             vol = len(data[0])
 563             self.tableWidget.setRowCount(row)
 564             self.tableWidget.setColumnCount(vol)
 565             for i in range(row):
 566                 for j in range(vol):
 567                     temp_data = data[i][j]
 568                     data1 = QTableWidgetItem(str(temp_data))
 569                     self.tableWidget.setItem(i, j, data1)
 570         else:
 571             self.tableWidget.setRowCount(0)
 572             self.tableWidget.setColumnCount(0)
 573             self.tableWidget.setHorizontalHeaderLabels(['书名','索书号','读者编号','借书日期','借书时限'])
 574 
 575 class Ui_hsxxcx(QtWidgets.QDialog, Ui_16):
 576     def __init__(self):
 577         super(Ui_hsxxcx, self).__init__()
 578         self.setupUi(self)
 579     def hsxxcxshow(self):
 580         global dzid
 581         count=cur.execute("SELECT * FROM 还书信息 where Reader_id = '%s';" % (dzid))
 582         if count != 0:
 583             data = cur.fetchall()
 584             row = len(data)
 585             vol = len(data[0])
 586             self.tableWidget.setRowCount(row)
 587             self.tableWidget.setColumnCount(vol)
 588             for i in range(row):
 589                 for j in range(vol):
 590                     temp_data = data[i][j]
 591                     data1 = QTableWidgetItem(str(temp_data))
 592                     self.tableWidget.setItem(i, j, data1)
 593         else:
 594             self.tableWidget.setRowCount(0)
 595             self.tableWidget.setColumnCount(0)
 596             self.tableWidget.setHorizontalHeaderLabels(['书名', '索书号', '读者编号', '还书时间'])
 597 
 598 class Ui_dzzcsuccess(QtWidgets.QDialog, Ui_18):
 599     def __init__(self):
 600         super(Ui_dzzcsuccess, self).__init__()
 601         self.setupUi(self)
 602 
 603 class Ui_dzzcfail(QtWidgets.QDialog, Ui_19):
 604     def __init__(self):
 605         super(Ui_dzzcfail, self).__init__()
 606         self.setupUi(self)
 607 
 608 class Ui_glycz(QtWidgets.QDialog, Ui_20):
 609     def __init__(self):
 610         super(Ui_glycz, self).__init__()
 611         self.setupUi(self)
 612 
 613 class Ui_jssuccess(QtWidgets.QDialog, Ui_21):
 614     def __init__(self):
 615         super(Ui_jssuccess, self).__init__()
 616         self.setupUi(self)
 617 
 618 class Ui_jsfail(QtWidgets.QDialog, Ui_22):
 619     def __init__(self):
 620         super(Ui_jsfail, self).__init__()
 621         self.setupUi(self)
 622 
 623 class Ui_hssuccess(QtWidgets.QDialog, Ui_23):
 624     def __init__(self):
 625         super(Ui_hssuccess, self).__init__()
 626         self.setupUi(self)
 627 
 628 class Ui_hsfail(QtWidgets.QDialog, Ui_24):
 629     def __init__(self):
 630         super(Ui_hsfail, self).__init__()
 631         self.setupUi(self)
 632 
 633 class Ui_pccz(QtWidgets.QDialog, Ui_25):
 634     def __init__(self):
 635         super(Ui_pccz, self).__init__()
 636         self.setupUi(self)
 637     def Clean(self):
 638         self.lineEdit.setText("")
 639         self.lineEdit_2.setText("")
 640         self.lineEdit_3.setText("")
 641         self.lineEdit_4.setText("")
 642         self.tableWidget.setRowCount(0)
 643         self.tableWidget.setColumnCount(0)
 644         self.tableWidget.setHorizontalHeaderLabels(
 645             ['赔偿信息编号', '读者姓名', '读者编号', '书名', '索书号', '赔偿原因', '赔偿金额', '赔偿时间', '是否已支付'])
 646     def dimquery(self):
 647         pcxxid = self.lineEdit.text()
 648         pcreason = self.lineEdit_2.text()
 649         money = self.lineEdit_3.text()
 650         bookid = self.lineEdit_4.text()
 651         if bookid=="" and pcreason=="" and money=="" and pcxxid=="":
 652             global dzid
 653             count = cur.execute("SELECT * FROM 赔偿信息 where Reader_id = '%s';" % (dzid))
 654             self.tableWidget.setHorizontalHeaderLabels(
 655                 ['赔偿信息编号', '读者姓名', '读者编号', '书名', '索书号', '赔偿原因', '赔偿金额', '赔偿时间', '是否已支付'])
 656             if count != 0:
 657                 data = cur.fetchall()
 658                 row = len(data)
 659                 vol = len(data[0])
 660                 self.tableWidget.setRowCount(row)
 661                 self.tableWidget.setColumnCount(vol)
 662                 self.tableWidget.setHorizontalHeaderLabels(
 663                     ['赔偿信息编号', '读者姓名', '读者编号', '书名', '索书号', '赔偿原因', '赔偿金额', '赔偿时间', '是否已支付'])
 664                 for i in range(row):
 665                     for j in range(vol):
 666                         temp_data = data[i][j]
 667                         data1 = QTableWidgetItem(str(temp_data))
 668                         self.tableWidget.setItem(i, j, data1)
 669         else:
 670             if ok(money)==False:
 671                 count = cur.execute("SELECT * FROM 赔偿信息 where Reader_id = '%s' and (book_id='%s' or Reason='%s' or Pay_id='%s');" % (dzid,bookid,pcreason,pcxxid))
 672                 if count != 0:
 673                     data = cur.fetchall()
 674                     row = len(data)
 675                     vol = len(data[0])
 676                     self.tableWidget.setRowCount(row)
 677                     self.tableWidget.setColumnCount(vol)
 678                     self.tableWidget.setHorizontalHeaderLabels(['赔偿信息编号', '读者姓名', '读者编号', '书名', '索书号', '赔偿原因', '赔偿金额', '赔偿时间', '是否已支付'])
 679                     for i in range(row):
 680                         for j in range(vol):
 681                             temp_data = data[i][j]
 682                             data1 = QTableWidgetItem(str(temp_data))
 683                             self.tableWidget.setItem(i, j, data1)
 684                 else:
 685                     self.tableWidget.setRowCount(0)
 686                     self.tableWidget.setColumnCount(0)
 687             else:
 688                 count = cur.execute(
 689                     "SELECT * FROM 赔偿信息 where Reader_id = '%s' and (book_id='%s' or Reason='%s' or Pay_id='%s' or money='%f');" % (
 690                     dzid, bookid, pcreason, pcxxid,float(money)))
 691                 if count != 0:
 692                     data = cur.fetchall()
 693                     row = len(data)
 694                     vol = len(data[0])
 695                     self.tableWidget.setRowCount(row)
 696                     self.tableWidget.setColumnCount(vol)
 697                     self.tableWidget.setHorizontalHeaderLabels(['赔偿信息编号', '读者姓名', '读者编号', '书名', '索书号', '赔偿原因', '赔偿金额', '赔偿时间', '是否已支付'])
 698                     for i in range(row):
 699                         for j in range(vol):
 700                             temp_data = data[i][j]
 701                             data1 = QTableWidgetItem(str(temp_data))
 702                             self.tableWidget.setItem(i, j, data1)
 703 
 704                 else:
 705                     self.tableWidget.setRowCount(0)
 706                     self.tableWidget.setColumnCount(0)
 707 
 708     def exactquery(self):
 709         pcxxid = self.lineEdit.text()
 710         pcreason = self.lineEdit_2.text()
 711         money = self.lineEdit_3.text()
 712         bookid = self.lineEdit_4.text()
 713         if bookid != "" and pcreason != "" and pcxxid != "":
 714             if ok(money)==False:
 715                 count = cur.execute(
 716                     "SELECT * FROM 赔偿信息 where Reader_id = '%s' and book_id='%s' and Reason='%s' and Pay_id='%s';" % (
 717                     dzid, bookid, pcreason, pcxxid))
 718                 if count != 0:
 719                     data = cur.fetchall()
 720                     row = len(data)
 721                     vol = len(data[0])
 722                     self.tableWidget.setRowCount(row)
 723                     self.tableWidget.setColumnCount(vol)
 724                     self.tableWidget.setHorizontalHeaderLabels(
 725                         ['赔偿信息编号', '读者姓名', '读者编号', '书名', '索书号', '赔偿原因', '赔偿金额', '赔偿时间', '是否已支付'])
 726                     for i in range(row):
 727                         for j in range(vol):
 728                             temp_data = data[i][j]
 729                             data1 = QTableWidgetItem(str(temp_data))
 730                             self.tableWidget.setItem(i, j, data1)
 731                 else:
 732                     self.tableWidget.setRowCount(0)
 733                     self.tableWidget.setColumnCount(0)
 734             else:
 735                 count = cur.execute(
 736                     "SELECT * FROM 赔偿信息 where Reader_id = '%s' and book_id='%s' and Reason='%s' and Pay_id='%s' and Money='%f';" % (
 737                         dzid, bookid, pcreason, pcxxid, float(money)))
 738                 if count != 0:
 739                     data = cur.fetchall()
 740                     row = len(data)
 741                     vol = len(data[0])
 742                     self.tableWidget.setRowCount(row)
 743                     self.tableWidget.setColumnCount(vol)
 744                     self.tableWidget.setHorizontalHeaderLabels(
 745                         ['赔偿信息编号', '读者姓名', '读者编号', '书名', '索书号', '赔偿原因', '赔偿金额', '赔偿时间', '是否已支付'])
 746                     for i in range(row):
 747                         for j in range(vol):
 748                             temp_data = data[i][j]
 749                             data1 = QTableWidgetItem(str(temp_data))
 750                             self.tableWidget.setItem(i, j, data1)
 751                 else:
 752                     self.tableWidget.setRowCount(0)
 753                     self.tableWidget.setColumnCount(0)
 754         else:
 755             self.tableWidget.setRowCount(0)
 756             self.tableWidget.setColumnCount(0)
 757             self.tableWidget.setHorizontalHeaderLabels(
 758                 ['赔偿信息编号', '读者姓名', '读者编号', '书名', '索书号', '赔偿原因', '赔偿金额', '赔偿时间', '是否已支付'])
 759 
 760     def pay(self):
 761         pcxxid = self.lineEdit.text()
 762         pcreason = self.lineEdit_2.text()
 763         money = self.lineEdit_3.text()
 764         bookid = self.lineEdit_4.text()
 765         pcxxid =pcxxid
 766         pcreason =pcreason
 767         money =money
 768         bookid =bookid
 769         now = QDateTime.currentDateTime()
 770         if bookid != "" and pcreason != "" and pcxxid != "" and money!="":
 771             if bookid != "" and pcreason != "" and pcxxid != "":
 772                 if ok(money)==False:
 773                     global dzid
 774                     count = cur.execute(
 775                         "SELECT * FROM 赔偿信息 where Reader_id = '%s' and book_id='%s' and Reason='%s' and Pay_id='%s';" % (
 776                         dzid, bookid, pcreason, pcxxid))
 777                     if count == 1:
 778                         data = cur.fetchall()
 779                         if data[0][8]=="未支付":
 780                             wxzfhhh.show()
 781                             cur.execute("update 赔偿信息 set state=('已支付') where Reader_id = '%s' and book_id='%s' and Reason='%s' and Pay_id='%s';" % (dzid, bookid, pcreason, pcxxid))
 782                             conn.commit()
 783                             cur.execute("update 赔偿信息 set date=('%s') where Reader_id = '%s' and book_id='%s' and Reason='%s' and Pay_id='%s';" % (now.toString(Qt.ISODate),dzid, bookid, pcreason, pcxxid))
 784                             conn.commit()
 785                         else:
 786                             pcfail.show()
 787                     else:
 788                         pcfail.show()
 789                 else:
 790                     count = cur.execute("SELECT * FROM 赔偿信息 where Reader_id = '%s' and book_id='%s' and Reason='%s' and Pay_id='%s' and Money='%f';" % (dzid, bookid, pcreason, pcxxid, float(money)))
 791                     if count == 1:
 792                         data = cur.fetchall()
 793                         if data[0][8] == "未支付":
 794                             wxzfhhh.show()
 795                             cur.execute("update 赔偿信息 set state=('已支付') where Reader_id = '%s' and book_id='%s' and Reason='%s' and Pay_id='%s' and Money='%f';" % (dzid, bookid, pcreason, pcxxid,float(money)))
 796                             conn.commit()
 797                             cur.execute(
 798                                 "update 赔偿信息 set date=('%s') where Reader_id = '%s' and book_id='%s' and Reason='%s' and Pay_id='%s' and Money='%f';" % (
 799                                 now.toString(Qt.ISODate), dzid, bookid, pcreason, pcxxid,float(money)))
 800                             conn.commit()
 801                         else:
 802                             pcfail.show()
 803                     else:
 804                         pcfail.show()
 805             else:
 806                 pcfail.show()
 807 
 808 class Ui_wxzfhhh(QtWidgets.QDialog, Ui_26):
 809     def __init__(self):
 810         super(Ui_wxzfhhh, self).__init__()
 811         self.setupUi(self)
 812 
 813 class Ui_glydzxxcz(QtWidgets.QDialog, Ui_27):
 814     def __init__(self):
 815         super(Ui_glydzxxcz, self).__init__()
 816         self.setupUi(self)
 817     def Clean(self):
 818         self.lineEdit.setText("")
 819         self.lineEdit_2.setText("")
 820         self.tableWidget.setRowCount(0)
 821         self.tableWidget.setColumnCount(0)
 822         self.tableWidget.setHorizontalHeaderLabels(['姓名', '读者编号', '密码', '性别', '借书数量', '借书日期', '还书日期'])
 823     def dimquery(self):
 824         readername = self.lineEdit.text()
 825         readerid = self.lineEdit_2.text()
 826         dzcount=cur.execute("select * from 读者信息 where reader_id = '%s' or reader_name = '%s'" % (readerid,readername))
 827         if readername=="" and readerid=="":
 828             dzcount = cur.execute("select * from 读者信息")
 829         if dzcount!=0:
 830             data = cur.fetchall()
 831             row = len(data)
 832             vol = len(data[0])
 833             self.tableWidget.setRowCount(row)
 834             self.tableWidget.setColumnCount(vol)
 835             self.tableWidget.setHorizontalHeaderLabels(['姓名', '读者编号', '密码', '性别', '借书数量','借书日期','还书日期'])
 836             for i in range(row):
 837                 for j in range(vol):
 838                     temp_data = data[i][j]
 839                     data1 = QTableWidgetItem(str(temp_data))
 840                     self.tableWidget.setItem(i, j, data1)
 841         else:
 842             self.tableWidget.setRowCount(0)
 843             self.tableWidget.setColumnCount(0)
 844 
 845 
 846     def exactquery(self):
 847         readername = self.lineEdit.text()
 848         readerid = self.lineEdit_2.text()
 849         dzcount = cur.execute(
 850             "select * from 读者信息 where reader_id = '%s' and reader_name = '%s'" % (readerid, readername))
 851         if dzcount != 0:
 852             data = cur.fetchall()
 853             row = len(data)
 854             vol = len(data[0])
 855             self.tableWidget.setRowCount(row)
 856             self.tableWidget.setColumnCount(vol)
 857             self.tableWidget.setHorizontalHeaderLabels(['姓名', '读者编号', '密码', '性别', '借书数量', '借书日期', '还书日期'])
 858             for i in range(row):
 859                 for j in range(vol):
 860                     temp_data = data[i][j]
 861                     data1 = QTableWidgetItem(str(temp_data))
 862                     self.tableWidget.setItem(i, j, data1)
 863         else:
 864             self.tableWidget.setRowCount(0)
 865             self.tableWidget.setColumnCount(0)
 866 
 867     def Delete(self):
 868         readername = self.lineEdit.text()
 869         readerid = self.lineEdit_2.text()
 870         dzcount = cur.execute(
 871             "select * from 读者信息 where reader_id = '%s' or reader_name = '%s'" % (readerid, readername))
 872         if dzcount == 1:
 873             cur.execute(
 874                 "delete from 读者信息 where reader_id = '%s' or reader_name = '%s'" % (readerid, readername))
 875             conn.commit()
 876             dzxxscsuccess.show()
 877         else:
 878             dzxxscfail.show()
 879 
 880 class Ui_glyhsxxcz(QtWidgets.QDialog, Ui_28):
 881     def __init__(self):
 882         super(Ui_glyhsxxcz, self).__init__()
 883         self.setupUi(self)
 884     def Clean(self):
 885         self.lineEdit.setText("")
 886         self.lineEdit_2.setText("")
 887         self.lineEdit_3.setText("")
 888         self.tableWidget.setRowCount(0)
 889         self.tableWidget.setColumnCount(0)
 890         self.tableWidget.setHorizontalHeaderLabels(['书名', '索书号', '读者编号', '还书时间'])
 891     def dimquery(self):
 892         bookname = self.lineEdit.text()
 893         bookid = self.lineEdit_2.text()
 894         readerid =  self.lineEdit_3.text()
 895         sjcount=cur.execute("SELECT * FROM 还书信息 where book_name='%s' or reader_id='%s' or book_id = '%s'" % (bookname,readerid,bookid))
 896         if bookname=="" and bookid=="" and readerid=="":
 897             sjcount = cur.execute("SELECT * FROM 还书信息")
 898         if sjcount!=0:
 899             data = cur.fetchall()
 900             row = len(data)
 901             vol = len(data[0])
 902             self.tableWidget.setRowCount(row)
 903             self.tableWidget.setColumnCount(vol)
 904             self.tableWidget.setHorizontalHeaderLabels(['书名','索书号','读者编号','还书时间'])
 905             for i in range(row):
 906                 for j in range(vol):
 907                     temp_data = data[i][j]
 908                     data1 = QTableWidgetItem(str(temp_data))
 909                     self.tableWidget.setItem(i, j, data1)
 910         else:
 911             self.tableWidget.setRowCount(0)
 912             self.tableWidget.setColumnCount(0)
 913     def exactquery(self):
 914         bookname = self.lineEdit.text()
 915         bookid = self.lineEdit_2.text()
 916         readerid =  self.lineEdit_3.text()
 917         sjcount=cur.execute("SELECT * FROM 还书信息 where book_name='%s' and reader_id='%s' and book_id = '%s'" % (bookname,readerid,bookid))
 918         if sjcount !=0:
 919             data = cur.fetchall()
 920             row = len(data)
 921             vol = len(data[0])
 922             self.tableWidget.setRowCount(row)
 923             self.tableWidget.setColumnCount(vol)
 924             self.tableWidget.setHorizontalHeaderLabels(['书名','索书号','读者编号','还书时间'])
 925             for i in range(row):
 926                 for j in range(vol):
 927                     temp_data = data[i][j]
 928                     data1 = QTableWidgetItem(str(temp_data))
 929                     self.tableWidget.setItem(i, j, data1)
 930         else:
 931             self.tableWidget.setRowCount(0)
 932             self.tableWidget.setColumnCount(0)
 933 
 934 class Ui_glyjsxxcz(QtWidgets.QDialog, Ui_29):
 935     def __init__(self):
 936         super(Ui_glyjsxxcz, self).__init__()
 937         self.setupUi(self)
 938     def Clean(self):
 939         self.lineEdit.setText("")
 940         self.lineEdit_2.setText("")
 941         self.lineEdit_3.setText("")
 942         self.tableWidget.setRowCount(0)
 943         self.tableWidget.setColumnCount(0)
 944         self.tableWidget.setHorizontalHeaderLabels(['书名','索书号','读者编号','借书日期','借书时限'])
 945     def dimquery(self):
 946         bookname = self.lineEdit.text()
 947         bookid = self.lineEdit_2.text()
 948         readerid =  self.lineEdit_3.text()
 949         sjcount=cur.execute("SELECT * FROM 借书信息 where book_name='%s' or reader_id='%s' or book_id = '%s'" % (bookname,readerid,bookid))
 950         if bookname=="" and bookid=="" and readerid=="":
 951             sjcount = cur.execute("SELECT * FROM 借书信息")
 952         if sjcount!=0:
 953             data = cur.fetchall()
 954             row = len(data)
 955             vol = len(data[0])
 956             self.tableWidget.setRowCount(row)
 957             self.tableWidget.setColumnCount(vol)
 958             self.tableWidget.setHorizontalHeaderLabels(['书名','索书号','读者编号','借书日期','借书时限'])
 959             for i in range(row):
 960                 for j in range(vol):
 961                     temp_data = data[i][j]
 962                     data1 = QTableWidgetItem(str(temp_data))
 963                     self.tableWidget.setItem(i, j, data1)
 964         else:
 965             self.tableWidget.setRowCount(0)
 966             self.tableWidget.setColumnCount(0)
 967     def exactquery(self):
 968         bookname = self.lineEdit.text()
 969         bookid = self.lineEdit_2.text()
 970         readerid = self.lineEdit_3.text()
 971         sjcount = cur.execute(
 972             "SELECT * FROM 借书信息 where book_name='%s' and reader_id='%s' and book_id = '%s'" % (
 973             bookname, readerid, bookid))
 974         if sjcount != 0:
 975             data = cur.fetchall()
 976             row = len(data)
 977             vol = len(data[0])
 978             self.tableWidget.setRowCount(row)
 979             self.tableWidget.setColumnCount(vol)
 980             self.tableWidget.setHorizontalHeaderLabels(['书名', '索书号', '读者编号', '借书日期', '借书时限'])
 981             for i in range(row):
 982                 for j in range(vol):
 983                     temp_data = data[i][j]
 984                     data1 = QTableWidgetItem(str(temp_data))
 985                     self.tableWidget.setItem(i, j, data1)
 986         else:
 987             self.tableWidget.setRowCount(0)
 988             self.tableWidget.setColumnCount(0)
 989 
 990 class Ui_glypcxxcz(QtWidgets.QDialog, Ui_30):
 991     def __init__(self):
 992         super(Ui_glypcxxcz, self).__init__()
 993         self.setupUi(self)
 994     def Clean(self):
 995         self.lineEdit.setText("")
 996         self.lineEdit_2.setText("")
 997         self.lineEdit_3.setText("")
 998         self.lineEdit_4.setText("")
 999         self.tableWidget.setRowCount(0)
1000         self.tableWidget.setColumnCount(0)
1001         self.tableWidget.setHorizontalHeaderLabels(['读者姓名', '读者编号', '书名', '索书号', '赔偿原因', '赔偿金额', '赔偿时间'])
1002 
1003     def dimquery(self):
1004         readername = self.lineEdit.text()
1005         readerid = self.lineEdit_2.text()
1006         bookid =  self.lineEdit_3.text()
1007         reason= self.lineEdit_4.text()
1008         sjcount=cur.execute("SELECT * FROM 赔偿信息 where reader_name='%s' or reader_id='%s' or book_id = '%s' or reason='%s'" % (readername,readerid,bookid,reason))
1009         if readername=="" and readerid=="" and bookid=="" and reason=="":
1010             sjcount = cur.execute("SELECT * FROM 赔偿信息")
1011         if sjcount!=0:
1012             data = cur.fetchall()
1013             row = len(data)
1014             vol = len(data[0])
1015             self.tableWidget.setRowCount(row)
1016             self.tableWidget.setColumnCount(vol)
1017             self.tableWidget.setHorizontalHeaderLabels(['读者姓名', '读者编号', '书名', '索书号', '赔偿原因','赔偿金额','赔偿时间'])
1018             for i in range(row):
1019                 for j in range(vol):
1020                     temp_data = data[i][j]
1021                     data1 = QTableWidgetItem(str(temp_data))
1022                     self.tableWidget.setItem(i, j, data1)
1023         else:
1024             self.tableWidget.setRowCount(0)
1025             self.tableWidget.setColumnCount(0)
1026 
1027     def exactquery(self):
1028         readername = self.lineEdit.text()
1029         readerid = self.lineEdit_2.text()
1030         bookid = self.lineEdit_3.text()
1031         reason = self.lineEdit_4.text()
1032         sjcount = cur.execute(
1033             "SELECT * FROM 赔偿信息 where reader_name='%s' and reader_id='%s' and book_id = '%s' and reason='%s'" % (
1034             readername, readerid, bookid, reason))
1035         if sjcount == 1:
1036             data = cur.fetchall()
1037             row = len(data)
1038             vol = len(data[0])
1039             self.tableWidget.setRowCount(row)
1040             self.tableWidget.setColumnCount(vol)
1041             self.tableWidget.setHorizontalHeaderLabels(['读者姓名', '读者编号', '书名', '索书号', '赔偿原因', '赔偿金额', '赔偿时间'])
1042             for i in range(row):
1043                 for j in range(vol):
1044                     temp_data = data[i][j]
1045                     data1 = QTableWidgetItem(str(temp_data))
1046                     self.tableWidget.setItem(i, j, data1)
1047         else:
1048             self.tableWidget.setRowCount(0)
1049             self.tableWidget.setColumnCount(0)
1050 
1051 class Ui_glysjcz(QtWidgets.QDialog, Ui_31):
1052     def __init__(self):
1053         super(Ui_glysjcz, self).__init__()
1054         self.setupUi(self)
1055     def Clean(self):
1056         self.lineEdit.setText("")
1057         self.lineEdit_2.setText("")
1058         self.lineEdit_3.setText("")
1059         self.lineEdit_4.setText("")
1060         self.tableWidget.setRowCount(0)
1061         self.tableWidget.setColumnCount(0)
1062         self.tableWidget.setHorizontalHeaderLabels(['书名', '索书号', '类型', '价格', '是否可借'])
1063     def dimquery(self):
1064         bookname = self.lineEdit.text()
1065         bookid = self.lineEdit_2.text()
1066         Type =  self.lineEdit_3.text()
1067         money= self.lineEdit_4.text()
1068         if ok(money)==False:
1069             sjcount = cur.execute(
1070                 "SELECT * FROM 书籍信息 where Book_id='%s' or book_name='%s' or Type = '%s'" % (
1071                 bookid, bookname, Type))
1072         else:
1073             sjcount=cur.execute("SELECT * FROM 书籍信息 where Book_id='%s' or book_name='%s' or Type = '%s' or money='%f'" % (bookid,bookname,Type,float(money)))
1074         if bookname=="" and bookid=="" and Type=="" and money=="":
1075             sjcount = cur.execute("SELECT * FROM 书籍信息")
1076         if sjcount!=0:
1077             data = cur.fetchall()
1078             row = len(data)
1079             vol = len(data[0])
1080             self.tableWidget.setRowCount(row)
1081             self.tableWidget.setColumnCount(vol)
1082             self.tableWidget.setHorizontalHeaderLabels(['书名', '索书号', '类型', '价格', '是否可借'])
1083             for i in range(row):
1084                 for j in range(vol):
1085                     temp_data = data[i][j]
1086                     data1 = QTableWidgetItem(str(temp_data))
1087                     self.tableWidget.setItem(i, j, data1)
1088         else:
1089             self.tableWidget.setRowCount(0)
1090             self.tableWidget.setColumnCount(0)
1091     def exactquery(self):
1092         bookname = self.lineEdit.text()
1093         bookid = self.lineEdit_2.text()
1094         Type =  self.lineEdit_3.text()
1095         money= self.lineEdit_4.text()
1096         if ok(money)==False:
1097             sjcount = cur.execute(
1098                 "SELECT * FROM 书籍信息 where Book_id='%s' and book_name='%s' and Type = '%s'" % (
1099                 bookid, bookname, Type))
1100         else:
1101             sjcount=cur.execute("SELECT * FROM 书籍信息 where Book_id='%s' and book_name='%s' and Type = '%s' and money='%f'" % (bookid,bookname,Type,float(money)))
1102         if sjcount!=0:
1103             data = cur.fetchall()
1104             row = len(data)
1105             vol = len(data[0])
1106             self.tableWidget.setRowCount(row)
1107             self.tableWidget.setColumnCount(vol)
1108             self.tableWidget.setHorizontalHeaderLabels(['书名', '索书号', '类型', '价格', '是否可借'])
1109             for i in range(row):
1110                 for j in range(vol):
1111                     temp_data = data[i][j]
1112                     data1 = QTableWidgetItem(str(temp_data))
1113                     self.tableWidget.setItem(i, j, data1)
1114         else:
1115             self.tableWidget.setRowCount(0)
1116             self.tableWidget.setColumnCount(0)
1117     def add(self):
1118         bookname = self.lineEdit.text()
1119         bookid = self.lineEdit_2.text()
1120         Type = self.lineEdit_3.text()
1121         money = self.lineEdit_4.text()
1122         count=cur.execute("SELECT * FROM 书籍信息 where book_id='%s';" % (bookid))
1123         if bookname!="" and bookid !="" and Type !="" and ok(money)==True and float(money)>=0 and count==0:
1124             cur.execute("insert into 书籍信息 values('%s','%s','%s','%s','可借')"%(bookname,bookid,Type,float(money)))
1125             conn.commit()
1126             tjsuccess.show()
1127         else:
1128             tjfail.show()
1129 
1130     def Delete(self):
1131         bookname = self.lineEdit.text()
1132         bookid = self.lineEdit_2.text()
1133         Type = self.lineEdit_3.text()
1134         money = self.lineEdit_4.text()
1135         if ok(money)==True:
1136             sjcount=cur.execute("SELECT * FROM 书籍信息 where Book_id='%s' or book_name='%s' or Type = '%s' or money='%f'" % (bookid,bookname,Type,float(money)))
1137             if sjcount == 1:
1138                 cur.execute("delete from 书籍信息 where Book_id='%s' or book_name='%s' or Type = '%s' or money='%f'" % (bookid,bookname,Type,float(money)))
1139                 conn.commit()
1140                 dzxxscsuccess.show()
1141             else:
1142                 dzxxscfail.show()
1143         else:
1144             dzxxscfail.show()
1145 class Ui_glyxgmm(QtWidgets.QDialog, Ui_32):
1146     def __init__(self):
1147         super(Ui_glyxgmm, self).__init__()
1148         self.setupUi(self)
1149     def Clean(self):
1150         self.lineEdit.setText("")
1151         self.lineEdit_2.setText("")
1152     def xgmm(self):
1153         global glyid
1154         firstpw = self.lineEdit.text()
1155         secondpw = self.lineEdit_2.text()
1156         if firstpw != "" and secondpw != "":
1157             if firstpw == secondpw and firstpw!="":
1158                 cur.execute("update 管理员 set password = ('%s') where admin_id='%s'" % (firstpw, glyid))
1159                 conn.commit()
1160                 self.lineEdit.setText("")
1161                 self.lineEdit_2.setText("")
1162                 xgmmsuccessful.show()
1163             else:
1164                 xgmmfail.show()
1165 
1166 class Ui_dzxxscsuccess(QtWidgets.QDialog, Ui_33):
1167     def __init__(self):
1168         super(Ui_dzxxscsuccess, self).__init__()
1169         self.setupUi(self)
1170 
1171 class Ui_dzxxscfail(QtWidgets.QDialog, Ui_34):
1172     def __init__(self):
1173         super(Ui_dzxxscfail, self).__init__()
1174         self.setupUi(self)
1175 
1176 class Ui_tjfail(QtWidgets.QDialog, Ui_35):
1177     def __init__(self):
1178         super(Ui_tjfail, self).__init__()
1179         self.setupUi(self)
1180 
1181 class Ui_tjsuccess(QtWidgets.QDialog, Ui_36):
1182     def __init__(self):
1183         super(Ui_tjsuccess, self).__init__()
1184         self.setupUi(self)
1185 
1186 class Ui_pcfail(QtWidgets.QDialog, Ui_37):
1187     def __init__(self):
1188         super(Ui_pcfail, self).__init__()
1189         self.setupUi(self)
1190 
1191 class Ui_cqpc(QtWidgets.QDialog, Ui_38):
1192     def __init__(self):
1193         super(Ui_cqpc, self).__init__()
1194         self.setupUi(self)
1195 
1196 class Ui_xjfail(QtWidgets.QDialog, Ui_39):
1197     def __init__(self):
1198         super(Ui_xjfail, self).__init__()
1199         self.setupUi(self)
1200 
1201 class Ui_xjcg(QtWidgets.QDialog, Ui_40):
1202     def __init__(self):
1203         super(Ui_xjcg, self).__init__()
1204         self.setupUi(self)
1205 
1206 class Ui_unexpected(QtWidgets.QDialog, Ui_41):
1207     def __init__(self):
1208         super(Ui_unexpected, self).__init__()
1209         self.setupUi(self)
1210     def Clean(self):
1211         self.lineEdit.setText("")
1212         self.lineEdit_2.setText("")
1213         self.lineEdit_3.setText("")
1214         self.lineEdit_4.setText("")
1215     def add(self):
1216         readername = self.lineEdit.text()
1217         readerid = self.lineEdit_2.text()
1218         bookid = self.lineEdit_3.text()
1219         money = self.lineEdit_4.text()
1220         reason = self.comboBox_2.currentText()
1221         readername = readername
1222         readerid = readerid
1223         bookid = bookid
1224         money = money
1225         reason = reason
1226         jscount = cur.execute(
1227             "SELECT * FROM 借书信息 where Book_id='%s' and reader_id='%s' and state='未归还'" % (bookid, readerid))
1228         now = QDateTime.currentDateTime()
1229         if ok(money)==True and jscount==1 and float(money)>=0:
1230             cur.execute(
1231                 "update 借书信息 set state=('%s') where Book_id='%s' and reader_id='%s' and state='未归还'" % (reason,bookid,readerid))
1232             conn.commit()
1233             cur.execute("update 书籍信息 set state=('%s') where Book_id='%s'" % (reason, bookid))
1234             conn.commit()
1235 
1236             cur.execute("select * from 赔偿信息")
1237             data1 = cur.fetchall()
1238             row1 = len(data1)
1239             row1 = row1 + 1
1240             cur.execute("select * from 书籍信息 where book_id='%s'"% (bookid))
1241             data1 = cur.fetchall()
1242 
1243             cur.execute("insert into 赔偿信息 values('%s','%s','%s','%s','%s','%s','%f','%s','未支付')" % (str(row1), readername, readerid, data1[0][0], bookid, reason, float(money), now.toString(Qt.ISODate)))
1244             conn.commit()
1245             cur.execute("update 读者信息 set number=(number-1) where reader_id = '%s'" % (readerid))
1246             conn.commit()
1247 
1248             tjsuccess.show()
1249         else:
1250             tjfail.show()
1251 
1252 if __name__ == "__main__":
1253 
1254     conn = pymysql.connect("localhost", "root", "1weiANRAN", "图书馆管理系统")
1255     cur = conn.cursor()
1256 
1257     app = QtWidgets.QApplication(sys.argv)
1258     lgin = First()
1259     dial = Ui_Dialog()
1260     dzd = Ui_dzdl()
1261     glyd = Ui_glydl()
1262     zc = Ui_zc()
1263     dzzc = Ui_dzzc()
1264     glyzc = Ui_glyzc()
1265     dzdlcw = Ui_dzdlcw()
1266     dzcz = Ui_dzcz()
1267     dzxxcx = Ui_dzxxcx()
1268     dzxgmm = Ui_dzxgmm()
1269     xgmmsuccessful = Ui_xgmmsuccessful()
1270     xgmmfail = Ui_xgmmfail()
1271     dzjs = Ui_dzjs()
1272     jsxxcx = Ui_jsxxcx()
1273     hsxxcx = Ui_hsxxcx()
1274     dzzcsuccess = Ui_dzzcsuccess()
1275     dzzcfail = Ui_dzzcfail()
1276     glycz = Ui_glycz()
1277     jssuccess = Ui_jssuccess()
1278     jsfail = Ui_jsfail()
1279     hssuccess =Ui_hssuccess()
1280     hsfail = Ui_hsfail()
1281     pccz = Ui_pccz()
1282     wxzfhhh = Ui_wxzfhhh()
1283     glyxgmm = Ui_glyxgmm()
1284     glydzxxcz = Ui_glydzxxcz()
1285     glyhsxxcz = Ui_glyhsxxcz()
1286     glyjsxxcz = Ui_glyjsxxcz()
1287     glypcxxcz = Ui_glypcxxcz()
1288     glysjcz = Ui_glysjcz()
1289     dzxxscsuccess = Ui_dzxxscsuccess()
1290     dzxxscfail = Ui_dzxxscfail()
1291     tjfail = Ui_tjfail()
1292     tjsuccess = Ui_tjsuccess()
1293     pcfail = Ui_pcfail()
1294     cqpc = Ui_cqpc()
1295     xjfail = Ui_xjfail()
1296     xjcg = Ui_xjcg()
1297     unexpected = Ui_unexpected()
1298 
1299     lgin.show()
1300     lgin.pushButton.clicked.connect(lgin.hide)
1301     lgin.pushButton.clicked.connect(dial.show)#登录按钮
1302 
1303     lgin.pushButton_2.clicked.connect(lgin.hide)
1304     lgin.pushButton_2.clicked.connect(zc.show)#注册按钮
1305 
1306     dial.pushButton_3.clicked.connect(dial.hide)
1307     dial.pushButton_3.clicked.connect(lgin.show)#从登录选择界面返回登录首界面
1308 
1309     dial.pushButton.clicked.connect(dial.hide)
1310     dial.pushButton.clicked.connect(dzd.show)#进入读者登陆界面
1311 
1312     dzd.pushButton_2.clicked.connect(dzd.Clean)
1313     dzd.pushButton_2.clicked.connect(dzd.hide)
1314     dzd.pushButton_2.clicked.connect(dial.show)#返回登录选择界面
1315 
1316     dzd.pushButton_3.clicked.connect(dzd.get_word)#调用get_word函数
1317 
1318     dial.pushButton_2.clicked.connect(dial.hide)
1319     dial.pushButton_2.clicked.connect(glyd.show)#进入管理员登陆界面
1320 
1321     glyd.pushButton_2.clicked.connect(glyd.hide)
1322     glyd.pushButton_2.clicked.connect(dial.show)#从管理员登陆界面返回登录选择界面
1323 
1324     zc.pushButton_3.clicked.connect(zc.hide)
1325     zc.pushButton_3.clicked.connect(lgin.show)#从注册选择界面返回登录首界面
1326 
1327     zc.pushButton.clicked.connect(zc.hide)
1328     zc.pushButton.clicked.connect(dzzc.show)#从注册选择界面进入读者注册界面
1329 
1330     dzzc.pushButton_3.clicked.connect(dzzc.get_word)  # 调用get_word函数
1331 
1332     dzzc.pushButton.clicked.connect(dzzc.Clean)  # 调用Clean函数
1333 
1334     glyzc.pushButton.clicked.connect(glyzc.get_word)  # 调用get_word函数
1335 
1336     glyzc.pushButton_2.clicked.connect(glyzc.Clean) # 调用Clean函数
1337 
1338     glyd.pushButton.clicked.connect(glyd.get_word)  # 调用get_word函数
1339 
1340     dzzc.pushButton.clicked.connect(dzzc.hide)
1341     dzzc.pushButton.clicked.connect(zc.show)#从读者注册界面返回注册选择界面
1342 
1343     zc.pushButton_2.clicked.connect(zc.hide)
1344     zc.pushButton_2.clicked.connect(glyzc.show)  # 从注册选择界面进入管理员注册界面
1345 
1346     glyzc.pushButton_2.clicked.connect(glyzc.hide)
1347     glyzc.pushButton_2.clicked.connect(zc.show)  # 从管理员注册界面返回注册选择界面
1348     sys.exit(app.exec_())
原文地址:https://www.cnblogs.com/war1111/p/12031230.html