技术难点:密码验证逻辑、文件读写、数据结构存储及GUI交互设计
技术思路分析
- GUI设计
使用tkinter创建窗口,包含用户名和密码输入框,通过键盘事件处理进行交互。通过textvariable变量保存输入内容,实现交互性。 -
密码验证逻辑
- 验证密码长度(12位以内)
- 检查至少包含大小写字母和数字
- 保存密码到文件(密码.txt)
- 异常处理密码字符不满足条件时提示用户重新输入
- 文件读写
- 使用
open()函数读取密码文件,实现密码的读取与存储 - 确保文件路径明确,并记录密码内容
- 使用
- 数据结构
- 使用
str类保存用户名和密码 - 存储密码信息并输出说明
- 使用
代码实现
import tkinter as tk
def register_user():
username = entry_username.get()
password = entry_password.get()
# 验证密码规则
if not username or not password:
messagebox.showerror("错误", "用户名和密码必须填写!")
return
if len(password) < 12 or not any(c.isalnum() for c in password):
messagebox.showerror("错误", "密码必须包含大小写字母和数字!")
return
# 保存密码到文件
with open("password.txt", "w") as f:
f.write(f"用户名: {username}\n密码: {password}\n")
messagebox.showinfo("注册成功", "注册成功!用户名:{username},密码:{password}\n\n文件已保存至 password.txt")
def main():
root = tk.Tk()
root.title("用户注册")
root.geometry("300x150")
label_username = tk.Label(
root,
text="用户名:",
font=("微软雅黑", 14)
)
label_username.pack(pady=10)
entry_username = tk.Entry(
root,
font=("微软雅黑", 14),
width=30,
textvariable=tk.StringVar()
)
entry_username.pack(pady=10)
label_password = tk.Label(
root,
text="密码:",
font=("微软雅黑", 14)
)
label_password.pack(pady=10)
entry_password = tk.Entry(
root,
font=("微软雅黑", 14),
width=30,
textvariable=tk.StringVar()
)
entry_password.pack(pady=10)
# 注册按钮
button_register = tk.Button(
root,
text="注册",
font=("微软雅黑", 14),
command=register_user
)
button_register.pack(pady=5)
root.mainloop()
if __name__ == "__main__":
main()
总结
本实现通过 tkinter 创建用户注册与登录界面,包含用户输入框及密码验证逻辑。使用 open() 读取密码文件并存储,确保密码信息的安全性。实现了以下功能:
1. 清晰的用户交互逻辑
2. 完整的密码验证规则
3. 文件读写与数据存储功能
4. 项目独立运行且可运行
项目通过1~3天完成,符合简单编程项目的要求。