密码或账号错误,请重新输入!!!
"))
self.error_reminder.hide()
import thp
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
注册UI实现:通过显示验证码的方式来实现验证
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'register.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox
import random
import pymysql
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
font = QtGui.QFont()
font.setFamily("Arial")
MainWindow.setFont(font)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(300, 460, 121, 51))
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(24)
self.pushButton.setFont(font)
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(620, 20, 101, 41))
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(18)
self.pushButton_2.setFont(font)
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_3.setGeometry(QtCore.QRect(390, 360, 81, 41))
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(18)
self.pushButton_3.setFont(font)
self.pushButton_3.setObjectName("pushButton_3")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(470, 90, 171, 31))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(231, 56, 13))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(231, 56, 13))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
self.label.setPalette(palette)
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(470, 140, 171, 31))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(234, 6, 41))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(234, 6, 41))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
self.label_2.setPalette(palette)
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(470, 200, 171, 31))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(232, 9, 50))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(232, 9, 50))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
self.label_3.setPalette(palette)
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(470, 250, 171, 31))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(239, 7, 61))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(239, 7, 61))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
self.label_4.setPalette(palette)
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(470, 300, 171, 31))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(239, 13, 43))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(239, 13, 43))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
self.label_5.setPalette(palette)
self.label_5.setObjectName("label_5")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(230, 410, 171, 31))
palette = QtGui.QPalette()
brush = QtGui.QBrush(QtGui.QColor(239, 11, 34))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Active, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(239, 11, 34))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.WindowText, brush)
brush = QtGui.QBrush(QtGui.QColor(120, 120, 120))
brush.setStyle(QtCore.Qt.SolidPattern)
palette.setBrush(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText, brush)
self.label_6.setPalette(palette)
self.label_6.setTextFormat(QtCore.Qt.AutoText)
self.label_6.setObjectName("label_6")
self.widget = QtWidgets.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(220, 80, 241, 261))
self.widget.setObjectName("widget")
self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
self.verticalLayout.setContentsMargins(0, 0, 0, 0)
self.verticalLayout.setSpacing(10)
self.verticalLayout.setObjectName("verticalLayout")
self.lineEdit_6 = QtWidgets.QLineEdit(self.widget)
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(18)
self.lineEdit_6.setFont(font)
self.lineEdit_6.setObjectName("lineEdit_6")
self.verticalLayout.addWidget(self.lineEdit_6)
self.lineEdit = QtWidgets.QLineEdit(self.widget)
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(18)
self.lineEdit.setFont(font)
self.lineEdit.setObjectName("lineEdit")
self.verticalLayout.addWidget(self.lineEdit)
self.lineEdit_2 = QtWidgets.QLineEdit(self.widget)
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(18)
self.lineEdit_2.setFont(font)
self.lineEdit_2.setObjectName("lineEdit_2")
self.verticalLayout.addWidget(self.lineEdit_2)
self.lineEdit_3 = QtWidgets.QLineEdit(self.widget)
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(18)
self.lineEdit_3.setFont(font)
self.lineEdit_3.setObjectName("lineEdit_3")
self.verticalLayout.addWidget(self.lineEdit_3)
self.lineEdit_4 = QtWidgets.QLineEdit(self.widget)
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(18)
self.lineEdit_4.setFont(font)
self.lineEdit_4.setObjectName("lineEdit_4")
self.verticalLayout.addWidget(self.lineEdit_4)
self.widget1 = QtWidgets.QWidget(self.centralwidget)
self.widget1.setGeometry(QtCore.QRect(220, 350, 161, 61))
self.widget1.setObjectName("widget1")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.widget1)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.lineEdit_5 = QtWidgets.QLineEdit(self.widget1)
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(18)
self.lineEdit_5.setFont(font)
self.lineEdit_5.setObjectName("lineEdit_5")
self.horizontalLayout.addWidget(self.lineEdit_5)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 21))
self.menubar.setObjectName("menubar")
self.menu = QtWidgets.QMenu(self.menubar)
self.menu.setObjectName("menu")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.menubar.addAction(self.menu.menuAction())
self.pushButton.clicked.connect(self.go_Log2)
a = self.random_num()
self.pushButton_3.setText(a)
self.pushButton_3.clicked.connect(self.yzm)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.label_2.setVisible(False)
self.label_3.setVisible(False)
self.label.setVisible(False) #手机号
self.label_4.setVisible(False) #密码
self.label_5.setVisible(False) #身份证
self.label_6.setVisible(False) #验证码
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.pushButton.setText(_translate("MainWindow", "确认"))
self.pushButton_2.setText(_translate("MainWindow", "返回"))
self.label.setText(_translate("MainWindow", "当前手机号已存在"))
self.label_2.setText(_translate("MainWindow", "当前用户名已存在"))
self.label_3.setText(_translate("MainWindow", "请输入全部的信息"))
self.label_4.setText(_translate("MainWindow", "密码不一致,请重新输入"))
self.label_5.setText(_translate("MainWindow", "当身份证号已被绑定"))
self.label_6.setText(_translate("MainWindow", "请重新输入验证码"))
self.lineEdit_6.setPlaceholderText(_translate("MainWindow", "请输入手机号"))
self.lineEdit.setPlaceholderText(_translate("MainWindow", "请输入用户名"))
self.lineEdit_2.setPlaceholderText(_translate("MainWindow", "请输入密码"))
self.lineEdit_3.setPlaceholderText(_translate("MainWindow", "再次输入确认密码"))
self.lineEdit_4.setPlaceholderText(_translate("MainWindow", "请输入身份证号"))
self.lineEdit_5.setPlaceholderText(_translate("MainWindow", "请输入验证码"))
self.menu.setTitle(_translate("MainWindow", "账号注册"))
#在进入注册界面时先生成一个随机验证码
def yzm(self):
b = self.random_num()
self.pushButton_3.setText(b)
def random_num(self):
temp = ''
check_num = 4 #验证码位数
for i in range(check_num): # check_num为需要循环的次数,也就是需要生成验证码的个数,默认为4
choice = random.randint(1, 3) # 生成1到3的随机数
if choice == 1: # 如果choice为1,则随机验证码的值为数字
temp += random.choice('0123456789')
elif choice == 2: # 如果choice为2,则随机验证码的值为大写字母
num = random.randint(65, 90)
temp += chr(num)
elif choice == 3: # 如果choice为3,则随机验证码的值为小写字母
num = random.randint(97, 122)
temp += chr(num)
return temp
def go_Log2(self):
conn = pymysql.connect(host='localhost',
port=3306,
user='root',
password='111111',
database='train',
charset='utf8')
cursor = conn.cursor()
success = 0 #用于确保全部注册信息都正确
#每次点击确认出错后,下一次点击时先清空错误提示
self.label.setVisible(False) #手机号
self.label_4.setVisible(False) #密码
self.label_5.setVisible(False) #身份证
self.label_6.setVisible(False) #验证码
tel = self.lineEdit_6.text()
usr = self.lineEdit.text()
pas1 = self.lineEdit_2.text()
pas2 = self.lineEdit_3.text()
ide = self.lineEdit_4.text()
code = self.lineEdit_5.text()
if tel != '' and usr != '' and pas1 != '' and pas2 != '' and ide != '' and code != '' :
sql1 = "select * from 用户表 where 手机号 = '%s' " %(tel)
cursor.execute(sql1)
r = cursor.fetchall()
lr = len(r)
sql2 = "select * from 用户表 where 身份证号 = '%s' " %(ide)
cursor.execute(sql2)
r2 = cursor.fetchall()
lr2 = len(r2)
if lr != 0:
self.label.setVisible(True)
success = 1
if lr2 != 0:
self.label_5.setVisible(True)
success = 1
#获取当前的验证码的值
c = self.pushButton_3.text()
if code != c :
#验证码输入错误时,自动刷新生成新的验证码
self.yzm()
self.label_6.setVisible(True)
success = 1
if pas1 != pas2 :
self.label_4.setVisible(True)
success = 1
checkID = "select * from 身份表 where 姓名='%s' and 身份证号码='%s'" % (usr, ide)
cursor.execute(checkID)
if cursor.rowcount == 0:
success = 1
QMessageBox.critical(self, "身份信息错误", "请重新输入正确的身份信息")
checkPhone = "select * from 手机号表 where 手机号码='%s'" % (tel)
cursor.execute(checkPhone)
if cursor.rowcount == 0:
success = 1
QMessageBox.critical(self, "手机号码错误", "请重新输入正确的手机号码信息")
if success == 0:
sql3 = "insert into 用户表 (手机号,密码,姓名,身份证号,余额) values ('%s','%s','%s','%s',0)" % (tel,pas1,usr,ide)
cursor.execute(sql3)
conn.commit() #提交数据
QMessageBox.information(self, "注册", "注册成功!!!")
self.pushButton_2.click()
else:
self.label_3.setVisible(True)
QMessageBox.critical(self, "错误", "请输入完整信息!!!")
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
用户主页UI功能设计:个人信息、购票大厅、我的订单三个功能模块、内含部分逻辑设计
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'User_homeUI.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
import thp
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setStyleSheet("#MainWindow{border-image: url(:/thpic/60.jpg);}")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(250, 20, 281, 41))
self.label.setObjectName("label")
self.L_out = QtWidgets.QPushButton(self.centralwidget)
self.L_out.setGeometry(QtCore.QRect(630, 70, 93, 28))
self.L_out.setObjectName("L_out")
self.U_date = QtWidgets.QLabel(self.centralwidget)
self.U_date.setGeometry(QtCore.QRect(30, 510, 72, 15))
self.U_date.setObjectName("U_date")
self.P_information = QtWidgets.QPushButton(self.centralwidget)
self.P_information.setGeometry(QtCore.QRect(80, 290, 211, 141))
self.P_information.setObjectName("P_information")
self.M_order = QtWidgets.QPushButton(self.centralwidget)
self.M_order.setGeometry(QtCore.QRect(520, 290, 211, 141))
self.M_order.setObjectName("M_order")
self.T_hall = QtWidgets.QPushButton(self.centralwidget)
self.T_hall.setGeometry(QtCore.QRect(300, 290, 211, 141))
self.T_hall.setObjectName("T_hall")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "用户主页"))
self.label.setText(_translate("MainWindow", "火车售票管理信息系统
"))
self.L_out.setText(_translate("MainWindow", "退出登录"))
self.U_date.setText(_translate("MainWindow", "TextLabel"))
self.P_information.setText(_translate("MainWindow", "个人信息"))
self.M_order.setText(_translate("MainWindow", "我的订单"))
self.T_hall.setText(_translate("MainWindow", "购票大厅"))
self.U_date.hide()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
用户-个人信息UI设计:展示用户的信息,内含充值以及修改密码的功能
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'p_informationUI.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
import pymysql
import thp
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setStyleSheet("#MainWindow{border-image: url(:/thpic/60.jpg);}")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(330, 20, 131, 41))
self.label.setObjectName("label")
self.U_date = QtWidgets.QLabel(self.centralwidget)
self.U_date.setGeometry(QtCore.QRect(30, 510, 72, 15))
self.U_date.setObjectName("U_date")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(270, 130, 71, 21))
self.label_2.setObjectName("label_2")
self.U_phonenumber = QtWidgets.QLabel(self.centralwidget)
self.U_phonenumber.setGeometry(QtCore.QRect(340, 130, 151, 21))
self.U_phonenumber.setObjectName("U_phonenumber")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(290, 170, 51, 21))
self.label_4.setObjectName("label_4")
self.U_password = QtWidgets.QLabel(self.centralwidget)
self.U_password.setGeometry(QtCore.QRect(340, 170, 151, 21))
self.U_password.setObjectName("U_password")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(290, 210, 41, 21))
self.label_6.setObjectName("label_6")
self.U_name = QtWidgets.QLabel(self.centralwidget)
self.U_name.setGeometry(QtCore.QRect(340, 210, 151, 21))
self.U_name.setObjectName("U_name")
self.label_8 = QtWidgets.QLabel(self.centralwidget)
self.label_8.setGeometry(QtCore.QRect(240, 250, 101, 21))
self.label_8.setObjectName("label_8")
self.U_id = QtWidgets.QLabel(self.centralwidget)
self.U_id.setGeometry(QtCore.QRect(340, 250, 151, 21))
self.U_id.setObjectName("U_id")
self.label_10 = QtWidgets.QLabel(self.centralwidget)
self.label_10.setGeometry(QtCore.QRect(290, 290, 51, 21))
self.label_10.setObjectName("label_10")
self.U_balance = QtWidgets.QLabel(self.centralwidget)
self.U_balance.setGeometry(QtCore.QRect(340, 290, 151, 21))
self.U_balance.setObjectName("U_balance")
self.M_pwbutton = QtWidgets.QPushButton(self.centralwidget)
self.M_pwbutton.setGeometry(QtCore.QRect(280, 360, 93, 28))
self.M_pwbutton.setObjectName("M_pwbutton")
self.add_moneybutton = QtWidgets.QPushButton(self.centralwidget)
self.add_moneybutton.setGeometry(QtCore.QRect(380, 360, 93, 28))
self.add_moneybutton.setObjectName("add_moneybutton")
self.e_p_informstion = QtWidgets.QPushButton(self.centralwidget)
self.e_p_informstion.setGeometry(QtCore.QRect(280, 410, 191, 28))
self.e_p_informstion.setObjectName("e_p_informstion")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "个人信息"))
self.label.setText(_translate("MainWindow", "个人信息
"))
self.U_date.setText(_translate("MainWindow", "TextLabel"))
self.label_2.setText(_translate("MainWindow", "充值金额:
"))
self.U_date.hide()
def addmoney(self):
user = self.U_date.text()
money = self.re_amount.text()
m = int(money)
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
sql = "update 用户表 set 余额=余额+%s where 手机号='%s'"%(m,user)
cursor.execute(sql)
conn.commit()
cursor.close()
conn.close()
re = "成功充值"+money+"元!!!"
QMessageBox.information(self,"充值",re)
self.exitButton.click()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
用户-购票大厅UI设计:通过时间、起始站和终点站进行检索,以列表的方式展示列车信息,这里需要熟悉python的exec()函数,还需要注意列表中的功能键绑定
exec()函数的使用可以参考其他博主的介绍,例如:添加链接描述
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'Ticket_hallUI.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
import datetime
import pymysql
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import pyqtSlot, QDate
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox
import time
import string
import thp
class Ui_MainWindow(object):
numb = 0
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setStyleSheet("#MainWindow{border-image: url(:/thpic/60.jpg);}")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.comboBox = QtWidgets.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(120, 70, 87, 22))
self.comboBox.setObjectName("comboBox")
self.dateEdit = QtWidgets.QDateEdit(self.centralwidget)
self.dateEdit.setGeometry(QtCore.QRect(300, 70, 110, 22))
self.dateEdit.setObjectName("dateEdit")
self.comboBox_2 = QtWidgets.QComboBox(self.centralwidget)
self.comboBox_2.setGeometry(QtCore.QRect(530, 70, 87, 22))
self.comboBox_2.setObjectName("comboBox_2")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(140, 40, 72, 15))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(320, 40, 72, 15))
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(530, 40, 72, 15))
self.label_3.setObjectName("label_3")
self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
self.scrollArea.setGeometry(QtCore.QRect(10, 130, 761, 381))
self.scrollArea.setWidgetResizable(False)
self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 749, 349))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.train_no0 = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.train_no0.setGeometry(QtCore.QRect(10, 10, 51, 16))
self.train_no0.setObjectName("train_no0")
self.b_station0 = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.b_station0.setGeometry(QtCore.QRect(80, 10, 51, 16))
self.b_station0.setObjectName("b_station0")
self.e_station0 = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.e_station0.setGeometry(QtCore.QRect(150, 10, 72, 15))
self.e_station0.setObjectName("e_station0")
self.b_date0 = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.b_date0.setGeometry(QtCore.QRect(230, 10, 72, 15))
self.b_date0.setObjectName("b_date0")
self.b_time0 = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.b_time0.setGeometry(QtCore.QRect(320, 10, 72, 15))
self.b_time0.setObjectName("b_time0")
self.line0 = QtWidgets.QFrame(self.scrollAreaWidgetContents)
self.line0.setGeometry(QtCore.QRect(0, 30, 741, 20))
self.line0.setFrameShape(QtWidgets.QFrame.HLine)
self.line0.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line0.setObjectName("line0")
self.e_time0 = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.e_time0.setGeometry(QtCore.QRect(520, 10, 72, 15))
self.e_time0.setObjectName("e_time0")
self.e_date0 = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.e_date0.setGeometry(QtCore.QRect(430, 10, 72, 15))
self.e_date0.setObjectName("e_date0")
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.checkButton = QtWidgets.QPushButton(self.centralwidget)
self.checkButton.setGeometry(QtCore.QRect(650, 70, 93, 28))
self.checkButton.setObjectName("checkButton")
self.exitbutton = QtWidgets.QPushButton(self.centralwidget)
self.exitbutton.setGeometry(QtCore.QRect(320, 520, 93, 28))
self.exitbutton.setObjectName("exitbutton")
self.U_data = QtWidgets.QLabel(self.centralwidget)
self.U_data.setGeometry(QtCore.QRect(40, 520, 72, 15))
self.U_data.setObjectName("U_data")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.dateEdit.setDate(QDate.fromString(str(datetime.date.today()),1)) #定义时间,获取当天时间
self.dateEdit.setMinimumDateTime(QtCore.QDateTime(QDate.fromString(str(datetime.date.today()), 1), QtCore.QTime(0, 0, 0)))#最小时间
self.dateEdit.setCalendarPopup(True)#开启日历
self.dateEdit.dateTimeChanged.connect(self.check)#日期更新的时候查询
self.train= QtWidgets.QLabel(self.centralwidget)
self.train.setGeometry(QtCore.QRect(10, 10 ,72, 15))
self.train.setObjectName("train")
self.train_no = QtWidgets.QLabel(self.centralwidget)
self.train_no.setGeometry(QtCore.QRect(90, 10 , 72, 15))
self.train_no.setObjectName("train_no")
self.b_station = QtWidgets.QLabel(self.centralwidget)
self.b_station.setGeometry(QtCore.QRect(170, 10 , 72, 15))
self.b_station.setObjectName("b_station")
self.e_station = QtWidgets.QLabel(self.centralwidget)
self.e_station.setGeometry(QtCore.QRect(250, 10 , 72, 15))
self.e_station.setObjectName("e_station")
self.b_date = QtWidgets.QLabel(self.centralwidget)
self.b_date.setGeometry(QtCore.QRect(340, 10, 72, 15))
self.b_date.setObjectName("b_date")
self.e_date = QtWidgets.QLabel(self.centralwidget)
self.e_date.setGeometry(QtCore.QRect(340, 5, 72, 15))
self.e_date.setObjectName("e_date")
self.b_time= QtWidgets.QLabel(self.centralwidget)
self.b_time.setGeometry(QtCore.QRect(430, 10 , 72, 15))
self.b_time.setObjectName("b_time")
self.e_time = QtWidgets.QLabel(self.centralwidget)
self.e_time.setGeometry(QtCore.QRect(520, 10, 72, 15))
self.e_time.setObjectName("b_time")
self.first_p = QtWidgets.QLabel(self.centralwidget)
self.first_p.setGeometry(QtCore.QRect(610, 10 , 72, 15))
self.first_p.setObjectName("first_p")
self.second_p = QtWidgets.QLabel(self.centralwidget)
self.second_p.setGeometry(QtCore.QRect(700, 10, 72, 15))
self.second_p.setObjectName("second_p")
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
cursor.execute("select * from 列车表 where 列车状态='运行'")
self.numb = cursor.rowcount
cursor.close()
conn.close()
for i in range(self.numb):
exec('''
self.train{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.train{j}.setGeometry(QtCore.QRect(650, 100+{y}, 51, 16))
self.train{j}.setObjectName("train0")
self.train_no{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.train_no{j}.setGeometry(QtCore.QRect(10, 60+{y}, 51, 16))
self.train_no{j}.setObjectName("train_no0")
self.b_station{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.b_station{j}.setGeometry(QtCore.QRect(80, 60+{y}, 51, 16))
self.b_station{j}.setObjectName("b_station0")
self.e_station{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.e_station{j}.setGeometry(QtCore.QRect(150, 60+{y}, 72, 15))
self.e_station{j}.setObjectName("e_station0")
self.b_date{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.b_date{j}.setGeometry(QtCore.QRect(230, 60+{y}, 72, 15))
self.b_date{j}.setObjectName("b_date0")
self.b_time{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.b_time{j}.setGeometry(QtCore.QRect(320, 60+{y}, 72, 15))
self.b_time{j}.setObjectName("b_time0")
self.line{j} = QtWidgets.QFrame(self.scrollAreaWidgetContents)
self.line{j}.setGeometry(QtCore.QRect(0, 120+{y}, 741, 20))
self.line{j}.setFrameShape(QtWidgets.QFrame.HLine)
self.line{j}.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line{j}.setObjectName("line")
self.buyButton{j} = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
self.buyButton{j}.setGeometry(QtCore.QRect(640, 70+{y}, 93, 28))
self.buyButton{j}.setObjectName("buyButton{j}")
self.e_time{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.e_time{j}.setGeometry(QtCore.QRect(520, 60+{y}, 72, 15))
self.e_time{j}.setObjectName("e_time")
self.e_date{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.e_date{j}.setGeometry(QtCore.QRect(430, 60+{y}, 72, 15))
self.e_date{j}.setObjectName("e_date0")
self.first_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.first_txt{j}.setGeometry(QtCore.QRect(10, 100+{y}, 91, 16))
self.first_txt{j}.setObjectName("first_txt0")
self.first{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.first{j}.setGeometry(QtCore.QRect(100, 100+{y}, 51, 16))
self.first{j}.setObjectName("first0")
self.first_p{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.first_p{j}.setGeometry(QtCore.QRect(260, 100+{y}, 51, 16))
self.first_p{j}.setObjectName("first_p0")
self.first_p_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.first_p_txt{j}.setGeometry(QtCore.QRect(170, 100+{y}, 91, 16))
self.first_p_txt{j}.setObjectName("first_p_txt")
self.second_p_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.second_p_txt{j}.setGeometry(QtCore.QRect(520, 100+{y}, 91, 16))
self.second_p_txt{j}.setObjectName("second_p_txt0")
self.second{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.second{j}.setGeometry(QtCore.QRect(450, 100+{y}, 51, 16))
self.second{j}.setObjectName("second0")
self.second_p{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.second_p{j}.setGeometry(QtCore.QRect(610, 100+{y}, 51, 16))
self.second_p{j}.setObjectName("second_p0")
self.second_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.second_txt{j}.setGeometry(QtCore.QRect(360, 100+{y}, 91, 16))
self.second_txt{j}.setObjectName("second_txt0")
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 749, 349+{y}))
self.buyButton{j}.clicked.connect(self.pr)
'''.format(j=i + 1, y=90 * i))
self.checkButton.clicked.connect(self.check)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "购票大厅"))
self.label.setText(_translate("MainWindow", "出发站"))
self.label_2.setText(_translate("MainWindow", "出发日期"))
self.label_3.setText(_translate("MainWindow", "终点站"))
self.train_no0.setText(_translate("MainWindow", "列车号"))
self.b_station0.setText(_translate("MainWindow", "出发站"))
self.e_station0.setText(_translate("MainWindow", "终点站"))
self.b_date0.setText(_translate("MainWindow", "发车日期"))
self.b_time0.setText(_translate("MainWindow", "发车时间"))
self.e_time0.setText(_translate("MainWindow", "到达时间"))
self.e_date0.setText(_translate("MainWindow", "到达日期"))
self.checkButton.setText(_translate("MainWindow", "查询车票"))
self.exitbutton.setText(_translate("MainWindow", "返回"))
self.U_data.setText(_translate("MainWindow", "TextLabel"))
self.U_data.hide()
for i in range(self.numb):
exec('''
self.train{j}.hide()
self.train_no{j}.hide()
self.b_station{j}.hide()
self.e_station{j}.hide()
self.b_date{j}.hide()
self.b_time{j}.hide()
self.e_date{j}.hide()
self.e_time{j}.hide()
self.first_txt{j}.hide()
self.first{j}.hide()
self.first_p_txt{j}.hide()
self.first_p{j}.hide()
self.second_txt{j}.hide()
self.second{j}.hide()
self.second_p_txt{j}.hide()
self.second_p{j}.hide()
self.line{j}.hide()
self.buyButton{j}.hide()
self.buyButton{j}.setText("购买")
'''.format(j=i + 1))
def check(self):
for i in range(self.numb):
exec('''
self.train_no{j}.hide()
self.b_station{j}.hide()
self.e_station{j}.hide()
self.b_date{j}.hide()
self.b_time{j}.hide()
self.e_date{j}.hide()
self.e_time{j}.hide()
self.first_txt{j}.hide()
self.first{j}.hide()
self.first_p_txt{j}.hide()
self.first_p{j}.hide()
self.second_txt{j}.hide()
self.second{j}.hide()
self.second_p_txt{j}.hide()
self.second_p{j}.hide()
self.line{j}.hide()
self.buyButton{j}.hide()
'''.format(j=i + 1))
b = self.comboBox.currentText()#出发站
e = self.comboBox_2.currentText()#终点站
day1 = self.dateEdit.text()
day = str(day1)
print("账号:%s" % self.U_data.text())
print("%s->%s,日期:%s" % (b, e, day))
print("%s 查询列车" % datetime.datetime.now())
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
z = "%" + b + "%" + e + "%"
sql = "select 列车编号 from 列车表 where 途径站 like '%s' and 列车编号 in (select 车站表.列车编号 from 车站表 where 车站名='%s' and date(车站表.发车日期)='%s'and 状态='未抵达')" % (z, b, day)
# sql = "select * from 列车表,车站表 where 车站表.列车编号 in (select 列车编号 from 列车表 where 途径站 like '%s') and 车站表.车站名 in ('%s','%s') "%(z,s,e)
cursor.execute(sql)
c = cursor.fetchall()
date = []
for i in c:
for j in i:
date2 = []
date2.append(j)
sql2 = "select 车次号,一等座数量,一等座价格,二等座数量,二等座价格 from 列车表 where 列车编号='%s'" % j
cursor.execute(sql2)
p = cursor.fetchall()
for a in p:
for b1 in a:
date2.append(b1)
sql1 = "select 车站名,发车日期,发车时间 from 车站表 where 列车编号='%s' and 车站名 in ('%s','%s') and date(发车日期)>='%s'" % (j, b, e, day)
cursor.execute(sql1)
y = cursor.fetchall()
for n in y:
for m in n:
date2.append(m)
sql3 = "select count(列车编号) from 座位表 where 列车编号='%s' and 座位级别='一等座'"%j
cursor.execute(sql3)
num = cursor.fetchall()
for c in num:
for d in c:
date2[2] = date2[2]-d
sql4 = "select count(列车编号) from 座位表 where 列车编号='%s' and 座位级别='二等座'" % j
cursor.execute(sql4)
num1 = cursor.fetchall()
for c1 in num1:
for d1 in c1:
date2[4] = date2[4] -d1
d1 = datetime.datetime.now().strftime("%Y/%m/%d %H:%M")
d = date2[7]+" "+date2[8]
d2 = datetime.datetime.strptime(d1,"%Y/%m/%d %H:%M")
d3 = datetime.datetime.strptime(d,"%Y/%m/%d %H:%M")
if d2
用户-购票大厅-购票UI设计:这里可以选择座位所属的级别、车厢号以及座位号,购票时需要输入乘客的信息
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'buy_ticketUI.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
import pymysql
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox, QInputDialog, QLineEdit
import thp
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setStyleSheet("#MainWindow{border-image: url(:/thpic/60.jpg);}")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(330, 20, 131, 41))
self.label.setObjectName("label")
self.B_time = QtWidgets.QLabel(self.centralwidget)
self.B_time.setGeometry(QtCore.QRect(101, 114, 101, 31))
self.B_time.setObjectName("B_time")
self.B_station = QtWidgets.QLabel(self.centralwidget)
self.B_station.setGeometry(QtCore.QRect(130, 150, 41, 21))
self.B_station.setObjectName("B_station")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(230, 130, 331, 16))
self.label_4.setObjectName("label_4")
self.E_time = QtWidgets.QLabel(self.centralwidget)
self.E_time.setGeometry(QtCore.QRect(591, 114, 101, 31))
self.E_time.setObjectName("E_time")
self.E_station = QtWidgets.QLabel(self.centralwidget)
self.E_station.setGeometry(QtCore.QRect(620, 150, 41, 21))
self.E_station.setObjectName("E_station")
self.train_No = QtWidgets.QLabel(self.centralwidget)
self.train_No.setGeometry(QtCore.QRect(370, 110, 51, 20))
self.train_No.setObjectName("train_No")
self.B_date = QtWidgets.QLabel(self.centralwidget)
self.B_date.setGeometry(QtCore.QRect(100, 80, 101, 20))
self.B_date.setObjectName("B_date")
self.E_date = QtWidgets.QLabel(self.centralwidget)
self.E_date.setGeometry(QtCore.QRect(590, 80, 101, 20))
self.E_date.setObjectName("E_date")
self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(160, 280, 451, 23))
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.comboBox = QtWidgets.QComboBox(self.horizontalLayoutWidget)
self.comboBox.setObjectName("comboBox")
self.horizontalLayout.addWidget(self.comboBox)
self.comboBox_1 = QtWidgets.QComboBox(self.horizontalLayoutWidget)
self.comboBox_1.setObjectName("comboBox_1")
self.horizontalLayout.addWidget(self.comboBox_1)
self.comboBox_2 = QtWidgets.QComboBox(self.horizontalLayoutWidget)
self.comboBox_2.setObjectName("comboBox_2")
self.horizontalLayout.addWidget(self.comboBox_2)
self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.centralwidget)
self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(160, 360, 451, 31))
self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")
self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)
self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
self.lineEdit = QtWidgets.QLineEdit(self.horizontalLayoutWidget_2)
self.lineEdit.setObjectName("lineEdit")
self.horizontalLayout_2.addWidget(self.lineEdit)
self.lineEdit_2 = QtWidgets.QLineEdit(self.horizontalLayoutWidget_2)
self.lineEdit_2.setObjectName("lineEdit_2")
self.horizontalLayout_2.addWidget(self.lineEdit_2)
self.horizontalLayoutWidget_3 = QtWidgets.QWidget(self.centralwidget)
self.horizontalLayoutWidget_3.setGeometry(QtCore.QRect(240, 470, 301, 31))
self.horizontalLayoutWidget_3.setObjectName("horizontalLayoutWidget_3")
self.horizontalLayout_3 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_3)
self.horizontalLayout_3.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_3.setObjectName("horizontalLayout_3")
self.buyButton = QtWidgets.QPushButton(self.horizontalLayoutWidget_3)
self.buyButton.setObjectName("buyButton")
self.horizontalLayout_3.addWidget(self.buyButton)
self.exitButton = QtWidgets.QPushButton(self.horizontalLayoutWidget_3)
self.exitButton.setObjectName("exitButton")
self.horizontalLayout_3.addWidget(self.exitButton)
self.U_date = QtWidgets.QLabel(self.centralwidget)
self.U_date.setGeometry(QtCore.QRect(30, 500, 72, 15))
self.U_date.setObjectName("U_date")
self.by_date = QtWidgets.QLabel(self.centralwidget)
self.by_date.setGeometry(QtCore.QRect(220, 150, 351, 20))
self.by_date.setObjectName("by_date")
self.T_date = QtWidgets.QLabel(self.centralwidget)
self.T_date.setGeometry(QtCore.QRect(20, 530, 72, 15))
self.T_date.setObjectName("U_date")
self.M_date = QtWidgets.QLabel(self.centralwidget)
self.M_date.setGeometry(QtCore.QRect(30, 530, 72, 15))
self.M_date.setObjectName("M_date")
self.horizontalLayoutWidget_4 = QtWidgets.QWidget(self.centralwidget)
self.horizontalLayoutWidget_4.setGeometry(QtCore.QRect(160, 250, 451, 21))
self.horizontalLayoutWidget_4.setObjectName("horizontalLayoutWidget_4")
self.horizontalLayout_4 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_4)
self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_4.setObjectName("horizontalLayout_4")
self.label_8 = QtWidgets.QLabel(self.horizontalLayoutWidget_4)
self.label_8.setObjectName("label_8")
self.horizontalLayout_4.addWidget(self.label_8)
self.label_7 = QtWidgets.QLabel(self.horizontalLayoutWidget_4)
self.label_7.setObjectName("label_7")
self.horizontalLayout_4.addWidget(self.label_7)
self.label_5 = QtWidgets.QLabel(self.horizontalLayoutWidget_4)
self.label_5.setObjectName("label_5")
self.horizontalLayout_4.addWidget(self.label_5)
self.horizontalLayoutWidget_5 = QtWidgets.QWidget(self.centralwidget)
self.horizontalLayoutWidget_5.setGeometry(QtCore.QRect(160, 340, 451, 21))
self.horizontalLayoutWidget_5.setObjectName("horizontalLayoutWidget_5")
self.horizontalLayout_5 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_5)
self.horizontalLayout_5.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout_5.setObjectName("horizontalLayout_5")
self.label_9 = QtWidgets.QLabel(self.horizontalLayoutWidget_5)
self.label_9.setObjectName("label_9")
self.horizontalLayout_5.addWidget(self.label_9)
self.label_11 = QtWidgets.QLabel(self.horizontalLayoutWidget_5)
self.label_11.setObjectName("label_11")
self.horizontalLayout_5.addWidget(self.label_11)
self.money = QtWidgets.QLabel(self.centralwidget)
self.money.setGeometry(QtCore.QRect(350, 200, 81, 31))
self.money.setObjectName("money")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.buyButton.clicked.connect(self.buy)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "修改密码"))
self.label.setText(_translate("MainWindow", "购票页面
"))
self.buyButton.setText(_translate("MainWindow", "提交订单"))
self.exitButton.setText(_translate("MainWindow", "退出"))
self.U_date.setText(_translate("MainWindow", "U_date"))
self.label_8.setText(_translate("MainWindow", "请选择等级"))
self.label_7.setText(_translate("MainWindow", "请选择车厢"))
self.label_5.setText(_translate("MainWindow", "请选择座位"))
self.label_9.setText(_translate("MainWindow", "请输入乘车人姓名"))
self.label_11.setText(_translate("MainWindow", "请输入乘车人身份证号码"))
self.U_date.hide()
self.T_date.hide()
self.M_date.hide()
def buy(self):
date =[]
success = 0
seat_no = self.comboBox_2.currentText()
by_name = self.lineEdit.text()
by_id = self.lineEdit_2.text()
if seat_no =='':
QMessageBox.critical(self,'座位','请选择座位!')
success=1
return
if by_id=='' or by_name=='':
QMessageBox.critical(self, '乘车人', '请输入乘车人的完整信息!')
success=1
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
station1 = self.B_station.text()
station = station1.strip("")
estation1 = self.E_station.text()
estation = estation1.strip("
")
sql = "select 车站编号 from 车站表 where 车站名='%s' and 列车编号='%s'"%(station,self.T_date.text())
cursor.execute(sql)
train_station_no = 0
for i in cursor.fetchall():
for j in i:
train_station_no = j
sql1 ="select max(座位编号) from 座位表"
cursor.execute(sql1)
seatno = 0
ss = cursor.fetchall()
for i in ss:
for j in i:
if j==None:
seatno = 0
else:
seatno = j+1
level = self.comboBox.currentText()
trunk1 = self.comboBox_1.currentText()
trunk = trunk1.strip('号车厢')
t_no = self.U_date.text()
train1 = self.T_date.text()
train2 =int(train1)
price1 = self.M_date.text()
price = int(price1)
sql1 ="select 余额 from 用户表 where 手机号='%s'"%t_no
cursor.execute(sql1)
for i in cursor.fetchall():
for j in i:
if j
用户-我的订单UI设计:只有某列车未经过的某站才可以退票,已经过的车站的票无法退票
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'my_orderUI.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox,QInputDialog, QLineEdit
from PyQt5 import QtCore, QtGui, QtWidgets
import pymysql
from PyQt5.QtCore import pyqtSlot, QDate
import string
import thp
class Ui_MainWindow(object):
numb = 0
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setStyleSheet("#MainWindow{border-image: url(:/thpic/60.jpg);}")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(330, 20, 131, 41))
self.label.setObjectName("label")
self.U_date = QtWidgets.QLabel(self.centralwidget)
self.U_date.setGeometry(QtCore.QRect(40, 510, 72, 15))
self.U_date.setObjectName("U_date")
self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
self.scrollArea.setGeometry(QtCore.QRect(40, 130, 701, 351))
self.scrollArea.setWidgetResizable(False)
self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 699, 349))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.exitButton = QtWidgets.QPushButton(self.centralwidget)
self.exitButton.setGeometry(QtCore.QRect(340, 485, 93, 28))
self.exitButton.setObjectName("exitButton")
self.updateButton = QtWidgets.QPushButton(self.centralwidget)
self.updateButton.setGeometry(QtCore.QRect(340, 520, 93, 28))
self.updateButton.setObjectName("updateButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
cursor.execute("select * from 座位表")
self.numb = cursor.rowcount
for i in range(self.numb):
exec('''
self.line{j} = QtWidgets.QFrame(self.scrollAreaWidgetContents)
self.line{j}.setGeometry(QtCore.QRect(0, 110+{y}, 701, 16))
self.line{j}.setFrameShape(QtWidgets.QFrame.HLine)
self.line{j}.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line{j}.setObjectName("line{j}")
self.begin_station{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.begin_station{j}.setGeometry(QtCore.QRect(20, 20+{y}, 41, 16))
self.begin_station{j}.setObjectName("begin_station{j}")
self.arrow{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.arrow{j}.setGeometry(QtCore.QRect(60, 20+{y}, 71, 16))
self.arrow{j}.setObjectName("arrow{j}")
self.end_station{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.end_station{j}.setGeometry(QtCore.QRect(140, 20+{y}, 41, 16))
self.end_station{j}.setObjectName("end_station{j}")
self.begin_data{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.begin_data{j}.setGeometry(QtCore.QRect(20, 60+{y}, 72, 15))
self.begin_data{j}.setObjectName("begin_data{j}")
self.end_data{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.end_data{j}.setGeometry(QtCore.QRect(140, 60+{y}, 72, 15))
self.end_data{j}.setObjectName("end_data{j}")
self.begin_time{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.begin_time{j}.setGeometry(QtCore.QRect(20, 40+{y}, 51, 16))
self.begin_time{j}.setObjectName("begin_time{j}")
self.end_time{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.end_time{j}.setGeometry(QtCore.QRect(140, 40+{y}, 51, 16))
self.end_time{j}.setObjectName("end_time{j}")
self.trainNO{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.trainNO{j}.setGeometry(QtCore.QRect(70, 10+{y}, 41, 16))
self.trainNO{j}.setObjectName("trainNO{j}")
self.level{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.level{j}.setGeometry(QtCore.QRect(10, 90+{y}, 61, 16))
self.level{j}.setObjectName("level{j}")
self.trunk{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.trunk{j}.setGeometry(QtCore.QRect(80, 90+{y}, 61, 16))
self.trunk{j}.setObjectName("trunk{j}")
self.seat{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.seat{j}.setGeometry(QtCore.QRect(150, 90+{y}, 72, 15))
self.seat{j}.setObjectName("seat{j}")
self.seatno{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.seatno{j}.setGeometry(QtCore.QRect(470, 90+{y}, 72, 15))
self.seatno{j}.setObjectName("seatno{j}")
self.by_name{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.by_name{j}.setGeometry(QtCore.QRect(320, 30+{y}, 72, 15))
self.by_name{j}.setObjectName("by_name{j}")
self.by_id{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.by_id{j}.setGeometry(QtCore.QRect(320, 60+{y}, 211, 16))
self.by_id{j}.setObjectName("by_id")
self.refundButton{j} = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
self.refundButton{j}.setGeometry(QtCore.QRect(590, 40+{y}, 80, 28))
self.refundButton{j}.setObjectName("refundButton{j}")
self.by_name_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.by_name_txt{j}.setGeometry(QtCore.QRect(260, 30+{y}, 51, 16))
self.by_name_txt{j}.setObjectName("by_name_txt{j}")
self.by_id_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.by_id_txt{j}.setGeometry(QtCore.QRect(260, 60+{y}, 51, 16))
self.by_id_txt{j}.setObjectName("by_id_txt{j}")
self.price{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.price{j}.setGeometry(QtCore.QRect(490, 50+{y}, 72, 16))
self.price{j}.setObjectName("price{j}")
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 699, 349+{y}))
self.refundButton{j}.clicked.connect(self.refund)
'''.format(j=i+1,y=115 * i))
self.updateButton.clicked.connect(self.updatemyorder)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "我的订单"))
self.label.setText(_translate("MainWindow", "我的订单
"))
self.U_date.setText(_translate("MainWindow", "TextLabel"))
self.exitButton.setText(_translate("MainWindow", "返回"))
self.updateButton.setText(_translate("MainWindow", "刷新"))
self.U_date.hide()
for i in range(self.numb):
exec('''
self.arrow{j}.setText("-------->")
self.refundButton{j}.setText("退票")
self.by_name_txt{j}.setText("乘车人:")
self.by_id_txt{j}.setText("身份证:")
'''.format(j=i+1))
def updatemyorder(self):
for i in range(self.numb):
exec('''
self.seatno{j}.hide()
self.line{j}.hide()
self.arrow{j}.hide()
self.refundButton{j}.hide()
self.by_name_txt{j}.hide()
self.by_id_txt{j}.hide()
self.begin_station{j}.hide()
self.end_station{j}.hide()
self.begin_time{j}.hide()
self.begin_data{j}.hide()
self.end_time{j}.hide()
self.end_data{j}.hide()
self.trainNO{j}.hide()
self.level{j}.hide()
self.trunk{j}.hide()
self.seat{j}.hide()
self.by_name{j}.hide()
self.by_id{j}.hide()
self.price{j}.hide()
'''.format(j=i + 1))
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
sql = "select 座位编号,列车编号,出发站,终点站,座位级别,车厢,座位,价格,乘车人姓名,乘车人身份证 from 座位表 where 手机号='%s'"%self.U_date.text()
cursor.execute(sql)
infor = cursor.fetchall()
row = cursor.rowcount
date = []
for a in infor:
date1 = []
for b in a:
date1.append(b)
sql1 = "select 发车日期,发车时间 from 车站表 where 列车编号=%s and 车站名 in ('%s','%s')"%(date1[1],date1[2],date1[3])
cursor.execute(sql1)
day = cursor.fetchall()
for m in day:
for n in m:
date1.append(n)
sql2 = "select 车次号 from 列车表 where 列车编号=%s"%date1[1]
cursor.execute(sql2)
for c in cursor.fetchall():
for d in c:
date1.append(d)
sql3 = "select 状态 from 车站表 where 列车编号=%s and 车站名 ='%s'"%(date1[1],date1[2])
cursor.execute(sql3)
for e in cursor.fetchall():
for f in e:
date1.append(f)
date.append(date1)
for i in range(len(date)):
exec('''
self.line{j}.show()
self.arrow{j}.show()
self.by_name_txt{j}.show()
self.by_id_txt{j}.show()
self.begin_station{j}.show()
self.end_station{j}.show()
self.begin_time{j}.show()
self.begin_data{j}.show()
self.end_time{j}.show()
self.end_data{j}.show()
self.trainNO{j}.show()
self.level{j}.show()
self.trunk{j}.show()
self.seat{j}.show()
self.by_name{j}.show()
self.by_id{j}.show()
self.price{j}.show()
self.begin_station{j}.clear()
self.seatno{j}.clear()
self.end_station{j}.clear()
self.begin_time{j}.clear()
self.begin_data{j}.clear()
self.end_time{j}.clear()
self.end_data{j}.clear()
self.trainNO{j}.clear()
self.level{j}.clear()
self.trunk{j}.clear()
self.seat{j}.clear()
self.by_name{j}.clear()
self.by_id{j}.clear()
self.price{j}.clear()
self.seatno{j}.setText(str(date[{t}][0]))
self.begin_station{j}.setText(str(date[{t}][2]))
self.end_station{j}.setText(str(date[{t}][3]))
self.begin_time{j}.setText(str(date[{t}][11]))
self.begin_data{j}.setText(str(date[{t}][10]))
self.end_time{j}.setText(str(date[{t}][13]))
self.end_data{j}.setText(str(date[{t}][12]))
self.trainNO{j}.setText(str(date[{t}][14]))
self.level{j}.setText(str(date[{t}][4]))
self.trunk{j}.setText(str(date[{t}][5])+"号车厢")
self.seat{j}.setText(str(date[{t}][6])+"号座位")
self.by_name{j}.setText(str(date[{t}][8]))
self.by_id{j}.setText(str(date[{t}][9]))
self.price{j}.setText(str(date[{t}][7])+"元")
if date[{t}][15]=='未抵达':self.refundButton{j}.show()
if date[{t}][15]=='抵达':self.refundButton{j}.hide()
'''.format(j=i+1,t=i))
cursor.close()
conn.close()
def refund(self):
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
s = self.sender().objectName()
ss = s.strip('refundButton')
ss1 = int(ss)
success = 0
sn = []
exec('''
sn.append(self.seatno{k}.text())
sn.append(self.price{k}.text())
'''.format(k=ss1))
print(ss1)
sn1 = int(sn[0])
money1 = sn[1].strip('元')
money = int(money1)
passwd,bool1= QInputDialog.getText(self,'密码','请输入密码',QLineEdit.EchoMode.Password)
if passwd!='' and bool1:
sql = "select 密码 from 用户表 where 手机号='%s'"%self.U_date.text()
cursor.execute(sql)
for i in cursor.fetchall():
for j in i:
if j==passwd:
success = 1
else:
QMessageBox.critical(self,"错误","请重新输入密码!!")
if passwd=='' and bool1:
success = 0
QMessageBox.critical(self, "错误", "请输入密码!!")
if success==1:
cursor.execute("delete from 座位表 where 座位编号=%s"%sn1)
#cursor.execute("update 用户表 set 余额=余额+%s where 手机号='%s'"%(money,self.U_date.text()))
conn.commit()
QMessageBox.information(self, "正确", "退票成功!!!")
self.updateButton.click()
cursor.close()
conn.close()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
管理员主页UI设计:包含更新列车状态(手动更新列车状态)、用户管理(初始化用户的密码)、票务信息(乘务员查看某列车某车厢的乘客的信息)和列车管理(显示历史列车的信息和添加列车)四个功能模块
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'Admin_homeUI.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
import thp
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setStyleSheet("#MainWindow{border-image: url(:/thpic/60.jpg);}")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(250, 20, 281, 41))
self.label.setObjectName("label")
self.L_out = QtWidgets.QPushButton(self.centralwidget)
self.L_out.setGeometry(QtCore.QRect(630, 70, 93, 28))
self.L_out.setObjectName("L_out")
self.A_date = QtWidgets.QLabel(self.centralwidget)
self.A_date.setGeometry(QtCore.QRect(30, 510, 72, 15))
self.A_date.setObjectName("A_date")
self.train_manage = QtWidgets.QPushButton(self.centralwidget)
self.train_manage.setGeometry(QtCore.QRect(180, 150, 211, 141))
self.train_manage.setObjectName("train_manage")
self.update_train = QtWidgets.QPushButton(self.centralwidget)
self.update_train.setGeometry(QtCore.QRect(400, 150, 211, 141))
self.update_train.setObjectName("update_train")
self.User_manage = QtWidgets.QPushButton(self.centralwidget)
self.User_manage.setGeometry(QtCore.QRect(400, 300, 211, 141))
self.User_manage.setObjectName("User_manage")
self.ticket_informations = QtWidgets.QPushButton(self.centralwidget)
self.ticket_informations.setGeometry(QtCore.QRect(180, 300, 211, 141))
self.ticket_informations.setObjectName("ticket_informations")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "管理员主页"))
self.label.setText(_translate("MainWindow", "火车售票管理信息系统
"))
self.L_out.setText(_translate("MainWindow", "退出登录"))
self.A_date.setText(_translate("MainWindow", "TextLabel"))
self.train_manage.setText(_translate("MainWindow", "列车管理"))
self.update_train.setText(_translate("MainWindow", "更新列车状态"))
self.User_manage.setText(_translate("MainWindow", "用户管理"))
self.ticket_informations.setText(_translate("MainWindow", "票务信息"))
self.A_date.hide()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
管理员-用户管理UI设计:管理员有权限初始化某个用户的密码
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'user_manageUI.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox,QInputDialog, QLineEdit
from PyQt5 import QtCore, QtGui, QtWidgets
import pymysql
from PyQt5.QtCore import pyqtSlot, QDate
import string
import datetime
import thp
class Ui_MainWindow(object):
numb = 0
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setStyleSheet("#MainWindow{border-image: url(:/thpic/60.jpg);}")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(330, 20, 131, 41))
self.label.setObjectName("label")
self.A_date = QtWidgets.QLabel(self.centralwidget)
self.A_date.setGeometry(QtCore.QRect(40, 510, 72, 15))
self.A_date.setObjectName("A_date")
self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
self.scrollArea.setGeometry(QtCore.QRect(40, 130, 701, 331))
self.scrollArea.setWidgetResizable(False)
self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 699, 329))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.exitButton = QtWidgets.QPushButton(self.centralwidget)
self.exitButton.setGeometry(QtCore.QRect(340, 480, 93, 28))
self.exitButton.setObjectName("exitButton")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(50, 90, 191, 16))
self.label_2.setObjectName("label_2")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(240, 90, 113, 21))
self.lineEdit.setObjectName("lineEdit")
self.searchButton = QtWidgets.QPushButton(self.centralwidget)
self.searchButton.setGeometry(QtCore.QRect(650, 90, 93, 28))
self.searchButton.setObjectName("searchButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
cursor.execute("select * from 用户表")
self.numb = cursor.rowcount
for i in range(self.numb):
exec('''
self.user_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.user_txt{j}.setGeometry(QtCore.QRect(10, 10+{y}, 51, 16))
self.user_txt{j}.setObjectName("user_txt")
self.user{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.user{j}.setGeometry(QtCore.QRect(60, 10+{y}, 190, 15))
self.user{j}.setObjectName("user")
self.resetButton{j} = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
self.resetButton{j}.setGeometry(QtCore.QRect(580, 10+{y}, 81, 28))
self.resetButton{j}.setObjectName("resetButton{j}")
self.line{j} = QtWidgets.QFrame(self.scrollAreaWidgetContents)
self.line{j}.setGeometry(QtCore.QRect(0, 40+{y}, 701, 16))
self.line{j}.setFrameShape(QtWidgets.QFrame.HLine)
self.line{j}.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line{j}.setObjectName("line")
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 699, 329+{y}))
self.resetButton{j}.clicked.connect(self.reset)
'''.format(j=i+1,y=40*i))
self.searchButton.clicked.connect(self.searchuser)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "用户管理"))
self.label.setText(_translate("MainWindow", "用户管理
"))
self.A_date.setText(_translate("MainWindow", "TextLabel"))
self.exitButton.setText(_translate("MainWindow", "返回"))
self.label_2.setText(_translate("MainWindow", "请输入需要查找的用户账号:"))
self.searchButton.setText(_translate("MainWindow", "查找"))
self.A_date.hide()
for i in range(self.numb):
exec('''
self.user_txt{j}.setText("账号:")
self.resetButton{j}.setText("重置密码")
'''.format(j=i+1))
def searchuser(self):
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
for i in range(self.numb):
exec('''
self.user_txt{j}.hide()
self.user{j}.hide()
self.resetButton{j}.hide()
self.line{j}.hide()
'''.format(j=i+1))
if self.lineEdit.text()=='':
cursor.execute("select 手机号 from 用户表")
date = []
for a in cursor.fetchall():
for b in a:
date.append(b)
for i in range(len(date)):
exec('''
self.user_txt{j}.show()
self.user{j}.show()
self.resetButton{j}.show()
self.line{j}.show()
self.user{j}.clear()
self.user{j}.setText(date[{k}])
'''.format(j=i+1,k=i))
else:
cursor.execute("select 手机号 from 用户表 where 手机号='%s'"%self.lineEdit.text())
row = cursor.rowcount
u = cursor.fetchall()
if row ==0:
QMessageBox.critical(self,"错误","没有该账号!!!")
self.lineEdit.clear()
self.searchButton.click()
else:
u1 = ''
for c in u:
for d in c:
u1 = d
for i in range(row):
exec('''
self.user_txt{j}.show()
self.user{j}.show()
self.resetButton{j}.show()
self.line{j}.show()
self.user{j}.clear()
self.user{j}.setText(u1)
'''.format(j=i + 1))
cursor.close()
conn.close()
def reset(self):
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
success =0
s = self.sender().objectName()
ss = s.strip('resetButton')
ss1 = int(ss)
unum = []
exec('''
unum.append(self.user{j}.text())
'''.format(j=ss1))
passwd, bool1 = QInputDialog.getText(self, '密码', '请输入管理员密码', QLineEdit.EchoMode.Password)
if passwd and bool1:
sql = "select 密码 from 管理员表 where 管理员账号='%s'" % self.A_date.text()
cursor.execute(sql)
for i in cursor.fetchall():
for j in i:
if j == passwd:
success = 1
else:
success = 0
QMessageBox.critical(self, "错误", "请重新输入管理员密码!!")
if passwd=='' and bool1:
success = 0
QMessageBox.critical(self, "错误", "请输入管理员密码!!")
if success==1:
cursor.execute("update 用户表 set 密码='123456' where 手机号='%s'"%unum[0])
conn.commit()
QMessageBox.information(self, "正确", "该用户的密码已经初始化为123456!!!")
print("%s 管理员:%s 将用户:%s 重置密码"%(datetime.datetime.now(),self.A_date.text(),unum[0]))
self.lineEdit.clear()
self.searchButton.click()
cursor.close()
conn.close()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
管理员-更新列车状态UI设计:管理员可以手动更新列车的状态
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'update_trainUI.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
import datetime
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox,QInputDialog, QLineEdit
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import pyqtSlot, QDate
import pymysql
import thp
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setStyleSheet("#MainWindow{border-image: url(:/thpic/60.jpg);}")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(290, 20, 181, 41))
self.label.setObjectName("label")
self.A_date = QtWidgets.QLabel(self.centralwidget)
self.A_date.setGeometry(QtCore.QRect(40, 510, 72, 15))
self.A_date.setObjectName("A_date")
self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
self.scrollArea.setGeometry(QtCore.QRect(40, 120, 701, 331))
self.scrollArea.setWidgetResizable(False)
self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 699, 329))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.exitButton = QtWidgets.QPushButton(self.centralwidget)
self.exitButton.setGeometry(QtCore.QRect(340, 480, 93, 28))
self.exitButton.setObjectName("exitButton")
self.label_txt1 = QtWidgets.QLabel(self.centralwidget)
self.label_txt1.setGeometry(QtCore.QRect(50, 90, 91, 16))
self.label_txt1.setObjectName("label_txt1")
self.searchButton = QtWidgets.QPushButton(self.centralwidget)
self.searchButton.setGeometry(QtCore.QRect(650, 90, 93, 28))
self.searchButton.setObjectName("searchButton")
self.comboBox = QtWidgets.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(140, 90, 87, 22))
self.comboBox.setObjectName("comboBox")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.train_select()
for i in range(10):
exec('''
self.line{j} = QtWidgets.QFrame(self.scrollAreaWidgetContents)
self.line{j}.setGeometry(QtCore.QRect(0, 40+{y}, 701, 16))
self.line{j}.setFrameShape(QtWidgets.QFrame.HLine)
self.line{j}.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line{j}.setObjectName("line{j}")
self.train_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.train_txt{j}.setGeometry(QtCore.QRect(10, 10+{y}, 51, 16))
self.train_txt{j}.setObjectName("train_txt{j}")
self.train{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.train{j}.setGeometry(QtCore.QRect(60, 10+{y}, 72, 15))
self.train{j}.setObjectName("train{j}")
self.train_NO{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.train_NO{j}.setGeometry(QtCore.QRect(20, 26+{y}, 72, 15))
self.train_NO{j}.setObjectName("train_NO{j}")
self.station_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.station_txt{j}.setGeometry(QtCore.QRect(150, 10+{y}, 51, 16))
self.station_txt{j}.setObjectName("station_txt{j}")
self.station{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.station{j}.setGeometry(QtCore.QRect(200, 10+{y}, 72, 15))
self.station{j}.setObjectName("station{j}")
self.state_chose{j} = QtWidgets.QComboBox(self.scrollAreaWidgetContents)
self.state_chose{j}.setGeometry(QtCore.QRect(470, 10+{y}, 87, 22))
self.state_chose{j}.setObjectName("state_chose{j}")
self.station_state{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.station_state{j}.setGeometry(QtCore.QRect(360, 10+{y}, 72, 15))
self.station_state{j}.setObjectName("station_state{j}")
self.station_state_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.station_state_txt{j}.setGeometry(QtCore.QRect(300, 10+{y}, 51, 16))
self.station_state_txt{j}.setObjectName("station_state_txt{j}")
self.modify_state{j} = QtWidgets.QPushButton(self.scrollAreaWidgetContents)
self.modify_state{j}.setGeometry(QtCore.QRect(570, 10+{y}, 93, 28))
self.modify_state{j}.setObjectName("modify_state{j}")
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 699, 329+{y}))
self.modify_state{j}.clicked.connect(self.modify)
'''.format(j=i+1,y=40*i))
self.searchButton.clicked.connect(self.search)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "更新列车状态"))
self.label.setText(_translate("MainWindow", "更新列车状态
"))
self.A_date.setText(_translate("MainWindow", "TextLabel"))
self.exitButton.setText(_translate("MainWindow", "返回"))
self.label_txt1.setText(_translate("MainWindow", "请选择列车:"))
self.searchButton.setText(_translate("MainWindow", "查看"))
self.A_date.hide()
for i in range(10):
exec('''
self.train_txt{j}.setText("列车:")
self.station_txt{j}.setText("车站:")
self.station_state_txt{j}.setText( "状态:")
self.modify_state{j}.setText("修改状态")
self.state_chose{j}.addItems(['抵达','未抵达'])
'''.format(j=i+1))
def train_select(self):
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
cursor.execute("select 车次号 from 列车表 where 列车状态='运行'")
items = []
for i in cursor.fetchall():
for j in i:
items.append(j)
self.comboBox.clear()
self.comboBox.addItems(items)
cursor.close()
conn.close()
def search(self):
for i in range(10):
exec('''
self.line{j}.hide()
self.train_txt{j}.hide()
self.train{j}.hide()
self.station_txt{j}.hide()
self.station_state_txt{j}.hide()
self.modify_state{j}.hide()
self.state_chose{j}.hide()
self.station{j}.hide()
self.station_state{j}.hide()
self.modify_state{j}.hide()
self.train_NO{j}.hide()
'''.format(j=i + 1))
train = self.comboBox.currentText()
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
cursor.execute("select 列车编号 from 列车表 where 车次号='%s' and 列车状态='运行'" % train)
trainNO = 0
for i in cursor.fetchall():
for j in i:
trainNO = j
cursor.execute("select 车站编号,车站名,状态 from 车站表 where 列车编号=%s"%trainNO)
infor = cursor.fetchall()
date = []
for a in infor:
date1 = []
for b in a:
date1.append(b)
date.append(date1)
cursor.close()
conn.close()
for i in range(len(date)):
exec('''
self.line{j}.show()
self.train_txt{j}.show()
self.train{j}.show()
self.station_txt{j}.show()
self.station_state_txt{j}.show()
self.modify_state{j}.show()
self.state_chose{j}.show()
self.station{j}.show()
self.station_state{j}.show()
self.modify_state{j}.show()
self.train{j}.clear()
self.station{j}.clear()
self.train_NO{j}.clear()
self.station_state{j}.clear()
self.train_NO{j}.setText(str(date[{k}][0]))
self.train{j}.setText(train)
self.station{j}.setText(str(date[{k}][1]))
self.station_state{j}.setText(str(date[{k}][2]))
'''.format(j=i+1,k=i))
def modify(self):
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
success = 0
s = self.sender().objectName()
ss = s.strip('modify_state')
ss1 = int(ss)
unum = []
exec('''
unum.append(self.train_NO{j}.text())
unum.append(self.state_chose{j}.currentText())
'''.format(j=ss1))
passwd, bool1 = QInputDialog.getText(self, '密码', '请输入管理员密码', QLineEdit.EchoMode.Password)
if passwd and bool1:
sql = "select 密码 from 管理员表 where 管理员账号='%s'" % self.A_date.text()
cursor.execute(sql)
for i in cursor.fetchall():
for j in i:
if j == passwd:
success = 1
else:
success = 0
QMessageBox.critical(self, "错误", "请重新输入管理员密码!!")
if passwd == '' and bool1:
success = 0
QMessageBox.critical(self, "错误", "请输入管理员密码!!")
if success == 1:
tra = int(unum[0])
state1 = unum[1]
cursor.execute("update 车站表 set 状态='%s' where 车站编号=%s"%(state1,tra))
conn.commit()
QMessageBox.information(self, "正确", "状态修改成功!!!")
cursor.execute("select * from 列车表,车站表 where 列车表.列车编号=车站表.列车编号 and 列车表.车次号='%s' and 列车表.列车状态='运行' and 车站表.状态='未抵达'" % self.comboBox.currentText())
row = cursor.rowcount
if row==0:
cursor.execute("update 列车表 set 列车状态='已完成' where 车次号='%s' and 列车状态='运行'"%self.comboBox.currentText())
conn.commit()
print("%s列车:%s已完成行程"%(datetime.datetime.now(),self.comboBox.currentText()))
self.train_select()
self.searchButton.click()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
管理员-票务信息UI设计:查看某运行中的列车某车厢的乘客信息
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'ticket_informationUI.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox
from PyQt5 import QtCore, QtGui, QtWidgets
import pymysql
import thp
class Ui_MainWindow(object):
numb = 0
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setStyleSheet("#MainWindow{border-image: url(:/thpic/60.jpg);}")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(330, 20, 131, 41))
self.label.setObjectName("label")
self.A_date = QtWidgets.QLabel(self.centralwidget)
self.A_date.setGeometry(QtCore.QRect(40, 510, 72, 15))
self.A_date.setObjectName("A_date")
self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
self.scrollArea.setGeometry(QtCore.QRect(40, 130, 701, 331))
self.scrollArea.setWidgetResizable(False)
self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 699, 329))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.exitButton = QtWidgets.QPushButton(self.centralwidget)
self.exitButton.setGeometry(QtCore.QRect(340, 480, 93, 28))
self.exitButton.setObjectName("exitButton")
self.label_txt1 = QtWidgets.QLabel(self.centralwidget)
self.label_txt1.setGeometry(QtCore.QRect(50, 90, 91, 16))
self.label_txt1.setObjectName("label_txt1")
self.searchButton = QtWidgets.QPushButton(self.centralwidget)
self.searchButton.setGeometry(QtCore.QRect(650, 90, 93, 28))
self.searchButton.setObjectName("searchButton")
self.comboBox = QtWidgets.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(140, 90, 87, 22))
self.comboBox.setObjectName("comboBox")
self.label_txt2 = QtWidgets.QLabel(self.centralwidget)
self.label_txt2.setGeometry(QtCore.QRect(440, 90, 91, 16))
self.label_txt2.setObjectName("label_txt2")
self.comboBox_1 = QtWidgets.QComboBox(self.centralwidget)
self.comboBox_1.setGeometry(QtCore.QRect(530, 90, 87, 22))
self.comboBox_1.setObjectName("comboBox_1")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
cursor.execute("select 车次号 from 列车表 where 列车状态='运行'")
items = []
for i in cursor.fetchall():
for j in i:
items.append(j)
cursor.execute("select * from 座位表")
self.numb = cursor.rowcount
cursor.close()
conn.close()
for i in range(self.numb):
exec('''
self.line{j} = QtWidgets.QFrame(self.scrollAreaWidgetContents)
self.line{j}.setGeometry(QtCore.QRect(0, 80+{y}, 701, 16))
self.line{j}.setFrameShape(QtWidgets.QFrame.HLine)
self.line{j}.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line{j}.setObjectName("line{j}")
self.train_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.train_txt{j}.setGeometry(QtCore.QRect(10, 10+{y}, 51, 16))
self.train_txt{j}.setObjectName("train_txt{j}")
self.train{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.train{j}.setGeometry(QtCore.QRect(60, 10+{y}, 72, 15))
self.train{j}.setObjectName("train{j}")
self.station_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.station_txt{j}.setGeometry(QtCore.QRect(170, 10+{y}, 51, 16))
self.station_txt{j}.setObjectName("station_txt{j}")
self.station{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.station{j}.setGeometry(QtCore.QRect(220, 10+{y}, 72, 15))
self.station{j}.setObjectName("station")
self.trunk_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.trunk_txt{j}.setGeometry(QtCore.QRect(320, 10+{y}, 51, 16))
self.trunk_txt{j}.setObjectName("trunk_txt")
self.trunk{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.trunk{j}.setGeometry(QtCore.QRect(380, 10+{y}, 72, 15))
self.trunk{j}.setObjectName("trunk{j}")
self.seat{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.seat{j}.setGeometry(QtCore.QRect(540, 10+{y}, 72, 15))
self.seat{j}.setObjectName("seat")
self.seat_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.seat_txt{j}.setGeometry(QtCore.QRect(480, 10+{y}, 51, 16))
self.seat_txt{j}.setObjectName("seat_txt{j}")
self.by_name_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.by_name_txt{j}.setGeometry(QtCore.QRect(10, 50+{y}, 91, 16))
self.by_name_txt{j}.setObjectName("by_name_txt{j}")
self.by_name{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.by_name{j}.setGeometry(QtCore.QRect(100, 50+{y}, 141, 16))
self.by_name{j}.setObjectName("by_name{j}")
self.by_id{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.by_id{j}.setGeometry(QtCore.QRect(440, 50+{y}, 181, 16))
self.by_id{j}.setObjectName("by_id{j}")
self.by_id_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.by_id_txt{j}.setGeometry(QtCore.QRect(320, 50+{y}, 111, 16))
self.by_id_txt{j}.setObjectName("by_id_txt{j}")
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 699, 329+{y}))
'''.format(j=i+1,y=90*i))
self.comboBox.currentTextChanged.connect(self.updatetrunk)
self.searchButton.clicked.connect(self.searchticket)
self.comboBox.addItems(items)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "票务信息"))
self.label.setText(_translate("MainWindow", "票务信息
"))
self.A_date.setText(_translate("MainWindow", "TextLabel"))
self.exitButton.setText(_translate("MainWindow", "返回"))
self.label_txt1.setText(_translate("MainWindow", "请选择列车:"))
self.searchButton.setText(_translate("MainWindow", "查看"))
self.label_txt2.setText(_translate("MainWindow", "请选择车厢:"))
self.A_date.hide()
for i in range(self.numb):
exec('''
self.train_txt{j}.setText("列车:")
self.station_txt{j}.setText("车站:")
self.trunk_txt{j}.setText("车厢号:")
self.seat_txt{j}.setText("座位号:")
self.by_name_txt{j}.setText("乘车人姓名:")
self.by_id_txt{j}.setText("乘车人身份证:")
self.line{j}.hide()
self.train_txt{j}.hide()
self.train{j}.hide()
self.station_txt{j}.hide()
self.station{j}.hide()
self.trunk_txt{j}.hide()
self.trunk{j}.hide()
self.seat_txt{j}.hide()
self.seat{j}.hide()
self.by_name_txt{j}.hide()
self.by_name{j}.hide()
self.by_id_txt{j}.hide()
self.by_id{j}.hide()
'''.format(j=i+1))
def updatetrunk(self):
self.comboBox_1.clear()
train_no = self.comboBox.currentText()#获取列车号
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
sql = "select 一等座数量,二等座数量 from 列车表 where 车次号='%s' and 列车状态='运行'"%train_no
cursor.execute(sql)
num = []
for i in cursor.fetchall():
for j in i:
num.append(j)
num1 = 0
num2 = 0
if num[0]%20>=1:
num1 = int(num[0]/20+1)
if num[0]%20==0:
num1 = int(num[0]/20)
if num[1]%20>=1:
num2 = int(num[1]/20+1)
if num[1]%20==0:
num2 = int(num[1]/20)
for i in range(num1+num2):
self.comboBox_1.addItem(str(i+1))
cursor.close()
conn.close()
def searchticket(self):
for i in range(self.numb):
exec('''
self.line{j}.hide()
self.train_txt{j}.hide()
self.train{j}.hide()
self.station_txt{j}.hide()
self.station{j}.hide()
self.trunk_txt{j}.hide()
self.trunk{j}.hide()
self.seat_txt{j}.hide()
self.seat{j}.hide()
self.by_name_txt{j}.hide()
self.by_name{j}.hide()
self.by_id_txt{j}.hide()
self.by_id{j}.hide()
'''.format(j=i + 1))
trainno = self.comboBox.currentText()
trunkno = self.comboBox_1.currentText()
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
cursor.execute("select 列车编号 from 列车表 where 车次号='%s' and 列车状态='运行'"%trainno)
trainNO = 0
for i in cursor.fetchall():
for j in i:
trainNO = j
cursor.execute("select 出发站,车厢,座位,乘车人姓名,乘车人身份证 from 座位表 where 列车编号=%s and 车厢='%s'"%(trainNO,trunkno))
row = cursor.rowcount
infor = cursor.fetchall()
if row == 0:
QMessageBox.warning(self, "警告", "该车箱暂无乘客!!!")
else:
date = []
for a in infor:
date1 = []
for b in a:
date1.append(b)
date.append(date1)
for c in range(len(date)):
exec('''
self.line{j}.show()
self.train_txt{j}.show()
self.train{j}.show()
self.station_txt{j}.show()
self.station{j}.show()
self.trunk_txt{j}.show()
self.trunk{j}.show()
self.seat_txt{j}.show()
self.seat{j}.show()
self.by_name_txt{j}.show()
self.by_name{j}.show()
self.by_id_txt{j}.show()
self.by_id{j}.show()
self.train{j}.clear()
self.station{j}.clear()
self.trunk{j}.clear()
self.seat{j}.clear()
self.by_name{j}.clear()
self.by_id{j}.clear()
self.train{j}.setText(trainno)
self.station{j}.setText(str(date[{k}][0]))
self.trunk{j}.setText(str(date[{k}][1]))
self.seat{j}.setText(str(date[{k}][2]))
self.by_name{j}.setText(str(date[{k}][3]))
self.by_id{j}.setText(str(date[{k}][4]))
'''.format(j=c+1,k=c))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
管理员-列车管理UI设计:可以展示历史列车的信息以及添加列车的功能模块
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'train_manageUI.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
import pymysql
import thp
class Ui_MainWindow(object):
numb = 0
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
MainWindow.setStyleSheet("#MainWindow{border-image: url(:/thpic/60.jpg);}")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(320, 20, 181, 41))
self.label.setObjectName("label")
self.A_date = QtWidgets.QLabel(self.centralwidget)
self.A_date.setGeometry(QtCore.QRect(40, 510, 72, 15))
self.A_date.setObjectName("A_date")
self.scrollArea = QtWidgets.QScrollArea(self.centralwidget)
self.scrollArea.setGeometry(QtCore.QRect(40, 130, 701, 331))
self.scrollArea.setWidgetResizable(False)
self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents = QtWidgets.QWidget()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 699, 329))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
self.exitButton = QtWidgets.QPushButton(self.centralwidget)
self.exitButton.setGeometry(QtCore.QRect(380, 500, 93, 28))
self.exitButton.setObjectName("exitButton")
self.updateButton = QtWidgets.QPushButton(self.centralwidget)
self.updateButton.setGeometry(QtCore.QRect(280, 500, 93, 28))
self.updateButton.setObjectName("updateButton")
self.add_trainButton = QtWidgets.QPushButton(self.centralwidget)
self.add_trainButton.setGeometry(QtCore.QRect(280, 470, 191, 28))
self.add_trainButton.setObjectName("add_trainButton")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
cursor.execute("select * from 列车表")
self.numb = cursor.rowcount
for i in range(self.numb):
exec('''
self.line{j} = QtWidgets.QFrame(self.scrollAreaWidgetContents)
self.line{j}.setGeometry(QtCore.QRect(0, 150+{y}, 701, 16))
self.line{j}.setFrameShape(QtWidgets.QFrame.HLine)
self.line{j}.setFrameShadow(QtWidgets.QFrame.Sunken)
self.line{j}.setObjectName("line{j}")
self.train_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.train_txt{j}.setGeometry(QtCore.QRect(10, 10+{y}, 51, 16))
self.train_txt{j}.setObjectName("train_txt{j}")
self.train{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.train{j}.setGeometry(QtCore.QRect(60, 10+{y}, 72, 15))
self.train{j}.setObjectName("train{j}")
self.begin_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.begin_txt{j}.setGeometry(QtCore.QRect(10, 40+{y}, 72, 15))
self.begin_txt{j}.setObjectName("begin_txt{j}")
self.begin{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.begin{j}.setGeometry(QtCore.QRect(90, 40+{y}, 161, 16))
self.begin{j}.setObjectName("begin{j}")
self.end_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.end_txt{j}.setGeometry(QtCore.QRect(310, 40+{y}, 72, 15))
self.end_txt{j}.setObjectName("end_txt{j}")
self.end{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.end{j}.setGeometry(QtCore.QRect(390, 40+{y}, 161, 16))
self.end{j}.setObjectName("end{j}")
self.via_station_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.via_station_txt{j}.setGeometry(QtCore.QRect(10, 70+{y}, 61, 16))
self.via_station_txt{j}.setObjectName("via_station_txt{j}")
self.via_station{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.via_station{j}.setGeometry(QtCore.QRect(70, 70+{y}, 621, 16))
self.via_station{j}.setObjectName("via_station{j}")
self.first_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.first_txt{j}.setGeometry(QtCore.QRect(10, 100+{y}, 91, 16))
self.first_txt{j}.setObjectName("first_txt{j}")
self.first{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.first{j}.setGeometry(QtCore.QRect(100, 100+{y}, 72, 15))
self.first{j}.setObjectName("first{j}")
self.first_p{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.first_p{j}.setGeometry(QtCore.QRect(300, 100+{y}, 72, 15))
self.first_p{j}.setObjectName("first_p{j}")
self.first_p_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.first_p_txt{j}.setGeometry(QtCore.QRect(210, 100+{y}, 91, 16))
self.first_p_txt{j}.setObjectName("first_p_txt{j}")
self.first_s_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.first_s_txt{j}.setGeometry(QtCore.QRect(440, 100+{y}, 91, 16))
self.first_s_txt{j}.setObjectName("first_s_txt{j}")
self.first_s{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.first_s{j}.setGeometry(QtCore.QRect(530, 100+{y}, 72, 15))
self.first_s{j}.setObjectName("first_s{j}")
self.second_p_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.second_p_txt{j}.setGeometry(QtCore.QRect(210, 130+{y}, 91, 16))
self.second_p_txt{j}.setObjectName("second_p_txt{j}")
self.second{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.second{j}.setGeometry(QtCore.QRect(100, 130+{y}, 72, 15))
self.second{j}.setObjectName("second{j}")
self.second_s{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.second_s{j}.setGeometry(QtCore.QRect(530, 130+{y}, 72, 15))
self.second_s{j}.setObjectName("second_s{j}")
self.second_p{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.second_p{j}.setGeometry(QtCore.QRect(300, 130+{y}, 72, 15))
self.second_p{j}.setObjectName("second_p{j}")
self.second_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.second_txt{j}.setGeometry(QtCore.QRect(10, 130+{y}, 91, 16))
self.second_txt{j}.setObjectName("second_txt{j}")
self.second_s_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.second_s_txt{j}.setGeometry(QtCore.QRect(440, 130+{y}, 91, 16))
self.second_s_txt{j}.setObjectName("second_s_txt{j}")
self.train_state_txt{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.train_state_txt{j}.setGeometry(QtCore.QRect(310, 10+{y}, 72, 15))
self.train_state_txt{j}.setObjectName("train_state_txt{j}")
self.train_state{j} = QtWidgets.QLabel(self.scrollAreaWidgetContents)
self.train_state{j}.setGeometry(QtCore.QRect(400, 10+{y}, 72, 15))
self.train_state{j}.setObjectName("train_state{j}")
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 699, 329+{y}))
'''.format(j=i+1,y=155*i))
self.updateButton.clicked.connect(self.updateTrain)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "列车管理"))
self.label.setText(_translate("MainWindow", "列车管理
"))
self.A_date.setText(_translate("MainWindow", "TextLabel"))
self.exitButton.setText(_translate("MainWindow", "返回"))
self.updateButton.setText(_translate("MainWindow", "刷新"))
self.add_trainButton.setText(_translate("MainWindow", "添加列车"))
self.A_date.hide()
for i in range(self.numb):
exec('''
self.train_txt{j}.setText(_translate("MainWindow", "列车:"))
self.begin_txt{j}.setText(_translate("MainWindow", "发车时间:"))
self.via_station_txt{j}.setText(_translate("MainWindow", "途径站:"))
self.first_txt{j}.setText(_translate("MainWindow", "一等座数量:"))
self.first_p_txt{j}.setText(_translate("MainWindow", "一等座价格:"))
self.first_s_txt{j}.setText(_translate("MainWindow", "一等座售量:"))
self.second_p_txt{j}.setText(_translate("MainWindow", "二等座价格:"))
self.second_txt{j}.setText(_translate("MainWindow", "二等座数量:"))
self.second_s_txt{j}.setText(_translate("MainWindow", "二等座售量:"))
self.train_state_txt{j}.setText(_translate("MainWindow", "列车状态:"))
self.end_txt{j}.setText(_translate("MainWindow", "抵达时间:"))
'''.format(j=i+1))
def updateTrain(self):
for i in range(self.numb):
exec('''
self.end_txt{j}.hide()
self.end{j}.hide()
self.line{j}.hide()
self.train_txt{j}.hide()
self.train{j}.hide()
self.begin_txt{j}.hide()
self.begin{j}.hide()
self.via_station_txt{j}.hide()
self.via_station{j}.hide()
self.first_txt{j}.hide()
self.first{j}.hide()
self.first_p{j}.hide()
self.first_p_txt{j}.hide()
self.first_s_txt{j}.hide()
self.first_s{j}.hide()
self.second_p_txt{j}.hide()
self.second{j}.hide()
self.second_s{j}.hide()
self.second_p{j}.hide()
self.second_txt{j}.hide()
self.second_s_txt{j}.hide()
self.train_state_txt{j}.hide()
self.train_state{j}.hide()
'''.format(j=i + 1, k=i))
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
cursor.execute("select * from 列车表")
date = []
for a in cursor.fetchall():
date1 = []
for b in a:
date1.append(b)
date.append(date1)
for i in range(len(date)):
cursor.execute("select count(*) from 座位表 where 列车编号=%s and 座位级别='一等座'"%date[i][0])
for c in cursor.fetchall():
for d in c:
date[i].append(d)
cursor.execute("select count(*) from 座位表 where 列车编号=%s and 座位级别='二等座'" % date[i][0])
for c in cursor.fetchall():
for d in c:
date[i].append(d)
for i in range(len(date)):
exec('''
self.end_txt{j}.show()
self.end{j}.show()
self.line{j}.show()
self.train_txt{j}.show()
self.train{j}.show()
self.begin_txt{j}.show()
self.begin{j}.show()
self.via_station_txt{j}.show()
self.via_station{j}.show()
self.first_txt{j}.show()
self.first{j}.show()
self.first_p{j}.show()
self.first_p_txt{j}.show()
self.first_s_txt{j}.show()
self.first_s{j}.show()
self.second_p_txt{j}.show()
self.second{j}.show()
self.second_s{j}.show()
self.second_p{j}.show()
self.second_txt{j}.show()
self.second_s_txt{j}.show()
self.train_state_txt{j}.show()
self.train_state{j}.show()
self.train{j}.clear()
self.begin{j}.clear()
self.via_station{j}.clear()
self.first{j}.clear()
self.first_p{j}.clear()
self.first_s{j}.clear()
self.second{j}.clear()
self.second_s{j}.clear()
self.second_p{j}.clear()
self.train_state{j}.clear()
self.end{j}.clear()
self.train{j}.setText(str(date[{k}][1]))
self.begin{j}.setText(str(date[{k}][2]))
self.end{j}.setText(str(date[{k}][3]))
self.via_station{j}.setText(str(date[{k}][4]))
self.first{j}.setText(str(date[{k}][5]))
self.first_p{j}.setText(str(date[{k}][6]))
self.first_s{j}.setText(str(date[{k}][10]))
self.second{j}.setText(str(date[{k}][7]))
self.second_s{j}.setText(str(date[{k}][11]))
self.second_p{j}.setText(str(date[{k}][8]))
self.train_state{j}.setText(str(date[{k}][9]))
'''.format(j=i+1,k=i))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
管理员-列车管理-添加列车UI设计:实现添加列车功能、以逐一添加途径站的方式来实现
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'add_trainUI.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import pyqtSlot, QDate
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QMessageBox, QInputDialog, QLineEdit
import pymysql
import datetime
import thp
class Ui_MainWindow(object):
data = []
state1 = ''
state2 = ''
touch = 0
place2 = ["广州", "深圳", "佛山", "东莞","中山","珠海","江门","肇庆","惠州","汕头","潮州","揭阳","汕尾","湛江","茂名","阳江","云浮","韶关","清远","梅州", "河源"]
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(800, 600)
#MainWindow.setStyleSheet("#MainWindow{border-image: url(:/thpic/60.jpg);}")
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label = QtWidgets.QLabel(self.centralwidget)
self.label.setGeometry(QtCore.QRect(320, 20, 181, 41))
self.label.setObjectName("label")
self.A_date = QtWidgets.QLabel(self.centralwidget)
self.A_date.setGeometry(QtCore.QRect(40, 510, 72, 15))
self.A_date.setObjectName("A_date")
self.exitButton = QtWidgets.QPushButton(self.centralwidget)
self.exitButton.setGeometry(QtCore.QRect(390, 490, 121, 28))
self.exitButton.setObjectName("exitButton")
self.ensureButton = QtWidgets.QPushButton(self.centralwidget)
self.ensureButton.setGeometry(QtCore.QRect(270, 490, 121, 28))
self.ensureButton.setObjectName("ensureButton")
self.train_txt = QtWidgets.QLabel(self.centralwidget)
self.train_txt.setGeometry(QtCore.QRect(50, 90, 61, 16))
self.train_txt.setObjectName("train_txt")
self.train = QtWidgets.QLineEdit(self.centralwidget)
self.train.setGeometry(QtCore.QRect(110, 90, 141, 21))
self.train.setObjectName("train")
self.via_Station_txt = QtWidgets.QLabel(self.centralwidget)
self.via_Station_txt.setGeometry(QtCore.QRect(50, 140, 61, 16))
self.via_Station_txt.setObjectName("via_Station_txt")
self.comboBox = QtWidgets.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(110, 140, 141, 22))
self.comboBox.setObjectName("comboBox")
self.begin_date = QtWidgets.QLabel(self.centralwidget)
self.begin_date.setGeometry(QtCore.QRect(30, 180, 72, 21))
self.begin_date.setObjectName("begin_date")
self.dateEdit = QtWidgets.QDateEdit(self.centralwidget)
self.dateEdit.setGeometry(QtCore.QRect(110, 180, 141, 22))
self.dateEdit.setObjectName("dateEdit")
self.begin_time = QtWidgets.QLabel(self.centralwidget)
self.begin_time.setGeometry(QtCore.QRect(30, 220, 72, 15))
self.begin_time.setObjectName("begin_time")
self.addButton = QtWidgets.QPushButton(self.centralwidget)
self.addButton.setGeometry(QtCore.QRect(270, 210, 93, 31))
self.addButton.setObjectName("addButton")
self.timeEdit = QtWidgets.QTimeEdit(self.centralwidget)
self.timeEdit.setGeometry(QtCore.QRect(110, 220, 141, 22))
self.timeEdit.setObjectName("timeEdit")
self.state_list = QtWidgets.QTextBrowser(self.centralwidget)
self.state_list.setGeometry(QtCore.QRect(490, 60, 241, 371))
self.state_list.setObjectName("state_list")
self.label_2 = QtWidgets.QLabel(self.centralwidget)
self.label_2.setGeometry(QtCore.QRect(490, 40, 241, 20))
self.label_2.setObjectName("label_2")
self.clearButton = QtWidgets.QPushButton(self.centralwidget)
self.clearButton.setGeometry(QtCore.QRect(570, 440, 93, 28))
self.clearButton.setObjectName("clearButton")
self.label_3 = QtWidgets.QLabel(self.centralwidget)
self.label_3.setGeometry(QtCore.QRect(20, 350, 91, 16))
self.label_3.setObjectName("label_3")
self.first = QtWidgets.QLineEdit(self.centralwidget)
self.first.setGeometry(QtCore.QRect(110, 350, 71, 21))
self.first.setObjectName("first")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(210, 350, 91, 16))
self.label_4.setObjectName("label_4")
self.first_p = QtWidgets.QLineEdit(self.centralwidget)
self.first_p.setGeometry(QtCore.QRect(300, 350, 71, 21))
self.first_p.setObjectName("first_p")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(20, 390, 91, 16))
self.label_5.setObjectName("label_5")
self.second_p = QtWidgets.QLineEdit(self.centralwidget)
self.second_p.setGeometry(QtCore.QRect(300, 390, 71, 21))
self.second_p.setObjectName("second_p")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(210, 390, 91, 16))
self.label_6.setObjectName("label_6")
self.second = QtWidgets.QLineEdit(self.centralwidget)
self.second.setGeometry(QtCore.QRect(110, 390, 71, 21))
self.second.setObjectName("second")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.dateEdit.setCalendarPopup(True)
self.dateEdit.setDate(QDate.fromString(str(datetime.date.today()), 1))
self.dateEdit.setMinimumDateTime(QtCore.QDateTime(QDate.fromString(str(datetime.date.today()), 1), QtCore.QTime(0, 0, 0)))
self.addButton.clicked.connect(self.addStation)
self.comboBox.addItems(self.place2)
self.clearButton.clicked.connect(self.clearState)
self.ensureButton.clicked.connect(self.ensure_addTrain)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "添加列车"))
self.label.setText(_translate("MainWindow", "添加列车
"))
self.A_date.setText(_translate("MainWindow", "TextLabel"))
self.exitButton.setText(_translate("MainWindow", "返回"))
self.ensureButton.setText(_translate("MainWindow", "确定添加"))
self.train_txt.setText(_translate("MainWindow", "车次号:"))
self.via_Station_txt.setText(_translate("MainWindow", "途径站:"))
self.begin_date.setText(_translate("MainWindow", "出发日期:"))
self.begin_time.setText(_translate("MainWindow", "出发时间:"))
self.addButton.setText(_translate("MainWindow", "添加途径站"))
self.timeEdit.setDisplayFormat(_translate("MainWindow", "HH:mm"))
self.label_2.setText(_translate("MainWindow", " 途径站展示框"))
self.clearButton.setText(_translate("MainWindow", "一键清空"))
self.label_3.setText(_translate("MainWindow", "一等座数量:"))
self.label_4.setText(_translate("MainWindow", "一等座价格:"))
self.label_5.setText(_translate("MainWindow", "二等座数量:"))
self.label_6.setText(_translate("MainWindow", "二等座价格:"))
self.A_date.hide()
def addStation(self):
data1 = []
data2 = []
success = 0
if self.train.text()=='' or self.first.text()=='' or self.first_p.text()=='' or self.second.text()=='' or self.second_p.text()=='':
self.touch = 0
QMessageBox.critical(self,"错误","请输入完整的列车信息!!!")
return
if int(self.first.text()) % 20 != 0 or int(self.second.text()) % 20 != 0:
self.touch = 0
QMessageBox.critical(self,"错误","座位数量需要输入20的整数倍!!!")
return
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
date1 = self.dateEdit.text()+' '+self.timeEdit.text()
cursor.execute("select 抵达时间 from 列车表 where 车次号='%s'"%self.train.text())
row = cursor.rowcount
if row == 0:
success=1
else:
for i in cursor.fetchall():
for j in i:
date2 = datetime.datetime.strptime(j,"%Y/%m/%d %H:%M")
date3 = datetime.datetime.strptime(date1,"%Y/%m/%d %H:%M")
day = (date3-date2).days
print(date3,date2,day)
if day>=1:
success = 1
else:
success = 0
QMessageBox.critical(self, "错误", "无法添加列车,该列车在运行或维护中!!!")
'''if self.state2.find(self.comboBox.currentText()) != -1:
success = 0
QMessageBox.critical(self, "错误", "途径站不能出现相同地址!!!")'''
if success == 1:
self.touch = self.touch + 1
self.train.setEnabled(False)
self.first.setEnabled(False)
self.first_p.setEnabled(False)
self.second.setEnabled(False)
self.second_p.setEnabled(False)
print("成功添加列车途径站:%s"%self.comboBox.currentText())
data2.append(self.comboBox.currentText())
data2.append(self.dateEdit.text())
data2.append(self.timeEdit.text())
self.data.append(data2)
if self.touch==1:
self.state1 = self.state1 + "" + self.comboBox.currentText() +"("+date1+")"+"
"
self.state2 = self.state2 + self.comboBox.currentText()
else:
self.state1 = self.state1 +"|
" +"" + self.comboBox.currentText() +"("+date1+")"+ "
"
self.state2 = self.state2 +"-"+ self.comboBox.currentText()
self.state_list.setHtml(self.state1)
self.place2.remove(self.comboBox.currentText())
self.comboBox.clear()
self.comboBox.addItems(self.place2)
def clearState(self):
print("清空途径站")
self.place2=["广州", "深圳", "佛山", "东莞","中山","珠海","江门","肇庆","惠州","汕头","潮州","揭阳","汕尾","湛江","茂名","阳江","云浮","韶关","清远","梅州", "河源"]
self.comboBox.clear()
self.comboBox.addItems(self.place2)
self.touch = 0
self.train.setEnabled(True)
self.first.setEnabled(True)
self.first_p.setEnabled(True)
self.second.setEnabled(True)
self.second_p.setEnabled(True)
self.state1=''
self.state2=''
self.data.clear()
self.state_list.clear()
def ensure_addTrain(self):
success = 0
if self.touch<2:
QMessageBox.critical(self, "错误", "途径站需要两个以上!!!")
return
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='111111',
db='train',
charset='utf8'
)
cursor = conn.cursor()
passwd, bool1 = QInputDialog.getText(self, '密码', '请输入管理员密码', QLineEdit.EchoMode.Password)
if passwd and bool1:
sql = "select 密码 from 管理员表 where 管理员账号='%s'" % self.A_date.text()
cursor.execute(sql)
for i in cursor.fetchall():
for j in i:
if j == passwd:
success = 1
else:
success = 0
QMessageBox.critical(self, "错误", "请重新输入管理员密码!!")
if passwd == '' and bool1:
success = 0
QMessageBox.critical(self, "错误", "请输入管理员密码!!")
cursor.execute("select max(列车编号) from 列车表")
m = 0
for i in cursor.fetchall():
for j in i:
if j == None:
m = 0
else:
m = j + 1
a = len(self.data)
b_t = self.data[0][1] + ' ' +self.data[0][2]
e_t = self.data[a-1][1] + ' ' +self.data[a-1][2]
if success ==1:
sql = "insert into 列车表(列车编号,车次号,发车时间,抵达时间,途径站,一等座数量,一等座价格,二等座数量,二等座价格,列车状态) values (%s,'%s','%s','%s','%s',%s,%s,%s,%s,'运行')"%(m,self.train.text(),b_t,e_t,self.state2,int(self.first.text()),int(self.first_p.text()),int(self.second.text()),int(self.second_p.text()))
cursor.execute(sql)
conn.commit()
cursor.execute("select max(车站编号) from 车站表")
t_m = 0
for q in cursor.fetchall():
for w in q:
if w == None:
t_m = 0
else:
t_m = w+1
print(t_m)
for c in range(a):
cursor.execute("insert into 车站表(车站编号,列车编号,车站名,发车日期,发车时间,状态) values(%s,%s,'%s','%s','%s','未抵达')"%(t_m,m,self.data[c][0],self.data[c][1],self.data[c][2]))
conn.commit()
t_m = t_m + 1
QMessageBox.information(self,"成功","添加列车成功!!!")
self.exitButton.click()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
所有UI的背景实现:代码太长不挂出来了,不影响程序运行,具体可以查阅QT的背景制作,可以去掉代码里的背景代码调用
项目展示(UI展示)
20220520_002105