第5章 体检套餐管理系统

1,课程内容回顾

第1章:深入.NET框架

.NET框架组件

CLR的作用及组成

.NET程序编译过程

.NET核心类库及命名空间

第2章 深入C#数据类型

类、对象、属性、封装

类图

结构

拆箱装箱

值类型和引用类型

静态成员和静态方法

第3章 使用集合组织相关数据

操作集合实现元素的增、删、查、遍历

ArrayList

Hashtable

操作泛型集合实现元素的增、删、查、遍历

List

Dictionary

泛型

第4章 深入类的方法

构造函数

方法重载

类之间通信

2,知识梳理

类和对象

对象

类和对象的关系

创建类:

创建类的属性:只读、只写、验证逻辑

方法:无参无返回值、带参无返回值、无参有返回值、带参有返回值

构造函数:有参构造函数、无参构造函数

方法重载

静态方法

对象间互操作

对象相互协同工作,共同完成软件功能

封装

消息传递

值类型和引用类型

C#数据类型

基本数据类型

枚举

结构

泛型

接口

集合

列表

ArrayList

List

02,字典

哈希表Hashtable

字典Dictionary

03,队列

Queue

04,栈

Stack

显示控件数据绑定

DataGridView控件

绑定列表集合List

设置DataSource属性为BindingList对象

绑定字典集合Dictionary

借助BindingSource对象设置DataSource

ListView控件

绑定集合信息

体检套餐管理系统

关键思路和代码分析:

首先可以功能提取出两个类,一个是 HealthCheckItem (检查项目类)和HealthCheckItem(体检套餐类)。首先我们要理清两个类的关系,一项套餐中可以包含多项项目检查。

HealthCheckItem:包括项目名称、单价和描述3个属性

例如:肝功能、用于检查肝功能、60

然后写一个带参构造函数,对这三个字段赋值

HealthCheckSet:包括要检查的项目、套餐名称、总价(所有要检查项目之和)

所以这里我们就要考虑检查项目的类型:

可以定义一个泛型集合来存储项目的类型,如List

然后写2个构造函数对List

进行初始化,如下

最后该类还需要一个套餐总价计算方法

窗体加载时需要初始化几个项目:

查看、删除套餐体检项目

编写UpdateSet(HealthCheckSet set)方法,实现DataGridView控件重新绑定集合对象

体检项目变更时,需要调用CalcPrice()方法重新计算总价

关键代码:

添加体检项目

从体检项目中选择一项,单击“添加”按钮,将选中项添加到泛型集合,并重新绑定DataGridView

重点:判断添加的体检项目在现有套餐中是否存在

新建套餐

需求说明:录入套餐名称,点击“确定”,将新建的套餐添加到套餐集合。

体检套餐管理系统思路剖析

今天我们来看下体检套餐管理系统如何书写!

首先我们来看下系统的效果图,如下

我们需要清楚的是该项目主要练习泛型集合List和Dictionary的用法,以该项目为依托,让我们对内存中数据的存在结构更加清晰。

书写该系统前,大家先不必考虑功能如何实现,而是先将需求搞清楚,当需求明确后,功能就变得简单了。

需求:为了提高医务人员的工作效率,我们需要开发一款管理系统。我们都知道一个套餐可以包含多个体检项目,就如大家购买的手机套餐:提供了免费短信和流量等多项服务。

思路剖析:

1.根据需求分析,我们可以提取出两个类,一个是套餐类(HealthCheckSet),一个是体检项目类(HealthCheckItem ).

体检项目类:

套餐类(HealthCheckSet)内容:

在窗体中做一些初始化工作

首先,我们知道套餐可能有N个,体检项目也有很多,所以我们需要考虑使用集合来存储对应的数据。如下在内存中定义一些容器来保存我们关心的数据。

当套餐下拉框选择项发生改变时,需要加载所选套餐下对应的体检项目。

分析到这里相信大家对这个项目已的思路已经有了一定的了解,剩下的内容就由大家来完成了。

总结:当我们拿到一个项目的时候首先要分析需求和总体任务,然后设计合适的类,满足需求和任务,之后就是实例化对象,做一些初始化数据;最后通过外部触发,驱动对象操作。例如用户选择某个套餐后,该套餐的相关信息通过控件展示到用户眼前。

接下来  我来写一下 一些重要的代码!!

首先要先创建 两个类来存储

1.

public class HealthCheckSet

{

//HealthCheckItem的集合

public List Item { get; set; }

//套餐价格阿

public int Price { get; set; }

//套餐名称

public string Name { get; set; }

//无参构造

public HealthCheckSet() { }

//带参构造

public HealthCheckSet(string name,List item)

{

this.Name = name;

this.Item = item;

}

2.

public class HealthCheckItem

{

//项目描述

public string Description { get; set; }

//项目名称

public string Name { get; set; }

//项目价格

public int Price { get; set; }

//无参构造

public HealthCheckItem() { }

//带参构造

public HealthCheckItem(string name,string description,int price)

{

this.Name = name;

this.Price = price;

this.Description = description;

}

}

}

然后是要写在 logd事件里的东西:

//建立所有 检查项目 集合

// List Alllist = new List();

Dictionary Alllist = new Dictionary();

//建立 套餐中的 检查项目 集合

List list = new List();

//使用字典保存套餐集合

Dictionary dictionary = new Dictionary();

//初始化检查项目

HealthCheckItem item, item2, item3, item4, item5, item6, item7;

//定义一个默认套餐

HealthCheckSet moren;

//初始化检查项目的方法

public void main()

{

item = new HealthCheckItem("身高","用于检查身高",10);

item2 = new HealthCheckItem("体重","用于检查体重",5);

item3 = new HealthCheckItem("视力","用于检查视力",15);

item4 = new HealthCheckItem("听力","用于检查听力",20);

item5 = new HealthCheckItem("肝功能","用于检查肝功能",100);

item6 = new HealthCheckItem("B超","用于检查B超", 10);

item7 = new HealthCheckItem("心电图","用于检查心电图",100);

Alllist.Add(item.Name,item);

Alllist.Add(item2.Name,item2);

Alllist.Add(item3.Name,item3);

Alllist.Add(item4.Name, item4);

Alllist.Add(item5.Name,item5);

Alllist.Add(item6.Name,item6);

Alllist.Add(item7.Name,item7);

//dictionary.Add(item.Name,item);

}

//生成默认套餐数据

public void yuan()

{

list.Add(item);

list.Add(item2);

list.Add(item3);

moren = new HealthCheckSet("入学体检",list);

//计算价格

moren.CalcPrice();

this.dictionary.Add("入学体检", moren);

}

//套餐列表 下拉框的加载方法

public void combox()

{

cbm_sum.Items.Clear();

cbm_sum.Items.Add("--请选择--");

foreach (string item in dictionary.Keys)

{

cbm_sum.Items.Add(item);

}

//默认第一项为选中

cbm_sum.SelectedIndex = 0;

}

//检查项目 下拉框的加载方法

public void combox2()

{

cmb_xiang.Items.Clear();

cmb_xiang.Items.Add("--请选择--");

foreach (string item in Alllist.Keys)

{

cmb_xiang.Items.Add(item);

}

//默认第一项为选中

cmb_xiang.SelectedIndex = 0;

}

private void FrmMain_Load(object sender, EventArgs e)

{

main();

yuan();

combox();

combox2();

}

//添加套餐

private void but_add_Click(object sender, EventArgs e)

{

if (txt_name.Text!="")

{

if (dictionary.Keys.Contains(txt_name.Text))

{

MessageBox.Show("已经有该套餐了", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);

return;

}

else

{

//给health实例化

List hao = new List();

HealthCheckSet health = new HealthCheckSet();

health.Item = hao;

health.Name = "";

health.Price = 0;

this.dictionary.Add(txt_name.Text, health);

combox();

cbm_sum.Text = txt_name.Text;

txt_name.Text = "";

}

}

else

{

MessageBox.Show("添加的不能为空!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);

}

}

//填充套餐的DataGridView

public void UpdateSet(HealthCheckSet set)

{

if (set.Item == null)

{

//给DataGridView的数据源赋空值

dgv.DataSource = new BindingList();

return;

}

else

{

dgv.DataSource = new BindingList(set.Item);

}

}

//选择套餐

private void cbm_sum_SelectedIndexChanged(object sender, EventArgs e)

{

string setName = cbm_sum.Text;

if (cbm_sum.Text=="--请选择--")

{

//给DataGridView的数据源赋空值

dgv.DataSource = new BindingList();

lab_xianshiname.Text = "";

cmb_xiang.Text = "";

lab_xianshiprice.Text = "";

but_new.Enabled = false;

return;

}

else

{

lab_xianshiname.Text = setName;

if ( dictionary[setName]!=null)

{

//根据套餐名给DataGridView绑定数据

UpdateSet(dictionary[setName]);

}

else

{

//给DataGridView的数据源赋空值

dgv.DataSource = new BindingList();

}

//根据套餐名给其中的检查项求总价格

lab_xianshiprice.Text = dictionary[setName].Price.ToString();

}

}

//删除

private void but_shan_Click(object sender, EventArgs e)

{

string key = dgv.SelectedRows[0].Cells[1].Value.ToString();

this.dictionary[cbm_sum.Text].Item.Remove(Alllist[key]);

dgv.DataSource = new BindingList(dictionary[cbm_sum.Text].Item);

but_shan.Enabled = false;//删除按钮的禁用

}

public string name;

//选中

private void dgv_CellClick(object sender, DataGridViewCellEventArgs e)

{

if (dgv.SelectedRows.Count!=1||dgv.SelectedRows[0].Cells[1].Value==null)

{

MessageBox.Show("请你正确的选择一行!","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Error);

return;

}

else

{

name = dgv.SelectedRows[0].Cells[1].Value.ToString();

but_shan.Enabled = true;//删除按钮的可用

}

}

//添加项目

private void but_new_Click(object sender, EventArgs e)

{

string name = cmb_xiang.Text;

if (!dictionary[cbm_sum.Text].Item.Contains(Alllist[name]))

{

dictionary[cbm_sum.Text].Item.Add(Alllist[name]);

MessageBox.Show("添加成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);

dgv.DataSource = new BindingList(dictionary[cbm_sum.Text].Item);

dictionary[cbm_sum.Text].CalcPrice();

//根据套餐名给其中的检查项求总价格

lab_xianshiprice.Text = dictionary[cbm_sum.Text].Price.ToString();

}

else

{

MessageBox.Show("已经有该项目的存在了", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Error);

}

}

//添加按钮的 是否可用

private void cmb_xiang_SelectedIndexChanged(object sender, EventArgs e)

{

if (cmb_xiang.Text == "--请选择--"||cbm_sum.Text=="--请选择--")

{

but_new.Enabled = false;

}

else

{

but_new.Enabled = true;

}

}

private void gb_add_Enter(object sender, EventArgs e)

{

}

private void gb_main_Enter(object sender, EventArgs e)

{

}

private void txt_name_TextChanged(object sender, EventArgs e)

{

}

private void lab_name_Click(object sender, EventArgs e)

{

}

private void dgv_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

}

private void lab_xiang_Click(object sender, EventArgs e)

{

}

private void lab_xianshiprice_Click(object sender, EventArgs e)

{

}

private void lab_price_Click(object sender, EventArgs e)

{

}

private void lab_xianshiname_Click(object sender, EventArgs e)

{

}

private void labname_Click(object sender, EventArgs e)

{

}

private void lab_sum_Click(object sender, EventArgs e)

{

}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)

{

}

}

}

这就是 这个项目的大概代码 了 。

java 体检套餐_体检套餐的项目相关推荐

  1. java 体检套餐_第五章项目:体检套餐

    窗体搭建的效果图如下: 一:实现的功能主要有以下几个方面: ①:显示指定套餐的项目明细 ②:向指定套餐添加检查项目信息 ③:删除套餐中的项目信息 ④:新建套餐 二:创建体检项目维护系统中的检查项目类( ...

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

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

  3. java junit 运行_运行Junit方法项目启动不了

    从控制台看不出任何有用信息,通过JUnit右键"Copy Failure List"将信息拷贝出来 TestStart.start initializationError(org. ...

  4. java ee论文_基于JavaEE的项目管理系统毕业论文.doc

    基于JavaEE的项目管理系统毕业论文 基于JavaEE的项目管理系统的设计与实现 摘 要 企业项目管理系统是为了使企业项目能够按照预定的成本.进度.质量顺利完成,而对人员.产品.过程和项目进行分析和 ...

  5. java许愿墙_许愿墙 – javaee 项目实战(2)

    许愿墙 – javaee 项目实战(2) Technorati 标签: 许愿墙,javaee项目,java 接着上一篇 许愿墙(一),这次我们继续谈一下其具体实现. 一.分类选择心情图案 在填写许愿条 ...

  6. 2020年电信最便宜的套餐_电信套餐资费一览表2020年电信2020年的套餐资费一览表...

    中国电信公布了5G套餐资费价格,电信的5G套餐最低价格为129元,套餐内含30GB流量以及500分钟语音通话,中国电信的5G套餐总共分为 7 档, 129 元/ 169 元/ 199 元/ 239 元 ...

  7. java 李炎恢_李炎恢bootstarp_项目实战__瓢城企业(注释+源码)

    Threadlocal使用Case Threadlocal能够为每个线程分配一份单独的副本,使的线程与线程之间能够独立的访问各自副本.Threadlocal 内部维护一个Map,key为线程的名字,v ...

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

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

  9. 健康管理系统第六天(移动端开发之体检预约_经典五表联查_调用阿里云提供的短信服务进行短信验证码发送)

    一.移动端开发 1.移动端开发方式 随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地.例如,我们可以使用手机购物.支付.打车.玩游戏.订酒店.购票等, 以前只能通 ...

  10. 美年旅游_套餐管理_新增套餐

    文章目录 需求分析 2:前台代码 3:后台代码 创建表 需求分析 前台代码 弹出新增窗口 动态展示跟团游列表 图片上传并预览 提交请求 后台代码 Controller 服务接口 服务实现类 Dao接口 ...

最新文章

  1. viso 画背景框_3分钟漫画教程 | Q版漫画少女线稿,画完暖暖的
  2. 均衡发展计算机教室材料,义务教育均衡发展材料.pdf
  3. C语言和C++语言关系
  4. 《噬血代码》:一款轻度的魂Like游戏
  5. 如何测试 ASP.NET Core Web API
  6. java 延迟初始化_Java并发编程——延迟初始化占位类模式
  7. 解决 spring mvc 3.0 结合 hibernate3.2 使用tx:annotation-driven声明式事务无法提交的问题(转载)...
  8. 40vf什么意思_LED 的基本术语VF、IV、WL、IR 解释及光通量换算关系
  9. nsa php版本,mnsa网络
  10. 人工智能自然语言处理技术处理专业领域的运用
  11. iPhone X (XS XR XSMAX)如何根据状态栏上的图标 获取设备的联网状态(不是单个应用的)
  12. word插入分隔符的方法
  13. html鼠标经过图片有浮起效果,CSS实现鼠标滑过卡片上浮效果的示例
  14. Java面试题(大内)3
  15. 【习题5】用Python完成新建文档写古诗+复制
  16. Word文档 回车符去除
  17. 视频如何加水印文字?一分钟学会
  18. Zookeeper集群一致性原理(强一致性)
  19. 参数估计(二)----极大后验概率估计
  20. 模拟selelct下拉菜单(搜索框简易版)

热门文章

  1. TestBench 基本写法与框架
  2. HTML第五章课后作业,第五章 组合逻辑电路 课后习题答案详解 资料资料资料.pdf...
  3. JavaScript设计模式之享元模式
  4. 网络虚拟化之虚拟交换机技术Linux Bridge
  5. linux4.12内核 bridge简介
  6. iframe是什么?iframe用法详解。
  7. mdf文件修复工具 专业修复sql server数据库
  8. 服务器虚拟化对硬件有要求,虚拟主机对硬件有要求吗
  9. 强化学习:Markov Decision Process (基于南大俞扬博士演讲的修改和补充)
  10. 机器人的弊议论文_关于练字的作文800字高中(写字机器人的利弊议论文)