在c#中的窗体中添加存款和取款方法

Adding a deposit and withdrawal method to a form in c#

您好,我非常渴望得到任何帮助。我会尽力解释这一点。我目前正在尝试使用 c# 制作银行表格,用户可以 select 一个帐户并从该帐户存款或取款。当他们将输入输入这些内容时,他们 select 提交并显示该帐户的更新余额。如果他们选择单击交易按钮,则列表框将显示所有用户以前的交易。我希望这是有道理的。

我目前的问题是我不知道如何添加 类 和 accounts.cs 中的方法,也不知道如何将 form1.cs 中的方法添加到纽扣。我的意思是当用户 selects 提交时,我不知道在按钮提交中写什么代码。

如果有人可以帮助我或给我一些代码来试用,我将不胜感激。我是新手,不想放弃。

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 [=10=].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 0.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;

    }
 }
}

创建派生帐户的新实例类并将它们分配给相关的私有字段。

public Form1()
    {
        InitializeComponent();
        _everydayAcct = new Everyday();
        _investmentAcct = new Investment();
        _omniAcct = new Omni();
    }

在单选按钮点击事件中,将account字段赋值给相关account,并调用显示。

private void button1_Click(object sender, EventArgs e)
    {
        if (radioButtonEveryday.Checked)
        {
            _accounts = _everydayAcct;
        }
        if (radioButtonInvestment.Checked)
        {
            _accounts = _investmentAcct;
        }
        if (radioButtonOmni.Checked)
        {
            _accounts = _omniAcct;
        }
    }