利用GUI和数据库实现一个注册和登录程序。注册时,应向用户提示“注册成功!”或“id不能重复”;登录时,应向用户提示“登录成功”或“登录失败,重新登录”
时间: 2023-09-09 19:12:33 浏览: 25
好的,这个需求可以用Python编写一个简单的GUI程序,并且使用SQLite数据库来存储用户信息。下面是一个简单的实现示例:
```python
import tkinter as tk
import sqlite3
# 创建数据库连接
conn = sqlite3.connect('user.db')
# 创建用户表
conn.execute('''CREATE TABLE IF NOT EXISTS users
(ID INT PRIMARY KEY NOT NULL,
USERNAME TEXT NOT NULL,
PASSWORD TEXT NOT NULL);''')
# 注册函数
def register():
# 获取用户输入的用户名和密码
username = entry_username.get()
password = entry_password.get()
# 查询是否存在相同ID的用户
cursor = conn.execute("SELECT * FROM users WHERE ID = ?", (username,))
if cursor.fetchone():
label_result.config(text="id不能重复")
else:
# 插入新用户
conn.execute("INSERT INTO users (ID, USERNAME, PASSWORD) VALUES (?, ?, ?)", (username, username, password))
conn.commit()
label_result.config(text="注册成功!")
# 登录函数
def login():
# 获取用户输入的用户名和密码
username = entry_username.get()
password = entry_password.get()
# 查询是否存在相应的用户
cursor = conn.execute("SELECT * FROM users WHERE ID = ? AND PASSWORD = ?", (username, password))
if cursor.fetchone():
label_result.config(text="登录成功")
else:
label_result.config(text="登录失败,重新登录")
# 创建窗口和控件
window = tk.Tk()
window.title("注册和登录程序")
label_username = tk.Label(window, text="用户名")
label_username.grid(row=0, column=0)
entry_username = tk.Entry(window)
entry_username.grid(row=0, column=1)
label_password = tk.Label(window, text="密码")
label_password.grid(row=1, column=0)
entry_password = tk.Entry(window, show="*")
entry_password.grid(row=1, column=1)
button_register = tk.Button(window, text="注册", command=register)
button_register.grid(row=2, column=0)
button_login = tk.Button(window, text="登录", command=login)
button_login.grid(row=2, column=1)
label_result = tk.Label(window, text="")
label_result.grid(row=3, columnspan=2)
window.mainloop()
# 关闭数据库连接
conn.close()
```
这个程序使用了Python内置的Tkinter库来创建窗口和控件,并且使用了SQLite数据库来存储用户信息。在注册时,程序首先查询是否存在相同ID的用户,如果存在,就提示“id不能重复”,否则就插入新用户记录。在登录时,程序查询是否存在相应的用户记录,如果存在,就提示“登录成功”,否则就提示“登录失败,重新登录”。