咖啡店管理系统设计与实现C语言,答粉丝问|GUI编程实例化之咖啡店点单系统

前言

接到粉丝在圈子里留言想知道怎么写一个简单的咖啡店点单系统,大致满足以下要求:进入程序会有欢迎界面,然后显示咖啡品种以及对应单价,可以搜索相应商品输入数量进行点单,需要会员打折功能,能记录每天的营业额总量。刚刚拿到这个任务还觉得难到爆,其实只是自己基本功不扎实,潜心学习两三天后再来看这个任务就突然觉得好简单,话不多说,直接来看怎么写的吧。

代码部分

我们先引用我们要用的库。

from tkinter import *

from tkinter import messagebox

再将这个程序需要的常量定义好,会员卡号我们用一个列表来存(主要是笔者还在学习阶段,数据库应用没有太多经验,真是书到用时方恨少啊),菜单和价格用两个列表来存,序号是相对应的。

member = [11111,22222]  #记录会员号的一个列表

todays_income = 0  #每一天的初始营业额

order = ['埃斯美拉达庄园瑰夏咖啡','麝香咖啡','圣赫勒拿咖啡','圣伊内斯状元咖啡','蓝山咖啡','Plans咖啡','摩洛凯岛咖啡','Espinoza咖啡','星巴克波旁咖啡','尤科特选咖啡']

price = [120,108,98,85,65,50,45,40,35,30]

然后再写一些要用到的函数,将其放在对应的按钮里面,由上面的要求可以知道,我们要写的函数包括了查看今天的营业额,新的一天开始了将昨天的清零,结账。

def today_income():#查看今天的营业额

messagebox.showinfo('今日营业额','今日营业额为{}'.format(todays_income))

def new_day():

global todays_income

if messagebox.askquestion('新的一天到了吗?','确定将当前营业额重置为0元吗'):

todays_income = 0

def settle_accounts():

check()

global todays_income

s = 0

for i in range(10):

s += price[i]*ordered[i]

if int(en_menber.get()) in member:

if messagebox.askquestion('付款确认','您是本店尊敬的vip会员,享受八八折优惠,应付{}元,实际应支付{}元,请确认\n祝您生活愉快!'.format(s,s*0.88)):

todays_income += s*0.88

messagebox.showinfo('点单成功','您已经成功点购商品,请等待')

else:

messagebox.showinfo('点单失败','您已经取消本次交易,欢迎下次光临')

else:

if messagebox.askquestion('付款确认','尊敬的客户,您本次点单应支付{}元,请确认。\n祝您生活愉快'.format(s)):

todays_income += s

messagebox.showinfo('点单成功', '您已经成功点购商品,请等待')

else:

messagebox.showinfo('点单失败', '您已经取消本次交易,欢迎下次光临')

def check():

ordered[0] = int(en1.get())

ordered[1] = int(en2.get())

ordered[2] = int(en3.get())

ordered[3] = int(en4.get())

ordered[4] = int(en5.get())

ordered[5] = int(en6.get())

ordered[6] = int(en7.get())

ordered[7] = int(en8.get())

ordered[8] = int(en9.get())

ordered[9] = int(en10.get())

接下来就是窗口的设计了,我们用for循环将商品名称和单价直接展示, 由于每种商品点的数量我们需要知道,所以每个输入框将其单独储存在一个变量里而且用IntVar限制输入数据类型,以方便我们用get()方法调用和计算,同时我们创建一个长度为10的列表ordered来储存每种商品点的数量,然后可以结合前面的price列表来计算总价。

window = Tk()

window.title('小王咖啡店点单系统')

Label(window,text = '商品名称').grid(row = 1,column = 1)

Label(window,text = '单价 元/杯').grid(row  = 1,column = 4)

Label(window,text = '数量').grid(row = 1,column = 7)

for i in range(10):

Label(window,text = order[i]).grid(row  = i+2,column = 1)

Label(window,text = str(price[i])).grid(row  = i+2,column = 4)

ordered = []

en1 = Entry(window,text = 0,textvariable = IntVar(),width = 3)

en1.grid(row = 2,column = 7)

ordered.append(en1.get())

en2 = Entry(window,text = 0,textvariable = IntVar(),width = 3)

en2.grid(row = 3,column = 7)

ordered.append(en2.get())

en3 = Entry(window,text = 0,textvariable= IntVar(),width = 3)

en3.grid(row = 4,column = 7)

ordered.append(en3.get())

en4 = Entry(window,text = 0,textvariable = IntVar(),width = 3)

en4.grid(row = 5,column = 7)

ordered.append(en4.get())

en5 = Entry(window,text = 0,textvariable = IntVar(),width = 3)

en5.grid(row = 6,column = 7)

ordered.append(en5.get())

en6 = Entry(window,text = 0,textvariable = IntVar(),width = 3)

en6.grid(row = 7,column = 7)

ordered.append(en6.get())

en7 = Entry(window,text = 0,textvariable = IntVar(),width = 3)

en7.grid(row = 8,column = 7)

ordered.append(en7.get())

en8 = Entry(window,text = 0,textvariable= IntVar(),width = 3)

en8.grid(row = 9,column = 7)

ordered.append(en8.get())

en9 = Entry(window,text = 0,textvariable = IntVar(),width = 3)

en9.grid(row = 10,column = 7)

ordered.append(en9.get())

en10 = Entry(window,text = 0,textvariable = IntVar(),width = 3)

en10.grid(row = 11,column = 7)

ordered.append(en10.get())

我们最后添加会员相关组件,将之前写好的函数镶嵌到按钮组件里面去,整个程序就大功告成,最后运行即可。

Label(window,text = '请输入你的会员卡号').grid(row = 12,column = 1)

en_menber = Entry(window,textvariable = IntVar(),width = 25)

en_menber.grid(row = 12,column = 4)

Button(window,text = '结算',command =  settle_accounts).grid(row = 13,column = 1)

Button(window,text ='查看今日营业额',command =  today_income).grid(row = 13,column = 2)

Button(window,text = '今日营业结束',command =  new_day).grid(row = 13,column = 5)

if __name__ =="__main__" :

if messagebox.askokcancel('欢迎','欢迎光临小王咖啡店,按下确认进行点单\n请在需要的商品后面输入相应的数字即可'):

window.mainloop()

写在最后

笔者最后并没有通过搜索功能来进行点单,而是通过最简单的直接输入数量提交订单,省去了很多的代码量,搜索功能可以通过条件语句创建子窗口,再从子窗口传入数据来结账,笔者觉得太麻烦了,选择了最简单的方法展示给大家,下面是程序截图:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值