├── Scrapy_for_flight ├── __init__.py └── scrapy_flight.py ├── README.md ├── gg.ico ├── img ├── one.png ├── six.png ├── two.png ├── Plane.png ├── button.png ├── five.png ├── four.png ├── three.png ├── spalsh.jpeg └── snap2018-05-21-16-52-17.png ├── qrc ├── 656.jpg ├── 88.jpg ├── one.png ├── six.png ├── two.png ├── 56456.jpg ├── button.png ├── five.png ├── four.png ├── three.png ├── timg.jpg ├── 561fadc8c3567.jpg ├── snap2018-05-21-16-52-17.png └── plane.qrc ├── .idea ├── misc.xml ├── modules.xml └── PyQt5_GUI.iml ├── databases ├── db_OrdinaryP.py ├── db_VIP.py ├── db_Worker.py ├── db_Admin.py ├── db_Booked.py └── db_Flight.py ├── UI ├── OrP_zc.py ├── Worker.py ├── Admin.py ├── OrP_zc.ui ├── OrP.py ├── VIP.py ├── Worker.ui ├── VIP_zc.py ├── Admin.ui ├── OrP.ui ├── VIP.ui └── VIP_zc.ui └── main.py /Scrapy_for_flight/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PyQt5_GUI_Application 2 | -------------------------------------------------------------------------------- /Scrapy_for_flight/scrapy_flight.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /gg.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/gg.ico -------------------------------------------------------------------------------- /img/one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/img/one.png -------------------------------------------------------------------------------- /img/six.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/img/six.png -------------------------------------------------------------------------------- /img/two.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/img/two.png -------------------------------------------------------------------------------- /qrc/656.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/qrc/656.jpg -------------------------------------------------------------------------------- /qrc/88.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/qrc/88.jpg -------------------------------------------------------------------------------- /qrc/one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/qrc/one.png -------------------------------------------------------------------------------- /qrc/six.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/qrc/six.png -------------------------------------------------------------------------------- /qrc/two.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/qrc/two.png -------------------------------------------------------------------------------- /img/Plane.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/img/Plane.png -------------------------------------------------------------------------------- /img/button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/img/button.png -------------------------------------------------------------------------------- /img/five.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/img/five.png -------------------------------------------------------------------------------- /img/four.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/img/four.png -------------------------------------------------------------------------------- /img/three.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/img/three.png -------------------------------------------------------------------------------- /qrc/56456.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/qrc/56456.jpg -------------------------------------------------------------------------------- /qrc/button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/qrc/button.png -------------------------------------------------------------------------------- /qrc/five.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/qrc/five.png -------------------------------------------------------------------------------- /qrc/four.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/qrc/four.png -------------------------------------------------------------------------------- /qrc/three.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/qrc/three.png -------------------------------------------------------------------------------- /qrc/timg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/qrc/timg.jpg -------------------------------------------------------------------------------- /img/spalsh.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/img/spalsh.jpeg -------------------------------------------------------------------------------- /qrc/561fadc8c3567.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/qrc/561fadc8c3567.jpg -------------------------------------------------------------------------------- /img/snap2018-05-21-16-52-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/img/snap2018-05-21-16-52-17.png -------------------------------------------------------------------------------- /qrc/snap2018-05-21-16-52-17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JamesDestiny/PyQt5_GUI_Application/HEAD/qrc/snap2018-05-21-16-52-17.png -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/PyQt5_GUI.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | -------------------------------------------------------------------------------- /qrc/plane.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | ../img/Plane.png 4 | 5 | 6 | timg.jpg 7 | 8 | 9 | 88.jpg 10 | 56456.jpg 11 | 561fadc8c3567.jpg 12 | 656.jpg 13 | snap2018-05-21-16-52-17.png 14 | 15 | 16 | five.png 17 | four.png 18 | one.png 19 | six.png 20 | three.png 21 | two.png 22 | 23 | 24 | button.png 25 | 26 | 27 | -------------------------------------------------------------------------------- /databases/db_OrdinaryP.py: -------------------------------------------------------------------------------- 1 | from sqlalchemy import * 2 | from sqlalchemy.orm import * 3 | from sqlalchemy.ext.declarative import declarative_base 4 | 5 | My_databases = "mysql+pymysql://root:123456@localhost:3306/ams?charset=utf8mb4" 6 | engine = create_engine(My_databases)#连接数据库,创建数据库引擎变量 7 | 8 | Session = sessionmaker(bind=engine)#引用上面的eigne,将事务session与数据库绑定 9 | 10 | Base = declarative_base()#继承导入的模块,创建对象的基类 11 | 12 | #定义普通客户信息的类 13 | class OrdinaryP(Base): 14 | __tablename__ = 'ord_p_info' 15 | P_id = Column(INTEGER,nullable=False,autoincrement=True,primary_key=True,comment='普通用户编号') 16 | P_name = Column(VARCHAR(20),nullable=False,comment='普通用户姓名') 17 | P_id_num = Column(VARCHAR(20),nullable=False,primary_key=True,comment='普通用户身份证号') 18 | 19 | def __init__(self,P_name,P_id_num): 20 | self.P_name =P_name 21 | self.P_id_num =P_id_num 22 | 23 | #添加用户信息,即用户注册 24 | def add(self): 25 | session = Session() # 定义事务 26 | try: 27 | session.add(self)#事务增加数据 28 | session.commit()#提交事务,session自动过期而不需要关闭 29 | except Exception as e: 30 | session.rollback()#发生异常后回滚事务 31 | print('错误'+str(e)) 32 | 33 | #根据用户姓名和身份证号删除用户信息 34 | def delete(self): 35 | session = Session() 36 | try: 37 | session.query(OrdinaryP).filter_by(P_name=self.P_name,P_id_num=self.P_id_num).delete() 38 | # 调用事务删除指定身份证号和姓名的用户信息 39 | session.commit() 40 | except Exception as e: 41 | session.rollback() 42 | print('错误' + str(e)) 43 | 44 | #根据身份证号码和姓名判断用户是否存在,返回BOOL类型的值 45 | def isexited(self): 46 | session =Session() 47 | try: 48 | peo=session.query(OrdinaryP).filter_by(P_name=self.P_name,P_id_num = self.P_id_num).first() 49 | if peo is not None: 50 | return 1 51 | else: 52 | return 0 53 | except Exception as e: 54 | session.rollback() 55 | print(str(e)) 56 | 57 | -------------------------------------------------------------------------------- /databases/db_VIP.py: -------------------------------------------------------------------------------- 1 | from sqlalchemy import * 2 | from sqlalchemy.orm import * 3 | from sqlalchemy.ext.declarative import declarative_base 4 | 5 | My_databases = "mysql+pymysql://root:123456@localhost:3306/ams?charset=utf8mb4" 6 | engine = create_engine(My_databases)#连接数据库,创建数据库引擎变量 7 | 8 | Session = sessionmaker(bind=engine)#引用上面的eigne,将事务session与数据库绑定 9 | 10 | Base = declarative_base()#继承导入的模块,创建对象的基类 11 | 12 | #定义普通客户信息的类 13 | class VIP(Base): 14 | __tablename__ = 'VIP_info' 15 | VIP_id = Column(INTEGER,nullable=False,autoincrement=True,primary_key=True,comment='VIP用户编号') 16 | VIP_name = Column(VARCHAR(20),nullable=False,comment='VIP用户姓名') 17 | VIP_id_num = Column(VARCHAR(20),nullable=False,primary_key=True,comment='VIP用户身份证号') 18 | 19 | def __init__(self,VIP_name,VIP_id_num): 20 | self.VIP_name = VIP_name 21 | self.VIP_id_num = VIP_id_num 22 | 23 | #添加用户信息,即用户注册 24 | def add(self): 25 | session = Session() # 定义事务 26 | try: 27 | session.add(self)#事务增加数据 28 | session.commit()#提交事务,session自动过期而不需要关闭 29 | except Exception as e: 30 | session.rollback()#发生异常后回滚事务 31 | print('错误'+str(e)) 32 | 33 | #根据用户姓名和身份证号删除用户信息 34 | def delete(self): 35 | session = Session() 36 | try: 37 | session.query(VIP).filter_by(VIP_name=self.P_name,VIP_id_num=self.P_id_num).delete() 38 | # 调用事务删除指定身份证号和姓名的用户信息 39 | session.commit() 40 | except Exception as e: 41 | session.rollback() 42 | print('错误' + str(e)) 43 | 44 | #根据身份证号码和姓名判断用户是否存在,返回BOOL类型的值 45 | def isexited(self): 46 | session = Session() 47 | try: 48 | peo = session.query(VIP).filter_by(P_name=self.P_name, P_id_num=self.P_id_num).first() 49 | if peo is not None: 50 | return 1 51 | else: 52 | return 0 53 | except Exception as e: 54 | session.rollback() 55 | print(str(e)) 56 | 57 | 58 | -------------------------------------------------------------------------------- /databases/db_Worker.py: -------------------------------------------------------------------------------- 1 | from sqlalchemy import * 2 | from sqlalchemy.orm import * 3 | from sqlalchemy.ext.declarative import declarative_base 4 | 5 | My_databases = "mysql+pymysql://root:123456@localhost:3306/ams?charset=utf8mb4" 6 | engine = create_engine(My_databases)#连接数据库,创建数据库引擎变量 7 | 8 | Session = sessionmaker(bind=engine)#引用上面的eigne,将事务session与数据库绑定 9 | 10 | Base = declarative_base()#继承导入的模块,创建对象的基类 11 | 12 | #定义工作人员,即操作员的类 13 | class Worker(Base): 14 | __tablename__ = 'worker_info' 15 | worker_id = Column(INTEGER,nullable=False,autoincrement=True,comment='工作员编号',primary_key=True) 16 | worker_user = Column(CHAR(20),nullable=False,primary_key=True,comment='工作员账号') 17 | worker_pd = Column(CHAR(20),nullable=False,comment='工作员密码') 18 | 19 | def __init__(self,worker_user,worker_pd,): 20 | self.worker_user = worker_user 21 | self.worker_pd =worker_pd 22 | 23 | #添加工作员信息 24 | def add(self): 25 | session = Session() # 定义事务 26 | try: 27 | session.add(self) # 事务增加数据 28 | session.commit() # 提交事务,session自动过期而不需要关闭 29 | except Exception as e: 30 | session.rollback() # 发生异常后回滚事务 31 | print('错误' + str(e)) 32 | 33 | #根据工作员账号删除工作员信息 34 | def delete(self): 35 | session = Session() 36 | try: 37 | session.query(Worker).filter_by(worker_user=self.worker_user).delete() 38 | #调用事务删除指定账号的工作员 39 | session.commit() 40 | except Exception as e: 41 | session.rollback() 42 | print('错误'+str(e)) 43 | 44 | #判断工作人员是否存在 45 | def isExited(self): 46 | session = Session() 47 | try: 48 | peo = session.query(Worker).filter_by(worker_user=self.worker_user,worker_pd = self.worker_pd).first() 49 | if peo is not None: 50 | return 1 51 | else: 52 | return 0 53 | except Exception as e: 54 | session.rollback() 55 | print(str(e)) 56 | 57 | def isLogin(self): 58 | session = Session() 59 | try: 60 | ad = session.query(Worker).filter_by(worker_user=self.worker_user).first() 61 | session.commit() 62 | if ad is not None: 63 | return 1 64 | else: 65 | return 0 66 | except Exception as e: 67 | print('错误' + str(e)) 68 | 69 | # 输出所有的操作员信息 70 | def show_all(self): 71 | session = Session() 72 | try: 73 | list = session.query(Worker).filter_by().all() 74 | return list 75 | except Exception as e: 76 | session.rollback() 77 | print(str(e)) 78 | -------------------------------------------------------------------------------- /databases/db_Admin.py: -------------------------------------------------------------------------------- 1 | import sqlalchemy#导入数据库处理ORM映射函数类 2 | from sqlalchemy import *#导入生成引擎的类来连接数据库 3 | from sqlalchemy.orm import sessionmaker#导入生成事务的类,通过传输代替数据库的引擎 4 | from sqlalchemy.ext.declarative import declarative_base 5 | from sqlalchemy.orm import * 6 | 7 | from sqlalchemy.orm import mapper#导入映射方法,可以将已经存在的表映射到类中 8 | 9 | My_databases = "mysql+pymysql://root:123456@localhost:3306/ams?charset=utf8mb4" 10 | engine = create_engine(My_databases)#连接数据库,创建数据库引擎变量 11 | 12 | Session = sessionmaker(bind=engine)#引用上面的eigne,将事务session与数据库绑定 13 | 14 | Base = declarative_base()#继承导入的模块,创建对象的基类 15 | 16 | #建立管理员类 17 | class admin(Base): 18 | #定义类,定义表 19 | __tablename__ ='admin_info' 20 | admin_id = Column(INTEGER,primary_key=True,autoincrement=True,nullable=False,comment='管理员编号',unique=True) 21 | admin_user = Column(CHAR(20),primary_key=True,nullable=False,comment='管理员账号',unique=True) 22 | admin_pd = Column(CHAR(20),nullable=False,comment='管理员密码') 23 | def __init__(self,admin_user,admin_pd): 24 | self.admin_user = admin_user#定义管理员用户名 25 | self.admin_pd = admin_pd#定义管理员密码 26 | 27 | 28 | #添加管理员,插入到数据库中 29 | def add(self): 30 | session = Session() # 定义事务 31 | try: 32 | session.add(self)#事务增加数据 33 | session.commit()#提交事务,session自动过期而不需要关闭 34 | except Exception as e: 35 | session.rollback()#发生异常后回滚事务 36 | print('错误'+str(e)) 37 | 38 | 39 | #根据管理员用户名删除管理员,从数据库中删除 40 | def delete(self): 41 | session = Session() 42 | try: 43 | session.query(admin).filter_by(admin_user=self.admin_user).delete() 44 | #调用事务删除指定管理员用户名的数据库数据 45 | session.commit() 46 | except Exception as e: 47 | session.rollback() 48 | print('错误'+str(e)) 49 | 50 | #根据管理员用户名和密码判断是否成功登录 51 | def isExited(self): 52 | session =Session() 53 | try: 54 | ad=session.query(admin).filter_by(admin_user=self.admin_user,admin_pd=self.admin_pd).first() 55 | session.commit() 56 | if ad is not None: 57 | return 1 58 | else: 59 | return 0 60 | except Exception as e: 61 | print('错误' + str(e)) 62 | 63 | def isLogin(self): 64 | session = Session() 65 | try: 66 | ad = session.query(admin).filter_by(admin_user=self.admin_user).first() 67 | session.commit() 68 | if ad is not None: 69 | return 1 70 | else: 71 | return 0 72 | except Exception as e: 73 | print('错误' + str(e)) 74 | 75 | # 输出所有的管理员信息 76 | def show_all(self): 77 | session = Session() 78 | try: 79 | list = session.query(admin).filter_by().all() 80 | return list 81 | except Exception as e: 82 | session.rollback() 83 | print(str(e)) 84 | 85 | ''' 86 | pad = admin('','') 87 | list = pad.show_all() 88 | for i in list: 89 | print(i.admin_user) 90 | ''' 91 | -------------------------------------------------------------------------------- /databases/db_Booked.py: -------------------------------------------------------------------------------- 1 | from sqlalchemy import * 2 | from sqlalchemy.orm import * 3 | from sqlalchemy.ext.declarative import declarative_base 4 | 5 | My_databases = "mysql+pymysql://root:123456@localhost:3306/ams?charset=utf8mb4" 6 | engine = create_engine(My_databases)#连接数据库,创建数据库引擎变量 7 | 8 | Session = sessionmaker(bind=engine)#引用上面的eigne,将事务session与数据库绑定 9 | 10 | Base = declarative_base()#继承导入的模块,创建对象的基类 11 | 12 | class Booked(Base): 13 | #定义已经订票的信息表 14 | __tablename__='alresdy_booked' 15 | Flight_num = Column(CHAR(30),nullable=False,primary_key=True,comment='航班号') 16 | Seat_num = Column(BigInteger,nullable=False,comment='座位号',primary_key=True) 17 | Aircraft_num = Column(CHAR(30),nullable=False,comment='飞机号') 18 | id_num = Column(CHAR(20),nullable=True,comment='已订票用户身份证号') 19 | name = Column(CHAR(20),nullable=True,comment='已订票用户姓名') 20 | 21 | def __init__(self,Flight_num,Seat_num,Aircraft_num,id_num,name): 22 | self.Flight_num = Flight_num 23 | self.Aircraft_num =Aircraft_num 24 | self.Seat_num = Seat_num 25 | self.id_num = id_num 26 | self.name = name 27 | 28 | #添加订票信息 29 | def add(self): 30 | session = Session() # 定义事务 31 | try: 32 | session.add(self) # 事务增加数据 33 | session.commit() # 提交事务,session自动过期而不需要关闭 34 | except Exception as e: 35 | session.rollback() # 发生异常后回滚事务 36 | print('错误' + str(e)) 37 | 38 | #根据航班号和身份证号删除订票信息 39 | def delete(self): 40 | session = Session() 41 | try: 42 | session.query(Booked).filter_by(Flight_num=self.Flight_num,id_num=self.id_num).delete() 43 | # 调用事务删除指定航班号和身份证号的订票信息 44 | session.commit() 45 | except Exception as e: 46 | session.rollback() 47 | print('错误' + str(e)) 48 | 49 | 50 | #根据用户姓名和身份证号查询指定用户的订票信息 51 | def show_peo(self): 52 | session = Session() 53 | try: 54 | list = session.query(Booked).filter_by(id_num=self.id_num,name=self.name).all() 55 | return list 56 | except Exception as e: 57 | session.rollback() 58 | print('错误'+str(e)) 59 | #根据用户提供的航班号和座位号来查询是否有座位,返回BOOL值 60 | def isexited_seat(self): 61 | session = Session() 62 | seat = session.query(Booked).filter_by(Flight_num=self.Flight_num,Seat_num = self.Seat_num).first() 63 | if seat is None: 64 | return 1 65 | else: 66 | return 0 67 | 68 | #显示所有订票信息 69 | def show_all(self): 70 | session = Session() 71 | try: 72 | list =session.query(Booked).filter().all() 73 | return list 74 | except Exception as e: 75 | session.rollback() 76 | print(str(e)) 77 | 78 | #根据用户姓名和身份证号查询是否有过订票记录 79 | def isexited(self): 80 | session = Session() 81 | try: 82 | list = session.query(Booked).filter_by(id_num = self.id_num,name=self.name).first() 83 | if list is not None: 84 | return 1 85 | else: 86 | return 0 87 | except Exception as e: 88 | session.rollback() 89 | print(str(e)) 90 | 91 | -------------------------------------------------------------------------------- /UI/OrP_zc.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'OrP_zc.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.10.1 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | class Ui_OrP_zc(object): 12 | def setupUi(self, OrP_zc): 13 | OrP_zc.setObjectName("OrP_zc") 14 | OrP_zc.resize(400, 300) 15 | font = QtGui.QFont() 16 | font.setFamily("华文行楷") 17 | font.setPointSize(14) 18 | OrP_zc.setFont(font) 19 | OrP_zc.setStyleSheet("\n" 20 | "border-top:0px solid #e8f3f9;\n" 21 | "background-image: url(:/photo/561fadc8c3567.jpg);") 22 | self.label = QtWidgets.QLabel(OrP_zc) 23 | self.label.setGeometry(QtCore.QRect(60, 50, 71, 21)) 24 | font = QtGui.QFont() 25 | font.setFamily("微软雅黑") 26 | font.setPointSize(14) 27 | self.label.setFont(font) 28 | self.label.setStyleSheet("background-image: url(:/label/timg.jpg);") 29 | self.label.setObjectName("label") 30 | self.label_2 = QtWidgets.QLabel(OrP_zc) 31 | self.label_2.setGeometry(QtCore.QRect(50, 120, 81, 21)) 32 | font = QtGui.QFont() 33 | font.setFamily("微软雅黑") 34 | font.setPointSize(14) 35 | self.label_2.setFont(font) 36 | self.label_2.setStyleSheet("background-image: url(:/label/timg.jpg);") 37 | self.label_2.setObjectName("label_2") 38 | self.lineEdit = QtWidgets.QLineEdit(OrP_zc) 39 | self.lineEdit.setGeometry(QtCore.QRect(140, 60, 171, 20)) 40 | font = QtGui.QFont() 41 | font.setFamily("微软雅黑") 42 | font.setPointSize(12) 43 | self.lineEdit.setFont(font) 44 | self.lineEdit.setStyleSheet("border: 2px solid rgb(41,57,85);\n" 45 | "border-radius:6px;\n" 46 | "background:white;\n" 47 | "selection-background-color:green;\n" 48 | "") 49 | self.lineEdit.setObjectName("lineEdit") 50 | self.lineEdit_2 = QtWidgets.QLineEdit(OrP_zc) 51 | self.lineEdit_2.setGeometry(QtCore.QRect(142, 120, 171, 20)) 52 | font = QtGui.QFont() 53 | font.setFamily("微软雅黑") 54 | font.setPointSize(12) 55 | self.lineEdit_2.setFont(font) 56 | self.lineEdit_2.setStyleSheet("border: 2px solid rgb(41,57,85);\n" 57 | "border-radius:6px;\n" 58 | "background:white;\n" 59 | "selection-background-color:green;\n" 60 | "") 61 | self.lineEdit_2.setObjectName("lineEdit_2") 62 | self.pushButton = QtWidgets.QPushButton(OrP_zc) 63 | self.pushButton.setGeometry(QtCore.QRect(70, 200, 75, 23)) 64 | font = QtGui.QFont() 65 | font.setFamily("华文行楷") 66 | font.setPointSize(14) 67 | self.pushButton.setFont(font) 68 | self.pushButton.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 69 | "border-radius:6px;") 70 | self.pushButton.setObjectName("pushButton") 71 | self.pushButton_2 = QtWidgets.QPushButton(OrP_zc) 72 | self.pushButton_2.setGeometry(QtCore.QRect(240, 200, 75, 23)) 73 | font = QtGui.QFont() 74 | font.setFamily("华文行楷") 75 | font.setPointSize(14) 76 | self.pushButton_2.setFont(font) 77 | self.pushButton_2.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 78 | "border-radius:6px;") 79 | self.pushButton_2.setObjectName("pushButton_2") 80 | self.graphicsView_2 = QtWidgets.QGraphicsView(OrP_zc) 81 | self.graphicsView_2.setGeometry(QtCore.QRect(320, 30, 81, 121)) 82 | self.graphicsView_2.setStyleSheet("border-image: url(:/photo/snap2018-05-21-16-52-17.png);") 83 | self.graphicsView_2.setObjectName("graphicsView_2") 84 | 85 | self.retranslateUi(OrP_zc) 86 | QtCore.QMetaObject.connectSlotsByName(OrP_zc) 87 | 88 | def retranslateUi(self, OrP_zc): 89 | _translate = QtCore.QCoreApplication.translate 90 | OrP_zc.setWindowTitle(_translate("OrP_zc", "普通用户注册")) 91 | self.label.setText(_translate("OrP_zc", "姓名")) 92 | self.label_2.setText(_translate("OrP_zc", "身份证号")) 93 | self.pushButton.setText(_translate("OrP_zc", "确认")) 94 | self.pushButton_2.setText(_translate("OrP_zc", "取消")) 95 | 96 | import qrc.plane_rc 97 | -------------------------------------------------------------------------------- /UI/Worker.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'Worker.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.10.1 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | class Ui_Worker(object): 12 | def setupUi(self, Worker): 13 | Worker.setObjectName("Worker") 14 | Worker.resize(400, 300) 15 | font = QtGui.QFont() 16 | font.setFamily("华文行楷") 17 | font.setPointSize(14) 18 | Worker.setFont(font) 19 | Worker.setStyleSheet("\n" 20 | "border-top:0px solid #e8f3f9;\n" 21 | "background-image: url(:/photo/561fadc8c3567.jpg);") 22 | self.label = QtWidgets.QLabel(Worker) 23 | self.label.setGeometry(QtCore.QRect(60, 50, 61, 21)) 24 | font = QtGui.QFont() 25 | font.setFamily("微软雅黑") 26 | font.setPointSize(14) 27 | self.label.setFont(font) 28 | self.label.setStyleSheet("background-image: url(:/label/timg.jpg);") 29 | self.label.setObjectName("label") 30 | self.label_2 = QtWidgets.QLabel(Worker) 31 | self.label_2.setGeometry(QtCore.QRect(60, 100, 61, 21)) 32 | font = QtGui.QFont() 33 | font.setFamily("微软雅黑") 34 | font.setPointSize(14) 35 | self.label_2.setFont(font) 36 | self.label_2.setStyleSheet("background-image: url(:/label/timg.jpg);") 37 | self.label_2.setObjectName("label_2") 38 | self.lineEdit = QtWidgets.QLineEdit(Worker) 39 | self.lineEdit.setGeometry(QtCore.QRect(140, 50, 151, 20)) 40 | font = QtGui.QFont() 41 | font.setFamily("微软雅黑") 42 | font.setPointSize(12) 43 | self.lineEdit.setFont(font) 44 | self.lineEdit.setStyleSheet("border: 2px solid rgb(41,57,85);\n" 45 | "border-radius:6px;\n" 46 | "background:white;\n" 47 | "selection-background-color:green;\n" 48 | "") 49 | self.lineEdit.setEchoMode(QtWidgets.QLineEdit.Normal) 50 | self.lineEdit.setObjectName("lineEdit") 51 | self.lineEdit_2 = QtWidgets.QLineEdit(Worker) 52 | self.lineEdit_2.setGeometry(QtCore.QRect(140, 100, 151, 20)) 53 | font = QtGui.QFont() 54 | font.setFamily("微软雅黑") 55 | font.setPointSize(12) 56 | self.lineEdit_2.setFont(font) 57 | self.lineEdit_2.setStyleSheet("border: 2px solid rgb(41,57,85);\n" 58 | "border-radius:6px;\n" 59 | "background:white;\n" 60 | "selection-background-color:green;\n" 61 | "") 62 | self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password) 63 | self.lineEdit_2.setObjectName("lineEdit_2") 64 | self.pushButton = QtWidgets.QPushButton(Worker) 65 | self.pushButton.setGeometry(QtCore.QRect(70, 200, 75, 23)) 66 | font = QtGui.QFont() 67 | font.setFamily("华文行楷") 68 | font.setPointSize(14) 69 | self.pushButton.setFont(font) 70 | self.pushButton.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 71 | "border-radius:6px;") 72 | self.pushButton.setObjectName("pushButton") 73 | self.pushButton_2 = QtWidgets.QPushButton(Worker) 74 | self.pushButton_2.setGeometry(QtCore.QRect(230, 200, 75, 23)) 75 | font = QtGui.QFont() 76 | font.setFamily("华文行楷") 77 | font.setPointSize(14) 78 | self.pushButton_2.setFont(font) 79 | self.pushButton_2.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 80 | "border-radius:6px;") 81 | self.pushButton_2.setObjectName("pushButton_2") 82 | self.graphicsView_2 = QtWidgets.QGraphicsView(Worker) 83 | self.graphicsView_2.setGeometry(QtCore.QRect(320, 50, 81, 121)) 84 | self.graphicsView_2.setStyleSheet("border-image: url(:/photo/snap2018-05-21-16-52-17.png);") 85 | self.graphicsView_2.setObjectName("graphicsView_2") 86 | 87 | self.retranslateUi(Worker) 88 | QtCore.QMetaObject.connectSlotsByName(Worker) 89 | 90 | def retranslateUi(self, Worker): 91 | _translate = QtCore.QCoreApplication.translate 92 | Worker.setWindowTitle(_translate("Worker", "操作员登录")) 93 | self.label.setText(_translate("Worker", "账号")) 94 | self.label_2.setText(_translate("Worker", "密码")) 95 | self.pushButton.setText(_translate("Worker", "确认")) 96 | self.pushButton_2.setText(_translate("Worker", "取消")) 97 | 98 | import qrc.plane_rc -------------------------------------------------------------------------------- /databases/db_Flight.py: -------------------------------------------------------------------------------- 1 | from sqlalchemy import * 2 | from sqlalchemy.orm import * 3 | from sqlalchemy.ext.declarative import declarative_base 4 | 5 | My_databases = "mysql+pymysql://root:123456@localhost:3306/ams?charset=utf8mb4" 6 | engine = create_engine(My_databases)#连接数据库,创建数据库引擎变量 7 | 8 | Session = sessionmaker(bind=engine)#引用上面的eigne,将事务session与数据库绑定 9 | 10 | Base = declarative_base()#继承导入的模块,创建对象的基类 11 | 12 | #定义航班信息类 13 | class flight(Base): 14 | __tablename__ ='flight_info'#定义表名 15 | Flight_num = Column(VARCHAR(30),nullable=False,primary_key=True,comment='航班号',unique=True) 16 | Aircraft_num = Column(VARCHAR(30),nullable=False,comment='飞机号') 17 | Destination = Column(VARCHAR(30),nullable=False,comment='目的地') 18 | Start = Column(VARCHAR(30),nullable=False,comment='出发地') 19 | Num_bookings = Column(INTEGER,nullable=False,comment='订票数') 20 | Num_rm_tickets = Column(INTEGER,nullable=False,comment='余票数') 21 | 22 | def __init__(self,Flight_num,Aircraft_num,Start,Destination,Num_bookings,Num_rm_tickets): 23 | self.Flight_num = Flight_num#定义航班号 24 | self.Aircraft_num = Aircraft_num#定义飞机号 25 | self.Destination = Destination#定义目的地 26 | self.Num_bookings = Num_bookings#定义订票数 27 | self.Num_rm_tickets = Num_rm_tickets#定义余票数 28 | self.Start = Start#定义出发地 29 | 30 | #添加航班信息函数 31 | def add(self): 32 | session = Session() # 定义事务 33 | try: 34 | session.add(self)#事务增加数据 35 | session.commit()#提交事务,session自动过期而不需要关闭 36 | except Exception as e: 37 | session.rollback()#发生异常后回滚事务 38 | print('错误'+str(e)) 39 | 40 | #根据航班号删除航班信息 41 | def delete(self): 42 | session = Session() 43 | try: 44 | session.query(flight).filter_by(Flight_num=self.Flight_num).delete() 45 | #调用事务删除指定管理员用户名的数据库数据 46 | session.commit() 47 | except Exception as e: 48 | session.rollback() 49 | print('错误'+str(e)) 50 | 51 | #输出所有的航班信息 52 | def show_all(self): 53 | session =Session() 54 | try: 55 | list = session.query(flight).filter_by().all() 56 | return list 57 | except Exception as e: 58 | session.rollback() 59 | print(str(e)) 60 | #根据用户输入的航班号来输出除该航班号的其它所有航班信息 61 | def show_except(self): 62 | session = Session() 63 | try: 64 | list = session.query(flight).filter_by(Flight_num=self.Flight_num).all() 65 | return list 66 | except Exception as e: 67 | session.rollback() 68 | print(str(e)) 69 | 70 | #根据航班号判断是否有余票,返回BOOL值类型 71 | def ishave_tickets(self): 72 | session =Session() 73 | try: 74 | ticket = session.query(flight).filter_by(Flight_num=self.Flight_num,Num_rm_tickets =0).first() 75 | if ticket is None: 76 | return 1 77 | else: 78 | return 0 79 | except Exception as e: 80 | session.rollback() 81 | print(str(e)) 82 | 83 | #客户订票成功后,根据航班号让该航班的订票数加一,余票数减一 84 | def okbook(self): 85 | session = Session() 86 | try: 87 | ok = session.query(flight).filter_by(Flight_num=self.Flight_num).first() 88 | ok.Num_bookings += 1 89 | ok.Num_rm_tickets -=1 90 | session.commit() 91 | except Exception as e: 92 | print(str(e)) 93 | 94 | #客户退票成功后,根据航班号让该航班的订票数减一,余票数加一 95 | def cancelbook(self): 96 | session = Session() 97 | try: 98 | ok = session.query(flight).filter_by(Flight_num=self.Flight_num).first() 99 | ok.Num_bookings -= 1 100 | ok.Num_rm_tickets += 1 101 | session.commit() 102 | except Exception as e: 103 | print(str(e)) 104 | 105 | #当用户输入航班号时,根据航班号判断该航班号是否存在 106 | def isexited(self): 107 | session = Session() 108 | try: 109 | Fl = session.query(flight).filter_by(Flight_num=self.Flight_num).first() 110 | if Fl is not None: 111 | return 1 112 | else: 113 | return 0 114 | 115 | except Exception as e: 116 | session.rollback() 117 | print(str(e)) 118 | 119 | 120 | 121 | #以下为测试模块 122 | ''' 123 | try: 124 | pad = flight('','','','','','') 125 | list=pad.show_all() 126 | for i in list: 127 | print(i.Flight_num) 128 | except Exception as e: 129 | print(str(e)) 130 | ''' 131 | -------------------------------------------------------------------------------- /UI/Admin.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'Admin.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.10.1 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | class Ui_Admin(object): 12 | def setupUi(self, Admin): 13 | Admin.setObjectName("Admin") 14 | Admin.resize(400, 300) 15 | font = QtGui.QFont() 16 | font.setFamily("华文行楷") 17 | font.setPointSize(14) 18 | Admin.setFont(font) 19 | Admin.setStyleSheet("\n" 20 | "border-top:0px solid #e8f3f9;\n" 21 | "background-image: url(:/photo/561fadc8c3567.jpg);") 22 | self.label = QtWidgets.QLabel(Admin) 23 | self.label.setGeometry(QtCore.QRect(50, 50, 61, 21)) 24 | font = QtGui.QFont() 25 | font.setFamily("微软雅黑") 26 | font.setPointSize(14) 27 | self.label.setFont(font) 28 | self.label.setStyleSheet("border-image: url(:/label/timg.jpg);") 29 | self.label.setObjectName("label") 30 | self.lineEdit = QtWidgets.QLineEdit(Admin) 31 | self.lineEdit.setGeometry(QtCore.QRect(130, 50, 151, 20)) 32 | font = QtGui.QFont() 33 | font.setFamily("微软雅黑") 34 | font.setPointSize(12) 35 | self.lineEdit.setFont(font) 36 | self.lineEdit.setStyleSheet("border: 2px solid rgb(41,57,85);\n" 37 | "border-radius:6px;\n" 38 | "background:white;\n" 39 | "selection-background-color:green;\n" 40 | "") 41 | self.lineEdit.setObjectName("lineEdit") 42 | self.lineEdit_2 = QtWidgets.QLineEdit(Admin) 43 | self.lineEdit_2.setGeometry(QtCore.QRect(130, 100, 151, 20)) 44 | font = QtGui.QFont() 45 | font.setFamily("微软雅黑") 46 | font.setPointSize(12) 47 | self.lineEdit_2.setFont(font) 48 | self.lineEdit_2.setStyleSheet("border: 2px solid rgb(41,57,85);\n" 49 | "border-radius:6px;\n" 50 | "background:white;\n" 51 | "selection-background-color:green;\n" 52 | "") 53 | self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password) 54 | self.lineEdit_2.setObjectName("lineEdit_2") 55 | self.pushButton = QtWidgets.QPushButton(Admin) 56 | self.pushButton.setGeometry(QtCore.QRect(70, 180, 75, 23)) 57 | font = QtGui.QFont() 58 | font.setFamily("华文行楷") 59 | font.setPointSize(14) 60 | self.pushButton.setFont(font) 61 | self.pushButton.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 62 | "border-radius:6px;") 63 | self.pushButton.setObjectName("pushButton") 64 | self.pushButton_2 = QtWidgets.QPushButton(Admin) 65 | self.pushButton_2.setGeometry(QtCore.QRect(230, 180, 75, 23)) 66 | font = QtGui.QFont() 67 | font.setFamily("华文行楷") 68 | font.setPointSize(14) 69 | self.pushButton_2.setFont(font) 70 | self.pushButton_2.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 71 | "border-radius:6px;") 72 | self.pushButton_2.setObjectName("pushButton_2") 73 | self.label_2 = QtWidgets.QLabel(Admin) 74 | self.label_2.setGeometry(QtCore.QRect(50, 90, 71, 21)) 75 | font = QtGui.QFont() 76 | font.setFamily("微软雅黑") 77 | font.setPointSize(14) 78 | self.label_2.setFont(font) 79 | self.label_2.setStyleSheet("background-image: url(:/label/timg.jpg);") 80 | self.label_2.setObjectName("label_2") 81 | self.graphicsView = QtWidgets.QGraphicsView(Admin) 82 | self.graphicsView.setGeometry(QtCore.QRect(290, 30, 81, 121)) 83 | self.graphicsView.setStyleSheet("border-image: url(:/photo/snap2018-05-21-16-52-17.png);") 84 | self.graphicsView.setObjectName("graphicsView") 85 | self.label.raise_() 86 | self.lineEdit.raise_() 87 | self.lineEdit_2.raise_() 88 | self.label_2.raise_() 89 | self.pushButton.raise_() 90 | self.pushButton_2.raise_() 91 | self.graphicsView.raise_() 92 | 93 | self.retranslateUi(Admin) 94 | QtCore.QMetaObject.connectSlotsByName(Admin) 95 | 96 | def retranslateUi(self, Admin): 97 | _translate = QtCore.QCoreApplication.translate 98 | Admin.setWindowTitle(_translate("Admin", "登录")) 99 | self.label.setText(_translate("Admin", "用户名")) 100 | self.pushButton.setText(_translate("Admin", "确认")) 101 | self.pushButton_2.setText(_translate("Admin", "取消")) 102 | self.label_2.setText(_translate("Admin", "密码")) 103 | import qrc.plane_rc 104 | -------------------------------------------------------------------------------- /UI/OrP_zc.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | OrP_zc 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | 15 | 华文行楷 16 | 14 17 | 18 | 19 | 20 | 普通用户注册 21 | 22 | 23 | 24 | border-top:0px solid #e8f3f9; 25 | background-image: url(:/photo/561fadc8c3567.jpg); 26 | 27 | 28 | 29 | 30 | 60 31 | 50 32 | 71 33 | 21 34 | 35 | 36 | 37 | 38 | 微软雅黑 39 | 14 40 | 41 | 42 | 43 | background-image: url(:/label/timg.jpg); 44 | 45 | 46 | 姓名 47 | 48 | 49 | 50 | 51 | 52 | 50 53 | 120 54 | 81 55 | 21 56 | 57 | 58 | 59 | 60 | 微软雅黑 61 | 14 62 | 63 | 64 | 65 | background-image: url(:/label/timg.jpg); 66 | 67 | 68 | 身份证号 69 | 70 | 71 | 72 | 73 | 74 | 140 75 | 60 76 | 171 77 | 20 78 | 79 | 80 | 81 | 82 | 微软雅黑 83 | 12 84 | 85 | 86 | 87 | border: 2px solid rgb(41,57,85); 88 | border-radius:6px; 89 | background:white; 90 | selection-background-color:green; 91 | 92 | 93 | 94 | 95 | 96 | 97 | 142 98 | 120 99 | 171 100 | 20 101 | 102 | 103 | 104 | 105 | 微软雅黑 106 | 12 107 | 108 | 109 | 110 | border: 2px solid rgb(41,57,85); 111 | border-radius:6px; 112 | background:white; 113 | selection-background-color:green; 114 | 115 | 116 | 117 | 118 | 119 | 120 | 70 121 | 200 122 | 75 123 | 23 124 | 125 | 126 | 127 | 128 | 华文行楷 129 | 14 130 | 131 | 132 | 133 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 134 | border-radius:6px; 135 | 136 | 137 | 确认 138 | 139 | 140 | 141 | 142 | 143 | 240 144 | 200 145 | 75 146 | 23 147 | 148 | 149 | 150 | 151 | 华文行楷 152 | 14 153 | 154 | 155 | 156 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 157 | border-radius:6px; 158 | 159 | 160 | 取消 161 | 162 | 163 | 164 | 165 | 166 | 320 167 | 30 168 | 81 169 | 121 170 | 171 | 172 | 173 | border-image: url(:/photo/snap2018-05-21-16-52-17.png); 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | -------------------------------------------------------------------------------- /UI/OrP.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'OrP.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.10.1 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | class Ui_OrP(object): 12 | def setupUi(self, OrP): 13 | OrP.setObjectName("OrP") 14 | OrP.resize(400, 300) 15 | font = QtGui.QFont() 16 | font.setFamily("华文行楷") 17 | font.setPointSize(14) 18 | OrP.setFont(font) 19 | OrP.setStyleSheet("\n" 20 | "border-top:0px solid #e8f3f9;\n" 21 | "background-image: url(:/photo/561fadc8c3567.jpg);") 22 | self.label = QtWidgets.QLabel(OrP) 23 | self.label.setGeometry(QtCore.QRect(50, 60, 71, 21)) 24 | font = QtGui.QFont() 25 | font.setFamily("微软雅黑") 26 | font.setPointSize(14) 27 | self.label.setFont(font) 28 | self.label.setStyleSheet("background-image: url(:/label/timg.jpg);") 29 | self.label.setObjectName("label") 30 | self.label_2 = QtWidgets.QLabel(OrP) 31 | self.label_2.setGeometry(QtCore.QRect(50, 110, 81, 20)) 32 | font = QtGui.QFont() 33 | font.setFamily("微软雅黑") 34 | font.setPointSize(14) 35 | self.label_2.setFont(font) 36 | self.label_2.setStyleSheet("background-image: url(:/label/timg.jpg);") 37 | self.label_2.setObjectName("label_2") 38 | self.lineEdit = QtWidgets.QLineEdit(OrP) 39 | self.lineEdit.setGeometry(QtCore.QRect(140, 60, 171, 20)) 40 | font = QtGui.QFont() 41 | font.setFamily("微软雅黑") 42 | font.setPointSize(12) 43 | self.lineEdit.setFont(font) 44 | self.lineEdit.setStyleSheet("border: 2px solid rgb(41,57,85);\n" 45 | "border-radius:6px;\n" 46 | "background:white;\n" 47 | "selection-background-color:green;\n" 48 | "") 49 | self.lineEdit.setObjectName("lineEdit") 50 | self.lineEdit_2 = QtWidgets.QLineEdit(OrP) 51 | self.lineEdit_2.setGeometry(QtCore.QRect(140, 110, 171, 20)) 52 | font = QtGui.QFont() 53 | font.setFamily("微软雅黑") 54 | font.setPointSize(12) 55 | self.lineEdit_2.setFont(font) 56 | self.lineEdit_2.setStyleSheet("border: 2px solid rgb(41,57,85);\n" 57 | "border-radius:6px;\n" 58 | "background:white;\n" 59 | "selection-background-color:green;\n" 60 | "") 61 | self.lineEdit_2.setObjectName("lineEdit_2") 62 | self.layoutWidget = QtWidgets.QWidget(OrP) 63 | self.layoutWidget.setGeometry(QtCore.QRect(80, 190, 239, 29)) 64 | self.layoutWidget.setObjectName("layoutWidget") 65 | self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget) 66 | self.horizontalLayout.setContentsMargins(0, 0, 0, 0) 67 | self.horizontalLayout.setObjectName("horizontalLayout") 68 | self.pushButton = QtWidgets.QPushButton(self.layoutWidget) 69 | font = QtGui.QFont() 70 | font.setFamily("华文行楷") 71 | font.setPointSize(14) 72 | self.pushButton.setFont(font) 73 | self.pushButton.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 74 | "border-radius:6px;") 75 | self.pushButton.setObjectName("pushButton") 76 | self.horizontalLayout.addWidget(self.pushButton) 77 | self.pushButton_2 = QtWidgets.QPushButton(self.layoutWidget) 78 | font = QtGui.QFont() 79 | font.setFamily("华文行楷") 80 | font.setPointSize(14) 81 | self.pushButton_2.setFont(font) 82 | self.pushButton_2.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 83 | "border-radius:6px;") 84 | self.pushButton_2.setObjectName("pushButton_2") 85 | self.horizontalLayout.addWidget(self.pushButton_2) 86 | self.pushButton_3 = QtWidgets.QPushButton(self.layoutWidget) 87 | font = QtGui.QFont() 88 | font.setFamily("华文行楷") 89 | font.setPointSize(14) 90 | self.pushButton_3.setFont(font) 91 | self.pushButton_3.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 92 | "border-radius:6px;") 93 | self.pushButton_3.setObjectName("pushButton_3") 94 | self.horizontalLayout.addWidget(self.pushButton_3) 95 | self.graphicsView = QtWidgets.QGraphicsView(OrP) 96 | self.graphicsView.setGeometry(QtCore.QRect(320, 30, 81, 121)) 97 | self.graphicsView.setStyleSheet("border-image: url(:/photo/snap2018-05-21-16-52-17.png);") 98 | self.graphicsView.setObjectName("graphicsView") 99 | 100 | self.retranslateUi(OrP) 101 | QtCore.QMetaObject.connectSlotsByName(OrP) 102 | 103 | def retranslateUi(self, OrP): 104 | _translate = QtCore.QCoreApplication.translate 105 | OrP.setWindowTitle(_translate("OrP", "普通用户登录")) 106 | self.label.setText(_translate("OrP", "姓名")) 107 | self.label_2.setText(_translate("OrP", "身份证号")) 108 | self.pushButton.setText(_translate("OrP", "确认")) 109 | self.pushButton_2.setText(_translate("OrP", "注册")) 110 | self.pushButton_3.setText(_translate("OrP", "取消")) 111 | 112 | import qrc.plane_rc 113 | -------------------------------------------------------------------------------- /UI/VIP.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'VIP.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.10.1 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | class Ui_VIP(object): 12 | def setupUi(self, VIP): 13 | VIP.setObjectName("VIP") 14 | VIP.resize(400, 300) 15 | font = QtGui.QFont() 16 | font.setFamily("华文行楷") 17 | font.setPointSize(14) 18 | VIP.setFont(font) 19 | VIP.setStyleSheet("\n" 20 | "border-top:0px solid #e8f3f9;\n" 21 | "background-image: url(:/photo/561fadc8c3567.jpg);") 22 | self.label = QtWidgets.QLabel(VIP) 23 | self.label.setGeometry(QtCore.QRect(70, 50, 61, 20)) 24 | font = QtGui.QFont() 25 | font.setFamily("微软雅黑") 26 | font.setPointSize(14) 27 | self.label.setFont(font) 28 | self.label.setStyleSheet("background-image: url(:/label/timg.jpg);") 29 | self.label.setObjectName("label") 30 | self.label_2 = QtWidgets.QLabel(VIP) 31 | self.label_2.setGeometry(QtCore.QRect(50, 110, 81, 20)) 32 | font = QtGui.QFont() 33 | font.setFamily("微软雅黑") 34 | font.setPointSize(14) 35 | self.label_2.setFont(font) 36 | self.label_2.setStyleSheet("background-image: url(:/label/timg.jpg);") 37 | self.label_2.setObjectName("label_2") 38 | self.lineEdit = QtWidgets.QLineEdit(VIP) 39 | self.lineEdit.setGeometry(QtCore.QRect(150, 50, 151, 20)) 40 | font = QtGui.QFont() 41 | font.setFamily("微软雅黑") 42 | font.setPointSize(12) 43 | self.lineEdit.setFont(font) 44 | self.lineEdit.setStyleSheet("border: 2px solid rgb(41,57,85);\n" 45 | "border-radius:6px;\n" 46 | "background:white;\n" 47 | "selection-background-color:green;\n" 48 | "") 49 | self.lineEdit.setObjectName("lineEdit") 50 | self.lineEdit_2 = QtWidgets.QLineEdit(VIP) 51 | self.lineEdit_2.setGeometry(QtCore.QRect(150, 110, 151, 20)) 52 | font = QtGui.QFont() 53 | font.setFamily("微软雅黑") 54 | font.setPointSize(12) 55 | self.lineEdit_2.setFont(font) 56 | self.lineEdit_2.setStyleSheet("border: 2px solid rgb(41,57,85);\n" 57 | "border-radius:6px;\n" 58 | "background:white;\n" 59 | "selection-background-color:green;\n" 60 | "") 61 | self.lineEdit_2.setObjectName("lineEdit_2") 62 | self.layoutWidget = QtWidgets.QWidget(VIP) 63 | self.layoutWidget.setGeometry(QtCore.QRect(80, 180, 239, 29)) 64 | self.layoutWidget.setObjectName("layoutWidget") 65 | self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget) 66 | self.horizontalLayout.setContentsMargins(0, 0, 0, 0) 67 | self.horizontalLayout.setObjectName("horizontalLayout") 68 | self.pushButton = QtWidgets.QPushButton(self.layoutWidget) 69 | font = QtGui.QFont() 70 | font.setFamily("华文行楷") 71 | font.setPointSize(14) 72 | self.pushButton.setFont(font) 73 | self.pushButton.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 74 | "border-radius:6px;") 75 | self.pushButton.setObjectName("pushButton") 76 | self.horizontalLayout.addWidget(self.pushButton) 77 | self.pushButton_2 = QtWidgets.QPushButton(self.layoutWidget) 78 | font = QtGui.QFont() 79 | font.setFamily("华文行楷") 80 | font.setPointSize(14) 81 | self.pushButton_2.setFont(font) 82 | self.pushButton_2.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 83 | "border-radius:6px;") 84 | self.pushButton_2.setObjectName("pushButton_2") 85 | self.horizontalLayout.addWidget(self.pushButton_2) 86 | self.pushButton_3 = QtWidgets.QPushButton(self.layoutWidget) 87 | font = QtGui.QFont() 88 | font.setFamily("华文行楷") 89 | font.setPointSize(14) 90 | self.pushButton_3.setFont(font) 91 | self.pushButton_3.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 92 | "border-radius:6px;") 93 | self.pushButton_3.setObjectName("pushButton_3") 94 | self.horizontalLayout.addWidget(self.pushButton_3) 95 | self.graphicsView_2 = QtWidgets.QGraphicsView(VIP) 96 | self.graphicsView_2.setGeometry(QtCore.QRect(310, 40, 81, 121)) 97 | self.graphicsView_2.setStyleSheet("border-image: url(:/photo/snap2018-05-21-16-52-17.png);") 98 | self.graphicsView_2.setObjectName("graphicsView_2") 99 | 100 | self.retranslateUi(VIP) 101 | QtCore.QMetaObject.connectSlotsByName(VIP) 102 | 103 | def retranslateUi(self, VIP): 104 | _translate = QtCore.QCoreApplication.translate 105 | VIP.setWindowTitle(_translate("VIP", "VIP用户登录")) 106 | self.label.setText(_translate("VIP", "姓名")) 107 | self.label_2.setText(_translate("VIP", "身份证号")) 108 | self.pushButton.setText(_translate("VIP", "确认")) 109 | self.pushButton_2.setText(_translate("VIP", "注册")) 110 | self.pushButton_3.setText(_translate("VIP", "取消")) 111 | 112 | import qrc.plane_rc 113 | -------------------------------------------------------------------------------- /UI/Worker.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Worker 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | 15 | 华文行楷 16 | 14 17 | 18 | 19 | 20 | 操作员登录 21 | 22 | 23 | 24 | border-top:0px solid #e8f3f9; 25 | background-image: url(:/photo/561fadc8c3567.jpg); 26 | 27 | 28 | 29 | 30 | 60 31 | 50 32 | 61 33 | 21 34 | 35 | 36 | 37 | 38 | 微软雅黑 39 | 14 40 | 41 | 42 | 43 | background-image: url(:/label/timg.jpg); 44 | 45 | 46 | 账号 47 | 48 | 49 | 50 | 51 | 52 | 60 53 | 100 54 | 61 55 | 21 56 | 57 | 58 | 59 | 60 | 微软雅黑 61 | 14 62 | 63 | 64 | 65 | background-image: url(:/label/timg.jpg); 66 | 67 | 68 | 密码 69 | 70 | 71 | 72 | 73 | 74 | 140 75 | 50 76 | 151 77 | 20 78 | 79 | 80 | 81 | 82 | 微软雅黑 83 | 12 84 | 85 | 86 | 87 | border: 2px solid rgb(41,57,85); 88 | border-radius:6px; 89 | background:white; 90 | selection-background-color:green; 91 | 92 | 93 | 94 | QLineEdit::Normal 95 | 96 | 97 | 98 | 99 | 100 | 140 101 | 100 102 | 151 103 | 20 104 | 105 | 106 | 107 | 108 | 微软雅黑 109 | 12 110 | 111 | 112 | 113 | border: 2px solid rgb(41,57,85); 114 | border-radius:6px; 115 | background:white; 116 | selection-background-color:green; 117 | 118 | 119 | 120 | QLineEdit::Password 121 | 122 | 123 | 124 | 125 | 126 | 70 127 | 200 128 | 75 129 | 23 130 | 131 | 132 | 133 | 134 | 华文行楷 135 | 14 136 | 137 | 138 | 139 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 140 | border-radius:6px; 141 | 142 | 143 | 确认 144 | 145 | 146 | 147 | 148 | 149 | 230 150 | 200 151 | 75 152 | 23 153 | 154 | 155 | 156 | 157 | 华文行楷 158 | 14 159 | 160 | 161 | 162 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 163 | border-radius:6px; 164 | 165 | 166 | 取消 167 | 168 | 169 | 170 | 171 | 172 | 320 173 | 50 174 | 81 175 | 121 176 | 177 | 178 | 179 | border-image: url(:/photo/snap2018-05-21-16-52-17.png); 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | -------------------------------------------------------------------------------- /UI/VIP_zc.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | # Form implementation generated from reading ui file 'VIP_zc.ui' 4 | # 5 | # Created by: PyQt5 UI code generator 5.10.1 6 | # 7 | # WARNING! All changes made in this file will be lost! 8 | 9 | from PyQt5 import QtCore, QtGui, QtWidgets 10 | 11 | class Ui_VIP_zc(object): 12 | def setupUi(self, VIP_zc): 13 | VIP_zc.setObjectName("VIP_zc") 14 | VIP_zc.resize(400, 300) 15 | font = QtGui.QFont() 16 | font.setFamily("华文行楷") 17 | font.setPointSize(14) 18 | VIP_zc.setFont(font) 19 | VIP_zc.setStyleSheet("\n" 20 | "border-top:0px solid #e8f3f9;\n" 21 | "background-image: url(:/photo/561fadc8c3567.jpg);") 22 | self.label = QtWidgets.QLabel(VIP_zc) 23 | self.label.setGeometry(QtCore.QRect(60, 50, 71, 21)) 24 | font = QtGui.QFont() 25 | font.setFamily("微软雅黑") 26 | font.setPointSize(14) 27 | self.label.setFont(font) 28 | self.label.setStyleSheet("background-image: url(:/label/timg.jpg);") 29 | self.label.setObjectName("label") 30 | self.label_2 = QtWidgets.QLabel(VIP_zc) 31 | self.label_2.setGeometry(QtCore.QRect(40, 120, 91, 21)) 32 | font = QtGui.QFont() 33 | font.setFamily("微软雅黑") 34 | font.setPointSize(14) 35 | self.label_2.setFont(font) 36 | self.label_2.setStyleSheet("background-image: url(:/label/timg.jpg);") 37 | self.label_2.setObjectName("label_2") 38 | self.lineEdit = QtWidgets.QLineEdit(VIP_zc) 39 | self.lineEdit.setGeometry(QtCore.QRect(160, 60, 151, 20)) 40 | font = QtGui.QFont() 41 | font.setFamily("微软雅黑") 42 | font.setPointSize(12) 43 | self.lineEdit.setFont(font) 44 | self.lineEdit.setStyleSheet("border: 2px solid rgb(41,57,85);\n" 45 | "border-radius:6px;\n" 46 | "background:white;\n" 47 | "selection-background-color:green;\n" 48 | "") 49 | self.lineEdit.setObjectName("lineEdit") 50 | self.lineEdit_2 = QtWidgets.QLineEdit(VIP_zc) 51 | self.lineEdit_2.setGeometry(QtCore.QRect(160, 120, 151, 20)) 52 | font = QtGui.QFont() 53 | font.setFamily("微软雅黑") 54 | font.setPointSize(12) 55 | self.lineEdit_2.setFont(font) 56 | self.lineEdit_2.setStyleSheet("border: 2px solid rgb(41,57,85);\n" 57 | "border-radius:6px;\n" 58 | "background:white;\n" 59 | "selection-background-color:green;\n" 60 | "") 61 | self.lineEdit_2.setObjectName("lineEdit_2") 62 | self.label_3 = QtWidgets.QLabel(VIP_zc) 63 | self.label_3.setGeometry(QtCore.QRect(50, 180, 71, 20)) 64 | font = QtGui.QFont() 65 | font.setFamily("微软雅黑") 66 | font.setPointSize(14) 67 | self.label_3.setFont(font) 68 | self.label_3.setStyleSheet("background-image: url(:/label/timg.jpg);") 69 | self.label_3.setObjectName("label_3") 70 | self.lineEdit_3 = QtWidgets.QLineEdit(VIP_zc) 71 | self.lineEdit_3.setGeometry(QtCore.QRect(160, 180, 151, 20)) 72 | font = QtGui.QFont() 73 | font.setFamily("微软雅黑") 74 | font.setPointSize(12) 75 | self.lineEdit_3.setFont(font) 76 | self.lineEdit_3.setStyleSheet("border: 2px solid rgb(41,57,85);\n" 77 | "border-radius:6px;\n" 78 | "background:white;\n" 79 | "selection-background-color:green;\n" 80 | "") 81 | self.lineEdit_3.setEchoMode(QtWidgets.QLineEdit.Password) 82 | self.lineEdit_3.setObjectName("lineEdit_3") 83 | self.pushButton = QtWidgets.QPushButton(VIP_zc) 84 | self.pushButton.setGeometry(QtCore.QRect(80, 240, 75, 23)) 85 | font = QtGui.QFont() 86 | font.setFamily("华文行楷") 87 | font.setPointSize(14) 88 | self.pushButton.setFont(font) 89 | self.pushButton.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 90 | "border-radius:6px;") 91 | self.pushButton.setObjectName("pushButton") 92 | self.pushButton_2 = QtWidgets.QPushButton(VIP_zc) 93 | self.pushButton_2.setGeometry(QtCore.QRect(240, 240, 75, 23)) 94 | font = QtGui.QFont() 95 | font.setFamily("华文行楷") 96 | font.setPointSize(14) 97 | self.pushButton_2.setFont(font) 98 | self.pushButton_2.setStyleSheet("background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85);\n" 99 | "border-radius:6px;") 100 | self.pushButton_2.setObjectName("pushButton_2") 101 | self.graphicsView = QtWidgets.QGraphicsView(VIP_zc) 102 | self.graphicsView.setGeometry(QtCore.QRect(320, 50, 81, 121)) 103 | self.graphicsView.setStyleSheet("border-image: url(:/photo/snap2018-05-21-16-52-17.png);") 104 | self.graphicsView.setObjectName("graphicsView") 105 | 106 | self.retranslateUi(VIP_zc) 107 | QtCore.QMetaObject.connectSlotsByName(VIP_zc) 108 | 109 | def retranslateUi(self, VIP_zc): 110 | _translate = QtCore.QCoreApplication.translate 111 | VIP_zc.setWindowTitle(_translate("VIP_zc", "VIP用户注册")) 112 | self.label.setText(_translate("VIP_zc", "姓名")) 113 | self.label_2.setText(_translate("VIP_zc", "身份证号")) 114 | self.label_3.setText(_translate("VIP_zc", "邀请码")) 115 | self.pushButton.setText(_translate("VIP_zc", "确认")) 116 | self.pushButton_2.setText(_translate("VIP_zc", "取消")) 117 | 118 | import qrc.plane_rc 119 | -------------------------------------------------------------------------------- /UI/Admin.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | Admin 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | 15 | 华文行楷 16 | 14 17 | 18 | 19 | 20 | 登录 21 | 22 | 23 | 24 | border-top:0px solid #e8f3f9; 25 | background-image: url(:/photo/561fadc8c3567.jpg); 26 | 27 | 28 | 29 | 30 | 50 31 | 50 32 | 61 33 | 21 34 | 35 | 36 | 37 | 38 | 微软雅黑 39 | 14 40 | 41 | 42 | 43 | border-image: url(:/label/timg.jpg); 44 | 45 | 46 | 用户名 47 | 48 | 49 | 50 | 51 | 52 | 130 53 | 50 54 | 151 55 | 20 56 | 57 | 58 | 59 | 60 | 微软雅黑 61 | 12 62 | 63 | 64 | 65 | border: 2px solid rgb(41,57,85); 66 | border-radius:6px; 67 | background:white; 68 | selection-background-color:green; 69 | 70 | 71 | 72 | 73 | 74 | 75 | 130 76 | 100 77 | 151 78 | 20 79 | 80 | 81 | 82 | 83 | 微软雅黑 84 | 12 85 | 86 | 87 | 88 | border: 2px solid rgb(41,57,85); 89 | border-radius:6px; 90 | background:white; 91 | selection-background-color:green; 92 | 93 | 94 | 95 | QLineEdit::Password 96 | 97 | 98 | 99 | 100 | 101 | 70 102 | 180 103 | 75 104 | 23 105 | 106 | 107 | 108 | 109 | 华文行楷 110 | 14 111 | 112 | 113 | 114 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 115 | border-radius:6px; 116 | 117 | 118 | 确认 119 | 120 | 121 | 122 | 123 | 124 | 230 125 | 180 126 | 75 127 | 23 128 | 129 | 130 | 131 | 132 | 华文行楷 133 | 14 134 | 135 | 136 | 137 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 138 | border-radius:6px; 139 | 140 | 141 | 取消 142 | 143 | 144 | 145 | 146 | 147 | 50 148 | 90 149 | 71 150 | 21 151 | 152 | 153 | 154 | 155 | 微软雅黑 156 | 14 157 | 158 | 159 | 160 | background-image: url(:/label/timg.jpg); 161 | 162 | 163 | 密码 164 | 165 | 166 | 167 | 168 | 169 | 290 170 | 30 171 | 81 172 | 121 173 | 174 | 175 | 176 | border-image: url(:/photo/snap2018-05-21-16-52-17.png); 177 | 178 | 179 | label 180 | lineEdit 181 | lineEdit_2 182 | label_2 183 | pushButton 184 | pushButton_2 185 | graphicsView 186 | 187 | 188 | 189 | 190 | 191 | 192 | -------------------------------------------------------------------------------- /UI/OrP.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | OrP 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | 15 | 华文行楷 16 | 14 17 | 18 | 19 | 20 | 普通用户登录 21 | 22 | 23 | 24 | border-top:0px solid #e8f3f9; 25 | background-image: url(:/photo/561fadc8c3567.jpg); 26 | 27 | 28 | 29 | 30 | 50 31 | 60 32 | 71 33 | 21 34 | 35 | 36 | 37 | 38 | 微软雅黑 39 | 14 40 | 41 | 42 | 43 | background-image: url(:/label/timg.jpg); 44 | 45 | 46 | 姓名 47 | 48 | 49 | 50 | 51 | 52 | 50 53 | 110 54 | 81 55 | 20 56 | 57 | 58 | 59 | 60 | 微软雅黑 61 | 14 62 | 63 | 64 | 65 | background-image: url(:/label/timg.jpg); 66 | 67 | 68 | 身份证号 69 | 70 | 71 | 72 | 73 | 74 | 140 75 | 60 76 | 171 77 | 20 78 | 79 | 80 | 81 | 82 | 微软雅黑 83 | 12 84 | 85 | 86 | 87 | border: 2px solid rgb(41,57,85); 88 | border-radius:6px; 89 | background:white; 90 | selection-background-color:green; 91 | 92 | 93 | 94 | 95 | 96 | 97 | 140 98 | 110 99 | 171 100 | 20 101 | 102 | 103 | 104 | 105 | 微软雅黑 106 | 12 107 | 108 | 109 | 110 | border: 2px solid rgb(41,57,85); 111 | border-radius:6px; 112 | background:white; 113 | selection-background-color:green; 114 | 115 | 116 | 117 | 118 | 119 | 120 | 80 121 | 190 122 | 239 123 | 29 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 华文行楷 132 | 14 133 | 134 | 135 | 136 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 137 | border-radius:6px; 138 | 139 | 140 | 确认 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 华文行楷 149 | 14 150 | 151 | 152 | 153 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 154 | border-radius:6px; 155 | 156 | 157 | 注册 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 华文行楷 166 | 14 167 | 168 | 169 | 170 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 171 | border-radius:6px; 172 | 173 | 174 | 取消 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 320 184 | 30 185 | 81 186 | 121 187 | 188 | 189 | 190 | border-image: url(:/photo/snap2018-05-21-16-52-17.png); 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | -------------------------------------------------------------------------------- /UI/VIP.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | VIP 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | 15 | 华文行楷 16 | 14 17 | 18 | 19 | 20 | VIP用户登录 21 | 22 | 23 | 24 | border-top:0px solid #e8f3f9; 25 | background-image: url(:/photo/561fadc8c3567.jpg); 26 | 27 | 28 | 29 | 30 | 70 31 | 50 32 | 61 33 | 20 34 | 35 | 36 | 37 | 38 | 微软雅黑 39 | 14 40 | 41 | 42 | 43 | background-image: url(:/label/timg.jpg); 44 | 45 | 46 | 姓名 47 | 48 | 49 | 50 | 51 | 52 | 50 53 | 110 54 | 81 55 | 20 56 | 57 | 58 | 59 | 60 | 微软雅黑 61 | 14 62 | 63 | 64 | 65 | background-image: url(:/label/timg.jpg); 66 | 67 | 68 | 身份证号 69 | 70 | 71 | 72 | 73 | 74 | 150 75 | 50 76 | 151 77 | 20 78 | 79 | 80 | 81 | 82 | 微软雅黑 83 | 12 84 | 85 | 86 | 87 | border: 2px solid rgb(41,57,85); 88 | border-radius:6px; 89 | background:white; 90 | selection-background-color:green; 91 | 92 | 93 | 94 | 95 | 96 | 97 | 150 98 | 110 99 | 151 100 | 20 101 | 102 | 103 | 104 | 105 | 微软雅黑 106 | 12 107 | 108 | 109 | 110 | border: 2px solid rgb(41,57,85); 111 | border-radius:6px; 112 | background:white; 113 | selection-background-color:green; 114 | 115 | 116 | 117 | 118 | 119 | 120 | 80 121 | 180 122 | 239 123 | 29 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 华文行楷 132 | 14 133 | 134 | 135 | 136 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 137 | border-radius:6px; 138 | 139 | 140 | 确认 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 华文行楷 149 | 14 150 | 151 | 152 | 153 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 154 | border-radius:6px; 155 | 156 | 157 | 注册 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 华文行楷 166 | 14 167 | 168 | 169 | 170 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 171 | border-radius:6px; 172 | 173 | 174 | 取消 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 310 184 | 40 185 | 81 186 | 121 187 | 188 | 189 | 190 | border-image: url(:/photo/snap2018-05-21-16-52-17.png); 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | -------------------------------------------------------------------------------- /UI/VIP_zc.ui: -------------------------------------------------------------------------------- 1 | 2 | 3 | VIP_zc 4 | 5 | 6 | 7 | 0 8 | 0 9 | 400 10 | 300 11 | 12 | 13 | 14 | 15 | 华文行楷 16 | 14 17 | 18 | 19 | 20 | VIP用户注册 21 | 22 | 23 | 24 | border-top:0px solid #e8f3f9; 25 | background-image: url(:/photo/561fadc8c3567.jpg); 26 | 27 | 28 | 29 | 30 | 60 31 | 50 32 | 71 33 | 21 34 | 35 | 36 | 37 | 38 | 微软雅黑 39 | 14 40 | 41 | 42 | 43 | background-image: url(:/label/timg.jpg); 44 | 45 | 46 | 姓名 47 | 48 | 49 | 50 | 51 | 52 | 40 53 | 120 54 | 91 55 | 21 56 | 57 | 58 | 59 | 60 | 微软雅黑 61 | 14 62 | 63 | 64 | 65 | background-image: url(:/label/timg.jpg); 66 | 67 | 68 | 身份证号 69 | 70 | 71 | 72 | 73 | 74 | 160 75 | 60 76 | 151 77 | 20 78 | 79 | 80 | 81 | 82 | 微软雅黑 83 | 12 84 | 85 | 86 | 87 | border: 2px solid rgb(41,57,85); 88 | border-radius:6px; 89 | background:white; 90 | selection-background-color:green; 91 | 92 | 93 | 94 | 95 | 96 | 97 | 160 98 | 120 99 | 151 100 | 20 101 | 102 | 103 | 104 | 105 | 微软雅黑 106 | 12 107 | 108 | 109 | 110 | border: 2px solid rgb(41,57,85); 111 | border-radius:6px; 112 | background:white; 113 | selection-background-color:green; 114 | 115 | 116 | 117 | 118 | 119 | 120 | 50 121 | 180 122 | 71 123 | 20 124 | 125 | 126 | 127 | 128 | 微软雅黑 129 | 14 130 | 131 | 132 | 133 | background-image: url(:/label/timg.jpg); 134 | 135 | 136 | 邀请码 137 | 138 | 139 | 140 | 141 | 142 | 160 143 | 180 144 | 151 145 | 20 146 | 147 | 148 | 149 | 150 | 微软雅黑 151 | 12 152 | 153 | 154 | 155 | border: 2px solid rgb(41,57,85); 156 | border-radius:6px; 157 | background:white; 158 | selection-background-color:green; 159 | 160 | 161 | 162 | QLineEdit::Password 163 | 164 | 165 | 166 | 167 | 168 | 80 169 | 240 170 | 75 171 | 23 172 | 173 | 174 | 175 | 176 | 华文行楷 177 | 14 178 | 179 | 180 | 181 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 182 | border-radius:6px; 183 | 184 | 185 | 确认 186 | 187 | 188 | 189 | 190 | 191 | 240 192 | 240 193 | 75 194 | 23 195 | 196 | 197 | 198 | 199 | 华文行楷 200 | 14 201 | 202 | 203 | 204 | background-color:rgb(0, 170, 255);border: 2px solid rgb(41,57,85); 205 | border-radius:6px; 206 | 207 | 208 | 取消 209 | 210 | 211 | 212 | 213 | 214 | 320 215 | 50 216 | 81 217 | 121 218 | 219 | 220 | 221 | border-image: url(:/photo/snap2018-05-21-16-52-17.png); 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import time # 增加延时,使启动界面时间足够 3 | from PyQt5.QtCore import * 4 | from PyQt5.QtGui import * 5 | from PyQt5.QtWidgets import * 6 | from UI.Admin import * 7 | from UI.OrP import * 8 | from UI.OrP_zc import * 9 | from UI.Worker import * 10 | from test_plus import * 11 | from UI.VIP import * 12 | from UI.VIP_zc import * 13 | from databases.db_Flight import * 14 | from databases.db_Admin import * 15 | from databases.db_Booked import * 16 | from databases.db_OrdinaryP import * 17 | from databases.db_VIP import * 18 | from databases.db_Worker import * 19 | 20 | 21 | 22 | #定义跳出超级管理员登录页面的类 23 | class Window_Sadmin(QDialog,Ui_Admin): 24 | def __init__(self): 25 | QDialog.__init__(self,parent=None) 26 | self.setupUi(self) 27 | #定义获取输入框管理员账号的函数 28 | def get_zhanghao(self): 29 | return self.lineEdit.text()#返回第一个单行文本框的输入内容 30 | 31 | #定义获取输入框管理员密码的函数 32 | def get_mima(self): 33 | return self.lineEdit_2.text()#返回第二个单行文本框的输入内容 34 | 35 | #定义登录界面中确认pushButton的触发器函数 36 | @pyqtSlot() 37 | def on_pushButton_clicked(self): 38 | if self.get_zhanghao() == 'James' and self.get_mima() == '123456': # 当账号密码匹配成功时,代表登录成功 39 | QMessageBox.information(self, '成功', '登录成功!') 40 | self.close() 41 | return 1 42 | else: 43 | QMessageBox.information(self, 'error', '账号或者密码错误!请重新输入') 44 | self.lineEdit.setText('') # 将第一个单行文本框清空 45 | self.lineEdit_2.setText('') # 将第二个单行文本框清空 46 | return 0 47 | 48 | @pyqtSlot() 49 | #定义登录界面中取消pushButton2的触发器函数 50 | def on_pushButton_2_clicked(self): 51 | self.close() 52 | 53 | # 定义跳出普通管理员登录页面的类 54 | class Window_Padmin(QDialog, Ui_Admin): 55 | def __init__(self): 56 | QDialog.__init__(self, parent=None) 57 | self.setupUi(self) 58 | 59 | # 定义获取输入框管理员账号的函数 60 | def get_zhanghao(self): 61 | return self.lineEdit.text() # 返回第一个单行文本框的输入内容 62 | 63 | # 定义获取输入框管理员密码的函数 64 | def get_mima(self): 65 | return self.lineEdit_2.text() # 返回第二个单行文本框的输入内容 66 | 67 | # 定义登录界面中确认pushButton的触发器函数 68 | @pyqtSlot() 69 | def on_pushButton_clicked(self): 70 | pad = admin(self.get_zhanghao(),self.get_mima())#建立一个管理员数据库类的对象变量 71 | if pad.isExited(): # 当账号密码匹配成功时,代表登录成功,导入了管理员数据库类中的判断账号密码是否存在的函数isExited() 72 | QMessageBox.information(self, '成功', '登录成功!') 73 | self.close() 74 | return 1 75 | else: 76 | QMessageBox.information(self, 'error', '账号或者密码错误!请重新输入') 77 | self.lineEdit.setText('') # 将第一个单行文本框清空 78 | self.lineEdit_2.setText('') # 将第二个单行文本框清空 79 | return 0 80 | 81 | 82 | @pyqtSlot() 83 | # 定义登录界面中取消pushButton2的触发器函数 84 | def on_pushButton_2_clicked(self): 85 | self.close() 86 | 87 | #定义跳出操作员登录页面的类 88 | class Window_worker(QDialog,Ui_Worker): 89 | def __init__(self): 90 | QDialog.__init__(self,parent=None) 91 | self.setupUi(self) 92 | 93 | def get_zhanghao(self): 94 | return self.lineEdit.text()#获得操作员账号,返回第一个单行文本框的内容 95 | 96 | def get_mima(self): 97 | return self.lineEdit_2.text()#获得操作员密码,返回第二个单行文本框的内容 98 | 99 | #定义操作员登录界面的确认按钮的触发器函数 100 | @pyqtSlot() 101 | def on_pushButton_clicked(self): 102 | pad = Worker(self.get_zhanghao(),self.get_mima())#导入操作员数据库,定义操作员类的对象变量 103 | if pad.isExited():#当账号密码在数据库中有备份时,才可以接下来的操作 104 | QMessageBox.information(self,'成功','登录成功!') 105 | self.close()#登录成功后关闭对话框 106 | return 1 107 | else:#数据库中没有该用户 108 | QMessageBox.information(self,'error','账号或密码错误') 109 | self.lineEdit.setText('') 110 | self.lineEdit_2.setText('') 111 | return 0 112 | #定义界面取消按钮的触发器函数 113 | 114 | @pyqtSlot() 115 | def on_pushButton_2_clicked(self): 116 | self.close()#关闭登录窗口 117 | 118 | 119 | #定义跳出普通用户登录页面的类 120 | class Window_OrP(QDialog,Ui_OrP): 121 | def __init__(self): 122 | QDialog.__init__(self,parent=None) 123 | self.setupUi(self) 124 | #定义从单行文本框获取用户姓名的函数 125 | def getname(self): 126 | return self.lineEdit.text() 127 | #定义从单行文本框获取的用户的身份证号的函数 128 | def getid(self): 129 | return self.lineEdit_2.text() 130 | #定义普通用户登录栏中确认按钮的触发器函数 131 | @pyqtSlot() 132 | def on_pushButton_clicked(self): 133 | pad = OrdinaryP(self.getname(),self.getid())#将从文本框中获取到的内容放入普通用户数据库所定义的类中 134 | if pad.isexited():#导入普通用户数据库类中的根据姓名和身份证号码判断用户是否存在的函数 135 | QMessageBox.information(self,'成功','登录成功!') 136 | self.close() 137 | return 1 138 | else:#如果用户不存在的话,或者是身份证和姓名不匹配的话,报错,并且提示用户若未注册,请先注册 139 | QMessageBox.information(self,'error','姓名或者身份证号出现错误,若未注册还请先注册') 140 | self.lineEdit.setText('') 141 | self.lineEdit_2.setText('')#将输入文本框全部置空 142 | return 0 143 | 144 | #定义普通用户登录栏中取消按钮的触发器函数 145 | @pyqtSlot() 146 | def on_pushButton_3_clicked(self): 147 | self.close()#关闭窗口 148 | 149 | #定义普通用户栏中注册按钮的触发器函数 150 | @pyqtSlot()#防止界面需要两次点击进行关闭 151 | def on_pushButton_2_clicked(self): 152 | #按下注册之后,需要跳出注册界面,并且先关闭当前登录界面,(同时注册成功后跳出登录界面,关闭注册界面)括号内在注册界面类中实现 153 | self.close() 154 | Ord = Window_OrP_zc()#定义注册页面的类的变量 155 | Ord.exec_()#使注册页面显示出来 156 | 157 | 158 | #定义普通用户注册页面的类 159 | class Window_OrP_zc(QDialog,Ui_OrP_zc): 160 | def __init__(self): 161 | QDialog.__init__(self,parent=None) 162 | self.setupUi(self) 163 | 164 | # 定义普通用户登录栏中确认按钮的触发器函数 165 | @pyqtSlot() 166 | def on_pushButton_clicked(self): 167 | pad = OrdinaryP(self.getname(), self.getid()) # 将从文本框中获取到的内容放入普通用户数据库所定义的类中 168 | win = Window_OrP()#定义一个普通用户登录的界面的类变量,为了在注册成功之后跳出该登录界面 169 | if pad.isexited(): # 导入普通用户数据库类中的根据姓名和身份证号码判断用户是否存在的函数 170 | QMessageBox.information(self, 'error', '该普通用户已经存在!')#如果存在,则报错,注册不成功 171 | self.lineEdit.setText('') 172 | self.lineEdit_2.setText('') # 将输入文本框全部置空 173 | else: # 如果用户不存在的话,则代表这是一个新的注册用户 174 | try: 175 | #设置用户输入的姓名和身份证号都不能为空 176 | if self.getname()=='' or self.getid()=='': 177 | QMessageBox.information(self, 'error', '请输入有效的姓名信息和身份证号信息') 178 | else: 179 | pad.add() # 导入普通用户数据库中的导入用户数据函数 180 | QMessageBox.information(self, '成功', '注册成功') 181 | # 注册成功之后先关闭注册界面 182 | self.close() 183 | time.sleep(0.4) 184 | win.exec_() 185 | 186 | 187 | except Exception as e: 188 | QMessageBox.information(self,'error',str(e))#若执行不成功则提出警告,并输出错误信息 189 | self.lineEdit.setText('') 190 | self.lineEdit_2.setText('') # 将输入文本框全部置空 191 | 192 | def out(self): 193 | pad = OrdinaryP(self.getname(),self.getid()) # 导入操作员数据库,定义操作员类的对象变量 194 | if pad.isExited(): # 当账号密码在数据库中有备份时,才可以接下来的操作 195 | return 1 196 | else: # 数据库中没有该用户 197 | return 0 198 | 199 | # 定义普通用户注册栏中取消按钮的触发器函数 200 | @pyqtSlot() 201 | def on_pushButton_2_clicked(self): 202 | win = Window_OrP() # 定义一个普通用户登录的界面的类变量,为了在注册取消之后跳出该登录界面 203 | self.close() # 关闭窗口 204 | time.sleep(0.4) 205 | win.exec_()#跳出登录界面 206 | 207 | #返回第一个文本框代表的用户姓名 208 | def getname(self): 209 | return self.lineEdit.text() 210 | #返回第二个文本框代表的用户身份证号 211 | def getid(self): 212 | return self.lineEdit_2.text() 213 | 214 | 215 | 216 | 217 | # 定义跳出VIP用户登录页面的类 218 | class Window_VIP(QDialog, Ui_VIP): 219 | def __init__(self): 220 | QDialog.__init__(self, parent=None) 221 | self.setupUi(self) 222 | 223 | # 定义从单行文本框获取用户姓名的函数 224 | def getname(self): 225 | return self.lineEdit.text() 226 | 227 | # 定义从单行文本框获取的用户的身份证号的函数 228 | def getid(self): 229 | return self.lineEdit_2.text() 230 | 231 | # 定义VIP用户登录栏中确认按钮的触发器函数 232 | @pyqtSlot() 233 | def on_pushButton_clicked(self): 234 | pad = OrdinaryP(self.getname(), self.getid()) # 将从文本框中获取到的内容放入VIP用户数据库所定义的类中 235 | if pad.isexited(): # 导入VIP用户数据库类中的根据姓名和身份证号码判断用户是否存在的函数 236 | QMessageBox.information(self, '成功', '登录成功!') 237 | self.close() 238 | return 1 239 | else: # 如果用户不存在的话,或者是身份证和姓名不匹配的话,报错,并且提示用户若未注册,请先注册 240 | QMessageBox.information(self, 'error', '姓名或者身份证号出现错误,若未注册还请先注册') 241 | self.lineEdit.setText('') 242 | self.lineEdit_2.setText('') # 将输入文本框全部置空 243 | return 0 244 | 245 | # 定义VIP用户登录栏中取消按钮的触发器函数 246 | @pyqtSlot() 247 | def on_pushButton_3_clicked(self): 248 | self.close() # 关闭窗口 249 | 250 | # 定义VIP用户栏中注册按钮的触发器函数 251 | @pyqtSlot() # 防止界面需要两次点击进行关闭 252 | def on_pushButton_2_clicked(self): 253 | # 按下注册之后,需要跳出注册界面,并且先关闭当前登录界面,(同时注册成功后跳出登录界面,关闭注册界面)括号内在注册界面类中实现 254 | self.close() 255 | Ord = Window_VIPzc() # 定义注册页面的类的变量 256 | Ord.exec_() # 使注册页面显示出来 257 | 258 | # 定义跳出VIP用户注册页面的类 259 | class Window_VIPzc(QDialog, Ui_VIP_zc): 260 | def __init__(self): 261 | QDialog.__init__(self, parent=None) 262 | self.setupUi(self) 263 | # 定义VIP用户注册栏中确认按钮的触发器函数 264 | @pyqtSlot() 265 | def on_pushButton_clicked(self): 266 | pad = VIP(self.getname(), self.getid()) # 将从文本框中获取到的内容放入VIP用户数据库所定义的类中 267 | win = Window_VIP() # 定义一个VIP用户登录的界面的类变量,为了在注册成功之后跳出该登录界面 268 | if pad.isexited(): # 导入VIP用户数据库类中的根据姓名和身份证号码判断用户是否存在的函数 269 | QMessageBox.information(self, 'error', '该VIP用户已经存在!') # 如果存在,则报错,注册不成功 270 | self.lineEdit.setText('') 271 | self.lineEdit_2.setText('') # 将输入文本框全部置空 272 | else: # 如果用户不存在的话,则代表这是一个新的注册用户 273 | try: 274 | # 设置用户输入的姓名和身份证号都不能为空,且输入正确邀请码为1314520。 275 | if self.getname() == '' or self.getid() == '' : 276 | QMessageBox.information(self, 'error', '请输入有效的姓名信息和身份证号信息') 277 | elif self.getname()!=''and self.getid()!='' and self.getyaoqingma()!='1314520': 278 | QMessageBox.information(self,'error','邀请码错误!请查看帮助') 279 | else: 280 | pad.add() # 导入VIP用户数据库中的导入用户数据函数 281 | QMessageBox.information(self, '成功', '注册成功') 282 | # 注册成功之后先关闭注册界面 283 | self.close() 284 | time.sleep(0.2) 285 | win.exec_() 286 | 287 | except Exception as e: 288 | QMessageBox.information(self, 'error', str(e)) # 若执行不成功则提出警告,并输出错误信息 289 | self.lineEdit.setText('') 290 | self.lineEdit_2.setText('') # 将输入文本框全部置空 291 | 292 | # 定义VIP用户注册栏中取消按钮的触发器函数 293 | @pyqtSlot() 294 | def on_pushButton_2_clicked(self): 295 | win = Window_VIP() # 定义一个VIP用户登录的界面的类变量,为了在注册取消之后跳出该登录界面 296 | self.close() # 关闭窗口 297 | time.sleep(0.4) 298 | win.exec_() # 跳出登录界面 299 | 300 | # 返回第一个文本框代表的用户姓名 301 | def getname(self): 302 | return self.lineEdit.text() 303 | 304 | # 返回第二个文本框代表的用户身份证号 305 | def getid(self): 306 | return self.lineEdit_2.text() 307 | 308 | #返回第三个文本框代表的邀请码 309 | def getyaoqingma(self): 310 | return self.lineEdit_3.text() 311 | 312 | #定义主界面的类 313 | class Window_one(QMainWindow,Ui_Window): 314 | def __init__(self): 315 | QMainWindow.__init__(self,parent=None) 316 | self.setupUi(self) 317 | time.sleep(1)#使启动界面可以多显示2秒 318 | self.frame.close() 319 | #定义槽函数 320 | @pyqtSlot() 321 | #定义菜单栏上退出action被点击时触发的函数,用on_triggered表示 322 | def on_actiontuichu_triggered(self): 323 | sys.exit() 324 | 325 | @pyqtSlot() 326 | #定义登录栏上退出action(actionquit)被点击时触发的函数 327 | def on_actionquit_triggered(self): 328 | sys.exit() 329 | 330 | @pyqtSlot() 331 | #定义登录栏超级管理员登录 332 | def on_actionchaoji_triggered(self): 333 | try: 334 | admin = Window_Sadmin()#定义对话框变量 335 | admin.exec_()#使对话框变量显示出来 336 | #接下来从输入框输入内容判断并且识别该超级管理员是否存在,由于是个人操作,超级管理员只有一个 337 | if admin.on_pushButton_clicked(): 338 | self.menubar.setEnabled(False) 339 | self.frame.show() 340 | self.label.setEnabled(True) 341 | self.label.setText('欢迎!超级管理员 {}'.format(str(admin.get_zhanghao()))) 342 | self.tab.setEnabled(True) 343 | self.pushButton_2.setEnabled(True) 344 | self.tab_2.setEnabled(False) 345 | self.tab_3.setEnabled(False) 346 | self.tab_4.setEnabled(False) 347 | except Exception as e: 348 | QMessageBox.information(admin,'错误',str(e)) 349 | 350 | @pyqtSlot() 351 | def on_pushButton_clicked(self): 352 | try: 353 | pad = admin(self.lineEdit.text(),self.lineEdit_2.text()) 354 | if self.lineEdit.text()!=''and self.lineEdit_2.text()!='' and self.lineEdit_3.text()!='': 355 | if self.lineEdit_2.text()==self.lineEdit_3.text(): 356 | if pad.isLogin(): 357 | QMessageBox.information(self, 'error', '该管理员账号已经存在!请重新输入') 358 | self.lineEdit.setText('') 359 | self.lineEdit_2.setText('') 360 | self.lineEdit_3.setText('') 361 | else: 362 | pad.add() 363 | QMessageBox.information(self,'成功','添加管理员账号成功!') 364 | self.lineEdit.setText('') 365 | self.lineEdit_2.setText('') 366 | self.lineEdit_3.setText('') 367 | else: 368 | QMessageBox.information(self, 'error', '两次密码输入不一致!请重新输入') 369 | self.lineEdit_2.setText('') 370 | self.lineEdit_3.setText('') 371 | else: 372 | QMessageBox.information(self,'error','请输入有效的账号密码') 373 | except Exception as e: 374 | QMessageBox.information(self,'error',str(e)) 375 | @pyqtSlot() 376 | def on_pushButton_3_clicked(self): 377 | self.lineEdit.setText('') 378 | self.lineEdit_2.setText('') 379 | self.lineEdit_3.setText('') 380 | 381 | @pyqtSlot() 382 | def on_pushButton_4_clicked(self): 383 | try: 384 | pad = admin(self.lineEdit_4.text(),'') 385 | if self.lineEdit_4.text()=='': 386 | QMessageBox.information(self,'error','请输入有效的账号!') 387 | else: 388 | if pad.isLogin(): 389 | pad.delete() 390 | QMessageBox.information(self,'成功','删除管理员成功!') 391 | self.lineEdit_4.setText('') 392 | else: 393 | QMessageBox.information(self,'error','该管理员用户不存在!请重新输入') 394 | self.lineEdit_4.setText('') 395 | except Exception as e: 396 | QMessageBox.information(self,'error',str(e)) 397 | 398 | 399 | @pyqtSlot() 400 | def on_pushButton_6_clicked(self): 401 | try: 402 | pad = admin('','') 403 | list = pad.show_all() 404 | for i in list: 405 | self.textBrowser.append("用户名:"+i.admin_user+" "+"密码:"+i.admin_pd+" ;") 406 | except Exception as e: 407 | QMessageBox.information(self,'error',str(e)) 408 | 409 | @pyqtSlot() 410 | def on_pushButton_7_clicked(self): 411 | self.textBrowser.setText('') 412 | 413 | @pyqtSlot() 414 | def on_pushButton_2_clicked(self): 415 | self.frame.close() 416 | self.menubar.setEnabled(True) 417 | 418 | @pyqtSlot() 419 | def on_pushButton_8_clicked(self): 420 | try: 421 | pad = Worker(self.lineEdit_5.text(), self.lineEdit_7.text()) 422 | if self.lineEdit_5.text() != '' and self.lineEdit_7.text() != '' and self.lineEdit_6.text() != '': 423 | if self.lineEdit_7.text() == self.lineEdit_6.text(): 424 | if pad.isLogin(): 425 | QMessageBox.information(self, 'error', '该操作员账号已经存在!请重新输入') 426 | self.lineEdit_5.setText('') 427 | self.lineEdit_7.setText('') 428 | self.lineEdit_6.setText('') 429 | else: 430 | pad.add() 431 | QMessageBox.information(self, '成功', '添加操作员账号成功!') 432 | self.lineEdit_5.setText('') 433 | self.lineEdit_7.setText('') 434 | self.lineEdit_6.setText('') 435 | else: 436 | QMessageBox.information(self, 'error', '两次密码输入不一致!请重新输入') 437 | self.lineEdit_7.setText('') 438 | self.lineEdit_6.setText('') 439 | else: 440 | QMessageBox.information(self, 'error', '请输入有效的账号密码') 441 | except Exception as e: 442 | QMessageBox.information(self, 'error', str(e)) 443 | 444 | @pyqtSlot() 445 | def on_pushButton_9_clicked(self): 446 | self.lineEdit_5.setText('') 447 | self.lineEdit_7.setText('') 448 | self.lineEdit_6.setText('') 449 | 450 | @pyqtSlot() 451 | def on_pushButton_21_clicked(self): 452 | try: 453 | pad = Worker(self.lineEdit_18.text(), '') 454 | if self.lineEdit_18.text() == '': 455 | QMessageBox.information(self, 'error', '请输入有效的账号!') 456 | else: 457 | if pad.isLogin(): 458 | pad.delete() 459 | QMessageBox.information(self, '成功', '删除操作员成功!') 460 | self.lineEdit_18.setText('') 461 | else: 462 | QMessageBox.information(self, 'error', '该操作员用户不存在!请重新输入') 463 | self.lineEdit_18.setText('') 464 | except Exception as e: 465 | QMessageBox.information(self, 'error', str(e)) 466 | 467 | @pyqtSlot() 468 | def on_pushButton_20_clicked(self): 469 | self.lineEdit_18.setText('') 470 | 471 | @pyqtSlot() 472 | def on_pushButton_22_clicked(self): 473 | try: 474 | pad = Worker('', '') 475 | list = pad.show_all() 476 | for i in list: 477 | self.textBrowser_3.append("用户名:" + i.worker_user + " " + "密码:" + i.worker_pd + " ;") 478 | except Exception as e: 479 | QMessageBox.information(self, 'error', str(e)) 480 | 481 | @pyqtSlot() 482 | def on_pushButton_23_clicked(self): 483 | self.textBrowser_3.setText('') 484 | 485 | @pyqtSlot() 486 | #定义登录栏普通管理员登录 487 | def on_actionputong_triggered(self): 488 | try: 489 | admin = Window_Padmin() # 定义对话框变量 490 | admin.exec_() # 使对话框变量显示出来 491 | if admin.on_pushButton_clicked(): 492 | self.menubar.setEnabled(False) 493 | self.frame.show() 494 | self.label.setEnabled(True) 495 | self.label.setText('欢迎!管理员 {}'.format(str(admin.get_zhanghao()))) 496 | self.tab_2.setEnabled(True) 497 | self.pushButton_2.setEnabled(True) 498 | self.tab.setEnabled(False) 499 | self.tab_3.setEnabled(False) 500 | self.tab_4.setEnabled(False) 501 | except Exception as e: 502 | QMessageBox.information(self, '错误', str(e)) 503 | 504 | @pyqtSlot() 505 | def on_pushButton_24_clicked(self): 506 | try: 507 | pad = Worker(self.lineEdit_19.text(), self.lineEdit_21.text()) 508 | if self.lineEdit_19.text() != '' and self.lineEdit_21.text() != '' and self.lineEdit_20.text() != '': 509 | if self.lineEdit_21.text() == self.lineEdit_20.text(): 510 | if pad.isLogin(): 511 | QMessageBox.information(self, 'error', '该操作员账号已经存在!请重新输入') 512 | self.lineEdit_19.setText('') 513 | self.lineEdit_20.setText('') 514 | self.lineEdit_21.setText('') 515 | else: 516 | pad.add() 517 | QMessageBox.information(self, '成功', '添加操作员账号成功!') 518 | self.lineEdit_19.setText('') 519 | self.lineEdit_20.setText('') 520 | self.lineEdit_21.setText('') 521 | else: 522 | QMessageBox.information(self, 'error', '两次密码输入不一致!请重新输入') 523 | self.lineEdit_20.setText('') 524 | self.lineEdit_21.setText('') 525 | else: 526 | QMessageBox.information(self, 'error', '请输入有效的账号密码') 527 | except Exception as e: 528 | QMessageBox.information(self, 'error', str(e)) 529 | 530 | @pyqtSlot() 531 | def on_pushButton_25_clicked(self): 532 | self.lineEdit_19.setText('') 533 | self.lineEdit_20.setText('') 534 | self.lineEdit_21.setText('') 535 | 536 | @pyqtSlot() 537 | def on_pushButton_32_clicked(self): 538 | try: 539 | pad = Worker(self.lineEdit_26.text(), '') 540 | if self.lineEdit_26.text() == '': 541 | QMessageBox.information(self, 'error', '请输入有效的账号!') 542 | else: 543 | if pad.isLogin(): 544 | pad.delete() 545 | QMessageBox.information(self, '成功', '删除操作员成功!') 546 | self.lineEdit_26.setText('') 547 | else: 548 | QMessageBox.information(self, 'error', '该操作员用户不存在!请重新输入') 549 | self.lineEdit_26.setText('') 550 | except Exception as e: 551 | QMessageBox.information(self, 'error', str(e)) 552 | 553 | @pyqtSlot() 554 | def on_pushButton_33_clicked(self): 555 | self.lineEdit_26.setText('') 556 | 557 | @pyqtSlot() 558 | def on_pushButton_35_clicked(self): 559 | try: 560 | pad = Worker('', '') 561 | list = pad.show_all() 562 | for i in list: 563 | self.textBrowser_5.append("用户名:" + i.worker_user + " " + "密码:" + i.worker_pd + " ;") 564 | except Exception as e: 565 | QMessageBox.information(self, 'error', str(e)) 566 | 567 | @pyqtSlot() 568 | def on_pushButton_34_clicked(self): 569 | self.textBrowser_5.setText('') 570 | 571 | @pyqtSlot() 572 | def on_pushButton_38_clicked(self): 573 | try: 574 | pad = flight(self.lineEdit_27.text(),self.lineEdit_28.text(),self.lineEdit_29.text(),self.lineEdit_30.text(),int(self.lineEdit_31.text()),int(self.lineEdit_32.text())) 575 | if self.lineEdit_27.text()=='' or self.lineEdit_28.text()=='' or self.lineEdit_29.text()=='' or self.lineEdit_30.text()=='' or self.lineEdit_31.text()=='' or self.lineEdit_32.text()=='': 576 | QMessageBox.information(self,'error','请输入有效的航班信息!') 577 | self.lineEdit_27.setText('') 578 | self.lineEdit_28.setText('') 579 | self.lineEdit_29.setText('') 580 | self.lineEdit_30.setText('') 581 | self.lineEdit_31.setText('') 582 | self.lineEdit_32.setText('') 583 | else: 584 | if pad.isexited(): 585 | QMessageBox.information(self, 'error', '该航班号已经存在!请重新输入') 586 | self.lineEdit_27.setText('') 587 | self.lineEdit_28.setText('') 588 | self.lineEdit_29.setText('') 589 | self.lineEdit_30.setText('') 590 | self.lineEdit_31.setText('') 591 | self.lineEdit_32.setText('') 592 | else: 593 | if (self.lineEdit_31.text()).isdigit() and (self.lineEdit_32.text()).isdigit(): 594 | pad.add() 595 | QMessageBox.information(self, '成功', '导入航班信息成功!') 596 | self.lineEdit_27.setText('') 597 | self.lineEdit_28.setText('') 598 | self.lineEdit_29.setText('') 599 | self.lineEdit_30.setText('') 600 | self.lineEdit_31.setText('') 601 | self.lineEdit_32.setText('') 602 | else: 603 | QMessageBox.information(self,'error','请输入整数形式的余票数和订票数!请重新输入!') 604 | except Exception as e: 605 | QMessageBox.information(self,'error',str(e)) 606 | 607 | @pyqtSlot() 608 | def on_pushButton_39_clicked(self): 609 | self.lineEdit_27.setText('') 610 | self.lineEdit_28.setText('') 611 | self.lineEdit_29.setText('') 612 | self.lineEdit_30.setText('') 613 | self.lineEdit_31.setText('') 614 | self.lineEdit_32.setText('') 615 | 616 | @pyqtSlot() 617 | def on_pushButton_40_clicked(self): 618 | QMessageBox.information(self,'提示','该功能正在完善!敬请期待!') 619 | 620 | @pyqtSlot() 621 | def on_pushButton_41_clicked(self): 622 | QMessageBox.information(self, '提示', '该功能正在完善!敬请期待!') 623 | 624 | @pyqtSlot() 625 | def on_pushButton_42_clicked(self): 626 | QMessageBox.information(self, '提示', '该功能正在完善!敬请期待!') 627 | 628 | @pyqtSlot() 629 | def on_pushButton_43_clicked(self): 630 | QMessageBox.information(self, '提示', '该功能正在完善!敬请期待!') 631 | 632 | @pyqtSlot() 633 | def on_pushButton_44_clicked(self): 634 | QMessageBox.information(self, '提示', '该功能正在完善!敬请期待!') 635 | 636 | @pyqtSlot() 637 | def on_pushButton_45_clicked(self): 638 | QMessageBox.information(self, '提示', '该功能正在完善!敬请期待!') 639 | 640 | @pyqtSlot() 641 | def on_pushButton_46_clicked(self): 642 | QMessageBox.information(self, '提示', '该功能正在完善!敬请期待!') 643 | 644 | @pyqtSlot() 645 | def on_pushButton_47_clicked(self): 646 | QMessageBox.information(self, '提示', '该功能正在完善!敬请期待!') 647 | 648 | @pyqtSlot() 649 | def on_pushButton_48_clicked(self): 650 | QMessageBox.information(self, '提示', '该功能正在完善!敬请期待!') 651 | 652 | @pyqtSlot() 653 | def on_pushButton_49_clicked(self): 654 | QMessageBox.information(self, '提示', '该功能正在完善!敬请期待!') 655 | 656 | @pyqtSlot() 657 | def on_pushButton_36_clicked(self): 658 | try: 659 | pad = flight('','','','',0,0) 660 | list = pad.show_all() 661 | for i in list: 662 | self.textBrowser_6.append('航班号:'+i.Flight_num+' '+'飞机号: '+i.Aircraft_num+' '+'出发地: '+i.Start+' '+'目的地:'+i.Destination+' '+'订票数:'+str(i.Num_bookings)+' '+'余票数: '+str(i.Num_rm_tickets)) 663 | except Exception as e: 664 | QMessageBox.information(self,'error',str(e)) 665 | 666 | @pyqtSlot() 667 | def on_pushButton_37_clicked(self): 668 | self.textBrowser_6.setText('') 669 | 670 | @pyqtSlot() 671 | def on_pushButton_52_clicked(self): 672 | return 1 673 | 674 | @pyqtSlot() 675 | def on_pushButton_52_clicked(self): 676 | try: 677 | pad = flight(self.lineEdit_33.text(),'','','',0,0) 678 | if self.lineEdit_33.text()=='': 679 | QMessageBox.information(self,'error','请输入有效的航班号!') 680 | else: 681 | if pad.isexited(): 682 | pad_2 = flight(self.lineEdit_33.text(),self.lineEdit_35.text(),self.lineEdit_36.text(),self.lineEdit_34.text(),int(self.lineEdit_37.text()),int(self.lineEdit_38.text())) 683 | pad.delete() 684 | pad_2.add() 685 | QMessageBox.information(self,'成功','修改航班信息成功!') 686 | self.lineEdit_33.setText('') 687 | self.lineEdit_35.setText('') 688 | self.lineEdit_34.setText('') 689 | self.lineEdit_36.setText('') 690 | self.lineEdit_37.setText('') 691 | self.lineEdit_38.setText('') 692 | else: 693 | QMessageBox.information(self,'error','该航班号不存在!请重新输入!') 694 | self.lineEdit_33.setText('') 695 | except Exception as e: 696 | QMessageBox.information(self,'error',str(e)) 697 | 698 | 699 | @pyqtSlot() 700 | def on_pushButton_53_clciked(self): 701 | self.lineEdit_33.setText('') 702 | self.lineEdit_35.setText('') 703 | self.lineEdit_34.setText('') 704 | self.lineEdit_36.setText('') 705 | self.lineEdit_37.setText('') 706 | self.lineEdit_38.setText('') 707 | 708 | @pyqtSlot() 709 | #定义登录栏操作员登录 710 | def on_actionc_triggered(self): 711 | try: 712 | worker = Window_worker() # 定义对话框变量 713 | worker.exec_() # 使对话框变量显示出来 714 | if worker.on_pushButton_clicked(): 715 | self.menubar.setEnabled(False) 716 | self.frame.show() 717 | self.label.setEnabled(True) 718 | self.label.setText('欢迎!操作员 {}'.format(str(worker.get_zhanghao()))) 719 | self.pushButton_2.setEnabled(True) 720 | self.tab_3.setEnabled(True) 721 | self.tab.setEnabled(False) 722 | self.tab_2.setEnabled(False) 723 | self.tab_4.setEnabled(False) 724 | except Exception as e: 725 | QMessageBox.information(self, '错误', str(e)) 726 | 727 | @pyqtSlot() 728 | def on_pushButton_54_clicked(self): 729 | try: 730 | pad = Booked(str(self.lineEdit_41.text()),int(self.lineEdit_63.text()),str(self.lineEdit_42.text()),str(self.lineEdit_40.text()),str(self.lineEdit_39.text())) 731 | if self.lineEdit_39.text()=='' or self.lineEdit_40=='' or self.lineEdit_41.text()=='' or self.lineEdit_42.text()=='' or self.lineEdit_63.text()=='': 732 | QMessageBox.information(self,'error','请输入正确的订票信息!') 733 | self.lineEdit_39.setText('') 734 | self.lineEdit_40.setText('') 735 | self.lineEdit_41.setText('') 736 | self.lineEdit_42.setText('') 737 | self.lineEdit_63.setText('') 738 | else: 739 | if pad.isexited_seat(): 740 | pad3 = flight(self.lineEdit_41.text(),'','','',0,0) 741 | if pad3.isexited(): 742 | if pad3.ishave_tickets(): 743 | pad.add() 744 | QMessageBox.information(self,'成功','订票成功!') 745 | pad2 = flight(self.lineEdit_41.text(), '', '', '',0, 0) 746 | pad2.okbook() 747 | self.lineEdit_39.setText('') 748 | self.lineEdit_40.setText('') 749 | self.lineEdit_41.setText('') 750 | self.lineEdit_42.setText('') 751 | self.lineEdit_63.setText('') 752 | else: 753 | QMessageBox.information(self,'error','该航班号余票数为0!请重新订票!') 754 | self.lineEdit_39.setText('') 755 | self.lineEdit_40.setText('') 756 | self.lineEdit_41.setText('') 757 | self.lineEdit_42.setText('') 758 | self.lineEdit_63.setText('') 759 | else: 760 | QMessageBox.information(self,'error','该航线不存在,请重新输入!') 761 | self.lineEdit_39.setText('') 762 | self.lineEdit_40.setText('') 763 | self.lineEdit_41.setText('') 764 | self.lineEdit_42.setText('') 765 | self.lineEdit_63.setText('') 766 | else: 767 | QMessageBox.information(self,'error','该航班的座位已被订走!请重新输入订票信息') 768 | self.lineEdit_39.setText('') 769 | self.lineEdit_40.setText('') 770 | self.lineEdit_41.setText('') 771 | self.lineEdit_42.setText('') 772 | self.lineEdit_63.setText('') 773 | except Exception as e: 774 | QMessageBox.information(self,'error',str(e)) 775 | 776 | @pyqtSlot() 777 | def on_pushButton_55_clicked(self): 778 | self.lineEdit_39.setText('') 779 | self.lineEdit_40.setText('') 780 | self.lineEdit_41.setText('') 781 | self.lineEdit_42.setText('') 782 | self.lineEdit_63.setText('') 783 | 784 | 785 | @pyqtSlot() 786 | def on_pushButton_55_clicked(self): 787 | self.lineEdit_43.setText('') 788 | self.lineEdit_46.setText('') 789 | self.lineEdit_45.setText('') 790 | self.lineEdit_44.setText('') 791 | self.lineEdit_47.setText('') 792 | 793 | @pyqtSlot() 794 | def on_pushButton_58_clicked(self): 795 | try: 796 | pad = Booked(str(self.lineEdit_49.text()),0,'',str(self.lineEdit_48.text()),str(self.lineEdit_50.text())) 797 | if self.lineEdit_49.text()!='' and self.lineEdit_48.text()!='' and self.lineEdit_50.text()!='': 798 | if pad.isexited_seat(): 799 | pad3 = flight(self.lineEdit_49.text(),'','','',0,0) 800 | if pad3.isexited(): 801 | pad.delete() 802 | QMessageBox.information(self, '成功', '退票成功!') 803 | pad2 = flight(self.lineEdit_49, '', '', '', 0, 0) 804 | pad2.cancelbook() 805 | self.lineEdit_49.setText('') 806 | self.lineEdit_48.setText('') 807 | self.lineEdit_50.setText('') 808 | else: 809 | QMessageBox.information(self,'error','该航线不存在!请重新输入!') 810 | else: 811 | QMessageBox.information(self, 'error', '该订票记录不存在,请重新输入!') 812 | self.lineEdit_49.setText('') 813 | self.lineEdit_48.setText('') 814 | self.lineEdit_50.setText('') 815 | else: 816 | QMessageBox.information(self,'error','请输入有效的退票信息!') 817 | self.lineEdit_49.setText('') 818 | self.lineEdit_48.setText('') 819 | self.lineEdit_50.setText('') 820 | 821 | except Exception as e: 822 | QMessageBox.information(self,'error',str(e)) 823 | 824 | @pyqtSlot() 825 | def on_pushButton_59_clicked(self): 826 | self.lineEdit_49.setText('') 827 | self.lineEdit_48.setText('') 828 | self.lineEdit_50.setText('') 829 | 830 | @pyqtSlot() 831 | def on_pushButton_60_clicked(self): 832 | try: 833 | pad = Booked(self.lineEdit_52.text(), 0, '', self.lineEdit_51.text(), self.lineEdit_53.text()) 834 | if self.lineEdit_52.text() != '' and self.lineEdit_51.text() != '' and self.lineEdit_53.text() != '': 835 | if pad.isexited_seat(): 836 | pad3 = flight(self.lineEdit_52.text(), '', '', '', 0, 0) 837 | if pad3.isexited(): 838 | pad.delete() 839 | QMessageBox.information(self, '成功', '退票成功!') 840 | pad2 = flight(self.lineEdit_52.text(), '', '', '', 0, 0) 841 | pad2.cancelbook() 842 | self.lineEdit_52.setText('') 843 | self.lineEdit_51.setText('') 844 | self.lineEdit_53.setText('') 845 | else: 846 | QMessageBox.information(self, 'error', '该航班信息不存在!请重新输入!') 847 | self.lineEdit_52.setText('') 848 | self.lineEdit_51.setText('') 849 | self.lineEdit_53.setText('') 850 | else: 851 | QMessageBox.information(self, 'error', '该订票记录不存在,请重新输入!') 852 | self.lineEdit_52.setText('') 853 | self.lineEdit_51.setText('') 854 | self.lineEdit_53.setText('') 855 | 856 | else: 857 | QMessageBox.information(self, 'error', '请输入有效的退票信息!') 858 | self.lineEdit_52.setText('') 859 | self.lineEdit_51.setText('') 860 | self.lineEdit_53.setText('') 861 | 862 | except Exception as e: 863 | QMessageBox.information(self, 'error', str(e)) 864 | 865 | @pyqtSlot() 866 | def on_pushButton_61_clicked(self): 867 | self.lineEdit_52.setText('') 868 | self.lineEdit_51.setText('') 869 | self.lineEdit_53.setText('') 870 | 871 | @pyqtSlot() 872 | def on_pushButton_62_clicked(self): 873 | try: 874 | pad = Booked('',0,'',str(self.lineEdit_54.text()),str(self.lineEdit_56.text())) 875 | list = pad.show_peo() 876 | if self.lineEdit_54.text()!='' and self.lineEdit_56!='': 877 | if pad.isexited(): 878 | for i in list: 879 | self.textBrowser_8.append('航班号: '+i.Flight_num+' '+'座位号:'+str(i.Seat_num)+' '+'飞机号:'+i.Aircraft_num+' '+'姓名:'+i.name+' '+'身份证号:'+i.id_num) 880 | self.lineEdit_54.setText('') 881 | self.lineEdit_56.setText('') 882 | else: 883 | QMessageBox.information(self,'error','该用户无订票记录!请重新输入!') 884 | self.lineEdit_54.setText('') 885 | self.lineEdit_56.setText('') 886 | else: 887 | QMessageBox.information(self,'error','请输入有效的信息!') 888 | self.lineEdit_54.setText('') 889 | self.lineEdit_56.setText('') 890 | except Exception as e: 891 | QMessageBox.information(self,'error',str(e)) 892 | 893 | @pyqtSlot() 894 | def on_pushButton_63_clicked(self): 895 | self.lineEdit_54.setText('') 896 | self.lineEdit_56.setText('') 897 | 898 | @pyqtSlot() 899 | def on_pushButton_66_clicked(self): 900 | self.textBrowser_8.setText('') 901 | 902 | @pyqtSlot() 903 | def on_pushButton_64_clicked(self): 904 | try: 905 | pad = Booked('',0,'','','') 906 | list = pad.show_all() 907 | for i in list: 908 | self.textBrowser_7.append('航班号: '+i.Flight_num+' '+'座位号:'+str(i.Seat_num)+' '+'飞机号:'+i.Aircraft_num+' '+'姓名:'+i.name+' '+'身份证号:'+i.id_num) 909 | except Exception as e: 910 | QMessageBox.information(self,'error',str(e)) 911 | 912 | @pyqtSlot() 913 | def on_pushButton_65_clicked(self): 914 | self.textBrowser_7.setText('') 915 | 916 | @pyqtSlot() 917 | def on_pushButton_67_clicked(self): 918 | try: 919 | pad = flight(str(self.lineEdit_55.text()),'','','',0,0) 920 | if self.lineEdit_55.text()!='': 921 | if pad.isexited(): 922 | list = pad.show_except() 923 | for i in list: 924 | self.textBrowser_9.append('航班号:'+i.Flight_num+' '+'飞机号: '+i.Aircraft_num+' '+'出发地: '+i.Start+' '+'目的地:'+i.Destination+' '+'订票数:'+str(i.Num_bookings)+' '+'余票数: '+str(i.Num_rm_tickets)) 925 | else: 926 | QMessageBox.information(self,'error','该航班不存在!请重新输入!') 927 | self.lineEdit_55.setText('') 928 | else: 929 | QMessageBox.information(self,'error','请输入正确的航线信息!') 930 | self.lineEdit_55.setText('') 931 | except Exception as e: 932 | QMessageBox.information(self,'error',str(e)) 933 | 934 | @pyqtSlot() 935 | def on_pushButton_68_clicked(self): 936 | self.lineEdit_55.setText('') 937 | 938 | @pyqtSlot() 939 | def on_pushButton_69_clicked(self): 940 | self.textBrowser_9.setText('') 941 | 942 | @pyqtSlot() 943 | def on_pushButton_70_clicked(self): 944 | try: 945 | pad = flight('','','','',0,0) 946 | list = pad.show_all() 947 | for i in list: 948 | self.textBrowser_10.append('航班号:'+i.Flight_num+' '+'飞机号: '+i.Aircraft_num+' '+'出发地: '+i.Start+' '+'目的地:'+i.Destination+' '+'订票数:'+str(i.Num_bookings)+' '+'余票数: '+str(i.Num_rm_tickets)) 949 | except Exception as e: 950 | QMessageBox.information(self,'error',str(e)) 951 | 952 | @pyqtSlot() 953 | def on_pushButton_71_clicked(self): 954 | self.textBrowser_10.setText('') 955 | 956 | @pyqtSlot() 957 | #定义登录栏普通用户登录 958 | def on_actiono_triggered(self): 959 | try: 960 | Orp = Window_OrP() # 定义对话框变量 961 | Orp.exec_() # 使对话框变量显示出来 962 | if Orp.on_pushButton_clicked(): 963 | self.menubar.setEnabled(False) 964 | self.frame.show() 965 | self.label.setEnabled(True) 966 | self.label.setText('欢迎!普通用户 {}'.format(str(Orp.getname()))) 967 | self.pushButton_2.setEnabled(True) 968 | self.tab_4.setEnabled(True) 969 | self.tab.setEnabled(False) 970 | self.tab_2.setEnabled(False) 971 | self.tab_3.setEnabled(False) 972 | except Exception as e: 973 | QMessageBox.information(self, '错误', str(e)) 974 | 975 | @pyqtSlot() 976 | def on_pushButton_72_clicked(self): 977 | try: 978 | pad = Booked(str(self.lineEdit_57.text()), int(self.lineEdit_59.text()), str(self.lineEdit_58.text()), 979 | str(self.lineEdit_60.text()), str(self.lineEdit_8.text())) 980 | if self.lineEdit_57.text() == '' or self.lineEdit_59 == '' or self.lineEdit_58.text() == '' or self.lineEdit_60.text() == '' or self.lineEdit_8.text() == '': 981 | QMessageBox.information(self, 'error', '请输入正确的订票信息!') 982 | self.lineEdit_57.setText('') 983 | self.lineEdit_58.setText('') 984 | self.lineEdit_59.setText('') 985 | self.lineEdit_60.setText('') 986 | self.lineEdit_8.setText('') 987 | else: 988 | if pad.isexited_seat(): 989 | pad3 = flight(self.lineEdit_57.text(),'','','',0,0) 990 | if pad3.isexited(): 991 | if pad3.ishave_tickets(): 992 | people = OrdinaryP(self.lineEdit_8.text(),self.lineEdit_60.text()) 993 | if people.isexited(): 994 | pad.add() 995 | QMessageBox.information(self, '成功', '订票成功!') 996 | pad2 = flight(self.lineEdit_57.text(), '', '', '', 0, 0) 997 | pad2.okbook() 998 | self.lineEdit_57.setText('') 999 | self.lineEdit_58.setText('') 1000 | self.lineEdit_59.setText('') 1001 | self.lineEdit_60.setText('') 1002 | self.lineEdit_8.setText('') 1003 | else: 1004 | QMessageBox.information(self,'error','您的姓名与身份证号不匹配!请重新输入!') 1005 | else: 1006 | QMessageBox.information(self,'error','该航班无余票,请选择其它航班!') 1007 | self.lineEdit_57.setText('') 1008 | self.lineEdit_58.setText('') 1009 | self.lineEdit_59.setText('') 1010 | self.lineEdit_60.setText('') 1011 | self.lineEdit_8.setText('') 1012 | else: 1013 | QMessageBox.information(self,'error','该航线不存在!请重新输入!') 1014 | self.lineEdit_57.setText('') 1015 | self.lineEdit_58.setText('') 1016 | self.lineEdit_59.setText('') 1017 | self.lineEdit_60.setText('') 1018 | self.lineEdit_8.setText('') 1019 | else: 1020 | QMessageBox.information(self, 'error', '该航班的座位已被订走!请重新输入订票信息') 1021 | self.lineEdit_57.setText('') 1022 | self.lineEdit_58.setText('') 1023 | self.lineEdit_59.setText('') 1024 | self.lineEdit_60.setText('') 1025 | self.lineEdit_8.setText('') 1026 | except Exception as e: 1027 | QMessageBox.information(self, 'error', str(e)) 1028 | @pyqtSlot() 1029 | def on_pushButton_73_clicked(self): 1030 | self.lineEdit_57.setText('') 1031 | self.lineEdit_58.setText('') 1032 | self.lineEdit_59.setText('') 1033 | self.lineEdit_60.setText('') 1034 | self.lineEdit_8.setText('') 1035 | 1036 | @pyqtSlot() 1037 | def on_pushButton_75_clicked(self): 1038 | try: 1039 | pad = Booked(self.lineEdit_64.text(), 0, '', self.lineEdit_61.text(), '') 1040 | if self.lineEdit_64.text() != '' and self.lineEdit_61.text() != '' : 1041 | if pad.isexited_seat(): 1042 | pad3 = flight(self.lineEdit_64.text(),'','','',0,0) 1043 | if pad3.isexited(): 1044 | pad.delete() 1045 | QMessageBox.information(self, '成功', '退票成功!') 1046 | pad2 = flight(self.lineEdit_64.text(), '', '', '', '', '') 1047 | pad2.cancelbook() 1048 | self.lineEdit_61.setText('') 1049 | self.lineEdit_64.setText('') 1050 | else: 1051 | QMessageBox.information(self,'error','该航线不存在!请重新输入!') 1052 | self.lineEdit_61.setText('') 1053 | self.lineEdit_64.setText('') 1054 | else: 1055 | QMessageBox.information(self, 'error', '该订票记录不存在,请重新输入!') 1056 | self.lineEdit_61.setText('') 1057 | self.lineEdit_64.setText('') 1058 | else: 1059 | QMessageBox.information(self, 'error', '请输入有效的退票信息!') 1060 | self.lineEdit_61.setText('') 1061 | self.lineEdit_64.setText('') 1062 | 1063 | except Exception as e: 1064 | QMessageBox.information(self, 'error', str(e)) 1065 | 1066 | @pyqtSlot() 1067 | def on_pushButton_74_clicked(self): 1068 | self.lineEdit_61.setText('') 1069 | self.lineEdit_64.setText('') 1070 | 1071 | @pyqtSlot() 1072 | def on_pushButton_78_clicked(self): 1073 | try: 1074 | pad = flight(str(self.lineEdit_62.text()), '', '', '', 0, 0) 1075 | if self.lineEdit_62.text() != '': 1076 | if pad.isexited(): 1077 | list = pad.show_except() 1078 | for i in list: 1079 | self.textBrowser_12.append( 1080 | '航班号:' + i.Flight_num + ' ' + '飞机号: ' + i.Aircraft_num + ' ' + '出发地: ' + i.Start + ' ' + '目的地:' + i.Destination + ' ' + '订票数:' + str(i.Num_bookings) + ' ' + '余票数: ' + str(i.Num_rm_tickets)) 1081 | else: 1082 | QMessageBox.information(self, 'error', '该航班不存在!请重新输入!') 1083 | self.lineEdit_62.setText('') 1084 | else: 1085 | QMessageBox.information(self, 'error', '请输入正确的航线信息!') 1086 | self.lineEdit_62.setText('') 1087 | except Exception as e: 1088 | QMessageBox.information(self, 'error', str(e)) 1089 | 1090 | @pyqtSlot() 1091 | def on_pushButton_79_clicked(self): 1092 | self.lineEdit_62.setText('') 1093 | 1094 | @pyqtSlot() 1095 | def on_pushButton_80_clicked(self): 1096 | self.textBrowser_12.setText('') 1097 | 1098 | @pyqtSlot() 1099 | def on_pushButton_81_clicked(self): 1100 | try: 1101 | pad = flight('', '', '', '', 0, 0) 1102 | list = pad.show_all() 1103 | for i in list: 1104 | self.textBrowser_13.append( 1105 | '航班号:' + i.Flight_num + ' ' + '飞机号: ' + i.Aircraft_num + ' ' + '出发地: ' + i.Start + ' ' + '目的地:' + i.Destination + ' ' + '订票数:' + str(i.Num_bookings) + ' ' + '余票数: ' + str(i.Num_rm_tickets)) 1106 | except Exception as e: 1107 | QMessageBox.information(self, 'error', str(e)) 1108 | 1109 | @pyqtSlot() 1110 | def on_pushButton_82_clicked(self): 1111 | self.textBrowser_13.setText('') 1112 | 1113 | @pyqtSlot() 1114 | def on_pushButton_76_clicked(self): 1115 | try: 1116 | pad = Booked('', 0, '', str(self.lineEdit_10.text()), str(self.lineEdit_9.text())) 1117 | list = pad.show_peo() 1118 | if pad.isexited(): 1119 | for i in list: 1120 | self.textBrowser_11.append( 1121 | '航班号: ' + i.Flight_num + ' ' + '座位号:' + str(i.Seat_num) + ' ' + '飞机号:' + i.Aircraft_num + ' ' + '姓名:' + i.name + ' ' + '身份证号:' + i.id_num) 1122 | self.lineEdit_9.setText('') 1123 | self.lineEdit_10.setText('') 1124 | else: 1125 | QMessageBox.information(self,'error','该用户不存在订票记录') 1126 | self.lineEdit_9.setText('') 1127 | self.lineEdit_10.setText('') 1128 | except Exception as e: 1129 | QMessageBox.information(self, 'error', str(e)) 1130 | 1131 | @pyqtSlot() 1132 | def on_pushButton_77_clicked(self): 1133 | self.textBrowser_11.setText('') 1134 | self.lineEdit_9.setText('') 1135 | self.lineEdit_10.setText('') 1136 | 1137 | @pyqtSlot() 1138 | #定义登录栏VIP用户登录 1139 | def on_actionvip_triggered(self): 1140 | try: 1141 | VIP = Window_VIP() # 定义对话框变量 1142 | VIP.exec_() # 使对话框变量显示出来 1143 | if VIP.on_pushButton_clicked(): 1144 | self.menubar.setEnabled(False) 1145 | self.frame.show() 1146 | self.label.setEnabled(True) 1147 | self.label.setText('欢迎!VIP用户 {}'.format(str(VIP.getname()))) 1148 | self.pushButton_2.setEnabled(True) 1149 | self.tab_4.setEnabled(True) 1150 | self.tab.setEnabled(False) 1151 | self.tab_2.setEnabled(False) 1152 | self.tab_3.setEnabled(False) 1153 | except Exception as e: 1154 | QMessageBox.information(self, '错误', str(e)) 1155 | 1156 | @pyqtSlot() 1157 | #定义帮助栏帮助被点击时触发的函数 1158 | def on_actionbangzhu_triggered(self): 1159 | QMessageBox.information(self,'帮助','使用航空订票系统前请先登录!\n有任何错误信息请联系邮箱:1294844426@qq.com\n注册使用的是中国公民身份证号') 1160 | 1161 | @pyqtSlot() 1162 | #定义关于栏关于被点击时触发的函数 1163 | def on_actionguanyu_triggered(self): 1164 | QMessageBox.information(self,'关于','由James制作,联系邮箱:1294844426@qq.com,电子科技大学计科5班') 1165 | 1166 | @pyqtSlot() 1167 | #定义建议栏建议被点击时触发的函数 1168 | def on_actionjianyi_triggered(self): 1169 | QMessageBox.information(self,'建议','VIP用户的测试邀请码为1314520') 1170 | 1171 | 1172 | 1173 | 1174 | if __name__=='__main__': 1175 | app = QApplication(sys.argv) 1176 | splash = QSplashScreen(QPixmap('.\img\spalsh.jpeg'))#设置启动界面,传进图片 1177 | splash.show()#显示启动界面 1178 | splash.showMessage('正在进入航空管理系统',Qt.AlignHCenter)#使文字显示在图片中央 1179 | app.processEvents() 1180 | ui = Window_one() 1181 | ui.show() 1182 | splash.close()#关闭启动界面 1183 | sys.exit(app.exec_())#系统退出 1184 | --------------------------------------------------------------------------------