体检套餐管理项目

1.体检套餐管理项目页面

2:用户自定义类:HealthCheckItem和HealthCheckSet

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 namespace FrmPhysical
 8 {
 9    public  class HealthCheckItem    //检查项目类
10     {
11         public string  Description { get; set; }//项目描述
12         public string  Name { get; set; }//项目名称
13         public int  Price { get; set; }//项目价格
14
15         //无参构造函数
16         public HealthCheckItem()
17         {
18         }
19
20         //带参构造函数
21         public HealthCheckItem(string name, string description, int price)
22         {
23             this.Name = name;
24             this.Description = description;
25             this.Price = price;
26
27         }
28
29     }
30 }
namespace 体检套餐管理
{
     public class HealthCheckItem
    {
        public HealthCheckItem(string name, int price, string description)//定义带参构造为三个属性赋初值
        {
            this.Name = name;
            this.Description = description;
            this.Price = price;
        }
        private string name;
        public string Name//项目名
        {
            get { return name; }
            set { name = value; }
        }
        private string description;
        public string Description//项目描述
        {
            get { return description; }
            set { description = value; }
        }
        private int price;
        public int Price//项目价格
        {
            get { return price; }
            set { price = value; }
        }
    }
}
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 namespace FrmPhysical
 8 {
 9     public class HealthCheckSet   //体检套餐类
10     {
11         //HealthCheckItem的集合
12         public List<HealthCheckItem> Item { get; set; }
13
14         //套餐价格
15         public int Price { get; set; }
16
17         //套餐名称
18         public string  Name { get; set; }
19
20         //无参构造
21         public HealthCheckSet() { }
22
23         //带参构造函数
24         public HealthCheckSet(string name,List<HealthCheckItem> item)
25         {
26             this.Name = name;
27             this.Item = item;
28         }
29
30         //计算总价格
31         public void CalcPrice()
32         {
33             int totaPrice = 0;
34             foreach (HealthCheckItem  item in this.Item )
35             {
36                 totaPrice += item.Price;
37             }
38             this.Price = totaPrice;
39         }
40
41
42     }
43 }
 1 namespace 体检套餐管理
 2 {
 3   public
 4   class HealthCheckSet
 5     {
 6         public HealthCheckSet()//初始化HealthCheckItems项的集合
 7         {
 8             items = new List<HealthCheckItem>();
 9         }
10         public HealthCheckSet(string name, List<HealthCheckItem> items)//有项目时给集合赋值的构造函数
11         {
12             this.Name = name;
13             this.items = items;
14         }
15         private string name;
16         public string Name
17         {
18             get { return name; }
19             set { name = value; }
20         }
21         private List<HealthCheckItem> items;
22         public List<HealthCheckItem> Items//表示HealthCheckItems中的项的集合
23         {
24             get { return items; }
25             set { items = value; }
26         }
27         private int price;
28         public int Price//套餐价格
29         {
30             get { return price; }
31         }
32         public void CalcPrice()//计算套餐价格的方法
33         {
34             int totalPrice = 0;
35             foreach (HealthCheckItem item in items)
36             {
37                 totalPrice += item.Price;
38             }
39             this.price = totalPrice;
40         }
41     }
42 }
  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Threading.Tasks;
  9 using System.Windows.Forms;
 10
 11 namespace FrmPhysical
 12 {
 13     public partial class FrmPhysical : Form
 14     {
 15         public FrmPhysical()
 16         {
 17             InitializeComponent();
 18         }
 19
 20         private void FrmPhysical_Load(object sender, EventArgs e)
 21         {
 22             #region 主窗体调用方法
 23             main();//初始化检查项目的方法
 24             yuan();//生成默认套餐数据
 25             combox();//套餐列表 下拉框的加载方法
 26             combox2(); //检查项目 下拉框的加载方法
 27
 28
 29             #endregion
 30         }
 31         #region  初始化检查项目的方法
 32          //初始化检查项目的方法
 33
 34         //建立所有 检查项目 集合
 35         Dictionary<string, HealthCheckItem> AllList = new Dictionary<string, HealthCheckItem>();
 36
 37         //初始化检查项目
 38         HealthCheckItem item, item2, item3, item4, item5, item6, item7;
 39         public void main()
 40         {//调用检查项目类的带参构造函数
 41             item = new HealthCheckItem("身高","用于检查身高",5);
 42             item2 = new HealthCheckItem("体重", "用于检查体重",5);
 43             item3 = new HealthCheckItem("视力", "用于检查视力",15);
 44             item4 = new HealthCheckItem("听力", "用于检查听力",20);
 45             item5 = new HealthCheckItem("肝功能", "用于检查肝功能",50);
 46             item6 = new HealthCheckItem("B超", "用于检查B超",30);
 47             item7 = new HealthCheckItem("心电图", "用于检查心电图",100);
 48
 49             //所有检查项目 集合
 50             AllList.Add(item.Name,item);
 51             AllList.Add(item2.Name, item2);
 52             AllList.Add(item3.Name, item3);
 53             AllList.Add(item4.Name, item4);
 54             AllList.Add(item5.Name, item5);
 55             AllList.Add(item6.Name, item6);
 56             AllList.Add(item7.Name, item7);
 57         }
 58         #endregion
 59
 60         #region 生成默认套餐数据
 61         //生成默认套餐数据
 62
 63         //建立 套餐中的 检查项目 集合
 64         List<HealthCheckItem> List = new List<HealthCheckItem>();
 65
 66         //使用字典保存套餐集合
 67         Dictionary<string, HealthCheckSet> dictionary = new Dictionary<string, HealthCheckSet>();
 68
 69         //定义一个默认套餐
 70         HealthCheckSet moren;
 71         public void yuan()
 72         {
 73             //套餐中的 检查项目 集合
 74             List.Add(item);
 75             List.Add(item2);
 76             List.Add(item3);
 77             //定义一个默认套餐
 78             moren = new HealthCheckSet("入学体检",List);
 79             //调用方法    定义一个默认套餐.计算价格
 80             moren.CalcPrice();
 81             //使用字典保存套餐集合
 82             this.dictionary.Add("入学体检", moren);
 83
 84
 85         }
 86
 87         #endregion
 88
 89         #region  套餐列表 下拉框的加载方法
 90         public void combox()
 91         {
 92             cboList.Items.Clear();
 93             cboList.Items.Add("--请选择--");
 94             foreach (string  item in dictionary .Keys )
 95             {
 96                 cboList.Items.Add(item);
 97             }
 98             cboList.SelectedIndex = 0;//默认第一项为选择
 99         }
100         #endregion
101
102         #region 检查列表 下拉框的加载方法
103         public void combox2()
104         {
105             cboProject.Items.Clear();
106             cboProject.Items.Add("--请选择--");
107             foreach (string item in AllList.Keys )
108             {
109                 cboProject.Items.Add(item);
110             }
111             cboProject.SelectedIndex = 0;//默认第一项为选中
112         }
113         #endregion
114
115         #region  填充套餐的DataGridView
116         public void Updateset(HealthCheckSet set)
117         {
118             if (set.Item == null)
119             {
120                 //给DataGridView的数据源赋空值
121                 dataGridView1.DataSource = new BindingList<HealthCheckItem>();
122                 return;
123             }
124             else
125             {
126                 dataGridView1.DataSource = new BindingList<HealthCheckItem>(set.Item);
127             }
128         }
129         #endregion
130         public const string CAPTION = "操作提示";
131         private void btnAdd_Click(object sender, EventArgs e)
132         {
133             #region 添加套餐
134             if (txtName.Text != "")
135             {
136                 if (dictionary.Keys.Contains(txtName.Text))
137                 {
138                     MessageBox.Show("已经有该套餐了", CAPTION, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
139                     return;
140                 }
141                 else
142                 {
143                     //给health实例化
144                     List<HealthCheckItem> A = new List<HealthCheckItem>();
145                     HealthCheckSet health = new HealthCheckSet();
146                     health.Item = A;
147                     health.Name = "";
148                     health.Price = 0;
149                     this.dictionary.Add(txtName.Text, health);
150                     combox();
151                     cboList.Text = txtName.Text;
152                     txtName.Text = "";
153
154                 }
155             }
156             else
157             {
158                 MessageBox.Show("添加的不能为空!",CAPTION,MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
159
160             }
161
162             #endregion
163         }
164
165         private void btnDelete_Click(object sender, EventArgs e)
166         {
167             #region 删除
168             string text = this.cboList.Text;
169             string key = dataGridView1.SelectedRows[0].Cells["名称"].Value.ToString();
170             this.dictionary[cboList.Text].Item.Remove(AllList[key]);
171             dictionary[text].CalcPrice();
172             label2.Text = dictionary[text].Price.ToString();
173             dataGridView1.DataSource = new BindingList<HealthCheckItem>(dictionary[cboList.Text].Item);
174             btnDelete.Enabled = false;//删除按钮的禁用
175             #endregion
176         }
177         private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
178         {
179
180         }
181
182         private void btnAdder_Click(object sender, EventArgs e)
183         {
184             #region 下面 添加项目
185             string name = cboProject.Text;
186             if (!dictionary[cboList.Text].Item.Contains(AllList[name]))
187             {
188                 dictionary[cboList.Text].Item.Add(AllList[name]);
189                 MessageBox.Show("添加成功!", CAPTION, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
190                 dataGridView1.DataSource = new BindingList<HealthCheckItem>(dictionary[cboList.Text].Item);
191                 dictionary[cboList.Text].CalcPrice();
192                 //根据套餐名给其中的检查项求总价格
193                 label2.Text = dictionary[cboList.Text].Price.ToString();
194             }
195             else
196             {
197                 MessageBox.Show("已经有该项目的存在了",CAPTION,MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
198             }
199             #endregion
200         }
201         private void cboProject_SelectedIndexChanged(object sender, EventArgs e)
202         {
203             #region 添加按钮的  是否可用
204             if (cboProject.Text == "--请选择--" || cboList.Text == "--请选择--")
205             {
206                 btnAdder.Enabled = false;
207             }
208             else
209             {
210                 btnAdder.Enabled = true;
211             }
212             #endregion
213         }
214         public string name;
215         private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
216         {
217             #region 选中
218             if (dataGridView1.SelectedRows.Count != 1 || dataGridView1.SelectedRows[0].Cells[1].Value == null)
219             {
220                 MessageBox.Show("请你正确的选择一行!", CAPTION, MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
221                 return;
222             }
223             else
224             {
225                 name = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
226                 btnDelete.Enabled = true;//删除按钮的可用
227
228             }
229             #endregion
230         }
231
232         private void cboList_SelectedIndexChanged(object sender, EventArgs e)
233         {
234             #region 选择套餐
235             string setName = cboList.Text;
236             if (cboList.Text == "--请选择--")
237             {
238                 //
239                 dataGridView1.DataSource = new BindingList<HealthCheckItem>();
240                 label1.Text = "";
241                 cboProject.Text = "";
242                 label2.Text = "";
243                 btnAdder.Enabled = false;
244                 return;
245             }
246             else
247             {
248                 label1.Text = setName;
249                 if (dictionary[setName] != null)
250                 {
251                     //根据套餐名给DataGridView绑定数据
252                     Updateset(dictionary[setName]);
253                 }
254                 else
255                 {
256                     //给DataGridView的数据源赋空值
257                     dataGridView1.DataSource = new BindingList<HealthCheckItem>();
258
259                 }
260                 //根据套餐名给其中的检查项求总价格
261                 label2.Text = dictionary[setName].Price.ToString();
262             }
263             #endregion
264         }
265
266
267     }
268 }

3:定义两个List<T>单列集合,一个Dictionary<K,V>双列集合并且默认初始化一个体检套餐。

1  HealthCheckItem height, weight, eyes, ears, gan, Bchao, heart;
2          List<HealthCheckItem> allitems = new List<HealthCheckItem>();//保存所有的体检项目
3         List<HealthCheckItem> items = new List<HealthCheckItem>();//保存套餐中的体检项目
4          public Dictionary<string, HealthCheckSet> item = new Dictionary<string, HealthCheckSet>();//保存所有套餐
5         public HealthCheckSet numA;

4:初始化保存在allitems中的所有的体检项目以及默认套餐中的所有的体检项目。

 1         public void Show()//保存所有体检项目
 2         {
 3             height = new HealthCheckItem("身高", 5, "测量身高");
 4             weight = new HealthCheckItem("体重", 5, "检测体重");
 5             eyes = new HealthCheckItem("视力", 10, "测视力");
 6             ears = new HealthCheckItem("听力", 10, "测听力");
 7             gan = new HealthCheckItem("肝功能", 20, "测试肝功能");
 8             Bchao = new HealthCheckItem("B超", 20, "检测身体内部");
 9             heart = new HealthCheckItem("心电图", 50, "检查心脏");
10             allitems.Add(height);
11             allitems.Add(weight);
12             allitems.Add(eyes);
13             allitems.Add(ears);
14             allitems.Add(gan);
15             allitems.Add(Bchao);
16             allitems.Add(heart);
17         }
18         public void Num1()//默认的体检套餐
19         {
20             items = new List<HealthCheckItem>();
21             items.Add(height);
22             items.Add(weight);
23             items.Add(eyes);
24             numA = new HealthCheckSet("入学体检", items);
25             numA.CalcPrice();
26             this.item.Add("入学体检", numA);
27
28         }

5:向下拉框中添加数据,由于此控件是套餐下拉框,其储存的数据是双列集合dictionary<K,V>中的key值,即代码如下

 1   public void Chushi()
 2         {
 3             this.comboBox1.Items.Clear();
 4             this.comboBox1.Items.Add("请选择");
 5
 6             foreach (string key in this.item.Keys)
 7             {
 8                 this.comboBox1.Items.Add(key);
 9             }
10             this.comboBox1.SelectedIndex = 0;
11         }

6:在下拉框的SelectedIndexChanged事件中编写如下代码,目的是点击下拉框选项后将数据加载到datagridview控件中,并且实现显示套餐名称和价格的功能。

 1 string text = this.comboBox1.Text;
 2             if (text == "请选择")
 3             {
 4                 this.label3.Text = "";
 5                 this.label5.Text = "";
 6                 this.dataGridView1.DataSource = new BindingList<HealthCheckItem>();
 7                 return;
 8             }
 9             label3.Text = this.item[text].Name;
10             label5.Text = this.item[text].Price.ToString();
11             load(item[text]);
12             this.button2.Enabled = true;

备注:load()作用是将所有的体检项目的信息加载到datagridview中

1  public void load(HealthCheckSet set)//将所有的体检项目的信息加载到datagridview中
2         {
3             this.dataGridView1.DataSource = new BindingList<HealthCheckItem>(set.Items);
4         }

7:实现删除套餐中的项目的功能,setName是套餐下拉框中所有项的文本的集合。item[setName].Item是指HealthCheckItems中所有项的集合,datagridview控件中加载的也是HealthCheckItems项的集合,所以可以根据datagridview中被选中行的下表来删除集合中的数据。并且重新加载标签中的价格

 1  string setName = this.comboBox1.Text;
 2
 3             if (this.dataGridView1.SelectedRows.Count == 0)
 4             {
 5                 MessageBox.Show("没有选择删除项。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
 6                 return;
 7             }
 8
 9             int index = this.dataGridView1.SelectedRows[0].Index;
10
11             this.item[setName].Items.RemoveAt(index);
12
13             this.item[setName].CalcPrice();
14
15             load(item[setName]);
16
17             this.label3.Text =numA.Name;
18             this.label5.Text = numA.Price.ToString();
19             MessageBox.Show("删除成功。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

8:实现添加项目的操作,首先判断集合中是否已经存在要添加的项目了,如果要添加的项目不在集合中,则执行添加操作。其次,从allitems所有体检项目的集合中提取数据,使用foreach遍历,如果被选择的项目等于allitems中的项目,将此项目添加到HealthCheckItem项的集合中去,并且改变价格,刷新datagridview控件

 1 if (this.comboBox2.SelectedIndex == 0)
 2             {
 3                 MessageBox.Show("请选择一个项目。");
 4                 return;
 5             }
 6
 7             string text = this.comboBox1.Text;
 8             if (text == "请选择")
 9             {
10                 MessageBox.Show("请选择套餐!");
11                 return;
12             }
13
14
15             foreach (HealthCheckItem cboitem in item[text].Items)
16             {
17                 if (cboitem.Name == comboBox2.SelectedItem.ToString())
18                 {
19                     MessageBox.Show("该项目存在", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
20                     return;
21                 }
22             }
23             foreach (HealthCheckItem addItem in allitems)
24             {
25                 if (addItem.Name == comboBox2.SelectedItem.ToString())
26                 {
27                     item[text].Items.Add(addItem);
28                 }
29                 this.item[text].CalcPrice();
30                 load(this.item[text]);
31                 this.label3.Text = this.item[text].Name;
32                 this.label5.Text = this.item[text].Price.ToString();
33
34
35             }

9:实现添加套餐操作,通过添加dictionary<K,V>中的Key值来添加套餐,并且刷新下拉列表。并在套餐下拉框中自动定位到刚被添加的套餐。

1  HealthCheckSet he = new HealthCheckSet();
2             this.item.Add(textBox1.Text, he);
3             this.Chushi();
4             this.comboBox1.SelectedIndex = item.Count;
5             MessageBox.Show("添加成功!");
时间: 2024-10-19 15:02:40

体检套餐管理项目的相关文章

体检套餐的项目

第5章 体检套餐管理系统1,课程内容回顾 第1章:深入.NET框架 .NET框架组件 CLR的作用及组成 .NET程序编译过程 .NET核心类库及命名空间 第2章 深入C#数据类型 类.对象.属性.封装 类图 结构 拆箱装箱 值类型和引用类型 静态成员和静态方法 第3章 使用集合组织相关数据 操作集合实现元素的增.删.查.遍历 ArrayList Hashtable 操作泛型集合实现元素的增.删.查.遍历 List<T> Dictionary<K,V> 泛型 第4章 深入类的方法

体检套餐管理系统

1:搭建窗体(略) 2:用户自定义类:HealthCheckItem和HealthCheckSet 1 namespace 体检套餐管理 2 { 3 public class HealthCheckItem 4 { 5 public HealthCheckItem(string name, int price, string description)//定义带参构造为三个属性赋初值 6 { 7 this.Name = name; 8 this.Description = description;

C#体检套餐项目

使用泛型集合写的一个小项目 1.要实现新建体检套餐,并且如果已经有了该体检套餐就不能再次新建, 2.要实现套餐列表动态更新,没添加一个体检套餐,在套餐列表里就自动添加一项; 3.向当前套餐类表里添加检查项目,一个体检套餐里不可以有重复的体检项目; 4.动态计算套餐当前价格; 5.动态的将套餐列表当前套餐的体检项目显示在dgvlist中; 6.实现删除体检项目: 下面是实现的效果图: 新建体检套餐: 给体检套餐添加体检项目并计算套餐价格: 删除选中的体检项目: 在套餐列表中选择体检套餐可以查看具体

第五章项目:体检套餐

窗体搭建的效果图如下: 一:实现的功能主要有以下几个方面: ①:显示指定套餐的项目明细 ②:向指定套餐添加检查项目信息 ③:删除套餐中的项目信息 ④:新建套餐 二:创建体检项目维护系统中的检查项目类(HealthCheckItem).体检套餐类(HealthCheckSet) HealthCheckItem类中的属性说明如下: Description:项目描述 Name:项目名称 Price:项目价格 HealthCheckSet类中的属性说明如下: Items:HealthCheckItem的

字典集合Dictionary&lt;K,V&gt;和构造的应用==&gt;&gt;体检套餐项目

效果 首先,我们先来准备我们需要的类 1.检查项目类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 第五章_体检套餐管理系统_ { //项目类 public class HealthCheckItem { //项目描述 public string Description { get; set;

第五章项目 体检套餐管理系统

1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 11 namespace 体检

体检套餐主代码

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 HealthCheckItem { public p

05章 体检套餐管理系统

窗体搭建的效果图如下: 一:实现的功能主要有以下几个方面: ①:显示指定套餐的项目明细 ②:向指定套餐添加检查项目信息 ③:删除套餐中的项目信息 ④:新建套餐 二:创建体检项目维护系统中的检查项目类(HealthCheckItem).体检套餐类(HealthCheckSet) HealthCheckItem类中的属性说明如下: Description:项目描述 Name:项目名称 Price:项目价格 HealthCheckSet类中的属性说明如下: Items:HealthCheckItem的

泛型实践——体检套餐系统

体检套餐项目总结 首先可以功能提取出两个类,一个是  HealthCheckItem (检查项目类)和HealthCheckItem(体检套餐类).首先我们要理清两个类的关系,一项套餐中可以包含多项项目检查. HealthCheckItem:包括项目名称.单价和描述3个属性 public HealthCheckItem(string name,int price,string description) { //this this.Name = name; this.Description = d