一个简单的小程序(ATM自动取款机)

ATM自动取款机

算是用c写的一个小程序吧,大家有兴趣的可以看一下,代码比较长希望大家有耐心。

#include<stdio.h>
#include<malloc.h>
#include<string.h>
void home();//主界面 
void set_up();//创建帐号 
int judge(char *ch);//核对输入的数字是否是数字
int repetition(char*ch);//判断是否已存在帐号 
void enter();//登录帐号 
int check(char *accounts,char *password);//核对密码
void first_inter_home(char *accounts);
void inter_home(char *accounts);//登录界面 
void deposit(char *accounts);//存款界面 
void put_money(char *accounts,float num);//存款 
char *show_name(char *accounts);//显示用户名 
void withdrawal(char *accounts);//取款界面 
int examine(char *accounts,float num);//查看余额是否够取
void get_money(char *accounts,float num);//取款修改金额 
void balance_enquiry(char *accounts);//余额查询 
void balance_enquiry_2(char *accounts);//余额查询 
void change_password_interface(char *accounts);//修改密码界面 
void change_password(char *accounts);//修改密码 
void transfer(char *accounts);//转帐界面
void no_deposit();//无卡存款 
struct userinfo
{
	char accounts[20];//用户帐号
	char name[20];//用户名
	char password[20];//密码 
	float balance;//余额 
}; 
int main()
{
	FILE *ur;
	ur=fopen("F:\\user.txt","w");
	if(ur==0)
	printf("创建文件失败!\n");
	fclose(ur);
	home();
	return 0;
}
void home()//主界面 
{
	int i;
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");
	printf("\t\t\t\t\t=====请选择服务:\n\n\n");
	printf("\t\t\t\t\t=====1-创建帐户\t2-登录帐户=====\n\n\n");
	printf("\t\t\t\t\t=====3-无卡存款\t4-退出系统=====\n\n\n");	
	printf("\t\t\t\t\t");	
	scanf("%d",&i);
	switch(i)
	{
		case 1:system("CLS");set_up();break;//创建帐号 
		case 2:system("CLS");enter();break;//登录帐号 
		case 3:system("CLS");no_deposit();break;//无卡存款 
		case 4:system("CLS");exit(0);//退出系统 */
		default:
		printf("\t\t\t\t\t");
		printf("输入错误!\n");
		printf("\t\t\t\t\t");
		system("pause");
		system("cls");home();
	}
	return ;
}
int user_counts=0;
void set_up()
{
	 FILE *ur;
	 ur=fopen("F:\\user.txt","a+");
	 if(ur==0)
	 printf("打开失败!\n");
	 struct userinfo *p;
	 char ch[20];//临时储存密码 
	 int num,flag;
	 p=(struct userinfo *)malloc(sizeof(struct userinfo));
	 user_counts++;
	 printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("请输入要创建的帐号:\n");
	printf("\t\t\t\t\t");
	 do
	 {
	 	scanf("%s",p->accounts);
	 	if(judge(p->accounts))
	 	{
			printf("\t\t\t\t\t");
			printf("输入错误!\n");
			printf("\t\t\t\t\t");
	 		system("pause");
	 		
	 		do
	 		{	system("CLS");
	 			printf("\n\n\n\n");
				printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
				printf("\t\t\t\t\t");
				printf("重新输入请输入1\n\n");
				printf("\t\t\t\t\t");
				printf("返回主界面请输入2\n\n");
				printf("\t\t\t\t\t");
		 		scanf("%d",&num);
	 			switch(num)
	 			{
		 			case 1:system("CLS");flag=0;break;
		 			case 2:system("CLS");home();break;
		 			default:
		 			{
		 				flag=1;
		 				system("CLS");
		 				printf("\n\n\n\n");
						printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
						printf("\t\t\t\t\t");
						printf("输入错误!\n");
						printf("\t\t\t\t\t");
		 				system("pause");
		 			}
		 		}
		 	}while(flag);
			 printf("\n\n\n\n");
			printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
			printf("\t\t\t\t\t");
			printf("请重新输入:\n");
			printf("\t\t\t\t\t");
	 	}
	 }while(judge(p->accounts));
	 if(user_counts>=2)
	 {
	 	while(repetition(p->accounts))
	 	{	
			printf("\t\t\t\t\t");
			printf("帐号重复!\n");
			printf("\t\t\t\t\t");
	 		system("PAUSE");
	 		system("CLS");
		 	user_counts--;
	 		home();
	 	}
	 }	
	system("CLS");
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("请输入用户名:\n");
	printf("\t\t\t\t\t");
 	scanf("%s",p->name);
 	system("CLS");
 	ANEW:
 	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("请输入密码:\n");
	printf("\t\t\t\t\t");
 	do
 	{	
 		scanf("%s",p->password);
 		if(judge(p->password))
 		{
		printf("\t\t\t\t\t");
		printf("输入错误!\n");
		printf("\t\t\t\t\t");
 		system("pause");
 		system("CLS");
 		printf("\n\n\n\n");
		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("请重新输入:\n");
		printf("\t\t\t\t\t");
 		}
 	}while(judge(p->password));
 	printf("\t\t\t\t\t");
	printf("请确认密码:\n");
	printf("\t\t\t\t\t");
 	while(strcmp(p->password,ch))
 	{
 		scanf("%s",ch);
 		if(strcmp(p->password,ch))
 		{
			printf("\t\t\t\t\t");
			printf("密码错误,请重新设置密码:\n");
			printf("\t\t\t\t\t");
 			system("PAUSE");
 			system("CLS");
			 if(getchar())
			 {
			 	goto ANEW;
			 } 
 	 	 }
	 }
	 system("CLS");
	 printf("\n\n\n\n");
     printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	 printf("\t\t\t\t\t");
	 printf("创建帐号成功!\n");
	 printf("\t\t\t\t\t");
	 system("PAUSE");
	 p->balance=0.0;
	 system("CLS"); 
	 fprintf(ur,"%20s%20s%20s%20f",p->accounts,p->name,p->password,p->balance);
	 fclose(ur);
	 free(p);
	 home();
}
int repetition(char *ch)
{
	FILE *pb;
	int flag=0;
	pb=fopen("F:\\user.txt","r");
	struct userinfo *q;//定义一个结构指针来存放帐号的值
	q=(struct userinfo *)malloc(sizeof(struct userinfo)); 
	while(!feof(pb))
	{
		fscanf(pb,"%20s%20s%20s%20f",&q->accounts,&q->name,&q->password,&q->balance);
		if(strcmp(ch,q->accounts)==0)flag=1;
	}
	free(q);
	fclose(pb);
    return flag;
}
int judge(char *ch)
{
	int i;
	for(i=0;ch[i]!='\0';i++)
	{
		if(ch[i]<'0'||ch[i]>'9')
		return 1;
	}
	return 0;
}
int proofread(char *ch1,char *ch2)
{
	int i;
	for(i=0;i<20;i++)
	{
		if(ch1[i]!=ch2[i])
		{
			return 1;
		}
	}
	return 0;
}	
void enter()
{
	int put_counts=0;
	if(user_counts==0)
	{
		printf("\n\n\n\n");
		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("未创建任何帐号!\n");
		printf("\t\t\t\t\t");
		system("pause");
		system("cls");
		home();
	}
	char accounts[20],password[20],password2[20];//储存输入的帐号 
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("请输入您的帐号:\n");
	printf("\t\t\t\t\t");
	scanf("%s",accounts);
	if(repetition(accounts)==0)
	{
		printf("\t\t\t\t\t");
		printf("帐号不存在 !\n");
		printf("\t\t\t\t\t");
		system("pause");
		system("cls");
		home();
	}
	system("CLS");
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("请输入密码:\n");
	printf("\t\t\t\t\t");
	QUEREN:
	scanf("%s",password);
	printf("\t\t\t\t\t");
	printf("请确认密码:\n");
	printf("\t\t\t\t\t");
	scanf("%s",password2);
	printf("\t\t\t\t\t");
	if(strcmp(password,password2))
	{
		system("cls");
		printf("\t\t\t\t\t");
		printf("确认错误!\n");
		printf("\t\t\t\t\t");
		system("pause");
		system("CLS");
		printf("\n\n\n\n");
		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("请重新输入密码:\n");
		printf("\t\t\t\t\t"); 
		goto QUEREN;
	}
	if(check(accounts,password))
	{	
		printf("\t\t\t\t\t");
		printf("帐号或密码不正确!\n");
		printf("\t\t\t\t\t");
		if(put_counts++==3)
		{	
			printf("\t\t\t\t\t");
			printf("您已三次输入错误!\n");
			printf("\t\t\t\t\t");
			system("paser");
			system("CLS");
			home();
		}
		system("pause");
		system("CLS");
		enter();
	}
	first_inter_home(accounts);
}
int check(char *accounts,char *password)
{
	FILE *pb;
	int flag=1;
	pb=fopen("F:\\user.txt","r");
	struct userinfo *q;//定义一个结构指针来存放密码的值
	q=(struct userinfo *)malloc(sizeof(struct userinfo)); 
	while(!feof(pb))
	{
		fscanf(pb,"%20s%20s%20s%20f",&q->accounts,&q->name,&q->password,&q->balance);
		if(!(strcmp(accounts,q->accounts))&&!(strcmp(password,q->password)))flag=0;
	}
	free(q);
	fclose(pb);
    return flag;
}
void first_inter_home(char *accounts)
{
	system("pause");
	system("CLS");
	int d;
	printf("\n\n\n\n");
	printf("\t\t\t\t\t");
	printf("尊敬的\"%s\"\n\n",show_name(accounts));
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");
	printf("\t\t\t\t\t=====请选择服务:\n\n\n");
	printf("\t\t\t\t\t=====1-存款业务\t2-取款业务=====\n\n\n");
	printf("\t\t\t\t\t=====3-查询余额\t4-修改密码=====\n\n\n");
	printf("\t\t\t\t\t=====5-转帐业务\t6-退出登录\n\n\n");	
	printf("\t\t\t\t\t");
	scanf("%d",&d);
	switch(d)
	{
		case 1:system("CLS");deposit(accounts);break;
		case 2:system("CLS");withdrawal(accounts);break;
		case 3:system("CLS");balance_enquiry_2(accounts);break;
		case 4:system("CLS");change_password_interface(accounts);break;
		case 5:{
			system("CLS");
			if(user_counts==1)
			{
				printf("\n\n\n\n");
				printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
				printf("\t\t\t\t\t");
				printf("只有一个帐户,不能转帐给自己!\n");
				printf("\t\t\t\t\t");
				system("pause");
				system("CLS");
				printf("\n\n\n\n");
				printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
				printf("\t\t\t\t\t");
				printf("返回登录界面请输入1\n\n\n");
				printf("\t\t\t\t\t");
				printf("返回主界面请输入2\n");
				printf("\t\t\t\t\t");
				do
				{
					scanf("%d",&d);
					switch(d)
					{
						case 1:system("CLS");inter_home(accounts);break;
						case 2:system("CLS");home();break;
						default:
						{
							system("CLS");
							printf("\n\n\n\n");
							printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
							printf("\t\t\t\t\t");
							printf("输入错误!\n");
							printf("\t\t\t\t\t");
							system("pause");
							system("CLS");
							printf("\n\n\n\n");
							printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
							printf("\t\t\t\t\t");
							printf("请重新输入:\n");
							printf("\t\t\t\t\t");
						}
					}
				}while(1);
			} 
			transfer(accounts);break;
		}
		case 6:system("CLS");home();break;
		default:
		system("CLS");
		printf("\n\n\n\n");
		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("输入错误!\n");
		printf("\t\t\t\t\t");
		system("pause");
		system("CLS");
		inter_home(accounts);
	}
}
void inter_home(char *accounts)
{
	int d;
	printf("尊敬的\"%s\"\n\n",show_name(accounts));
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");
	printf("\t\t\t\t\t=====请选择服务:\n\n\n");
	printf("\t\t\t\t\t=====1-存款业务\t2-取款业务=====\n\n\n");
	printf("\t\t\t\t\t=====3-查询余额\t4-修改密码=====\n\n\n");
	printf("\t\t\t\t\t=====5-转帐业务\t6-退出登录\n\n\n");
	printf("\t\t\t\t\t");
	scanf("%d",&d);
	switch(d)
	{
		case 1:system("CLS");deposit(accounts);break;
		case 2:system("CLS");withdrawal(accounts);break;
		case 3:system("CLS");balance_enquiry_2(accounts);break;
		case 4:system("CLS");change_password_interface(accounts);break;
		case 5:
		{
			system("CLS");
			if(user_counts==1)
			{
				printf("\n\n\n\n");
				printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
				printf("\t\t\t\t\t");
				printf("只有一个帐户,不能转帐给自己!\n");
				printf("\t\t\t\t\t");
				system("pause");
				system("CLS");
				printf("\n\n\n\n");
				printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
				printf("\t\t\t\t\t");
				printf("返回登录界面请输入1\n\n\n");
				printf("\t\t\t\t\t");
				printf("返回主界面请输入2\n");
				printf("\t\t\t\t\t");
				do
				{
					scanf("%d",&d);
					switch(d)
					{
						case 1:system("CLS");inter_home(accounts);break;
						case 2:system("CLS");home();break;
						default:
						{
							system("CLS");
							printf("\n\n\n\n");
							printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
							printf("\t\t\t\t\t");
							printf("输入错误!\n");
							printf("\t\t\t\t\t");
							system("pause");
							system("CLS");
							printf("\n\n\n\n");
							printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
							printf("\t\t\t\t\t");
							printf("请重新输入:\n");
							printf("\t\t\t\t\t");
						}
					}
				}while(1);
			} 
			transfer(accounts);break;
		} 
		case 6:system("CLS");home();break;
		default:
		system("CLS");
		printf("\n\n\n\n");
		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("输入错误!\n");
		printf("\t\t\t\t\t");
		system("pause");
		system("CLS");
		inter_home(accounts);
	}
}
void deposit(char *accounts)
{
	int put_num,flag;//保存输入的数字 、其它金额 
	int number;
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");
	printf("\t\t\t\t\t=====请选择存款金额:\n\n\n");
	printf("\t\t\t\t\t=====1-  200   \t2-  400   =====\n\n\n");
	printf("\t\t\t\t\t=====3-  700   \t4-  1000 =====\n\n\n");
	printf("\t\t\t\t\t=====5-  1500  \t6-  2000 =====\n\n\n");
	printf("\t\t\t\t\t=====7-  3000  \t8-  其它金额===\n\n\n");
	printf("\t\t\t\t\t");
	scanf("%d",&put_num);
	switch(put_num)
	{
		case 1:system("CLS");number=200;break;
		case 2:system("CLS");number=400;break;
		case 3:system("CLS");number=700;break;
		case 4:system("CLS");number=1000;break;
		case 5:system("CLS");number=1500;break;
		case 6:system("CLS");number=2000;break;
		case 7:system("CLS");number=3000;break;
		case 8:
			{
				do
				{
					system("CLS");
					printf("\n\n\n\n");
					printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
					printf("\t\t\t\t\t");
					printf("请输入你要存款的金额:\n");
					printf("\t\t\t\t\t");
					scanf("%d",&number);
					if(number%100!=0)
					{	
						printf("\t\t\t\t\t");
						printf("输入错误!只能输入整百数!\n");
						printf("\t\t\t\t\t");	
						system("PAUSE");
						flag=1;
					}
					else flag=0;
				} while(flag);
			}
			break;
		default:
		system("CLS");
		printf("\n\n\n\n");
		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("输入错误!\n");
		printf("\t\t\t\t\t");
		system("pause");
		system("CLS");
		deposit(accounts);
	}
	put_money(accounts,number);
	system("CLS");
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("存款成功!\n");
	printf("\t\t\t\t\t");
	NEW_2:
	system("pause");
	system("cls");
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("返回用户界面请输入1\n\n");
	printf("\t\t\t\t\t");
	printf("返回主界面请输入2\n\n");
	printf("\t\t\t\t\t");
	scanf("%d",&put_num);
	switch(put_num)
	{
		case 1:system("cls");inter_home(accounts);break ;
		case 2:system("cls");home();break;
		default:system("cls");
		printf("\n\n\n\n");
		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("输入错误!\n");
		printf("\t\t\t\t\t");
		system("pause");
		system("cls");
		goto NEW_2;
	}
}
void put_money(char *accounts,float num) 
{
	printf("%s",accounts);
	struct userinfo *q;//定义一个结构指针来存放密码的值
	q=(struct userinfo *)malloc(sizeof(struct userinfo)); 
	FILE *pb,*pb2;
	pb=fopen("F:\\user.txt","r");
	pb2=fopen("F:\\user_2.txt","w");
	while(!feof(pb))
	{
		fscanf(pb,"%20s%20s%20s%20f",&q->accounts,&q->name,&q->password,&q->balance);
		if((strcmp(accounts,q->accounts)==0)){
			q->balance+=num;
			fprintf(pb2,"%20s%20s%20s%20f",q->accounts,q->name,q->password,q->balance);
		}
		else{
			fprintf(pb2,"%20s%20s%20s%20f",q->accounts,q->name,q->password,q->balance);
		}
	}
	fclose(pb);
	fclose(pb2);
	pb=fopen("F:\\user.txt","w");
	pb2=fopen("F:\\user_2.txt","r");
	while(!feof(pb2))
	{
		fscanf(pb2,"%20s%20s%20s%20f",&q->accounts,&q->name,&q->password,&q->balance);
		fprintf(pb,"%20s%20s%20s%20f",q->accounts,q->name,q->password,q->balance);
	}
	free(q);
	fclose(pb);
	fclose(pb2);
}
char *show_name(char *accounts)
{
	char *name;
	FILE *pb;
	pb=fopen("F:\\user.txt","r");
	struct userinfo *q;//定义一个结构指针来存放帐号的值
	q=(struct userinfo *)malloc(sizeof(struct userinfo)); 
	while(!feof(pb))
	{
		fscanf(pb,"%20s%20s%20s%20f",&q->accounts,&q->name,&q->password,&q->balance);
		if(strcmp(accounts,q->accounts)==0)
		{
			name=q->name;
		}
	}
	free(q);
	fclose(pb);
	return name;
 } 
void withdrawal(char *accounts)
{
	int put_num,flag;
	int number;
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");
	printf("\t\t\t\t\t=====请选择取款金额:\n\n\n");
	printf("\t\t\t\t\t=====1-  200   \t2-  400   =====\n\n\n");
	printf("\t\t\t\t\t=====3-  700   \t4-  1000 =====\n\n\n");
	printf("\t\t\t\t\t=====5-  1500  \t6-  2000 =====\n\n\n");
	printf("\t\t\t\t\t=====7-  3000  \t8-  其它金额===\n\n\n");
	printf("\t\t\t\t\t");
	scanf("%d",&put_num);
	switch(put_num)
	{
		case 1:number=200;break;
		case 2:number=400;break;
		case 3:number=700;break;
		case 4:number=1000;break;
		case 5:number=1500;break;
		case 6:number=2000;break;
		case 7:number=3000;break;
		case 8:
		{
			do
			{
				system("cls");
				printf("\n\n\n\n");
				printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
				printf("\t\t\t\t\t");
				printf("请输入需要取款的金额:\n");
				printf("\t\t\t\t\t");
				scanf("%d",&number);
			if(number%100!=0)
			{
				system("CLS");
				printf("\n\n\n\n");
				printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
				printf("\t\t\t\t\t");
				printf("输入错误!请输入整数!\n");
				printf("\t\t\t\t\t");
				system("pause");
				system("cls");
				flag=1;
			}
			else flag=0;
			}while(flag);
		}break;
		default:
		{
			system("CLS");
			printf("\n\n\n\n");
			printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
			printf("\t\t\t\t\t");
			printf("输入错误!\n");
			printf("\t\t\t\t\t");
			system("pause");
			system("CLS");
			withdrawal(accounts);
		}
	}
	if(examine(accounts,number)==0)
	{
		system("cls");
		printf("\n\n\n\n");
		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		balance_enquiry(accounts);
		printf("\t\t\t\t\t");
		do
		{
			
			printf("\n\n\n\n");
			printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
			printf("\t\t\t\t\t");
			printf("继续取款请输入1\n\n");
			printf("\t\t\t\t\t");
			printf("返回用户界面请输入2\n\n");
			printf("\t\t\t\t\t");
			scanf("%d",&put_num);
		switch(put_num)
		{
			case 1:system("CLS");withdrawal(accounts);
			case 2:system("CLS");inter_home(accounts);
			default:
			{
				system("cls");
				printf("\n\n\n\n");
				printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
				printf("\t\t\t\t\t");
				printf("输入错误!\n");
				printf("\t\t\t\t\t");
				system("pause");
				system("CLS");
			}
		}
		}while(1);
	}
	get_money(accounts,number);
	system("cls");
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("取款成功!您已成功取出%d元。\n",number);
	printf("\t\t\t\t\t");
 	system("pause");system("CLS");inter_home(accounts);
} 
int examine(char *accounts,float num)
{
	int flag=0;
	FILE *pb;
	pb=fopen("F:\\user.txt","r");
	struct userinfo *q;//定义一个结构指针来存放帐号的值
	q=(struct userinfo *)malloc(sizeof(struct userinfo)); 
	while(!feof(pb))
	{
		fscanf(pb,"%20s%20s%20s%20f",&q->accounts,&q->name,&q->password,&q->balance);
		if(strcmp(accounts,q->accounts)==0)
		{
			if((q->balance)>=num)
			{
				flag=1;
			}
		}
	}
	free(q);
	fclose(pb);
	return flag;
}
void get_money(char *accounts,float num)
{
	struct userinfo *q;//定义一个结构指针来存放密码的值
	q=(struct userinfo *)malloc(sizeof(struct userinfo)); 
	FILE *pb,*pb2;
	pb=fopen("F:\\user.txt","r");
	pb2=fopen("F:\\user_2.txt","w");
	while(!feof(pb))
	{
		fscanf(pb,"%20s%20s%20s%20f",&q->accounts,&q->name,&q->password,&q->balance);
		if((strcmp(accounts,q->accounts)==0)){
			q->balance-=num;
			fprintf(pb2,"%20s%20s%20s%20f",q->accounts,q->name,q->password,q->balance);
		}
		else{
			fprintf(pb2,"%20s%20s%20s%20f",q->accounts,q->name,q->password,q->balance);
		}
	}
	fclose(pb);
	fclose(pb2);
	pb=fopen("F:\\user.txt","w");
	pb2=fopen("F:\\user_2.txt","r");
	while(!feof(pb2))
	{
		fscanf(pb2,"%20s%20s%20s%20f",&q->accounts,&q->name,&q->password,&q->balance);
		fprintf(pb,"%20s%20s%20s%20f",q->accounts,q->name,q->password,q->balance);
	}
	free(q);
	fclose(pb);
	fclose(pb2);
}
void balance_enquiry(char *accounts)
{
	FILE *pb;
	pb=fopen("F:\\user.txt","r");
	struct userinfo *q;//定义一个结构指针来存放帐号的值
	q=(struct userinfo *)malloc(sizeof(struct userinfo)); 
	while(!feof(pb))
	{
		fscanf(pb,"%20s%20s%20s%20f",&q->accounts,&q->name,&q->password,&q->balance);
		if(strcmp(accounts,q->accounts)==0)
		{
			system("cls");
			printf("\n\n\n\n");
			printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
			printf("\t\t\t\t\t");
			printf("您的余额为%.2f元\n",q->balance);
			printf("\t\t\t\t\t");
			printf("您的余额不足!\n");
			printf("\t\t\t\t\t");
		}
	}
	free(q);
	fclose(pb);
	system("pause");
	system("CLS");
	inter_home(accounts);
}
void balance_enquiry_2(char *accounts)
{
	FILE *pb;
	pb=fopen("F:\\user.txt","r");
	struct userinfo *q;//定义一个结构指针来存放帐号的值
	q=(struct userinfo *)malloc(sizeof(struct userinfo)); 
	while(!feof(pb))
	{
		fscanf(pb,"%20s%20s%20s%20f",&q->accounts,&q->name,&q->password,&q->balance);
		if(strcmp(accounts,q->accounts)==0)
		{
			system("cls");
			printf("\n\n\n\n");
			printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
			printf("\t\t\t\t\t");
			printf("您的余额为%.2f元\n",q->balance);
			printf("\t\t\t\t\t");
		}
	}
	free(q);
	fclose(pb);
	system("pause");
	system("CLS");
	inter_home(accounts);
}
void change_password_interface(char *accounts)
{
	int num,flag;
	change_password(accounts);
	system("cls");
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("修改成功!\n");
	printf("\t\t\t\t\t");
	system("PAUSE");
	system("CLS");
	inter_home(accounts);
}
void change_password(char *accounts)
{
	int flag;
	char old_password[20],password[20],password_2[20];//存放输入的新密码
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("请输入原密码:\n");
	printf("\t\t\t\t\t");
	scanf("%s",old_password);
	if(check(accounts,old_password))
	{
		system("CLS");
		printf("\n\n\n\n");
		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("密码错误!\n");
		printf("\t\t\t\t\t");
		system("pause");
		system("CLS");
		inter_home(accounts);
	} 
	system("CLS");
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("请输入新密码:\n\n");
	printf("\t\t\t\t\t");
	scanf("%s",password);
	do
		{
			printf("\t\t\t\t\t");
			printf("确认密码:\n");
			printf("\t\t\t\t\t");
			scanf("%s",password_2);
			if(strcmp(password,password_2))
			{
				system("cls");
				printf("\n\n\n\n");
				printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");
				printf("\t\t\t\t\t");
				printf("请重新输入密码:\n");
				printf("\t\t\t\t\t");
				flag=1;
			}
			else flag=0;
		}while(flag);
	struct userinfo *q;//定义一个结构指针来存放密码的值
	q=(struct userinfo *)malloc(sizeof(struct userinfo)); 
	FILE *pb,*pb2;
	pb=fopen("F:\\user.txt","r");
	pb2=fopen("F:\\user_2.txt","w");
	while(!feof(pb))
	{
		fscanf(pb,"%20s%20s%20s%20f",&q->accounts,&q->name,&q->password,&q->balance);
		if((strcmp(accounts,q->accounts)==0))
			{
			fprintf(pb2,"%20s%20s%20s%20f",q->accounts,q->name,password,q->balance);
		}
		else{
			fprintf(pb2,"%20s%20s%20s%20f",q->accounts,q->name,q->password,q->balance);
		}
	}
	fclose(pb);
	fclose(pb2);
	pb=fopen("F:\\user.txt","w");
	pb2=fopen("F:\\user_2.txt","r");
	while(!feof(pb2))
	{
		fscanf(pb2,"%20s%20s%20s%20f",&q->accounts,&q->name,&q->password,&q->balance);
		if((strcmp(accounts,q->accounts)==0)){
			fprintf(pb,"%20s%20s%20s%20f",q->accounts,q->name,q->password,q->balance);
		}
	}
	free(q);
	fclose(pb);
	fclose(pb2);
}

void transfer(char *accounts)
{
	char accounts_2[20];
	int d,flag;
	float num;
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("请输入您要转帐的用户:\n");
	printf("\t\t\t\t\t");
	scanf("%s",accounts_2);
	if(strcmp(accounts,accounts_2)==0)
	{
		system("cls");
		printf("\n\n\n\n");
	 	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("不能转帐给自己!\n");
		printf("\t\t\t\t\t");
		system("pause");
		system("CLS");
		transfer(accounts);
	}
	if(repetition(accounts_2)==0)
	{
		system("cls");
		printf("\n\n\n\n");
	 	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("不存在这个帐号\n");
		printf("\t\t\t\t\t");
		system("pause");
		system("CLS");
		inter_home(accounts);
	}
	while(1)
	{
		system("cls");
		printf("\n\n\n\n");
	 	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("请输入您要转帐的金额:\n");
		printf("\t\t\t\t\t");
		scanf("%f",&num);
		if(examine(accounts,num))
		{
			break;
		}
		system("cls");
		printf("\n\n\n\n");
	 	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("您的余额不够转!\n");
		printf("\t\t\t\t\t");
		system("pause");
		system("CLS");
		do
		{
			system("cls");
			printf("\n\n\n\n");
	 		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
			printf("\t\t\t\t\t");
			printf("返回登录界面请输入1\n\n");
			printf("\t\t\t\t\t");
			printf("继续转帐请输入2\n\n");
			printf("\t\t\t\t\t");
			scanf("%d",&d);
			switch(d)
			{
				case 1:system("CLS");inter_home(accounts);break;
				case 2:system("CLS");flag=0;break;
				default:
				{
					system("CLS");
					printf("\n\n\n\n");
	 				printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
					printf("\t\t\t\t\t");
					printf("输入错误!\n");
					printf("\t\t\t\t\t");
					flag=1;
					system("pause");
					system("CLS");
				}
			}
		}while(flag);
	}
	do
	{
		system("cls");
		printf("\n\n\n\n");
		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("是否确认转给\"%s\"%.2f元?\n\n",show_name(accounts),num);
		printf("\t\t\t\t\t");
		printf("确认请输入1\n\n");
		printf("\t\t\t\t\t");
		printf("否请输入2\n");
		printf("\t\t\t\t\t");

		scanf("%d",&d);
		switch(d)
		{
			case 1:flag=0;break;
			case 2:inter_home(accounts);
			default:
			{
				printf("\n\n\n\n");
	 			printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
				printf("\t\t\t\t\t");
				printf("输入错误!\n");
				printf("\t\t\t\t\t");
				flag=1;
				system("pause");
				system("CLS");
			}
		}
	}while(flag);
	put_money(accounts_2,num);
	get_money(accounts,num);
	system("cls");
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("转帐成功!\n");
	printf("\t\t\t\t\t");
	system("pause");
	system("CLS");
	inter_home(accounts);
}
void no_deposit()
{
	if(user_counts==0)
	{
		system("cls");
		printf("\n\n\n\n");
		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("未创建任何帐号!\n");
		printf("\t\t\t\t\t");
		system("pause");
		system("cls");
		home();
	}
	char accounts[20];//储存输入的帐号 
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("请输入您的帐号:\n");
	printf("\t\t\t\t\t");
	scanf("%s",accounts);
	if(repetition(accounts)==0)
	{
		system("cls");
		printf("\n\n\n\n");
		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("帐号不存在 !\n");
		printf("\t\t\t\t\t");
		system("PAUSE");
		system("CLS");
		home();
	}
		int put_num,flag;//保存输入的数字 、其它金额 
	int number;
	system("cls");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");
	printf("\t\t\t\t\t=====请选择服务:\n\n\n");
	printf("\t\t\t\t\t=====1-  200   \t2-  400   =====\n\n\n");
	printf("\t\t\t\t\t=====3-  700   \t4-  1000 =====\n\n\n");
	printf("\t\t\t\t\t=====5-  1500  \t6-  2000 =====\n\n\n");
	printf("\t\t\t\t\t=====7-  3000  \t8-  其它金额===\n\n\n");
	printf("\t\t\t\t\t");
	scanf("%d",&put_num);
	switch(put_num)
	{
		case 1:system("CLS");number=200;break;
		case 2:system("CLS");number=400;break;
		case 3:system("CLS");number=700;break;
		case 4:system("CLS");number=1000;break;
		case 5:system("CLS");number=1500;break;
		case 6:system("CLS");number=2000;break;
		case 7:system("CLS");number=3000;break;
		case 8:
			{
				do
				{
					system("CLS");
					printf("\n\n\n\n");
					printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
					printf("\t\t\t\t\t");
					printf("请输入你要存款的金额:\n");
					printf("\t\t\t\t\t");
					scanf("%d",&number);
					if(number%100!=0)
					{	
						printf("\t\t\t\t\t");
						printf("输入错误!只能输入整百数!\n");
						printf("\t\t\t\t\t");
						system("PAUSE");
						flag=1;
					}
					else flag=0;
				} while(flag);
			}
			break;
		default:
		system("CLS");
		printf("\n\n\n\n");
		printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");
		printf("输入错误!\n");
		printf("\t\t\t\t\t");
		system("pause");
		deposit(accounts);
	}
		do
	{
		system("cls");
		printf("\n\n\n\n");
	 	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
		printf("\t\t\t\t\t");			
		printf("是否确认存入\"%s\"%d元?\n\n",show_name(accounts),number);
		printf("\t\t\t\t\t");		
		printf("返回登录界面请输入1\n\n");
		printf("\t\t\t\t\t");
		printf("继续转帐请输入2\n\n");
		printf("\t\t\t\t\t");
		scanf("%d",&put_num);
		switch(put_num)
		{
			case 1:flag=0;break;
			case 2:system("CLS");home();
			default:
			{
				system("cls");
				printf("\n\n\n\n");
	 			printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
				printf("\t\t\t\t\t");			
				printf("输入错误!\n");
				printf("\t\t\t\t\t");
				flag=1;
				system("pause");
				system("CLS");
			}
		}
	}while(flag);
	put_money(accounts,number);
	system("cls");
	printf("\n\n\n\n");
	printf("\t\t\t\t\t========欢迎使用ATM~_~========\t\t\t\t\n\n\n");	
	printf("\t\t\t\t\t");
	printf("存款成功!\n");
	printf("\t\t\t\t\t");
	system("pause");
	system("CLS");
	home();
}

这是一个纯c的程序,希望大家支持我,关注我,谢谢。

发布了19 篇原创文章 · 获赞 15 · 访问量 2477

猜你喜欢

转载自blog.csdn.net/qq_41829380/article/details/84801079