2013-03-23 82 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

相关问题