2013-03-23 120 views
-8

請幫助我的代碼。我想在我的atm代碼中輸入一個PIN碼時終止所有字符和字符和數字的組合。任何人都可以幫助我的代碼在ATM?

#include <stdio.h> 
#include <stdlib.h> 
#include <ctype.h> 
#include <string.h> 
#include <conio.h> 

#define maxx 10 

    void menu(),quit(), login(); 
    void withdrawinq(), depositinq(), balanceinq(); 

main(void) 
{ 
    int userID[ maxx ] = {1010, 1111, 2222, 3333, 4444, 5555, 6666, 7777, 8888, 9999}; 
    double balance; 
    float deposit, withdraw; 
    int pin = 0, x, y, ans; 
    char choice;  
    char str[9999]; 

    for(pin = 1 ;pin <= maxx; pin++){ 

    printf("\n ----------------------------------------------------------------------- \n"); 
    printf("|         WELCOME       | \n"); 
    printf(" ----------------------------------------------------------------------- \n\n"); 
    printf(" *********************************************************************** \n"); 
    printf("|                  | \n");  
    printf("*        MINESKI BANK        * \n"); 
    printf("|                  | \n"); 
    printf(" *********************************************************************** \n"); 
    printf("\n ----------------------------------------------------------------------- \n"); 
    printf("|         LOG IN       | \n"); 
    printf(" ----------------------------------------------------------------------- \n"); 
    printf("|                  | \n");  
    printf("|  Please cover and secure your Account PIN while logging in  | \n"); 
    printf("|                  | \n"); 
    printf(" ----------------------------------------------------------------------- \n");   

    printf("\n\n\n Enter PIN Number: "); 
    scanf("%d",&pin); 
    /* read string */ 
    fgets(str, sizeof str, stdin); 
    /* remove trailing newline from string */ 
    str[strlen(str) - 1] = '\0'; 
    /* check string is OK */ 
    if (strlen(str) != 4 || 
     !isdigit((unsigned char)str[0]) || 
     !isdigit((unsigned char)str[1]) || 
     !isdigit((unsigned char)str[2]) || 
     !isdigit((unsigned char)str[3])) 
    { 
     printf("Invalid pin, terminating\n"); 
     system("pause"); 



    /* convert string to integer */ 
    pin = atoi(str);  

    printf("\n\n\n"); 

    if(pin == 1010){ 
    system("cls"); 
    printf("\n ----------------------------------------------------------------------- \n"); 
    printf("|         WELCOME       | \n"); 
    printf(" ----------------------------------------------------------------------- "); 
    printf("\n\n\t\t\t Name: Carlos Slim Helu"); 
    printf("\n\t\t\t Account Number: 010030001"); 
    balance = 7300000; 
    printf("\n\n"); 
    }else if(pin == 1111){ 

    printf("\n ----------------------------------------------------------------------- \n"); 
    printf("|         WELCOME       | \n"); 
    printf(" ----------------------------------------------------------------------- "); 
    printf("\n\n\t\t  Name: William Henry Gates III"); 
    printf("\n\t\t\t Account Number: 010030002"); 
    balance = 6700000; 
    printf("\n\n"); 
    }else if(pin == 2222){ 

    printf("\n ----------------------------------------------------------------------- \n"); 
    printf("|         WELCOME       | \n"); 
    printf(" ----------------------------------------------------------------------- "); 
    printf("\n\n\t\t\t Name: Amancio Ortega"); 
    printf("\n\t\t\t Account Number: 010030003"); 
    balance = 5700000; 
    printf("\n\n"); 
    }else if(pin == 3333){ 

    printf("\n ----------------------------------------------------------------------- \n"); 
    printf("|         WELCOME       | \n"); 
    printf(" ----------------------------------------------------------------------- "); 
    printf("\n\n\t\t\t Name: Warren Buffett"); 
    printf("\n\t\t\tAccount Number: 010030004");  
    balance = 5350000; 
    printf("\n\n"); 
    }else if(pin == 4444){ 

    printf("\n ----------------------------------------------------------------------- \n"); 
    printf("|         WELCOME       | \n"); 
    printf(" ----------------------------------------------------------------------- "); 
    printf("\n\n\t\t\t Name: Larry Ellison"); 
    printf("\n\t\t\tAccount Number: 010030005");  
    balance = 4300000; 
    printf("\n\n"); 
    }else if(pin == 5555){ 

    printf("\n ----------------------------------------------------------------------- \n"); 
    printf("|         WELCOME       | \n"); 
    printf(" ----------------------------------------------------------------------- "); 
    printf("\n\n\t\t\t Name: Charles Koch"); 
    printf("\n\t\t\tAccount Number: 010030006");  
    balance = 3400000; 
    printf("\n\n"); 
    }else if(pin == 6666){ 

    printf("\n ----------------------------------------------------------------------- \n"); 
    printf("|         WELCOME       | \n"); 
    printf(" ----------------------------------------------------------------------- "); 
    printf("\n\n\t\t\t  Name: David Koch"); 
    printf("\n\t\t\tAccount Number: 010030007");  
    balance = 3400000; 
    printf("\n\n"); 
    }else if(pin == 7777){ 

    printf("\n ----------------------------------------------------------------------- \n"); 
    printf("|         WELCOME       | \n"); 
    printf(" ----------------------------------------------------------------------- "); 
    printf("\n\n\t\t\t Name: Li Ka-shing"); 
    printf("\n\t\t\tAccount Number: 010030008");  
    balance = 3100000; 
    printf("\n\n"); 
    }else if(pin == 8888){ 

    printf("\n ----------------------------------------------------------------------- \n"); 
    printf("|         WELCOME       | \n"); 
    printf(" ----------------------------------------------------------------------- "); 
    printf("\n\n\t\t\t Name: Liliane Bettencourt"); 
    printf("\n\t\t\t Account Number: 010030009"); 
    balance = 3000000; 
    printf("\n\n"); 
    }else if(pin == 9999){ 

    printf("\n ----------------------------------------------------------------------- \n"); 
    printf("|         WELCOME       | \n"); 
    printf(" ----------------------------------------------------------------------- "); 
    printf("\n\n\t\t\t Name: Bernard Arnault"); 
    printf("\n\t\t\t Account Number: 10030000");  
    balance = 2900000; 
    printf("\n\n"); 
    }else{ 
    printf("\n\n No such account registered.\n\n\n"); 
    } 
    } 
    } 

這是我的問題!我有10個帳戶,您給的代碼先生不會接受代碼中的帳戶

+0

你可以給更多的細節?我沒有看到明確的問題 – arnoapp 2013-03-23 10:57:06

+0

將其重新標記爲C.這絕對是C而不是C++。 – john 2013-03-23 11:03:14

+0

這個問題很難理解。 – john 2013-03-23 11:04:04

回答

0

您應該閱讀一個字符串,然後檢查該字符串,然後轉換爲一個整數。類似這樣的檢查PIN是正好四位數的東西。

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

int main() 
{ 
    char str[99]; 
    int pin; 

    /* read string */ 
    fgets(str, sizeof str, stdin); 
    /* remove trailing newline from string */ 
    str[strlen(str) - 1] = '\0'; 
    /* check string is OK */ 
    if (strlen(str) != 4 || 
     !isdigit((unsigned char)str[0]) || 
     !isdigit((unsigned char)str[1]) || 
     !isdigit((unsigned char)str[2]) || 
     !isdigit((unsigned char)str[3])) 
    { 
     printf("Invalid pin, terminating\n"); 
     exit(1); 
    } 
    /* convert string to integer */ 
    pin = atoi(str); 
} 
+0

它在strlen中有錯誤!我該如何解決這個問題先生? – 2013-03-23 11:20:57

+0

它應該是這樣的,先生,但我不明白這種 的#include 的#include 的#include 使用命名空間std碼 的#include的; int pinno = 0,pinco = 0; string input =「」; string inputt =「」; (true){ cout <<「請輸入第一個有效數字:」; getline(cin,input); stringstream myStream(input); if(myStream >> pinno){ break; } cout <<「請輸入第二個有效號碼:」; getline(cin,inputt); stringstream myStream1(inputt); (myStream1 >> pinco){ break; if(myStream1 >> pinco) } } getch(); return 0; } – 2013-03-23 11:22:14

+0

對不起,應該是'if(strlen(str)!= 4' – john 2013-03-23 11:41:57

0

第一個問題是

printf("\n\n\n Enter PIN Number: "); 
scanf("%d",&pin); 
/* read string */ 
fgets(str, sizeof str, stdin); 

爲什麼你嘗試讀取引腳兩次?我向你展示瞭如何用fgets讀取它,但你仍然試圖用scanf來讀取它。刪除scanf。

問題二

if (strlen(str) != 4 || 
     !isdigit((unsigned char)str[0]) || 
     !isdigit((unsigned char)str[1]) || 
     !isdigit((unsigned char)str[2]) || 
     !isdigit((unsigned char)str[3])) 
    { 
     printf("Invalid pin, terminating\n"); 
     system("pause"); 



    /* convert string to integer */ 
    pin = atoi(str);  

你還沒有結束,如果語句,應該是

if (strlen(str) != 4 || 
     !isdigit((unsigned char)str[0]) || 
     !isdigit((unsigned char)str[1]) || 
     !isdigit((unsigned char)str[2]) || 
     !isdigit((unsigned char)str[3])) 
    { 
     printf("Invalid pin, terminating\n"); 
     system("pause"); 
    } /*** IF STATEMENT ENDS HERE ***/ 
else 
    { 
    /* convert string to integer */ 
    pin = atoi(str);  

等。你應該試圖找出自己的這些問題。它們很簡單,只要求別人爲你寫代碼就不會學到任何東西。

+0

我已經解決了這個問題先生!謝謝你的代碼,先生:) – 2013-03-23 12:26:10

+0

我會解決最後一個問題!再次感謝你,先生:) ahahaha! – 2013-03-23 12:26:37

相關問題