请写出一段代码作为图书馆管理系统要求:1、使用python和MySQL2、能在Visual Studio中运行并使用以下的包实现交互设置import pymysqlimport sysfrom PySide6QtCore import from PySide6QtGui import from PySide6QtWidgets import from QtUser import User_Dial
导入所需的包
import pymysql import sys from PySide6.QtCore import * from PySide6.QtGui import * from PySide6.QtWidgets import * from QtUser import User_Dialog
定义数据库连接函数
def connect_db(): db = pymysql.connect(host='localhost', user='root', password='password', db='library') return db
定义登录界面
class Login_Dialog(QDialog): def init(self): super().init() self.setWindowTitle('登录') self.resize(300, 150) self.username_label = QLabel('用户名:') self.username_edit = QLineEdit() self.password_label = QLabel('密码:') self.password_edit = QLineEdit() self.password_edit.setEchoMode(QLineEdit.Password) self.login_button = QPushButton('登录') self.login_button.clicked.connect(self.login) layout = QGridLayout() layout.addWidget(self.username_label, 0, 0) layout.addWidget(self.username_edit, 0, 1) layout.addWidget(self.password_label, 1, 0) layout.addWidget(self.password_edit, 1, 1) layout.addWidget(self.login_button, 2, 1) self.setLayout(layout)
# 定义登录函数
def login(self):
db = connect_db()
cursor = db.cursor()
username = self.username_edit.text()
password = self.password_edit.text()
sql = "SELECT * FROM user WHERE username=%s AND password=%s"
cursor.execute(sql, (username, password))
result = cursor.fetchone()
if result:
self.accept()
else:
QMessageBox.warning(self, '警告', '用户名或密码错误!')
db.close()
定义主界面
class Main_Dialog(QDialog): def init(self): super().init() self.setWindowTitle('图书管理系统') self.resize(600, 400) self.table_widget = QTableWidget() self.table_widget.setColumnCount(5) self.table_widget.setHorizontalHeaderLabels(['编号', '书名', '作者', '出版社', '价格']) self.add_button = QPushButton('添加') self.add_button.clicked.connect(self.add_book) self.update_button = QPushButton('修改') self.update_button.clicked.connect(self.update_book) self.delete_button = QPushButton('删除') self.delete_button.clicked.connect(self.delete_book) layout = QVBoxLayout() layout.addWidget(self.table_widget) button_layout = QHBoxLayout() button_layout.addWidget(self.add_button) button_layout.addWidget(self.update_button) button_layout.addWidget(self.delete_button) layout.addLayout(button_layout) self.setLayout(layout) self.load_data()
# 加载数据
def load_data(self):
db = connect_db()
cursor = db.cursor()
sql = "SELECT * FROM book"
cursor.execute(sql)
result = cursor.fetchall()
self.table_widget.setRowCount(len(result))
for i, row in enumerate(result):
for j, col in enumerate(row):
item = QTableWidgetItem(str(col))
self.table_widget.setItem(i, j, item)
db.close()
# 添加图书
def add_book(self):
dialog = User_Dialog()
if dialog.exec_() == QDialog.Accepted:
db = connect_db()
cursor = db.cursor()
sql = "INSERT INTO book (name, author, press, price) VALUES (%s, %s, %s, %s)"
cursor.execute(sql, (dialog.name_edit.text(), dialog.author_edit.text(), dialog.press_edit.text(), dialog.price_edit.text()))
db.commit()
db.close()
self.load_data()
# 修改图书
def update_book(self):
current_row = self.table_widget.currentRow()
if current_row >= 0:
book_id = int(self.table_widget.item(current_row, 0).text())
dialog = User_Dialog()
dialog.name_edit.setText(self.table_widget.item(current_row, 1).text())
dialog.author_edit.setText(self.table_widget.item(current_row, 2).text())
dialog.press_edit.setText(self.table_widget.item(current_row, 3).text())
dialog.price_edit.setText(self.table_widget.item(current_row, 4).text())
if dialog.exec_() == QDialog.Accepted:
db = connect_db()
cursor = db.cursor()
sql = "UPDATE book SET name=%s, author=%s, press=%s, price=%s WHERE id=%s"
cursor.execute(sql, (dialog.name_edit.text(), dialog.author_edit.text(), dialog.press_edit.text(), dialog.price_edit.text(), book_id))
db.commit()
db.close()
self.load_data()
else:
QMessageBox.warning(self, '警告', '请选择要修改的记录!')
# 删除图书
def delete_book(self):
current_row = self.table_widget.currentRow()
if current_row >= 0:
book_id = int(self.table_widget.item(current_row, 0).text())
db = connect_db()
cursor = db.cursor()
sql = "DELETE FROM book WHERE id=%s"
cursor.execute(sql, (book_id,))
db.commit()
db.close()
self.load_data()
else:
QMessageBox.warning(self, '警告', '请选择要删除的记录!')
主程序
if name == 'main': app = QApplication(sys.argv) login_dialog = Login_Dialog() if login_dialog.exec_() == QDialog.Accepted: main_dialog = Main_Dialog() main_dialog.show() sys.exit(app.exec_()
原文地址: http://www.cveoy.top/t/topic/hjv8 著作权归作者所有。请勿转载和采集!