ATM柜员机模拟程序
要求:设计一个程序,当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:
查询余额:初始余额为10000元
ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
ATM存款:不能出现负存款。
修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
#include<iostream>
#include<string.h>
using namespace std;
struct account
{
int kahao;
int password;
int num;
}
account[2]={123456,123456,10000};
void welcome()
{
cout<<" ************************************************************"<<endl;
cout<<" * 欢迎使用本行自动取款机!! *"<<endl;
cout<<" * *"<<endl;
cout<<" * 本取款机仅支持存取款和查询业务 *"<<endl;
cout<<" * *"<<endl;
cout<<" * 若有疑问,请和营业大厅服务人员联系 *"<<endl;
cout<<" * *"<<endl;
cout<<" * 或拨打联系电话95533进行人工咨询服务 *"<<endl;
cout<<" * *"<<endl;
cout<<" ************************************************************"<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
}
void menu()
{
cout<<" 查询余额,请按 1"<<endl;
cout<<" 取款 ,请按 2"<<endl;
cout<<" 存款,请按 3"<<endl;
cout<<" 修改密码,请按 4"<<endl;
}
void start()
{
int m=account[0].kahao;
int n=account[0].password;
int k,s;
int p;
cout<<" 请输入您的卡号...... "<<endl;
cout<<" 请输入您的密码...... "<<endl;
for(p=0;p<3;p++) /*密码只能输入三次,若三次都输入错误,
则应冻结账户!*/
{
cin>>k;
cin>>s;
if(k!=m || s!=n )
{
cout<<"您的卡号或密码输入错误,请重新输入!"<<endl;
}
else
{
menu(); //密码输入正确则进入功能菜单界面
break;
}
}
if(p=2&&s!=m)
{
cout<<" 由于您输入错误次数过多,为了保证您的账户安全,此账户已冻结! "<<endl;
cout<<" 请到附近营业厅带上您的有效证件解除冻结! "<<endl;
exit(1);
}
}
void qukuan()
{
cout<<" 您正在办理的是: 取款业务 "<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
int j;
j=account[0].num;
cout<<" 您的现有金额为:"<<j<<"元 "<<endl;
cout<<" 请输入您的取款金额:"<<endl;
cout<<endl;
int q;
cin>>q;
if(q>j)
cout<<" 对不起,您的余额不足"<<endl;
else if(q>5000 )
cout<<" 对不起,每次取款不能超过5000"<<endl;
else if(q%100!=0)
cout<<" 对不起,每次取款金额只能为100的整数倍 "<<endl;
else
{
cout<<" 取款成功,请收好您的现金! "<<endl;
account[0].num=account[0].num-q;
}
}
void cunkuan()
{
cout<<" 您现在正在办理的是: 存款业务 "<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<" 请输入您的存款金额 "<<endl;
cout<<endl;
cout<<" 请将您的人民币放入指定位置 "<<endl;
int f;
cin>>f;
int b;
if(f%100==0)
b=0;
else
b=1;
switch(b)
{
case 1:
cout<<" 请输入整100的金额!! "<<endl;
break;
case 0:
cout<<" 存款成功!!! "<<endl;
cout<<endl;
cout<<endl;
int j;
j=account[0].num ;
j=j+f; //存款之后,应改变初始的余额
account[0].num=j;
}
}
void chaxun()
{
cout<<" 您现在正在办理的业务是: 查询余额 "<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
int j;
j=account[0].num;
cout<<" 您现在的余额为:"<<j<<" "<<endl;
}
void mima()
{
int g,k;
cout<<" 您现在正在办理的业务是: 修改密码 "<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
cout<<" 请输入您的旧密码: "<<endl;
cout<<endl;
int i,j=0;
for(k=0;k<3;k++)
{
cin>>g;
if(g!=account[0].password)
{
cout<<"您的旧密码输入错误,请重新输入!";
cout<<endl;
}
else
break;
}
char newpassword1[6] ;
do
{
cout<<" 请输入您的新密码: "<<endl;
cout<<endl;
/* for(i=0;i<6;i++)
cin>>newpassword1;*/
cin>>newpassword1;
for(i=0;i<5;i++)
{
if(newpassword1[i]==newpassword1[i+1])
j++;
}
if(j==5)
cout<<"密码数字不能全部相同,请重新修改!";
} while(j==5);
cout<<endl;
cout<<" 请再次输入您的密码: "<<endl;
cout<<endl;
char newpassword2[6];
/* for(i=0;i<6;i++)
cin>>newpassword2[i];*/
cin>>newpassword2;
if(strcmp(newpassword2,newpassword1)!=0)
//strmp字符串比较函数
cout<<" 您两次密码输入不同,密码修改失败! "<<endl;
else{
cout<<" 密码修改成功!请牢记您的密码! "<<endl;
account[0].password=atoi(newpassword2);
//函数atoi是把字符数组newpassword2转换为整型数组
}
}
void back()
{
cout<<" 谢谢使用本系统!!! "<<endl;
cout<<endl;
cout<<endl;
}
int main()
{
welcome();
start();
loop: int z;
cin>>z;
switch(z)
{
case 1:chaxun();break;
case 2:qukuan();break;
case 3:cunkuan();break;
case 4:mima();break;
default:
cout<<" 您的输入有误,请重新输入!! "<<endl;
}
cout<<" 您是否继续使用本取款机? "<<endl;
cout<<" 是, 请按 1 "<<endl;
cout<<" 否, 请按 0 "<<endl;
int p;
cin>>p;
switch(p)
{
case 1:menu();
goto loop; //如果p=1,则表示用户还要使用取款机,则利用goto语句实现跳转到loop语句的地方继续执行
case 0:cout<<"谢谢使用!"<<endl;
break;
}
back();
return 0;
}
登陆界面:
查询余额界面:
取款界面:
存款界面:
修改密码界面: