【发布时间】:2021-09-30 05:40:11
【问题描述】:
您好,我非常渴望得到任何帮助。我会尽力解释这一点。我目前正在尝试使用 c# 制作银行表格,用户可以选择一个帐户并从该帐户存款或取款。当他们输入这些内容时,他们会选择提交,并且会出现该帐户的更新余额。如果他们选择单击交易按钮,则列表框将显示所有用户以前的交易。我希望这是有道理的。
我目前的问题是我不知道如何从我的 accounts.cs 添加我的类和方法,也不知道如何将我在 form1.cs 中的方法添加到按钮中。我的意思是当用户选择提交时,我不知道在按钮提交中写什么代码。
如果有人可以帮助我或给我一些代码来试用,我将不胜感激。我是新手,不想放弃。
Form1.cs
using System;
using System.Windows.Forms;
using static partc.Accounts;
namespace partc
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// declare all the accounts
private Everyday _everydayAcct;
private Investment _investmentAcct;
private Omni _omniAcct;
// to hold active account based on radio button selection
private Accounts _accounts;
private void buttonSubmit_Click(object sender, EventArgs e)
{
}
// Display Balance
private void DisplayBalance(Accounts account)
{
textBoxDispkayBalance.Text = $"{account.AccountType}{account.Balance:$#,##0.00}";
}
// Deposit Amount
private void DepositAmount(Accounts account)
{
}
// Withdraw Amount
private void WithdrawAmount(Accounts account)
{
}
// Display Everyday
private void DisplayDetails(Everyday account)
{
listBoxTransactions.Items.Add("Everyday Account");
listBoxTransactions.Items.Add("Balance:" + account.Balance);
listBoxTransactions.Items.Add("Deposit: " + account.Deposits);
listBoxTransactions.Items.Add("Withdrawal:" + account.Withdrawals);
}
// Display Investment
private void DisplayInvestment(Investment account)
{
listBoxTransactions.Items.Add("Investment Account");
listBoxTransactions.Items.Add("Balance: " + account.Balance);
listBoxTransactions.Items.Add("Deposit: " + account.Deposits);
listBoxTransactions.Items.Add("Withdrawal:" + account.Withdrawals);
listBoxTransactions.Items.Add("Interest Rate: " + account.InterestRate + "%");
listBoxTransactions.Items.Add("Overdraft $0.00");
listBoxTransactions.Items.Add("Fee: " +account.Fees);
}
// Display Omni
private void DisplayOmni(Omni account)
{
listBoxTransactions.Items.Add("Omni Account");
listBoxTransactions.Items.Add("Balance: " + account.Balance);
listBoxTransactions.Items.Add("Deposit: " + account.Deposits);
listBoxTransactions.Items.Add("Withdrawal:" + account.Withdrawals);
listBoxTransactions.Items.Add("Interest Rate: " + account.InterestRate + "%");
listBoxTransactions.Items.Add("Overdraft $100.00");
listBoxTransactions.Items.Add("Fee: " + account.Fees);
}
// Shows account transaction details in list box
private void button1_Click(object sender, EventArgs e)
{
if(radioButtonEveryday.Checked){
// Display everyday details
}
if (radioButtonInvestment.Checked)
{
// Display investment detials
}
if (radioButtonOmni.Checked)
{
// Display Omni detials
}
}
private void textBoxDispkayBalance_TextChanged(object sender, EventArgs e)
{
}
// Clear Data
private void buttonClear_Click(object sender, EventArgs e)
{
radioButtonEveryday.Checked = false;
radioButtonInvestment.Checked = false;
radioButtonOmni.Checked = false;
textBoxDeposit.Clear();
textBoxWithdraw.Clear();
textBoxDispkayBalance.Clear();
}
}
}
Accounts.cs
using System;
namespace partc
{
public abstract class Accounts
{
public int AccountNumber { get; private set; }
public string AccountType => $"{this.GetType().Name} Account";
public abstract decimal Overdraft { get; protected set; }
public decimal Opening { get; protected set; }
public decimal Deposits { get; protected set; }
public decimal Withdrawals { get; protected set; }
public decimal Interest { get; protected set; }
public decimal Fees { get; protected set; }
public decimal InterestRate { get; protected set; } = 4m;
public decimal Balance => this.Opening + this.Deposits - this.Withdrawals + this.Interest - this.Fees;
private static Random _random = new Random();
public static int GenerateAccountNumber() => _random.Next(100000000, 1000000000);
public (decimal Withdrawn, decimal Fee) Withdraw(decimal amount)
{
if (amount <= 0m)
{
throw new System.InvalidOperationException("Withdrawal amount must be positive");
}
decimal fee = 0;
if (amount > this.Overdraft)
{
amount = 0m;
fee = 10m;
}
else if (this.Balance < amount)
{
amount = this.Balance;
}
this.Withdrawals += amount;
this.Fees += fee;
return (amount, fee);
}
public decimal Deposit(decimal amount)
{
if (amount <= 0m)
{
throw new System.InvalidOperationException("Deposit amount must be positive");
}
this.Deposits += amount;
return amount;
}
public class Everyday : Accounts
{
public decimal MinBalance { get; private set; } = 0m;
public decimal MaxBalance { get; private set; } = 1000000000000m;
public override decimal Overdraft { get; protected set; } = 100m;
}
public class Investment : Accounts
{
public decimal InvestmentFee { get; private set; } = 10m;
public override decimal Overdraft { get; protected set; } = 100m;
}
public class Omni : Accounts
{
public override decimal Overdraft { get; protected set; } = 1000m;
}
}
}
【问题讨论】:
-
这篇文章看起来很像:stackoverflow.com/questions/68476989/…
-
@user9938 我认为他们在做和我一样的问题。你知道怎么做我问的吗?
-
阅读“抽象类”和“继承”。以下内容可能会有所帮助:docs.microsoft.com/en-us/dotnet/csharp/language-reference/… 和 docs.microsoft.com/en-us/dotnet/csharp/fundamentals/…
-
这里有一个提示。首先为每个继承的类创建一个新实例(例如:
private Everyday _everydayAcct = new Everyday(); -
@user9938 认为这让我更加困惑