主窗体类代码 frmFruitShopping.cs
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.Windows.Forms;
9 using System.IO;
10
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.Windows.Forms;
9 using System.IO;
10
11 namespace 水果店结账系统
12 {
13 public partial class frmFruitShopping : Form
14 {
15 // new 一个泛型list 里面装载了 ProductAttribute的构造函数
16 List<ProductAttribute> productList;
17 public frmFruitShopping()
18 {
19 InitializeComponent();
20 //在窗体加载的时候 触发它
21 productList = new List<ProductAttribute>();
22 string strRead; //创建一个字符串 用来接受读取的数据
23 // 创建FileStream文件流 可以用来读取任何文件 其内部读取格式是 最原始的字节
24 FileStream fs = File.OpenRead("fruits.txt");
25 //通过流读取来读取fs文件里的东西,并将 文字格式设置为默认的ANSI编码
26 StreamReader sr = new StreamReader(fs, Encoding.Default);
27 //用while循环来 一行行读取 如果读到的内容不为空 则进入循环 否则不读
28 while ((strRead = sr.ReadLine()) != null)
29 {
30 //这里用到了个字符串分割 每行都有几个参数 通过'-' 隔开 分割后存到一个数组里
31 string[] part = strRead.Split('-');
32 //new一个 构造方法来装载 这些参数
33 ProductAttribute pa = new ProductAttribute(part[0], (float)Convert.ToDouble(part[1]),
34 Convert.ToInt32(part[2]), Convert.ToInt32(part[3]));
35 //将 装载的参数 存到 一个装有数据结构的泛型list中
36 productList.Add(pa);
37 }
38 sr.Close(); //当读取完数据后 关闭读取器 节省内存
39 }
40 //用一个浮点型的list泛型 来装载 所有的开销
41 List<float> TotalCost = new List<float>();
42 //定义一个 可以容纳12个整数的整型数组 用于装载 每样产品的点击数
43 int[] intQuantity = new int[12];
44 //printCost() 方法 用于记录按钮点击数(即每样物品的购买数) 以及在listbox中打印出 购买物品和价格
45 //同时把 购买的物品 添加到 泛型list里 方便后期计算总价
46 public void printCost(int i)
47 {
48 intQuantity[i]++;
49 lstMenu.Items.Add("您购买了\t" + productList[i].Name + "\t " + productList[i].Price + "元/斤");
50 TotalCost.Add(productList[i].Price);
51 }
52
53 //每个按钮下 都调用了一个 printCost();方法
54 //传入的整型参数 是购物品在泛型里的位置 同时也是 intQuantity的索引位置
55 private void btnApple_Click(object sender, EventArgs e)
56 {
57 printCost(0);
58 }
59
60 private void btnOrange_Click(object sender, EventArgs e)
61 {
62 printCost(1);
63 }
64
65 private void btnPear_Click(object sender, EventArgs e)
66 {
67 printCost(2);
68 }
69
70 private void btnbanana_Click(object sender, EventArgs e)
71 {
72 printCost(3);
73 }
74
75 private void btnHawthorn_Click(object sender, EventArgs e)
76 {
77 printCost(4);
78 }
79
80 private void btnHoneyPeach_Click(object sender, EventArgs e)
81 {
82 printCost(5);
83 }
84
85 private void btnCoconut_Click(object sender, EventArgs e)
86 {
87 printCost(6);
88 }
89
90 private void btnFig_Click(object sender, EventArgs e)
91 {
92 printCost(7);
93 }
94
95 private void btnGrape_Click(object sender, EventArgs e)
96 {
97 printCost(8);
98 }
99
100 private void btnLitchi_Click(object sender, EventArgs e)
101 {
102 printCost(9);
103 }
104
105 private void btnPlum_Click(object sender, EventArgs e)
106 {
107 printCost(10);
108 }
109
110 private void btnPomelo_Click(object sender, EventArgs e)
111 {
112 printCost(11);
113 }
12 {
13 public partial class frmFruitShopping : Form
14 {
15 // new 一个泛型list 里面装载了 ProductAttribute的构造函数
16 List<ProductAttribute> productList;
17 public frmFruitShopping()
18 {
19 InitializeComponent();
20 //在窗体加载的时候 触发它
21 productList = new List<ProductAttribute>();
22 string strRead; //创建一个字符串 用来接受读取的数据
23 // 创建FileStream文件流 可以用来读取任何文件 其内部读取格式是 最原始的字节
24 FileStream fs = File.OpenRead("fruits.txt");
25 //通过流读取来读取fs文件里的东西,并将 文字格式设置为默认的ANSI编码
26 StreamReader sr = new StreamReader(fs, Encoding.Default);
27 //用while循环来 一行行读取 如果读到的内容不为空 则进入循环 否则不读
28 while ((strRead = sr.ReadLine()) != null)
29 {
30 //这里用到了个字符串分割 每行都有几个参数 通过'-' 隔开 分割后存到一个数组里
31 string[] part = strRead.Split('-');
32 //new一个 构造方法来装载 这些参数
33 ProductAttribute pa = new ProductAttribute(part[0], (float)Convert.ToDouble(part[1]),
34 Convert.ToInt32(part[2]), Convert.ToInt32(part[3]));
35 //将 装载的参数 存到 一个装有数据结构的泛型list中
36 productList.Add(pa);
37 }
38 sr.Close(); //当读取完数据后 关闭读取器 节省内存
39 }
40 //用一个浮点型的list泛型 来装载 所有的开销
41 List<float> TotalCost = new List<float>();
42 //定义一个 可以容纳12个整数的整型数组 用于装载 每样产品的点击数
43 int[] intQuantity = new int[12];
44 //printCost() 方法 用于记录按钮点击数(即每样物品的购买数) 以及在listbox中打印出 购买物品和价格
45 //同时把 购买的物品 添加到 泛型list里 方便后期计算总价
46 public void printCost(int i)
47 {
48 intQuantity[i]++;
49 lstMenu.Items.Add("您购买了\t" + productList[i].Name + "\t " + productList[i].Price + "元/斤");
50 TotalCost.Add(productList[i].Price);
51 }
52
53 //每个按钮下 都调用了一个 printCost();方法
54 //传入的整型参数 是购物品在泛型里的位置 同时也是 intQuantity的索引位置
55 private void btnApple_Click(object sender, EventArgs e)
56 {
57 printCost(0);
58 }
59
60 private void btnOrange_Click(object sender, EventArgs e)
61 {
62 printCost(1);
63 }
64
65 private void btnPear_Click(object sender, EventArgs e)
66 {
67 printCost(2);
68 }
69
70 private void btnbanana_Click(object sender, EventArgs e)
71 {
72 printCost(3);
73 }
74
75 private void btnHawthorn_Click(object sender, EventArgs e)
76 {
77 printCost(4);
78 }
79
80 private void btnHoneyPeach_Click(object sender, EventArgs e)
81 {
82 printCost(5);
83 }
84
85 private void btnCoconut_Click(object sender, EventArgs e)
86 {
87 printCost(6);
88 }
89
90 private void btnFig_Click(object sender, EventArgs e)
91 {
92 printCost(7);
93 }
94
95 private void btnGrape_Click(object sender, EventArgs e)
96 {
97 printCost(8);
98 }
99
100 private void btnLitchi_Click(object sender, EventArgs e)
101 {
102 printCost(9);
103 }
104
105 private void btnPlum_Click(object sender, EventArgs e)
106 {
107 printCost(10);
108 }
109
110 private void btnPomelo_Click(object sender, EventArgs e)
111 {
112 printCost(11);
113 }