ATM 机的运行模拟程序该如何再细一点
#include <stdio.h>#include <stdlib.h>
#include <time.h>
#include<windows.h>
int record[20];
struct date{
int month;
int day;
int year;
double qian;
};
struct zhanghu{int a;char b[10];int c;double d;struct date memo[20];}all[21];//客户结构体
struct date get_time()
{
struct tm *p;
struct date da;
time_t t;
time(&t);
p=localtime(&t);//取得当地时间
da.year=1900+p->tm_year;
da.month=1+p->tm_mon;
da.day=p->tm_mday;
return da;
}
int deal(void) //登录界面
{
int ch;
puts("欢迎使用农业银行自助取款系统");
puts("1.存款");
puts("2.取款");
puts("3.余额查询");
puts("4.交易查询");
puts("5.返回");
puts("6.取卡");
scanf("%d",&ch);
return ch;
}
int xunzhao(int zh) //寻找账号 ,存在返回编号,不存在返回0
{
int i;
for(i=1;i<21;i++)
{if (zh==all[i].a) return i;}
return 0;
}
void tianjia(void) //添加账号
{
static int num=1; //内部标识位,静态变量
int flag=1;//开户循环标志
int cp=1;//密码比较标志
int judge;//判断是否可用
system("cls");
if(num==19) {puts("账户已满");return ;}
while(flag)
{
puts("请输入八位账户账号");
scanf("%d",&judge);
if(xunzhao(judge)) {puts("该账户已存在,请重新输入");flag=1; } //已存在
else {flag=0;all[num].a=judge;}
}
//if(xunzhao(all[num].a)==0) //开户
puts("该账户可用");
puts("请输入用户名");
scanf("%s",&all[num].b);
while(cp)
{
puts("请输入六位密码");
scanf("%d",&all[num].c);
puts("请重新输入密码");
scanf("%d",&cp);
if(cp==all[num].c){puts("开户成功");num++;cp=0;flag=0;}
else {cp=1;puts("密码错误,请重新输入");}
}
return; //结束
}
int init(void) //初始化界面
{
int ch;
int denglu=0;
system("cls");
puts("1.添加账户");
puts("2.账户登录");
puts("3.取卡");
scanf("%d",&ch);
return ch;
}
int yanzheng()
{
int kahao ; //验证卡号
int i;//内部编号
int mima; //验证密码
system("cls");
puts("请输入银行卡号,'0'退出");
scanf("%d",&kahao);
if(kahao==0)return 0;
if(xunzhao(kahao)==0){puts("该卡号不存在");yanzheng();}
if(i=xunzhao(kahao))
{
puts("请输入银行卡密码");
scanf("%d",&mima);
if(mima!=all[i].c){puts("密码错误,请重新登录!");yanzheng();}
else
{puts("登录成功!");
printf("\n%s 欢迎您!\n",all[i].b);
return i;
}
}
return 0;}
int cun(int man)
{
double money;
system("cls");
puts("请输入存款金额,'0'返回");
scanf("%lf",&money);
if(money==0){return 1;}
else
{
all[man].d+=money;//存款操作
all[man].memo[record[man]]=get_time();
all[man].memo[record[man]++].qian=money;
puts("操作成功");
return 1;
}
}
int qu(int man)
{
double money;
system("cls");
puts("请输入取款金额,'0'返回");
scanf("%lf",&money);
if(money==0){return 1;}
else
{
all[man].d-=money;//取款操作
all[man].memo[record[man]]=get_time();
all[man].memo[record[man]++].qian=(-1)*money;
puts("操作成功");
return 1;
}
}
int yu(int man)
{system("cls");printf("您的账户余额为:%lf\n",all[man].d);return 1;}
int jiao(int man)
{
int j;
system("cls");
printf("交易时间 交易明细\n");
for(j=0;j<record[man];j++)
printf("%d/%d/%d %lf\n\n",all[man].memo[j].year,all[man].memo[j].month,all[man].memo[j].day,all[man].memo[j].qian);
return 1;
}
int caozuo()
{
int permit;
int choice;
int people;
int jixu;
int fanhui;
permit=init();
if(permit==1) {tianjia();caozuo();}
else if(permit==2)
{
people=yanzheng();
if(people==0)return 0;
while(jixu) { choice=deal();
if(choice==1) jixu=cun(people); //存
else if(choice==2) jixu=qu(people); //取
else if(choice==3) jixu=yu(people); //余额
else if(choice==4) jixu=jiao(people); //交易
else if(choice==5) return 1;
else {return 0;}//取卡
}
}
else return 0;
}
int main()
{
int flag=0;
do {system("cls");flag=caozuo();}while(flag);
system("PAUSE");
return 0;
}