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("身高","用于检查身高",12),
           new HC("体重","用于检查体重",10),
           new HC("肝功能","用于检查肝功能",50),
           new HC("B超","用于检查身体内部",120),
           new HC("心电图","用于检查心电图",150),
           new HC("听力","用于检查听力",20),
        };
        //声明一个双列集合,用于保存体检套餐,套餐名为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 = 0;
            foreach (string item in hc2.Keys)
            {
                if (item == txt1.Text)
                {  error = 1;

                }
            }
            if(txt1.Text!=""&&error!=1)
            {
                hc2.Add(txt1.Text, new List<HC>());
                info();
                MessageBox.Show("添加成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            else if (error == 1)
            {
                MessageBox.Show("已经有该套餐了不能再次添加", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            else
            {
                MessageBox.Show("套餐名不能为空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

            }
        }
        //向选中的体检套餐添加体检项目的方法
        private void button2_Click(object sender, EventArgs e)
        {
            int error = 0;
            foreach (string item in hc2.Keys)
            {
                if (item == cbo1.Text)
                {
                    for (int i = 0; i < hc2[item].Count; i++)
                    {
                        if (hc2[item][i].Name == cbo2.Text)
                        {
                            error = 1;
                        }
                    }
                }
            }
            HC h = new HC();
            if (cbo1.Text != "" && cbo2.Text !=""&&error==0)
            {
                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 == 1)
            {
                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 = 0;

            foreach (string item in hc2.Keys)
            {
                if (cbo1.SelectedItem.ToString() == item)
                {
                    for (int i = 0; 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 >= 0)
                        {
                            for (int i = 0; i < hc2[item].Count; i++)
                            {
                                if (hc2[item][i].Name == dataGridView1.SelectedRows[0].Cells[0].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)
        {

        }
    }
}
 
时间: 2024-10-16 12:18:31

C#体检套餐项目的相关文章

字典集合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 Text { public partial clas

体检套餐主代码

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;