2017-02-15 4 views
-1

Эй, ребята я построив программу ATM, и у меня есть все окНастройка баланса For My C ATM

У меня есть меню тянет вверх вы можете выбрать опцию и запускает функцию ОДНАКО, я не могу для убейте

установить баланс и заставить его остаться, пока его не изменилось и мне нужно, чтобы сохранить, как только он изменился в одном из двух вариантов (депозит, withdrawl), так как это после теста кольцует будет продолжаться до тех пор, пока не будет выбран выход, и каждый раз, когда мне это нужно, чтобы обновить баланс.

Вот мой код C для этого, если кто-нибудь может помочь, это будет потрясающе.

#include <stdio.h> 
#include <stdlib.h> 

// Function Declarations 

    int getChoice(); 
    double withdraw (int Choice, int Balance); 
    double deposit (int Choice, int Balance); 
    int VBalance (int Choice, int Balance); 
    double process (int Choice, int Balance); 



int main (void) 
{ 
// Local Declarations 

    int Choice; 
    int Balance; 


// Statements 

do 
{ 
    Balance = 2500.00; 
    Choice = getChoice(); 
    process (Choice, Balance); 
} 
while (Choice != 0); 


return 0; 





} // Main 

/*============================process=*/ 

double process (int Choice, int Balance) 
{ 
// Declarations 


// Statements 
    switch(Choice) 
     { 
      case 1: withdraw (Choice, Balance); 
       break; 
      case 2: deposit (Choice, Balance); 
       break; 
      case 3: VBalance (Choice, Balance); 
       break; 
      case 0: exit; 
       break; 
      deafult: printf("Sorry Option Not Offered"); 

} // switch 

return 0; 
} 


/*============================getChoice=*/ 

int getChoice (void) 
{ 
// Local Declarations 
    char Choice; 

// Statements 

    printf("\n\n**********************************"); 
    printf("\n    MENU    "); 
    printf("\n\t1.Withdrawl Money   "); 
    printf("\n\t2.Deposit Money   "); 
    printf("\n\t3.View Balance   "); 
    printf("\n\t0.Exit     "); 
    printf("\n**********************************"); 
    printf("\nPlease Type Your Choice Using 0-3"); 
    printf("\nThen Hit Enter: "); 
    scanf("%d", &Choice); 

return Choice; 

} //getchoice 


/*============================withdraw=*/ 


double withdraw (int Choice, int Balance) 
{ 
// Local Declarations 
    double amount; 


// Statements 
    printf("Funds:%d", &Balance); 
    printf("\nPlease Enter How Much You Would Like To Withdraw: "); 
    scanf("%f", &amount); 
    Balance = Balance - amount; 

return Balance; 

} //withdraw 


/*============================Deposit=*/ 

double deposit (int Choice, int Balance) 
{ 
// Local Declarations 
    double amount; 

// Statements 
    printf("Funds:%d", &Balance); 
    printf("\nPlease Enter How Much You Would Like To Deposit: "); 
    scanf("%f", &amount); 
    Balance = Balance + amount; 

return Balance; 

} //Deposit 


/*============================VBalance=*/ 

int VBalance (int Choice, int Balance) 
{ 
// Statements 
    printf("\nYour Current Funds:%d", &Balance); 
    printf("\nThank Your For Viewing"); 

return 0; 
} 
+0

Почему тег C#? – Pikoh

+1

Это прекрасное время, чтобы узнать, как использовать отладчик. С помощью отладчика вы можете проходить код за строкой, контролируя переменные и их значения. –

+0

«установить баланс и заставить его оставаться до тех пор, пока он не изменится», это имеет смысл для кого-либо с этой планеты? –

ответ

0

Первый: включить предупреждения компилятора. Если вы используете gcc, добавьте -Wall в командную строку. Если вы используете IDE, опция включения предупреждений должна быть в настройках компилятора.

При компиляции с предупреждениями вы обнаружите, что у вас есть проблемы с использованием printf и scanf. Исправьте это!

У вас возникли проблемы с Balance в main не обновляется. C использует вызов по значению, что означает, что изменения, которые вы вносите в аргумент функции, не отображаются в вызывающей функции. Чтобы обойти это, вы можете объявить параметры баланса в качестве указателей и передать адрес Balance. Или вы можете вернуть новый Balance, как и в своем коде. Единственное, что вы забыли, это сохранить новое значение до Balance в main.

Измененная линия в main:

Balance = process(Choice, Balance); 

Изменено process:

double process(int Choice, int Balance) 
{ 
    // Declarations 

    // Statements 
    switch (Choice) 
     { 
      case 1: Balance = withdraw(Choice, Balance); // Changed line 
       break; 
      case 2: Balance = deposit(Choice, Balance); // Changed line 
       break; 
      case 3: Balance = VBalance(Choice, Balance); // Changed line 
       break; 
      case 0: exit; 
       break; 
      deafult: printf("Sorry Option Not Offered"); 

    } // switch 

    return Balance; // Changed line 
} 

Третье: Balance объявляется int, но иногда используют double. Вы должны выбрать один тип и придерживаться его. Из-за nature of floating point numbers фактически рекомендуется, чтобы integral type is used for money.

+0

OMG СПАСИБО ВАМ ТАК ЧТО ты действительно мне очень помог. –

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