用python和mysql 写一个图书管理系统的tkinter框架
时间: 2024-02-12 14:08:15 浏览: 139
好的,下面是一个使用 Python 和 MySQL 实现的图书管理系统的 Tkinter 框架:
```python
import tkinter as tk
import pymysql
# 连接 MySQL 数据库
db = pymysql.connect(host="localhost", user="root", password="123456", database="library")
cursor = db.cursor()
class BookManagementSystem(tk.Frame):
def __init__(self, master):
super().__init__(master)
self.master = master
self.master.title("图书管理系统")
self.master.geometry("600x400")
# 创建控件
self.label_title = tk.Label(self.master, text="图书管理系统", font=("Arial", 18))
self.label_title.pack(pady=10)
self.frame_search = tk.Frame(self.master)
self.frame_search.pack(pady=10)
self.label_search = tk.Label(self.frame_search, text="请输入书名:")
self.label_search.pack(side=tk.LEFT)
self.entry_search = tk.Entry(self.frame_search)
self.entry_search.pack(side=tk.LEFT)
self.button_search = tk.Button(self.frame_search, text="查询", command=self.search_book)
self.button_search.pack(side=tk.LEFT)
self.listbox_book = tk.Listbox(self.master, width=60, height=15)
self.listbox_book.pack(pady=10)
self.frame_borrow = tk.Frame(self.master)
self.frame_borrow.pack(pady=10)
self.label_borrow = tk.Label(self.frame_borrow, text="请输入书籍ID:")
self.label_borrow.pack(side=tk.LEFT)
self.entry_borrow = tk.Entry(self.frame_borrow)
self.entry_borrow.pack(side=tk.LEFT)
self.button_borrow = tk.Button(self.frame_borrow, text="借阅", command=self.borrow_book)
self.button_borrow.pack(side=tk.LEFT)
# 查询所有书籍并显示在列表框中
self.search_book()
def search_book(self):
# 清空列表框
self.listbox_book.delete(0, tk.END)
# 获取输入的书名
name = self.entry_search.get()
# 查询书籍信息
if name:
sql = "SELECT * FROM book WHERE name LIKE %s"
cursor.execute(sql, ("%" + name + "%",))
else:
sql = "SELECT * FROM book"
cursor.execute(sql)
books = cursor.fetchall()
# 显示书籍信息
for book in books:
self.listbox_book.insert(tk.END, f"{book[0]} {book[1]} {book[2]} {book[3]} {book[4]} {book[5]}")
def borrow_book(self):
# 获取输入的书籍ID
book_id = self.entry_borrow.get()
# 查询书籍信息
sql = "SELECT * FROM book WHERE id=%s"
cursor.execute(sql, (book_id,))
book = cursor.fetchone()
# 判断书籍是否存在
if not book:
tk.messagebox.showerror("错误", "书籍不存在!")
return
# 判断书籍数量是否足够
if book[5] <= 0:
tk.messagebox.showerror("错误", "书籍数量不足!")
return
# 借阅书籍并更新书籍数量
borrow_sql = "INSERT INTO borrow (book_id, user_name, borrow_at, return_at) VALUES (%s, %s, NOW(), DATE_ADD(NOW(), INTERVAL 30 DAY))"
cursor.execute(borrow_sql, (book_id, "张三"))
db.commit()
update_sql = "UPDATE book SET count=count-1 WHERE id=%s"
cursor.execute(update_sql, (book_id,))
db.commit()
# 刷新书籍列表
self.search_book()
tk.messagebox.showinfo("提示", "借阅成功!")
if __name__ == "__main__":
root = tk.Tk()
app = BookManagementSystem(root)
app.pack()
root.mainloop()
# 关闭数据库连接
db.close()
```
在上面的代码中,我们使用 Tkinter 框架创建了一个图书管理系统,包括一个标题、一个查询书籍的输入框和按钮、一个显示书籍列表的列表框、一个借阅书籍的输入框和按钮。我们通过调用 MySQL 数据库连接并执行 SQL 语句来实现对书籍和借阅记录的增删改查操作。
需要注意的是,为了简化代码和操作,我们在代码中直接将借阅人姓名设置为了固定的“张三”,实际应用中应该根据实际情况获取借阅人的姓名。同时,由于在 Tkinter 中使用 MySQL 数据库连接需要在主循环结束后关闭数据库连接,因此我们在代码末尾添加了关闭数据库连接的代码。
阅读全文