您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Python怎么制作一个简易的点菜系统
## 一、项目概述
在餐饮行业中,一个高效的点菜系统能显著提升运营效率。本文将使用Python开发一个基于控制台的简易点菜系统,包含以下核心功能:
1. 菜品管理(添加/删除/修改)
2. 顾客点餐功能
3. 订单计算与账单生成
4. 简单数据持久化存储
## 二、技术选型
```python
# 主要技术栈
import json # 数据存储
from tabulate import tabulate # 表格展示
import os # 文件操作
menu = {
"001": {"name": "鱼香肉丝", "price": 38, "category": "热菜"},
"002": {"name": "宫保鸡丁", "price": 42, "category": "热菜"}
}
orders = {
"table1": [
{"dish_id": "001", "quantity": 2},
{"dish_id": "002", "quantity": 1}
]
}
menu_manager.py
- 菜品管理order_system.py
- 点餐逻辑bill_generator.py
- 账单生成main.py
- 主程序入口def load_menu():
"""从文件加载菜单数据"""
if os.path.exists("menu.json"):
with open("menu.json", "r") as f:
return json.load(f)
return {}
def save_menu(menu_data):
"""保存菜单到文件"""
with open("menu.json", "w") as f:
json.dump(menu_data, f, indent=4)
def add_dish(menu_data):
"""添加新菜品"""
dish_id = input("输入菜品编号: ").strip()
if dish_id in menu_data:
print("该编号已存在!")
return
name = input("菜品名称: ").strip()
price = float(input("价格: "))
category = input("分类: ").strip()
menu_data[dish_id] = {
"name": name,
"price": price,
"category": category
}
save_menu(menu_data)
print("添加成功!")
def take_order(menu_data):
"""处理顾客点餐"""
table_id = input("请输入桌号: ")
current_order = []
while True:
print("\n当前菜单:")
display_menu(menu_data)
dish_id = input("输入菜品编号(输入q结束): ").strip()
if dish_id.lower() == 'q':
break
if dish_id not in menu_data:
print("无效的菜品编号!")
continue
quantity = int(input("输入数量: "))
current_order.append({
"dish_id": dish_id,
"quantity": quantity
})
if current_order:
save_order(table_id, current_order)
print(f"桌号{table_id}点餐完成!")
def save_order(table_id, order_items):
"""保存订单数据"""
orders = load_orders()
orders[table_id] = order_items
with open("orders.json", "w") as f:
json.dump(orders, f, indent=4)
def generate_bill(table_id):
"""生成指定桌号的账单"""
orders = load_orders()
menu = load_menu()
if table_id not in orders:
print("该桌号无订单记录!")
return
print(f"\n==== 桌号 {table_id} 账单 ====")
total = 0
bill_data = []
for item in orders[table_id]:
dish = menu[item["dish_id"]]
subtotal = dish["price"] * item["quantity"]
bill_data.append([
dish["name"],
dish["price"],
item["quantity"],
subtotal
])
total += subtotal
print(tabulate(bill_data,
headers=["菜品", "单价", "数量", "小计"],
tablefmt="grid"))
print(f"\n总计: ¥{total:.2f}")
print("="*30)
def main():
menu_data = load_menu()
while True:
print("\n=== 简易点菜系统 ===")
print("1. 菜品管理")
print("2. 顾客点餐")
print("3. 生成账单")
print("4. 退出系统")
choice = input("请选择操作: ").strip()
if choice == "1":
manage_menu(menu_data)
elif choice == "2":
take_order(menu_data)
elif choice == "3":
table_id = input("输入桌号: ")
generate_bill(table_id)
elif choice == "4":
print("感谢使用!")
break
else:
print("无效输入!")
if __name__ == "__main__":
main()
# 测试添加菜品
add_dish({
"003": {
"name": "麻婆豆腐",
"price": 28,
"category": "热菜"
}
})
# 测试点餐流程
test_order = {
"table5": [
{"dish_id": "001", "quantity": 1},
{"dish_id": "003", "quantity": 2}
]
}
save_order("table5", test_order["table5"])
# 验证账单生成
generate_bill("table5")
# Tkinter示例
from tkinter import *
root = Tk()
Label(root, text="菜品管理").pack()
root.mainloop()
# SQLite示例
import sqlite3
conn = sqlite3.connect('restaurant.db')
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS menu (id TEXT PRIMARY KEY, name TEXT, price REAL)")
# Flask示例
from flask import Flask
app = Flask(__name__)
@app.route('/menu')
def show_menu():
return jsonify(load_menu())
通过本项目的开发,我们实现了:
完整代码已托管至GitHub(示例仓库地址),包含详细的注释和README使用说明。
附录:完整代码结构
restaurant_system/
├── data/
│ ├── menu.json
│ └── orders.json
├── modules/
│ ├── __init__.py
│ ├── menu_manager.py
│ ├── order_system.py
│ └── bill_generator.py
├── main.py
└── requirements.txt
安装依赖:pip install tabulate
“`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。