自动柜员机 C++

#include<iostream.h>
#include<string.h> 
#include <string.h> 
#include<stdlib.h>
class Users;  
class ATM  // ATM取款机

public:  
  ATM(Users& er):use(er) 
  { 
  }  
void Login();   // 通过Login输入卡号和密码进入界面
bool check_passwd(char n[],char pwd[]); // 核对密码,一致则进入界面
void change_passwd(); // 修改密码
void Debit();  // 取款
void Credit(); //存款
void Quary();  // 查询余额及信息
void exitATM();  // 退出系统
void func();  // 功能实现界面
void lock();  // 锁机
private: 
int times;   // 记录密码输入次数
 Users& use; 
};  
class Users // 用户

public:  
 friend class ATM;//声明ATM为Users的友元类
 Users(char Name[],char Num[],float Money,char Password[]); 
protected: 
 char* get_name();  // 取得姓名
 char* get_num();  // 取得卡号
 char* get_passwd();  // 取得密码
 float get_money();  // 取得余额
 void set_passwd(char pwd[]);  // 设置密码
 void set_money(float m);  // 取钱
 void set1_money(float m); //存款
private:  
 char passwd[10]; // 用户密码
 char name[20];  // 用户姓名
 char num[20]; //卡号
 float money;  //账户余额 
}; 
  
Users::Users(char Name[],char Num[],float Money,char Password[])  
{  
   strcpy(name,Name);  
   strcpy(num,Num); 
   money=Money;  
   strcpy(passwd,Password); 

  
float Users::get_money() 
{  
return money; 

  
char* Users::get_name() 
{  
return name; 

  
char* Users::get_num() 
{  
return num; 

  
char* Users::get_passwd() 
{  
return passwd; 

  
void Users::set_money(float m) 
{  
money-=m*100; 
}  
void Users::set1_money(float m) 

money+=m; 
}  
void Users::set_passwd(char pwd[]) 
{  
strcpy(passwd,pwd); 

  
void ATM::Login()//登陆界面
 
{  
 times=0; 
  
cout<<"************************************************************************"<<endl; 
 cout<<"*welcome                                                              *"<<endl;  
 cout<<"*                                                                      *"<<endl;  
 cout<<"******************欢迎使用中国农业银行ATM自动取款机*******************"<<endl;  
 cout<<"*                                                                      *"<<endl;  
 cout<<"*                                                                      *"<<endl;  
  
cout<<"************************************************************************"<<endl;   
  
 char pwd[10],num[20],ch; 
 int i=0; 
 do 
 { 
   i=0;  
   cout<<"请输入您的银行卡号:"; 
    do  
{  
          cin.get(ch); 
       num[i++]=ch; 
    }while(ch!='\n'); 
        num[i-1]='\0'; 
   i=0;  
   cout<<"请输入银行账户密码:"; 
    do 
    {  
          cin.get(ch); 
       pwd[i++]=ch; 
    }while(ch!='\n'); 
        pwd[i-1]='\0';  
    if(!check_passwd(num,pwd)) 
    {  
      cout<<"你输入的卡号或密码有误,请重新输入"<<endl; 
      times++; 
    } 
    else 
    {  
      func(); 
    }  
 }while(times<3); 
    lock(); 
}  
bool ATM::check_passwd(char num[], 
char pwd[]) 
{  
 if(strcmp(num,use.get_num())==0&&strcmp 
 (pwd,use.get_passwd())==0) 
  return true; 
 else  
  return false; 
}  


void ATM::func() 
{  
   int n; 
   do 
   {  
     cout<<endl<<"请你输入相应的操作序号进行操作:"<<endl; 
  
 cout<<endl;  
     cout<<"1) 查询余额"; 
     cout<<"2) 取款 "; 
     cout<<"3) 存款"; 
     cout<<"4) 修改密码"; 
     cout <<"5) 退出系统"<<endl; 
  cout<<endl;  
     cout<<"请选则业务序号:"; 
     cin>>n; 
     while(n<1||n>5) 
  {  
      cout<<"请输入正确的操作序号!"<<endl; 
      cout<<"$ >\\"; 
      cin>>n; 
  }  
     switch(n) 
  {  
      case 1:  Quary();  
   break;  
      case 2:   Debit(); 
   break;  
      case 3:   Credit(); 
   break;  
      case 4:  change_passwd(); 
   break;  
      case 5:  exitATM(); 
  }  
   }while(true);  
   }  
void ATM::change_passwd() 
{  
 char pwd[10],repwd[10]; 
 times=0; 
 do 
 {  
 cout<<endl<<"请输入旧密码:"; 
 cin>>pwd;  
    if(!check_passwd(use.get_num(),pwd)) 
  times++; 
 else 
  break;  
 }while(times<3); 
 if(times==3) 
  lock(); 
 int t=0; 
    do 
 {  
  cout<<"请输入新密码:"; 
  cin>>pwd;  
  cout<<"请再输入一次新密码:"; 
  cin>>repwd;  
  if((t=strcmp(pwd,repwd))!=0)  
   cout<<"你输入的两次密码不一样,请重新输入!"<<endl; 
 }while(t!=0); 
 use.set_passwd(pwd);  
 cout<<"恭喜您,密码修改成功!"<<endl; 

void ATM::Debit() 
{  
   float m; 
   float n;  
   char ch; 
   do 
   {  
      cout<<endl<<"请输入您要取一百元的现金的张数:"<<"\n$>\\"<<endl  ; 
      cin>>m; 
  
  n=100*m; 
      while(n<=0) 
   {  
    cout<<"请输入正确的数字!"<<endl; 
    cout<<"$ >\\ "; 
    cin>>m; 
   }  
      if(n>2000) 
   {  
     cout<<"对不起,您余额不足或者超过您的单次取钱限制2000元!"<<endl;  
   } 
   else 
   {  
   cout<<endl<<"操作成功,请收好钱!"<<endl; 
   use.set_money(m); 
   }  
   cout<<"是否要继续该项操作:(Y/N) "<<endl; 
   cout<<"$ >\\ "; 
   cin>>ch;  
   while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y') 
  {  
     cout<<"$ >\\"; 
     cin>>ch; 
  }  
   }while(ch=='y'||ch=='Y'); 

void ATM::Credit() 
{  
  int  m; 
  char ch; 
   do 
   {  
      cout<<"你要存的金额:"<<"\n$>\\"<<endl;  
      cin>>m; 
      while(m<=0||(m%100)!=0) 
   {  
    cout<<"输入有误,请输入正确的数字!"<<endl; 
    cout<<"$ >\\ "; 
    cin>>m; 
   } 
  
   cout<<endl<<"恭喜您,操作成功!"<<endl; 
   use.set1_money(m); 
     
   cout<<"是否要继续该项操作:(Y/N) "<<endl; 
   cout<<"$ >\\ "; 
   cin>>ch;  
   while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y') 
  {  
     cout<<"$ >\\"; 
     cin>>ch; 
  }  
   }while(ch=='y'||ch=='Y'); 

 
void ATM::Quary() 

 cout<<" 用户姓名:"<<use.get_name()<<endl; 
 cout<<" 您的卡号:"<<use.get_num()<<endl; 
 cout<<" 您的余额:  "<<use.get_money()<<endl;  
}  
void ATM::lock() 
{  
 cout<<endl<<"对不起,由于你的操作有误,你的卡已经被没收! "<<endl; 
 exit(1); 

 
void ATM::exitATM() 
{  
 cout<<endl<<"感谢你对本银行的支持,欢迎下次光临!"<<endl; 
 cout<<"请取卡??"<<endl; 
 exit(0); 

  
void main() 
{  
  Users c1(" 李明","123456",10000,"123456");// 先构造一个用户
 
  ATM atm(c1); 
  atm.Login();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值