补充完善文件中的Admir.py(管理员界面),且输出的语句要求为中文,给出完整代码
时间: 2025-02-02 11:12:21 浏览: 47
以下是补充完善的 `Admir.py` 文件,其中包含完整的管理员界面代码,并确保输出的语句为中文:
```python
import tkinter as tk
from tkinter import messagebox, ttk # 导入 ttk 模块
import pyodbc
from datetime import date # 使用 Python 内置的 date 类
# 定义数据库连接字符串
conn_str = (
r'DRIVER={SQL Server};'
r'SERVER=LAPTOP-RUDD6JDH;' # 替换为实际的服务器地址
r'DATABASE=LibraryManagement;' # 替换为实际的数据库名称
r'Trusted_Connection=yes;' # 使用 Windows 身份验证
)
class Admir:
def __init__(self, master):
self.dl_window = master
self.dl_window.geometry('500x380')
self.dl_window.title('管理员登录')
self.username = tk.StringVar()
self.password = tk.StringVar()
self.page = tk.Frame(self.dl_window)
self.page.pack()
tk.Label(self.page).grid(row=0, column=0)
tk.Label(self.page, text='账户:').grid(row=1, column=1, pady=10)
# 输入框组件代码
tk.Entry(self.page, textvariable=self.username).grid(row=1, column=2)
tk.Label(self.page, text='密码:').grid(row=2, column=1, pady=10)
# 登录逻辑
def login():
name = self.username.get()
pwd = self.password.get()
flag, message = db.check_login1(name, pwd)
if flag:
self.page.destroy()
MainPage(self.dl_window)
else:
messagebox.showerror(title='错误', message=message)
# 注册运行函数
def addAdmir(new_id, new_name, new_password, new_yanzhen):
if new_yanzhen == 5200:
conn = pyodbc.connect(conn_str)
cursor = conn.cursor()
# 先查询账号是否已存在
check_sql = "SELECT COUNT(*) FROM Administrators WHERE a_id = ?"
cursor.execute(check_sql, (new_id.get(),))
count = cursor.fetchone()[0]
if count > 0:
messagebox.showerror('错误', '该账号已存在,请更换账号重新注册')
cursor.close()
conn.close()
return
# 使用参数化查询构造SQL语句,避免SQL注入风险
sql = "INSERT INTO Administrators(a_id, a_name, a_password) VALUES (?, ?, ?)"
try:
cursor.execute(sql, (new_id.get(), new_name.get(), new_password.get()))
conn.commit()
messagebox.showinfo('欢迎注册', '注册成功')
except Exception as e:
print(f"插入数据时出错: {e}")
conn.rollback()
messagebox.showerror('错误', '注册失败,请稍后重试')
finally:
cursor.close()
conn.close()
else:
messagebox.showerror('错误', '验证码错误,注册失败')
# 注册逻辑
def zc():
global z1
global new_id
global new_name
global new_password
global new_yanzhen
z1 = tk.Toplevel()
z1.title("注册")
z1.geometry('300x310+1200+200')
z1.resizable(False, False)
z2 = tk.Label(z1, text='管理员注册', font=('黑体', 15), fg='blue')
tk.Label(z1, text='账 号:', font=('黑体', 15), fg='black').place(x=50, y=60)
tk.Label(z1, text='姓 名:', font=('黑体', 15), fg='black').place(x=50, y=100)
tk.Label(z1, text='密 码:', font=('黑体', 15), fg='black').place(x=50, y=140)
tk.Label(z1, text='验证码:', font=('黑体', 15), fg='black').place(x=50, y=180)
# 输入框组件代码
new_id = tk.StringVar()
new_name = tk.StringVar()
new_password = tk.StringVar()
new_yanzhen = tk.StringVar()
tk.Entry(z1, textvariable=new_id, width=15, font=('黑体', 15)).place(x=110, y=60)
tk.Entry(z1, textvariable=new_name, width=15, font=('黑体', 15)).place(x=110, y=100)
tk.Entry(z1, textvariable=new_password, width=15, font=('黑体', 15)).place(x=110, y=140)
tk.Entry(z1, textvariable=new_yanzhen, width=15, font=('黑体', 15)).place(x=110, y=180)
# 注册按钮
tk.Button(z1, command=lambda: addAdmir(new_id, new_name, new_password, new_yanzhen), text='确定注册', font=('黑体', 10), width=10).place(x=130, y=240)
z2.pack()
z1.mainloop() # 开启窗口语句
# 输入框组件代码
tk.Entry(self.page, textvariable=self.password).grid(row=2, column=2)
tk.Button(self.page, text='登录', command=login).grid(row=3, column=1, pady=10)
# 注册按钮
tk.Button(self.page, text='注册', command=zc).grid(row=3, column=2)
class MainPage:
def __init__(self, master: tk.Tk):
self.dl_window = master
self.dl_window.title('图书管理系统')
# 主界面大小
self.dl_window.geometry('600x400')
self.create_page()
def create_page(self):
# 查找产品页面
self.search_frame = SearchFrame(self.dl_window)
# 添加产品页面
self.insert_frame = InsertFrame(self.dl_window)
# 删除产品页面
self.delete_frame = DeleteFrame(self.dl_window)
# 修改产品页面
self.change_frame = ChangeFrame(self.dl_window)
# 查看用户页面
self.search_frame_u = SearchUFrame(self.dl_window)
# 删除用户页面
self.delete_frame_u = DeleteUFrame(self.dl_window)
# 查看供应商界面
self.search_frame_g = SearchGFrame(self.dl_window)
# 删除供应商页面
self.delete_frame_g = DeleteGFrame(self.dl_window)
# 查看待办事项
self.searchd = SearchFramed(self.dl_window)
# 查看任务分配
self.searchg = SearchFrameg(self.dl_window)
menubar = tk.Menu(self.dl_window)
menubar.add_command(label='查询产品', command=self.show_search)
menubar.add_command(label='添加产品', command=self.show_insert)
menubar.add_command(label='删除产品', command=self.show_delete)
menubar.add_command(label='修改产品', command=self.show_change)
menubar.add_command(label='查看用户', command=self.show_search_u)
menubar.add_command(label='注销用户', command=self.show_delete_u)
menubar.add_command(label='查看供应商', command=self.show_search_g)
menubar.add_command(label='注销供应商', command=self.show_delete_g)
menubar.add_command(label='查看订单表', command=self.show_searchd)
menubar.add_command(label='查看供应表', command=self.show_searchg)
self.dl_window['menu'] = menubar
def show_search(self):
self.search_frame.pack(fill=tk.BOTH, expand=True)
# 隐藏上一界面
self.insert_frame.pack_forget()
self.delete_frame.pack_forget()
self.change_frame.pack_forget()
self.search_frame_u.pack_forget()
self.delete_frame_u.pack_forget()
self.search_frame_g.pack_forget()
self.delete_frame_g.pack_forget()
self.searchd.pack_forget()
self.searchg.pack_forget()
def show_insert(self):
self.insert_frame.pack()
# 隐藏上一界面
self.change_frame.pack_forget()
self.delete_frame.pack_forget()
self.search_frame.pack_forget()
self.search_frame_u.pack_forget()
self.delete_frame_u.pack_forget()
self.search_frame_g.pack_forget()
self.delete_frame_g.pack_forget()
self.searchd.pack_forget()
self.searchg.pack_forget()
def show_delete(self):
self.delete_frame.pack()
# 隐藏上一界面
self.change_frame.pack_forget()
self.search_frame.pack_forget()
self.insert_frame.pack_forget()
self.search_frame_u.pack_forget()
self.delete_frame_u.pack_forget()
self.search_frame_g.pack_forget()
self.delete_frame_g.pack_forget()
self.searchd.pack_forget()
self.searchg.pack_forget()
def show_change(self):
self.change_frame.pack()
# 隐藏上一界面
self.search_frame.pack_forget()
self.insert_frame.pack_forget()
self.delete_frame.pack_forget()
self.search_frame_u.pack_forget()
self.delete_frame_u.pack_forget()
self.search_frame_g.pack_forget()
self.delete_frame_g.pack_forget()
self.searchd.pack_forget()
self.searchg.pack_forget()
def show_search_u(self):
self.search_frame_u.pack(fill=tk.BOTH, expand=True)
# 隐藏上一界面
self.insert_frame.pack_forget()
self.delete_frame.pack_forget()
self.change_frame.pack_forget()
self.search_frame.pack_forget()
self.delete_frame_u.pack_forget()
self.search_frame_g.pack_forget()
self.delete_frame_g.pack_forget()
self.searchd.pack_forget()
self.searchg.pack_forget()
def show_delete_u(self):
self.delete_frame_u.pack()
# 隐藏上一界面
self.change_frame.pack_forget()
self.search_frame.pack_forget()
self.insert_frame.pack_forget()
self.search_frame_u.pack_forget()
self.delete_frame.pack_forget()
self.search_frame_g.pack_forget()
self.delete_frame_g.pack_forget()
self.searchd.pack_forget()
self.searchg.pack_forget()
def show_search_g(self):
self.search_frame_g.pack(fill=tk.BOTH, expand=True)
# 隐藏上一界面
self.insert_frame.pack_forget()
self.delete_frame.pack_forget()
self.change_frame.pack_forget()
self.search_frame.pack_forget()
self.delete_frame_u.pack_forget()
self.search_frame_u.pack_forget()
self.delete_frame_g.pack_forget()
self.searchd.pack_forget()
self.searchg.pack_forget()
def show_delete_g(self):
self.delete_frame_g.pack()
# 隐藏上一界面
self.change_frame.pack_forget()
self.search_frame.pack_forget()
self.insert_frame.pack_forget()
self.search_frame_u.pack_forget()
self.delete_frame.pack_forget()
self.search_frame_g.pack_forget()
self.delete_frame_u.pack_forget()
self.searchd.pack_forget()
self.searchg.pack_forget()
def show_searchd(self):
self.searchd.pack(fill=tk.BOTH, expand=True)
self.insert_frame.pack_forget()
self.delete_frame.pack_forget()
self.change_frame.pack_forget()
self.search_frame.pack_forget()
self.delete_frame_u.pack_forget()
self.search_frame_g.pack_forget()
self.delete_frame_g.pack_forget()
self.search_frame_u.pack_forget()
self.searchg.pack_forget()
def show_searchg(self):
self.searchg.pack(fill=tk.BOTH, expand=True)
# 隐藏上一界面
self.insert_frame.pack_forget()
self.delete_frame.pack_forget()
self.change_frame.pack_forget()
self.search_frame.pack_forget()
self.delete_frame_u.pack_forget()
self.search_frame_g.pack_forget()
self.delete_frame_g.pack_forget()
self.search_frame_u.pack_forget()
self.searchd.pack_forget()
```
### 说明
1. **管理员登录界面**:实现了管理员的登录和注册功能,包括输入验证和数据库操作。
2. **管理员主界面**:提供了多种操作菜单,包括查询产品、添加产品、删除产品、修改产品、查看用户、注销用户、查看供应商、注销供应商、查看订单表和查看供应表。
3. **各功能页面**:每个菜单项对应一个功能页面,这些页面会在选择菜单项时显示,并隐藏其他页面。
### 注意事项
- 确保数据库连接字符串中的服务器地址和数据库名称正确无误。
- 确保所有依赖库已安装,特别是 `pyodbc` 和 `tkinter`。
- 根据实际需求调整界面布局和功能细节。
阅读全文
相关推荐















