#include<stdio.h>
#include<stdlib.h>//定义常用函数exit()
#include<conio.h>//控制输出,如设置背景色、清屏等功能
struct clients//用户的卡
{
int ID ;//用户账号
int password1;//密码
char name[20];//用户姓名
float money;//账户余额
};//结构体
struct clients name={1234567890,123456,"luojun",256.1};//定义卡号,密码,用户名,以及余额
int i;//定义变量,在for中循环3次
int h;//定义变量,表示1或者0
int fetchmoney;//fetchmoney定义取钱的变量
float money;//定义账号金额
int x;//定义switch中的变量x
int password1;//定义原密码
int password2, password3;//定义第二次第三次输入的密码
int main()//主函数
{
system("color 0F");//界面、字体颜色
int ID;
int times1=3,times2=3;//定义变量,账号和密码错误的循环
int password1;//定义原密码
{
//登录系统,输入卡号和密码
system("cls");//清屏
printf("\n\t||================================================================||");
printf("\n");
printf("\n\t||----------------------------------------------------------------||");
printf("\n");
printf("\n\t||------------------- 欢迎使用中国银行自助ATM机-------------------||");
printf("\n");
printf("\n\t||----------------------------------------------------------------||");
printf("\n");
printf("\n\t||================================================================||");
printf("\n");
printf("\n\n\n");
printf("\t\t\t请输入您的银行卡卡号:");
scanf("%d",&ID);
printf("\t\t\t 请输入您的密码:");//加入空格,使上下2行对齐
scanf("%d",&password1);
for(i=0;i<3;i++)//循环3次,如密码错误,3次后被锁
{
if(ID!=name.ID)//判断输入的ID与之前结构体中定义的是否一致
{
if((times1-1)!=0)//times1初始值为3,逐渐减少,times1为账户不对时出现的情况
{
printf("\t\t\t该用户不存在!您还有%d次尝试机会\n",times1-1);//账号不正确且不超过3次会出现这种情况
printf("\t\t\t请重新输入您的银行卡卡号:");
scanf("%d",&ID);
printf("\t\t\t\t请输入您的密码:");
scanf("%d",&password1);
}
else//输入账号不正确超过三次,会导致磁卡被锁
{
system("color 4B");//设置界面颜色为红色警示
system("cls");//实现清屏的作用
printf("\n\n\n");//多条换行语句,使页面更美观
printf("\n\n\n");
printf("\n\n\n");
printf("\n\t\t\t您的磁卡已被锁,谢谢您的使用\n");
exit(0);//正常运行程序并退出程序
}
times1--;//循环,次数不断减少
}
else
{
if(ID==name.ID)
{
if(password1==name.password1)//当账号正确,密码正确时出现的情况
{
break;
exit(0);
}
else//账号正确,密码不正确且没超过三次时
{
if((times2-1)!=0)//当输入次数还没有达到3次时密码错误的情况,times2为密码不正确时出现的情况
{
printf("密码输入错误!您还有%d次尝试机会\n",times2-1);
printf("\t\t\t请输入您的密码\n");
scanf("%d",&password1);
}
else//账号正确,密码不正确,且超过三次
{
system("color 4B");//设置界面颜色为红色警示
system("cls");//实现清屏的作用
printf("\n\n\n");//多条换行语句,使页面更美观
printf("\n\n\n");
printf("\n\n\n");
printf("\n\t\t\t您的磁卡已被锁,谢谢您的使用:\n");//输入次数达到三次的情况
exit(0);//正常运行程序并退出程序
}
times2--;//循环,次数减少
}
}
}
}
}
while(1)//while(0)一次都不循环//while(1)永远执行,无限循环
{
system("cls");
printf("\n\t\t\t请选择操作:");
printf("\n\t\t\t||=========================================||");
printf("\n\t\t\t|| ||");
printf("\n\t\t\t|| 1.查询 2.取款 ||");
printf("\n\t\t\t|| ||");
printf("\n\t\t\t|| 3.修改密码 4.取卡 ||");
printf("\n\t\t\t|| ||");
printf("\n\t\t\t||=========================================||");
printf("\n\n");
scanf("%d",&x); //功能实现
switch(x)//判断执行case的哪条语句
{
case 1://查询余额
printf("卡内金额:%.2f\n",name.money);//输出卡内金额,以及定义小数点后位数
printf("返回请按1,取卡请按0\n");
scanf("%d",&h);
if(h==0)
{
system("color 2B");//设置界面颜色
system("cls");//清屏
printf("\n\n\n");//多条换行语句,使页面更美观
printf("\n\n\n");
printf("\n\n\n");
printf("\n\t||----------------- 谢谢使用中国银行自助ATM机--------------||");
printf("\n\t||-----------------------请收好您的磁卡--------------------||\n");
exit(0);//正常运行程序并退出程序
}
else if((h!=1)&&(h!=0))//判断b是否为0或1,如不是,输出的情况
{
system("cls");//清屏
printf("输入有误,请重新输入!\n");
printf("返回请按1,取卡请按0\n");
scanf("%d",&h);
}
else if(h==1)//返回时的情况
{
break;//跳出查询余额界面
}
else//当h不等于0时
exit(0);//正常运行程序并退出程序
break;
case 2://取款
printf("卡内金额:%.2f\n",name.money);
printf("请输入取款金额:\n");
scanf("%d",&fetchmoney);
name.money-=fetchmoney;//余额与取钱形成差值
while((fetchmoney<0)||name.money<0)//形成循环,直到要取的钱或者余额为负数,循环停止
{
system("cls");//清屏
printf("输入有误,请重新输入!\n");
name.money+=fetchmoney;//当取钱为负时进行运算,如缺失,会导致下一次运算时,输入的正数与负数相加而错误
printf("输入1重新输入,输入0返回!\n");
scanf("%d",&h);
if(h==0)//当输入的金额不正确时,按0,返回主界面
{
break;
}
if(h==1)//重新输入取款金额
{
printf("请输入取款金额:\n");
scanf("%d",&fetchmoney);
name.money-=fetchmoney;//余额与取钱形成差值
if(fetchmoney>0)
break;//跳出到while(fetchmoney>0)语句
else
{
printf("输入1重新输入,输入0返回!\n");//如果取款金额小于0
scanf("%d",&h);
}
}
}
while(fetchmoney>0)//正确取钱
{
printf("操作成功!卡内余额为:%.2f\n",name.money);
printf("请输入1继续,0取卡\n");
scanf("%d",&h);
if(h==0)
{
system("color 2B");//设置界面颜色
system("cls");//清屏
printf("\n\n\n");//多条换行语句,使页面更美观
printf("\n\n\n");
printf("\n\n\n");
printf("\n\t||----------------- 谢谢使用中国银行自助ATM机--------------||");
printf("\n\t||-----------------------请收好您的磁卡--------------------||\n");
exit(0);
}
else
break;
}
break;//回到主界面
case 3://修改密码
while(1)//无限循环
{
printf("继续请按1,返回请按0\n");
scanf("%d",&h);
if(h==0)
{
system("cls");//清屏
break;
}
if(h==1)
{
printf("请输入原密码:\n");
scanf("%d",&password1);
if(password1==name.password1)//判断输入的密码与原密码是否相同
{
printf("请输入新密码:\n");
scanf("%d",&password2);
printf("请输入新密码:\n");
scanf("%d",&password3);
if(password2==password3)//2次判断输入的下新密码是否一致
{
printf("密码修改成功:\n");
name.password1=password2;//把新密码赋值给原密码
}
else
{
printf("密码修改失败:\n");
}
printf("继续请按1,取卡请按0\n");
scanf("%d",&h);
if(h==0)
{
system("color 2B");//设置界面颜色
system("cls");//清屏
printf("\n\n\n");//多条换行语句,使页面更美观
printf("\n\n\n");
printf("\n\n\n");
printf("\n\t||----------------- 谢谢使用中国银行自助ATM机--------------||");
printf("\n\t||-----------------------请收好您的磁卡--------------------||\n");
exit(0);
}
else//h==1的情况,返回主界面
break;
}
else//输入的密码与定义密码不同
printf("密码输入错误!\n");
}
else if(h==1)
{
break;
}
}
break;//整体跳出,返回主界面
case 4://取卡
printf("确认请按1,取消请按0\n");
scanf("%d",&h);
if(h==1)
{
system("color 2B");//设置界面颜色
system("cls");//清屏
printf("\n\n\n");//多条换行语句,使页面更美观
printf("\n\n\n");
printf("\n\n\n");
printf("\n\t||----------------- 谢谢使用中国银行自助ATM机--------------||");
printf("\n\t||-----------------------请收好您的磁卡-----------
- 1
- 2
- 3
前往页