pyqt5实现图书管理系统
时间: 2023-12-08 14:05:15 浏览: 66
以下是使用PyQt5实现图书管理系统的步骤:
1.安装PyQt5和pymysql库
```shell
pip install PyQt5
pip install pymysql
```
2.创建数据库和表
使用MySQL创建一个名为“library”的数据库,并创建一个名为“books”的表,其中包含以下列:id(int,主键),title(varchar),author(varchar),year(int),isbn(varchar)。
3.创建GUI
使用Qt Designer创建GUI,包括主窗口,添加书籍对话框和编辑书籍对话框。将GUI保存为.ui文件。
4.将.ui文件转换为.py文件
使用以下命令将.ui文件转换为.py文件:
```shell
pyuic5 -x mainwindow.ui -o mainwindow.py
pyuic5 -x addbookdialog.ui -o addbookdialog.py
pyuic5 -x editbookdialog.ui -o editbookdialog.py
```
5.编写主要代码
创建一个名为“main.py”的文件,并编写以下代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QDialog, QTableWidgetItem
from mainwindow import Ui_MainWindow
from addbookdialog import Ui_AddBookDialog
from editbookdialog import Ui_EditBookDialog
import pymysql
class MainWindow(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.load_books()
self.add_book_button.clicked.connect(self.show_add_book_dialog)
self.edit_book_button.clicked.connect(self.show_edit_book_dialog)
self.delete_book_button.clicked.connect(self.delete_book)
def load_books(self):
self.books_table.clearContents()
self.books_table.setRowCount(0)
conn = pymysql.connect(host='localhost', user='root', password='password', db='library')
cursor = conn.cursor()
cursor.execute('SELECT * FROM books')
for row_data in cursor.fetchall():
row = self.books_table.rowCount()
self.books_table.insertRow(row)
for column, data in enumerate(row_data):
item = QTableWidgetItem(str(data))
self.books_table.setItem(row, column, item)
conn.close()
def show_add_book_dialog(self):
dialog = AddBookDialog(self)
if dialog.exec_() == QDialog.Accepted:
self.load_books()
def show_edit_book_dialog(self):
selected_rows = self.books_table.selectedItems()
if selected_rows:
row = selected_rows[0].row()
id = int(self.books_table.item(row, 0).text())
title = self.books_table.item(row, 1).text()
author = self.books_table.item(row, 2).text()
year = int(self.books_table.item(row, 3).text())
isbn = self.books_table.item(row, 4).text()
dialog = EditBookDialog(self, id, title, author, year, isbn)
if dialog.exec_() == QDialog.Accepted:
self.load_books()
def delete_book(self):
selected_rows = self.books_table.selectedItems()
if selected_rows:
row = selected_rows[0].row()
id = int(self.books_table.item(row, 0).text())
conn = pymysql.connect(host='localhost', user='root', password='password', db='library')
cursor = conn.cursor()
cursor.execute('DELETE FROM books WHERE id=%s', (id,))
conn.commit()
conn.close()
self.load_books()
class AddBookDialog(QDialog, Ui_AddBookDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.add_button.clicked.connect(self.add_book)
def add_book(self):
title = self.title_edit.text()
author = self.author_edit.text()
year = int(self.year_edit.text())
isbn = self.isbn_edit.text()
conn = pymysql.connect(host='localhost', user='root', password='password', db='library')
cursor = conn.cursor()
cursor.execute('INSERT INTO books (title, author, year, isbn) VALUES (%s, %s, %s, %s)', (title, author, year, isbn))
conn.commit()
conn.close()
self.accept()
class EditBookDialog(QDialog, Ui_EditBookDialog):
def __init__(self, parent=None, id=None, title='', author='', year=0, isbn=''):
super().__init__(parent)
self.setupUi(self)
self.id = id
self.title_edit.setText(title)
self.author_edit.setText(author)
self.year_edit.setText(str(year))
self.isbn_edit.setText(isbn)
self.edit_button.clicked.connect(self.edit_book)
def edit_book(self):
title = self.title_edit.text()
author = self.author_edit.text()
year = int(self.year_edit.text())
isbn = self.isbn_edit.text()
conn = pymysql.connect(host='localhost', user='root', password='password', db='library')
cursor = conn.cursor()
cursor.execute('UPDATE books SET title=%s, author=%s, year=%s, isbn=%s WHERE id=%s', (title, author, year, isbn, self.id))
conn.commit()
conn.close()
self.accept()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
6.运行程序
使用以下命令运行程序:
```shell
python main.py
```