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

void denglu(struct people *head,struct people *p);
void jiemian(struct people *head,struct people *p);
void chaxun(struct people *head,struct people *p);
void qukuan(struct people *head,struct people *p);
void cunkuan(struct people *head,struct people *p);
void xiugai(struct people *head,struct people *p);
void tuika(struct people *head,struct people *p);
void xinxi(struct people *head,struct people *p);

struct people
{
    char name[10];
    char account[20];
    char password[10];
    float money;
    struct people*next;
};

void main()
{
    int i,z,a,t=0;
    char account[20],password[10],ch;
    struct people *head,*p;
    FILE *fp=fopen("1.txt","r");
    head=NULL;

if(fp==NULL){printf("系统出错");return 1;}
    for(i=0;i<5;i++)
    {
        p=(struct people*)malloc(sizeof(struct people));
        fscanf(fp,"%s%s%s%f",p->name,p->account,p->password,&(p->money));
        p->next=head;
        head=p;
    }
    fclose(fp);
    printf("***********欢迎使用ATM自动取款机***********\n");
    printf("*******************************************\n");
    denglu(head,p);
        
}

void denglu(struct people *head,struct people *p)
{
    int a;
    char account[20];
    int i=0,t=0;
    char password[10],ch;
    printf("请输入卡号:");
    scanf("%s",account);
    //scanf("account:%s\npassword:",account);
    for(a=0;a<5;a++)
    {
        if(strcmp(account,p->account)==0)
        {

printf("请输入密码:");
            while(1)
            {
                 while((ch=getch())!='\r')
                 {
                    password[i++]=ch;
                    putchar('*');
                 }
                 password[i]='\0';
                   t++;
                 if(strcmp(password,p->password)==0)
                 {
                     system("cls");
                     printf("\n欢迎使用本系统!\n");
                     jiemian(head,p);
                     break;
                 }
                 else
                 {
                     if(t<3)
                     {
                         printf("\n密码错误,请重新输入:");
                         i=0;
                     }
                     else
                     {
                             printf("\n对不起,你无权使用本系统! 退出系统!\n");
                            for(i=0;i<1000000000;i++);
                            system("cls");
                            main();
                     }
                 }
            }
            
           
        }
        else p=p->next;
        
    }
}

void jiemian(struct people *head,struct people *p)
{
    int z;
    printf("1-----------个人信息\n");
    printf("2-----------查询余额\n");
    printf("3---------------取款\n");
    printf("4---------------存款\n");
    printf("5-----------修改密码\n");
    printf("0---------------退卡\n");
    while(1)
    {
        printf("\n请输入序号:");
        scanf("%d",&z);
        switch(z)
        {
        case 1:system("cls");xinxi(head,p);break;
        case 2:system("cls");chaxun(head,p);break;
        case 3:system("cls");qukuan(head,p);break;
        case 4:system("cls");cunkuan(head,p);break;
        case 5:system("cls");xiugai(head,p);break;
        case 0:system("cls");tuika(head,p);break;
        default:printf("操作序号不合法!!!");
        return ;
        }
    }
}

void xinxi(struct people *head,struct people *p)
{
    char gg;
    printf("***********************************************\n");
    printf("            用户名:%s\n",p->name);
    printf("              帐号:%s\n",p->account);
    printf("***********************************************\n");
    printf("按任意键返回菜单,按N键退卡!\n");
    if(gg=getch()=='n')
    {system("cls");tuika(head,p);}
    else
    {system("cls");jiemian(head,p);}
}

void chaxun(struct people *head,struct people *p)
{
    char gg;
    printf("余额:%7.2f元\n",p->money);
    printf("按任意键返回菜单,按N键退卡!\n");
    if(gg=getch()=='n')
    {system("cls");tuika(head,p);}
    else
    {system("cls");jiemian(head,p);}
}

void qukuan(struct people *head,struct people *p)
{
    char gg;
    float a;
    struct people *f;
    FILE *fp=fopen("1.txt","w+");
    printf("请输入取款金额:");
    scanf("%f",&a);
    if(a>p->money)
        printf("余额不足!");
    else
    {
        printf("成功取款%7.2f元\n",a);
        p->money=p->money-a;
            f=head;
            while(f!=NULL)
            {
                fprintf(fp,"%s\t%s\t%s\t%f\n",f->name,f->account,f->password,p->money);
                 f=f->next;
            }
            fclose(fp);
    }
    printf("按任意键返回菜单,按N键退卡!\n");
    if(gg=getch()=='n')
    {system("cls");tuika(head,p);}
    else
    {system("cls");jiemian(head,p);}

}

void cunkuan(struct people *head,struct people *p)
{
    char gg;
    float a;
    struct people *f;
    FILE *fp=fopen("1.txt","w+");
    printf("请输入存款金额:");
    scanf("%f",&a);
        printf("成功存款%7.2f元\n",a);
        p->money=p->money+a;
            f=head;
            while(f!=NULL)
            {
                fprintf(fp,"%s\t%s\t%s\t%f\n",f->name,f->account,f->password,f->money);
                 f=f->next;
            }
            fclose(fp);
    printf("按任意键返回菜单,按N键退卡!\n");
    if(gg=getch()=='n')
    {system("cls");tuika(head,p);}
    else
    {system("cls");jiemian(head,p);}

}

void xiugai(struct people *head,struct people *p)
{
    char gg;
    char a[10],b[10],c[10];
    struct people *f;
    FILE *fp=fopen("1.txt","w+");
    printf("请输入原密码:");
    scanf("%s",a);
    if(strcmp(a,p->password)==0)
    {
        printf("请输入新密码:");
        scanf("%s",b);
        printf("请再次输入新密码:");
        scanf("%s",c);
        if(strcmp(b,c)==0)
        {
            printf("密码修改成功!\n");
            strcpy(p->password,b);
            
            f=head;
            while(f!=NULL)
            {
                fprintf(fp,"%s\t%s\t%s\t%f\n",f->name,f->account,f->password,f->money);
                f=f->next;
            }
            fclose(fp);
        }
        else
            printf("两次输入不同!\n");

}
    else
    {
        printf("原密码输入错误!\n");
    }
    
    printf("按任意键返回菜单,按N键退卡!\n");
    if(gg=getch()=='n')
        {system("cls");tuika(head,p);}
    else
    {system("cls");jiemian(head,p);}
}

void tuika(struct people *head,struct people *p)
{
    int i ;
    printf("请取回您的磁卡");
    for(i=0;i<1000000000;i++);
    system("cls");
    main();
}

银行ATM机工作流程模拟编程(代码)的更多相关文章

  1. 银行ATM机工作流程模拟编程

    [编程内容] 编程,模拟一个ATM(Automatic Teller Machine,自动取款机)的工作流程.依据帐户信息:姓名.帐号.密码.余额,完成ATM机功能:登录.显示余额.取款.修改密码. ...

  2. 实验01——java模拟银行ATM系统

    用java写的一个模拟银行系统,比较初级. ATM.java package cn.tedu.yinhang; import java.util.Scanner; /** * @author 赵瑞鑫 ...

  3. 银行ATM存取款系统(C语言实现)

    这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借 ...

  4. Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本

    Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本 1. clipse提供了UML的底层Java包, 1 2. MDTUML2Getting St ...

  5. MySQL银行ATM存取款机系统(需求分析)

    银行ATM需求文档 一.E-R图形文 二.开发步骤 1.明确需求--数据库设计--编码实现功能--测试 2.绘制e-r图--绘制数据库模型图--使用三大方式规范数据库结构 三.开发思路 1. 模型图综 ...

  6. I2C总线完全版——I2C总线的结构、工作时序与模拟编程

    I2C总线的结构.工作时序与模拟编程 I2C总线的结构.工作时序与模拟编程I2C总线(Inter Integrated Circuit)是飞利浦公司于上个世纪80年代开发的一种"电路板级&q ...

  7. git 一般的开发流程中的代码管理

    一般的开发流程中的代码管理 1. 从版本库中下载代码 git clone ssh://wenbin@192.168.1.3:29418/mustang-web 2. 针对某个feature(比如ins ...

  8. twemproxy接收流程探索——twemproxy代码分析正编

    在这篇文章开始前,大家要做好一个小小的心理准备,由于twemproxy代码是一份优秀的c语言,为此,在twemproxy的代码中会大篇幅使用c指针.但是不论是普通类型的指针还是函数指针,都可以让我们这 ...

  9. 虚拟机创建流程中neutron代码分析(三)

    前言: 当neutron-server创建了port信息,将port信息写入数据库中.流程返回到nova服务端,接着nova创建的流程继续走.在计算节点中neutron-agent同样要完成很多的工作 ...

随机推荐

  1. JAVA 匿名对象

    /* 匿名对象: 没有名字的对象 匿名对象的使用方式之一: 当对对象方法只调用一次时,我们可以用匿名对象来完成,比较简化. 匿名对象的使用方式之二: 匿名对象可以被当做实参传递 */ class Ca ...

  2. C++学习8 构造函数的参数初始化表

    构造函数是一种特殊的成员函数,在创建对象时自动执行,主要用来进行初始化工作,例如对 private 属性的成员变量赋值. 对成员变量的初始化,除了在构造函数的函数体中一一赋值,还可以采用参数初始化表. ...

  3. jQuery制作图片的等比例缩放

    1资料的排版 2.html代码 <body> <div class="BB"><img src="dw.jpg" alt=&quo ...

  4. Ext 4.2以后版本 ComboBox 联动

    //combox树 ComboTree: function (upDep, empStore) { var com = Ext.create('Ext.ux.desktop.ComboTree', { ...

  5. Sq server 关于存储过程,触发器的一些理论简述

    http://www.doc88.com/p-2905916227462.html      

  6. [ZOJ 3839] Poker Face (递归)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3839 题目大意:画脸..每张脸是上一个脸倒过来加上眼睛.. 注意 ...

  7. [HDU 2126] Buy the souvenirs (动态规划)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2126 题意:给你n个物品,m元钱,问你最多能买个多少物品,并且有多少种解决方案. 一开始想到的是,先解 ...

  8. ubuntu搭建分布式hadoop-2.6.0概略和错误

    详细配置:http://blog.csdn.net/ggz631047367/article/details/42426391 1.修改机器/etc/hostname分别为   master    s ...

  9. 解决:对 PInvoke 函数的调用导致堆栈不对称问题 <转载>

    问题描述: 在使用托管代码调用非托管代码时,发生“对 PInvoke 函数“UseTwiHikVisionDllTest!UseTwiHikVisionDllTest.TwiHikVision::Ge ...

  10. 关于 C/C++ 的文章

    关于 C/C++ 的文章,以前写的博客在百度,百度关了,只能一个一个复制了,百度太.....