效果展示:
一、环境
开头直接交代环境了
- python 3.6
- pyqt5
- hashlib
- sip
- sys
- time
都是小包,容易倒,一般不会遇到坑,这里不做过多介绍。
二、搭建步骤与代码实例
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, QBrushclass 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()returnif __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, QBrushclass StudentHome(QWidget):def __init__(self, studentId):super().__init__()self.StudentId = studentIdself.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_()returndef 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)returndef 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)returnif __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操作,有兴趣的博友们点赞+关注+收藏领取源码吧。