问题

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

方法

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

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()

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

Python图形界面实现咖啡店点单系统相关推荐

  1. python界面开发工具-python图形界面开发用什么

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助. Python 的 UI 开发工具包 Kivy(推荐学习:Python视频教 ...

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

    前言 接到粉丝在圈子里留言想知道怎么写一个简单的咖啡店点单系统,大致满足以下要求:进入程序会有欢迎界面,然后显示咖啡品种以及对应单价,可以搜索相应商品输入数量进行点单,需要会员打折功能,能记录每天的营 ...

  3. python tkinter界面布局,python图形界面tkinter布局那些事

    布局 任何界面都有自己的布局风格,有些是横向布局,有些是纵向布局,有些是流水布局,还有些是网格布局,总之布局就是一种考虑如何放置元素或者组件的一种说明方式. 包裹(包装)布局 thinter中使用pa ...

  4. python图形界面摇号

    python图形界面摇号练习 输入用户自己想要的号码,开始运行系统会随机输出一个号码. 示例: from tkinter import * import random window = Tk() wi ...

  5. python图形界面开发用什么

    作为Python开发者,你迟早都会用到图形用户界面来开发应用.本文将推荐一些 Python GUI 框架,希望对你有所帮助. Python 的 UI 开发工具包 Kivy Kivy是一个开源工具包能够 ...

  6. python简单编程例子-中文方便就用中文编程!Python图形界面开发实例

    原标题:中文方便就用中文编程!Python图形界面开发实例 之前做的一个Python小程序,功能很简单,面对用户群也很窄,是五笔编码编.校人员使用的五笔编码编辑器. 这样的"周末" ...

  7. python图形界面教程_图形教程

    python图形界面教程 众所周知,我们可以借助Java库制作游戏,这些库为我们提供制作游戏所需的图形. 因此,今天我将开始一个关于Java图形的非常新的部分. 我之前曾发表过有关如何制作所得税计算器 ...

  8. python写前端图形界面_如何Tkinter模块编写Python图形界面

    一.为何使用Tkinter而非PyQt 众所周知,在Python中创建图形界面程序有很多种的选择,其中PyQt和wxPython都是很热门的模块包,这些第三方的图形界面模块功能强大.配置丰富,界面美观 ...

  9. Python图形界面开发框架常用的八款工具包

    1.Python的UI开发工具包 Kivy 2.Python的GUI开发工具 Flexx 3.Qt库的Python绑定 PyQt 4.Python图形开发包 wxPython 5.Tk图形用户界面 T ...

  10. 【GUI】Python图形界面(一)

    Python图形界面 一.第一个界面 1. 了解模块代码的组成 导入库.(PySimpleGUI) 定义布局,确定行数 创建窗口 事件循环 关闭窗口 # 1.导入库 import PySimpleGU ...

最新文章

  1. android英文文献翻译,有关android技术英文文献翻译
  2. OpenGL和D3D的区别
  3. C++多线程快速入门(三):生产者消费者模型与条件变量使用
  4. 开启 JM 的 trace 功能
  5. 国产主可控的嵌入式仿真测试软件SkyEye与可信编译器L2C的核心翻译介绍
  6. 从零开始学keras之生成对抗网络GAN
  7. 每天一个linux命令(30):cal 命令
  8. c# string 转 datetime_利用swig封装C++的dll为C#方便使用
  9. winform TreeView节点中的CheckBox 禁用
  10. 禁用win10自动更新bat脚本
  11. Miracle密码算法开源库(十三)分析 :mrflsh4.c
  12. 关于word的样式类型
  13. html+css 制作简单QQ登录页面
  14. ad中按钮开关的符号_电工新手必经之路:按钮开关结构原理及安装
  15. 单总线是什么以及特点、协议 、使用方法
  16. 【Shader】实验02——后处理实现景深效果
  17. Dubbo的使用和原理
  18. 美仲裁协会大力推进网络仲裁 AI或直接助力仲裁裁决
  19. Cart决策树算法原理学习
  20. 做一个自由又自律的人,靠势必实现的决心认真地活着

热门文章

  1. #《神奇动物:邓布利多之谜》
  2. jscriptbug
  3. 有关计算机病毒种类书籍,计算机病毒的分类
  4. wampserver 的Apache启动错误提示:The requested URL / was not found on this server
  5. 一个像素的旅行,卷积网络可视化项目火了:点点鼠标就能看懂的扫盲神器
  6. rocketmq 消息删除_RocketMq Topic创建和删除
  7. 初中计算机操作题五环,第五课 电脑出算术题 课件
  8. 曾国藩:人生的三个阶段,做对了,剩下就是好运气
  9. 【每日经典】李嘉诚:赚钱可以无处不在、无时不有
  10. 整合+策略:微网通联的GMP平台如何帮助企业搭建统一智慧通信架构