Board logo

標題: C# 7 610 電腦零件設計 [打印本頁]

作者: may    時間: 2024-1-8 22:57     標題: C# 7 610 電腦零件設計

QC+ 物件導向程式語言
最新一次更新時間:2024-01-05 17:52:26

1. 題目說明:
請新增一個主控台應用程式,加入C:\ANS.CSF\CS06資料夾中的CSD06.cs進行編寫。依下列題意進行作答:建立多個以零件為基礎的電腦各組件的類別,計算筆電的成本及售價,使輸出值符合題意要求。檔案名稱請另存新檔為CSA06.cs,儲存於C:\ANS.CSF\CS06資料夾,再進行評分。

2. 設計說明:
專案內已有part類別,請撰寫LCD類別繼承part類別。內有一個整數欄位size(螢幕尺吋),請透過建構子依照傳入的尺吋設定成本,規則如下:10吋LCD的成本是1500元,15吋LCD的成本是2500元,17吋LCD的成本是3500元。
請撰寫CPU類別繼承part類別。CPU有一數值欄位speed(運算速度),透過建構子依照傳入的速度數值設定成本,規則:速度1.66的成本是7000元,速度2.2的成本是8500元,速度2.4的成本是13000元。
請撰寫HD類別繼承part類別。HD有一整數欄位vol(硬碟容量),透過建構子依照傳入的容量設定成本,規則:256G的成本是1800元,512G的成本是2500元。
請使用以上的零件,撰寫Notebook類別,該類別有三個屬性,分別是LCD, CPU, HD,在建構子傳入三個參數,分別代表LCD尺寸、CPU速度、HD大小。若未傳入,以10、1.66及256為預設值。
* 提示:需撰寫兩個建構子
在Notebook類別中,定義double型態的profit屬性,代表利潤比例,如其值為1.2,表示利潤為20%。此類別中再分別建立兩個方法,名稱分別為getCost及getPrice,前者功能為回傳總成本,後者為回傳總成本加利潤。
* 總成本計算公式:LCD + CPU + HD
* 售價計算公式:(LCD + CPU + HD) × profit
在Main()方法中撰寫程式,需輸入一組數字(數字間以一個半形空格分隔),若輸入兩個數字(以一個半形空格分隔),如【3 1.5】,表示建立三個筆電物件,採用預設的硬體配置,且利潤比需為1.5,再計算總成本及售價後輸出,輸出格式如【NB:3,Cost:30900,Total:46350】。
若輸入五個數字(數字間以半形空格分隔),如【2 1.2 10 1.66 256】表示建立兩台筆電物件,採用10吋LCD、速度1.66的CPU、256的硬碟,且利潤比需為1.2,再計算總成本及售價後輸出,輸出格式如【NB:2,Cost:20600,Total:24720】。
若輸入不在指定範圍的資料,請輸出【error】。

3. 輸入輸出:
輸入說明
筆電數量及利潤比例(中間以一個半形空格分隔)

輸出說明
總成本及售價(輸出最後一行後不自動換行)

範例輸入1
3 1.5
範例輸出1
NB:3,Cost:30900,Total:46350

範例輸入2
3 1.8 2
範例輸出2
error

4. 評分項目:
(1) 符合設計說明輸出正確格式        配分20
作者: may    時間: 2024-1-9 09:56

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7. using System.Threading;
  8. namespace CSA06
  9. {
  10.     class CSA06
  11.     {
  12.         static void Main(string[] args)
  13.         {
  14.             try
  15.             {
  16.                 string[] data = Console.ReadLine().Split(' ');
  17.                
  18.                 for(int i = 0; i < data.Length; i++)
  19.                     if (Convert.ToDouble(data[i].ToString()) < 0) { throw new Exception(); }
  20.                

  21.                 double cost = 0;
  22.                 double total = 0;
  23.                 Notebook n;
  24.                 if (data.Length == 2) {
  25.                     n = new Notebook();
  26.                     n.profit = Convert.ToDouble(data[1].ToString());
  27.                     cost = n.getCost() * Convert.ToDouble(data[0].ToString());
  28.                     total = n.getPrice() * Convert.ToDouble(data[0].ToString());
  29.                 }
  30.                 else if (data.Length == 5)
  31.                 {
  32.                     n = new Notebook(Convert.ToDouble(data[3].ToString()),Convert.ToInt32(data[2].ToString()), Convert.ToInt32(data[4].ToString())){
  33.                         profit = Convert.ToDouble(data[1].ToString())
  34.                     };
  35.                     cost = n.getCost() * Convert.ToDouble(data[0].ToString());
  36.                     total = n.getPrice() * Convert.ToDouble(data[0].ToString());

  37.                 }
  38.                 else
  39.                 {
  40.                     throw new Exception();
  41.                 }
  42.                
  43.                 Console.Write("NB:{0},Cost:{1},Total:{2}", data[0].ToString(), cost, total);
  44.             }
  45.             catch
  46.             {
  47.                 Console.Write("error");
  48.             }
  49.             Console.ReadKey();
  50.         }



  51.     }
  52.     abstract class part
  53.     {
  54.         public int cost;
  55.         public int getCost()
  56.         {
  57.             return cost;
  58.         }
  59.     }
  60.     class LCD : part
  61.     {
  62.         private int _size = 0;
  63.         public int size
  64.         {
  65.             get
  66.             {
  67.                 return _size;
  68.             }
  69.             set
  70.             {
  71.                 _size = value;
  72.             }
  73.         }
  74.         public LCD(int s)
  75.         {
  76.             size = s;
  77.             if (s == 10)
  78.             {
  79.                 this.cost = 1500;
  80.             }
  81.             else if (s == 15)
  82.             {
  83.                 this.cost = 2500;
  84.             }
  85.             else if (s == 17)
  86.             {
  87.                 this.cost = 3500;
  88.             }
  89.         }



  90.     }
  91.     class CPU : part
  92.     {
  93.         private double _speed;
  94.         public double speed
  95.         {
  96.             get
  97.             {
  98.                 return _speed;
  99.             }
  100.             set
  101.             {
  102.                 _speed = value;
  103.             }
  104.         }
  105.         public CPU(double s)
  106.         {
  107.             this._speed = s;
  108.             if (s == 1.66)
  109.             {
  110.                 this.cost = 7000;
  111.             }
  112.             else if (s == 2.2)
  113.             {
  114.                 this.cost = 8500;
  115.             }
  116.             else if (s == 2.4)
  117.             {
  118.                 this.cost = 13000;
  119.             }
  120.         }
  121.     }
  122.     class HD : part
  123.     {
  124.         private int _vol = 0;
  125.         public int vol
  126.         {
  127.             get
  128.             {
  129.                 return _vol;
  130.             }
  131.             set
  132.             {
  133.                 _vol = value;
  134.             }
  135.         }
  136.         public HD(int v)
  137.         {
  138.             this._vol = v;
  139.             if (v == 256)
  140.             {
  141.                 this.cost = 1800;
  142.             }
  143.             else if (v == 512)
  144.             {
  145.                 this.cost = 2500;
  146.             }
  147.         }
  148.     }
  149.     class Notebook
  150.     {
  151.         LCD lcd;
  152.         CPU cpu;
  153.         HD hd;
  154.         private double _profit = 0.0;
  155.         public Notebook()
  156.         {
  157.             lcd = new LCD(10);
  158.             cpu = new CPU(1.66);
  159.             hd = new HD(256);
  160.         }
  161.         public Notebook(double c, int l, int h)
  162.         {
  163.             lcd = new LCD(l);
  164.             cpu = new CPU(c);
  165.             hd = new HD(h);
  166.         }
  167.         public double profit
  168.         {
  169.             get
  170.             {
  171.                 return _profit;
  172.             }
  173.             set
  174.             {
  175.                 _profit = value;
  176.             }
  177.         }
  178.         public double getCost()
  179.         {
  180.             return (lcd.getCost() + cpu.getCost() + hd.getCost());
  181.         }
  182.         public double getPrice()
  183.         {
  184.             return (lcd.getCost() + cpu.getCost() + hd.getCost()) * profit;
  185.         }
  186.     }
  187. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2