首页 > 技术文章 > 体检套餐管理系统

wjk921 2015-09-12 14:25 原文

 

一.首先创建好项目需要的类: HealthCheckItem(检查项目) TaoCan(体检套餐)

二:在各个类中定义项目需要的属性和字段以及方法:

(1)体检套餐类:

Items:HealthCheckItem的集合.采用泛型集合Lis<T>作为存储HealthCheckItem的数据结构。

Price:套餐价格,即Items属性中检查项目的价格之和。

Name:套餐名称。

  public class TaoCan
    {
        public TaoCan()
        {
            items = new List<HealthCheckItem>();
        }
        public TaoCan(string name, List<HealthCheckItem> items)
        {
            this.Name = name;
            this.items = items;
        }
        public void CalcPrice()
        {
            int totalPrice = 0;
            foreach (HealthCheckItem item in items)
            {
                totalPrice += item.Price;
            }
            this.price = totalPrice;
        }
        private int price;
        private List<HealthCheckItem> items;
        private string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public List<HealthCheckItem> Items
        {
            get { return items; }
            set { items = value; }
        }
        public int Price
        {
            get { return price; }
            set { price = value; }
        }

    }

 

 

(2)检查项目类:

Description:项目描述。

Name:项目名称。

Price:项目价格。

 public class HealthCheckItem
    {
        private int price;
        private string description;
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public string Description
        {
            get { return description; }
            set { description = value; }
        }

        public int Price
        {
            get { return price; }
            set { price = value; }
        }


        public HealthCheckItem(string name, int price, string description)
        {
            this.Name = name;
            this.Description = description;
            this.Price = price;
        }
    }

 

 

三.采用泛型集合和Dictionary<K,V>保存体检项目

 HealthCheckItem height, weight, sight, hearing, liverFun, ekg, bWaves, bloodPressure, bloodTest;
        TaoCan setA;

        //存储所有检查项目
        List<HealthCheckItem> AllItems = new List<HealthCheckItem>();
        //存储与套餐相关的检查项目
        List<HealthCheckItem> items = new List<HealthCheckItem>();
        //用Dictionary<K,V>保存套餐中的项目
        public Dictionary<string, TaoCan>  HealthSet = new Dictionary<string, TaoCan>();


四.初始化以及填值

 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);
        }
   


五.构建一个默认的套餐,并且扔到所有套餐集合中

     public void Tc()
        {
            TaoCan tc = new TaoCan();
            tc.Name = "入学体检";
            tc.Items.Add(ShenGao);
            tc.Items.Add(TiZhong);


            //请选择
            TaoCan tc2 = new TaoCan();
            tc2.Name = "请选择";

            HSet.Add(tc2.Name, tc2);
            HSet.Add(tc.Name, tc);

        }

六.更新套餐检查项目,加载下拉框里的内容

 private void updateSet(TaoCan set)
        {
            dgvList.DataSource = new BindingList<HealthCheckItem>(set.Items);
        }


   private void cboSets_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (flag == 1)
            {
                string SetName = cboSets.Text;
                if (SetName == "请选择")
                {
                    HSet[SetName].Items.Clear();
                    updateSet(HSet[SetName]);
                    // dgvList.DataSource = null;
                    lblSetName.Text = "";
                    lblSetPrice.Text = "";
                    return;
                }
                //设置套餐名称

                lblSetName.Text = HSet[SetName].Name;
                HSet[SetName].CalcPrice();
                //设置套餐总价
                lblSetPrice.Text = HSet[SetName].Price.ToString();
                //更新套餐检查项目
                updateSet(HSet[SetName]);
                //设置清楚按钮为可用状态
                btnDelete.Enabled = true;
            }
        }

        private void cboItems_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cboItems.Text != "请选择")
            {
                btnAdd.Enabled = true;
            }
            else
            {
                btnAdd.Enabled = false;
            }
        }


七.完善Load事件里的内容 调用必要的方法

 private void BindRightDGV()
        {

            cboItems.DataSource = new BindingList<HealthCheckItem>(AllItems);
        }

  //定义一个标记 判定当前Load事件是否执行完毕
        int flag = 0;
        private void FrmMain_Load(object sender, EventArgs e)
        {
            


            //右侧下拉框
            testSet();
            //左侧
            Tc();
            //所有下拉框中的项目Clear()
            BindingSource source = new BindingSource();
            source.DataSource = HSet.Values;
            cboSets.DisplayMember = "name";
            cboSets.ValueMember = "items";
            cboSets.DataSource = source;
            BindRightDGV();
            Console.WriteLine("");
            flag = 1;
        }

八.添加套餐

 private void btnTaoCanAdd_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtName.Text))
            {
                MessageBox.Show("请选择套餐名称","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
                return;
            }
            else
            {
                TaoCan Hch = new TaoCan();
                Hch.Name=txtName.Text;
                HSet.Add(Hch.Name,Hch);
                BindingSource source = new BindingSource();
                source.DataSource = HSet.Values;
                cboSets.DisplayMember = "name";
                cboSets.ValueMember = "items";
                cboSets.DataSource = source;
                MessageBox.Show("成功!");
                //将新加入的套餐默认选中
                cboSets.SelectedIndex = HSet.Count-1;
            }
        }

九.删除项目

private void btnDelete_Click(object sender, EventArgs e)
        {
            //体检项目的名称
            if (dgvList.SelectedRows.Count>0)
            {
                string name=dgvList.SelectedRows[0].Cells[0].Value.ToString();
            foreach (HealthCheckItem item in HSet[lblSetName.Text].Items)
            {
                if (item.Name==name)
                {
                    HSet[lblSetName.Text].Items.Remove(item);
                    break;
                }
            }
            updateSet(HSet[lblSetName.Text]);
            //价格
            HSet[lblSetName.Text].CalcPrice();
            lblSetPrice.Text = HSet[lblSetName.Text].Price.ToString();
            }

 

推荐阅读