体检套餐项目解析

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 Text
{
    public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
        }
        HealthCheckItem ShenGao, TiZhong, GanGongN;

        //存储所有检查项目
        List<HealthCheckItem> AllItems = new List<HealthCheckItem>();
        //存储与套餐相关的检查项目
        List<HealthCheckItem> items = new List<HealthCheckItem>();
        //保存医院中支持的所有TC,为了绑定左侧的套餐下拉框而编写
        public Dictionary<string, TaoCan> HSet = new Dictionary<string, TaoCan>();

        public void testSet()
        {
            ShenGao = new HealthCheckItem(5, "检查身高", "身高");
            TiZhong = new HealthCheckItem(5, "检查体重", "体重");
            GanGongN = new HealthCheckItem(5, "检查肝功能", "肝功能");
            AllItems.Add(ShenGao);
            AllItems.Add(TiZhong);
            AllItems.Add(GanGongN);
        }
        //构建一个默认的套餐,并且扔到所有套餐(TC)集合中
        public void Tc()
        {
            TaoCan tc = new TaoCan();
            tc.Name = "入学体检";
            tc.Items.Add(ShenGao);
            tc.Items.Add(TiZhong);

            //请选择
            TaoCan tc2 = new TaoCan();
            tc2.Name = "请选择";

            HSet.Add(tc2.Name, tc2);
            HSet.Add(tc.Name, tc);

        }

        //更新套餐检查项目(职责分离)
        private void updateSet(TaoCan set)
        {
            dgvList.DataSource = new BindingList<HealthCheckItem>(set.Items);
        }

        //定义一个标记 判定当前Load事件是否执行完毕
        int flag = 0;
        private void FrmMain_Load(object sender, EventArgs e)
        {

            //右侧下拉框
            testSet();
            //左侧
            Tc();
            //所有下拉框中的项目Clear()
            BindingSource source = new BindingSource();
            source.DataSource = HSet.Values;
            cboSets.DisplayMember = "name";
            cboSets.ValueMember = "items";
            cboSets.DataSource = source;
            BindRightDGV();
            Console.WriteLine("");
            flag = 1;
        }

        private void BindRightDGV()
        {

            cboItems.DataSource = new BindingList<HealthCheckItem>(AllItems);
        }

        private void cboSets_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (flag == 1)
            {
                string SetName = cboSets.Text;
                if (SetName == "请选择")
                {
                    HSet[SetName].Items.Clear();
                    updateSet(HSet[SetName]);
                    // dgvList.DataSource = null;
                    lblSetName.Text = "";
                    lblSetPrice.Text = "";
                    return;
                }
                //设置套餐名称

                lblSetName.Text = HSet[SetName].Name;
                HSet[SetName].CalcPrice();
                //设置套餐总价
                lblSetPrice.Text = HSet[SetName].Price.ToString();
                //更新套餐检查项目
                updateSet(HSet[SetName]);
                //设置清楚按钮为可用状态
                btnDelete.Enabled = true;
            }
        }

        private void cboItems_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cboItems.Text != "请选择")
            {
                btnAdd.Enabled = true;
            }
            else
            {
                btnAdd.Enabled = false;
            }
        }

        private void btnTaoCanAdd_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtName.Text))
            {
                MessageBox.Show("请选择套餐名称","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
                return;
            }
            else
            {
                TaoCan Hch = new TaoCan();
                Hch.Name=txtName.Text;
                HSet.Add(Hch.Name,Hch);
                BindingSource source = new BindingSource();
                source.DataSource = HSet.Values;
                cboSets.DisplayMember = "name";
                cboSets.ValueMember = "items";
                cboSets.DataSource = source;
                MessageBox.Show("成功!");
                //将新加入的套餐默认选中
                cboSets.SelectedIndex = HSet.Count-1;
            }
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            //体检项目的名称
            if (dgvList.SelectedRows.Count>0)
            {
                string name=dgvList.SelectedRows[0].Cells[0].Value.ToString();
            foreach (HealthCheckItem item in HSet[lblSetName.Text].Items)
            {
                if (item.Name==name)
                {
                    HSet[lblSetName.Text].Items.Remove(item);
                    break;
                }
            }
            updateSet(HSet[lblSetName.Text]);
            //价格
            HSet[lblSetName.Text].CalcPrice();
            lblSetPrice.Text = HSet[lblSetName.Text].Price.ToString();
            }

        }

    }

}

1.先创建以下几个类:

套餐类:TaoCan

检查项目类:HealthCheckItem

时间: 2024-11-04 18:52:08

体检套餐项目解析的相关文章

C#体检套餐项目

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

字典集合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;

体检套餐主代码

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

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

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

体检套餐的项目

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

第五章项目:体检套餐

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

体检套餐管理项目

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

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

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 体检

体检套餐管理系统

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;