1:搭建窗体

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

 1 namespace 体检套餐管理2 {3      public class HealthCheckItem4     {5         public HealthCheckItem(string name, int price, string description)//定义带参构造为三个属性赋初值6         {7             this.Name = name;8             this.Description = description;9             this.Price = price;
10         }
11         private string name;
12         public string Name//项目名
13         {
14             get { return name; }
15             set { name = value; }
16         }
17         private string description;
18         public string Description//项目描述
19         {
20             get { return description; }
21             set { description = value; }
22         }
23         private int price;
24         public int Price//项目价格
25         {
26             get { return price; }
27             set { price = value; }
28         }
29     }
30 }

 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 }

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("添加成功!");

转载于:https://www.cnblogs.com/ainiaiwo/p/5373906.html

05章 体检套餐管理系统相关推荐

  1. java集合体检套餐管理系统_体检套餐管理系统

    体检套餐管理系统 首先搭建一个窗体 创建体检项目的两个类一个是检查项目类(HealthCheckItem),另一个是套餐类(HealthCheckSet) 在HealthCheckItem类 中有 项 ...

  2. 案例 体检套餐管理系统 需求一览 c# 1614099219

    案例 体检套餐管理系统 需求一览 c# 1614099219 界面一览 步骤一 窗体搭建 查看与删除功能 给套餐添加检察项目 注意: 可帮助查询对象是否在数组中 列表.Contains(数据) 新建套 ...

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

    1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Da ...

  4. 深入.NET 第五章 体检套餐

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  5. C# 体检套餐管理系统

    1.创建体检项目维护系统中的检查项目类 ,体检套餐类和一个泛型类如下图 2.窗体的搭建,如下图: 3.编写代码: using System; using System.Collections.Gene ...

  6. java 体检套餐_体检套餐管理系统的综合版

    步骤: 定义几个类: HealthCheckItem类:检查项目 属性: public string Description { get; set; }public int Price { get; ...

  7. (深入.Net平台和C#编程)第五章.体检套餐管理项目.20170408

    -----------------------------------------------------体检项目类------------------------------------------ ...

  8. java集合体检套餐管理系统_基于ssm vue的综合项目 健康体检管理系统-第六章

    移动端开发对体检预约进行的查询 当页面加载完毕时,利用vue的钩子函数 已加载页面就直接查询数据将数据进行渲染 created() { axios.post("/setmeal/getSet ...

  9. C#oop体检套餐管理系统

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

最新文章

  1. 04:sqlalchemy操作数据库 不错
  2. ValueError: need at most 63 handles, got a sequence of length 65
  3. HttpClient 连接池设置不当引发的一次雪崩
  4. STM32的时钟系统RCC详细整理
  5. 用CSS伪元素制作箭头
  6. 【问链-Eos公开课】第四课 EOS 的钱包创建、导入私钥
  7. 链接服务器 '(null)' 的 OLE DB 访问接口'STREAM' 返回了对列 '[!BulkInsert].field' 无效的数据...
  8. JavaOne 2012:Lambda之路
  9. 生活感悟——和尾号990的滴滴师傅的聊天
  10. 库克去年薪酬约6亿元,超员工1400倍,机构建议其降薪
  11. 015-请问如果想进行bug的测评,怎么去评测bug?
  12. UVA785 LA5281 Grid Colouring【DFS】
  13. [转载] Numpy数组对象ndarray
  14. python with open as yaml_python – pyyaml并仅使用字符串引号
  15. vmware开机自动进入BIOS vmware 进入BIOS方法
  16. 你们要的Windows IDEA 快捷键终极大全,速度收藏!
  17. 基于python的注册登录界面_基于python的Tkinter编写登陆注册界面
  18. 微博中微服务缓存_新浪微博温情:基于微服务的微博直播互动架构设计经验分享...
  19. 在线多功能工具箱php源码
  20. 生物信息学最基础知识

热门文章

  1. ORA-01502: 索引或这类索引的分区处于不可用状态 [已解决]
  2. 总结一下最近面试经常被问到的问题(2019年4月)
  3. 10个受欢迎的英文名
  4. xlc mysql_mysql – 用于存储产品信息的noSQL?
  5. HTTP版本/层次/响应/状态之高屋建瓴
  6. 使用 golang-plugins 时要避免的事情
  7. Ubuntu 18.04 下搭建 C/C++编译开发环境及GCC多版本切换
  8. golang之正则校验(验证某字符串是否符合正则表达式)
  9. 游戏机制新设计工具(Machinations)工作原理
  10. 如何制作一个横版格斗过关游戏 Cocos2d-x 2.0.4