標題:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Threading;
namespace CSA06
{
class CSA06
{
static void Main(string[] args)
{
try
{
string[] data = Console.ReadLine().Split(' ');
for(int i = 0; i < data.Length; i++)
if (Convert.ToDouble(data[i].ToString()) < 0) { throw new Exception(); }
double cost = 0;
double total = 0;
Notebook n;
if (data.Length == 2) {
n = new Notebook();
n.profit = Convert.ToDouble(data[1].ToString());
cost = n.getCost() * Convert.ToDouble(data[0].ToString());
total = n.getPrice() * Convert.ToDouble(data[0].ToString());
}
else if (data.Length == 5)
{
n = new Notebook(Convert.ToDouble(data[3].ToString()),Convert.ToInt32(data[2].ToString()), Convert.ToInt32(data[4].ToString())){
profit = Convert.ToDouble(data[1].ToString())
};
cost = n.getCost() * Convert.ToDouble(data[0].ToString());
total = n.getPrice() * Convert.ToDouble(data[0].ToString());
}
else
{
throw new Exception();
}
Console.Write("NB:{0},Cost:{1},Total:{2}", data[0].ToString(), cost, total);
}
catch
{
Console.Write("error");
}
Console.ReadKey();
}
}
abstract class part
{
public int cost;
public int getCost()
{
return cost;
}
}
class LCD : part
{
private int _size = 0;
public int size
{
get
{
return _size;
}
set
{
_size = value;
}
}
public LCD(int s)
{
size = s;
if (s == 10)
{
this.cost = 1500;
}
else if (s == 15)
{
this.cost = 2500;
}
else if (s == 17)
{
this.cost = 3500;
}
}
}
class CPU : part
{
private double _speed;
public double speed
{
get
{
return _speed;
}
set
{
_speed = value;
}
}
public CPU(double s)
{
this._speed = s;
if (s == 1.66)
{
this.cost = 7000;
}
else if (s == 2.2)
{
this.cost = 8500;
}
else if (s == 2.4)
{
this.cost = 13000;
}
}
}
class HD : part
{
private int _vol = 0;
public int vol
{
get
{
return _vol;
}
set
{
_vol = value;
}
}
public HD(int v)
{
this._vol = v;
if (v == 256)
{
this.cost = 1800;
}
else if (v == 512)
{
this.cost = 2500;
}
}
}
class Notebook
{
LCD lcd;
CPU cpu;
HD hd;
private double _profit = 0.0;
public Notebook()
{
lcd = new LCD(10);
cpu = new CPU(1.66);
hd = new HD(256);
}
public Notebook(double c, int l, int h)
{
lcd = new LCD(l);
cpu = new CPU(c);
hd = new HD(h);
}
public double profit
{
get
{
return _profit;
}
set
{
_profit = value;
}
}
public double getCost()
{
return (lcd.getCost() + cpu.getCost() + hd.getCost());
}
public double getPrice()
{
return (lcd.getCost() + cpu.getCost() + hd.getCost()) * profit;
}
}
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/)
Powered by Discuz! 7.2