银行ATM机工作流程模拟编程(代码)
#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机工作流程模拟编程(代码)的更多相关文章
- 银行ATM机工作流程模拟编程
[编程内容] 编程,模拟一个ATM(Automatic Teller Machine,自动取款机)的工作流程.依据帐户信息:姓名.帐号.密码.余额,完成ATM机功能:登录.显示余额.取款.修改密码. ...
- 实验01——java模拟银行ATM系统
用java写的一个模拟银行系统,比较初级. ATM.java package cn.tedu.yinhang; import java.util.Scanner; /** * @author 赵瑞鑫 ...
- 银行ATM存取款系统(C语言实现)
这里使用的运行工具是DEV C++.老铁们一定要看仔细了.是DEV C++ 仅供借鉴:这个是大一时期写的.大四的时候整理了一下(本人C语言学的也不太好).肯定很多不足和存在漏洞的地方.仅供借鉴.仅供借 ...
- Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本
Atitit.uml2 api 的编程代码实现设计uml开发 使用eclipse jar java 版本 1. clipse提供了UML的底层Java包, 1 2. MDTUML2Getting St ...
- MySQL银行ATM存取款机系统(需求分析)
银行ATM需求文档 一.E-R图形文 二.开发步骤 1.明确需求--数据库设计--编码实现功能--测试 2.绘制e-r图--绘制数据库模型图--使用三大方式规范数据库结构 三.开发思路 1. 模型图综 ...
- I2C总线完全版——I2C总线的结构、工作时序与模拟编程
I2C总线的结构.工作时序与模拟编程 I2C总线的结构.工作时序与模拟编程I2C总线(Inter Integrated Circuit)是飞利浦公司于上个世纪80年代开发的一种"电路板级&q ...
- git 一般的开发流程中的代码管理
一般的开发流程中的代码管理 1. 从版本库中下载代码 git clone ssh://wenbin@192.168.1.3:29418/mustang-web 2. 针对某个feature(比如ins ...
- twemproxy接收流程探索——twemproxy代码分析正编
在这篇文章开始前,大家要做好一个小小的心理准备,由于twemproxy代码是一份优秀的c语言,为此,在twemproxy的代码中会大篇幅使用c指针.但是不论是普通类型的指针还是函数指针,都可以让我们这 ...
- 虚拟机创建流程中neutron代码分析(三)
前言: 当neutron-server创建了port信息,将port信息写入数据库中.流程返回到nova服务端,接着nova创建的流程继续走.在计算节点中neutron-agent同样要完成很多的工作 ...
随机推荐
- ADO.NET Entity Framework(EF)
ylbtech-Miscellaneos: ADO.NET Entity Framework(EF) A,返回顶部 1, ADO.NET Entity Framework 是微软以 ADO.NET 为 ...
- Maven详解之仓库------本地仓库、远程仓库
在Maven中,任何一个依赖.插件或者项目构建的输出,都可以称之为构件. Maven在某个统一的位置存储所有项目的共享的构件,这个统一的位置,我们就称之为仓库.(仓库就是存放依赖和插件的地方) 任何的 ...
- Java多线程之阻塞I/O如何中断
阻塞的I/O线程在关闭线程时并不会被打断,需要关闭资源才能打断. 1.执行socketInput.close();阻塞可中断.2.执行System.in.close();阻塞没有中断. package ...
- WCF服务在高并发情况下报目标积极拒绝的异常处理 z
http://www.cnblogs.com/kklldog/p/5037006.html wcf的监控服务,偶尔监控到目标服务会报一个目标积极拒绝的错误.一开始以为服务停止了,上服务器检查目标服务好 ...
- scala环境搭建
第一步:Java 设置 确保你本地以及安装了 JDK 1.5 以上版本,并且设置了 JAVA_HOME 环境变量及 JDK 的bin目录. 在 Mac 上安装 Java 下载 jre-8u65-mac ...
- Web Service 性能测试工具比较
背景 希望选择一款Web Service性能测试工具,能真实模拟大量用户访问网站时的请求,从而获取服务器当前的请求处理能力(请求数/秒).以微信服务器为例,每个用户用独立的登录token,做各种操作, ...
- redis命令(转)
http://redis.readthedocs.org/en/latest/index.html 连接操作相关的命令 quit:关闭连接(connection) auth:简单密码认证 持久化 sa ...
- Java中的匿名类
我们知道接口一般用于定义一种规范或操作协议,然后子类实现接口的所有功能.如下面的简单代码: 定义IMessage接口 package org.lyk.entities; public interfac ...
- gomoblie flappy 源码分析:图片素材和大小的处理
flappy的源码可以在 https://github.com/golang/mobile 看到.具体在 https://github.com/golang/mobile/tree/master/ex ...
- android 4.4 状态栏隐藏
这个是Android Developer上的原文 反正我也看得不是很懂 我知道的就是实现和导航栏和状态栏的透明 带一些渐变效果 1. 设置主题 <style name="Theme.T ...