python tkinter mysql登录、注册、修改密码:用户可以通过登录系统来管理酒店的信息。注册功能可以让新用户加入系统,而修改密码功能则可以让用户更改他们的密码。
时间: 2024-03-19 19:46:24 浏览: 9
好的,针对您的问题,以下是Python Tkinter和MySQL实现酒店管理系统的登录、注册和修改密码功能的示例代码:
```python
import tkinter as tk
import mysql.connector
# 连接MySQL数据库
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="password",
database="hotel_db"
)
# 创建游标对象
mycursor = mydb.cursor()
# 创建登录窗口
def login_window():
login_win = tk.Tk()
login_win.title("登录")
# 创建标签和文本框
tk.Label(login_win, text="用户名").grid(row=0, column=0)
username = tk.Entry(login_win)
username.grid(row=0, column=1)
tk.Label(login_win, text="密码").grid(row=1, column=0)
password = tk.Entry(login_win, show="*")
password.grid(row=1, column=1)
# 创建登录和注册按钮
login_btn = tk.Button(login_win, text="登录", command=lambda: login(username.get(), password.get()))
login_btn.grid(row=2, column=0)
register_btn = tk.Button(login_win, text="注册", command=register_window)
register_btn.grid(row=2, column=1)
login_win.mainloop()
# 创建注册窗口
def register_window():
register_win = tk.Tk()
register_win.title("注册")
# 创建标签和文本框
tk.Label(register_win, text="用户名").grid(row=0, column=0)
username = tk.Entry(register_win)
username.grid(row=0, column=1)
tk.Label(register_win, text="密码").grid(row=1, column=0)
password = tk.Entry(register_win, show="*")
password.grid(row=1, column=1)
tk.Label(register_win, text="确认密码").grid(row=2, column=0)
confirm_password = tk.Entry(register_win, show="*")
confirm_password.grid(row=2, column=1)
# 创建注册按钮
register_btn = tk.Button(register_win, text="注册", command=lambda: register(username.get(), password.get(), confirm_password.get()))
register_btn.grid(row=3, column=0)
register_win.mainloop()
# 创建修改密码窗口
def change_password_window():
change_password_win = tk.Tk()
change_password_win.title("修改密码")
# 创建标签和文本框
tk.Label(change_password_win, text="旧密码").grid(row=0, column=0)
old_password = tk.Entry(change_password_win, show="*")
old_password.grid(row=0, column=1)
tk.Label(change_password_win, text="新密码").grid(row=1, column=0)
new_password = tk.Entry(change_password_win, show="*")
new_password.grid(row=1, column=1)
tk.Label(change_password_win, text="确认密码").grid(row=2, column=0)
confirm_password = tk.Entry(change_password_win, show="*")
confirm_password.grid(row=2, column=1)
# 创建修改密码按钮
change_password_btn = tk.Button(change_password_win, text="修改密码", command=lambda: change_password(old_password.get(), new_password.get(), confirm_password.get()))
change_password_btn.grid(row=3, column=0)
change_password_win.mainloop()
# 实现登录功能
def login(username, password):
sql = "SELECT * FROM users WHERE username = %s AND password = %s"
val = (username, password)
mycursor.execute(sql, val)
user = mycursor.fetchone()
if user:
print("登录成功!")
else:
print("用户名或密码错误!")
# 实现注册功能
def register(username, password, confirm_password):
if password == confirm_password:
sql = "INSERT INTO users (username, password) VALUES (%s, %s)"
val = (username, password)
mycursor.execute(sql, val)
mydb.commit()
print("注册成功!")
else:
print("两次密码输入不一致!")
# 实现修改密码功能
def change_password(old_password, new_password, confirm_password):
# 首先需要验证旧密码是否正确
sql = "SELECT * FROM users WHERE username = %s AND password = %s"
val = ("test", old_password)
mycursor.execute(sql, val)
user = mycursor.fetchone()
if user:
if new_password == confirm_password:
sql = "UPDATE users SET password = %s WHERE username = %s"
val = (new_password, "test")
mycursor.execute(sql, val)
mydb.commit()
print("密码修改成功!")
else:
print("两次密码输入不一致!")
else:
print("旧密码输入错误!")
# 运行登录窗口
login_window()
```
在上面的示例代码中,我们使用了Python Tkinter来创建登录、注册和修改密码窗口。当用户点击登录按钮时,我们会从MySQL数据库中验证用户的用户名和密码是否正确。如果验证通过,则会显示“登录成功”,否则会显示“用户名或密码错误”提示信息。
当用户点击注册按钮时,我们会从窗口中获取用户名和密码,并将其插入到MySQL数据库中。如果插入成功,则会显示“注册成功”提示信息,否则会显示“两次密码输入不一致”提示信息。
当用户点击修改密码按钮时,我们首先需要验证旧密码是否正确。如果旧密码正确,则需要验证新密码和确认密码是否一致。如果一致,则将新密码更新到MySQL数据库中,并显示“密码修改成功”提示信息,否则会显示“两次密码输入不一致”提示信息或“旧密码输入错误”提示信息。