C#实现简单点餐系统
实现简单点餐系统剖析:
- 设计界面(给菜品的序号(index),名称(name),单价(money)加上Tag以便获取此控件中的数据)、设计界面所涉及到的控件(FlowLayoutPAnel,label,button)
- 根据菜品数量来添加对应的菜品序号按钮(有几个菜品添加几个按钮)(用到foreach遍历循环)
- 通过2个foreach遍历控件来获取菜品的序号并将菜品的序号添加到按钮中
- 添加按钮单击事件(代码实现添加事件)(实现单击按钮将按钮序号对应的菜名和菜品价格分别添加到需要的位置)
- 添加已点菜单中菜名的单击事件(实现点击已点菜单中的菜品让其删除并且减少相应的消费金额)
此案例中所用到Tag属性以及sender参数解释:
- Tag:获取或设置包含有关控件的数据的对象
- sender:事件发起者是谁,谁就是sender
注意:要用sender参数必须先用sender参数的类型接收sender
代码创建对象以及代码添加事件:
- 代码创建对象
Label lb = new Label();
- 代码添加事件
btn.Click += But_Click;
步骤:先键入需要添加事件的对象然后键入点选择需要的事件+=Tab
Tag的用法(先存后取):
- 将需要的属性添加到Tag中
- 在需要时只需把Tag赋值给对象即可获取到需要的属性
设计界面:
具体代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Test_Order_system
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){this.CenterToScreen();//将窗体显示在屏幕中央//先设计界面//获取FlowLayoutPanel中的控件对应数据以及区分各个控件则需要给FlowLayoutPanel中控件加tag标签// 序号:index 菜名:name 价格:money//根据菜品数量来添加对应的菜品序号按钮(有几个菜品添加几个按钮)foreach (Control item in flowLayoutPanel1.Controls)//获取FlowLayoutPanel1中的控件{//创建对象(new)按钮Button btn = new Button();//实例化btn.Size = new Size(70,45);//设置按钮的大小btn.Font = new Font("黑体",20f);//设置按钮文本颜色btn.Tag = item;//将item控件装进tag中//要将菜品的序号添加到but中,但是菜品序号在item的控件中,则需要再次获取item中的控件foreach (Control lab in item.Controls)//在item控件集合中寻找控件命名为lab{if (lab.Tag.ToString()=="index"){btn.Text = lab.Text;//将获取到的菜品序号添加到btn中}}flowLayoutPanel2.Controls.Add(btn);//将按钮添加到FlowLayoutPanel2中btn.Click += But_Click;//添加单击事件}}int count = 0;//单击相应按钮时将该按钮序号所对应的菜品名称添加到FloowLayoutPanel3中,将总金额添加到label33中private void But_Click(object sender, EventArgs e){//因为菜品名称以及单价在item控件中,所以需要获取到item控件//在当前事件中不能直接获取item控件所以需要给btn添加标签,将item控件装进btn标签中//然后在当前事件中通过对sender接收其次来获取item控件//sender:事件发起者是谁谁就是sender(当点击第一个按钮,第一个按钮就是sender)Button clickbtn=(Button)sender;//先将sender用button接收//通过Tag间接拿到item控件Control item2 = (Control)clickbtn.Tag;//将item用控件接收Label lb = new Label();lb.Font = new Font("黑体",12f,FontStyle.Bold);foreach (Control lab3 in item2.Controls){if (lab3.Tag.ToString()=="name"){lb.Text=lab3.Text;//将获取到的菜名添加到lb中}if (lab3.Tag.ToString()=="money"){count+=int.Parse(lab3.Text);lb.Tag = lab3.Text;}}flowLayoutPanel3.Controls.Add(lb);//将lb添加到FlowLayoutPanel3中label33.Text = count+"元";//将count赋值给label33lb.Click += Lb_Click;}//实现点击已点菜单中的菜品让其删除并且减少相应的消费金额private void Lb_Click(object sender, EventArgs e){Label lb2=(Label)sender;//sender就是事件发起者lb,所以用Label接收//删除已点菜品lb2.Dispose();//减少相应的消费金额count-=int.Parse(lb2.Tag.ToString());label33.Text = count+"元";//将count赋值给label33}}
}
效果图:
加载时:
点击按钮后
点击已点菜单中的烤腰花和烤板筋
书山有路勤为径,学海无涯苦作舟!!!
C#实现简单点餐系统相关推荐
- android简单点餐系统_微信点餐和扫码点餐系统能为商家带来什么?
近几年来,我们去餐厅吃饭的时候可能会发现,很多餐厅都安装扫码点餐系统.和微信点餐系统,相比传统餐饮软件及传统模式,这带来的不只是节省人工.一套系统稳定.功能齐全的微信点餐系统,对餐饮管理而言,能够降低 ...
- c语言点餐系统感悟,一个简单C语言点餐系统的学习心得
首先附上源代码: 1 #include 2 3 voidmain_munu(){4 //打印主菜单 5 char a[6][20]={"菜单","凉菜",&qu ...
- Java实现简单的KFC点餐系统(未实现可视化)
一.实现功能预览 1.正常餐品结算和找零. 2.基本套餐结算和找零. 3.使用优惠劵购买餐品结算和找零. 4.可在一定时间段参与店内活动. 5.模拟打印小票的功能(写到文件中). 餐品有: (1)香辣 ...
- 用c语言编写简单的餐厅点餐系统(带后台)
这应该是比较简单的c语言程序了,因为学校c语言结课结的早,我当时才学到结构体指针,所以我就把我当时能运用的知识点全用在这个程序上了.虽说这个程序对当时的我来说是天花板,但是当我继续学习,我逐渐发现这个 ...
- 微信扫码点餐系统制作流程简单,方便客户下单
扫码点餐,对于餐饮行业来说,是必不可少的重要的一环,它可以帮助顾客点餐.顾客通过微信扫码,就可以获取到菜单,查看菜品的图片以及优惠活动,操作十分简单,而且效率比传统菜单要好很多. 对于新手来说,不会制 ...
- WinFormreportViewer(rdlc)报表[列表]的使用(一)(附源码示例) 之配餐系统的开发
紧接着"WinForm"reportViewer报表[矩阵]的使用(一)(附源码示例)" 之配餐系统的开发"这篇文章,此文与大家分享的是在 配餐系统的开发 中使 ...
- [课程设计]Scrum 2.5 多鱼点餐系统开发进度(下单一览页面-菜式添加框架设计)
Scrum 2.5 多鱼点餐系统开发进度 (下单一览页面-菜式添加框架设计) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题 ...
- 小郡肝火锅点餐系统——项目文档
小组成员:李靖 李凤莲 课程设计报告 学 号 201610411111 姓 名 李 靖 班 级 ...
- WinFormreportViewer报表[矩阵]的使用(一)(附源码示例) 之配餐系统的开发
winform开发中,报表在大多管理软件和数据分析中是必备的一个功能,追求简单.快捷.美观的报表开发是大家在做此类应用时比较关心的问题.就winform中的报表控件:大家熟知.不错的有reportVi ...
- 手机点餐系统概述_疫情之下,无接触点餐模式再成热搜,扫码点餐系统能不能普及?...
近期,广东省逐步恢复堂食,提倡隔桌就餐!宁波.成都等地餐饮店也在慢慢复工,倡导隔桌就餐,间距至少1.5米.随着复工复产政策的执行,这类情况也正在其他各地重演. 受疫情影响,餐饮行业面临巨大改革,其中线 ...
最新文章
- python自学攻略-Python自学攻略
- Boost::context模块callcc的throw测试程序
- mysql结构优化_MySQL优化----数据库结构优化
- 使用栈实现中缀表达式转为后缀表达式和后缀表达式的求解
- 21 FI配置-财务会计-为非征税事务分配税务代码
- Android 简介:Android SDK 和开发框架简介
- shell 常用命令
- 数据结构与算法 完整版双链表
- B00004 atoi函数
- 用代码理解ObjC中的发送消息和消息转发
- Android 四大组件学习之ContentProvider三
- 引导页onboarding页面Snapkit实现
- Mysql 日历数据表
- Sentinel-2(哨兵2号)数据下载及预处理
- windows图片和传真查看器
- html2canvas 截图丢失部分元素的问题
- 2013年12月甘肃省广播电台网络影响力排名
- 2014-07-23 .NET实现微信公众号接入
- MISRA 2004 VS MISRA 2012
- 军队文职(数学2+物理)——线性代数 3、矩阵的行列式值(一)
热门文章
- 斩断***黑手:如何使用IceSword冰刃
- 不死僵尸木马lpt7.asp.asp与lpt5.cnzzz.asp的删除方法
- 今日芯声 | 印度 “真香”?苹果三家制造商及三星申请印度智能手机生产计划...
- c语言程序中a表示什么区别,C语言中if(!a)表示什么意思?
- 微信小程序,短信验证码登录,设置密码,密码强度校验
- android电视APP开机自启动,安卓电视、机顶盒如何开机自动启动看电视直播-今日头条...
- UCI-HAR数据集CNN分类
- [rust学习笔记]错误处理
- 基于Springboot+Vue开发前后端端分离农产品进销存系统
- Python快速入门(1)常用容器和内置函数介绍