模拟银行ATM机

#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
struct customer
    {
       char number[21];
       char password[7];
       int  money;
    };
customer person[100];
int n;
int log;
char nownum[21];
char nowpass[7];
int  nowmonye;
void writefile()
{
    FILE *fp;
    if((fp=fopen("data.txt","w"))==NULL)
    {
        printf("Cannot open file strike any key exit!");
        getch();
        exit(1);
    }
    int i=0;
    while (i<n)
    {
        fprintf(fp,"账户%s 密码%s 余额%d\n",person[i].number,person[i].password,person[i].money);
        i++;
    }
    fclose(fp);
}
void readfile()
{
    FILE *fp;
    if((fp=fopen("data.txt","r"))==NULL)
    {
        printf("Cannot open file strike any key exit!");
        getch();
        exit(1);
    }
    int i=0;
    while (fscanf(fp,"账户%s 密码%s 余额%d\n",&person[i].number,&person[i].password,&person[i].money)!=EOF)
    {
        i++;
    }
    n=i;
    fclose(fp);
}
void Find()
{
    void Menu();
    system("cls");
    printf("\n\n账户%s  余额%d\n",person[log].number,person[log].money);
    printf("\n按任意键返回菜单!\n");
    getch();
    Menu();
}
void Deposit()
{
    void Menu();
    system("cls");
    int money;
    printf("\n\n请输入取款金额!\n");
    scanf("%d",&money);
    person[log].money=person[log].money-money;
    writefile();
    printf("\n是否打印凭条?\n");
    printf("\n1.打印凭条          2. 不打印凭条\n");
    char c;
    c=getch();
    switch(c)
    {
        case '1':   
            printf("\n\n请保存好您的凭条!\n");
            printf("——————————————————\n");
            printf("||\t\t\t\t||\n");
            printf("||\t\t\t\t||\n");
            printf("||账户%s\t||\n",person[log].number);
            printf("||\t\t\t\t||\n");
            printf("||取款前余额%d\t\t||\n",person[log].money+money);
            printf("||\t\t\t\t||\n");
            printf("||本次取款金额%d\t\t||\n",money);
            printf("||\t\t\t\t||\n");
            printf("||取款后余额%d\t\t||\n",person[log].money);
            printf("||\t\t\t\t||\n");
            printf("——————————————————\n");
            printf("\n\n按任意键返回菜单!\n");
            getch();
            Menu();
            break;
        case '2':   
        printf("\n按任意键返回菜单!\n");
        getch();
        Menu();
    }
}
void Withdraw()
{
void Menu();
    system("cls");
    int money;
    printf("\n\n请输入存款金额!\n");
    scanf("%d",&money);
    person[log].money=person[log].money+money;
    writefile();
    printf("\n是否打印凭条?\n");
    printf("\n1.打印凭条          2. 不打印凭条\n");
    char c;
    c=getch();
    switch(c)
    {
        case '1':   
            printf("\n\n请保存好您的凭条!\n");
            printf("——————————————————\n");
            printf("||\t\t\t\t||\n");
            printf("||\t\t\t\t||\n");
            printf("||账户%s\t||\n",person[log].number);
            printf("||\t\t\t\t||\n");
            printf("||存款前余额%d\t\t||\n",person[log].money-money);
            printf("||\t\t\t\t||\n");
            printf("||本次存款金额%d\t\t||\n",money);
            printf("||\t\t\t\t||\n");
            printf("||存款后余额%d\t\t||\n",person[log].money);
            printf("||\t\t\t\t||\n");
            printf("——————————————————\n");
            printf("\n\n按任意键返回菜单!\n");
            printf("\n按任意键返回菜单!\n");
            getch();
            Menu();
            break;
        case '2':   
        printf("\n按任意键返回菜单!\n");
        getch();
        Menu();
    }
}
void Changepassword()
{
    void Menu();
    system("cls");
    printf("\n\n请输入您的新密码!\n");
    LOOP3:
    scanf("%s",&nowpass);
    if(strlen(nowpass)!=6)
    {
        printf("\n输入的银行卡密码不是6位,请按重新输入!\n");
        goto LOOP3;
    }
    strcpy(person[n].password,nowpass);
    writefile();
    printf("\n按任意键返回菜单!\n");
    getch();
    Menu();
}
void Login()
{
    void Menu();
    system("cls");
    printf("\n\n欢迎使用myATM存取款一体机^-^\n");
    printf("\n欢迎登录!\n");
    printf("\n请输入银行卡号:\n");
    scanf("%s",&nownum);
    if(strlen(nownum)!=20)
    {
        printf("\n您输入的银行卡号不是20位,请按任意键重新登录!\n");
        getch();
        Login();
    }
    int i=0;
    while (i<n)
    {
        if(strcmp(nownum,person[i].number)==0)
        {
            int t=0;
            printf("\n请输入密码:\n");
            while(t<3)
            {               
                scanf("%s",&nowpass);
                if(strlen(nowpass)!=6)
                {
                    printf("\n您输入的银行卡密码不是6位,请按任意键重新登录!\n");
                    getch();
                    Login();
                }
                if(strcmp(nowpass,person[i].password)==0)
                {
                    log=i;
                    break;
                }
                else
                {
                    printf("\n密码错误,请重新输入密码:\n");
                    t++;
                }
                if(t==3)
                {
                    printf("\n错误超过三次,您的卡将在三秒后爆炸(^_^)\n");
                    printf("\n系统即将关闭!\n");
                    getch();
                    exit(1);
                }
            }
            break;
        }
        else    
            i++;
    }
    if(log==-1)
    {
        printf("\n该账户不存在!\n");
        printf("\n请选择服务:\n");
        printf("\n1.重新登录          2.注册当前输入的银行卡\n");
        LOOP1:
        char c;
        c=getch();
        switch(c)
        {
            case '1':   Login();    break;
            case '2':   
                printf("\n您的当前要注册的银行卡号为%s!\n请输入六位初始密码!\n",nownum);
                LOOP2:
                scanf("%s",&nowpass);
                if(strlen(nowpass)!=6)
                {
                    printf("\n您输入的银行卡密码不是6位,请按重新输入!\n");
                    goto LOOP2;
                }
                n++;
                strcpy(person[n].number,nownum);
                strcpy(person[n].password,nowpass);
                printf("\n注册成功,请记好您的账户和密码!\n");
                printf("\n登录成功,按任意键进入菜单!\n");
                getch();
                Menu();
                break;
            default: 
                printf("\n您的按键有误,按任意键重新选择!\n");
                getch();
                goto LOOP1;
        }    
    }
    else
    {
        printf("\n登录成功,按任意键进入菜单!\n");
        getch();
        Menu();
    }
}
void Menu()
{
    system("cls");
    printf("\n\n欢迎进入!^-^\n");
    printf("\n请选择服务:\n");
    printf("\n1.查询余额          2.取款\n");
    printf("\n3.存款              4.修改密码\n");
    printf("\n5.退出系统");
    char c;
    c=getch();
    switch(c)
    {
        case '1':   Find();     break;
        case '2':   Deposit();  break;
        case '3':   Withdraw(); break;
        case '4':   Changepassword();   break;
        case '5':   exit(0);    break;
        default: 
            printf("\n您的按键有误,按任意键重新选择!\n");
            getch();
            Menu();
    }    
}
void main()
{
    readfile();
    log=-1;
    Login();
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值