Table是怎样炼成的:SaleReport Table的继承者

有了Table,我们对其继承,实现更符合业务要求的类

1   /// <summary>
2 /// 描述一个销售报表
3 /// </summary>

4   public   class  SaleReport : Table
5   {
6
7 public SaleReport(string reportName)
8 : base(reportName, new ColumnCollection())
9 {
10
11 this.Columns.Add("序号"typeof(int), 0);
12 this.Columns.Add("姓名"typeof(string), null);
13 this.Columns.Add("商品名称"typeof(string), null);
14 this.Columns.Add("日期"typeof(DateTime), null);
15 this.Columns.Add("数量"typeof(double), null);
16 }
17
18 /// <summary>
19 /// 报表的名称
20 /// </summary>
21 public string Name
22 {
23 get
24 {
25 return this.Name;
26 }
27 }
28
29 /// <summary>
30 /// 加入数据
31 /// </summary>
32 /// <param name="staff"></param>
33 /// <param name="commodity"></param>
34 /// <param name="cash"></param>
35 public void AddRecord(string staff, string commodity, double cash)
36 {
37 Row row = this.NewRow();
38 row["序号"= this.Rows.Count + 1;
39 row["姓名"= staff;
40 row["商品名称"= commodity;
41 row["日期"= DateTime.Now;
42 row["数量"= cash;
43
44 this.Rows.Add(row);
45 }
46
47 /// <summary>
48 /// 移除数据
49 /// </summary>
50 /// <param name="index"></param>
51 public void RemoveAt(int index)
52 {
53 this.Rows.RemoveAt(index);
54 }
55
56 /// <summary>
57 /// 返回销售报表的销售金额
58 /// </summary>
59 /// <returns></returns>
60 public double GetTotal()
61 {
62 double cash = 0;
63 foreach (Row row in this.Rows)
64 {
65 cash += (double)row["数量"];
66 }
67 return cash;
68 }
69
70 /// <summary>
71 /// 返回销售报表的销售金额
72 /// </summary>
73 /// <param name="staff">销售员</param>
74 /// <returns></returns>
75 public double GetTotal(string staff)
76 {
77 double cash = 0;
78 foreach (Row row in this.Rows)
79 {
80 if ((string)row["姓名"== staff)
81 {
82 cash += (double)row["数量"];
83 }
84 }
85 return cash;
86 }
87
88 }


SaleReport对外封装了对Table的处理细节,使用SaleReport的用户不会感觉到在使用Table类
1  SaleReport report  =   new  SaleReport( " 销售台帐 " );
2  report.AddRecord( " Alex " " Phone " 2600 );
3  report.AddRecord( " Alex " " PC " 4560 );
4  report.AddRecord( " Alex " " Table " 234 );
5  report.AddRecord( " Sidney " " Phone " 2100 );
6  report.AddRecord( " Sidney " " TV " 4500 );
7  report.AddRecord( " Tom " " oven " 300 );
8  report.AddRecord( " Leo " " oven " 240 );
9
10  report.Print();


运行的结果是
序号 姓名 商品名称 日期 数量

1 Alex Phone 2007-2-13 23:19:27 2600
2 Alex PC 2007-2-13 23:19:27 4560
3 Alex Table 2007-2-13 23:19:27 234
4 Sidney Phone 2007-2-13 23:19:27 2100
5 Sidney TV 2007-2-13 23:19:27 4500
6 Tom oven 2007-2-13 23:19:27 300
7 Leo oven 2007-2-13 23:19:27 240

 



本文转自shyleoking 51CTO博客,原文链接:http://blog.51cto.com/shyleoking/806270

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值