2012-04-05 2 views
2

Программа представляет собой графический интерфейс с двумя вкладками. На первой вкладке есть четыре текстовых поля для имени, идентификатора, возраста и баланса аккаунта. На этой вкладке также есть кнопка, которая добавит учетную запись в поле со списком на второй вкладке. На второй вкладке есть поле со списком и четыре текстовых поля для имени, идентификатора, возраста и баланса. когда я выбираю имя из поля со списком, четыре текстовых поля автоматически заполняют их информацией. Проблема, с которой я сталкиваюсь, заключается в том, что у меня должна быть кнопка снятия и депозита, в которой пользователь может ввести сумму и ее либо вычесть, либо добавить в баланс в текстовом поле. У меня есть пример кода для кнопки снятия, которую кто-то уже мне помог. Может ли кто-нибудь сказать мне, почему он не меняет баланс, когда я нажимаю кнопку?Программа депозита вклада банковского счета не работает

class BankAccount 
{ 
    //attributes 
    public string accountID; 
    public string customerName; 
    public int customerAge; 
    public double balance; 
    public const double DEFAULT_BALANCE = 500.00; 

    //construct 
    public BankAccount() 
    { 
    } 

    public BankAccount(string anID, string aName, int anAge, double aBalance) 
    { 
     accountID = anID; 
     customerName = aName; 
     customerAge = anAge; 
     balance = aBalance; 
     if (aBalance == 0) 
     { 
      balance = DEFAULT_BALANCE; 
     } 
     else 
     { 
      balance = aBalance; 
     } 
    } 

    public BankAccount(string anID, string aName, int anAge) 
    { 
     accountID = anID; 
     customerName = aName; 
     customerAge = anAge; 
     balance = DEFAULT_BALANCE; 
    } 






    //accessors 
    public void SetID(string anID) 
    { 
     accountID = anID; 
    } 

    public void SetName(string aName) 
    { 
     customerName = aName; 
    } 

    public void SetAge(int anAge) 
    { 
     customerAge = anAge; 
    } 

    public void SetBalance(double aBalance) 
    { 
     balance = aBalance; 
    } 

    public string GetID() 
    { 
     return accountID; 
    } 

    public string GetName() 
    { 
     return customerName; 
    } 

    public int GetAge() 
    { 
     return customerAge; 
    } 

    public double GetBalance() 
    { 
     return balance; 
    } 


} 

} 

и вот форма

public partial class Form1 : Form 
{ 

    private List<BankAccount> account = new List<BankAccount>(); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 



    private void btnAddAccount_Click(object sender, EventArgs e) 
    { 
     BankAccount aBankAccount = new BankAccount(txtAccountID.Text, txtName.Text, 
      int.Parse(txtAge.Text), double.Parse(txtBalance.Text)); 

     account.Add(aBankAccount); 
     AddToComboBox(); 
     ClearText(); 


    } 

    private void AddToComboBox() 
    { 
     cboAccount.Items.Clear(); 
     foreach (BankAccount person in account) 
     { 

      cboAccount.Items.Add(person.GetName()); 


     } 


    } 
    private void ClearText() 
    { 
     txtName.Clear(); 
     txtAccountID.Clear(); 
     txtBalance.Clear(); 
     txtAge.Clear(); 
     txtAccountID.Focus(); 


    } 

    private void cboAccount_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     txtNameTab2.Text = account[cboAccount.SelectedIndex].customerName; 
     txtAgeTab2.Text = account[cboAccount.SelectedIndex].customerAge.ToString(); 
     txtAccountIDTab2.Text = account[cboAccount.SelectedIndex].accountID.ToString(); 
     txtBalanceTab2.Text = account[cboAccount.SelectedIndex].balance.ToString(); 
    } 



    private void btnWithdraw_Click(object sender, EventArgs e) 
    { 

     double amount = 0; 

     if (double.TryParse(txtWithdraw.Text, out amount)) 
     { 
      if (amount > 0) 
      { 
       BankAccount currentAccount = account[cboAccount.SelectedIndex]; 
       double currentBalance = currentAccount.GetBalance(); 
       double amountLeft = currentBalance - amount; 

       if (amountLeft >= 0) 
       { 
        currentAccount.SetBalance(amountLeft); 
        txtBalanceTab2.Text = amountLeft.ToString("c"); 
       } 
       else 
       { 
        MessageBox.Show("You don't have enough money!"); 
       } 



      } 

     } 
    } 


} 
} 
+1

Здесь есть довольно много кода. Когда вы отлаживаете его, в какой момент наблюдаемое поведение отклоняется от ожидаемого поведения? Определите эту строку, укажите значения и объясните, что вы ожидаете от нее. – David

+1

У этого больше, чем удушение домашней работы; это? –

+1

Это не касается вашей проблемы, но почему вы используете отдельные методы 'Get' и' Set' в вашем классе 'BankAccount'. Свойства могут быть более подходящими – psubsee2003

ответ

2

«Может кто-нибудь сказать мне, почему это не меняет баланс, когда я нажал на кнопку?»

отзывать кнопка работает, потому что это событие кодируется для обработки нажмите:

private void btnWithdraw_Click(object sender, EventArgs e) 

Вы не имеете любое такое событие для кнопки баланса.

Я бы порекомендовал хорошую книгу в качестве справочной информации, это может быть трудный поиск в Google, и вы можете попросить своего друга помочь вам в обучении. Кодирование - это сплав искусства, науки, математики и технологий, и он сложный.

+0

Книги, которыми я владею сейчас, похоже, не очень помогают –

+0

@ jamesclemens да, поэтому упомянуто, чтобы попросить вашего друга помочь в качестве наставника. Для меня это не имело никакого смысла, когда я начал. Такие вещи, как «Классы» - это объекты, делегаты и т. Д., Ничего не значили. У меня был старший друг, объясняющий это мне на простом английском языке с примерами того, что я кодировал. –

+1

http: // stackoverflow.ком/вопросы/477748/какие-являются-The-самой-диез-нетто-книга – phadaphunk

0

У вас есть два оператора if внутри вашей кнопки. Один или оба из них могут быть ложными. Поместите контрольные точки рядом с операторами if и посмотрите, какое значение передается при отладке. Или поместите другие выражения с полями сообщений, аналогичными тем, которые вы использовали, если суммарный вес не больше 0. Вы должны что-то получить.

Если это помогает помещать контрольные точки для всех ваших значений, чтобы увидеть, какие значения передаются.

Смежные вопросы