標題:
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace CSA06
{
class CSA06
{
static void Main(string[] args)
{
account acc;
try
{
string sin = Console.ReadLine();
string[] sArray = sin.Split(',');
//TODO
string name = sArray[0];
int year = Convert.ToInt32(sArray[1]);
if (year == 0)
acc = new account(name);
else if (1 <= year && year <= 3)
acc = new account(name, year);
else
throw new Exception();
using (StreamReader sr = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "/read.txt", Encoding.UTF8))
{
while (!sr.EndOfStream)
{
string line = sr.ReadLine();
string[] data = line.Split(',');
if (name.Equals(data[0]))
{
int amount = Convert.ToInt32(data[1]);
string act = data[2];
if (act.Equals("d"))
acc.deposit(amount);
else
acc.withdraw(amount);
}
}
}
acc.addInterest();
if (!acc.isCD)
{
Console.Write("{0},F,{1}%,{2}", acc.name, acc.rate, acc.getBalance());
}
else
{
Console.Write("{0},T,{1}%,{2}", acc.name, acc.rate, acc.getBalance());
}
}
catch
{
Console.Write("error");
}
Console.ReadKey();
}
}
class account
{
public string name="";
public int rate=1;
double balance=0;
public bool isCD = false;
public int duration = 0;
public account(String name)
{
this.name = name;
}
public account(String name,int d)
{
this.name = name;
this.duration = d;
this.isCD = true;
switch (duration)
{
case 1: rate = 2; break;
case 2: rate = 3; break;
case 3: rate = 5; break;
}
}
public void setRate(int rate)
{
this.rate = rate;
}
public void deposit(int n)
{
balance += n;
}
public void withdraw(int n)
{
balance -= n;
}
public double getBalance()
{
return balance ;
}
public void addInterest()
{
balance = balance * Convert.ToDouble(1 + (rate/100.0));
}
}
}
複製代碼
歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/)
Powered by Discuz! 7.2