第五章項目:體檢套餐

來源:互聯網
上載者:User

標籤:

表單搭建的如下:

 

 

一:實現的功能主要有以下幾個方面:

①:顯示指定套餐的項目明細

②:向指定套餐添加檢查項目資訊

③:刪除套餐中的項目資訊

④:建立套餐

 

二:建立體檢項目維護系統中的檢查項目類(HealthCheckItem)、體檢套餐類(HealthCheckSet)

HealthCheckItem類中的屬性說明如下:

Description:項目描述

Name:項目名稱

Price:項目價格

 

HealthCheckSet類中的屬性說明如下:

Items:HealthCheckItem的集合。採用泛型集合List<T>作為儲存HealthCheckItem的資料結構

Price:套餐價格,即Items屬性中檢查項目的價格之和

Name:套餐名稱

 

關鍵代碼如下:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Chapter05{   public  class HealthCheckItem    {             //項目名       private string name;       public string Name       {           get { return name; }           set { name = value; }       }       //價格       private int price;       public int Price       {           get { return price; }           set { price = value; }       }       //描述       private string description;       public string Description       {           get { return description; }           set { description = value; }       }       public HealthCheckItem(string name,int price,string description)       {           this.Name = name;           this.Price = price;           this.Description = description;       }    }}

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace Chapter05{   public  class HealthCheckSet    {       //無參構造中執行個體化items       public HealthCheckSet()       {           items = new List<HealthCheckItem>();       }       public HealthCheckSet(string name,List<HealthCheckItem>items)       {           this.Name = name;           this.Items = items;       }       //項目名       private string name;       public string Name       {           get { return name; }           set { name = value; }       }       //檢查項目       private List<HealthCheckItem> items;       public List<HealthCheckItem> Items       {           get { return items; }           set { items = value; }       }             //套餐價格       private int price;       public int Price       {           get { return price; }           set { price = value; }       }       //套餐價格計算方法       public void CalcPrice()       {           int totalPrice = 0;           foreach (HealthCheckItem item in items)           {               totalPrice += item.Price;           }           this.price = totalPrice;       }          }}

 

三:使用集合來儲存對應的資料,因為套餐 ,體檢項目有多個。定義一些容器來儲存資料。

        //定義幾個檢查項目        HealthCheckItem height, weight, sight, hearing, liverFun, ekg, bWaves, bloodPressure, bloodTest;        //定義一個系統預設檢查套餐“入學體檢”        HealthCheckSet setA;        //儲存所有體檢項目        List<HealthCheckItem> AllItems = new List<HealthCheckItem>();        //儲存套餐中的體檢項目        List<HealthCheckItem> items = new List<HealthCheckItem>();        //使用字典儲存套餐集合        public Dictionary<string, HealthCheckSet> HealthSet = new Dictionary<string, HealthCheckSet>();

四:初始化儲存在AllItems中的所有體檢項目

        //初始化檢查項目下拉框值        public void InitItems()        {            height = new HealthCheckItem("身高",5,"用於檢查身高");            weight = new HealthCheckItem("體重", 5, "用於檢查體重.");            sight = new HealthCheckItem("視力", 10, "用於檢查視力.");            hearing = new HealthCheckItem("聽力", 10, "用於檢查聽力.");            liverFun = new HealthCheckItem("肝功能", 50, "用於檢查肝功能.");            bWaves = new HealthCheckItem("B超", 30, "用於檢查B超.");            ekg = new HealthCheckItem("心電圖", 50, "用於檢查心電圖.");            bloodPressure = new HealthCheckItem("血壓", 20, "用於檢查血壓.");            bloodTest = new HealthCheckItem("血常規", 20, "用於檢查血常規.");            AllItems.Add(height);            AllItems.Add(weight);            AllItems.Add(sight);            AllItems.Add(hearing);            AllItems.Add(liverFun);            AllItems.Add(bWaves);            AllItems.Add(ekg);            AllItems.Add(bloodPressure);            AllItems.Add(bloodTest);            //添加請選擇            this.cboItems.Items.Add("請選擇");            foreach (HealthCheckItem item in AllItems)            {                cboItems.Items.Add(item.Name);            }                       //預設第一項被選中            this.cboItems.SelectedIndex = 0;        }

 

五:產生預設套餐資料 以及 載入體檢套餐下拉式清單

         //產生預設套餐資料        public void InitSets()        {            items = new List<HealthCheckItem>();            items.Add(height);            items.Add(weight);            items.Add(liverFun);            setA = new HealthCheckSet("入學體檢",items);            //計算套餐價格            setA.CalcPrice();            this.HealthSet.Add("入學體檢",setA);                }
        //載入體檢套餐下拉式清單        public void InitHealthSetList()        {             //首先清空套餐下拉式清單            this.cboSets.Items.Clear();                   //添加請選擇           this.cboSets.Items.Add("請選擇");            //將Dictionary的Key值綁定到combobox,作為combobox顯示的值           foreach (string key in this.HealthSet.Keys)           {               this.cboSets.Items.Add(key);           }            //預設第一項被選中           this.cboSets.SelectedIndex = 0;        }

 

六:在Load事件中調用方法

   private void frmMain_Load(object sender, EventArgs e)        {           this.lblSetName.Text = "";            this.lblSetPrice.Text = "";            //初始化所有檢查項目            InitItems();            //初始化預設套餐            InitSets();            //載入下拉式清單方塊            InitHealthSetList();            btnAdd.Enabled = false;            btnDel.Enabled = false;           this.dgvHealthList.AutoGenerateColumns = false;        }

七:當套餐下拉框選擇項發生改變時,需要載入所選套餐下對應的體檢項目

       //填充套餐的DataGridView         private void UpdateSet(HealthCheckSet set)        {            dgvHealthList.DataSource = new BindingList<HealthCheckItem>(set.Items);        }
        //套餐列表        private void cboSets_SelectedIndexChanged(object sender, EventArgs e)        {            string setName = this.cboSets.Text;            if (setName == "請選擇")            {                this.dgvHealthList.DataSource = null;                lblSetName.Text = "";                lblSetPrice.Text = "";                return;                        }            //設定套餐名稱            lblSetName.Text = this.HealthSet[setName].Name;            //設定套餐總價            lblSetPrice.Text = this.HealthSet[setName].Price.ToString();                      //更新套餐檢查項目            UpdateSet(HealthSet[setName]);            //刪除按鈕為可用狀態            btnDel.Enabled = true;        }

八:在DataGridView中添加項目。判斷是否已經存在要添加的項目,若不在要添加項目的集合中,則執行添加操作

        //添加        private void btnAdd_Click(object sender, EventArgs e)        {            if (this.cboItems.SelectedIndex==0)            {                MessageBox.Show("請選擇一個項目!");                return;            }            string cboSetText = this.cboSets.Text;            if (cboSetText == "請選擇")            {                                MessageBox.Show("請選擇套餐!");                return;            }            //判斷添加的體檢項目在現有套餐中是否存在            int index = this.cboItems.SelectedIndex-1;            if (!this.HealthSet[cboSetText].Items.Contains(AllItems[index]))            {                this.HealthSet[cboSetText].Items.Add(AllItems[index]);                this.HealthSet[cboSetText].CalcPrice();                UpdateSet(this.HealthSet[cboSetText]);                //重新整理表單集合名稱                this.lblSetName.Text = this.HealthSet[cboSetText].Name;                //重新整理表單集合價格                this.lblSetPrice.Text = this.HealthSet[cboSetText].Price.ToString();                MessageBox.Show("添加成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);            }            else            {                MessageBox.Show("該項目已存在!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);            }        }

 

 

九:實現刪除體檢套餐資訊

        //刪除項目        private void btnDel_Click(object sender, EventArgs e)        {            string setNames = this.cboSets.Text;            if (this.dgvHealthList.SelectedRows.Count == 0)            {                MessageBox.Show("沒有選擇刪除項!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);                return;            }            //擷取選中項目的索引            int index = this.dgvHealthList.SelectedRows[0].Index;            //刪除檢查項            this.HealthSet[setNames].Items.RemoveAt(index);            //重新計算價格            this.HealthSet[setNames].CalcPrice();            //更新DataGridView顯示            UpdateSet(HealthSet[setNames]);                        //重設標籤顯示            lblSetName.Text = setA.Name;            string cboSetText = this.cboSets.Text;            lblSetPrice.Text = this.HealthSet[cboSetText].Price.ToString();            MessageBox.Show("刪除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);        }

 

十:在套餐列表中添加套餐,通過添加dictionary<K,V>中的Key值來添加套餐,並重新整理下拉式清單。

        //添加套餐        private void btnOK_Click(object sender, EventArgs e)        {            if (string.IsNullOrEmpty(txtHealthName.Text))            {                MessageBox.Show("請輸入套餐名稱", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);                return;            }            else            {                HealthCheckSet Hch = new HealthCheckSet();                this.HealthSet.Add(this.txtHealthName.Text, Hch);                this.InitHealthSetList();                //向下拉框添加顯示的內容                this.cboSets.SelectedIndex = this.HealthSet.Count;                lblSetName.Text = cboItems.Text;                Hch.Name = cboSets.Text;                MessageBox.Show("添加成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);            }        }

十一:未添加項目時添加按鈕為禁用狀態,添加時為可用

        //檢查項目        private void cboItems_SelectedIndexChanged(object sender, EventArgs e)        {                       if (this.cboSets.Text != "請選擇")            {                this.btnAdd.Enabled = true;            }            else            {                this.btnAdd.Enabled = false;            }        }

 

第五章項目:體檢套餐

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.