用python语言分别编写下列两个程序:1. 用户登录窗口,编程实现用户注册和登录功能 (1)用户注册功能要求如下: - 输入时要进行用户名、密码校验,规则为用户名不为空且必须包含数字和字母,即以数字或者字母开头,后面可以带数字、字母或者_;用户密码不为空且仅包含数字和字母。 - 当用户名不重复时,用户名、密码信息保存在当前文件夹下的文件user.txt中,并弹出消息窗口提示“注册成功!”;否则,弹出消息窗口提示“该用户名已存在,请重新输入”。(2)用户登录功能要求如下: - 输入时要进行用户名、密码校验,当用户名、密码与文件user.txt中某一组用户账号(即用户名、密码)对应时,并弹出消息窗口提示“登录成功!”,关闭该消息窗口后再弹出子窗口;否则,弹出消息窗口提示“用户名或者密码错误”。
时间: 2024-02-21 12:02:21 浏览: 29
下面是一个简单的Python程序实现以上要求,使用了tkinter模块实现GUI界面:
```python
import tkinter as tk
import re
class LoginWindow:
def __init__(self, master):
self.master = master
self.master.title("用户登录")
self.master.geometry("300x200")
self.label_username = tk.Label(self.master, text="用户名:")
self.label_username.pack()
self.entry_username = tk.Entry(self.master)
self.entry_username.pack()
self.label_password = tk.Label(self.master, text="密码:")
self.label_password.pack()
self.entry_password = tk.Entry(self.master, show="*")
self.entry_password.pack()
self.button_login = tk.Button(self.master, text="登录", command=self.login)
self.button_login.pack(pady=10)
self.button_register = tk.Button(self.master, text="注册", command=self.register)
self.button_register.pack(pady=10)
def register(self):
username = self.entry_username.get()
password = self.entry_password.get()
if not self.validate_username(username):
tk.messagebox.showerror("错误", "用户名不符合规则")
return
elif not self.validate_password(password):
tk.messagebox.showerror("错误", "密码不符合规则")
return
with open("user.txt", "r") as f:
for line in f:
if username == line.split(",")[0]:
tk.messagebox.showerror("错误", "该用户名已存在,请重新输入")
return
with open("user.txt", "a") as f:
f.write("{},{}\n".format(username, password))
tk.messagebox.showinfo("注册成功", "注册成功!")
def login(self):
username = self.entry_username.get()
password = self.entry_password.get()
if not self.validate_username(username):
tk.messagebox.showerror("错误", "用户名不符合规则")
return
elif not self.validate_password(password):
tk.messagebox.showerror("错误", "密码不符合规则")
return
with open("user.txt", "r") as f:
for line in f:
if username == line.split(",")[0] and password == line.split(",")[1].strip():
tk.messagebox.showinfo("登录成功", "登录成功!")
self.show_child_window()
return
tk.messagebox.showerror("错误", "用户名或者密码错误")
def show_child_window(self):
child_window = tk.Toplevel()
child_window.title("子窗口")
child_window.geometry("200x100")
tk.Label(child_window, text="这是子窗口").pack()
def validate_username(self, username):
return bool(re.match(r'^[a-zA-Z0-9][a-zA-Z0-9_]*$', username))
def validate_password(self, password):
return bool(re.match(r'^[a-zA-Z0-9]+$', password))
if __name__ == "__main__":
root = tk.Tk()
app = LoginWindow(root)
root.mainloop()
```
这个程序实现了一个用户登录窗口,包含用户名和密码的输入框,以及登录和注册的按钮。当用户点击注册按钮时,程序会对输入的用户名和密码进行校验,如果符合规则并且用户名未重复,就将用户名和密码写入到user.txt文件中。当用户点击登录按钮时,程序会对输入的用户名和密码进行校验,并在user.txt文件中查找相应的用户账号,如果存在就弹出登录成功的提示框,并打开一个子窗口。如果输入的用户名或者密码错误,程序会弹出相应的错误提示框。