Board logo

標題: C# 7 607 銀行定期存款設計 [打印本頁]

作者: may    時間: 2024-1-8 22:53     標題: C# 7 607 銀行定期存款設計

TQC+ 物件導向程式語言
最新一次更新時間:2024-01-05 17:51:04

1. 題目說明:
請新增一個主控台應用程式,加入C:\ANS.CSF\CS06資料夾中的CSD06.cs進行編寫。依下列題意進行作答:定義銀行定期存款帳戶類別的功能,再計算目前存款餘額,使輸出值符合題意要求。檔案名稱請另存新檔為CSA06.cs,儲存於C:\ANS.CSF\CS06資料夾,再進行評分。
請使用正斜線(/)作為檔案路徑的分隔符號。

2. 設計說明:
專案已內含名為account類別,類別內含name、rate、balance、isCD,duration等變數,分別代表戶名,利率、餘額、是否定存、定存期間等。並已定義setRate、getBalance兩個方法。請完成deposit(存款)、withdraw(提款)、addInterest(增加利息)等三個方法。存款與提款均需傳入存提金額n後計算新的餘額。增加利息addInterest則是計算利息後增加至餘額。
* 提示:利率rate為整數,採單利計算
* 公式:利息=現有餘額×(利率/100)
原始account類別中現有一個建構子,傳入戶名。請應用多載的概念,增加另一個建構子,傳入戶名與定存期間。如果定存期間為1年,則該帳戶利率為2%;定存期間為2年,利率3%;定存期間3年則利率為5%。其餘期間不接受。
* 提示:定存帳戶之isCD為true
Main主程式中請完成以下功能:使用者輸入戶名(jack或lily)與定存期限(請以半形逗號相隔)如:jack,2或lily,0,中間以一個半形逗號分隔。定存期限只有1-3年,若輸入為0表示非定存帳號;其餘輸入請顯示【error】。依照輸入選擇不同建構子建立account物件由read.txt中讀入每行資料,格式如下:戶名,數字,操作。(操作d表示存款deposit;w表示提款withdraw)如果讀入資料與輸入之戶名相同,則進行對應方法呼叫,直到檔案結束。檔案結束前請依照利率進行加上利息,最後輸出戶名、是否為定期利率(T:是、F:不是)以及本利和,中間以一個半形逗號分隔,輸出如【jack,F,1%,959.5】。

3. 輸入輸出:
輸入說明
戶名、定存期間

輸出說明
戶名、活存或定期存款、利率、本利和(輸出最後一行後不自動換行)

範例輸入1
jack,0
範例輸出1
jack,F,1%,959.5

範例輸入2
jack,2
範例輸出2
jack,T,3%,978.5

範例輸入3
jack,5
範例輸出3
error

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

  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. namespace CSA06
  8. {
  9.     class CSA06
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             account acc;
  14.             try
  15.             {
  16.                 string sin = Console.ReadLine();
  17.                 string[] sArray = sin.Split(',');

  18.                 //TODO


  19.                 string name = sArray[0];               
  20.             
  21.                 int year = Convert.ToInt32(sArray[1]);
  22.                
  23.                 if (year == 0)
  24.                     acc = new account(name);
  25.                 else if (1 <= year && year <= 3)
  26.                     acc = new account(name, year);
  27.                 else
  28.                     throw new Exception();

  29.                 using (StreamReader sr = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "/read.txt", Encoding.UTF8))
  30.                 {
  31.                     while (!sr.EndOfStream)
  32.                     {
  33.                         string line = sr.ReadLine();
  34.                         string[] data = line.Split(',');
  35.                         if (name.Equals(data[0]))
  36.                         {
  37.                             int amount = Convert.ToInt32(data[1]);
  38.                             string act = data[2];
  39.                             if (act.Equals("d"))
  40.                                 acc.deposit(amount);
  41.                             else
  42.                                 acc.withdraw(amount);
  43.                         }
  44.                     }
  45.                 }
  46.                 acc.addInterest();
  47.                 if (!acc.isCD)
  48.                 {
  49.                     Console.Write("{0},F,{1}%,{2}", acc.name, acc.rate, acc.getBalance());
  50.                 }
  51.                 else
  52.                 {
  53.                     Console.Write("{0},T,{1}%,{2}", acc.name, acc.rate, acc.getBalance());
  54.                 }

  55.                
  56.              }
  57.             catch
  58.             {
  59.                 Console.Write("error");
  60.             }
  61.             Console.ReadKey();
  62.         }
  63.     }
  64.     class account
  65.     {
  66.         public string name="";
  67.         public int rate=1;
  68.         double balance=0;
  69.         public bool isCD = false;
  70.         public int duration = 0;
  71.         public account(String name)
  72.         {
  73.             this.name = name;
  74.         }
  75.         public account(String name,int d)
  76.         {            
  77.             this.name = name;
  78.             this.duration = d;
  79.             this.isCD = true;
  80.             switch (duration)
  81.             {
  82.                 case 1: rate = 2; break;
  83.                 case 2: rate = 3; break;
  84.                 case 3: rate = 5; break;
  85.             }
  86.         }

  87.         public void setRate(int rate)
  88.         {
  89.             this.rate = rate;
  90.         }

  91.         public void deposit(int n)
  92.         {
  93.             balance += n;
  94.         }

  95.         public void withdraw(int n)
  96.         {
  97.             balance -= n;
  98.         }
  99.         public double getBalance()
  100.         {
  101.             return balance ;
  102.         }
  103.         public void addInterest()
  104.         {
  105.             balance = balance * Convert.ToDouble(1 + (rate/100.0));
  106.         }
  107.     }

  108. }
複製代碼





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