網站聲明

本網站包含了各式各樣的資源,如果有侵占到您的著作權,請與本人通知,本人會立即改進。本站所有發表僅屬研究討論性質,如果有任何後果請自行負責。

2015-05-30

TQC+ Java6 基本認識 603-5

603-5.
設計說明:

1. 請使用LinkedList另寫一個類別支援該店的外送服務。
2. 外送服務可以計算一次外送服務的總售價、總成本及總利潤。
3. 請為以下兩次的外送,計算其總售價、總成本及總利潤。
a. 外送1 (冰品皆為一般,無加倍)
a-1:Apple, Banana
a-2:Banana, Pudding, Strawberry 
a-3:Banana, Pudding, Strawberry 
a-4: Apple, Banana , Mango
b. 外送2 (冰品皆為一般,無加倍)
b-1:Apple, Banana, Mango 
b-2:Apple, Banana
4. 請使用自定例外類別處理,將總額不到50元的外送,以Exception 印出錯誤信息【Not enough order for carry out:】及目前的外送金額,執行結果如圖所示 。

參考程式碼:
  1. import java.util.*;
  2.  
  3. class Unit{
  4.  double getCost,getPrice,getProfit;
  5.   Unit(){getCost = 0; getPrice = 0; getProfit = 0;}
  6.   public double getCost(){return getCost;}
  7.   public double getPrice(){return getPrice;}
  8.   public double getProfit(){return getProfit;}
  9.  }
  10. class Apple extends Unit{
  11.  Apple(){
  12.   getCost=6;
  13.   getPrice=10;
  14.  }
  15. }
  16. class Banana extends Unit{
  17.  Banana(){
  18.   getCost=2;
  19.   getPrice=5;
  20.  }
  21. }
  22. class Pudding extends Unit{
  23.  Pudding(){
  24.   getCost=3;
  25.   getPrice=5;
  26.  }
  27. }
  28. class Strawberry extends Unit{
  29.  Strawberry(){
  30.   getCost=1;
  31.   getPrice=5;
  32.  }
  33. }
  34. class Mango extends Unit{
  35.  Mango(){
  36.   getCost=2;
  37.   getPrice=5;
  38.  }
  39. }
  40. class A extends Unit{
  41.  A(Unit A,Unit B){
  42.   getCost=A.getCost()+B.getCost();
  43.   getPrice=A.getPrice()+B.getPrice();
  44.   getProfit=getPrice-getCost;
  45.  }
  46. }
  47. class B extends Unit{
  48.  B(Unit A,Unit B,Unit C){
  49.   getCost=A.getCost()+B.getCost()+C.getCost();
  50.   getPrice=A.getPrice()+B.getPrice()+C.getPrice();
  51.   getProfit=getPrice-getCost;
  52.  }
  53. }
  54. class Deliver extends Unit{
  55.  LinkedList<Unit> pcs;
  56.  double total;
  57.  Deliver(){
  58.   pcs=new LinkedList<Unit>();
  59.  }
  60.  void addProduct(A A){
  61.   pcs.add(A);
  62.  }
  63.  void addProduct(B B){
  64.   pcs.add(B);
  65.  }
  66.  public double getTotalPrice(){
  67.   total=0;
  68.   for(Unit apc:pcs){
  69.    total+=apc.getPrice();
  70.   }
  71.   return total;
  72.  }
  73.  public double getTotalCost(){
  74.   total=0;
  75.   for(Unit apc:pcs){
  76.    total+=apc.getCost();
  77.   }
  78.   return total;
  79.  }
  80.  public double getTotalProfit(){
  81.   total=0;
  82.   for(Unit apc:pcs){
  83.    total+=apc.getProfit();
  84.   }
  85.   return total;
  86.  }
  87.  public void checkOut() throws ToException{
  88.   double p = getTotalPrice();
  89.   if(< 50.0) throw new ToException(p);
  90.   else System.out.println();
  91.  }
  92. }
  93. class ToException extends Exception {
  94.  ToException(double p) {
  95.   super("Not enough order for carry out: " + p);
  96.  }
  97. }
  98. public class JPA603_5{
  99.  public static void main(String args[]){
  100.   try{
  101.    Deliver d1 = new Deliver();
  102.    d1.addProduct(new A(new Apple()new Banana()));
  103.    d1.addProduct(new B(new Banana()new Pudding()new Strawberry()));
  104.    d1.addProduct(new B(new Banana()new Pudding()new Strawberry()));
  105.    d1.addProduct(new B(new Apple()new Banana()new Mango()));
  106.    System.out.println("a Price: " + d1.getTotalPrice());
  107.    System.out.println("a Cost: " + d1.getTotalCost());
  108.    System.out.println("a Profit: " + d1.getTotalProfit());
  109.    System.out.println("");
  110.    d1.checkOut();            
  111.    Deliver d2 = new Deliver();
  112.    d2.addProduct(new B(new Apple()new Banana()new Mango()));
  113.    d2.addProduct(new A(new Apple()new Banana()));
  114.    System.out.println("b Price: " + d2.getTotalPrice());
  115.    System.out.println("b Cost: " + d2.getTotalCost());
  116.    System.out.println("b Profit: " + d2.getTotalProfit());
  117.    d2.checkOut();
  118.   }
  119.   catch(Exception exp){
  120.    System.out.println(exp.getMessage());
  121.   }
  122.  }
  123. }

TQC+ Java 試題總整理

聲明:

這裡的範例程式碼皆由本人親自編輯,歡迎轉載本教學,但請註明本網站,尊重一下作者的心血

沒有留言:

張貼留言

歡迎留言,較舊文章需要留言審核看不到自己的留言是正常的。
若長時間無回應請使用以下聯絡方式:
填寫表單:https://forms.gle/hxxX9n4tATcFnhnk8
寄信到:happyplayblogs@gmail.com