基于pyqt5的图书管理系统(含源码)

该代码实现了一个基于PyQt5的图书借阅系统,使用了QtWidgets库创建界面,通过QtGui.QRegExpValidator限制输入框只能输入数字。系统中包含了添加图书、学生信息的功能,以及借书、还书的操作。数据存储采用SQLite数据库,并通过线程管理数据库操作,确保用户界面的流畅性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

在这里插入代码片

import datetime
from PyQt5 import QtWidgets, QtGui, QtCore
import sys
from libs.ui_bookManager import Ui_MainWindow
from libs.db_utils import SystemSQLiteModel

class BorrowSystem(QtWidgets.QMainWindow, Ui_MainWindow):
def init(self, dbmodel, parent=None) -> None:
super(BorrowSystem, self).init(parent)
super().setupUi(self)
self.dbmodel = dbmodel
self.initUI()

def initUI(self):
    # 设置输入框仅可输入数字
    reg = QtCore.QRegExp('[0-9]+$')
    validator = QtGui.QRegExpValidator()
    validator.setRegExp(reg)
    self.bookno.setValidator(validator)
    self.studentno.setValidator(validator)
    self.borrow_bookno.setValidator(validator)
    self.borrow_studentno.setValidator(validator)
    self.return_bookno.setValidator(validator)
    self.return_studentno.setValidator(validator)
    # 按钮信号与槽
    self.book_add_button.clicked.connect(self.add_book)
    self.book_push.clicked.connect(self.select_book)
    self.student_add.clicked.connect(self.add_student)
    self.student_push.clicked.connect(self.select_student)
    self.borrow_push.clicked.connect(self.borrow_func)
    self.return_push.clicked.connect(self.return_func)
    # 线程信号
    self.dbmodel.book_add_status.connect(self.book_insert_status)
    self.dbmodel.student_add_status.connect(self.student_insert_status)
    self.dbmodel.return_data_signal.connect(self.reload_data)
    self.dbmodel.borrow_return_signal.connect(self.borrow_return_status)
    self.dbmodel.start()
    # 表格数据加载
    self.dbmodel.select_data(model='books')
    self.dbmodel.select_data(model='students')
    self.dbmodel.select_data(model='borrow')

def add_book(self):
book_no, book_name, book_press, book_auth, book_price, book_count = self.bookno.text(), self.bookname.text(),
self.book_press.text(), self.book_auth.text(), self.book_price.value(), self.book_count.value()
if not all([book_no, book_name, book_press, book_auth]):
QtWidgets.QMessageBox.information(self, “提示”, “以上选项不能为空!”)
else:
self.dbmodel.insert_book(book_no, book_name, book_press, book_auth, book_price, book_count)

def book_insert_status(self, status, msg):
    if status:
        QtWidgets.QMessageBox.information(self, "提示", msg)
        self.dbmodel.select_data(model='books')
        self.bookno.setText("")
        self.bookname.setText("")
        self.book_press.setText("")
        self.book_auth.setText("")
        self.book_price.setValue(0)
        self.book_count.setValue(0)
        self.book_line.setText("")
    else:
        QtWidgets.QMessageBox.critical(self, "Error", msg)

def main():
QtWidgets.QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
QtGui.QGuiApplication.setAttribute(QtCore.Qt.HighDpiScaleFactorRoundingPolicy.PassThrough)
app = QtWidgets.QApplication(sys.argv)
dbmodel = SystemSQLiteModel()
status, msg = dbmodel.return_init_status
if status is True:
x = BorrowSystem(dbmodel=dbmodel)
x.show()
sys.exit(app.exec_())
else:
QtWidgets.QMessageBox.critical(None, ‘Database Error’, msg)

if name == “main”:
main()在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值