1 public class HealItem 2 { 3 //检查项目 4 private string name;//项目名 5 public string Name 6 { 7 get { return name; } 8 set { name = value; } 9 } 10 11 private string description;// 描述 12 13 public string Description 14 { 15 get { return description; } 16 set { description = value; } 17 } 18 19 private int price;//价格 20 public int Price 21 { 22 get { return price; } 23 set { price = value; } 24 } 25 26 public HealItem(){ } 27 public HealItem(string name, int price, string description) 28 { 29 this.Name= name; 30 this.Price = price; 31 this.Description = description; 32 } 33 34 public static Dictionary<string, HealItem> ItemDic = new Dictionary<string, HealItem>() 35 { 36 {"身高",new HealItem("身高",5,"用于测量身高")}, 37 {"体重",new HealItem("体重",5,"用于测量体重")}, 38 {"视力",new HealItem("视力",5,"用于检查视力")}, 39 {"听力",new HealItem("听力",5,"用于检查听力")}, 40 {"肝功能",new HealItem("肝功能",200,"用于检测肝功能")}, 41 {"B超",new HealItem("B超",60,"用于B超检查")}, 42 {"心电图",new HealItem("心电图",100,"用于检查心电图")}, 43 {"肺活量",new HealItem("肺活量",8,"用于测量肺活量")} 44 };
1 public class HealSet 2 { 3 //体检套餐 4 public int Price { get; set; }//套餐价格 5 6 private string name;//套餐名称 7 public string Name 8 { 9 get { return name; } 10 set { name = value; } 11 } 12 //HealthCheckItem的集合,采用泛型集合List<T>作为储存HealthCheckItem的数据结构 13 public List<HealItem> ItemList = new List<HealItem>(); 14 public static Dictionary<string, List<HealItem>> SetDic = new Dictionary<string, List<HealItem>>(); 15 /// <summary> 16 /// 默认数据 17 /// </summary>s 18 public HealSet() 19 { 20 this.ItemList = new List<HealItem>(); 21 ItemList.Add(HealItem.ItemDic["身高"]); 22 ItemList.Add(HealItem.ItemDic["体重"]); 23 ItemList.Add(HealItem.ItemDic["视力"]); 24 SetDic.Add("入学体检", this.ItemList); 25 } 26 public HealSet(string name) 27 { 28 SetDic.Add(name, this.ItemList); 29 } 30 public static void DicAdd(List<HealItem> list, string str) 31 { 32 list.Add(HealItem.ItemDic[str]); 33 }
1 #region 初始化数据 2 /// <summary> 3 /// 初始化数据 4 /// </summary> 5 /// <param name="sender"></param> 6 /// <param name="e"></param> 7 private void Form1_Load(object sender, EventArgs e) 8 { 9 dataGridView1.AutoGenerateColumns = false;//清除多余的值 10 cobXiang.Items.Add("请选择"); 11 cobXiang.SelectedIndex = 0; 12 RenovateItem();// 更新检查项目列表 13 HealSet set = new HealSet(); 14 RenovateList();//更新套餐列表 15 cobLie.SelectedIndex = 0; 16 cobXiang.Enabled = true; 17 btnAdd.Enabled = true; 18 btnDelete.Enabled = true; 19 20 } 21 #endregion 22 23 #region 更新检查项目列表 24 /// <summary> 25 /// 更新检查项目列表 26 /// </summary> 27 private void RenovateItem() 28 { 29 //遍历项目列表 30 foreach (KeyValuePair<string, HealItem> item in HealItem.ItemDic) 31 { 32 cobXiang.Items.Add(item.Key); 33 } 34 } 35 #endregion 36 37 #region 更新套餐列表 38 /// <summary> 39 /// 更新套餐列表 40 /// </summary> 41 private void RenovateList() 42 { 43 cobLie.Items.Clear(); 44 cobLie.Items.Add("请选择"); 45 foreach (KeyValuePair<string, List<HealItem>> item in HealSet.SetDic) 46 { 47 cobLie.Items.Add(item.Key); 48 } 49 if (cobLie.Items.Count > 2) 50 { 51 cobLie.SelectedIndex = cobLie.Items.Count - 1; 52 } 53 } 54 #endregion 55 56 #region 套餐列表下拉框 57 /// <summary> 58 /// 套餐列表下拉框 59 /// </summary> 60 /// <param name="sender"></param> 61 /// <param name="e"></param> 62 private void cobLie_SelectedIndexChanged(object sender, EventArgs e) 63 { 64 if (cobLie.SelectedIndex > 0) 65 { 66 lblName2.Text = cobLie.Text;//选择套餐列表时给套餐名赋值 67 cobXiang.Enabled = true; 68 RenovateDGV();//刷新列表 69 } 70 else 71 { 72 cobXiang.Enabled = true; 73 } 74 75 76 77 } 78 #endregion 79 80 #region 刷新RenovateDGV列表 81 /// <summary> 82 /// 刷新RenovateDGV列表 83 /// </summary> 84 private void RenovateDGV() 85 { 86 List<HealItem> list = HealSet.SetDic[cobLie.Text]; 87 dataGridView1.DataSource = new BindingList<HealItem>(HealSet.SetDic[cobLie.Text]); 88 lblPrice1.Text = Price(cobLie.Text).ToString();//价格 89 } 90 #endregion 91 92 #region 项目总金额 93 /// <summary> 94 /// 项目总金额 95 /// </summary> 96 /// <param name="key"></param> 97 /// <returns></returns> 98 private int Price(string key) 99 { 100 int sum = 0; 101 foreach (HealItem item in HealSet.SetDic[key]) 102 { 103 sum += item.Price; 104 } 105 return sum; 106 } 107 #endregion 108 109 #region 添加检查项目 110 /// <summary> 111 /// 添加检查项目 112 /// </summary> 113 /// <param name="sender"></param> 114 /// <param name="e"></param> 115 private void btnAdd1_Click(object sender, EventArgs e) 116 { 117 if (HealSet.SetDic[cobLie.Text].Contains(HealItem.ItemDic[cobXiang.Text])) 118 { 119 MessageBox.Show(cobLie.Text + "套餐中已存在该检查项目!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); 120 } 121 else 122 { 123 HealSet.DicAdd(HealSet.SetDic[cobLie.Text], cobXiang.Text); 124 RenovateDGV();//刷新列表 125 } 126 127 } 128 #endregion 129 130 #region 检查项目列表 131 /// <summary> 132 /// 检查项目列表 133 /// </summary> 134 /// <param name="sender"></param> 135 /// <param name="e"></param> 136 private void cobXiang_SelectedIndexChanged(object sender, EventArgs e) 137 { 138 if (cobXiang.SelectedIndex > 0) 139 { 140 btnAdd1.Enabled = true; 141 } 142 else 143 { 144 btnAdd1.Enabled = false; 145 btnDelete.Enabled = false; 146 } 147 148 149 } 150 #endregion 151 152 #region 删除 153 /// <summary> 154 /// 删除 155 /// </summary> 156 /// <param name="sender"></param> 157 /// <param name="e"></param> 158 private void btnDelete_Click(object sender, EventArgs e) 159 { 160 DialogResult result = MessageBox.Show("您确定要删除吗?", "警告!", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); 161 if (result == DialogResult.OK) 162 { 163 if (dataGridView1.SelectedRows[0] != null && dataGridView1.SelectedRows[0].Cells[0] != null && dataGridView1.SelectedRows[0].Cells[0].Value != null) 164 { 165 //删除 套餐中所选的与内置检查项目相匹配的项 166 HealSet.SetDic[cobLie.Text].Remove(HealItem.ItemDic[dataGridView1.SelectedRows[0].Cells[0].Value.ToString()]); 167 RenovateDGV();//刷新列表 168 } 169 } 170 171 } 172 #endregion 173 174 #region 新建套餐 175 /// <summary> 176 /// 新建套餐 177 /// </summary> 178 /// <param name="sender"></param> 179 /// <param name="e"></param> 180 private void btnAdd_Click(object sender, EventArgs e) 181 { 182 if (txtName.Text != "") 183 { 184 foreach (string item in HealSet.SetDic.Keys) 185 { 186 if (txtName.Text.Equals(item)) 187 { 188 MessageBox.Show("已经存在" + txtName.Text + "套餐!"); 189 return; 190 } 191 } 192 HealSet dic = new HealSet(txtName.Text); 193 RenovateList();//更新套餐列表 194 } 195 196 197 } 198 #endregion