利用c语言来进行简单的模拟ATM机

ATM的功能主要包括:现金取款、现金存款、现金存取款、余额查询、本行或异行转账、修改密码等基本功能;有些多功能ATM还提供诸如存折打印、对账单打印、信封存款、缴费、充值等一系列便捷服务。这个程序利用c语言对ATM机的主要功能进行了模拟。
/*程序名称:模拟ATM存取款机
  程序功能:通过程序来实现ATM所具有的一般功能
  作者Smile So Luck
  版本号:2014.4.15.03
  程序使用说明:使用这个程序时应先进行开户,只有开户成功时才能进行其他操作,
  存取款时钱数都应该为100的整数倍,程序将每打开一次默认为一天,以此来限制每
  天的最大取款数*/
#include
#include
#include
int mingyan();   //用户名验证
int guayan(int);   //挂失验证
int miyan(int);     //密码函数
float T=0;           定义全局变量T,记录用户一天取款数的总和
void Debit();      //取款函数
void Credit();     //存款函数
void Quary();      //查询函数
void logout();   //销户函数
void Openbit();       //开户函数
void account();  //转账函数
void lose();      //挂失函数
void tuichu();      //退出函数
void chaall();      //查询所有用户信息






char gUser[100][30];               //用户名
char gMima[100][30];               //密码
char Ggua[100][30];				   //挂失用户名


float YuE[100];                 //存款余额
int UserShu=0;                 //用户数
int guashu=0;                 //挂失用户数




void main()
{
	
	int order;          //命令


	while(order)
	{
		printf(" ================================================================ \n");
	    printf("||                    欢迎使用模拟ATM自助存取款                 ||\n");
		printf("||                                                              ||\n");
		printf("||         <1> 开户          <4>  取款         <8> 挂失         ||\n");
		printf("||         <2> 存款          <5> 销户                           ||\n");
		printf("||         <3> 查询          <6> 转账          <0> 退出         ||\n");
		printf("||         <7> 查询所有用户信息                                 ||\n");
		printf("||                                                              ||\n");
		printf(" ================================================================ \n");
		printf("请输入您的指令:  ");
		scanf("%d",&order);
		printf("\n");
		switch(order)
		{
		case 1:                                        //开户
			Openbit();
			break;
		case 2:                                        //存款
			Credit();
			break;
		case 3:                                        //查询
			Quary();
			break;
		case 4:                                        //取款
			Debit();
			break;
		case 5:                                        //销户
			logout();
			break;
		case 6:                                        //转账
			account();
			break;
        case 7:                                        //查询所有用户信息
			chaall();
			break;
		case 8:                                        //挂失
			lose();
			break;
        case 0:
			 printf("欢迎您再次使用!\n");
			 exit(0);
			 break;
		}
	}


}




void Debit()       //取款
{
	int i,m;
	float n;
	i=mingyan();
	m=guayan(i);
	if(m==1)
		m=miyan(i);
	while(m==1)
	{
		printf("请输入您的取款金额: ");
		scanf("%f",&n);
		if(n>2000)
		{
			printf("每笔取款不得超过2000\n");
			Debit();
				break;


		}
		T=n+T;
		if(T>20000)
		{
			printf("每天取款总数不能超过20000,请您改天再进行取款");
			break;
		}
		if(n<=YuE[i])
		{
			printf("请取走您的钞票。\n");
			YuE[i]=YuE[i]-n;
			break;
		}
		else
			printf("您的余额不足,请重新输入。\n");
	}
}




void Credit()   //存款
{
	int i,m;
	float n;
	i=mingyan();
	m=guayan(i);
	if(m==1)
		m=miyan(i);
	while(m==1)
	{
		printf("请输入您的存款金额: ");
		scanf("%f",&n);
		YuE[i]=YuE[i]+n;
		printf("存款成功!");
		printf("您的当前余额为: %.2f\n",YuE[i]);
		m=0;
	}
	m=1;
	main();
}




void Quary()    //查询
{
	int i,m;
	i=mingyan();
	m=guayan(i);
	if(m==1)
		m=miyan(i);
}




void Openbit()   //开户
{
	int i,n=UserShu,j=0;
	float m;
	char User[32],mima1[32],mima2[32];
	printf("请输入您的用户名: ");
	getchar();
	scanf("%s",User);
	for(i=0;i	{
		if(strcmp(User,gUser[i])==0)
		{
			printf("该用户名已存在\n");
			break;
		}
		else
		{
			strcpy(gUser[UserShu],User);
			while(j!=1)
			{
				printf("请输入您的密码: ");
				scanf("%s",mima1);
				printf("请再次输入您的密码: ");
				scanf("%s",mima2);
				if(strcmp(mima1,mima2)==0)
				{
					printf("密码设置成功\n");
					printf("请输入您的存款金额: ");
					scanf("%f",&m);
					printf("恭喜您,开户成功\n");
					strcpy(gMima[UserShu],mima1);
					YuE[UserShu]=m;
					j=1;
				}
				else
					printf("两次输入不相同,请重新输入。\n ");
			}
			UserShu++;
			break;
		}
	}
}




void logout()    //销户
{
	int i,n,m;
	i=mingyan();
	m=guayan(i);
	if(m==1)
		m=miyan(i);
	while(m==1)
	{
		printf("您确定要注销您的账户?\n   <1>确认    <2>取消   \n");
		scanf("%d",&n);
		if(n==1)
		{
			for(;i			{
				strcpy(gUser[i],gUser[i+1]);
				strcpy(gMima[i],gMima[i+1]);
				YuE[i]=YuE[i+1];
			}
		}
	UserShu--;
	printf("销户成功!\n");
	m=0;
	}
}


void account()      //转账
{
	int i,n,j,s=1;
	float k;
	char User[32];
	i=mingyan();
	n=guayan(i);
	if(n==1)
		n=miyan(i);
	while(n==1)
	{
		printf("请输入目标账户:");
		scanf("%s",User);
		for(j=0;j		{
			if(strcmp(gUser[j],User)==0)
			{
				n=2;
				break;
			}
		}
		if(j==UserShu)
			printf("目标账户不存在,请重新输入。\n");
	}
	while(n==2)
	{
		printf("请输入转账金额:");
		scanf("%f",&k);
		if(k<=YuE[i])
		{
			YuE[i]=YuE[i]-k;
			YuE[j]=YuE[j]+k;
			printf("转账成功!\n您的当前余额为: %.2f\n",YuE[i]);
			break;
		}
		else
			printf("余额不足,请重新输入。\n");
	}
}




void lose()      //挂失
{
	int n,i,m;
	i=mingyan();
	m=guayan(i);
	if(m==1)
		m=miyan(i);
	if(m==1)
	{
		printf("您确定要挂失您的账户?\n   <1>确认    <2>取消   \n");
		scanf("%d",&n);
		if(n==1)
		{
			strcpy(Ggua[guashu],gUser[i]);
			guashu++;
			printf("%s 账户挂失成功!\n",gUser[i]);
		}
	}
}




void tuichu()
{


}


void chaall()     //查询所有用户信息
{
	int i;
	for(i=0;i		printf("用户名:%15s     余额:%.2f\n",gUser[i],YuE[i]);
}


int mingyan()     //用户名验证
{
	int m=1,i;
	char User[32];
	while(m==1)
	{
		printf("请输入您的用户名: ");
		scanf("%s",User);
		for(i=0;i			if(strcmp(gUser[i],User)==0)
			{
				m=0;
				break;
			}
		if(i==UserShu)
			printf("该用户不存在,请确认后再输入。 \n");
	}
	return i;
}


int guayan(int i)             //挂失验证
{
	int j,n;
	for(j=0;j	{
		if(strcmp(gUser[i],Ggua[j])==0)
		{
			printf("此用户已经挂失,请解挂后再进行操作!\n");
			n=0;
			break;
		}
	}
	if(j==guashu)
		n=1;
	return n;
}




int miyan(int i)     //密码验证
{
	char mima[32];
	while(1)
	{
		printf("请输入您的密码: ");
		scanf("%s",mima);
		if(strcmp(gMima[i],mima)==0)
		{
			printf("登陆成功!\n");
			printf("用户名:%s          余额: %.2f \n",gUser[i],YuE[i]);
			break;
		}
		else
			printf("您输入的密码不正确,请重新输入。\n");
	}
	return 1;
}利用c语言来进行简单的模拟ATM机_第1张图片利用c语言来进行简单的模拟ATM机_第2张图片利用c语言来进行简单的模拟ATM机_第3张图片利用c语言来进行简单的模拟ATM机_第4张图片
程序截图:利用c语言来进行简单的模拟ATM机_第5张图片

你可能感兴趣的:(利用c语言来进行简单的模拟ATM机)