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 ...
随机推荐
- 挑子学习笔记:对数似然距离(Log-Likelihood Distance)
转载请标明出处:http://www.cnblogs.com/tiaozistudy/p/log-likelihood_distance.html 本文是“挑子”在学习对数似然距离过程中的笔记摘录,文 ...
- 支持高并发的IIS Web服务器常用设置
适用的IIS版本:IIS 7.0, IIS 7.5, IIS 8.0 适用的Windows版本:Windows Server 2008, Windows Server 2008 R2, Windows ...
- 《你不知道的JavaScript》整理(三)——对象
一.语法 两种形式定义:文字形式和构造形式. //文字形式 var myObj = { key: value }; //构造形式 var myObj = new Object(); myObj.key ...
- Properties操作指南
一.简介: Properties是java中用的比较多的一个类,表示一个持久的属性集.继承于Hashtable,Properties可从流中加载,也可保存在流中.属性列表中每个键极其对应值共同组成一个 ...
- Web安全相关(二):跨站请求伪造(CSRF/XSRF)
简介 CSRF(Cross-site request forgery跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对 ...
- ThreadLocal 工作原理、部分源码分析
1.大概去哪里看 ThreadLocal 其根本实现方法,是在Thread里面,有一个ThreadLocal.ThreadLocalMap属性 ThreadLocal.ThreadLocalMap t ...
- ASP.NET Core 中文文档 第四章 MVC(01)ASP.NET Core MVC 概览
原文:Overview of ASP.NET Core MVC 作者:Steve Smith 翻译:张海龙(jiechen) 校对:高嵩 ASP.NET Core MVC 是使用模型-视图-控制器(M ...
- Docker for Windows使用简介
在上一篇文章中,通过演练指导的方式,介绍了在Docker中运行ASP.NET Core Web API应用程序的过程.本文将介绍Docker for Windows的使用. 先决条件 前两周时间,Do ...
- 第三篇 Entity Framework Plus 之 Query Cache
离上一篇博客,快一周,工作太忙,只能利用休息日来写一些跟大家分享,Entity Framework Plus 组件系列文章,之前已经写过两篇 第一篇 Entity Framework Plus 之 A ...
- 第二篇 Entity Framework Plus 之 Query Future
从性能的角度出发,能够减少 增,删,改,查,跟数据库打交道次数,肯定是对性能会有所提升的(这里单纯是数据库部分). 今天主要怎样减少Entity Framework查询跟数据库打交道的次数,来提高查询 ...