图书馆管理系统 - 更改图书信息
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 著作权归作者所有。请勿转载和采集!