5、ATM柜员机模拟程序
要求:设计一个程序,当输入给定的卡号和密码(初始卡号和密码为123456)时,系统能登录ATM柜员机系统,用户可以按照以下规则进行:
查询余额:初始余额为10000元
ATM取款:每次取款金额为100的倍数,总额不超过5000元,支取金额不允许透支。
ATM存款:不能出现负存款。
修改密码:新密码长度不小于6位,不允许出现6位完全相同的情况,只有旧密码正确,新密码符合要求,且两次输入相同的情况下才可以成功修改密码。
/***********************************
******** ATM柜员机模拟程序 *********
***********************************/
#include<iostream>
using namespace std;
int password=123456;
double money=10000.00;
void login();
void cover();
void check();
void draw();
void save();
void reset();
int main() //柜员机只有数字键盘,纯数字操作,int,若擅自输入其它字符,概不负责
{ //另外,输入数字超过10位会死循环
login();
return 0;
}
void login() //登录界面
{
int name,pwd;
cout<<"******************************************************************************"<<endl;
cout<<endl;
cout<<"请输入账号:";
cin>>name;
cout<<"请输入密码:";
cin>>pwd;
cout<<endl;
if(name==123456&&pwd==password) //假设初始卡号和密码为123456
cover();
else
cout<<"账号或密码错误,请重新输入!"<<endl;
login();
}
void cover() //主界面
{
int n;
cout<<"******************************************************************************"<<endl;
cout<<"1.查询余额"<<endl;
cout<<"2.取款"<<endl;
cout<<"3.存款"<<endl;
cout<<"4.修改密码"<<endl;
cout<<"5.退出登录"<<endl;
cout<<endl;
cout<<"请根据提示输入对应的序号:";
cin>>n;
cout<<endl;
switch(n)
{
case 1:
check();
break;
case 2:
draw();
break;
case 3:
save();
break;
case 4:
reset();
break;
case 5:
cout<<"成功退出登录!"<<endl;
cout<<endl;
cout<<"请按任意键继续......"<<endl;
getchar();
getchar();
login();
break;
default:
cout<<"输入有误,请重新输入!"<<endl;
cout<<endl;
cover();
}
}
void check() //查询余额
{
cout<<"您的余额为:"<<money<<endl;
cout<<endl;
cout<<"请按任意键返回主界面......"<<endl;
getchar(); //暂停句,网上说有cin要写两句getchar才有效
getchar();
cout<<endl;
cover();
}
void draw() //取款
{
int tikuan;
int n;
cout<<"请输入提款数额(每次取款金额为100的倍数,总额不超过5000元):";
cin>>tikuan;
cout<<endl;
if(tikuan<=money&&tikuan>=0&&tikuan%100==0&&tikuan<=5000)
{
money-=tikuan;
cout<<"成功提款"<<tikuan<<"元,现在您的余额为"<<money<<"元"<<endl;
cout<<endl;
cout<<"<输入1继续提款>"<<endl;
cout<<"<输入其它任意“整数”返回主界面......>"<<endl;
cin>>n;
cout<<endl;
if(n==1)
draw();
else
cover();
}
else
cout<<"输入有误!"<<endl;
draw();
}
void save() //存款
{
double cunkuan;
int n;
cout<<"请输入存款数额:";
cin>>cunkuan;
if(cunkuan>=0)
{
money+=cunkuan;
cout<<"成功存款"<<cunkuan<<"元,现在您的余额为"<<money<<"元"<<endl;
cout<<endl;
cout<<"<输入1继续存款>"<<endl;
cout<<"<输入其它任意“整数”返回主界面......>"<<endl;
cin>>n;
cout<<endl;
if(n==1)
save();
else
cover();
}
else
cout<<"输入有误!"<<endl;
save();
}
void reset() //修改密码
{
int pwd0,pwd1,pwd2;
cout<<"请输入旧密码:";
cin>>pwd0;
cout<<endl;
if(pwd0!=password)
{
cout<<"密码错误!"<<endl;
cout<<endl;
reset();
}
cout<<"请输入新密码(6位数字,不允许6位完全相同):";
cin>>pwd1;
cout<<endl;
cout<<"请再次输入新密码:";
cin>>pwd2;
cout<<endl;
if(pwd1==pwd2
&&pwd1!=000000&&pwd1!=111111
&&pwd1!=222222&&pwd1!=333333
&&pwd1!=444444&&pwd1!=555555
&&pwd1!=666666&&pwd1!=777777
&&pwd1!=888888&&pwd1!=999999)
{
password=pwd1;
cout<<"密码修改成功!"<<endl;
cout<<endl;
cout<<"请按任意键返回主界面......"<<endl;
getchar();
getchar();
cout<<endl;
cout<<endl;
cover();
}
else
cout<<"新密码输入有误!"<<endl;
cout<<"请按任意键返回......"<<endl;
getchar();
getchar();
cout<<endl;
reset();
}
密码错误,登录失败.
账号密码正确,成功登录
账号错误,登录失败
查询余额
提款失败与成功提款
存款失败与成功存款
修改密码
退出登录
*********************************************************************************************************************************************
我本来想用字符串作为密码
但不知道为什么在输入账号的时候会进入死循环
我估计问题出在字符数组无法进行条件比较
所以现在无法单独对密码进行长度限定,密码修改不受数位限制,输入001234和输入1234效果一样