2010年11月6日 星期六

作業一:簡易訂單作業(解題)

C#語言中的欄位和屬性經常不容易學通,這個題目也是希望能提供一個練習製作屬性的機會。 設計Price屬性時需要根據是否含稅來決定取得的售價Price。

計算單筆訂單價格時,只要呼叫Order的物件方法,例如o.CalcPrice(),即可獲得訂單價格, 題解的C#程式碼中,關於Product與Order類別的設計如下:

struct Product
{
    public string Name;
    public bool Taxable;
    public double Price
    {
        set { price = value; }
        get
        {
            if (Taxable)
                return price * 1.05;
            else
                return price;
        }
    }
    double price;
}
class Order
{
    public Product[] ProductList;
    public int[] AmountList;
    protected int x;
    public static int OrderCount = 0;
    public Order(int n)
    {
        ProductList = new Product[n];
        AmountList = new int[n];
        OrderCount++;
    }
    public static double CalcTotalPrice(Order[] ol)
    {
        double sum = 0;
        foreach (Order o in ol)
        {
            sum += o.CalcPrice();
        }
        if (sum <= 5000)
            return sum;
        else
            return (int)sum /100 * 100;
    }
    public double CalcPrice()
    {
        double sum = 0;
        for (int i=0;i<ProductList.Length;i++)
        {
            if (AmountList[i]<10)
                sum += ProductList[i].Price * AmountList[i];
            else if (AmountList[i]>=10 && AmountList[i]<25)
                sum += ProductList[i].Price * AmountList[i] * 0.9;
            else
                sum += ProductList[i].Price * AmountList[i] * 0.8;
        }
        return sum;
    }
}

沒有留言:

張貼留言