基于PyQT5的图书管理系统(含文档,源码,安装部署简单)

基于PyQT5的图书管理系统

用pycharm导入项目,配置好python环境,安装一下pyqt5的依赖包,用navicate连接本地Mysql数据库,手工创建数据库(名字在代码里面有),然后执行一下sql语句,最后运行程序,就可以自动出来界面

项目大概结构

在这里插入图片描述

管理员登录界面

在这里插入图片描述

import sys
import pymysql
import my_db
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap, QFont, QIcon
from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QDesktopWidget, QHBoxLayout, QFormLayout, \
    QPushButton, QLineEdit, QMessageBox
import Manage

class LoginForm(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        """
        初始化UI
        :return:
        """
        self.setObjectName("loginWindow")
        self.setStyleSheet('#loginWindow{background-color:white}')
        self.setFixedSize(650, 400)
        self.setWindowTitle("图书管理管理系统")

        # 添加顶部logo图片
        pixmap = QPixmap("img/header.png")
        scared_pixmap = pixmap.scaled(650, 140)
        label = QLabel(self)
        label.setPixmap(scared_pixmap)

        # 绘制顶部文字
        lbl_logo = QLabel(self)
        lbl_logo.setStyleSheet("QWidget{color:white;font-weight:600;background: transparent;font-size:30px;}")
        lbl_logo.setFont(QFont("Microsoft YaHei"))
        lbl_logo.move(150, 50)
        lbl_logo.setAlignment(Qt.AlignCenter)
        lbl_logo.raise_()

        # 登录表单内容部分
        login_widget = QWidget(self)
        login_widget.move(0, 140)
        login_widget.setGeometry(0, 140, 650, 260)

        hbox = QHBoxLayout()
        # 添加左侧logo
        logolb = QLabel(self)
        logopix = QPixmap("static/logo.png")
        logopix_scared = logopix.scaled(100, 100)
        logolb.setPixmap(logopix_scared)
        logolb.setAlignment(Qt.AlignCenter)
        hbox.addWidget(logolb, 1)

        # 添加右侧表单
        fmlayout = QFormLayout()
        lbl_workerid = QLabel("用户名")
        lbl_workerid.setFont(QFont("Microsoft YaHei"))
        self.led_workerid = QLineEdit()
        self.led_workerid.setFixedWidth(270)
        self.led_workerid.setFixedHeight(38)

        lbl_pwd = QLabel("密码")
        lbl_pwd.setFont(QFont("Microsoft YaHei"))
        self.led_pwd = QLineEdit()
        self.led_pwd.setEchoMode(QLineEdit.Password)
        self.led_pwd.setFixedWidth(270)
        self.led_pwd.setFixedHeight(38)

        btn_login = QPushButton("登录")
        btn_login.setFixedWidth(270)
        btn_login.setFixedHeight(40)
        btn_login.setFont(QFont("Microsoft YaHei"))
        btn_login.setObjectName("login_btn")
        btn_login.setStyleSheet("#login_btn{background-color:#2c7adf;color:#fff;border:none;border-radius:4px;}")
        btn_login.clicked.connect(self.login_check)
        fmlayout.addRow(lbl_workerid, self.led_workerid)
        fmlayout.addRow(lbl_pwd, self.led_pwd)
        fmlayout.addWidget(btn_login)
        hbox.setAlignment(Qt.AlignCenter)
        # 调整间距
        fmlayout.setHorizontalSpacing(20)
        fmlayout.setVerticalSpacing(12)

        hbox.addLayout(fmlayout, 2)

        login_widget.setLayout(hbox)

        self.center()
        self.show()

    def login_check(self):
        """
        登录认证
        :return:
        """
        global is_passed
        check = 0
        phone = self.led_workerid.text()
        password = self.led_pwd.text()
        conn = pymysql.connect(host=my_db.host, user=my_db.user, db=my_db.db, password=my_db.password)
        cursor = conn.cursor()
        sql = "select * from user where phone=%s and password=%s"%(phone, password)
        try:
            print(sql)
            cursor.execute(sql)
            data = cursor.fetchall()
        except Exception as e:
            conn.rollback()
            print('数据库操作失败', e)
        if data.__len__() > 0:
            check = 1  # 检查通过
            QMessageBox.about(self, '成功', '登录成功,即将跳转!')
        if check == 0:
            QMessageBox.warning(self, "错误", "用户名或密码错误", QMessageBox.Yes)
        else:
            is_passed = 1
            self.close()

    def center(self):
        qr = self.frameGeometry()
        cp = QDesktopWidget().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())


if __name__ == "__main__":
    is_passed = 0  # 判断是否登录成功,成功后为1
    app = QApplication(sys.argv)
    ex = LoginForm()
    ex.show()
    app.exec_()

    if (is_passed is 0):
        sys.exit(0)

    app2 = QApplication(sys.argv)
    Manage.start()
    sys.exit(app2.exec_())

操作首页

在这里插入图片描述

图书查询

在这里插入图片描述
在这里插入图片描述

借书

在这里插入图片描述

还书

在这里插入图片描述

添加借书证

在这里插入图片描述

图书入库,可以单本入库,可以多本入库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下载地址

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lbxoqy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值