【发布时间】:2021-09-23 23:42:41
【问题描述】:
这就是我想要实现的目标:
如果请求提款超过允许的透支限额(100 美元),则不会提款,并且会从余额中扣除固定的固定费用(10 美元)。
在下面的代码中,我已尽力做到这一点,但它不起作用,因为当我提取超过余额的金额时,它不会给我带来失败的交易费用,而是给我一个负余额。我也不确定当用户点击他们想要查看的帐户详细信息时,我希望它显示失败的交易费用(如果有的话)如果用户透支了。
任何帮助将不胜感激。就是想不通。
class Program
{
class Customer
{
private string firstName;
private string lastName;
private int phoneNumber;
private string address;
public Customer()
{
firstName = "Tayla";
lastName = "Brown";
phoneNumber = 027493922;
address = "55 Grey Rd";
}
//client info
public string ClientInfo()
{
string clientinfo = ("Account Holder: " + firstName + " " + lastName + " " + "Phone Number: " + phoneNumber + " " + "Address: " + address);
return clientinfo;
}
}
class Account : Customer
{
// Fields
private double accountNumber;
protected string accountType;
protected double balance;
protected double deposit;
protected double withdrawal;
protected double interest;
protected double fee;
protected double overdraft;
// Properties
public string AccountType
{
get { return this.accountType; }
}
public double Withdrawal
{
get { return this.withdrawal; }
set { this.withdrawal = value; }
}
public double Deposit
{
get { return this.deposit; }
set { this.deposit = value; }
}
public double AcctNumber
{ get { return this.accountNumber; } }
public double Bal
{ get { return this.balance; } }
public double f
{ get { return this.fee; } }
public double od
{ get { return this.overdraft; } }
// Creating Random Account Number
public virtual double AccountNumb()
{
Random rand = new Random();
this.accountNumber = rand.Next(100000000, 1000000000);
return accountNumber;
}
public virtual double Fee() // Work out Fee
{
overdraft = 100;
fee = 10;
if (balance < withdrawal)
{
balance -= (overdraft + withdrawal);
}
else if (balance > withdrawal)
{
balance -= withdrawal;
fee -= balance;
}
return balance;
}
//Computes General Balance(resets values)
public virtual double Balance()
{
balance = balance + deposit - withdrawal;
deposit = 0;
withdrawal = 0;
return balance;
}
//Computers Balance when withdrawal equals zero
public virtual double DepositBalance(double input)
{
deposit = input;
withdrawal = 0;
balance = balance + deposit - withdrawal;
return balance;
}
//Computers balance when deposit equals zero
public virtual double WithBalance(double input)
{
withdrawal = input;
deposit = 0;
balance = balance + deposit - withdrawal;
return balance;
}
//displays online banking menu
public virtual void DisplayMenu()
{
Console.WriteLine("Welcome to your online bank account\nPlease choose from the options below: ");
Console.WriteLine("");
Console.WriteLine("1.View Client Info");
Console.WriteLine("");
Console.WriteLine("2. View Account Balance:");
Console.WriteLine(" 2A.Everyday\n 2B.Investment\n 2C.Omni");
Console.WriteLine("");
Console.WriteLine("3.Deposit Funds:\n 3A.Everyday\n 3B.Investment\n 3C.Omni");
Console.WriteLine("");
Console.WriteLine("4.Withdraw Funds:\n 4A.Everyday\n 4B.Investment\n 4C.Omni");
Console.WriteLine("");
Console.WriteLine("5.View Everyday Banking Details");
Console.WriteLine("6.View Investment Banking Details");
Console.WriteLine("7.View Omni Banking details");
Console.WriteLine("");
Console.WriteLine("8.Exit");
}
}
// Everyday Account
class Everyday : Account
{
//field
private double minBalance;
private double maxBalance;
//properties
public double MinBalance
{ get { return this.minBalance; } }
public double MaxBalance
{ get { return this.maxBalance; } }
//constructors
public Everyday(double balance) : base()
{
this.minBalance = 0;
this.maxBalance = 1000000000000;
this.balance = balance;
accountType = "Everyday Account";
}
//methods
}
// Investment Account
class Investment : Account
{
//fields
private int investmentInterest;
private int feeInvestment;
//properties
public int InterestInvestment
{
get { return this.investmentInterest; } // Sets Interest
set { investmentInterest = 4; }
}
public int FeeInvestment
{
get { return this.feeInvestment; } // Sets Fee
set { feeInvestment = 10; }
}
//constructors
public Investment(double balance) : base()
{
this.balance = balance;
accountType = "Investment Account";
}
//methods
}
// Omni Account
class Omni : Account // If a request is made to withdraw money over and above the allowed overdraft limit, then no money is withdrawn and
// a fixed flat fee is deducted from the balance
{
//fields
private int interestOmni;
private int overdraft;
//properties
public int InterestOmni
{
get { return this.interestOmni; } // Get interest
set { interestOmni = 4; }
}
public int OverDraftOmni
{
get { return this.overdraft; } // Get overdraft
}
//constructors
public Omni(double balance) : base()
{
interestOmni = 4;
overdraft = 1000; // Overdraft same as min balance?
this.balance = balance;
accountType = "Omni Account";
}
}
static void Main(string[] args)
{
// Object Insantiating
Account client = new Account(); // Our one client
Everyday everyday = new Everyday(2000);
everyday.AccountNumb();
Investment investment = new Investment(500);
investment.AccountNumb();
Omni omni = new Omni(1000);
omni.AccountNumb();
string streamEverydayAccount = ("Account Number: " + everyday.AcctNumber);
string streamInvestmentAccount = ("Account Number: " + investment.AcctNumber);
string streamOmniAccount = ("Account Number: " + omni.AcctNumber);
string streamClientInfo = (client.ClientInfo());
string everydayAccountType = (everyday.AccountType);
string investmentAccountType = (everyday.AccountType);
string omniAccountType = (everyday.AccountType);
// StreamWriter Everyday Account
using (StreamWriter everydaysummary = new StreamWriter(@"EverydaySummary.txt", true))
{
everydaysummary.WriteLine(everydayAccountType);
everydaysummary.WriteLine(streamClientInfo);
everydaysummary.WriteLine(streamEverydayAccount);
}
// StreamWriter Investment Account
using (StreamWriter investmentsummary = new StreamWriter(@"InvestmentSummary.txt", true))
{
investmentsummary.WriteLine(investmentAccountType);
investmentsummary.WriteLine(streamClientInfo);
investmentsummary.WriteLine(streamInvestmentAccount);
}
// StreamWriter Omni Account
using (StreamWriter omnisummary = new StreamWriter(@"OmniSummary.txt", true))
{
omnisummary.WriteLine(omniAccountType);
omnisummary.WriteLine(streamClientInfo);
omnisummary.WriteLine(streamOmniAccount);
}
bool test = false;
do
{
string everydayDepositPara = ($"Transaction: +${everyday.Deposit} at {DateTime.Now.ToString()} Current Balance: ${everyday.Bal}");
string everdayWithdrawalPara = ($"Transaction: -${everyday.Withdrawal} at {DateTime.Now.ToString()} Current Balance: ${everyday.Bal}");
string investmentDepositPara = ($"Transaction: +${investment.Deposit} at {DateTime.Now.ToString()} Current Balance: ${investment.Bal}");
string investmentWithdrawalPara = ($"Transaction: -${investment.Withdrawal} at {DateTime.Now.ToString()} Current Balance: ${investment.Bal}");
string omniDepositPara = ($"Transaction: +${omni.Deposit} at {DateTime.Now.ToString()} Current Balance: ${omni.Bal}");
string omniWithdrawalPara = ($"Transaction: -${omni.Withdrawal} at {DateTime.Now.ToString()} Current Balance: ${omni.Bal}");
//INSTANTIATING STREAMWRITER FILES
// Everyday
using (StreamWriter everdayAccountStreamSummary = new StreamWriter("EverdaySummary.txt", true))
{
if (everyday.Deposit > 0)
{
everdayAccountStreamSummary.WriteLine(everydayDepositPara);
everyday.Deposit = 0;
}
if (everyday.Withdrawal > 0)
{
everdayAccountStreamSummary.WriteLine(everdayWithdrawalPara);
everyday.Withdrawal = 0;
}
}
//Investment
using (StreamWriter investmentAccountStreamSummary = new StreamWriter("InvestmentSummary.txt", true))
{
if (investment.Deposit > 0)
{
investmentAccountStreamSummary.WriteLine(investmentDepositPara);
investment.Deposit = 0;
}
if (investment.Withdrawal > 0)
{
investmentAccountStreamSummary.WriteLine(investmentWithdrawalPara);
investment.Withdrawal = 0;
}
}
//Omni
using (StreamWriter omniAccountStreamSummary = new StreamWriter("OmniSummary.txt", true))
{
if (omni.Deposit > 0)
{
omniAccountStreamSummary.WriteLine(omniDepositPara);
omni.Deposit = 0;
}
if (omni.Withdrawal > 0)
{
omniAccountStreamSummary.WriteLine(omniWithdrawalPara);
omni.Withdrawal = 0;
}
}
client.DisplayMenu();//the online banking menu
string userchoice = Console.ReadLine();//user input from menu options
switch (userchoice.ToUpper())
{
case "1": // Display Client Info
Console.Clear();
Console.WriteLine(client.ClientInfo());
break;
case "2A": // Display Everday Account Balance
Console.Clear();
everyday.Balance();
Console.WriteLine("Everyday Account Balance: $" + everyday.Bal);
break;
case "2B": // Display Investment Account Balance
Console.Clear();
investment.Balance();
Console.WriteLine("Investment Account Balance: $" + investment.Bal);
break;
case "2C": // Display Omni Account Balance
Console.Clear();
omni.Balance();
Console.WriteLine("Omni Account Balance: $" + omni.Bal);
break;
case "3A": // Everyday Account Deposit
Console.Clear();
Console.WriteLine("How much would you like to deposit?");
everyday.Deposit = double.Parse(Console.ReadLine());
Console.WriteLine("You deposited: $" + everyday.Deposit);
everyday.DepositBalance(everyday.Deposit);
break;
case "3B":
Console.Clear(); // Investment Account Deposit
Console.WriteLine("How much would you like to deposit?");
investment.Deposit = double.Parse(Console.ReadLine());
Console.WriteLine("You deposited: $" + investment.Deposit);
investment.DepositBalance(investment.Deposit);
break;
case "3C":
Console.Clear(); // Omni Account Deposit
Console.WriteLine("How much would you like to deposit?");
omni.Deposit = double.Parse(Console.ReadLine());
Console.WriteLine("You deposited: $" + omni.Deposit);
omni.DepositBalance(omni.Deposit);
break;
case "4A": // Everyday account Withdrawal
Console.Clear();
Console.WriteLine("How much would you like to withdraw?");
everyday.Withdrawal = double.Parse(Console.ReadLine());
Console.WriteLine("You withdrew: $" + everyday.Withdrawal);
everyday.WithBalance(everyday.Withdrawal);
break;
case "4B":
Console.Clear(); // Investment Account Withdrawal
Console.WriteLine("How much would you like to withdraw?");
investment.Withdrawal = double.Parse(Console.ReadLine());
Console.WriteLine("You withdrew: $" + investment.Withdrawal);
investment.WithBalance(investment.Withdrawal);
break;
case "4C":
Console.Clear(); // Omni Account Withdrawal
Console.WriteLine("How much would you like to withdraw?");
omni.Withdrawal = double.Parse(Console.ReadLine());
Console.WriteLine("You withdrew: $" + omni.Withdrawal);
omni.WithBalance(omni.Withdrawal);
break;
case "5":
Console.Clear(); // Everyday Details
Console.WriteLine("Everyday Banking Details");
everyday.Balance();
Console.WriteLine("Everyday Account Balance: $" + everyday.Bal);
break;
case "6":
Console.Clear(); // Investment Details
Console.WriteLine("Investment Banking Details");
everyday.Balance();
Console.WriteLine("Investment Account Balance: $" + investment.Bal); // Add Interest Rate and Fee
Console.WriteLine("Interest Rate: " + investment.InterestInvestment + "%");
Console.WriteLine("Fee: "
);
break;
case "7":
Console.Clear(); // Omni Details
Console.WriteLine("Omni Banking Details");
everyday.Balance();
Console.WriteLine("Omni Account Balance: $" + omni.Bal);
Console.WriteLine("Interest Rate: " + omni.InterestOmni + "%");
Console.WriteLine("Fee: ");
break;
case "8":
Console.Clear(); // Exit Banking
Console.WriteLine("You have chosen to exit the online banking. Thanks and come again!");
Environment.Exit(0);
break;
default: // catch all, breaks the loop
Console.Clear();
test = false;
break;
}
} while (!test);
}
}
【问题讨论】:
-
“在下面的代码中,我已经尽力做到了,但它不起作用” - 请提供您期望发生的情况以及实际发生的情况的详细信息.您可以编辑您的问题来执行此操作。
-
我已经编辑了我的描述。很抱歉,没有解释发生了什么。
-
@TaylaB - 你的代码真的坏了。你能发布你的实际代码吗?
-
@Enigmativity 我更新了我的代码并被整个项目插入
-
Customer的构造函数中没有默认数据。您已经引入了一个错误,并让Account继承自Customer。您应该实例化一次Customer并将数据传递给构造函数,然后让Account在其构造函数中使用Customer。