switch case 多个处理方式涉及到销售优惠折扣方案处理

定义一个销售接口                                                                                               ICarSalsecs
 public interface ICarSalsecs
    {
        /// <summary>
        /// 优惠折扣方案接口
        /// </summary>
        /// <param name="policType">打折类型</param>
        /// <param name="SalsePrice">折前价格</param>
        /// <returns></returns>
        decimal Discount(short policType, decimal SalsePrice);
    }
定义一个销售类  

public class CarSalse: ICarSalsecs
    {
        private readonly Dictionary<short, Func<decimal, decimal>> _dic;
        public CarSalse()
        {
            _dic = new Dictionary<short, Func<decimal, decimal>>
            {
                {0, m => m * (decimal)0.1},
                {1, m => m * (decimal)0.3},
                {2, m => m * (decimal)0.5},
                {3, m => m * (decimal)0.7},
                {4, m => m * (decimal)0.9}
            };
        }

        //把各种打折方案封装在字典集合中。
        public decimal Discount(short policyType, decimal SalsePrice)
        {
            if (_dic.ContainsKey(policyType))
            {
                return _dic[policyType].Invoke(SalsePrice);
            }
            return SalsePrice / 2;
        }
    }
    /// <summary>
    /// 折扣枚举类型
    /// </summary>
    public enum PolicyType
    {
        一折 = 0,
        三折 = 1,
        五折 = 2,
        七折 = 3,
        九折 = 4
    }
调用方法实现折扣处理static void Main(string[] args)
        {
            Console.WriteLine("请输入打折策略,0表示1折,1表示3折,2表示5折,3表示7折,4表示9折:");
            string policy = Console.ReadLine();
            decimal SalsePrice = (decimal)10000.00;
            Console.WriteLine("打折前的价格为:" + SalsePrice);
            CarSalse Salse = new CarSalse();
            if (!string.IsNullOrWhiteSpace(policy))
            {
            Console.WriteLine("打折后的价格为:" + Salse.Discount(short.Parse(policy), SalsePrice));
            }
            Console.ReadKey();
        }

原文地址:https://www.cnblogs.com/Warmsunshine/p/12696142.html

时间: 2024-10-16 02:13:54

switch case 多个处理方式涉及到销售优惠折扣方案处理的相关文章

C语言switch/case圈复杂度优化重构

软件重构是改善代码可读性.可扩展性.可维护性等目的的常见技术手段.圈复杂度作为一项软件质量度量指标,能从一定程度上反映这些内部质量需求(当然并不是全部),所以圈复杂度往往被很多项目采用作为软件质量的度量指标之一. C语言开发的项目中,switch/case代码块是一个很容易造成圈复杂度超标的语言特性,所以本文主要介绍下降低switch代码段的重构手段(如下图).switch圈复杂度优化重构可分为两部分:程序块的重构和case的重构.程序块重构是对代码的局部优化,而case重构是对代码的整体设计,

逆向知识第九讲,switch case语句在汇编中表达的方式

一丶Switch Case语句在汇编中的第一种表达方式 (引导性跳转表) 第一种表达方式生成条件: case 个数偏少,那么汇编中将会生成引导性的跳转表,会做出 if else的情况(类似,但还是能分辨出来的) 1.高级代码: #include "stdafx.h" int main(int argc, char* argv[]) { switch(argc) { case 0: printf("case 0\n"); break; case 1: printf(&

重构:越来越长的 switch ... case 和 if ... else if ... else

在代码中,时常有就一类型码(Type Code)而展开的如 switch ... case 或 if ... else if ... else 的条件表达式.随着项目业务逻辑的增加及代码经年累月的修改,这些条件判断逻辑往往变得越来越冗长.特别是当同样的逻辑判断出现在多个地方的时候(结构示意如下),代码的可读性和维护难易程度将变得非常的糟糕.每次修改时,你必须找到所有有逻辑分支的地方,并修改它们. 1 switch(type) 2 { 3 case "1": 4 ... 5 break;

Python | 基础系列 &#183;?Python为什么没有switch/case语句?

与我之前使用的所有语言都不同,Python没有switch/case语句.为了达到这种分支语句的效果,一般方法是使用字典映射: def numbers_to_strings(argument): switcher = { 0: "zero", 1: "one", 2: "two", } return switcher.get(argument, "nothing") 这段代码的作用相当于: function(argument)

C Language study - switch case and continue

本文讨论研究在switch case语句中如何使用continue关键字. 一般的switch case语句格式: switch(?) { case num1: //something break; case num2: //something break; case numx: //something break; default: //default break; } 或者: switch(?) { case char1: //something break; case char2: //s

(c语言)函数间的调用,switch case

问题描述: 编写以下四个函数: init();//设计函数初始化数组为 1 2 3 4 5 6 7 8 9 10 sort();//设计排序函数,实现数组的降序排列:10 9 8 7 6 5 4 3 2 1 empty();//清空数组,全为0 show();//显示数组 程序分析: 程序的思路:a.先将程序的头和尾写好,在主函数中将要被处理的两个参数(一个数组arr,和数组的长度len).b.再封装那几个函数,额外加上一个menu函数.c.在主函数中用switch case语句调用这几个函数.

语法技巧(三目运算符、switch...case...)

一.三目运算符 三目运算符的一种简便写法: bool b = str == "abc" ? false : true; 当是自身时,实际上别吝啬那一个括号,有一个括号,实际上更容易一看就看懂: int i = 0; i = (i == 0) ? 1 : 0;  实际上这样的代码更好看: bean.BlogCloud_Url = i > 1 ? BlogCloud_Url : BlogCloud_Url + "&page=" + i; 二.switch.

浅析C/C++中的switch/case陷阱

浅析C/C++中的switch/case陷阱 先看下面一段代码: 文件main.cpp #include<iostream> using namespace std; int main(int argc, char *argv[]) { int a =0; switch(a) { case 0: int b=1;cout<<b<<endl;break; case 1: cout<<b<<endl;break; default:break; } r

Java switch case 语句

switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. switch case 执行时,一定会先进行匹配,匹配成功返回当前 case 的值,再根据是否有 break,判断是否继续输出,或是跳出判断. class Test { public static void main(String args[]){ //char grade = args[0].charAt(0); char grade = 'C'; switch(grade) { case 'A' : S