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

删除选中的体检项目:

在套餐列表中选择体检套餐可以查看具体的体检项目和套餐价格:

不能添加重复的套餐,每个套餐不能有重复的体检项目:


下面是代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace 体检套餐系统
{
public class HC
{
//体检项目类
public HC()
{
}
//代参构造方法用于初始化成员变量
public HC(string name, string desc, int price)
{
this.Name = name;
this.Price = price;
this.Desc = desc;
}
public string Name { get; set; }
public string Desc { get; set; }
public int Price { get; set; }
}
}
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 体检套餐系统
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//声明一个HC类型的集合,保存初始化后的体检项目
List<HC> hc1 = new List<HC>()
{
new HC("身高","用于检查身高",),
new HC("体重","用于检查体重",),
new HC("肝功能","用于检查肝功能",),
new HC("B超","用于检查身体内部",),
new HC("心电图","用于检查心电图",),
new HC("听力","用于检查听力",),
};
//声明一个双列集合,用于保存体检套餐,套餐名为key,体检项目为value;
Dictionary<string, List<HC>> hc2 = new Dictionary<string, List<HC>>(); private void Form1_Load(object sender, EventArgs e)
{
//把体检项目的名称绑定在下拉列表cbo2中
foreach (HC item in hc1)
{
cbo2.Items.Add(item.Name);
}
}
//将体检套餐的名称绑定在下拉列表cbo1中
private void info()
{
cbo1.Items.Clear();
foreach (string item in hc2.Keys)
{
cbo1.Items.Add(item);
}
}
//新建体检套餐的方法
private void 新建_Click(object sender, EventArgs e)
{
int error = ;
foreach (string item in hc2.Keys)
{
if (item == txt1.Text)
{ error = ; }
}
if(txt1.Text!=""&&error!=)
{
hc2.Add(txt1.Text, new List<HC>());
info();
MessageBox.Show("添加成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else if (error == )
{
MessageBox.Show("已经有该套餐了不能再次添加", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
MessageBox.Show("套餐名不能为空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); }
}
//向选中的体检套餐添加体检项目的方法
private void button2_Click(object sender, EventArgs e)
{
int error = ;
foreach (string item in hc2.Keys)
{
if (item == cbo1.Text)
{
for (int i = ; i < hc2[item].Count; i++)
{
if (hc2[item][i].Name == cbo2.Text)
{
error = ;
}
}
}
}
HC h = new HC();
if (cbo1.Text != "" && cbo2.Text !=""&&error==)
{
foreach (HC item in hc1)
{
if (item.Name == cbo2.Text)
{
h = item;
}
}
foreach (string item in hc2.Keys)
{
if (item == cbo1.Text)
{
hc2[item].Add(h); }
}
}
else if (error == )
{
MessageBox.Show("不能有重复的体检项目", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
MessageBox.Show("请补全体检套餐信息", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
info1();
} private void cbo1_SelectionChangeCommitted(object sender, EventArgs e)
{
info1();
}
//动态更新体检套餐的方法
private void info1()
{
int money = ; foreach (string item in hc2.Keys)
{
if (cbo1.SelectedItem.ToString() == item)
{
for (int i = ; i <hc2[item].Count; i++)
{
money += hc2[item][i].Price;
}
dataGridView1.DataSource = new BindingList<HC>(hc2[item]);
lb1.Text = cbo1.SelectedItem.ToString();
lb2.Text = money.ToString();
}
} }
//删除的方法
private void button3_Click(object sender, EventArgs e)
{ foreach (string item in hc2.Keys)
{
if (item == cbo1.SelectedItem.ToString())
{
if (dataGridView1.SelectedRows.Count >= )
{
for (int i = ; i < hc2[item].Count; i++)
{
if (hc2[item][i].Name == dataGridView1.SelectedRows[].Cells[].Value.ToString())
{
DialogResult dr = MessageBox.Show("是否删除", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);
if (dr == DialogResult.Yes)
{
hc2[item].RemoveAt(i);
info1();
MessageBox.Show("删除成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
}
}
} }
} private void txt1_TextChanged(object sender, EventArgs e)
{ } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{ }
}
}
C#体检套餐项目的更多相关文章
- 字典集合Dictionary<K,V>和构造的应用==>>体检套餐项目
效果 首先,我们先来准备我们需要的类 1.检查项目类 using System; using System.Collections.Generic; using System.Linq; using ...
- 大型三甲医院医疗体检信息管理系统源码 PEIS 体检科软件 CS
详情请点击查看 开发环境 :VS2008 + C# + SQL2000 功能介绍: 1:设置:操作员设置 系统功能设置 用户组权限设置 公告打印设置 数据字典设置 临床类型设置 体检 ...
- 【深入学习.Net】.泛型集合【体检管理系统】
基于泛型List的体检管理系统(蜗牛爬坡) 第五章[体检管理系统] 一.项目展示图(基于.net core6.0) 二.首先准备两个Model类 HealthCheckItem(项目类):Name(项 ...
- S2---深入.NET平台和C#编程的完美总结
1.NET简单解说 l 面向对象提升 OOP(Object Oriented Programming)面向对象编程 AOP:(Aspache Oriented Programming):面向切面编 ...
- 2014年5月份第4周51Aspx源码发布详情
最基本wcf服务器与客户端交互源码 2014-5-26 [VS2003]源码描述:本示例讲解的是最基本的wcf语法,示例浏览请先运行服务端,然后在运行客户端,适合想要学习wcf的初学者.仅供借鉴,欢 ...
- 对于家政020 APP平台如何走出资本寒冬?
成都亿合科技小编了解到,随着O2O烧钱大战过去,网络上流传的一份O2O项目死亡名单上显示,近年来,汽车.社区.旅游.教育等16个领域的多个O2O项目关门大吉,仅外卖餐饮O2O项目倒闭的就有十几个.只有 ...
- impdp因致命错误终止 ORA-7445 [kpodpals]
基本要素 前天好不easy成功给用户把数据全库导出,今天用户又告知导出的数据无法导入,首先就问用户有什么错误提示,给我的回答是就一个'作业"SYSTEM"."SYS_IM ...
- iPhone 6/6 Plus国行版开卖当日抢购攻略
在距离苹果首批发售时隔一个月也就是北京时间10月17日,苹果iPhone 6.iPhone 6 Plus终于也要在中国大陆开卖,众多国内用户终于有机会安排自己的购机计划.据不完全数据显示,目前iPho ...
- MyBatis-xml配置SQL文件中,传入List数组、基本类型String、int……、与自定义类型的方法
//基本类型 @Override public String queryItemNumber(String packId) throws Exception { // TODO Auto-genera ...
随机推荐
- 使用UICollectionView实现首页的滚动效果
实现类似这样的效果,可以滚动大概有两种实现方案 1. 使用scrollview来实现 2. 使用UICollectionView来实现 第一种比较简单,而且相对于性能来说不太好,于是我们使用第二种方案 ...
- 基于hexo+github搭建一个独立博客
一直听说用hexo搭建一个拥有自己域名的博客是很酷炫的事情~,在这十一花上半个小时整个hexo博客岂不美哉. 使用Hexo吸引我的是,其简单优雅, 而且风格多变, 适合程序员搭建个人博客,而且支持多平 ...
- Mysql5.6 online ddl
Innodb性能改善方面: --Users can add indexes and perform standard table alterations while the database rema ...
- PID控制
PID解释: 位置式: 可以看出,比例部分只与当前的偏差有关,而积分部分则是系统过去所有偏差的累积.位置式PI调节器的结构清晰,P和I两部分作用分明,参数调整简单明了.但直观上看,要计算第拍 ...
- .NET平台上插拔姿势的AOP
AOP概述 AOP技术的诞生并不算晚,早在1990年开始,来自Xerox Palo Alto Research Lab(即PARC)的研究人员就对面向对象思想的局限性进行了分析.他们研究出了一种新的编 ...
- ASP.NET使用HttpModule压缩并删除空白Html请求
当我们压缩我的Response后再传到Client端时,可以明显节省宽带. 提升Site的性能. 现在的浏览器大部分都支持Gzip,Deflate压缩. 同时我们还可以删除一些空白段,空行,注释等以使 ...
- es6学习笔记一数组(上)
最近公司没什么事情,我们老大让我看看es6,小颖就练习了下数组的各个方法,今天先给大家分享一部分.嘻嘻,希望对大家有所帮助. every方法: 概述: every() 方法测试数组的所有元素是否 ...
- 使用CoreProfiler/NanoProfiler实现跨平台&应用的整合性能调试
摘要 NanoProfiler是一个开源.NET性能调试类库,CoreProfiler是其.NET Core版本的实现.在之前的一些文章中,我曾介绍过NanoProfiler的主要使用方式,以及如何为 ...
- 一款批量修改AE模板的工具
一.需求分析 对于视频后期剪辑及相关从业人员来说,AE(After Effects)模板效果是一个不错的开始点.在模板效果的基础上,可以很快的做出各种炫酷的后期效果.但是在网上下载的模板工程中,往往包 ...
- Basic Tutorials of Redis(7) -Publish and Subscribe
This post is mainly about the publishment and subscription in Redis.I think you may subscribe some o ...