C#實現簡單點餐系統

本文實例為大傢分享瞭C#實現簡單點餐系統的具體代碼,供大傢參考,具體內容如下

實現簡單點餐系統剖析

1、設計界面(給菜品的序號(index),名稱(name),單價(money)加上Tag以便獲取此控件中的數據)、設計界面所涉及到的控件(FlowLayoutPAnel,label,button)
2、根據菜品數量來添加對應的菜品序號按鈕(有幾個菜品添加幾個按鈕)(用到foreach遍歷循環)
3、通過2個foreach遍歷控件來獲取菜品的序號並將菜品的序號添加到按鈕中
4、添加按鈕單擊事件(代碼實現添加事件)(實現單擊按鈕將按鈕序號對應的菜名和菜品價格分別添加到需要的位置)
5、添加已點菜單中菜名的單擊事件(實現點擊已點菜單中的菜品讓其刪除並且減少相應的消費金額)

此案例中所用到Tag屬性以及sender參數解釋:

  • Tag:獲取或設置包含有關控件的數據的對象
  • sender:事件發起者是誰,誰就是sender

註意:要用sender參數必須先用sender參數的類型接收sender

代碼創建對象以及代碼添加事件

  • 代碼創建對象Label lb = new Label();
  • 代碼添加事件btn.Click += But_Click;步驟:先鍵入需要添加事件的對象然後鍵入點選擇需要的事件+=Tab

Tag的用法(先存後取):

1、需要的屬性添加到Tag中
2、在需要時隻需把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賦值給label33
            lb.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
        }
    }
}

效果圖

加載時

點擊按鈕後

點擊已點菜單中的烤腰花和烤板筋

以上就是本文的全部內容,希望對大傢的學習有所幫助,也希望大傢多多支持WalkonNet。

推薦閱讀: