網站聲明

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

2015-06-10

TQC+ Java6 基本認識 604-4

604-4.
設計說明:

1. Peter決定買入B基金2000元,買價每單位50元;C基金5000元,買價每單位30元。
2. 請查詢Peter之活期存款帳戶的餘額及A、B、C三個基金的單位數。
3. 基金B的價格現在漲到100,Peter想要查詢基金B的餘額。請使用HashMap為Perter建立一MultiFund(多筆基金)類別, HashMap的 key 值為基金名稱 (String),value值為 FundAccount, 使其代入 B 基金後,可輸出目前 B 基金的金額。

參考程式碼:
  1. import java.util.*;
  2. class Account{
  3.  String name;
  4.  double APR;
  5.  int Balance;
  6.  Account(){Balance = 0;}
  7.   public void deposit(int i){
  8.    Balance+=i;
  9.   }
  10.   public void withdraw(int i){
  11.    Balance-=i;
  12.   }
  13.   public int balance(){
  14.    return Balance;
  15.   }
  16.   public void addInterest(){
  17.    Balance+=Balance*APR;
  18.   }
  19.  }
  20. class DepositAccount extends Account{
  21.  DepositAccount(String n,int i){
  22.   name=n;
  23.   if(i==1) APR=0.03;
  24.   else if(i==2) APR=0.04;
  25.   else if(i==3) APR=0.05;
  26.  }
  27. }
  28. class FreeAccount extends Account{
  29.  FreeAccount(String n){
  30.   name=n;
  31.   APR=0.02;
  32.  }
  33. }
  34. class SpecialAccount extends Account{
  35.  SpecialAccount(String n){
  36.   name=n;
  37.   APR=0.02;
  38.  }
  39.  boolean isEmpt(){
  40.   return Balance>10000;
  41.  }
  42. }
  43. class FundAccount{
  44.  String name,type;
  45.  double unit = 0.0;
  46.  FreeAccount freeAccount;
  47.  SpecialAccount specialAccount;
  48.  FundAccount(String n,String t,FreeAccount f,SpecialAccount s){
  49.   name=n;
  50.   type=t;
  51.   freeAccount=f;
  52.   specialAccount=s;
  53.  }
  54.  public void buy(int i,int j){
  55.   if (specialAccount.isEmpt()){
  56.    freeAccount.withdraw(i);
  57.   }
  58.   else{
  59.    freeAccount.withdraw((int)(i*1.02));
  60.   }
  61.   unit+=1.0*i/j;
  62.  }
  63.  public int balance(int j){
  64.   return (int)(unit*j);
  65.  }
  66.  double getUnit() {
  67.   return unit;
  68.  }
  69.  public void sell(double i,int j){
  70.   freeAccount.deposit((int)(i*j*0.98));
  71.   unit -= i;
  72.  }
  73. }
  74. class InternetAccount{
  75.  DepositAccount depositAccount;
  76.  FreeAccount freeAccount;
  77.  SpecialAccount specialAccount;
  78.  FundAccount fundAccount;
  79.  InternetAccount(){
  80.  
  81.  }
  82.  public void setDeposit(DepositAccount deposit){
  83.   depositAccount=deposit;
  84.  }
  85.  public void setFree(FreeAccount setFree){
  86.   freeAccount=setFree;
  87.  }
  88.  public void setSpecial(SpecialAccount setSpecial){
  89.   specialAccount=setSpecial;
  90.  }
  91.  public void setFund(FundAccount setFund){
  92.   fundAccount=setFund;
  93.  }
  94.  public int getTotalBalance(){
  95.   return depositAccount.balance()+freeAccount.balance()+specialAccount.balance();
  96.  }
  97. }
  98. class MultiFund{
  99.  HashMap<String,FundAccount> Multi;
  100.  MultiFund(){
  101.   Multi = new HashMap<String, FundAccount>();
  102.  }
  103.  public void addFund(String s,FundAccount Fund){
  104.   Multi.put(s, Fund);
  105.  }
  106.  public void printEachUnit(){
  107.   for(FundAccount f : Multi.values()) {
  108.    System.out.println(f.type + ":" + f.getUnit());
  109.   }
  110.  }
  111.  public int getFundBalance(String s,int i){
  112.   return (int)(* Multi.get(s).getUnit());
  113.  }
  114. }
  115. public class JPA604_4{
  116.  public static void main(String args[]){
  117.   DepositAccount deposit = new DepositAccount("peter"2);
  118.   deposit.deposit(5000);
  119.   FreeAccount free = new FreeAccount("peter");
  120.   free.deposit(20000);
  121.   SpecialAccount special = new SpecialAccount("peter");
  122.   special.deposit(10000);
  123.   deposit.addInterest();
  124.   free.addInterest();
  125.   special.addInterest();
  126.   FundAccount fund = new FundAccount("peter""A", free, special);
  127.   fund.buy(15000500);
  128.   special.withdraw(5000);
  129.   fund.buy(2000300);
  130.   fund.sell(fund.getUnit()400);    
  131.   InternetAccount internet = new InternetAccount();
  132.   internet.setDeposit(deposit);
  133.   internet.setFree(free);
  134.   internet.setSpecial(special);
  135.   internet.setFund(fund);
  136.   MultiFund multi = new MultiFund();
  137.   multi.addFund("A", fund);
  138.   FundAccount fundB = new FundAccount("peter""B", free, special);
  139.   fundB.buy(200050);
  140.   multi.addFund("B", fundB);
  141.   FundAccount fundC = new FundAccount("peter""C", free, special);
  142.   fundC.buy(500030);
  143.   multi.addFund("C", fundC);
  144.   System.out.println("活期餘額:" + free.balance());
  145.   multi.printEachUnit();
  146.   System.out.println("B 基金餘額: " + multi.getFundBalance("B"100));
  147.  }
  148. }

TQC+ Java 試題總整理

聲明:

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

沒有留言:

張貼留言

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