体检套餐管理系统

体检套餐系统

1.加载默认体检套餐

2.初始化检查项目

新增套餐


1.定义检查项目类HealthCheckItem、体检套餐类HealthCheckSet’

 //体检项目类
  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()
        {
        }
        public HealthCheckItem(string name, int price, string description)
        {
            this.Name = name;
            this.Price = price;
            this.Description = description;
        }
    }
 //体检套餐类
    public class HealthCheckSet
    {
        //名称
         private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private int price;

        public int Price
        {
            get { return price; }
            
        }
        private Dictionary<string, HealthCheckItem> items;

        public Dictionary<string, HealthCheckItem> Items
        {
            get { return items; }
            set { items = value; }
        }
        public HealthCheckSet()
        {
            items = new Dictionary<string, HealthCheckItem>();
        }
        public HealthCheckSet(string name, Dictionary<string, HealthCheckItem> item)
        {
            this.Name = name;
            this.Items = item;
        }

        //计算套餐的总价格
        public void SumPirce()
        {
            //定义一个变量,来保存总价格
            int totalprice = 0;
            //
            foreach (HealthCheckItem item in items.Values)
            {
                totalprice+=item.Price;
            }
            this.price = totalprice;
        }
    }

2.定义三个双列泛型集合,分别来保存所有体检项目、套餐内的套餐项目列表、套餐的集合

        //用于保存所有单个套餐项目
        HealthCheckItem height, weight, sight, hearing, liverFun, ekg, bWaves, bloodPressure, bloodTest;
        //allitem用于保存所有的套餐项目
        Dictionary<string, HealthCheckItem> Allitem = new Dictionary<string, HealthCheckItem>();
        //定义一个套餐
        HealthCheckSet set;
        //定义一个套餐内的套餐项目列表
        Dictionary<string, HealthCheckItem> item = new Dictionary<string, HealthCheckItem>();
        //定义一个套餐的集合
        Dictionary<string, HealthCheckSet> Allset = new Dictionary<string, HealthCheckSet>();

3.在窗体加载时初始化所有体检项目和绑定下拉框,定义四个类

初始化套餐项目、

初始化一个套餐

将初始化套餐信息绑定到下拉框当中

//更新套餐检查项目

 //初始化套餐项目
        public void Init()
        {
            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, "用于检查血常规.");
            Allitem.Add(height.Name, height);
            Allitem.Add(weight.Name, weight);
            Allitem.Add(sight.Name, sight);
            Allitem.Add(hearing.Name, hearing);
            Allitem.Add(liverFun.Name, liverFun);
            Allitem.Add(bWaves.Name, bWaves);
            Allitem.Add(ekg.Name, ekg);
            Allitem.Add(bloodPressure.Name, bloodPressure);
            Allitem.Add(bloodTest.Name, bloodTest);
        }

        //初始化一个套餐
        public void InitHealth()
        {
            item.Add(height.Name, height);
            item.Add(weight.Name, weight);
            item.Add(sight.Name, sight);
            set = new HealthCheckSet("入学体检", item);
            set.SumPirce();
            Allset.Add("入学体检", set);
        }

        //将初始化套餐信息绑定到下拉框当中
        public void InitSet()
        {
            this.cboSets.Items.Clear();
            this.cboSets.Items.Add("请选择");
            foreach (string item in Allset.Keys)
            {
                this.cboSets.Items.Add(item);
            }
            this.cboSets.SelectedIndex = 0;
        }
        //更新套餐检查项目
        public void UpdateSet(HealthCheckSet set)
        {
            this.dgvHealthList.DataSource = new BindingList<HealthCheckItem>(set.Items.Values.ToList());
        }

4.当下拉框为“请选择”时,

this.lblSetName.Text = "";
this.lblSetPrice.Text = "";

否则

this.lblSetName.Text = name;
this.lblSetPrice.Text = Allset[name].Price.ToString();

 private void cboSets_SelectedIndexChanged(object sender, EventArgs e)
        {
            string name = this.cboSets.Text;
            if (name == "请选择")
            {
                this.dgvHealthList.DataSource = new BindingList<HealthCheckItem>();
                this.lblSetName.Text = "";
                this.lblSetPrice.Text = "";
                return;
            }
            this.lblSetName.Text = name;
            this.lblSetPrice.Text = Allset[name].Price.ToString();
            UpdateSet(Allset[name]);  
        }

5.点击添加时体检项目就会添加到DataGridView中

//添加项目
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (this.cboItems.SelectedIndex == 0)
            {
                MessageBox.Show("请选择套餐项");
                return;
            }
            string name = this.cboSets.Text;
            if (name == "请选择")
            {
                MessageBox.Show("请选择套餐");
                return;
            }
            if (!Allset[name].Items.Keys.ToList().Contains(this.cboItems.Text))
            {
                Allset[name].Items.Add(this.cboItems.Text, Allitem[this.cboItems.Text]);
                Allset[name].SumPirce();
                this.lblSetName.Text = name;
                this.lblSetPrice.Text = Allset[name].Price.ToString();
                UpdateSet(Allset[name]);
            }
            else
            {
                MessageBox.Show("该项已经存在!");
            }
        }

6.点击删除时,所选中的一行就会删除

//删除项目
        private void btnDel_Click(object sender, EventArgs e)
        {
            string name = this.dgvHealthList.SelectedRows[0].Cells[0].Value.ToString();
            string healthname = this.cboSets.Text;
            Allset[healthname].Items.Remove(name);
            UpdateSet(Allset[healthname]);
        }

7.点击添加时就会添加一个套餐名称,并显示到下拉框中

//添加套餐名称
        private void btnOK_Click(object sender, EventArgs e)
        {
            if (this.txtHealthName.Text.Trim() != null && this.txtHealthName.Text.Trim() != "")
            {
                HealthCheckSet set = new HealthCheckSet();
                Allset.Add(this.txtHealthName.Text.Trim(), set);
                InitSet();

                this.cboSets.SelectedIndex = Allset.Count;
            }
            else
            {
                MessageBox.Show("请输入添加的套餐名称");
            }
        }
原文地址:https://www.cnblogs.com/luoxionghenku/p/8259758.html