当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
c++ATM自动取款机
发布时间:2010/5/25 10:31:22 来源:城市学习网 编辑:ziteng
  #includeiostream.h#includestring.h#includestdlib.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 functionshow(); // 功能界面
  void exitATM();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;}; [NextPage]   consumer::consumer(char Name[],char Num[],float Money,char Password[]){strcpy(name,Name);strcpy(num,Num);money=Money;strcpy(passwd,Password);}
  char* consumer::get_name(){return name;}
  char* consumer::get_num(){return num;}
  char* consumer::get_passwd(){return passwd;}
  float consumer::get_money(){return money;}
  void consumer::set_passwd(char pwd[]){strcpy(passwd,pwd);}
  void consumer::set_money(float m){money-=m;}
  void ATM::welcome(){times=0;cout"$欢迎使用若雪银行ATM自动取款机!~!"endl;char pwd[8],num[20],ch;int i=0;do{i=0;coutendl"请输入卡号:";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{functionshow();}}while(times3);lock();}
  bool ATM::check_passwd(char num[],char pwd[]){if(strcmp(num,cnsm.get_num())==0&&strcmp(pwd,cnsm.get_passwd())==0)return true;elsereturn false;}
  void ATM::change_passwd(){char pwd[8],repwd[8];times=0;do{coutendl"请输入旧密码:";cinpwd;if(!check_passwd (cnsm.get_num(),pwd))times++;elsebreak;}while(times3);if(times==3)lock();int t=0;do{cout"请输入新密码:";cinpwd;cout"请再输入一次新密码:";cinrepwd;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{coutendl"你要取多少钱:""\n$\\"endl ;cinm;while(m=0){cout"请输入正确的数字!"endl;cout"$ \\ ";cinm;}
  if(cnsm.get_money()-m0){cout"对不起,你的余额不足!"endl;}else
  {coutendl"操作成功,请收好钱!"endl;cnsm.set_money(m);}cout"是否要继续该项操作:(Y/N) "endl;cout"$ \\ ";cinch;while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y'){cout"$ \\";cinch;}}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::functionshow(){int n;do{coutendl"请你输入相应的操作序号进行操作:"endl;cout"1) 修改密码 "endl"2) 取款 "endl"3) 查询余额 "endl"4) 退出系统 "endl;cout"$ \\";cinn;while(n1||n4){cout"请输入正确的操作序号!"endl;cout"$ \\";cinn;}switch(n){case 1:change_passwd();break;case 2:fetchmoney();break;case 3:information();break;case 4:exitATM();break;}}while(true);}
  void ATM::lock(){coutendl"对不起,由于你的操作有误,你的卡已经被没收! "endl;exit(1);}
  void ATM::exitATM(){coutendl"感谢你对本银行的支持,欢迎下次光临!"endl;cout"请取卡……"endl;exit(0);}
  void main(){consumer c1("jim","12345",5200.3f,"123");// 先构造一个用户ATM atm(c1);atm.welcome();}
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved