⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atm1.cpp

📁 模拟ATM柜员机的功能
💻 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 + -