ATM仿真设计与实现C++

 //************************************
author:chinayaosir
date:06/22/2009
blog:http://blog.csdn.net/chinayaosir
tool:vc++6.0
file:ATM.cpp
ide:vc++6.0/mingGW编译通过
//************************************
#include
#include
//#include
#include"atm.h"

int main()
{
  //张三是用户名,955998008129990691为卡号,11200.50f为存款总金额,123123为密码
  consumer c1("张三","955998008129990691",11200.50f,"123123"); // 先构造一个用户
  ATM atm(c1);
  atm.welcome();
return 0; 
}

/****************************************************************/

/*@file ATM.H
 *ATM.h是定义和实现类
 *ATM.cpp 应用此类
 *模仿ATM和取款人的两个类的使用
 *VC 6.0编译实现
*/

class consumer;
// ATM取款机类
class ATM   
{
public:
 ATM(consumer& cn):cnsm(cn){}
 void welcome();    // 登陆界面
 bool check_passwd(char n[],char pwd[]); // 核对密码
 void change_passwd();  // 修改密码
 void fetchmoney();   // 取款
 void information();   // 查询
 void exitATM();     // 退出系统
 void functionshow();  // 功能界面
 void lock();     // 锁机
private:
 int times;   
 // 记录密码输入次数
 consumer& cnsm;
};

// 用户类
class consumer
{
public:
 friend class ATM;
 consumer(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); // 取钱
private:  
 char passwd[8]; // 用户密码
 char name[20];  // 用户姓名
 char num[20];     
 float money;
};


// ************************************
// *                                  *
// *     consumer类的成员函数         *
// *                                  *
// ************************************

consumer::consumer(char Name[],
char Num[],float Money,char Password[])
{
   strcpy(name,Name);
   strcpy(num,Num);
   money=Money;
   strcpy(passwd,Password);
}

float consumer::get_money()
{ return money;}

char* consumer::get_name()
{ return name;}

char* consumer::get_num()
{ return num;}

char* consumer::get_passwd()
{ return passwd;}

void consumer::set_money(float m)
{ money-=m;}

void consumer::set_passwd(char pwd[])
{ strcpy(passwd,pwd);}

 


// ************************************
// *                                  *
// *          ATM类的成员函数         *
// *                                  *
// ************************************

void ATM::welcome()
{
 times=0;
 cout<<"$  欢迎使用若雪银行ATM自动取款机!~! "<

 char pwd[8],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<<"你输入的卡号或密码有误, 请重新输入"<      times++;
    }
    else
    {
      functionshow();
    }
 }while(times<3);
    lock();
}

bool ATM::check_passwd(char num[],
char pwd[])
{
 if(strcmp(num,cnsm.get_num())==0&&strcmp
 (pwd,cnsm.get_passwd())==0)
  return true;
 else
  return false;
}

void ATM::functionshow()
{
   int n;

   do
   {
     cout<     cout<<"1) 修改密码 "<         <<"2) 取款操作 "<         <<"3) 查询余额 "<         <<"4) 退出系统 "<     cout<<"$ >";
     cin>>n;
     while(n<1||n>4)
  {
      cout<<"请输入正确的操作序号!"<      cout<<"$ >";
      cin>>n;
  }
 
     switch(n)
  {
      case 1:   change_passwd();
   break;
      case 2:   fetchmoney();
   break;
      case 3:   information();
   break;
      case 4:   exitATM(); 
   break;  
  }

   }while(true);

}

void ATM::change_passwd()
{
 char pwd[8],repwd[8];
 
 times=0;
 do
 {
 cout< cin>>pwd;
    if(!check_passwd(cnsm.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<<"你输入的两次密码不一样,   请重新输入!"< }while(t!=0);

 cnsm.set_passwd(pwd);
 cout<<"密码修改成功,请牢记!"<

}

void ATM::fetchmoney()
{
   float m;
   char ch;
   do
   {
      cout<"<      cin>>m;
      while(m<=0)
   {
    cout<<"请输入正确的数字!"<    cout<<"$ >";
    cin>>m;
   }

      if(cnsm.get_money()-m<0)
   {
     cout<<"对不起,你的余额不足!"
  <   }
   else
   {
       cout<       cnsm.set_money(m);
   }
   cout<<"是否要继续该项操作:(Y/N) "  <   cout<<"$ > ";
   cin>>ch;
   while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')
  {
     cout<<"$ >";
     cin>>ch;
  }

   }while(ch=='y'||ch=='Y');

}

void ATM::information()
{
 cout<<"**********************************"< cout<<"*"< cout<<"*     用户姓名:"< cout<<"*     卡号:    "< cout<<"*     余额:     "< cout<<"**********************************"<

}

void ATM::lock()
{
 cout< exit(1);
}

void ATM::exitATM()
{
 cout< cout<<"请取卡"< exit(0);
}


 

你可能感兴趣的:(5.1C/C++)