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

2023-12-14 00:58

本文主要是介绍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

这篇关于Table是怎样炼成的:SaleReport Table的继承者的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/490583

相关文章

MySQL CTE (Common Table Expressions)示例全解析

《MySQLCTE(CommonTableExpressions)示例全解析》MySQL8.0引入CTE,支持递归查询,可创建临时命名结果集,提升复杂查询的可读性与维护性,适用于层次结构数据处... 目录基本语法CTE 主要特点非递归 CTE简单 CTE 示例多 CTE 示例递归 CTE基本递归 CTE 结

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

MySQL的ALTER TABLE命令的使用解读

《MySQL的ALTERTABLE命令的使用解读》:本文主要介绍MySQL的ALTERTABLE命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、查看所建表的编China编程码格式2、修改表的编码格式3、修改列队数据类型4、添加列5、修改列的位置5.1、把列

Pandas透视表(Pivot Table)的具体使用

《Pandas透视表(PivotTable)的具体使用》透视表用于在数据分析和处理过程中进行数据重塑和汇总,本文就来介绍一下Pandas透视表(PivotTable)的具体使用,感兴趣的可以了解一下... 目录前言什么是透视表?使用步骤1. 引入必要的库2. 读取数据3. 创建透视表4. 查看透视表总结前言

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

LabVIEW程序员是怎样成长为大佬

成为一名LabVIEW编程领域的“大佬”需要时间、实践、学习和解决复杂问题的经验。尽管LabVIEW作为一种图形化编程语言在初期可能相对容易上手,但要真正成为精通者,需要在多个层面上深入理解。以下是LabVIEW程序员如何逐步成长为“大佬”的路径: 1. 打好基础 LabVIEW的大佬们通常在初期会打下非常坚实的基础,理解LabVIEW编程的核心概念,包括: 数据流编程模型:Lab