• 体检套餐管理系统


    完成效果图

    代码展示

      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.Runtime.Remoting.Messaging;
      8 using System.Text;
      9 using System.Threading.Tasks;
     10 using System.Windows.Forms;
     11 
     12 namespace 体检套餐管理系统_01
     13 {
     14     public partial class Form1 : Form
     15     {
     16         public Form1()
     17         {
     18             InitializeComponent();
     19         }
     20         //定义检查项目
     21         private HealthCheckItem height, weight, sight, hearing, liverFun, ekg, bWaves, bloodPressure, bloodTest;
     22 
     23         //默认检查套餐“入学体检”
     24         private HealthCheckSet setA;
     25 
     26         //保存所有的体检项目
     27         List<HealthCheckItem> AllItems = new List<HealthCheckItem>();
     28 
     29         //保存套餐中的体检项目,和套餐相关的项目
     30         List<HealthCheckItem> item = new List<HealthCheckItem>();
     31 
     32         //使用字典保存套餐集合
     33         public Dictionary<string,HealthCheckSet> HealthSet=new Dictionary<string, HealthCheckSet>();
     34 
     35 
     36 
     37         private void btnOK_Click(object sender, EventArgs e)
     38         {
     39             if (string.IsNullOrEmpty(txtHealthName.Text))
     40             {
     41                 MessageBox.Show("请输入套餐名称", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
     42                 return;
     43             }
     44             else
     45             {
     46                 //声明一数组
     47                 HealthCheckSet Hch = new HealthCheckSet();
     48 
     49                 this.HealthSet.Add(this.txtHealthName.Text,Hch);
     50                 this.InitHealthSetList();
     51                 //向下拉框显示添加的内容
     52                 this.cboSets.SelectedIndex = this.HealthSet.Count;
     53                 lblSetName.Text = cboItems.Text;
     54                 Hch.Name = cboSets.Text;
     55 
     56                 MessageBox.Show("添加成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
     57             }
     58         }
     59 
     60         public void InitItems()
     61         {
     62             height = new HealthCheckItem("身高", 500, "用于检查身高");
     63             weight = new HealthCheckItem("体重", 500, "用于检查体重.");
     64             sight = new HealthCheckItem("视力", 1000, "用于检查视力.");
     65             hearing = new HealthCheckItem("听力", 100, "用于检查听力.");
     66             liverFun = new HealthCheckItem("肝功能", 50000, "用于检查肝功能.");
     67             bWaves = new HealthCheckItem("B超", 30000, "用于检查B超.");
     68             ekg = new HealthCheckItem("心电图", 500000, "用于检查心电图.");
     69             bloodPressure = new HealthCheckItem("血压", 2000000, "用于检查血压.");
     70             bloodTest = new HealthCheckItem("血常规", 9999999, "用于检查血常规.");
     71 
     72             AllItems.Add(height);
     73             AllItems.Add(weight);
     74             AllItems.Add(sight);
     75             AllItems.Add(hearing);
     76             AllItems.Add(liverFun);
     77             AllItems.Add(bWaves);
     78             AllItems.Add(ekg);
     79             AllItems.Add(bloodPressure);
     80             AllItems.Add(bloodTest);
     81         }
     82         //默认套餐数据
     83         private void InitSets()
     84         {
     85             item = new List<HealthCheckItem>();
     86             item.Add(height);
     87             item.Add(weight);
     88             item.Add(liverFun);
     89 
     90             setA = new HealthCheckSet("入学体检",item);
     91 
     92             setA.CalcPrice();
     93             this.HealthSet.Add("入学体检",setA);
     94         }
     95         //加载体检套餐下拉列表
     96         private void InitHealthSetList()
     97         {
     98             //清空下拉列表
     99             this.cboSets.Items.Clear();
    100             this.cboSets.Items.Add("请选择");
    101 
    102             foreach (string key in this.HealthSet.Keys)
    103             {
    104                 this.cboSets.Items.Add(key);
    105             }
    106             this.cboSets.SelectedIndex = 0;
    107 
    108         }
    109 
    110         private void UpdateSet(HealthCheckSet set)
    111         {
    112             dgvHealthList.DataSource = new BindingList<HealthCheckItem>(set.Items);
    113         }
    114 //实现添加项目的操作,首先判断集合中是否已经存在要添加的项目了,如果要添加的项目不在集合中,则执行添加操作。其次,从allitems所有体检项目的集合中提取数据,使用foreach遍历,如果被选择的项目等于allitems中的项目,将此项目添加到HealItem项的集合中去,并且改变价格,刷新datagridview控件
    115         private void btnAdd_Click(object sender, EventArgs e)
    116         {
    117             if (this.cboItems.SelectedIndex == 0)
    118             {
    119                 MessageBox.Show("请选择一个项目");
    120                 return;
    121             }
    122             string cboSetText = this.cboSets.Text;
    123             if (cboSetText == "请选择")
    124             {
    125                 MessageBox.Show("请选择套餐!");
    126                 return;
    127             }
    128             int index = this.cboItems.SelectedIndex - 1;
    129             if (!this.HealthSet[cboSetText].Items.Contains(AllItems[index]))
    130             {
    131                 this.HealthSet[cboSetText].Items.Add(AllItems[index]);
    132                 this.HealthSet[cboSetText].CalcPrice();
    133                 UpdateSet(this.HealthSet[cboSetText]);
    134                 this.lblSetName.Text = this.HealthSet[cboSetText].Name;  //刷新窗体集合A名称
    135                 this.lblSetPrice.Text = this.HealthSet[cboSetText].Price.ToString();    //刷新集合A价格
    136                 MessageBox.Show("添加成功。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
    137             }
    138             else
    139             {
    140                 MessageBox.Show("该项目存在", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
    141             }
    142 
    143             }
    144        \ 实现删除套餐中的项目的功能,setName是套餐下拉框中所有项的文本的集合。item[setName].Item是指HealItems中所有项的集合,datagridview控件中加载的也是HealItems项的集合,所以可以根据datagridview中被选中行的下表来删除集合中的数据。并且重新加载标签中的价格
    145         private void btnDel_Click(object sender, EventArgs e)
    146         {
    147             string setgName = this.cboSets.Text;
    148             if (this.dgvHealthList.SelectedRows.Count == 0)
    149             {
    150                 MessageBox.Show("没有选择删除项","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
    151                 return;
    152             }
    153             //获取选中的项目的索引
    154             int index = this.dgvHealthList.SelectedRows[0].Index;
    155             //删除检查项
    156             this.HealthSet[setgName].Items.RemoveAt(index);
    157             //重新计算价格
    158             this.HealthSet[setgName].CalcPrice();
    159             //更新DateGridView显示
    160             UpdateSet(HealthSet[setgName]);
    161             //重设标签显示
    162             lblSetName.Text = setA.Name;
    163             string cboSetText = this.cboSets.Text;
    164             lblSetPrice.Text = this.HealthSet[cboSetText].Price.ToString();
    165             MessageBox.Show("删除成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
    166 
    167 
    168         }
    169 
    170         private void cboItems_SelectedIndexChanged(object sender, EventArgs e)
    171         {
    172             if (this.cboSets.Text != "请选择")
    173             {
    174                 this.btnAdd.Enabled = true;
    175             }
    176             else
    177             {
    178                 this.btnAdd.Enabled = false;
    179             }
    180         }
    181 //
    182         private void cboSets_SelectedIndexChanged(object sender, EventArgs e)
    183         {
    184             string setName = this.cboSets.Text;
    185             if (setName == "请选择")
    186             {
    187                 this.dgvHealthList.DataSource = null;
    188                 lblSetName.Text = "";
    189                 lblSetPrice.Text = "";
    190                 return;
    191             }
    192             //设置套餐名称
    193             lblSetName.Text = this.HealthSet[setName].Name;
    194             //设置套餐总价
    195             lblSetPrice.Text = this.HealthSet[setName].Price.ToString();
    196             //更新套餐检查项目
    197             UpdateSet(HealthSet[setName]);
    198             //删除按钮为可用状态
    199             btnDel.Enabled = true;
    200         }
    201 
    202         private void Form1_Load(object sender, EventArgs e)
    203         {
    204             this.lblSetName.Text = "";
    205             //设置套餐总价的值为空
    206             this.lblSetPrice.Text = "";
    207             btnAdd.Enabled = false;
    208             btnDel.Enabled = false;
    209             //默认初始化所有检查项目
    210             InitItems();
    211             //默认初始化套餐
    212             InitSets();
    213             //加载下拉列表
    214             InitHealthSetList();
    215             dgvHealthList.AutoGenerateColumns = false;
    216         }
    217         }
    218     }
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 
     6 namespace 体检套餐管理系统_01
     7 {
     8     public  class HealthCheckSet
     9     {
    10         public HealthCheckSet()
    11         {
    12             items = new List<HealthCheckItem>();
    13         }
    14         public HealthCheckSet(string name, List<HealthCheckItem> items)
    15         {
    16             this.Name = name;
    17             this.items = items;
    18         }
    19 
    20         //套餐价格
    21         private int price;
    22         //检查项目
    23         private List<HealthCheckItem> items;
    24         private string name;
    25 
    26         public string Name
    27         {
    28             get { return name; }
    29             set { name = value; }
    30         }
    31 
    32         public List<HealthCheckItem> Items
    33         {
    34             get { return items; }
    35             set { items = value; }
    36         }
    37 
    38         public int Price
    39         {
    40             get { return price; }
    41             set { price = value; }
    42         }
    43         //套餐计算方法
    44         public void CalcPrice()
    45         {
    46             int totalPrice = 0;
    47             foreach (HealthCheckItem item in items)
    48             {
    49                 totalPrice += item.Price;
    50             }
    51             this.price = totalPrice;
    52         }
    53     }
    54 }
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace 体检套餐管理系统_01
    {
       public  class HealthCheckItem
       {
           private int price;
           private string descripion;
           private string description;
    
           private string name;
    
           public string Name
           {
               get { return name; }
               set { name = value; }
           }
    
           public int Price
           {
               get { return price; }
               set { price = value; }
           }
    
           public string Description
           {
               get { return description; }
               set { description = value; }
           }
    
           public HealthCheckItem(string name, int price, string description)
           {
               //this
               this.Name = name;
               this.Description = description;
               this.Price = price;
           }
       }
    
    }
    更多详情请关注 http://www.cnblogs.com/baixingqiang/
  • 相关阅读:
    【百度地图API】让用户选择起点和终点的驾车导航
    JS解决通过按钮切换图片的问题
    JavaScript (JS)基础:DOM 浅析 (含数组Array、字符串String基本方法解析)
    JavaScript (JS)基础:ECMAScript 浅析 (含Math基本方法解析)
    感谢Sylvia的技术支持
    0904 存储过程、触发器、事务、视图、生成脚本
    0903 连接查询
    0901 子查询
    0831 模糊查询,排序查询,聚合函数,时间日期函数,数学函数,字符串函数
    0829 数据库的增删改查
  • 原文地址:https://www.cnblogs.com/baixingqiang/p/5368229.html
Copyright © 2020-2023  润新知