zoukankan      html  css  js  c++  java
  • 超市收银系统之——3

    ---恢复内容开始---

    超市收银系统

    前言:在我们之前的仓库类和超市类的编程完成之后,这时候我们需要考虑打折的方案。

    1.不打折 2.打9折  3.打8.5者  4.买300送50  5.买500送100

    解决方案:我们可以提供一个打折的抽象的方法。在各个不同的打折类中进行重写打折的方法。

    首先我们先定义打折的父类,代码如下:

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _16超市收银系统
    {
    
        /// <summary>
        /// 打折的父类
        /// </summary>
        public abstract class CalFather
        {
            /// <summary>
            /// 计算打折后应付多少钱
            /// </summary>
            /// <param name="realMoney">打折前应付的价钱</param>
            /// <returns>打折后应付的前</returns>
            public abstract double GetTotalMoney(double realMoney);
        }
    }

     

    不进行打折的类,代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _16超市收银系统
    {
    
        /// <summary>
        /// 不打折 该多少钱就多少钱
        /// </summary>
        class CalNormal:CalFather
        {
            public override double GetTotalMoney(double realMoney)
            {
                return realMoney;
            }
        }
    }

    按折扣率进行打折,代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _16超市收银系统
    {
        /// <summary>
        /// 按折扣率打折
        /// </summary>
        class CalRate:CalFather
        {
            /// <summary>
            /// 折扣率
            /// </summary>
            public double Rate
            {
                get;
                set;
            }
            /// <summary>
            /// 打折类的构造函数
            /// </summary>
            /// <param name="rate">折扣率</param>
            public CalRate(double rate)
            {
                this.Rate = rate;
            }
            /// <summary>
            /// 按折扣率进行打折
            /// </summary>
            /// <param name="realMoney">原来的总的价钱</param>
            /// <returns>打折后的价钱</returns>
            public override double GetTotalMoney(double realMoney)
            {
                return realMoney * this.Rate;
            }
        }
    }

    买300送50和买500送100,代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _16超市收银系统
    {
    
        /// <summary>
        /// 买M元 送N元
        /// </summary>
        class CalMN : CalFather
        {
            //买500送100
            public double M
            {
                get;
                set;
            }
    
            public double N
            {
                get;
                set;
            }
    
            public CalMN(double m, double n)
            {
                this.M = m;
                this.N = n;
            }
            /// <summary>
            /// 得到打折之后的价格
            /// </summary>
            /// <param name="realMoney"></param>
            /// <returns></returns>
            public override double GetTotalMoney(double realMoney)
            {
                //600 -100
                //1000-200
                //1200 
                if (realMoney >= this.M)
                {
                    //realMoney / this.M :表示有几个500或者300
                    //this.N:送的价格
                    return realMoney - (int)(realMoney / this.M) * this.N;
                }
                else
                {
                    return realMoney;
                }
            }
        }
    }

    接着就是在跟用户交互的方法中进行调用了。好的打折的方案的方法就编写完了。

     

    ---恢复内容结束---

    超市收银系统

    前言:在我们之前的仓库类和超市类的编程完成之后,这时候我们需要考虑打折的方案。

    1.不打折 2.打9折  3.打8.5者  4.买300送50  5.买500送100

    解决方案:我们可以提供一个打折的抽象的方法。在各个不同的打折类中进行重写打折的方法。

    首先我们先定义打折的父类,代码如下:

     

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _16超市收银系统
    {
    
        /// <summary>
        /// 打折的父类
        /// </summary>
        public abstract class CalFather
        {
            /// <summary>
            /// 计算打折后应付多少钱
            /// </summary>
            /// <param name="realMoney">打折前应付的价钱</param>
            /// <returns>打折后应付的前</returns>
            public abstract double GetTotalMoney(double realMoney);
        }
    }

     

    不进行打折的类,代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _16超市收银系统
    {
    
        /// <summary>
        /// 不打折 该多少钱就多少钱
        /// </summary>
        class CalNormal:CalFather
        {
            public override double GetTotalMoney(double realMoney)
            {
                return realMoney;
            }
        }
    }

    按折扣率进行打折,代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _16超市收银系统
    {
        /// <summary>
        /// 按折扣率打折
        /// </summary>
        class CalRate:CalFather
        {
            /// <summary>
            /// 折扣率
            /// </summary>
            public double Rate
            {
                get;
                set;
            }
            /// <summary>
            /// 打折类的构造函数
            /// </summary>
            /// <param name="rate">折扣率</param>
            public CalRate(double rate)
            {
                this.Rate = rate;
            }
            /// <summary>
            /// 按折扣率进行打折
            /// </summary>
            /// <param name="realMoney">原来的总的价钱</param>
            /// <returns>打折后的价钱</returns>
            public override double GetTotalMoney(double realMoney)
            {
                return realMoney * this.Rate;
            }
        }
    }

    买300送50和买500送100,代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _16超市收银系统
    {
    
        /// <summary>
        /// 买M元 送N元
        /// </summary>
        class CalMN : CalFather
        {
            //买500送100
            public double M
            {
                get;
                set;
            }
    
            public double N
            {
                get;
                set;
            }
    
            public CalMN(double m, double n)
            {
                this.M = m;
                this.N = n;
            }
            /// <summary>
            /// 得到打折之后的价格
            /// </summary>
            /// <param name="realMoney"></param>
            /// <returns></returns>
            public override double GetTotalMoney(double realMoney)
            {
                //600 -100
                //1000-200
                //1200 
                if (realMoney >= this.M)
                {
                    //realMoney / this.M :表示有几个500或者300
                    //this.N:送的价格
                    return realMoney - (int)(realMoney / this.M) * this.N;
                }
                else
                {
                    return realMoney;
                }
            }
        }
    }

    接着就是在跟用户交互的方法中进行调用了。好的打折的方案的方法就编写完了。

     

  • 相关阅读:
    Codeforces Round #592 (Div. 2)C. The Football Season(暴力,循环节)
    Educational Codeforces Round 72 (Rated for Div. 2)D. Coloring Edges(想法)
    扩展KMP
    poj 1699 Best Sequence(dfs)
    KMP(思路分析)
    poj 1950 Dessert(dfs)
    poj 3278 Catch That Cow(BFS)
    素数环(回溯)
    sort与qsort
    poj 1952 buy low buy lower(DP)
  • 原文地址:https://www.cnblogs.com/MoRanQianXiao/p/7739854.html
Copyright © 2011-2022 走看看