【深入学习.Net】.泛型集合【体检管理系统】

基于泛型List的体检管理系统(蜗牛爬坡)

第五章【体检管理系统】

  一、项目展示图(基于.net core6.0)

 

 

      二、首先准备两个Model类  

  • HealthCheckItem(项目类):Name(项目名称)、Description(项目描述)、Price(当前项目价格)
  • HealthCheckSet(套餐类):Name(套餐名称)、Items(套餐项目集合)、Price(套餐项目总价格)
  • 代码如下
     1 /// <summary>
     2     /// 检查项目类
     3     /// </summary>
     4     public class HealthCheckItem
     5     {
     6         public HealthCheckItem(string name, string description, decimal price)
     7         {
     8             Name = name;
     9             Description = description;
    10             Price = price;
    11         }
    12 
    13         /// <summary>
    14         /// 项目名称
    15         /// </summary>
    16         public string Name { get; set; }
    17         /// <summary>
    18         /// 项目描述
    19         /// </summary>
    20         public string Description { get; set; }
    21         /// <summary>
    22         /// 项目价格
    23         /// </summary>
    24         public decimal Price { get; set; }
    25     }
    View Code
     1     /// <summary>
     2     /// 套餐类
     3     /// </summary>
     4     public class HealthCheckSet
     5     {
     6         /// <summary>
     7         /// 套餐名称
     8         /// </summary>
     9         public string Name { get; set; }
    10         
    11         /// <summary>
    12         ///套餐包含的项目 
    13         /// </summary>
    14         public List<HealthCheckItem> Items { get; set; }
    15 
    16         /// <summary>
    17         /// 包含项目的总价
    18         /// </summary>
    19         public decimal Price { get; set; }
    20 
    21         /// <summary>
    22         /// 计算总价的方法
    23         /// </summary>
    24         public void CalcPrice()
    25         {
    26             decimal totalPrice = 0;
    27             foreach (var item in Items)
    28             {
    29                totalPrice+=item.Price; 
    30             }
    31             this.Price = totalPrice;
    32         }
    33 
    34         public HealthCheckSet()
    35         {
    36             Items = new List<HealthCheckItem>();
    37         }
    38         public HealthCheckSet(string name, List<HealthCheckItem> items)
    39         {
    40             Name = name;
    41             Items = items;
    42         }
    43     }
    View Code

 

  三、首先创建两个项目对象集合,在添加多个初始项目对象

   
1    private List<HealthCheckItem> AllItems = new List<HealthCheckItem>(); //所有项目对象集合
2         private List<HealthCheckItem> items = new List<HealthCheckItem>();// 套餐项目集合
3         private HealthCheckItem item1, item2, item3, item4, item5, item6, item7; //初始项目
View Code

 

  四、创建套餐对象、和套餐对象集合

    
1  private HealthCheckSet healthSet; //初始套餐对象
2         private List<HealthCheckSet> healthSets = new List<HealthCheckSet>(); //套餐对象集合
View Code

    五、直接上代码(Tips:本项目无需点击添加相应控件事件)

    
  1         public FrmMain()
  2         {
  3             InitializeComponent();
  4             Load += FrmMain_Load;
  5         }
  6 
  7         /// <summary>
  8         /// 窗体加载事件
  9         /// </summary>
 10         /// <param name="sender"></param>
 11         /// <param name="e"></param>
 12         private void FrmMain_Load(object? sender, EventArgs e)
 13         {
 14             btnAdd.Enabled = false;
 15             btnDelete.Enabled = false;
 16             ComboBox();
 17             HealthTao();
 18             btnNameAdd.Click += BtnNameAdd_Click;
 19             btnAdd.Click += BtnAdd_Click;
 20             cbNameList.SelectedIndexChanged += CbNameList_SelectedIndexChanged;
 21             btnDelete.Click += BtnDelete_Click;
 22         }
 23         /// <summary>
 24         /// 删除事件
 25         /// </summary>
 26         /// <param name="sender"></param>
 27         /// <param name="e"></param>
 28         private void BtnDelete_Click(object? sender, EventArgs e)
 29         {
 30             if (dataGridView1.SelectedRows.Count > 0)
 31             {
 32                 int index = dataGridView1.SelectedRows[0].Index;
 33                 healthSets[cbNameList.SelectedIndex].Items.RemoveAt(index);
 34                 dataGridView1.DataSource = null;
 35                 Add();
 36             }
 37             else
 38             {
 39                 MessageBox.Show("表中没有该选项!");
 40                 cbHealthList.SelectedIndex = 0;
 41             }
 42         }
 43 
 44         /// <summary>
 45         /// 套餐列表选中改变事件
 46         /// </summary>
 47         /// <param name="sender"></param>
 48         /// <param name="e"></param>
 49         private void CbNameList_SelectedIndexChanged(object? sender, EventArgs e)
 50         {
 51             if(cbNameList.Text != String.Empty)
 52             {
 53                 btnAdd.Enabled = true;
 54                 btnDelete.Enabled = true;
 55                 dataGridView1.DataSource = null;
 56                 Add();
 57                 lbName.Text = cbNameList.Text;
 58             }
 59         }
 60         /// <summary>
 61         /// 套餐添加项目事件
 62         /// </summary>
 63         /// <param name="sender"></param>
 64         /// <param name="e"></param>
 65         private void BtnAdd_Click(object? sender, EventArgs e)
 66         {
 67             if (dataGridView1.SelectedRows.Count <= 0)
 68             {
 69                 cbHealthList.SelectedIndex = 0;
 70             }
 71             if (cbNameList.Text != String.Empty)
 72             {
 73                 var name = cbNameList.Text;
 74                 var heal = cbHealthList.Text;
 75                 int index = cbHealthList.SelectedIndex;
 76                 if ((healthSets[cbNameList.SelectedIndex].Items.Any(m => m.Name == heal)))
 77                 {
 78                     MessageBox.Show("已添加过该项目");
 79                 }
 80                 else
 81                 {
 82                     dataGridView1.DataSource = null;
 83                     healthSets[cbNameList.SelectedIndex].Items.Add(AllItems[index]);
 84                     Add();
 85                     MessageBox.Show("添加成功!");
 86                     int healIndex = cbHealthList.SelectedIndex;
 87                     if (healIndex < cbHealthList.Items.Count - 1)
 88                     {
 89                         cbHealthList.SelectedIndex = healIndex + 1;
 90                     }
 91                     else
 92                     {
 93                         cbHealthList.SelectedIndex = 0;
 94                     }
 95                 }
 96             }
 97             else
 98             {
 99                 MessageBox.Show("请选择相应套餐!");
100             }
101         }
102         /// <summary>
103         /// 添加套餐点击事件
104         /// </summary>
105         /// <param name="sender"></param>
106         /// <param name="e"></param>
107         private void BtnNameAdd_Click(object? sender, EventArgs e)
108         {
109             if (tbName.Text.Trim() != String.Empty)
110             {
111                 healthSet = new HealthCheckSet();
112                 healthSet.Name = tbName.Text;
113                 if (!healthSets.Any(m => m.Name == tbName.Text))
114                 {
115                     cbNameList.Items.Add(healthSet.Name);
116                     healthSets.Add(healthSet);
117                     tbName.Text = String.Empty;
118                     dataGridView1.DataSource = null;
119                     int index = cbNameList.FindString(healthSet.Name);
120                     cbNameList.SelectedIndex = index;
121                     MessageBox.Show("添加成功!");
122                 }
123                 else
124                 {
125                     MessageBox.Show("已存在该套餐了!");
126                     tbName.Text = String.Empty;
127                 }
128             }
129             else
130             {
131                 MessageBox.Show("请输入套餐名称!");
132             }
133 
134         }
135         /// <summary>
136         /// 下拉框绑定
137         /// </summary>
138         private void ComboBox()
139         {
140             item1 = new HealthCheckItem("身高", "用于检查身高", 5);
141             item2 = new HealthCheckItem("体重", "用于检查体重", 15);
142             item3 = new HealthCheckItem("视力", "用于检查视力", 5);
143             item4 = new HealthCheckItem("听力", "用于检查听力", 10);
144             item5 = new HealthCheckItem("肝功能", "用于检查肝功能", 45);
145             item6 = new HealthCheckItem("B超", "用于检查B超", 55);
146             item7 = new HealthCheckItem("心电图", "用于检查心脏", 65);
147             AllItems.Add(item1);
148             AllItems.Add(item2);
149             AllItems.Add(item3);
150             AllItems.Add(item4);
151             AllItems.Add(item5);
152             AllItems.Add(item6);
153             AllItems.Add(item7);
154             foreach (var item in AllItems)
155             {
156                 cbHealthList.Items.Add(item.Name);
157             }
158             cbHealthList.SelectedIndex = 0;
159 
160         }
161 
162         /// <summary>
163         /// 初始套餐/项目对象
164         /// </summary>
165         private void HealthTao()
166         {
167             items.Add(item1);
168             items.Add(item2);
169             items.Add(item3);
170             items.Add(item4);
171             healthSet = new HealthCheckSet("入学套餐", items);
172             healthSets.Add(healthSet);
173             cbNameList.Items.Add(healthSet.Name);
174             healthSet.CalcPrice();
175         }
176  
177         /// <summary>
178         /// 表格刷新共用方法 
179         /// </summary>
180         private void Add()
181         {
182             healthSets[cbNameList.SelectedIndex].CalcPrice();
183             lbPrice.Text = healthSets[cbNameList.SelectedIndex].Price.ToString("C2");
184             dataGridView1.DataSource = healthSets[cbNameList.SelectedIndex].Items;
185             dataGridView1.Columns["Name"].HeaderText = "项目名称";
186             dataGridView1.Columns["Description"].HeaderText = "项目描述";
187             dataGridView1.Columns["Price"].HeaderText = "项目价格";
188         }
189     }
View Code

  六、小结:本项目采用泛型集合实现,进一步对控件的使用和深入学习面向对象的编程思想,有更深的学习和了解

 

  

posted @ 2022-05-27 14:17  蜗牛向海  阅读(48)  评论(0编辑  收藏  举报