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

📄 atm modeling.cpp

📁 控制台实现模拟ATM自动存取款机!帐户间能互相通信,实现帐户间转帐!
💻 CPP
字号:
#include<iostream.h>
#include<iomanip.h>
typedef int status;

class user {
	unsigned long number;                        //卡号
	unsigned long password;                      //密码
	float balance;                               //余额
public:
	user() { number=123456; password=666666; balance=0.0;}
	user(unsigned long);
//	~user()  { cout<<"已退出系统!"<<endl; }
	status transfer(user &);                    //转账
	status draw();                              //取款 
	status saving();                            //存款
	void view_balance();                        //查询余额
	status change_password();                   //改密码
	void print_sheet();                         //打印凭据
	status judge_pass(unsigned long);           //判断密码
	status judge_number(unsigned long);         //识别卡号
};

user::user(unsigned long num)
{
	number=num;
	balance=0.0;
	cout<<"请输入卡号为: "<<number<<" 用户的新密码(1~9位数字):";
	cin>>password;
}

status user::transfer(user & b)
{
	float n;
	cout<<"请输入欲转的金额(0 键退出):";
	cin>>n;
	do
	{
		if(n==0)  return 0;
		if(n>=balance) 
		{
			cout<<"余额不足!请重新输入: ";
	    	cin>>n;
		}
	}while(n>balance);
    if(n==0)  return 0;
	b.balance+=n;
	cout<<"已经成功转给 "<<b.number<<" 帐户"<<n<<"元!"<<endl;
	balance-=n;
	return 1;
}

status user::draw()
{
   int n;
   cout<<"请输入取款数额(0 键退出): ";
   cin>>n;
   if(n==0)  return 0;
   if(balance<100) 
   {
	   cout<<"你的余额已不足100元!"<<endl;
   	   return 0;
   }
   do
   {  
	   if(n==0)  return 0;
	   if(n>balance)
	   {
		   cout<<"余额不足!请重新输入!"<<endl;
		   cin>>n;
	   }
	   else if((n%100)!=0)
	   {
		   cout<<"请输入100的整数倍的数额!"<<endl;
	       cin>>n;
	   }
   }while((n>balance)||((n%100)!=0)||(n==0));
   cout<<"已成功取款 "<<n<<" 元!"<<endl;
   balance-=n;
   return 1;
}

status user::saving()
{
   int n;
   cout<<"请输入存款数额(0 键退出): ";
   cin>>n;
   do
   {  
	   if(n==0)  return 0;
	   if((n%100)!=0)
	   {
		   cout<<"请输入是100的整数倍的数额!"<<endl;
	       cin>>n;
	   }
   }while(((n%100)!=0)||(n==0));
   cout<<"已成功存款 "<<n<<" 元!"<<endl;
   balance+=n;
   return 1;
}

void user::view_balance()
{
	cout<<"你的余额为: "<<balance<<" (元)"<<endl;
}

status user::change_password()
{
	int n;
	unsigned long num,num1;
	cout<<"确定要修改密码吗?"<<endl;
	cout<<"输入1(确定),输入0(返回) :";
	cin>>n;
	do{
		if(n==0) return 0;
		if(n!=1) 
		{
			cout<<"输入有误!!!请输入 1 或 0 : ";
		    cin>>n;
		}
	}while((n!=1)||(n==0));
	cout<<"请输入原密码:";
	cin>>num;
	for(int i=0;i<4;i++)
	{
	  if(password!=num)
		cout<<"你输入的密码有误!请重新输入: ";
	  else break;
	  cin>>num;
	}
	if(password!=num)
	{
		cout<<"错误数上限为5次!请明天再试!"<<endl;
		return 0;
	}		
	num1=num;
	do{
		if(num!=num1)
			cout<<"两次输入的密码不一致!"<<endl;
		cout<<"请输入新密码:";
    	cin>>num;
    	cout<<"请再次输入新密码:";
	    cin>>num1;
	}while(num!=num1);
    password=num;
	cout<<"修改密码成功!!!"<<endl;
	return 1;
}

void user::print_sheet()
{
	cout<<"用户: "<<number<<setw(8)<<"余额: "<<balance<<" (元)"<<endl;
}

status user::judge_pass(unsigned long n)               //判断密码
{
	if(password==n) return 1;
	return 0;
}

status user::judge_number(unsigned long n)             //识别卡号
{
    if(number==n)  return 1;
	return 0;
}

void main()
{
	const int max=2;
	int i,j;
	unsigned long n;       //卡号
	unsigned long num;     //密码
	user a[max];
	cout<<"首先预存入 "<<max<<" 个用户信息: "<<endl;
	for(j=0;j<max;j++)
	{
		cout<<"请输入卡号(1~9位数字):";
	    cin>>n;
	    a[j]=user(n);
	}
	do{
		cout<<setw(36)<<"中国银联"<<endl;
    	cout<<"                  欢迎使用中国建设银行ATM服务!"<<endl<<"                     1 键(继续)  0 键(退出)"<<endl;
		cin>>i;
		do{
			if(i==0) 
			{
		    	cout<<"请取卡....."<<endl;
		    	return;
			}
			if(i!=1) 
			{
				cout<<"输入有误!!!请输入 1 或 0 : ";
		    	cin>>i;
			}
		}while((i!=1)||(i==0));
    	do{
         	cout<<"请输入卡号(插卡...)(0 键退出): ";
        	cin>>n;
			if(n==0) return;
        	for(j=0;j<max;j++)
			{
	        	if(a[j].judge_number(n)) break;
			}
			if(j==max)
	    	    cout<<"不存在该用户,请与建行联系!"<<endl;
		}while(j==max);
    	cout<<"请输入密码:";
    	cin>>num;
    	for(i=0;i<4;i++)
		{
	        if(!a[j].judge_pass(num))
	    	cout<<"你输入的密码有误!请重新输入: ";
	        else break;
	        cin>>num;
		}
    	if(!a[j].judge_pass(num))
		{
	    	cout<<"错误数上限为5次!请明天再试!"<<endl;
	    	return ;
		}	
    	do{
	    	cout<<"1.取款"<<setw(8)<<"2.存款"<<setw(8)<<"3.转账"<<setw(13)<<
	    	"4.查询余额"<<setw(13)<<"5.修改密码"<<setw(13)<<"6.打印凭据"
	    	<<setw(8)<<"0.退出"<<endl<<"请选择: ";
        	cin>>i;
	        switch(i){
	        case 1:a[j].draw(); break;
	        case 2:a[j].saving(); break;
	        case 3:
				    int i;
			    	do{
             	        cout<<"请输入欲转给帐户的卡号(0 键退出): ";
                    	cin>>n;
		            	if(n==0) break;
                    	 for(i=0;i<max;i++)
						 {
	                    	if(a[i].judge_number(n)) break;
						 }
		            	if(i==max)
	    	                cout<<"不存在该用户,请与建行联系!"<<endl;
					}while(i==max);
					if(n==0) break;
			    	a[j].transfer(a[i]); break;
	        case 4:a[j].view_balance(); break;
	        case 5:a[j].change_password(); break;
	        case 6:a[j].print_sheet(); break;
	        case 0:a[j].~user();
        	       i=0; break;   
			}
		}while(i!=0);
	}while(i==0);
//	cout<<endl;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -