新闻中心
自助餐贬责软件是餐饮行业数字化转型的贫穷用具,大约匡助餐厅高效贬责菜品库存、主顾流量和财务结算。本文将先容一个基于Python的浅易自助餐贬责系统的已毕,包含中枢功能模块和代码示例。
系统功能缱绻
中枢功能模块
菜品贬责:增调动查菜品信息(称呼、价钱、分类、库存)
主顾贬责:记载主顾逝世信息
订单贬责:处理自助餐订单(取餐、结算)
库存贬责:及时监控菜品库存
报表统计:生成贸易数据报表
中枢代码已毕
1. 基础数据模子
伸开剩余94%python
from dataclasses import dataclass
from typing import List, Dict, Optional
import datetime
@dataclass
class Dish:
"""菜品数据模子"""
id: int
name: str
price: float
category: str # 举例:热菜、凉菜、甜点等
stock: int # 库存数目
is_active: bool = True # 是否在售
@dataclass
class Customer:
"""主顾数据模子"""
id: int
name: Optional[str] = None
phone: Optional[str] = None
membership: bool = False # 是否会员
@dataclass
class OrderItem:
"""订单项数据模子"""
dish_id: int
quantity: int = 1
timestamp: datetime.datetime = datetime.datetime.now()
@dataclass
class Order:
"""订单数据模子"""
id: int
customer_id: Optional[int] = None
items: List[OrderItem] = None
total_amount: float = 0.0
status: str = "active" # active/completed/cancelled
timestamp: datetime.datetime = datetime.datetime.now()
2. 自助餐贬责系统中枢类
python
class BuffetManagementSystem:
def __init__(self):
self.dishes: Dict[int, Dish] = {}
self.customers: Dict[int, Customer] = {}
self.orders: Dict[int, Order] = {}
self.next_dish_id = 1
self.next_customer_id = 1
self.next_order_id = 1
# 菜品贬责
def add_dish(self, name: str, price: float, category: str, stock: int) -> int:
"""添加新菜品"""
dish = Dish(
id=self.next_dish_id,
name=name,
price=price,
category=category,
stock=stock
)
self.dishes[self.next_dish_id] = dish
self.next_dish_id += 1
return dish.id
def update_dish_stock(self, dish_id: int, quantity: int) -> bool:
"""更新菜品库存"""
if dish_id not in self.dishes:
return False
dish = self.dishes[dish_id]
if dish.stock + quantity < 0:
return False # 库存不成为负
dish.stock += quantity
return True
# 主顾贬责
def add_customer(self, name: str = None, phone: str = None, membership: bool = False) -> int:
"""添加新主顾"""
customer = Customer(
id=self.next_customer_id,
name=name,
phone=phone,
membership=membership
)
self.customers[self.next_customer_id] = customer
self.next_customer_id += 1
return customer.id
# 订单贬责
def create_order(self, customer_id: Optional[int] = None) -> int:
"""创建新订单"""
order = Order(
id=self.next_order_id,
customer_id=customer_id,
items=[],
total_amount=0.0
)
self.orders[self.next_order_id] = order
self.next_order_id += 1
return order.id
def add_item_to_order(self, order_id: int, dish_id: int, quantity: int = 1) -> bool:
"""向订单添加菜品"""
if order_id not in self.orders or dish_id not in self.dishes:
return False
order = self.orders[order_id]
dish = self.dishes[dish_id]
if dish.stock < quantity:
return False # 库存不及
# 查验是否已存在调换菜品
existing_item = next((item for item in order.items if item.dish_id == dish_id), None)
if existing_item:
existing_item.quantity += quantity
else:
order.items.append(OrderItem(dish_id=dish_id, quantity=quantity))
# 更新总价
order.total_amount += dish.price * quantity
# 减少库存
dish.stock -= quantity
return True
def complete_order(self, order_id: int) -> bool:
"""完成订单"""
if order_id not in self.orders:
return False
order = self.orders[order_id]
if order.status != "active":
return False # 订单景色不正确
order.status = "completed"
return True
# 报表统计
def get_revenue_report(self, start_date: datetime.date, end_date: datetime.date) -> Dict[str, float]:
"""生成收入报表"""
report = {
"total_revenue": 0.0,
"category_revenue": {} # 按菜品分类统计
}
for order in self.orders.values():
if order.status != "completed":
continue
order_date = order.timestamp.date()
if not (start_date <= order_date <= end_date):
continue
report["total_revenue"] += order.total_amount
# 统计各分类收入
for item in order.items:
dish = self.dishes.get(item.dish_id)
if dish:
category = dish.category
revenue = dish.price * item.quantity
report["category_revenue"][category] = report["category_revenue"].get(category, 0.0) + revenue
return report
3. 浅易用户界面已毕
python
class BuffetCLI:
def __init__(self, system: BuffetManagementSystem):
self.system = system
def run(self):
"""敕令行界面主轮回"""
while True:
print("\n自助餐贬责系统")
print("1. 添加菜品")
print("2. 更新库存")
print("3. 添加主顾")
print("4. 创建订单")
print("5. 向订单添加菜品")
print("6. 完成订单")
print("7. 生成收入报表")
print("0. 退出")
choice = input("请遴荐操作: ")
if choice == "1":
self.add_dish()
elif choice == "2":
self.update_stock()
elif choice == "3":
self.add_customer()
elif choice == "4":
self.create_order()
elif choice == "5":
self.add_item_to_order()
elif choice == "6":
self.complete_order()
elif choice == "7":
self.generate_report()
elif choice == "0":
break
else:
print("无效遴荐,请重试")
def add_dish(self):
name = input("菜品称呼: ")
try:
price = float(input("价钱: "))
stock = int(input("库存数目: "))
except ValueError:
print("输入无效,请输入数字")
return
category = input("分类(热菜/凉菜/甜点等): ")
dish_id = self.system.add_dish(name, price, category, stock)
print(f"得胜添加菜品,ID: {dish_id}")
# 其他样式已毕肖似,简化展示...
系统推广提议
数据库集成:将数据抓久化到SQLite或MySQL数据库
Web界面:使用Flask/Django确立Web贬责界面
支付系统:集成第三方支付接口
会员系统:已毕积分、扣头等会员功能
智能库存:基于历史数据瞻望库存需求
竣工示例运行
python
if __name__ == "__main__":
system = BuffetManagementSystem()
cli = BuffetCLI(system)
# 启动化一些测试数据
system.add_dish("红烧肉", 38.0, "热菜", 50)
system.add_dish("凉拌黄瓜", 18.0, "凉菜", 100)
system.add_dish("提拉米苏", 28.0, "甜点", 30)
cli.run()
纪念
本文已毕了一个基础的自助餐贬责系统,涵盖了中枢业务逻辑。骨子商用系统需要在此基础上进行以下雠校:
添加用户认证和权限贬责
已毕更完善的诞妄处理和日记记载
优化数据存储和检索性能
添加数据备份和还原机制
著述部分代码参考起头:https://github.com/17c13cm/sh/issues/9
著述部分代码参考起头:https://github.com/17c13cm/sh/issues/10
著述部分代码参考起头:https://github.com/17c13cm/sh/issues/11
著述部分代码参考起头:https://github.com/17c13cm/sh/issues/12开yun体育网
发布于:江西省