C# Head.First 里面的例子 (中文名:深入浅出C#)

//看了原来的例子,我真的是弄昏了。。结果还是按照自己写的。

// DinnerParty.CS 源码:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DinnerPary.HeadFirst.Book
{
    public class DinnterParty
    {
        public const int CostOfFoodPerson = 25;
        /// <summary>
        /// 人数,总共花多少钱,用了多少钱。
        /// </summary>
        public int NumberOfPeople;
        public decimal CostOfBeveragesPerson;
        public decimal CostOfDecorations;
        //Decoration 装饰;


        /// <summary>
        /// 如果选择了健康套餐,计算出单价是多少
        /// </summary>
        public void SetHealthyOption(bool IsHealthOption)
        {
            if (IsHealthOption)
            {
                this.CostOfBeveragesPerson = 5.00M; //健康套餐每人5美元+5%折扣.

            }
            else
            {
                this.CostOfBeveragesPerson = 20.00m;//酒品每人20元.
            }
 
        }
        /// <summary>
        /// 如果选择的是特色装饰。这里只计算了特色装饰.
        /// </summary>
        /// <param name="IsDecoration"></param>
        public void CalculateCostOfDecorations(bool IsDecoration)
        {
            if (IsDecoration)
            {
                this.CostOfDecorations = (NumberOfPeople * 15.00M) + 50M;
            }
            else
            {
                this.CostOfDecorations = (NumberOfPeople * 7.50M) + 30M;
            }
 
        }
        /// <summary>
        /// 如果选择的是健康套餐
        /// </summary>
        /// <param name="isHealthy"></param>
        /// <returns></returns>

        public  decimal CacluateCost(bool isHealthy)
        {
            decimal totalCost=this.CostOfDecorations+(CostOfBeveragesPerson+CostOfFoodPerson)*NumberOfPeople;
            if (isHealthy)
            {
                return totalCost * 0.95M;

            }
            else
            {
                return totalCost;
 
            }
        }

 

 

    }
}

///然后是Form1  说明下,里面有两个checkBox 选择 Health 套餐,或者 Decoration  (健康套餐 或者 特色装饰) 一个NumbericUpDown 控件.还有个Label 用来显示用了多少钱。

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DinnerPary.HeadFirst.Book  //看到171了
{
    public partial class Form1 : Form
    {
        DinnterParty dinnerPatty;
        public Form1()
        {
            InitializeComponent();
            dinnerPatty=new DinnterParty(){NumberOfPeople=5};
            dinnerPatty.SetHealthyOption(false);
            dinnerPatty.CalculateCostOfDecorations(true);
            this.checkBoxHealthOption.Checked = false;
            this.checkBoxDecoration.Checked = true;
      
            DisplayDinnerCost();

        }

       /// <summary>
       /// 在Label标签上面显示出要花多少钱。
       /// </summary>
        private void DisplayDinnerCost()
        {
            decimal Cost = dinnerPatty.CacluateCost(checkBoxHealthOption.Checked);
            this.labelMoneyDispaly.Text= Cost.ToString("c");


        }
        /// <summary>
        /// numberircUpDown 值变化过后对人数的影响
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            dinnerPatty.NumberOfPeople = (int)this.numericUpDown1.Value;
            DisplayDinnerCost();

        }

        /// <summary>
        /// 选择健康套餐
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void checkBoxHealthOption_CheckedChanged(object sender, EventArgs e)
        {
            DisplayDinnerCost();
           
        }
        /// <summary>
        /// 选择装饰品
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void checkBoxDecoration_CheckedChanged(object sender, EventArgs e)
        {
            dinnerPatty.CalculateCostOfDecorations(this.checkBoxDecoration.Checked);
           
            DisplayDinnerCost();
        }
    }
}

 

////接下来是自己写的类。

//DinnerParty.CS

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DinnerParty
{
    public class DinnerParty
    {
        private decimal totalCost;

        public decimal TotalCost
        {
            get { return totalCost; }
           
        }
        //private decimal Price = 0;
        private const int _固定Price = 25;
       
        public DinnerParty()
        {

        }
        public DinnerParty(int peopleOfNumber,bool isHealth,bool isDecoration)

        {
            this.totalCost = 0;

            if (isHealth)
            {
                this.totalCost = (_固定Price + 5.00M) * peopleOfNumber;


            }
            else
            {
                this.totalCost = (_固定Price + 20.00M) * peopleOfNumber;
            }


            if (isDecoration)
            {
                this.totalCost += peopleOfNumber * 15.00M + 50;

            }
            else
            {
                this.totalCost += peopleOfNumber * 0.75M + 30;
 
            }

            if (isHealth)
            {
                totalCost = totalCost * 0.95M;
            }

           


        }
        public override string ToString()
        {
            return this.TotalCost.ToString("c");
        }
    
    }
}

///Form1.CS

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DinnerParty
{
    public partial class Form1 : Form
    {
        DinnerParty dinner;
        public Form1()
        {
            InitializeComponent();
        }

        private void numericUpDown1_ValueChanged(object sender, EventArgs e)
        {
            _计算总额((int)numericUpDown1.Value, this.checkBoxHealthOption.Checked, this.checkBoxDecoration.Checked);


        }

        private void checkBoxHealthOption_CheckedChanged(object sender, EventArgs e)
        {
            _计算总额((int)numericUpDown1.Value, this.checkBoxHealthOption.Checked, this.checkBoxDecoration.Checked);
        }

        private void checkBoxDecoration_CheckedChanged(object sender, EventArgs e)
        {
            _计算总额((int)numericUpDown1.Value, this.checkBoxHealthOption.Checked, this.checkBoxDecoration.Checked);
        }

        private void _计算总额(int PeoleOfNumber, bool checkHealth, bool checkDecoration)
        {
            dinner = new DinnerParty(PeoleOfNumber, checkHealth, checkDecoration);
            this.labelMoneyDispaly.Text=dinner.ToString();
 
        }
    }
}

 

你可能感兴趣的:(first)