C++编写的ATM自动取款机模拟程序

// ************************************
// *                 *
// *     function.h       *
// *                 *
// ************************************
#include<iostream.h>
class consumer;
class ATM  
// 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 Pass
Word []);
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类的成员函数     *
// *                 *
// ************************************
#include"function.h"
#include<string.h>
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类的成员函数     *
// *                 *
// ************************************
#include "function.h"
#include <string.h>
#include<stdlib.h>
void ATM::welcome()
{
times=0;
cout<<"$
欢迎使用若雪银行ATM自动取款机!~!
"<<endl;
char pwd[8],num[20],ch;
int i=0;
do
{
  i=0;
  cout<<endl<<"请输入卡号:";
  do
  {
     cin.get(ch);
    num[i++]=ch;
  }while(ch!='
');
    num[i-1]='';
  i=0;
  cout<<"请输入密码:";
  do
  {
     cin.get(ch);
    pwd[i++]=ch;
  }while(ch!='
');
    pwd[i-1]='';
  if(!check_passwd(num,pwd))
  {
   cout<<"你输入的卡号或密码有误,
   请重新输入"<<endl;
   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<<endl<<"请你输入相应的操作序号进行操作:
   "<<endl;
   cout<<"1) 修改密码 "<<endl
   <<"2) 取款   "<<endl
   <<"3) 查询余额 "<<endl
     <<"4) 退出系统 "<<endl;
   cout<<"$ >/";
   cin>>n;
   while(n<1||n>4)
 {
   cout<<"请输入正确的操作序号!"<<endl;
   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<<endl<<"请输入旧密码:";
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<<"你输入的两次密码不一样,
  请重新输入!"<<endl;
}while(t!=0);
cnsm.set_passwd(pwd);
cout<<"密码修改成功,请牢记!"<<endl;
}
void ATM::fetchmoney()
{
  float m;
  char ch;
  do
  {
   cout<<endl<<"你要取多少钱:"
   <<"
$>/"<<endl ;
   cin>>m;
   while(m<=0)
  {
  cout<<"请输入正确的数字!"<<endl;
  cout<<"$ >/ ";
  cin>>m;
  }
   if(cnsm.get_money()-m<0)
  {
   cout<<"对不起,你的余额不足!"
   <<endl;
  }
  else
  {
  cout<<endl<<"操作成功,请收好钱!"
  <<endl;
     cnsm.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::information()
{
cout<<"**********************************"<<endl;
cout<<"*"<<endl;
cout<<"*   用户姓名:"<<cnsm.get_name()<<endl;
cout<<"*   卡号:  "<<cnsm.get_num()<<endl;
cout<<"*   余额:   "<<cnsm.get_money()<<endl;
cout<<"**********************************"<<endl;
}
void ATM::lock()
{
cout<<endl<<"对不起,由于你的操作有误,
你的卡已经被没收! "<<endl;
exit(1);
}
void ATM::exitATM()
{
cout<<endl<<"感谢你对本银行的支持,
欢迎下次光临!"<<endl;
cout<<"请取卡……"<<endl;
exit(0);
}

************************************
// *                 *
// *     ATM.cpp         *
// *                 *
// ************************************
#include<iostream.h>
#include"function.h"
void main()
{
 consumer c1("jim","12345",5200.3f,"123");
 // 先构造一个用户
 ATM atm(c1);
 atm.welcome();
}
 

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值