├── 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 |
10 |
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 |
--------------------------------------------------------------------------------