📄 atm1.cpp
字号:
#include "iostream.h"
#include "stdlib.h"
#include "string.h"
class bankcard;
class ATM
{
public:
ATM(bankcard& bc): bankcardAtATM(bc)
{
totalmoney=20000.0;
oncemoney=5000.0;
leftmoney=20000.0;
}
void welcome();
bool checkpassword(char num[],char pwd[]);
void changepassword();
void fetchmoney();
void info();
void exitatm();
void functionshow();
void lock();
private:
int times;
float totalmoney;
float oncemoney;
float leftmoney;
bankcard& bankcardAtATM;
};
class bankcard
{friend class ATM;
public:
bankcard(char Name[],char Num[],float Money,char Password[])
{
strcpy(name,Name);
strcpy(num,Num);
money=Money;
strcpy(password,Password);
}
protected:
char* getname();
char* getnum();
char* getpassword();
float getmoney();
void setpassword(char pwd[]);
void setmoney(float m);
private:
char password[8];
char name[20];
char num[20];
float money;
};
/*bankcard::bankcard(char Name[],char Num[],float Money,char Password[])
{
strcpy(name,Name);
strcpy(num,Num);
money=Money;
strcpy(password,Password);
}*/
float bankcard::getmoney()
{
return money;
}
char* bankcard::getname()
{
return name;
}
char* bankcard::getnum()
{
return num;
}
char* bankcard::getpassword()
{
return password;
}
void bankcard::setmoney(float m)
{
money-=m;
}
void bankcard::setpassword(char pwd[])
{
strcpy(password,pwd);
}
void ATM::welcome()
{
times=0;
cout<<"欢迎使用本ATM!"<<endl;
char pwd[8],num[20],ch;
int i=0;
cout<<endl<<"请输入卡号:";
do {
i=0;
cin.get(ch);
num[i++]=ch;
} while(ch!='\n');
num[i-1]='\0';
i=0;
cout<<"请输入密码:"<<endl;
do {
cin.get(ch);
pwd[i++]=ch;
} while(ch!='\n');
pwd[i-1]='\0';
do{
if (!checkpassword(num,pwd))
{
cout<<"你输入的卡号或密码有错误,请重新输入"<<endl;
times++;
}
else
{
functionshow();
}}while(times<3);
lock();
}
bool ATM::checkpassword(char num[],char pwd[])
{
if (strcmp(num,bankcardAtATM.getnum())==0 && strcmp(pwd,bankcardAtATM.getpassword())==0 )
{return true;
}
else
return false;
}
void ATM::functionshow()
{
int n;
do {
cout<<endl<<"请输入相应的操作序号进行操作: "<<endl;
cout<<"1 修改密码"<<"2 取款"<<"3 查询余额\n"<<"4 退出系统"<<endl;
cout<<"$>\\";
cin>>n;
while (n<1||n>4)
{
cout<<"请输入正确的序列号 !"<<endl;
cout<<"$>\\";
cin>>n;
}
switch(n)
{
case 1:
changepassword();
break;
case 2:
fetchmoney();
break;
case 3:
info();
break;
case 4:
exitatm();
break;
}
} while(true);
}
void ATM::changepassword()
{
char pwd[8],repwd[8];
times=0;
do {
cout<<" 请输入旧密码:";
cin>>pwd;
if (!checkpassword(bankcardAtATM.getnum(),pwd))
{times++;
}
else
break;
} while(times<3);
if (times==3)
{lock();
}
int t=0;
do {
cout<<"请输入新密码:"<<endl;
cin>>pwd;
cout<<"请再次输入新密码:"<<endl;
cin>>repwd;
if (pwd!=repwd)
{cout<<"你两次输入的密码不一样,请重新输入!"<<endl;
}
} while(t!=0);
bankcardAtATM.setpassword(pwd);
cout<<"密码设置成功!请牢记。"<<endl;
}
void ATM::fetchmoney()
{
float m;
char ch;
do {
cout<<"请输入金额: "<<endl;
cout<<"$"<<endl;
cin>>m;
while (m<=0)
{
cout<<"请输入正确的金额 !"<<endl;
cin>>m;
}
if (bankcardAtATM.getmoney()-m<0)
{ cout<<"对不起您的余额不足 !"<<endl;
cin>>m;
}
else
if (m>oncemoney)
{cout<<"单笔取款超过限制"<<endl;
}
else
if (m>leftmoney)
{cout<<"本机余额不足!";
}
else
{
cout<<"操作成功,请收好钱!"<<endl;
leftmoney=leftmoney-m;
bankcardAtATM.setmoney(m);
}
cout<<"是否要继续操作:(Y/N)"<<endl;
cin>>ch;
while (ch!='n'&& ch!='N'&& ch!='y'&&ch!='Y')
{
cout<<"$";
cin>>ch;
}
} while(ch=='y'||ch=='Y');
}
void ATM::info()
{
cout<<"**************************************************************************"<<endl;
cout<<"*"<<endl;
cout<<"* 用户姓名: "<<bankcardAtATM.getname()<<endl;
cout<<"* 卡号:"<<bankcardAtATM.getnum()<<endl;
cout<<"* 余额:"<<bankcardAtATM.getmoney()<<endl;
cout<<"**************************************************************************"<<endl;
}
void ATM::lock()
{
cout<<"对不起!"<<endl;
exit(1);
}
void ATM::exitatm()
{
cout<<"欢迎下次光临!"<<endl;
cout<<"请取卡!"<<endl;
exit(0);
}
int main()
{
bankcard c("两键","59167",30000.0,"123456");
ATM atm(c);
atm.welcome();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -