HakunaMatatea

 

ATM管理系统

|博客班级|https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/|
|这个作业要求在哪里|https://edu.cnblogs.com/campus/ahgc/AHPU-SE-19/homework/11477|
|这个作业的目标|编写一个ATM管理系统|
|学号|3190704210|
**ATM管理系统 **

  1. 题目要求
    编写一个ATM管理系统,语言不限,要求应包括以下主要功能:
    (1)开户,销户
    (2)查询账户余额
    (3)存款
    (4)取款
    (5)转账(一个账户转到另一个账户)
  2. 代码
    主函数

`
int main() {
struct user p=NULL;
int card=2001,count1=0,count2=0;
char passward[N],c;
int flag;
struct user r=NULL;
int flag1=1;
p=readfile(p); //从文件里读取用户信息
printf("
\n");
printf("
\n");
printf("
欢迎使用ATM系统 \n");
printf("
\n");
printf("
**\n");
printf("请输入用户账号:");
scanf("%d",&card);
printf("\n请输入密码:");
scanf("%s",&passward);
for(r=p->next;r!=NULL;r=r->next){
count2++;
if(cardr->card && strcmp(r->passward,passward)0){
printf("\n登录成功\n");
break;
}else{
count1++;
}
}
if(count1==count2){
printf("\n登录失败\n");
exit(0);
}
while(flag1){
menu();
printf("选择相应操作:");
scanf("%d",&flag);
switch(flag){
case 1:{ //开户
p=add_user(p);
break;
}
case 2:{ //销户
p=delete_user(p,card);
break;
}
case 3:{ //查询账号余额
search_user(p,card);
break;
}
case 4:{ //取款
get_money(p,card);
break;
}
case 5:{ //存款
put_money(p,card);
break;
}
case 6:{ //转账
turn_money(p,card);
break;
}
default :exit(0);break;
}
printf("\n继续操作(1)\n");
printf("\n退出系统(0)\n");
scanf("%d",&flag1);
system("cls");

}
savefile(p);						//重新将新增的信息写入事先编好的text文件里


return 0;

}**菜单界面**void menu(){
system("cls");
printf("\n");
printf("
1、开户 2、销户 \n");
printf("
3、查询 4、取款 \n");
printf("
5、存款 6、转账 \n");
printf("
退出(任意键) \n");
printf("
\n");
}
`

用户信息读入
void savefile(struct user *p) { struct user *r=NULL; FILE *fp; r=p->next; fp=fopen("user.txt","w+"); while(r!=NULL) { fprintf(fp,"%d\t%d\t%f\t%s\t%s\n",r->card,r->person_num,r->money,r->passward,r->name); r=r->next; } fclose(fp); }
开户
struct user *add_user(struct user *p){ struct user *r; struct user *q; char c; r=(struct user*)malloc(sizeof(struct user)); printf("请输入身份证号,密码,姓名(回车键隔开):\n"); scanf("%d",&r->person_num); scanf("%s%s",&r->passward,&r->name); r->card=2000+rand()%100; for(q=p;q!=NULL;q=q->next){ if(q->card==r->card){ r->card=r->card+1; }else{ continue; } } r->money=0; r->next=p->next; p->next=r; printf("\n开户成功\n"); printf("新增用户:卡号:%d\t身份证:%d\t余额:%f\t姓名:%s\n",r->card,r->person_num,r->money,r->name); return p; }

销户
`
struct user * delete_user(struct user* p,int card){
struct user* r;
struct user* q;
r=p;
for(;r!=NULL;r=r->next){
if(card==r->card){
printf("当前账号存在余额:%.2f\n",r->money);
break;
}
}
int flag;
printf("取出全部金额并销户(1)\n");
printf("取消销户(0)\n");
scanf("%d",&flag);

if(flag==1){
	for(r=p;r!=NULL;r=r->next){
		q=r->next;
		if(q->card==card){
			r->next=q->next;
			free(q);
			break;
		}
	}
}else{
	return p;
} 

return p; 

} **查询**void search_user(struct user* p,int card){
for(;p!=NULL;p=p->next){
if(card==p->card){
printf("您当前的余额为:%.2f\n",p->money);
break;
}
}

}
`

存款
void put_money(struct user* p,int card){ for(;p!=NULL;p=p->next){ if(card==p->card){ printf("您当前的余额为:%.2f\n",p->money); break; } } printf("请输入您想要存储的金额:"); float money; scanf("%f",&money); p->money=p->money+money; printf("操作成功,您当前的余额为:%.2f\n",p->money); }

取款
void get_money(struct user* p,int card){ for(;p!=NULL;p=p->next){ if(card==p->card){ printf("您当前的余额为:%.2f\n",p->money); break; } } printf("请输入您想要取出的金额:"); float money; scanf("%f",&money); if(money<=p->money){ p->money=p->money-money; printf("\n操作成功,当前余额:%.2f\n",p->money); } else{ printf("操作失败,账户余额不足\n"); } }

转账
`
void turn_money(struct user* p,int card){
struct user * r;
struct user * q;
int con=0;
for(r=p;r!=NULL;r=r->next){
if(cardr->card){
int money;
money=r->money;
break;
}
}
label: printf("请输入您想要的转账对象的卡号:");
int tcard;
scanf("%d",&tcard);
con++;
int count=0; //0表示账号不存在,1表示账号存在
for(q=p;q!=NULL;q=q->next){
if(tcard
q->card){
count=1;
break;
}
}
if(count==0){ //判断转账用户是否存在
if(con<2){
printf("\n转账用户不存在,请检查账号输入是否有误。\n");
printf("\n当前您还有一次操作机会\n");
goto label;
}else{
printf("\n本次转账操作强行结束\n");
return;
}

}
printf("请输入您想要转账的金额:");
float tmoney;
scanf("%f",&tmoney);
if(tmoney<=r->money){
	r->money=r->money-tmoney;		//您的用户减钱 
	q->money=q->money+tmoney;		//目标用户加钱 
	printf("\n操作成功,您的当前余额:%.2f\n",r->money);
} else{
	printf("操作失败,您的账户余额不足\n");
}	

}
`
3. 运行结果

posted on 2020-11-19 10:58  HakunaMatatea  阅读(72)  评论(0编辑  收藏  举报

导航