开头直接交代环境了
2.1 首先需要一个主控台,界面如下:
2.2 登录学生客户端后主界面如下:
2.2.1 界面控件举例:
可点击下一页,上一页,跳页浏览书籍信息
2.2.2 查询某本书籍:
搜索框输入关键字,或者作者,或者出版社,点击查询
2.3 借阅与归还界面
2.4 登录管理员客户端后主界面如下:
2.4.1 添加和清理书籍:
2.4.2 删除某个毕业学生的信息:
2.5 后端数据库连接
#主界面代码
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon
from PyQt5.QtGui import QPixmap, QPalette, QBrush
class Main(QMainWindow):
def __init__(self, parent=None):
super(Main, self).__init__(parent)
self.layout = QHBoxLayout()
self.widget = SignInWidget()
self.resize(1050, 600)
self.setWindowTitle("欢迎登陆图书馆管理系统")
self.setCentralWidget(self.widget)
self.bar = self.menuBar()
self.bar.setStyleSheet("background:#1f1f1f;font:bold;font-size:14px;color:#CCCCCC")#设置菜单栏的样式
self.Menu = self.bar.addMenu("菜单栏")
self.Menu.setStyleSheet("font:bold;color:rgb(0,255,50)")#设置菜单控件的样式
self.signUpAction = QAction("注册", self)
self.changePasswordAction =QAction("修改密码",self)
self.signInAction = QAction("登录", self)
self.quitSignInAction = QAction("退出登录", self)
self.quitAction = QAction("退出", self)
self.Menu.addAction(self.signUpAction)
self.Menu.addAction(self.changePasswordAction)
self.Menu.addAction(self.signInAction)
self.Menu.addAction(self.quitSignInAction)
self.Menu.addAction(self.quitAction)
self.signUpAction.setEnabled(True)
self.changePasswordAction.setEnabled(True)
self.signInAction.setEnabled(False)
self.quitSignInAction.setEnabled(False)
self.widget.is_admin_signal.connect(self.adminSignIn)
self.widget.is_student_signal[str].connect(self.studentSignIn)
self.Menu.triggered[QAction].connect(self.menuTriggered)
def adminSignIn(self):
sip.delete(self.widget)
self.widget = AdminHome()
self.setCentralWidget(self.widget)
self.changePasswordAction.setEnabled(False)
self.signUpAction.setEnabled(True)
self.signInAction.setEnabled(False)
self.quitSignInAction.setEnabled(True)
def studentSignIn(self, studentId):
sip.delete(self.widget)
self.widget = StudentHome(studentId)
self.setCentralWidget(self.widget)
self.changePasswordAction.setEnabled(False)
self.signUpAction.setEnabled(True)
self.signInAction.setEnabled(False)
self.quitSignInAction.setEnabled(True)
def menuTriggered(self, q):
if(q.text()=="修改密码"):
changePsdDialog=changePasswordDialog(self)
changePsdDialog.show()
changePsdDialog.exec_()
if (q.text() == "注册"):
sip.delete(self.widget)
self.widget = SignUpWidget()
self.setCentralWidget(self.widget)
self.widget.student_signup_signal[str].connect(self.studentSignIn)
self.signUpAction.setEnabled(False)
self.changePasswordAction.setEnabled(True)
self.signInAction.setEnabled(True)
self.quitSignInAction.setEnabled(False)
if (q.text() == "退出登录"):
sip.delete(self.widget)
self.widget = SignInWidget()
self.setCentralWidget(self.widget)
self.widget.is_admin_signal.connect(self.adminSignIn)
self.widget.is_student_signal[str].connect(self.studentSignIn)
self.signUpAction.setEnabled(True)
self.changePasswordAction.setEnabled(True)
self.signInAction.setEnabled(False)
self.quitSignInAction.setEnabled(False)
if (q.text() == "登录"):
sip.delete(self.widget)
self.widget = SignInWidget()
self.setCentralWidget(self.widget)
self.widget.is_admin_signal.connect(self.adminSignIn)
self.widget.is_student_signal[str].connect(self.studentSignIn)
self.signUpAction.setEnabled(True)
self.changePasswordAction.setEnabled(True)
self.signInAction.setEnabled(False)
self.quitSignInAction.setEnabled(False)
if (q.text() == "退出"):
qApp = QApplication.instance()
qApp.quit()
return
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setWindowIcon(QIcon("./images/MainWindow_1.png"))
palette = QPalette()#创建容器
palette.setBrush(QPalette.Background, QBrush(QPixmap("./images/try1_1.jpg")))
app.setPalette(palette)#将图片拉伸铺满容器
mainMindow = Main()
mainMindow.show()
sys.exit(app.exec_())
#管理员界面代码
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
class AdminHome(QWidget):
def __init__(self):
super().__init__()
self.setUpUI()
def setUpUI(self):
self.resize(900, 600)
self.setWindowTitle("欢迎使用图书馆管理系统")
self.layout = QHBoxLayout()
self.buttonlayout = QVBoxLayout()
self.setLayout(self.layout)
font = QFont()
font.setPixelSize(16)
self.userManageButton = QPushButton("用户管理")
self.userManageButton.setStyleSheet("background-color:#1f1f1f;color:#0b0b0b;border-radius:5px;border:2px groove #5B7AFA;color:#919191;font:bold;")
self.addBookButton = QPushButton("添加书籍")
self.addBookButton.setStyleSheet("background-color:#1f1f1f;color:#0b0b0b;border-radius:5px;border:2px groove #5B7AFA;color:#919191;font:bold;")
self.dropBookButton = QPushButton("清理书籍")
self.dropBookButton.setStyleSheet("background-color:#1f1f1f;color:#0b0b0b;border-radius:5px;border:2px groove #5B7AFA;color:#919191;font:bold;")
self.userManageButton.setFont(font)
self.addBookButton.setFont(font)
self.dropBookButton.setFont(font)
self.userManageButton.setFixedWidth(100)
self.userManageButton.setFixedHeight(42)
self.addBookButton.setFixedWidth(100)
self.addBookButton.setFixedHeight(42)
self.dropBookButton.setFixedWidth(100)
self.dropBookButton.setFixedHeight(42)
self.buttonlayout.addWidget(self.addBookButton)
self.buttonlayout.addWidget(self.dropBookButton)
self.buttonlayout.addWidget(self.userManageButton)
self.layout.addLayout(self.buttonlayout)
self.storageView = BookStorageViewer()
self.storageView.setStyleSheet("background-image:url(./images/try1_1.jpg);border-width:2px;border-color:#005523;")#设置书籍信息管理背景
self.layout.addWidget(self.storageView)
self.addBookButton.clicked.connect(self.addBookButtonClicked)
self.dropBookButton.clicked.connect(self.dropBookButtonClicked)
self.userManageButton.clicked.connect(self.userManage)
def addBookButtonClicked(self):
addDialog = addBookDialog(self)
addDialog.add_book_success_signal.connect(self.storageView.searchButtonClicked)
addDialog.show()
addDialog.exec_()
def dropBookButtonClicked(self):
dropDialog = dropBookDialog(self)
dropDialog.drop_book_successful_signal.connect(self.storageView.searchButtonClicked)
dropDialog.show()
dropDialog.exec_()
def userManage(self):
UserDelete=UserManage(self)
UserDelete.show()
UserDelete.exec_()
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setWindowIcon(QIcon("./images/MainWindow_1.png"))
palette = QPalette() # 创建容器
palette.setBrush(QPalette.Background, QBrush(QPixmap("./images/try1_1.jpg")))
app.setPalette(palette) # 将图片拉伸铺满容器
mainMindow = AdminHome()
mainMindow.show()
sys.exit(app.exec_())
#学生界面代码
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon, QFont
import sip
from PyQt5.QtGui import QPixmap, QPalette, QBrush
class StudentHome(QWidget):
def __init__(self, studentId):
super().__init__()
self.StudentId = studentId
self.resize(900, 600)
self.setWindowTitle("欢迎使用图书馆管理系统")
self.setUpUI()
def setUpUI(self):
# 总布局
self.layout = QHBoxLayout(self)
# 按钮布局
self.buttonLayout = QVBoxLayout()
# 按钮
self.borrowBookButton = QPushButton("借书")
self.borrowBookButton.setStyleSheet(
"background-color:#1f1f1f;color:#0b0b0b;border-radius:5px;border:2px groove #5B7AFA;color:#919191;font:bold;")#设置控件格式
self.returnBookButton = QPushButton("还书")
self.returnBookButton.setStyleSheet(
"background-color:#1f1f1f;color:#0b0b0b;border-radius:5px;border:2px groove #5B7AFA;color:#919191;font:bold;")#设置控件格式
self.myBookStatus = QPushButton("借阅状态")
self.myBookStatus.setStyleSheet(
"background-color:#1f1f1f;color:#0b0b0b;border-radius:5px;border:2px groove #5B7AFA;color:#919191;font:bold;")#设置控件格式
self.allBookButton = QPushButton("所有书籍")
self.allBookButton.setStyleSheet(
"background-color:#1f1f1f;color:#0b0b0b;border-radius:5px;border:2px groove #5B7AFA;color:#919191;font:bold;")#设置控件格式
self.buttonLayout.addWidget(self.borrowBookButton)
self.buttonLayout.addWidget(self.returnBookButton)
self.buttonLayout.addWidget(self.myBookStatus)
self.buttonLayout.addWidget(self.allBookButton)
self.borrowBookButton.setFixedWidth(100)
self.borrowBookButton.setFixedHeight(42)
self.returnBookButton.setFixedWidth(100)
self.returnBookButton.setFixedHeight(42)
self.myBookStatus.setFixedWidth(100)
self.myBookStatus.setFixedHeight(42)
self.allBookButton.setFixedWidth(100)
self.allBookButton.setFixedHeight(42)
font = QFont()
font.setPixelSize(16)
self.borrowBookButton.setFont(font)
self.returnBookButton.setFont(font)
self.myBookStatus.setFont(font)
self.allBookButton.setFont(font)
self.storageView = BookStorageViewer()
self.storageView.setStyleSheet(
"background-image:url(./images/try1_1.jpg);border-width:2px;border-color:#005523;") # 设置书籍信息管理背景
self.borrowStatusView=BorrowStatusViewer(self.StudentId)
self.borrowStatusView.setStyleSheet(
"background-image:url(./images/try1_1.jpg);border-width:2px;border-color:#005523;") # 设置借阅信息管理背景
self.allBookButton.setEnabled(False)
self.layout.addLayout(self.buttonLayout)
self.layout.addWidget(self.storageView)
self.borrowBookButton.clicked.connect(self.borrowBookButtonClicked)
self.returnBookButton.clicked.connect(self.returnBookButtonClicked)
self.myBookStatus.clicked.connect(self.myBookStatusClicked)
self.allBookButton.clicked.connect(self.allBookButtonClicked)
def borrowBookButtonClicked(self):
borrowDialog = borrowBookDialog(self.StudentId,self)
borrowDialog.borrow_book_success_signal.connect(self.borrowStatusView.borrowedQuery)
borrowDialog.borrow_book_success_signal.connect(self.storageView.searchButtonClicked)
borrowDialog.show()
borrowDialog.exec_()
return
def returnBookButtonClicked(self):
returnDialog = returnBookDialog(self.StudentId,self)
returnDialog.return_book_success_signal.connect(self.borrowStatusView.returnedQuery)
returnDialog.return_book_success_signal.connect(self.borrowStatusView.borrowedQuery)
returnDialog.return_book_success_signal.connect(self.storageView.searchButtonClicked)
returnDialog.show()
returnDialog.exec_()
def myBookStatusClicked(self):
self.layout.removeWidget(self.storageView)
sip.delete(self.storageView)
self.storageView = BookStorageViewer()
self.storageView.setStyleSheet(
"background-image:url(./images/try1_1.jpg);border-width:2px;border-color:#005523;") # 设置书籍信息管理背景
self.borrowStatusView = BorrowStatusViewer(self.StudentId)
self.layout.addWidget(self.borrowStatusView)
self.allBookButton.setEnabled(True)
self.myBookStatus.setEnabled(False)
return
def allBookButtonClicked(self):
self.layout.removeWidget(self.borrowStatusView)
sip.delete(self.borrowStatusView)
self.borrowStatusView = BorrowStatusViewer(self.StudentId)
self.storageView = BookStorageViewer()
self.storageView.setStyleSheet(
"background-image:url(./images/try1_1.jpg);border-width:2px;border-color:#005523;") # 设置书籍信息管理背景
self.layout.addWidget(self.storageView)
self.allBookButton.setEnabled(False)
self.myBookStatus.setEnabled(True)
return
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setWindowIcon(QIcon("./images/MainWindow_1.png"))
palette = QPalette() # 创建容器
palette.setBrush(QPalette.Background, QBrush(QPixmap("./images/try1_1.jpg")))
app.setPalette(palette) # 将图片拉伸铺满容器
mainMindow = StudentHome("PB15000135")
mainMindow.show()
sys.exit(app.exec_())
重要说明!!!!!!!!!!!!!!!!!!这是一个模型系统,子文件以及代码过多,这里只贴上一部分代码,具体技术运用是pyqt5的GUI操作,有兴趣的博友们可以尝试一下或者私聊我。