用PYTHON帮我写一个图书管理系统,要求这个系统有LOGIN登录界面,Refister注册页面,管理员页面和读者页面,其中,当用户点击登录时,跳转读者页面,管理员点击登录时,跳转管理员界面,点击注册,跳转注册界面,另外,登录信息和图书信息通过MYSQL储存,登录信息表包括用户名,密码,用户权限,图书信息表包括isbn,书名,出版社,日期
时间: 2024-03-06 12:49:25 浏览: 68
好的,我可以为您提供一个基本的图书管理系统的代码框架,但需要注意的是,这只是一个基础的框架,您需要根据自己的需求进一步完善和优化代码。
首先,我们需要安装并导入所需的库:
```python
import tkinter as tk
import pymysql
```
接下来,我们可以定义一个数据库类,用于连接数据库和执行相关操作:
```python
class Database:
def __init__(self, host, user, password, db):
self.connection = pymysql.connect(host=host, user=user, password=password, db=db)
self.cursor = self.connection.cursor()
def execute_query(self, query):
self.cursor.execute(query)
return self.cursor.fetchall()
def execute_command(self, command):
self.cursor.execute(command)
self.connection.commit()
```
然后,我们可以定义一个登录窗口类,用于显示登录页面和处理登录操作:
```python
class LoginWindow:
def __init__(self, db):
self.db = db
self.window = tk.Tk()
self.window.title("图书管理系统 - 登录")
self.window.geometry("300x150")
tk.Label(self.window, text="用户名:").grid(row=0, column=0)
self.username_entry = tk.Entry(self.window)
self.username_entry.grid(row=0, column=1)
tk.Label(self.window, text="密码:").grid(row=1, column=0)
self.password_entry = tk.Entry(self.window, show="*")
self.password_entry.grid(row=1, column=1)
self.login_button = tk.Button(self.window, text="登录", command=self.login)
self.login_button.grid(row=2, column=0)
self.register_button = tk.Button(self.window, text="注册", command=self.register)
self.register_button.grid(row=2, column=1)
def login(self):
username = self.username_entry.get()
password = self.password_entry.get()
# 查询用户信息
query = "SELECT * FROM users WHERE username='{0}' AND password='{1}'".format(username, password)
result = self.db.execute_query(query)
if len(result) == 0:
tk.messagebox.showerror("错误", "用户名或密码错误")
else:
# 跳转到读者页面或管理员页面
user_type = result[0][2]
if user_type == "管理员":
self.window.destroy()
AdminWindow(self.db)
else:
self.window.destroy()
ReaderWindow(self.db)
def register(self):
self.window.destroy()
RegisterWindow(self.db)
def run(self):
self.window.mainloop()
```
在登录窗口类中,我们定义了一个`login`方法,用于处理用户登录操作。在该方法中,我们首先查询数据库,检查用户名和密码是否正确。如果正确,我们根据用户权限跳转到相应的页面。如果错误,我们弹出一个错误消息框。
我们还定义了一个`register`方法,用于跳转到注册页面。在该方法中,我们使用`destroy`方法关闭当前窗口并打开注册窗口。
接下来,我们可以定义一个注册窗口类,用于显示注册页面和处理注册操作:
```python
class RegisterWindow:
def __init__(self, db):
self.db = db
self.window = tk.Tk()
self.window.title("图书管理系统 - 注册")
self.window.geometry("300x150")
tk.Label(self.window, text="用户名:").grid(row=0, column=0)
self.username_entry = tk.Entry(self.window)
self.username_entry.grid(row=0, column=1)
tk.Label(self.window, text="密码:").grid(row=1, column=0)
self.password_entry = tk.Entry(self.window, show="*")
self.password_entry.grid(row=1, column=1)
tk.Label(self.window, text="权限:").grid(row=2, column=0)
self.user_type_entry = tk.Entry(self.window)
self.user_type_entry.grid(row=2, column=1)
self.register_button = tk.Button(self.window, text="注册", command=self.register)
self.register_button.grid(row=3, column=0)
self.back_button = tk.Button(self.window, text="返回", command=self.back)
self.back_button.grid(row=3, column=1)
def register(self):
username = self.username_entry.get()
password = self.password_entry.get()
user_type = self.user_type_entry.get()
# 检查用户名是否已存在
query = "SELECT * FROM users WHERE username='{0}'".format(username)
result = self.db.execute_query(query)
if len(result) > 0:
tk.messagebox.showerror("错误", "用户名已存在")
else:
# 插入新用户信息
command = "INSERT INTO users (username, password, user_type) VALUES ('{0}', '{1}', '{2}')".format(username, password, user_type)
self.db.execute_command(command)
tk.messagebox.showinfo("成功", "注册成功")
def back(self):
self.window.destroy()
LoginWindow(self.db)
def run(self):
self.window.mainloop()
```
在注册窗口类中,我们定义了一个`register`方法,用于处理用户注册操作。在该方法中,我们首先查询数据库,检查用户名是否已存在。如果不存在,我们插入新用户信息到数据库中,并弹出一个成功消息框。如果存在,我们弹出一个错误消息框。
我们还定义了一个`back`方法,用于返回到登录页面。在该方法中,我们使用`destroy`方法关闭当前窗口并打开登录窗口。
接下来,我们可以定义一个读者窗口类,用于显示读者页面和处理读者操作:
```python
class ReaderWindow:
def __init__(self, db):
self.db = db
self.window = tk.Tk()
self.window.title("图书管理系统 - 读者")
self.window.geometry("400x300")
# TODO: 添加读者页面的界面元素和相应的操作
def run(self):
self.window.mainloop()
```
在读者窗口类中,我们可以添加读者页面的界面元素和相应的操作,例如,显示借阅的图书、借阅图书、归还图书等等。
最后,我们可以定义一个管理员窗口类,用于显示管理员页面和处理管理员操作:
```python
class AdminWindow:
def __init__(self, db):
self.db = db
self.window = tk.Tk()
self.window.title("图书管理系统 - 管理员")
self.window.geometry("400x300")
# TODO: 添加管理员页面的界面元素和相应的操作
def run(self):
self.window.mainloop()
```
在管理员窗口类中,我们可以添加管理员页面的界面元素和相应的操作,例如,添加图书、删除图书、修改图书信息等等。
最后,我们可以创建一个数据库实例、一个登录窗口实例,并运行登录窗口:
```python
db = Database(host="localhost", user="root", password="password", db="library")
login_window = LoginWindow(db)
login_window.run()
```
这就是一个基本的图书管理系统的代码框架,您可以根据自己的需求进一步完善和优化代码。
阅读全文