有数据库的python点餐注册登录界面
时间: 2024-02-13 17:03:50 浏览: 24
好的,我可以给你提供一个简单的Python点餐注册登录界面的代码,使用的是SQLite数据库。请先安装sqlite3库。
```python
import sqlite3
# 连接数据库
conn = sqlite3.connect('restaurant.db')
c = conn.cursor()
# 创建用户表
c.execute('''CREATE TABLE IF NOT EXISTS users
(id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
password TEXT NOT NULL)''')
# 创建菜单表
c.execute('''CREATE TABLE IF NOT EXISTS menu
(id INTEGER PRIMARY KEY AUTOINCREMENT,
dish_name TEXT NOT NULL,
price REAL NOT NULL)''')
# 添加用户
def add_user(username, password):
c.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, password))
conn.commit()
# 获取用户信息
def get_user(username):
c.execute("SELECT * FROM users WHERE username=?", (username,))
user = c.fetchone()
if user:
return {'id': user[0], 'username': user[1], 'password': user[2]}
else:
return None
# 添加菜品
def add_dish(dish_name, price):
c.execute("INSERT INTO menu (dish_name, price) VALUES (?, ?)", (dish_name, price))
conn.commit()
# 获取菜单列表
def get_menu():
c.execute("SELECT * FROM menu")
menu = c.fetchall()
return menu
# 关闭数据库连接
def close_db():
conn.close()
```
以上是一个简单的数据库操作函数。下面是一个基于PyQt5的点餐注册登录界面的代码:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QListWidget, QListWidgetItem, QMessageBox
from db_utils import add_user, get_user, add_dish, get_menu, close_db
class LoginWidget(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('点餐系统')
self.resize(300, 200)
self.username_label = QLabel('用户名:', self)
self.username_label.move(50, 50)
self.username_input = QLineEdit(self)
self.username_input.move(110, 50)
self.password_label = QLabel('密码:', self)
self.password_label.move(50, 80)
self.password_input = QLineEdit(self)
self.password_input.move(110, 80)
self.password_input.setEchoMode(QLineEdit.Password)
self.login_button = QPushButton('登录', self)
self.login_button.move(70, 120)
self.login_button.clicked.connect(self.login)
self.register_button = QPushButton('注册', self)
self.register_button.move(160, 120)
self.register_button.clicked.connect(self.register)
def login(self):
username = self.username_input.text()
password = self.password_input.text()
user = get_user(username)
if user and user['password'] == password:
self.accept()
else:
QMessageBox.warning(self, '错误', '用户名或密码错误!')
def register(self):
username = self.username_input.text()
password = self.password_input.text()
if username and password:
user = get_user(username)
if user:
QMessageBox.warning(self, '错误', '用户名已存在!')
else:
add_user(username, password)
QMessageBox.information(self, '提示', '注册成功!')
else:
QMessageBox.warning(self, '错误', '用户名和密码不能为空!')
class OrderWidget(QWidget):
def __init__(self, username):
super().__init__()
self.setWindowTitle('点餐系统')
self.resize(300, 400)
self.username = username
self.menu_label = QLabel('菜单:', self)
self.menu_label.move(50, 50)
self.menu_list = QListWidget(self)
self.menu_list.move(50, 80)
menu = get_menu()
for m in menu:
item = QListWidgetItem(m[1] + ':' + str(m[2]) + '元')
item.setData(1, m[0])
self.menu_list.addItem(item)
self.order_label = QLabel('我的订单:', self)
self.order_label.move(50, 220)
self.order_list = QListWidget(self)
self.order_list.move(50, 250)
self.add_button = QPushButton('加入订单', self)
self.add_button.move(50, 350)
self.add_button.clicked.connect(self.add_order)
self.submit_button = QPushButton('提交订单', self)
self.submit_button.move(160, 350)
self.submit_button.clicked.connect(self.submit_order)
def add_order(self):
items = self.menu_list.selectedItems()
if items:
item = items[0]
order_id = item.data(1)
order_name = item.text()
self.order_list.addItem(order_name)
self.order_list.item(self.order_list.count()-1).setData(1, order_id)
def submit_order(self):
total_price = 0
order_ids = []
for i in range(self.order_list.count()):
item = self.order_list.item(i)
total_price += float(item.text().split(':')[1][:-1])
order_ids.append(item.data(1))
if order_ids:
order_ids_str = ','.join(str(id) for id in order_ids)
QMessageBox.information(self, '提示', '总价:' + str(total_price) + '元\n订单编号:' + order_ids_str)
else:
QMessageBox.warning(self, '错误', '请先选择菜品!')
def closeEvent(self, event):
close_db()
class RestaurantApp(QApplication):
def __init__(self, argv):
super().__init__(argv)
self.login_widget = LoginWidget()
self.login_widget.show()
if self.login_widget.exec_() == self.login_widget.Accepted:
username = self.login_widget.username_input.text()
self.order_widget = OrderWidget(username)
self.order_widget.show()
if __name__ == '__main__':
app = RestaurantApp(sys.argv)
sys.exit(app.exec_())
```
这个界面中,首先打开登录界面,如果输入的用户名和密码正确,则打开点餐界面,点餐界面中展示了菜单列表,可以选择菜品加入订单,并且可以提交订单。