用Python开发一个简易点餐系统,实现如下功能: (1)主程序页面显示:主页面显示登录和退出操作,并实现登录及退出系统的功能。登录时可以选择是管理员还是客户登录。管理员登录时要进行用户名和密码的验证,默认管理员账号密码为root/admin123,如果密码错误不超过三次可以提示重新输入,否则失败报错。管理员登录成功后进入管理员子系统的操作页面。用户登录时,只需要输入桌号即可进入客户点餐子系统操作页面。 (2)管理员子系统的操作页面:对菜单和订单进行增/删/改/查操作,也可以返回上级菜单。 (3)客户点餐子系统的操作页面:查询菜单列表、添加菜单到订单中、取消点餐订单,也可以返回上级菜单。
时间: 2024-02-17 21:05:33 浏览: 27
这是一个比较复杂的需求,需要设计数据库、编写前端界面和后端逻辑代码。以下是一个简单的Python点餐系统的示例代码,仅供参考。
```python
import getpass
# 菜单列表
menu = [
{'name': '宫保鸡丁', 'price': 25},
{'name': '麻婆豆腐', 'price': 20},
{'name': '水煮肉片', 'price': 30},
{'name': '清蒸鲈鱼', 'price': 35},
{'name': '红烧肉', 'price': 40},
{'name': '小炒黄牛肉', 'price': 50},
]
# 订单列表
orders = {}
# 管理员账号密码
admin_username = 'root'
admin_password = 'admin123'
# 登录次数
login_count = 0
# 登录函数
def login():
global login_count
print('欢迎使用点餐系统')
while login_count < 3:
username = input('请输入用户名:')
password = getpass.getpass('请输入密码:')
if username == admin_username and password == admin_password:
print('登录成功')
return 'admin'
else:
login_count += 1
print('用户名或密码错误,请重新输入')
print('登录失败')
return None
# 显示菜单函数
def show_menu():
print('菜单列表:')
for i, item in enumerate(menu):
print(f'{i+1}. {item["name"]} - {item["price"]}元')
# 添加订单函数
def add_order():
table_number = input('请输入桌号:')
if table_number not in orders:
orders[table_number] = []
while True:
show_menu()
choice = input('请输入菜品编号(0结束):')
if not choice.isdigit():
print('输入有误,请重新输入')
continue
choice = int(choice)
if choice < 0 or choice > len(menu):
print('输入有误,请重新输入')
continue
if choice == 0:
break
dish = menu[choice-1]
orders[table_number].append(dish)
print(f'{dish["name"]}已加入订单')
print('订单已提交')
# 取消订单函数
def cancel_order():
table_number = input('请输入桌号:')
if table_number in orders:
del orders[table_number]
print('订单已取消')
else:
print('该桌号没有订单')
# 查看订单函数
def show_order():
table_number = input('请输入桌号:')
if table_number in orders:
print(f'{table_number}号桌订单:')
for dish in orders[table_number]:
print(f'{dish["name"]} - {dish["price"]}元')
print(f'总计:{sum([dish["price"] for dish in orders[table_number]])}元')
else:
print('该桌号没有订单')
# 管理员子系统函数
def admin_system():
while True:
print('管理员子系统')
print('1. 查看菜单')
print('2. 添加菜品')
print('3. 修改菜品')
print('4. 删除菜品')
print('5. 查看订单')
print('0. 返回上级菜单')
choice = input('请选择:')
if not choice.isdigit():
print('输入有误,请重新输入')
continue
choice = int(choice)
if choice == 0:
break
elif choice == 1:
show_menu()
elif choice == 2:
name = input('请输入菜名:')
price = input('请输入价格:')
menu.append({'name': name, 'price': int(price)})
print('菜品已添加')
elif choice == 3:
index = input('请输入要修改的菜品编号:')
if not index.isdigit() or int(index) < 1 or int(index) > len(menu):
print('输入有误,请重新输入')
continue
name = input('请输入新菜名:')
price = input('请输入新价格:')
menu[int(index)-1] = {'name': name, 'price': int(price)}
print('菜品已修改')
elif choice == 4:
index = input('请输入要删除的菜品编号:')
if not index.isdigit() or int(index) < 1 or int(index) > len(menu):
print('输入有误,请重新输入')
continue
del menu[int(index)-1]
print('菜品已删除')
elif choice == 5:
show_order()
else:
print('输入有误,请重新输入')
# 客户子系统函数
def customer_system():
while True:
print('客户子系统')
print('1. 查看菜单')
print('2. 添加菜品')
print('3. 取消订单')
print('4. 查看订单')
print('0. 返回上级菜单')
choice = input('请选择:')
if not choice.isdigit():
print('输入有误,请重新输入')
continue
choice = int(choice)
if choice == 0:
break
elif choice == 1:
show_menu()
elif choice == 2:
add_order()
elif choice == 3:
cancel_order()
elif choice == 4:
show_order()
else:
print('输入有误,请重新输入')
# 主程序函数
def main():
while True:
choice = input('请选择登录方式(1. 客户 2. 管理员 0. 退出):')
if choice == '1':
customer_system()
elif choice == '2':
role = login()
if role == 'admin':
admin_system()
elif choice == '0':
break
else:
print('输入有误,请重新输入')
print('已退出系统')
if __name__ == '__main__':
main()
```
该代码实现了一个简单的点餐系统,包括登录、查看菜单、添加菜品、修改菜品、删除菜品、查看订单、取消订单等功能。但是该代码并未实现图形化界面,需要在代码基础上进行修改才能适配具体的使用场景。