为这个代码添加一个用户数据库
时间: 2024-02-13 17:01:39 浏览: 10
好的,我们可以使用SQLite3作为用户数据库。先导入SQLite3模块,并在程序开始时创建数据库和数据表。
```python
import sqlite3
conn = sqlite3.connect('user.db') # 连接到user.db数据库
c = conn.cursor() # 创建游标
# 创建用户表
c.execute('''CREATE TABLE IF NOT EXISTS user
(id INTEGER PRIMARY KEY AUTOINCREMENT,
account CHAR(20) NOT NULL,
password CHAR(20) NOT NULL)''')
# 插入一些测试数据
c.execute("INSERT INTO user (account, password) VALUES ('123456', '123456')")
c.execute("INSERT INTO user (account, password) VALUES ('234567', '234567')")
c.execute("INSERT INTO user (account, password) VALUES ('345678', '345678')")
conn.commit() # 提交更改
conn.close() # 关闭连接
```
然后我们需要修改`check_account`函数,从数据库中查询用户信息并进行验证。
```python
def check_account(account, password):
conn = sqlite3.connect('user.db')
c = conn.cursor()
# 查询用户信息
c.execute("SELECT password FROM user WHERE account=:account", {'account': account})
result = c.fetchone()
conn.close()
if result and result[0] == password:
return True
else:
return False
```
最后,我们需要将新的`withdraw`函数与数据库进行交互,实现向数据库中插入取款记录的功能。
```python
def withdraw():
account = entry_account.get()
password = entry_password.get()
money = entry_money.get()
if check_account(account, password):
conn = sqlite3.connect('user.db')
c = conn.cursor()
# 插入取款记录
c.execute("INSERT INTO record (account, money) VALUES (:account, :money)",
{'account': account, 'money': money})
conn.commit()
conn.close()
print("取款金额为:", money)
else:
print("账户或密码错误!")
```
这里我们创建了一个名为`record`的新表,用于存储取款记录。在`withdraw`函数中,我们首先检查用户账户和密码是否正确,如果正确则向`record`表中插入一条新的记录。
完整代码如下:
```python
import tkinter as tk
import sqlite3
# 创建数据库和数据表
conn = sqlite3.connect('user.db')
c = conn.cursor()
# 创建用户表
c.execute('''CREATE TABLE IF NOT EXISTS user
(id INTEGER PRIMARY KEY AUTOINCREMENT,
account CHAR(20) NOT NULL,
password CHAR(20) NOT NULL)''')
# 创建取款记录表
c.execute('''CREATE TABLE IF NOT EXISTS record
(id INTEGER PRIMARY KEY AUTOINCREMENT,
account CHAR(20) NOT NULL,
money CHAR(20) NOT NULL)''')
# 插入一些测试数据
c.execute("INSERT INTO user (account, password) VALUES ('123456', '123456')")
c.execute("INSERT INTO user (account, password) VALUES ('234567', '234567')")
c.execute("INSERT INTO user (account, password) VALUES ('345678', '345678')")
conn.commit()
conn.close()
window = tk.Tk()
window.title("ATM取款机")
window.geometry("500x300")
# 添加标签
label_account = tk.Label(window, text="账户:")
label_account.place(x=100, y=50)
label_password = tk.Label(window, text="密码:")
label_password.place(x=100, y=100)
label_money = tk.Label(window, text="金额:")
label_money.place(x=100, y=150)
# 添加输入框
entry_account = tk.Entry(window)
entry_account.place(x=200, y=50)
entry_password = tk.Entry(window, show="*")
entry_password.place(x=200, y=100)
entry_money = tk.Entry(window)
entry_money.place(x=200, y=150)
# 检查用户账户和密码是否正确
def check_account(account, password):
conn = sqlite3.connect('user.db')
c = conn.cursor()
# 查询用户信息
c.execute("SELECT password FROM user WHERE account=:account", {'account': account})
result = c.fetchone()
conn.close()
if result and result[0] == password:
return True
else:
return False
# 添加按钮
def withdraw():
account = entry_account.get()
password = entry_password.get()
money = entry_money.get()
if check_account(account, password):
conn = sqlite3.connect('user.db')
c = conn.cursor()
# 插入取款记录
c.execute("INSERT INTO record (account, money) VALUES (:account, :money)",
{'account': account, 'money': money})
conn.commit()
conn.close()
print("取款金额为:", money)
else:
print("账户或密码错误!")
button_withdraw = tk.Button(window, text="取款", command=withdraw)
button_withdraw.place(x=200, y=200)
window.mainloop()
```
希望这可以帮助你完成向ATM取款机添加用户数据库的任务。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)