ATM模拟系统代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<stdio.h>
#include<stdlib.h>
struct time{int year,month,day;
float hour,minute,second;
char place[50];};
struct person{
int action;
struct time*time;
struct person*next;
};
struct st{ char name[9];
int number;
int password;
int money;
struct person*go;
struct st*next;
};
void create(struct st ** head);
struct st *check(struct st * head,int a ,int b);
void mean ();
void display(struct st *p);
void revise (struct st *p);
void reserch (struct st *p);
void save (struct st *p);
void take (struct st *p);
void main ()
{
int select=1,i=0,a,b;
struct st *head=NULL,*p;
create(&head);
printf("\n\n\n\n\n\n\n\t\t欢迎使用本系统\n\n\t\t帐号:\n\t\t密码:");
while(i<3)
{
scanf("%d%d",&a,&b);
p=check(head,a,b);
if(!p)
{
printf(i<2?"\t\t信息错误,请重新输入\n":"\t\t您无权使用本系统\n");i++;
}
else break;
}
if(i==3)
exit(0);
while(select!=6)
{ mean();
printf("\t\t请选择服务:");
scanf("%d",&select);
switch(select){
case 1:display(p);break;
case 2:revise(p);break;
case 3:reserch(p);break;
case 4:save(p);break;
case 5:take(p);break;
case 6:printf("\n\t\t谢谢使用\n");break;
}
}
}
void create(struct st * *head)
{
struct st *p;
FILE *fp;
fp=fopen("E:\\取款机.txt","r");
while(!feof(fp))
{
p=(struct st * )malloc(sizeof(struct st));
fscanf(fp,"%s",p->name);
fscanf(fp,"%d",&p->number);
fscanf(fp,"%d",&p->password);
fscanf(fp,"%d",&p->money);
p->next=*head;
*head=p;
} }
struct st *check(struct st * head,int a ,int b)
{
struct st *p;
p=head;
while(p)
{
if(p->number==a&&p->password==b)
return p;
else p=p->next;
}
return NULL;
}
void mean ()
{
printf("\n\t\t1: 显示所有信息\n");
printf("\t\t2: 修改信息\n");
printf("\t\t3: 查看信息\n");
printf("\t\t4: 存款\n");
printf("\t\t5: 取款\n");
printf("\t\t6: 退出系统\n");
}
void display(struct st *p)
{
printf("\t\t户主:%s\n",p->name);
printf("\t\t账号:%d\n",p->number);
printf("\t\t余额:%d\n",p->money);
}
void revise (struct st *p)
{
printf("\t\t旧密码:%d\n",p->password);
printf("\t\t请输入新密码:");
scanf("%d",&p->password);
printf("\t\t当前密码:%d",p->password);
}
void reserch (struct st *p)
{
printf("\t\t余额: %d\n",p->money);
}
void save (struct st *p)
{ int a;
printf("\t\t请输入存款金额:");
scanf("%d",&a);
p->money+=a;
}
void take (struct st * p)
{ int a,s=0,b;
struct person*mm, *ma;
FILE *fp;
fp=fopen("E:\\11.txt","r");
mm=(struct person*)malloc(sizeof(struct person));
p->go=mm;
mm->next=NULL;
printf("\t\t请输入取款金额:");
scanf("%d",&a);
while(a<5000)
{
if(p->money>=a)
{
p->money-=a;
s+=a;
mm->action=a;
if(s>50000)
{
fscanf(fp,"%d%d%d",p->go->time->year,p->go->time->month,p->g o->time->day);
fscanf(fp,"%f%f%f",p->go->time->hour,p->go->time->minute,p->g o->time->second);
fscanf(fp,"%s",p->go->time->place);
fclose(fp);
}
ma=(struct person*)malloc(sizeof(struct person));
ma->next=NULL;
mm-ma;
printf("\n\t\t继续1 返回0 :");
scanf("%d",&b);
if(b==1)
{
printf("\t\t请输入取款金额:");
scanf("%d",&a);
}
else if(!b)
break;
else
printf("\n\t\t输入有误");
}
else
{
printf("\t\t对不起,余额不足%d!\n",a);
break;
}
}
printf("\n\t\t对不起,每次取款不能超过5000\n");
}。

相关文档
最新文档