import sys from PyQt5.QtWidgets import QApplication,QMainWindow,QMessageBox import pymysql from PyQt5.Qt import * from PyQt5.QtCore import Qt localConfig = { 'host': 'localhost', 'port': 3306, 'user': 'root', 'passwd': '92183ttnn', 'db': 'dbdesign', 'charset': 'utf8', 'cursorclass' : pymysql.cursors.DictCursor # 数据库操纵指针 }#数据库配置连接 import xlwt import matplotlib matplotlib.use("Qt5Agg") # 声明使用QT5 from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.figure import Figure import datetime import os sys.path.append('D:\mysql\bin') from PyQt5 import QtCore, QtGui, QtWidgets import time from ui.ModifyPwd import Ui_MpwdWindow from ui.report import Ui_ReportWindow from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import QMainWindow,QMessageBox,QTableWidgetItem,QVBoxLayout, QLabel,QPushButton from ui.staff import Ui_StaffWindow from ui.room import Ui_RoomWindow # from dao.dbOpRoom import Room import datetime localConfig = { 'host': 'localhost', 'port': 3306, 'user': 'root', 'passwd': '92183ttnn', 'db': 'dbdesign', 'charset': 'utf8', 'cursorclass' : pymysql.cursors.DictCursor # 数据库操纵指针 }#数据库配置连接 def _initStaff(): global staff staff = Staff() return staff def get_staff():#员工账户 global staff return staff class Staff: """ 员工操作类 """ def __init__(self, config=localConfig): self.db = pymysql.connect(host=config['host'],port=config['port'],user=config['user'], passwd=config['passwd'],db=config['db'],charset=config['charset'], cursorclass=config['cursorclass']) self.cursor = self.db.cursor() self.cursor.execute("SELECT VERSION()") data = self.cursor.fetchone() print("Database version : %s " % data['VERSION()']) self.username = None self.password = None self.srole = None self.sid = None self.sname = None self.ssex = None self.stime = None self.sidcard = None self.sphone = None def userLogin(self, username, password): try: self.cursor.execute("select * from staff") data = self.cursor.fetchall() for row in data: if row['susername'] == username and row['spassword'] == password: self.username = username self.password = password self.sid = row['sid'] self.sname = row['sname'] self.ssex = row['ssex'] self.stime = row['stime'] self.srole = row['srole'] self.sidcard = row['sidcard'] self.sphone = row['sphone'] return row['srole'] except Exception as e: print(e) return False def modifyPasswd(self, sid, newPasswd, oldPasswd): try: self.cursor.execute("select * from staff where sid=%s ", (sid)) data = self.cursor.fetchall()[0] if data['spassword'] == oldPasswd: self.cursor.execute("update staff set spassword=%s where sid=%s ",(newPasswd, sid)) self.db.commit() self.password = newPasswd print("ok") return True else: print("no") return False except Exception as e: print(e) return False def addStaff(self,sid,sname,ssex,stime,susername,spassword,srole,sidcard,sphone): try: self.cursor.execute("insert into staff values(%s,%s,%s,%s,%s,%s,%s,%s,%s)",(sid,sname,ssex,stime,susername,spassword,srole,sidcard,sphone)) self.db.commit() return True except Exception as e: print(e) QMessageBox().information(None, "提示", "该员工已存在!", QMessageBox.Yes) return False def showAllStaff(self,sname): try: self.cursor.execute("select * from staff where sname like %s",(sname)) data = self.cursor.fetchall() return data except Exception as e: print(e) return False def deleteStaff(self,sid,sname,sidcard): try: self.cursor.execute("delete from staff where sid=%s and sname=%s and sidcard=%s",(sid,sname,sidcard)) self.db.commit() return True except Exception as e: print(e) QMessageBox().information(None, "提示", "没有相关员工信息!", QMessageBox.Yes) return False def delStaff(self,sid): try: self.cursor.execute("delete from staff where sid=%s",(sid)) self.db.commit() return True except Exception as e: print(e) return False def modifyStaff(self, row, column, value): SQL_COLUMN = ['sid','sname','ssex','stime','susername','spassword','srole','sidcard','sphone'] try: self.cursor.execute("select * from staff") data = self.cursor.fetchall() rid_selected = data[row]['rid'] sql = "update room set " + SQL_COLUMN[column] + "='" + value + "'where rid='" + rid_selected +"'" self.cursor.execute(sql) self.db.commit() return True except Exception as e: print(e) return False class Room: """客房信息操作类""" def __init__(self,config=localConfig): self.db = pymysql.connect(host=config['host'],port=config['port'],user=config['user'], passwd=config['passwd'],db=config['db'],charset=config['charset'], cursorclass=config['cursorclass']) self.cursor = self.db.cursor() self.cursor.execute("SELECT VERSION()") data = self.cursor.fetchone() print("Database version : %s " % data['VERSION()']) self.staff = get_staff() def showAllRoom(self): self.cursor.execute("select * from room") data = self.cursor.fetchall() return data def showRoom(self,rtype,rstate,rstorey,rstarttime,rendtime,price_bottom,price_up): """根据条件检索房间""" print(rstarttime, rendtime) if rstate == 0: self.cursor.execute("select * from room where rtype like %s and rstorey like %s and rprice between %s and %s", (rtype,rstorey,int(price_bottom),int(price_up))) data1 = self.cursor.fetchall() return data1 elif rstate == 1: self.cursor.execute( "select rid from room where rtype like %s and rstorey like %s and rprice between %s and %s", (rtype, rstorey, int(price_bottom), int(price_up))) data = self.cursor.fetchall() list_data = [] for i in range(len(data)): crid = data[i]['rid'] self.cursor.execute( "select * from checkin_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)" , (crid, rstarttime, rstarttime, rendtime, rendtime, rstarttime, rendtime,rstarttime,rendtime)) data1 = self.cursor.fetchall() self.cursor.execute( "select * from checkin_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)" , (crid, rstarttime, rstarttime, rendtime, rendtime, rstarttime, rendtime,rstarttime,rendtime)) data2 = self.cursor.fetchall() self.cursor.execute( "select * from booking_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)" , (crid, rstarttime, rstarttime, rendtime, rendtime, rstarttime, rendtime,rstarttime,rendtime)) data3 = self.cursor.fetchall() self.cursor.execute( "select * from booking_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)" , (crid, rstarttime, rstarttime, rendtime, rendtime, rstarttime, rendtime,rstarttime,rendtime)) data4 = self.cursor.fetchall() if data1 == () and data2 == () and data3 == () and data4 == (): list_data.append(crid) ret = [] for i in range(len(list_data)): rid_ret = list_data[i] self.cursor.execute("select * from room where rid=%s",(rid_ret)) ret = ret + self.cursor.fetchall() return ret def addRoom(self,rid,rtype,rstorey,rprice,rdesc,rpic): """增加房间""" try: self.cursor.execute("insert into room values(%s,%s,%s,%s,%s,%s)",(rid,rtype,rstorey,rprice,rdesc,rpic)) self.db.commit() return True except Exception as e: print(e) QMessageBox().information(None, "提示", "房间号已存在!", QMessageBox.Yes) return False def delRoom(self,rid): """表格上直接删除""" try: self.cursor.execute("delete from room where rid=%s",(rid)) self.db.commit() return True except Exception as e: print(e) return False def modifyRoom(self, row, column, value): """表格上直接修改""" # 字典方法得到要修改的列 SQL_COLUMN = ['rid','rtype','rstorey','rprice','rdesc'] try: self.cursor.execute("select * from room") data = self.cursor.fetchall() rid_selected = data[row]['rid'] sql = "update room set " + SQL_COLUMN[column] + "='" + value + "'where rid='" + rid_selected +"'" self.cursor.execute(sql) self.db.commit() return True except Exception as e: print(e) return False def singleCheckinDB(self,cname,cid,cphone,cage,csex,crid,cendtime,remark): """个人入住""" # 查询预定表和入住表,判断该房间是否能租出去 starttime = datetime.date.today() self.cursor.execute("select * from checkin_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)" ,(crid,starttime,starttime,cendtime,cendtime,starttime,cendtime,starttime,cendtime)) data1 = self.cursor.fetchall() self.cursor.execute("select * from checkin_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)" , (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime,starttime,cendtime)) data2 = self.cursor.fetchall() self.cursor.execute("select * from booking_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)" , (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime,starttime,cendtime)) data3 = self.cursor.fetchall() self.cursor.execute("select * from booking_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)" , (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime,starttime,cendtime)) data4 = self.cursor.fetchall() if data1 != () or data2 != () or data3 != () or data4 != (): QMessageBox().information(None, "提示", "该时间段对应房间被占用(入住/预约)!", QMessageBox.Yes) return False self.cursor.execute("select * from client where cid=%s",(cid)) data = self.cursor.fetchall() if data == (): self.cursor.execute("insert into client(cname,cid,cphone,cage,csex,register_sid,accomodation_times) " "values(%s,%s,%s,%s,%s,%s,%s)",(cname,cid,cphone,cage,csex,self.staff.sid,0)) self.cursor.execute("select * from room where rid=%s",(crid)) data = self.cursor.fetchall() if data == (): QMessageBox().information(None, "提示", "没有对应房间号!", QMessageBox.Yes) return False perPrice = data[0]['rprice'] totalPrice = int(perPrice) * int((cendtime-starttime).days) try: self.cursor.execute("insert into checkin_client values(%s,%s,%s,%s,%s,%s,%s)", (crid,cid,starttime,cendtime,totalPrice,self.staff.sid,remark)) self.db.commit() return True except Exception as e: print(e) QMessageBox().information(None, "提示", "相关客户已入住,请勿重复插入", QMessageBox.Yes) return False def teamCheckinDB(self,tname,tid,tphone,ttrid,tendtime,tremark): """团体入住""" tstarttime = datetime.date.today() for trid in re.split(',|,| ', ttrid): print(trid) self.cursor.execute( "select * from checkin_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<=%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)" , (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime)) data1 = self.cursor.fetchall() print(data1) self.cursor.execute("select * from checkin_team as A where (A.rid=%s) and ((A.end_time>%s and A.start_time<%s) " "or (A.end_time>%s and A.start_time<%s) or (A.start_time<=%s and A.end_time>=%s) or (A.start_time>=%s and A.end_time<=%s))" , (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime)) data2 = self.cursor.fetchall() print(data2) self.cursor.execute( "select * from booking_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>=%s or A.start_time>=%s and A.end_time<=%s)" , (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime)) data3 = self.cursor.fetchall() print(data3) self.cursor.execute("select * from booking_team as A where (A.rid=%s) and ((A.end_time>%s and A.start_time<%s) " "or (A.end_time>%s and A.start_time<%s) or (A.start_time<=%s and A.end_time>=%s) or (A.start_time>=%s and A.end_time<=%s))" , (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime)) data4 = self.cursor.fetchall() print(data4) if data1 != () or data2 != () or data3 != () or data4 != (): QMessageBox().information(None, "提示", "该时间段对应房间被占用(入住/预约)!", QMessageBox.Yes) return False try: for i in re.split(',|,| ', ttrid): self.cursor.execute("select * from team where tid=%s", (tid)) data = self.cursor.fetchall() if data == (): self.cursor.execute("insert into team(tname,tid,tphone,check_in_sid,accomodation_times) values(%s,%s,%s,%s,%s)", (tname, tid, tphone, self.staff.sid, 0)) self.cursor.execute("select * from room where rid=%s",(i)) perPrice = self.cursor.fetchall()[0]['rprice'] starttime = datetime.date.today() totalPrice = int(perPrice) * int((tendtime - starttime).days) self.cursor.execute("insert into checkin_team values(%s,%s,%s,%s,%s,%s,%s)", (i, tid, starttime, tendtime, totalPrice, self.staff.sid, tremark)) self.db.commit() return True except Exception as e: print(e) return False def reserveToCheckinC(self,cid,rid): """个人预约订单入住""" # 先查找预约表 starttime = datetime.date.today() self.cursor.execute("select * from booking_client where cid=%s and rid=%s and start_time=%s",(cid,rid,starttime)) data = self.cursor.fetchall() if data == (): QMessageBox().information(None, "提示", "没有对应预约或者预约入住时间未到!", QMessageBox.Yes) return False # 再从预约表中获取相关信息 endtime = data[0]['end_time'] remark = data[0]['remark'] # 下面计算房价 self.cursor.execute("select * from room where rid=%s",(rid)) data = self.cursor.fetchall() if data == (): QMessageBox().information(None, "提示", "没有对应房间号!", QMessageBox.Yes) return False perPrice = data[0]['rprice'] totalPrice = int(perPrice) * int((endtime-starttime).days) try: self.cursor.execute("insert into checkin_client values(%s,%s,%s,%s,%s,%s,%s)", (rid,cid,starttime,endtime,totalPrice,self.staff.sid,remark)) self.cursor.execute("delete from booking_client where cid=%s and rid=%s and start_time=%s",(cid,rid,starttime)) self.db.commit() return True except Exception as e: print(e) return False def reserveToCheckinT(self,tid,rrid): """团队预定入住""" starttime = datetime.date.today() for rid in re.split(',|,| ', rrid): print(rid) self.cursor.execute("select * from booking_team where tid=%s and rid=%s and start_time=%s", (tid, rid, starttime)) data = self.cursor.fetchall() print(data) if data == (): QMessageBox().information(None, "提示", "%s房间没有对应预约或者预约入住时间未到!"%rid, QMessageBox.Yes) return False # 再从预约表中获取相关信息 endtime = data[0]['end_time'] remark = data[0]['remark'] # 下面计算房价 self.cursor.execute("select * from room where rid=%s", (rid)) data = self.cursor.fetchall() if data == (): QMessageBox().information(None, "提示", "没有%s房间号!"%rid, QMessageBox.Yes) return False perPrice = data[0]['rprice'] totalPrice = int(perPrice) * int((endtime - starttime).days) try: self.cursor.execute("insert into checkin_team values(%s,%s,%s,%s,%s,%s,%s)", (rid, tid, starttime, endtime, totalPrice, self.staff.sid, remark)) self.cursor.execute("delete from booking_team where tid=%s and rid=%s and start_time=%s", (tid, rid, starttime)) self.db.commit() except Exception as e: print(e) return False return True def reserveCDB(self,cname,cid,cphone,cage,csex,crid,cstarttime,cendtime,cremark): """个人预约""" starttime = datetime.date.today() self.cursor.execute("select * from checkin_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)" , (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime, starttime, cendtime)) data1 = self.cursor.fetchall() self.cursor.execute("select * from checkin_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)" , (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime, starttime, cendtime)) data2 = self.cursor.fetchall() self.cursor.execute("select * from booking_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)" , (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime, starttime, cendtime)) data3 = self.cursor.fetchall() self.cursor.execute("select * from booking_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)" , (crid, starttime, starttime, cendtime, cendtime, starttime, cendtime, starttime, cendtime)) data4 = self.cursor.fetchall() if data1 != () or data2 != () or data3 != () or data4 != (): QMessageBox().information(None, "提示", "该时间段对应房间被占用(入住/预约)!", QMessageBox.Yes) return False self.cursor.execute("select * from client where cid=%s",(cid)) data = self.cursor.fetchall() if data == (): self.cursor.execute( "insert into client(cname,cid,cphone,cage,csex,register_sid,accomodation_times) values(%s,%s,%s,%s,%s,%s,%s)", (cname, cid, cphone, cage, csex, self.staff.sid, 0)) try: self.cursor.execute("insert into booking_client(cid,rid,start_time,end_time,remark) values(%s,%s,%s,%s,%s)", (cid,crid,cstarttime,cendtime,cremark)) self.db.commit() return True except Exception as e: print(e) QMessageBox().information(None, "提示", "相关预约信息已存在!", QMessageBox.Yes) return False def reserveTDB(self,tname,tid,tphone,ttrid,tstarttime,tendtime,tremark): """团体预约""" for trid in re.split(',|,| ', ttrid): self.cursor.execute( "select * from checkin_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)" , (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime)) data1 = self.cursor.fetchall() self.cursor.execute("select * from checkin_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)" , (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime)) data2 = self.cursor.fetchall() self.cursor.execute( "select * from booking_client as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)" , (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime)) data3 = self.cursor.fetchall() self.cursor.execute("select * from booking_team as A where (A.rid=%s) and (A.end_time>%s and A.start_time<%s " "or A.end_time>%s and A.start_time<%s or A.start_time<=%s and A.end_time>%s or A.start_time>=%s and A.end_time<=%s)" , (trid, tstarttime, tstarttime, tendtime, tendtime, tstarttime, tendtime, tstarttime, tendtime)) data4 = self.cursor.fetchall() if data1 != () or data2 != () or data3 != () or data4 != (): QMessageBox().information(None, "提示", "该时间段对应房间被占用(入住/预约)!", QMessageBox.Yes) return False self.cursor.execute("select * from team where tid=%s", (tid)) data = self.cursor.fetchall() if data == (): self.cursor.execute( "insert into team(tname,tid,tphone,check_in_sid,accomodation_times) values(%s,%s,%s,%s,%s)", (tname, tid, tphone, self.staff.sid, 0)) try: self.cursor.execute("insert into booking_team(tid,rid,start_time,end_time,remark) values(%s,%s,%s,%s,%s)", (tid, trid, tstarttime, tendtime, tremark)) self.db.commit() except Exception as e: print(e) QMessageBox().information(None, "提示", "相关预约信息已存在!", QMessageBox.Yes) return False return True def cancelReserveCDB(self,cancel_cid,cancel_rid): """个人取消预约""" self.cursor.execute("select * from booking_client where cid=%s and rid=%s",(cancel_cid,cancel_rid)) if self.cursor.fetchall() == (): QMessageBox().information(None, "提示", "没有相关预约信息!", QMessageBox.Yes) return False try: self.cursor.execute("delete from booking_client where cid=%s and rid=%s",(cancel_cid,cancel_rid)) self.db.commit() return True except Exception as e: print(e) QMessageBox().information(None, "提示", "没有相关预约信息!", QMessageBox.Yes) return False def cancelReserveTDB(self,cancel_tid,cancel_rid): """团体取消预约""" try: for r in re.split(',|,| ', cancel_rid): self.cursor.execute("select * from booking_team where tid=%s and rid=%s", (cancel_tid, r)) if self.cursor.fetchall() == (): QMessageBox().information(None, "提示", "%s房间没有预约!"%r, QMessageBox.Yes) return False self.cursor.execute("delete from booking_team where tid=%s and rid=%s",(cancel_tid,r)) self.db.commit() return True except Exception as e: print(e) return False def checkoutDB(self,flag, id,rid,payType,remark): """两种方式退房""" try: if flag == '个人': self.cursor.execute("select * from checkin_client where rid=%s and cid=%s",(rid,id)) data = self.cursor.fetchall() if data == (): QMessageBox().information(None, "提示", "没有相关入住信息!", QMessageBox.Yes) return False else: rid_out = data[0]['rid'] cid_out = data[0]['cid'] stime_out = data[0]['start_time'] etime_out = data[0]['end_time'] money = data[0]['total_price'] self.cursor.execute("insert into hotelorder(id,ordertype,start_time,end_time,rid,pay_type,money,remark,register_sid) values(%s,%s,%s,%s,%s,%s,%s,%s,%s)", (cid_out,flag,stime_out,etime_out,rid_out,payType,money,remark,self.staff.sid)) self.cursor.execute("delete from checkin_client where rid=%s and cid=%s",(rid_out,cid_out)) self.db.commit() QMessageBox().information(None, "提示", "本次需要支付%s" %money, QMessageBox.Yes) elif flag == '团队': sum = 0 for r in re.split(',|,| ',rid): self.cursor.execute( "select * from checkin_team where rid=%s and tid=%s", (r, id)) data = self.cursor.fetchall() if data == (): QMessageBox().information(None, "提示", "没有相关入住信息!", QMessageBox.Yes) return False else: rid_out = data[0]['rid'] tid_out = data[0]['tid'] stime_out = data[0]['start_time'] etime_out = data[0]['end_time'] money = data[0]['total_price'] self.cursor.execute( "insert into hotelorder(id,ordertype,start_time,end_time,rid,pay_type,money,remark,register_sid) values(%s,%s,%s,%s,%s,%s,%s,%s,%s)" , (tid_out, flag, stime_out, etime_out, rid_out, payType, money, remark,self.staff.sid)) self.cursor.execute("delete from checkin_team where rid=%s and tid=%s", (rid_out, tid_out)) self.db.commit() sum = sum + int(money) QMessageBox().information(None, "提示", "本次需要支付%s" %str(sum), QMessageBox.Yes) return True except Exception as e: print(e) return False class Chart: def __init__(self,config=localConfig): self.db = pymysql.connect(host=config['host'], port=config['port'], user=config['user'], passwd=config['passwd'], db=config['db'], charset=config['charset'], cursorclass=config['cursorclass']) self.cursor = self.db.cursor() self.cursor.execute("SELECT VERSION()") data = self.cursor.fetchone() print("Database version : %s " % data['VERSION()']) def toExcel(self,path, table_name): """ 导出到excel表 """ sql = "select * from " + table_name self.cursor.execute(sql) path = str(path) fields = [field[0] for field in self.cursor.description] all_data = self.cursor.fetchall() # 写入excel book = xlwt.Workbook() sheet = book.add_sheet('sheet1') for col, field in enumerate(fields): sheet.write(0, col, field) row = 1 for i in range(len(all_data)): data = all_data[i].values() for col, field in enumerate(data): sheet.write(row, col, field) row += 1 book.save(path+"/%s.xls" % table_name) def getRevenue(self): """ 获取营业额 """ list_revenue = [] list_date = [] for i in range(7): data = () sum = 0 delta = datetime.timedelta(days=i) date = datetime.date.today() date_selected = date - delta str_date = str(date_selected) list_date.append(str_date[5:]) self.cursor.execute("select money from hotelorder where end_time=%s",(date_selected)) data = self.cursor.fetchall() if data != (): for i in range(len(data)): sum = sum + int(data[i]['money']) list_revenue.append(sum) print(list_revenue) print(list_date) list_date.reverse() return list_date, list_revenue def getOccupy(self): """ 获取入住率/出租率 """ list_occupy = [] list_date = [] self.cursor.execute("select count(*) from room") totalRoomCount = self.cursor.fetchall()[0]['count(*)'] print(totalRoomCount) for i in range(7): data = () occupyRate = 0.0 delta = datetime.timedelta(days=i) date = datetime.date.today() date_selected = date - delta str_date = str(date_selected) list_date.append(str_date[5:]) self.cursor.execute("select distinct rid from hotelorder where end_time>=%s and start_time<=%s", (date_selected,date_selected)) data = self.cursor.fetchall() print(data) if data != (): occupyRate = float(len(data) / totalRoomCount) list_occupy.append(occupyRate) print(list_occupy) list_date.reverse() return list_date, list_occupy def getClientStatics(self): """ 获取客户相关数据 """ list_clientStatics = [] self.cursor.execute("select * from hotelorder where ordertype='个人'") num_client = len(self.cursor.fetchall()) self.cursor.execute("select distinct id from hotelorder where ordertype='团队'") num_team = len(self.cursor.fetchall()) list_ret = [] list_ret.append(num_client) list_ret.append(num_team) return list_ret def getStaffStatics(self): """ 获取员工相关数据 """ self.cursor.execute("select register_sid,count(*) from hotelorder group by register_sid") data = self.cursor.fetchall() list_clientNum = [] list_clientSta = [] for i in range(len(data)): list_clientNum.append(data[i]['register_sid']) list_clientSta.append(data[i]['count(*)']) print(list_clientNum) print(list_clientSta) return list_clientNum, list_clientSta class Figure_Canvas(FigureCanvas): def __init__(self, width=5, height=4, dpi=100): self.fig = Figure(figsize=(width, height), dpi=dpi) # 在父类中激活Figure窗口 super(Figure_Canvas, self).__init__(self.fig) # 第三步:创建一个子图,用于绘制图形用,111表示子图编号 self.axes = self.fig.add_subplot(111) class Ui_LoginWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("同福客栈") MainWindow.resize(800, 600) font = QtGui.QFont() font.setFamily("Century Gothic") font.setPointSize(-1) MainWindow.setFont(font) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("../../../../../../../../pictures/酒店.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) MainWindow.setWindowIcon(icon) MainWindow.setStyleSheet("\n" "*{\n" "font-size:24px;\n" "font-family:Century Gothic;\n" "}\n" "QFrame{\n" "background:rgba(0,0,0,0.8);\n" "border-radius:15px;\n" "}\n" "#centralwidget{\n" "border-image:url(D:/pictures/login4.jpg) strectch;\n" "}\n" "\n" "#toolButton{\n" "background:red;\n" "border-radius:60px;\n" "}\n" "QLabel{\n" "color:white;\n" "background:transparent;\n" "}\n" "QPushButton{\n" "background:red;;\n" "border-radius:15px;\n" "}\n" "QPushButton:hover{\n" "background:#333;\n" "border-radius:15px;\n" "background:#49ebff;\n" "}\n" "QLineEdit{\n" "background:transparent;\n" "border:none;\n" "color:#717072;\n" "border-bottom:1px solid #717072;\n" "}") self.centralwidget = QtWidgets.QWidget(MainWindow) font = QtGui.QFont() font.setFamily("Century Gothic") font.setPointSize(-1) self.centralwidget.setFont(font) self.centralwidget.setFocusPolicy(QtCore.Qt.WheelFocus) self.centralwidget.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) self.centralwidget.setObjectName("centralwidget") self.frame = QtWidgets.QFrame(self.centralwidget) self.frame.setGeometry(QtCore.QRect(140, 80, 491, 461)) font = QtGui.QFont() font.setFamily("Century Gothic") font.setPointSize(-1) self.frame.setFont(font) self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame.setFrameShadow(QtWidgets.QFrame.Raised) self.frame.setObjectName("frame") self.label = QtWidgets.QLabel(self.frame) self.label.setGeometry(QtCore.QRect(180, 70, 151, 41)) font = QtGui.QFont() font.setFamily("Century Gothic") font.setPointSize(-1) self.label.setFont(font) self.label.setObjectName("label") self.lineEdit_user = QtWidgets.QLineEdit(self.frame) self.lineEdit_user.setGeometry(QtCore.QRect(70, 160, 361, 31)) self.lineEdit_user.setText("") self.lineEdit_user.setObjectName("lineEdit_user") self.lineEdit_password = QtWidgets.QLineEdit(self.frame) self.lineEdit_password.setGeometry(QtCore.QRect(70, 260, 361, 31)) font = QtGui.QFont() font.setFamily("Century Gothic") font.setPointSize(-1) self.lineEdit_password.setFont(font) self.lineEdit_password.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) self.lineEdit_password.setLocale(QtCore.QLocale(QtCore.QLocale.Chinese, QtCore.QLocale.China)) self.lineEdit_password.setText("") self.lineEdit_password.setEchoMode(QtWidgets.QLineEdit.Password) self.lineEdit_password.setObjectName("lineEdit_password") self.pushButton = QtWidgets.QPushButton(self.frame) self.pushButton.setGeometry(QtCore.QRect(30, 370, 421, 51)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(81, 182, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush) brush = QtGui.QBrush(QtGui.QColor(81, 182, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(81, 182, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(81, 182, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush) brush = QtGui.QBrush(QtGui.QColor(81, 182, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(81, 182, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(81, 182, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush) brush = QtGui.QBrush(QtGui.QColor(81, 182, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(81, 182, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush) self.pushButton.setPalette(palette) self.pushButton.setStyleSheet("background-color: rgb(81, 182, 255);\n" "QPalette pal = startBtn.palette(); \n" "pal.setColor(QPalette::ButtonText, Qt::red);\n" "startBtn.setPalette(pal); \n" "startBtn.setStyleSheet(\"background-color:green\"); ") self.pushButton.setObjectName("pushButton") self.label_2 = QtWidgets.QLabel(self.frame) self.label_2.setGeometry(QtCore.QRect(70, 120, 121, 31)) font = QtGui.QFont() font.setFamily("Century Gothic") font.setPointSize(-1) self.label_2.setFont(font) self.label_2.setObjectName("label_2") self.label_3 = QtWidgets.QLabel(self.frame) self.label_3.setGeometry(QtCore.QRect(70, 220, 121, 31)) self.label_3.setObjectName("label_3") self.toolButton = QtWidgets.QToolButton(self.centralwidget) self.toolButton.setGeometry(QtCore.QRect(330, 20, 121, 121)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(116, 197, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush) brush = QtGui.QBrush(QtGui.QColor(116, 197, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(116, 197, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(116, 197, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush) brush = QtGui.QBrush(QtGui.QColor(116, 197, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(116, 197, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(116, 197, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush) brush = QtGui.QBrush(QtGui.QColor(116, 197, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(116, 197, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush) self.toolButton.setPalette(palette) self.toolButton.setStyleSheet("background-color: rgb(116, 197, 255);") self.toolButton.setLocale(QtCore.QLocale(QtCore.QLocale.Chinese, QtCore.QLocale.China)) self.toolButton.setText("") icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap("../../../../../../pictures/院徽.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.toolButton.setIcon(icon1) self.toolButton.setIconSize(QtCore.QSize(150, 150)) self.toolButton.setObjectName("toolButton") self.forgetPasswd = QtWidgets.QToolButton(self.centralwidget) self.forgetPasswd.setGeometry(QtCore.QRect(660, 560, 111, 31)) font = QtGui.QFont() font.setFamily("Century Gothic") font.setPointSize(-1) self.forgetPasswd.setFont(font) self.forgetPasswd.setStyleSheet("border:none;\n" "background:rgba(0,0,0,0.8)\n" "") self.forgetPasswd.setObjectName("forgetPasswd") self.label_4 = QtWidgets.QLabel(self.centralwidget) self.label_4.setGeometry(QtCore.QRect(660, 560, 121, 31)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(57, 209, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.LinkVisited, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(57, 209, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.LinkVisited, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(57, 209, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.LinkVisited, brush) self.label_4.setPalette(palette) self.label_4.setObjectName("label_4") MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "同福客栈")) self.label.setText(_translate("MainWindow", "Now Login!")) self.lineEdit_user.setPlaceholderText(_translate("MainWindow", "username")) self.lineEdit_password.setPlaceholderText(_translate("MainWindow", "password")) self.pushButton.setText(_translate("MainWindow", "登 录")) self.label_2.setText(_translate("MainWindow", "账户名")) self.label_3.setText(_translate("MainWindow", "密码")) self.forgetPasswd.setText(_translate("MainWindow", "忘记密码")) self.label_4.setText(_translate("MainWindow", "忘记密码?"))#登录页 class Ui_HomeWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("同福客栈") MainWindow.resize(800, 600) MainWindow.setContextMenuPolicy(QtCore.Qt.DefaultContextMenu) icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("../../../../../pictures/酒店.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) MainWindow.setWindowIcon(icon) MainWindow.setStyleSheet("QMainWindow{\n" "border-radius:15px\n" "}\n" "QWidget{\n" "border-radius:15px;\n" "}\n" "#frame{\n" "background: #e1e9ed;}\n" "QToolButton{\n" "background:#EAF7FF;\n" "border-radius:15px;\n" "}\n" "QToolButton:hover{\n" "background:#EAF7FF;\n" "border-radius:15px;\n" "background:#49ebff;\n" "}\n" "#label{\n" "text-align:center;\n" "}\n" "#welcome{\n" "text-align:center;\n" "}\n" "#toolButton_7\n" "{\n" "background:#e1e9ed;\n" "}") MainWindow.setTabShape(QtWidgets.QTabWidget.Rounded) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.chartbutton = QtWidgets.QToolButton(self.centralwidget) self.chartbutton.setGeometry(QtCore.QRect(530, 340, 200, 120)) self.chartbutton.setMinimumSize(QtCore.QSize(200, 120)) font = QtGui.QFont() font.setFamily("幼圆") font.setBold(True) font.setWeight(75) self.chartbutton.setFont(font) icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap("../../../../pictures/chart.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.chartbutton.setIcon(icon1) self.chartbutton.setIconSize(QtCore.QSize(70, 70)) self.chartbutton.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon) self.chartbutton.setObjectName("chartbutton") self.roombutton = QtWidgets.QToolButton(self.centralwidget) self.roombutton.setGeometry(QtCore.QRect(40, 340, 200, 120)) font = QtGui.QFont() font.setFamily("幼圆") font.setBold(True) font.setWeight(75) self.roombutton.setFont(font) icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap("../../../../pictures/coffee.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.roombutton.setIcon(icon2) self.roombutton.setIconSize(QtCore.QSize(80, 80)) self.roombutton.setPopupMode(QtWidgets.QToolButton.InstantPopup) self.roombutton.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon) self.roombutton.setObjectName("roombutton") self.staffbutton = QtWidgets.QToolButton(self.centralwidget) self.staffbutton.setGeometry(QtCore.QRect(290, 340, 200, 120)) font = QtGui.QFont() font.setFamily("幼圆") font.setBold(True) font.setWeight(75) self.staffbutton.setFont(font) icon3 = QtGui.QIcon() icon3.addPixmap(QtGui.QPixmap("../../../../pictures/staff.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.staffbutton.setIcon(icon3) self.staffbutton.setIconSize(QtCore.QSize(80, 80)) self.staffbutton.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon) self.staffbutton.setObjectName("staffbutton") self.frame = QtWidgets.QFrame(self.centralwidget) self.frame.setGeometry(QtCore.QRect(0, 0, 800, 180)) self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel) self.frame.setFrameShadow(QtWidgets.QFrame.Raised) self.frame.setObjectName("frame") self.welcome = QtWidgets.QLabel(self.frame) self.welcome.setGeometry(QtCore.QRect(40, 10, 751, 51)) font = QtGui.QFont() font.setFamily("幼圆") font.setPointSize(12) self.welcome.setFont(font) self.welcome.setText("") self.welcome.setAlignment(QtCore.Qt.AlignCenter) self.welcome.setObjectName("welcome") self.toolButton_7 = QtWidgets.QToolButton(self.frame) self.toolButton_7.setGeometry(QtCore.QRect(370, 70, 71, 71)) font = QtGui.QFont() font.setPointSize(9) self.toolButton_7.setFont(font) self.toolButton_7.setText("") icon4 = QtGui.QIcon() icon4.addPixmap(QtGui.QPixmap("../../../../pictures/hotel.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.toolButton_7.setIcon(icon4) self.toolButton_7.setIconSize(QtCore.QSize(100, 100)) self.toolButton_7.setObjectName("toolButton_7") self.modifyPwd = QtWidgets.QToolButton(self.frame) self.modifyPwd.setGeometry(QtCore.QRect(710, 150, 81, 21)) self.modifyPwd.setStyleSheet("background:#e1e9ed") self.modifyPwd.setObjectName("modifyPwd") self.label = QtWidgets.QLabel(self.centralwidget) self.label.setGeometry(QtCore.QRect(310, 540, 181, 41)) palette = QtGui.QPalette() brush = QtGui.QBrush(QtGui.QColor(195, 210, 217)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Button, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Light, brush) brush = QtGui.QBrush(QtGui.QColor(225, 232, 236)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Midlight, brush) brush = QtGui.QBrush(QtGui.QColor(97, 105, 108)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Dark, brush) brush = QtGui.QBrush(QtGui.QColor(130, 140, 145)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Mid, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Text, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.BrightText, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ButtonText, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.Shadow, brush) brush = QtGui.QBrush(QtGui.QColor(225, 232, 236)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.AlternateBase, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 220)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipBase, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.ToolTipText, brush) brush = QtGui.QBrush(QtGui.QColor(195, 210, 217)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Button, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Light, brush) brush = QtGui.QBrush(QtGui.QColor(225, 232, 236)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Midlight, brush) brush = QtGui.QBrush(QtGui.QColor(97, 105, 108)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Dark, brush) brush = QtGui.QBrush(QtGui.QColor(130, 140, 145)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Mid, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Text, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.BrightText, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ButtonText, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Shadow, brush) brush = QtGui.QBrush(QtGui.QColor(225, 232, 236)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.AlternateBase, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 220)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipBase, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.ToolTipText, brush) brush = QtGui.QBrush(QtGui.QColor(97, 105, 108)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Button, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Light, brush) brush = QtGui.QBrush(QtGui.QColor(225, 232, 236)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Midlight, brush) brush = QtGui.QBrush(QtGui.QColor(97, 105, 108)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Dark, brush) brush = QtGui.QBrush(QtGui.QColor(130, 140, 145)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Mid, brush) brush = QtGui.QBrush(QtGui.QColor(97, 105, 108)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Text, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.BrightText, brush) brush = QtGui.QBrush(QtGui.QColor(97, 105, 108)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Base, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 255)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Window, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.Shadow, brush) brush = QtGui.QBrush(QtGui.QColor(195, 210, 217)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.AlternateBase, brush) brush = QtGui.QBrush(QtGui.QColor(255, 255, 220)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipBase, brush) brush = QtGui.QBrush(QtGui.QColor(0, 0, 0)) brush.setStyle(QtCore.Qt.SolidPattern) palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.ToolTipText, brush) self.label.setPalette(palette) font = QtGui.QFont() font.setFamily("幼圆") self.label.setFont(font) self.label.setObjectName("label") MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "同福客栈")) self.chartbutton.setText(_translate("MainWindow", "维护与报表")) self.roombutton.setText(_translate("MainWindow", "客房管理")) self.staffbutton.setText(_translate("MainWindow", "员工管理")) self.modifyPwd.setText(_translate("MainWindow", "修改密码")) self.label.setText(_translate("MainWindow", "酒店管理系统")) class LoginPage(QMainWindow, Ui_LoginWindow):#将其设置为 main control 页面跳转 def __init__(self, parent=None): super(LoginPage, self).__init__(parent) self.setupUi(self) self.pushButton.clicked.connect(self.display) self.forgetPasswd.clicked.connect(self.forgetPwd) def display(self): username = self.lineEdit_user.text() password = self.lineEdit_password.text() global staff staff = _initStaff() role = staff.userLogin(username,password) # 登录成功,返回权限,1为前台,2为管理员 if role: # from mainControl import Homepage self.Mainwindow = HomePage() self.close() self.Mainwindow.show() else: QMessageBox().information(None, "提示", "账号或密码错误!", QMessageBox.Yes) def forgetPwd(self): from service.forgetPwd import fpWindow self.fpWindow = fpWindow() self.close() self.fpWindow.show() class HomePage(QMainWindow, Ui_HomeWindow): def __init__(self,parent=None): """ 传入staff全局变量 :param parent: """ super(HomePage, self).__init__(parent) self.setupUi(self) self.staff = get_staff() print(self.staff.sname[0]) self.welcome.setText(self.staff.sname + ',你好。你的权限为:' + self.staff.srole + '。今天是' + time.strftime("%Y-%m-%d", time.localtime())) self.staffbutton.clicked.connect(self.gotoStaff) self.roombutton.clicked.connect(self.gotoRoom) # self.clientbutton.clicked.connect(self.gotoClient) # self.orderbutton.clicked.connect(self.gotoOrder) self.chartbutton.clicked.connect(self.gotoChart) self.modifyPwd.clicked.connect(self.modifyPasswd) def modifyPasswd(self): self.mpWindow = mpWindow() self.close() self.mpWindow.show() def gotoChart(self): self.ChartOp = ChartOp() self.ChartOp.show() # def gotoOrder(self): # from service.orderOp import OrderOp # self.OrderOp = OrderOp() # self.OrderOp.show() # def gotoClient(self): # from service.clientOp import ClientOp # self.ClientOp = ClientOp() # self.ClientOp.show() def gotoRoom(self): self.RoomOp = RoomOp() self.RoomOp.show() def gotoStaff(self): self.StaffOP = StaffOP() self.StaffOP.show() class ChartOp(QMainWindow, Ui_ReportWindow): def __init__(self,parent=None): super(ChartOp, self).__init__(parent) self.setupUi(self) self.staff = get_staff() self.welcome.setText(self.staff.sname) self.role.setText('权限:'+ self.staff.srole) self.listWidget.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.listWidget.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.listWidget_4.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.listWidget_4.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.listWidget.currentRowChanged.connect(self.stackedWidget.setCurrentIndex) self.listWidget_4.currentRowChanged.connect(self.stackedWidget_2.setCurrentIndex) self.stackedWidget.setCurrentIndex(0) self.stackedWidget_2.setCurrentIndex(0) self.gridlayout = QGridLayout(self.groupBox) # 继承容器groupBox self.gridlayout2 = QGridLayout(self.groupBox_2) # 同上 # lineedit1 = self.path1 # lineedit2 = self.path2 # lineedit3 = self.path3 # self.scan.clicked.connect(lambda: self.setBrowerPath(lineedit1)) # self.scan_2.clicked.connect(lambda: self.setBrowerPath(lineedit2)) # self.scan_3.clicked.connect(lambda: self.setBrowerPath(lineedit3)) # self.tosql1.clicked.connect(self.toSQLDB) # self.tosql2.clicked.connect(self.toSQLTable) # self.toexcel.clicked.connect(self.toExcel) # self.ask.clicked.connect(self.help) self.showfigure1.clicked.connect(self.figureOrder) self.showfigure2.clicked.connect(self.figureCS) def setBrowerPath(self,lineedit): download_path = QtWidgets.QFileDialog.getExistingDirectory(self,"选择导出目录","D:\pictures") lineedit.setText(download_path) def toSQLDB(self): """导出整个库""" key = localConfig['passwd'] path = self.path1.text() os.system("mysqldump -uroot -p%s dbdesign > %s/dbdesign.sql" % (key,path)) QMessageBox().information(None, "提示", "导出数据库完成!", QMessageBox.Yes) def toSQLTable(self): """导出某个表""" key = localConfig['passwd'] path = self.path2.text() table_name = self.name1.currentText() if table_name == '请选择...': QMessageBox.information(None,'提示','必须选择一个表',QMessageBox.Yes) return False os.system("mysqldump -uroot -p%s dbdesign %s > %s/%s.sql" %(key,table_name,path,table_name)) QMessageBox().information(None, "提示", "导出数据库表完成!", QMessageBox.Yes) def toExcel(self): """导出某个表到excel""" key = localConfig['passwd'] c = Chart() path = self.path3.text() table_name = self.name2.currentText() if table_name == '请选择...': QMessageBox.information(None,'提示','必须选择一个表',QMessageBox.Yes) return False c.toExcel(path,table_name) QMessageBox().information(None, "提示", "导出表格完成!", QMessageBox.Yes) def help(self): QMessageBox().information(None, "提示", "client -- 客户表\nteam -- 团队表\nstaff -- 员工表\nroom -- 房间表" "\ncheckin_client -- 入住个人客户表" "\ncheckin_team -- 入住团体表\nbooking_client -- 个人预约表\n" "booking_team -- 团体预约表\nhotelorder -- 完成订单表", QMessageBox.Yes) def figureOrder(self): self.plotRevenue() self.plotOccupy() def plotRevenue(self): c = Chart() x, y = c.getRevenue() F = Figure_Canvas(width=6, height=2, dpi=100) F.axes.plot(x, y) F.fig.suptitle("revenue in 7 days") self.gridlayout.addWidget(F, 1, 0) def plotOccupy(self): F1 = Figure_Canvas(width=6, height=2, dpi=100) F1.fig.suptitle("occupancy rate in 7 days") c = Chart() x, y = c.getOccupy() F1.axes.plot(x, y) self.gridlayout.addWidget(F1, 2, 0) def figureCS(self): self.plotClient() self.plotStaff() def plotStaff(self): F1 = Figure_Canvas(width=6, height=2, dpi=100) F1.fig.suptitle("components of client") c = Chart() component = c.getClientStatics() content = ['individual', 'team'] cols = ['r','m'] F1.axes.pie(component,labels=content,startangle=90,shadow=True,explode=(0,0.1),colors=cols,autopct='%1.1f%%') self.gridlayout2.addWidget(F1, 1, 0) def plotClient(self): c = Chart() x, y = c.getStaffStatics() F = Figure_Canvas(width=6, height=2, dpi=100) F.axes.bar(x, y) F.fig.suptitle(" staff performance: the order number they address") self.gridlayout2.addWidget(F, 2, 0) class RoomOp(QMainWindow, Ui_RoomWindow): def __init__(self,parent=None): super(RoomOp, self).__init__(parent) self.setupUi(self) self.staff = get_staff() self.welcome.setText(self.staff.sname) self.role.setText('权限:'+ self.staff.srole) self.listWidget.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.listWidget.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.inputStartTime.setCalendarPopup(True) self.inputEndTime.setCalendarPopup(True) self.endtime.setCalendarPopup(True) self.tendtime.setCalendarPopup(True) self.starttime_booking.setCalendarPopup(True) self.endtime_booking.setCalendarPopup(True) self.tstarttime_booking.setCalendarPopup(True) self.tendtime_booking.setCalendarPopup(True) self.starttime_checkout.setCalendarPopup(True) self.endtime_checkout.setCalendarPopup(True) self.stackedWidget.setCurrentIndex(0) self.stackedWidget_sub.setCurrentIndex(0) self.stackedWidget_sub_2.setCurrentIndex(0) self.stackedWidget_sub_3.setCurrentIndex(0) self.listWidget.currentRowChanged.connect(self.stackedWidget.setCurrentIndex) self.listWidget_2.currentRowChanged.connect(self.stackedWidget_sub.setCurrentIndex) self.listWidget_3.currentRowChanged.connect(self.stackedWidget_sub_2.setCurrentIndex) self.listWidget_4.currentRowChanged.connect(self.stackedWidget_sub_3.setCurrentIndex) self.commitCheckin.clicked.connect(self.singleCheckin) self.commitCheckinTeam.clicked.connect(self.teamCheckin) self.commitBookingClient.clicked.connect(self.reserveClient) self.commitBookingTeam.clicked.connect(self.reserveTeam) self.commitDeBookC.clicked.connect(self.cancelReserveC) self.commitDeBookT.clicked.connect(self.cancelReserveT) self.commitCheckout.clicked.connect(self.checkout) self.searchNB.clicked.connect(self.showRoomInfo) self.commitTableDel.clicked.connect(self.tableDel) self.commitTableModify.clicked.connect(self.tableModify) self.commitAddRoom.clicked.connect(self.addRoom) self.commitrtcC.clicked.connect(self.reverseToCheckC) self.commitrtcT.clicked.connect(self.reverseToCheckT) self.commitSearch.clicked.connect(self.findRoom) self.scan.clicked.connect(self.setBrowerPath) self.reset.clicked.connect(self.reOpen) # 下面用布局的方式显示房间 def showRoom(self,rid,rtype,rstorey,rprice,rdesc,rpic,endtime,i,j): self.glayout = self.gridLayout self.glayout.setContentsMargins(10,3,10,3) # 下面展示信息 self.flayout = QVBoxLayout() self.glayout.addLayout(self.flayout,i,j) lb = QLabel(self) lb.setFixedSize(150,80) lb.setPixmap(QPixmap(rpic)) lb.setStyleSheet("border:1px solid white") lb.setScaledContents(True) self.flayout.addWidget(lb) self.flayout.addWidget(QLabel("房间号:"+rid + " 楼层:"+rstorey,self, styleSheet="color: #990066;")) self.flayout.addWidget(QLabel("类型:"+rtype, self, styleSheet="color: #990066;", openExternalLinks=True)) self.flayout.addWidget(QLabel("描述:"+rdesc+" 价格:"+rprice, self, styleSheet="color: #990066;", openExternalLinks=True)) pb = QPushButton(self) pb.setFixedSize(80,25) pb.setText("立即订购") pb.setStyleSheet("background:#CCFFCC;border-radius:8px;\n") self.flayout.addWidget(pb) pb.clicked.connect(lambda: self.pbSwitch(rid,endtime)) def reOpen(self): self.close() self.tmp = RoomOp() self.tmp.show() def findRoom(self): rtype = self.inputType.currentText() if rtype == '请选择...': rtype = '%%' print(rtype) if self.inputFree.isChecked(): rstate = 1 else: rstate = 0 rstorey = self.inputstorey.currentText() if rstorey == '请选择...': rstorey = '%%' rstarttime = self.inputStartTime.date().toPyDate() rendtime = self.inputEndTime.date().toPyDate() if rendtime <= rstarttime: QMessageBox().information(None, "提示", "结束时间必须大于开始时间!", QMessageBox.Yes) return False price_bottom = self.inputprice1.text() if price_bottom == '': price_bottom = 0 price_up = self.inputprice2.text() if price_up == '': price_up = 10000 r = Room() da = r.showRoom(rtype,rstate,rstorey,rstarttime,rendtime,price_bottom,price_up) length = len(da) if length == 0: QMessageBox().information(None, "提示", "没有符合要求的记录!", QMessageBox.Yes) return False k = 0 for i in range(1 + int(length / 3)): for j in range(3): if k == length: break print(k) self.showRoom(da[k]['rid'],da[k]['rtype'],da[k]['rstorey'],da[k]['rprice'],da[k]['rdesc'],da[k]['rpic'],rendtime,i,j) k = k + 1 return True def pbSwitch(self,rid,endtime): self.stackedWidget.setCurrentIndex(1) self.stackedWidget_sub.setCurrentIndex(0) self.crid.setText(rid) self.endtime.setDate(endtime) def singleCheckin(self): cname = self.cname.text() cid = self.cid.text() cphone = self.cphone.text() cage = self.cage.text() if self.male.isChecked(): csex = '男' elif self.female.isChecked(): csex = '女' else: csex = '' crid = self.crid.text() endtime = self.endtime.date().toPyDate() if endtime <= datetime.date.today(): QMessageBox().information(None, "提示", "结束时间必须大于今天!", QMessageBox.Yes) return False remark = self.remark.text() r = Room() ret = r.singleCheckinDB(cname,cid,cphone,cage,csex,crid,endtime,remark) if ret: QMessageBox().information(None, "提示", "入住信息登记完成!", QMessageBox.Yes) def teamCheckin(self): tname = self.tname.text() tid = self.tid.text() tphone = self.tphone.text() trid = self.trid.text() tendtime = self.tendtime.date().toPyDate() if tendtime <= datetime.date.today(): QMessageBox().information(None, "提示", "结束时间必须大于今天!", QMessageBox.Yes) return False tremark = self.tremark.text() r = Room() print(tid) ret = r.teamCheckinDB(tname, tid, tphone,trid,tendtime,tremark) if ret: QMessageBox().information(None, "提示", "入住信息登记完成!", QMessageBox.Yes) def reverseToCheckC(self): cid = self.cid_rtc.text() rid = self.crid_rtc.text() r = Room() ret = r.reserveToCheckinC(cid,rid) if ret == True: QMessageBox().information(None, "提示", "预约入住完成!", QMessageBox.Yes) def reverseToCheckT(self): tid = self.tid_rtc.text() rid = self.trid_rtc.text() print(tid,rid) r = Room() ret = r.reserveToCheckinT(tid, rid) if ret: QMessageBox().information(None, "提示", "预约入住完成!", QMessageBox.Yes) def reserveClient(self): cname = self.cname_booking.text() cid = self.cid_booking.text() cphone = self.cphone_booking.text() cage = self.cage_booking.text() if self.male_booking.isChecked(): csex = '男' elif self.female_booking.isChecked(): csex = '女' else: csex = '' crid = self.crid_booking.text() cstarttime = self.starttime_booking.date().toPyDate() cendtime = self.endtime_booking.date().toPyDate() if cendtime <= cstarttime: QMessageBox().information(None, "提示", "结束时间必须大于开始时间!", QMessageBox.Yes) return False cremark = self.remark_booking.text() r = Room() ret = r.reserveCDB(cname,cid,cphone,cage,csex,crid,cstarttime,cendtime,cremark) if ret: QMessageBox().information(None, "提示", "预约信息登记完成!", QMessageBox.Yes) def reserveTeam(self): tname = self.tname_booking.text() tid = self.tid_booking.text() tphone = self.tphone_booking.text() trid = self.trid_booking.text() tstarttime = self.tstarttime_booking.date().toPyDate() tendtime = self.tendtime_booking.date().toPyDate() if tendtime <= tstarttime: QMessageBox().information(None, "提示", "结束时间必须大于开始时间!", QMessageBox.Yes) return False tremark = self.tremark_booking.text() r = Room() ret = r.reserveTDB(tname,tid,tphone,trid,tstarttime,tendtime,tremark) if ret: QMessageBox().information(None, "提示", "预约信息登记完成!", QMessageBox.Yes) def cancelReserveC(self): cancel_cid = self.cid_deb.text() cancel_rid = self.crid_deb.text() r = Room() ret = r.cancelReserveCDB(cancel_cid,cancel_rid) if ret: QMessageBox().information(None, "提示", "取消预约成功!", QMessageBox.Yes) def cancelReserveT(self): cancel_tid = self.tid_deb.text() cancel_rid = self.trid_deb.text() r = Room() ret = r.cancelReserveTDB(cancel_tid,cancel_rid) if ret: QMessageBox().information(None, "提示", "取消预约成功!", QMessageBox.Yes) def checkout(self): id = self.id_checkout.text() if self.single_flag.isChecked(): check_type = '个人' elif self.team_flag.isChecked(): check_type = '团队' else: messageBox = QMessageBox() messageBox.setWindowTitle('错误') messageBox.setText('必须选择个人/团队') messageBox.exec_() return stime = self.starttime_checkout.date().toPyDate() etime = self.endtime_checkout.date().toPyDate() if etime <= stime: QMessageBox().information(None, "提示", "结束时间必须大于开始时间!", QMessageBox.Yes) return False rid = self.rid_checkout.text() pay_type = self.paytype_checkout.text() remark = self.remark_checkout.text() r = Room() ret = r.checkoutDB(check_type,id,rid,pay_type,remark) if ret: QMessageBox().information(None, "提示", "退房成功!", QMessageBox.Yes) def showRoomInfo(self): r = Room() if int(self.staff.srole) > 1: data = r.showAllRoom() print(data) rowNum = len(data) columnNum = len(data[0]) self.roomTable.setRowCount(rowNum) self.roomTable.setColumnCount(columnNum) for i,da in enumerate(data): da = list(da.values()) for j in range(columnNum): self.itemContent = QTableWidgetItem(( '%s' ) % (da[j])) self.roomTable.setItem(i, j, self.itemContent) else: QMessageBox().information(None, "提示", "权限要求不符合!", QMessageBox.Yes) def tableDel(self): row_selected = self.roomTable.selectedItems() if len(row_selected) == 0: return row = row_selected[0].text() r = Room() r.delRoom(row) row = row_selected[0].row() self.roomTable.removeRow(row) QMessageBox().information(None, "提示", "删除成功!", QMessageBox.Yes) def tableModify(self): row_selected = self.roomTable.selectedItems() if len(row_selected) == 0: return row = row_selected[0].row() column = row_selected[0].column() value = self.modifyvalue.text() r = Room() r.modifyRoom(row,column,value) tvalue = QTableWidgetItem(('%s') % (value)) self.roomTable.setItem(row,column, tvalue) QMessageBox().information(None, "提示", "修改成功!", QMessageBox.Yes) def addRoom(self): if int(self.staff.srole) > 1: rid = self.rid_add.text() rtype = self.rtype_add.currentText() rstorey = self.rstorey_add.currentText() rprice = self.rprice_add.text() rdesc = self.rdesc_add.text() rpic = self.path.text() r = Room() ret = r.addRoom(rid,rtype,rstorey,rprice,rdesc,rpic) if ret == True: QMessageBox().information(None, "提示", "添加房源成功!", QMessageBox.Yes) else: QMessageBox().information(None, "提示", "权限不符合要求!", QMessageBox.Yes) def setBrowerPath(self): download_path = QtWidgets.QFileDialog.getExistingDirectory(self,"选择图片路径","D:\pictures") self.path.setText(download_path) class StaffOP(QMainWindow, Ui_StaffWindow): def __init__(self, parent=None): super(StaffOP, self).__init__(parent) self.setupUi(self) self.inputdate.setCalendarPopup(True) self.stackedWidget.setCurrentIndex(0) self.staff = get_staff() self.welcome.setText(self.staff.sname) self.role.setText('权限:'+ self.staff.srole) self.name.setText(self.staff.sname) self.sname.setText(self.staff.sname) self.ssex.setText(self.staff.ssex) self.srole.setText(self.staff.srole) self.stime.setText(str(self.staff.stime)) self.sphone.setText(self.staff.sphone) self.sidcard.setText(self.staff.sidcard) self.sidcard_2.setText(self.staff.sid) self.listWidget.currentRowChanged.connect(self.stackedWidget.setCurrentIndex) self.listWidget.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.listWidget.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) # 绑定事件 self.searchNB.clicked.connect(self.searchStaff) self.commitAdd.clicked.connect(self.addStaff) self.commitDe.clicked.connect(self.deleteStaff) self.commitTableDel.clicked.connect(self.tableDel) self.commitTableModify.clicked.connect(self.tableModify) def searchStaff(self): sname = str(self.searchName.text()) s_sname = '%' + sname + '%' if int(self.staff.srole) > 1: self.data = self.staff.showAllStaff(s_sname) # print(self.data) self.rowNum = len(self.data) self.columnNum = len(self.data[0]) print(self.rowNum) print(self.columnNum) self.searchTable.setRowCount(self.rowNum) self.searchTable.setColumnCount(self.columnNum) for i, da in enumerate(self.data): # 字典转列表 da = list(da.values()) for j in range(self.columnNum): self.itemContent = QTableWidgetItem(( '%s' ) % (da[j])) self.searchTable.setItem(i, j, self.itemContent) else: QMessageBox().information(None, "提示", "权限不符合要求!", QMessageBox.Yes) def addStaff(self): sid = self.inputsid.text().split() sname = self.inputname.text().split() if self.inputmale.isChecked(): ssex = '男' elif self.inputfemale.isChecked(): ssex = '女' else: ssex = '' stime = self.inputdate.date().toPyDate() susername = self.inputuser.text().split() spwd = self.inputpwd.text().split() srole = self.inputrole.text().split() sidcard = self.inputidcard.text().split() sphone = self.inputphone.text().split() if sid == '' or ssex == '' or sname == '' or stime == '' or susername == '' or spwd == '' \ or srole == '' or sidcard == '' or sphone == '': QMessageBox().information(None, "提示", "信息不能为空!", QMessageBox.Yes) return False if int(self.staff.srole) > 1: ret = self.staff.addStaff(sid,sname,ssex,stime,susername,spwd,srole,sidcard,sphone) if ret: QMessageBox().information(None, "提示", "添加成功!", QMessageBox.Yes) else: QMessageBox().information(None, "提示", "权限不符合要求!", QMessageBox.Yes) def deleteStaff(self): sid = self.desid.text() sname = self.dename.text() sidcard = self.deidcard.text() if sid == '' or sname == '' or sidcard == '': QMessageBox().information(None, "提示", "信息不能为空!", QMessageBox.Yes) return False if int(self.staff.srole) > 1: self.staff.deleteStaff(sid,sname,sidcard) self.data = self.staff.showAllStaff('%%') print(self.data) self.rowNum = len(self.data) self.columnNum = len(self.data[0]) self.deleteTable.setRowCount(self.rowNum) self.deleteTable.setColumnCount(self.columnNum) for i, da in enumerate(self.data): # 字典转列表 da = list(da.values()) for j in range(self.columnNum): self.itemContent = QTableWidgetItem(( '%s' ) % (da[j])) self.deleteTable.setItem(i, j, self.itemContent) QMessageBox().information(None, "提示", "删除成功!", QMessageBox.Yes) else: QMessageBox().information(None, "提示", "权限不符合要求!", QMessageBox.Yes) def tableDel(self): row_selected = self.searchTable.selectedItems() if len(row_selected) == 0: return row = row_selected[0].text() self.staff.delStaff(row) row = row_selected[0].row() self.searchTable.removeRow(row) QMessageBox().information(None, "提示", "删除成功!", QMessageBox.Yes) def tableModify(self): row_selected = self.searchTable.selectedItems() if len(row_selected) == 0: return row = row_selected[0].row() column = row_selected[0].column() value = self.modifyvalue.text() self.staff.modifyStaff(row,column,value) tvalue = QTableWidgetItem(('%s') % (value)) self.searchTable.setItem(row,column, tvalue) QMessageBox().information(None, "提示", "修改成功!", QMessageBox.Yes) class mpWindow(QMainWindow, Ui_MpwdWindow): def __init__(self, parent=None): super(mpWindow, self).__init__(parent) self.setupUi(self) # self.retLogin.clicked.connect(self.returnToMain) self.commitButton.clicked.connect(self.commit) # def returnToMain(self): # from service.mainControl import MainWindow # self.Mainwindow = Ui_LoginWindow() # self.close() # self.Mainwindow.show() def commit(self): newPwd = self.lineEdit_newpwd.text() oldPwd = self.lineEdit_oldpasswd.text() sid = self.lineEdit_sid.text() if newPwd == '' or oldPwd == '' or sid == '': QMessageBox().information(None, "提示", "信息不能为空!", QMessageBox.Yes) return False s = Staff() ret = s.modifyPasswd(sid, newPwd, oldPwd) if ret == True: QMessageBox().information(None, "提示", "修改密码成功,进入登录页面!", QMessageBox.Yes) # from Homepage import HomePage self.tmpWindow = LoginPage() self.close() self.tmpWindow.show() else: QMessageBox().information(None, "提示", "修改密码失败!", QMessageBox.Yes) if __name__ == '__main__': app = QApplication(sys.argv) widget = LoginPage() widget.show() sys.exit(app.exec_())