python+mysql搭建信息管理系统(内含源码)

效果展示:
在这里插入图片描述

一、环境

开头直接交代环境了

  • 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, 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操作,有兴趣的博友们点赞+关注+收藏领取源码吧。

  • 172
    点赞
  • 307
    收藏
    觉得还不错? 一键收藏
  • 158
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 158
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值