Python 点餐系统

71 阅读4分钟

做一个用于粥铺的点餐系统

任务分析

对于粥铺而言,供应的食物可以分为两大类,即饮品和主食。

饮品:豆浆3.0元 果汁4.5元 牛奶4.0元

主食:馒头1.1元 包子2.5元 鸡蛋2.0元 油条1.5元

该点餐系统应该具备客户点餐,费用预算,生成报表,导出报表等功能。

任务实施

设计入口程序

  • 显示软件功能,以便用户选择
  • 循环执行,以保证软件持续运行
while(True):
    print("\n--------欢迎使用点餐系统------")
    print("本软件提供如下功能:\n 1.点餐\n 2.打印报表 \n 3.导出报表\n4. 退出系统")
    choice = int(input("请输入数字选择一项功能:"))
    if choice == 1:
        orderMenu()  # 点餐

    elif choice == 2:
        printReport(OrderList)  # 打印报表

    elif choice == 3:
        exportReport(OrderList)  # 导出报表

    elif choice == 4:
        exit(0) # 退出
    else:
        print("请输入正确的序号1-4")

运行结果如图:

1.png

设计费用计算函数

根据用户选择的饮料和主食,费用预算模块计算餐食的总费用

def getcharge(drinkNo,foodNo):
    drinlCharge = 0.0  #饮料价格
    foodCharge = 0.0   #主食价格

    if drinkNo ==1:  #豆浆
        drinlCharge =3.0
    elif drinkNo ==2:  #果汁
        drinlCharge = 4.5
    elif drinkNo == 3:  #牛奶
        drinlCharge = 4.0
    if foodNo ==1:   #馒头
        foodCharge = 1.0
    elif foodNo ==2:  #包子
        foodCharge = 2.5
    elif foodNo ==3:  #鸡蛋
        foodCharge = 2.0
    elif foodNo ==4:  #油条
        foodCharge = 1.5
    return  drinlCharge + foodCharge

设计点餐程序

  • 实现客户点餐,点餐提示的功能
  • 获取当前的日期和时间
print("我们提供的饮品有:")
for drink in DrinkMenu:
    print(str(drink) + ":" + DrinkMenu[drink])
drinkNo = int(input("请输入序号(1-3)选择您需要的饮品:"))
print(drinkNo)
while drinkNo > 3:
    drinkNo = int(input("输入错误,请输入正确的序号!"))
print("您选择了:" + DrinkMenu[drinkNo] + "\n")
print("我们提供的食物有:")
for food in FoodMenu:
    print(str(food) + ":" + FoodMenu[food])
foodNo = int(input("请输入序号(1-3)选择您需要的食物:"))
print(foodNo)
while foodNo > 4:
    foodNo = int(input("输入错误,请输入正确的序号!"))
print("您选择了:" + FoodMenu[food] + "\n")

# 计算主食+饮品价格
totalPrice = getcharge(drinkNo,foodNo)
print("将马上为您上餐 %s 和 %s,此次您共消费 %.2f 元" % (DrinkMenu[drinkNo] , FoodMenu[foodNo] , totalPrice))

#日期时间
import time
OrderDate = time.strftime('%Y-%m-%d',time.localtime(time.time()))  #日期
OrderTime = time.strftime('%H:%M:%S', time.localtime(time.time()))  # 时间

OrderList.append([OrderDate,OrderTime,DrinkMenu[drinkNo],FoodMenu[foodNo],totalPrice])

运行结果如图:

7.png

设计打印报表模块

打印输出所有的点餐信息,包含点餐日期,点餐时间,饮料品种,主食品种和预订价格

def printReport(OrderList):
    totalPrice = 0
    print("\n-------统计报表-------\n")
    print("点餐日期 \t 点餐时间 \t 饮料 \t 主食 \t 花费(元)")
    for order in OrderList:
        totalPrice += order[4]
        print( order[0] + "\t" + order[1] + "\t%s\t%s\t%.2f" %(order[2],order[3],order[4]))
        print("\n累计收入%.2f元" % totalPrice)

运行结果如图:

4.png

设计导出报表模块

def exportReport(OrderList):
    dataFile = open("AllReport.txt","w",encoding="utf-8")
    for order in OrderList:
        dataFile.write( order[0] + "," + order[1] + "%s,%s,%.2f元\n" %(order[2],order[3],order[4]))
    dataFile.close()
    print("---- 成功导出报表 ----")

运行结果如图:

5.png

退出程序

exit(0)

运行结果如图:

6.png

完整代码

def getcharge(drinkNo,foodNo):
    drinlCharge = 0.0  #饮料价格
    foodCharge = 0.0   #主食价格


    if drinkNo ==1:  #豆浆
        drinlCharge =3.0
    elif drinkNo ==2:  #果汁
        drinlCharge = 4.5
    elif drinkNo == 3:  #牛奶
        drinlCharge = 4.0
    if foodNo ==1:   #馒头
        foodCharge = 1.0
    elif foodNo ==2:  #包子
        foodCharge = 2.5
    elif foodNo ==3:  #鸡蛋
        foodCharge = 2.0
    elif foodNo ==4:  #油条
        foodCharge = 1.5
    return  drinlCharge + foodCharge


DrinkMenu = {1:"豆浆", 2:"果汁",3:"牛奶"}
FoodMenu = {1:"馒头", 2:"包子",3:"鸡蛋",4:"油条"}
OrderList = []  #点餐列表

def orderMenu():
    # 点餐模块
    print("我们提供的饮品有:")
    for drink in DrinkMenu:
        print(str(drink) + ":" + DrinkMenu[drink])
    drinkNo = int(input("请输入序号(1-3)选择您需要的饮品:"))
    print(drinkNo)
    while drinkNo > 3:
        drinkNo = int(input("输入错误,请输入正确的序号!"))
    print("您选择了:" + DrinkMenu[drinkNo] + "\n")
    print("我们提供的食物有:")
    for food in FoodMenu:
        print(str(food) + ":" + FoodMenu[food])
    foodNo = int(input("请输入序号(1-3)选择您需要的食物:"))
    print(foodNo)
    while foodNo > 4:
        foodNo = int(input("输入错误,请输入正确的序号!"))
    print("您选择了:" + FoodMenu[food] + "\n")

    # 计算主食+饮品价格
    totalPrice = getcharge(drinkNo,foodNo)
    print("将马上为您上餐 %s 和 %s,此次您共消费 %.2f 元" % (DrinkMenu[drinkNo] , FoodMenu[foodNo] , totalPrice))

    #日期时间
    import time
    OrderDate = time.strftime('%Y-%m-%d',time.localtime(time.time()))  #日期
    OrderTime = time.strftime('%H:%M:%S', time.localtime(time.time()))  # 时间

    OrderList.append([OrderDate,OrderTime,DrinkMenu[drinkNo],FoodMenu[foodNo],totalPrice])

def printReport(OrderList):
    # 打印报表
    totalPrice = 0
    print("\n-------统计报表-------\n")
    print("点餐日期 \t 点餐时间 \t 饮料 \t 主食 \t 花费(元)")
    for order in OrderList:
        totalPrice += order[4]
        print( order[0] + "\t" + order[1] + "\t%s\t%s\t%.2f" %(order[2],order[3],order[4]))
        print("\n累计收入%.2f元" % totalPrice)

def exportReport(OrderList):
    # 导出报表
    dataFile = open("AllReport.txt","w",encoding="utf-8")
    for order in OrderList:
        dataFile.write( order[0] + "," + order[1] + "%s,%s,%.2f元\n" %(order[2],order[3],order[4]))
    dataFile.close()
    print("---- 成功导出报表 ----")

# 1. 入口程序
while(True):
    print("\n--------欢迎使用点餐系统------")
    print("本软件提供如下功能:\n 1.点餐\n 2.打印报表 \n 3.储存报表\n4. 退出系统")
    choice = int(input("请输入数字选择一项功能:"))
    if choice == 1:
        orderMenu()  # 点餐

    elif choice == 2:
        printReport(OrderList)  # 打印报表

    elif choice == 3:
        exportReport(OrderList)  # 存储报表

    elif choice == 4:
        exit(0) # 退出
    else:
        print("请输入正确的序号1-4")