class AlterBookDialog(QDialog): def init(self, parent=None): super(AlterBookDialog, self).init(parent) self.setWindowTitle('更改图书信息') self.resize(300, 200) self.book_id = '' self.setupUI()

def setupUI(self):
    layout = QVBoxLayout()

    # 书名
    self.label_bookname = QLabel('书名:')
    self.edit_bookname = QLineEdit()

    # 作者
    self.label_author = QLabel('作者:')
    self.edit_author = QLineEdit()

    # 出版社
    self.label_publisher = QLabel('出版社:')
    self.edit_publisher = QLineEdit()

    # 出版年月
    self.label_pubdate = QLabel('出版年月:')
    self.edit_pubdate = QLineEdit()

    # 价格
    self.label_price = QLabel('价格:')
    self.edit_price = QLineEdit()

    # 是否借出
    self.label_borrowed = QLabel('是否借出:')
    self.combo_borrowed = QComboBox()
    self.combo_borrowed.addItem('否')
    self.combo_borrowed.addItem('是')

    # 借书证号
    self.label_cardid = QLabel('借书证号:')
    self.edit_cardid = QLineEdit()

    # 确定按钮
    self.btn_confirm = QPushButton('确定')

    layout.addWidget(self.label_bookname)
    layout.addWidget(self.edit_bookname)
    layout.addWidget(self.label_author)
    layout.addWidget(self.edit_author)
    layout.addWidget(self.label_publisher)
    layout.addWidget(self.edit_publisher)
    layout.addWidget(self.label_pubdate)
    layout.addWidget(self.edit_pubdate)
    layout.addWidget(self.label_price)
    layout.addWidget(self.edit_price)
    layout.addWidget(self.label_borrowed)
    layout.addWidget(self.combo_borrowed)
    layout.addWidget(self.label_cardid)
    layout.addWidget(self.edit_cardid)
    layout.addWidget(self.btn_confirm)

    self.setLayout(layout)

    self.btn_confirm.clicked.connect(self.update_book)

def set_bookinfo(self, bookinfo):
    self.book_id = bookinfo[0]
    self.edit_bookname.setText(bookinfo[1])
    self.edit_author.setText(bookinfo[2])
    self.edit_publisher.setText(bookinfo[3])
    self.edit_pubdate.setText(bookinfo[4])
    self.edit_price.setText(bookinfo[5])
    self.combo_borrowed.setCurrentText(bookinfo[6])
    self.edit_cardid.setText(bookinfo[7])

def update_book(self):
    # 获取用户输入的信息
    bookname = self.edit_bookname.text()
    author = self.edit_author.text()
    publisher = self.edit_publisher.text()
    pubdate = self.edit_pubdate.text()
    price = self.edit_price.text()
    borrowed = self.combo_borrowed.currentText()
    cardid = self.edit_cardid.text()

    # 连接数据库
    db = pymysql.connect(host='localhost', user='root', password='123456', db='library', charset='utf8')
    cursor = db.cursor()

    # 更新数据库
    sql = 'UPDATE LBook SET 书名='{}', 作者='{}', 出版社='{}', 出版年月='{}', 价格='{}', 是否借出='{}', 借书证号='{}' WHERE 图书ID='{}''.format(
        bookname, author, publisher, pubdate, price, borrowed, cardid, self.book_id)
    try:
        cursor.execute(sql)
        db.commit()
        QMessageBox.information(self, 'Success', '更新成功')
        self.close()
    except:
        QMessageBox.warning(self, 'Error', '更新失败')

def closeEvent(self, event):
    self.edit_bookname.setText('')
    self.edit_author.setText('')
    self.edit_publisher.setText('')
    self.edit_pubdate.setText('')
    self.edit_price.setText('')
    self.combo_borrowed.setCurrentIndex(0)
    self.edit_cardid.setText('')

class MainWindow(QMainWindow): def init(self): super().init() self.setWindowTitle('图书馆管理系统') self.resize(800, 600) self.setupUI()

def setupUI(self):
    # 左侧查询框
    self.label_bookname = QLabel('书名:')
    self.edit_bookname = QLineEdit()
    self.btn_search = QPushButton('查询')
    self.btn_alter_book = QPushButton('更改')
    self.table_book = QTableWidget()
    self.table_book.setColumnCount(7)
    self.table_book.setHorizontalHeaderLabels(['图书ID', '书名', '作者', '出版社', '出版年月', '价格', '是否借出'])
    self.table_book.setSelectionBehavior(QAbstractItemView.SelectRows)

    left_layout = QVBoxLayout()
    left_layout.addWidget(self.label_bookname)
    left_layout.addWidget(self.edit_bookname)
    left_layout.addWidget(self.btn_search)
    left_layout.addWidget(self.btn_alter_book)
    left_layout.addWidget(self.table_book)

    # 右侧添加图书/借书/还书/管理借书证按钮
    self.btn_add_book = QPushButton('添加图书')
    self.btn_borrow_book = QPushButton('借书')
    self.btn_return_book = QPushButton('还书')
    self.btn_manage_card = QPushButton('管理借书证')

    right_layout = QVBoxLayout()
    right_layout.addWidget(self.btn_add_book)
    right_layout.addWidget(self.btn_borrow_book)
    right_layout.addWidget(self.btn_return_book)
    right_layout.addWidget(self.btn_manage_card)

    # 整体布局
    layout = QHBoxLayout()
    layout.addLayout(left_layout)
    layout.addLayout(right_layout)

    central_widget = QWidget()
    central_widget.setLayout(layout)

    self.setCentralWidget(central_widget)

    # 槽函数绑定
    self.btn_search.clicked.connect(self.search_bookname)
    self.btn_alter_book.clicked.connect(self.alter_book)

def search_bookname(self):
    # 获取输入的书名
    bookname = self.edit_bookname.text()

    # 连接数据库
    db = pymysql.connect(host='localhost', user='root', password='123456', db='library', charset='utf8')
    cursor = db.cursor()

    # 查询数据库
    sql = 'SELECT * FROM LBook WHERE 书名 = '{}';'.format(bookname)
    try:
        cursor.execute(sql)
        db.commit()
        results = cursor.fetchone()
        if results:
            # 如果找到了匹配的书名,则将结果添加到列表中
            self.table_book.clearContents()
            self.table_book.setRowCount(1)
            self.table_book.setItem(0, 0, QTableWidgetItem(results[0]))
            self.table_book.setItem(0, 1, QTableWidgetItem(results[1]))
            self.table_book.setItem(0, 2, QTableWidgetItem(results[2]))
            self.table_book.setItem(0, 3, QTableWidgetItem(results[3]))
            self.table_book.setItem(0, 4, QTableWidgetItem(results[4]))
            self.table_book.setItem(0, 5, QTableWidgetItem(results[5]))
            self.table_book.setItem(0, 6, QTableWidgetItem(results[6]))
        else:
            # 如果没有找到匹配的书名,则显示“无”
            self.table_book.clearContents()
            self.table_book.setRowCount(1)
            self.table_book.setItem(0, 0, QTableWidgetItem('无'))
    except:
        # 查询失败则提示错误信息
        QMessageBox.warning(self, 'Error', '查询失败')

def alter_book(self):
    row = self.table_book.currentRow()
    if row >= 0:
        book_id = self.table_book.item(row, 0).text()
        bookname = self.table_book.item(row, 1).text()
        author = self.table_book.item(row, 2).text()
        publisher = self.table_book.item(row, 3).text()
        pubdate = self.table_book.item(row, 4).text()
        price = self.table_book.item(row, 5).text()
        borrowed = self.table_book.item(row, 6).text()
        bookinfo = [book_id, bookname, author, publisher, pubdate, price, borrowed]
        dialog = AlterBookDialog(self)
        dialog.set_bookinfo(bookinfo)
        if dialog.exec_():
            self.search_bookname()
    else:
        QMessageBox.warning(self, 'Error', '请先选中要更改的图书')
图书馆管理系统 - 更改图书信息

原文地址: https://www.cveoy.top/t/topic/oPea 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录