阅 读 文 章

详细解析C++编写的ATM自动取款机模拟程序

[来源:网上转载 (http://www.chinaunix.net) | 作者:网友(不详) | 时间:2007-07-07 | 浏览:人次 ]

 学习c++有一段时间了,前两天有个朋友要我帮她做个模拟ATM自动取款机的程序,于是花了一个晚上写了出来,其实这个程序也很简单,但是我觉得它对于刚学c++的人来说比较有用处,因为它可以帮助你更加深刻的理解面向对象程序设计的真谛-------以现实世界为模型编写程序。学习c++的真正目的也就在于此,真正的理解面向对象程序设计!






// ************************************// *                                  *// *          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 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类的成员函数         *// *                                  *// ************************************ #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!='\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(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<<"你要取多少钱:"	  <<"\n$>\\"<<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);}
论坛热门帖子: [lch203] 写得蛮好的linux学习笔记(10-21)
[黑马制造] 学习java的30个目标(10-19)
[笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19)
[udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18)
[沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18)
TAG标签: 模拟 程序 自动 解析 编写 详细 // char cout endl void

最新评论 共有0位网友发表了评论

发表评论

评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名:(注册)
密码:
验证码:
匿名发表

网站地图友情连接交流论坛网站投稿广告服务联系我们留言本站长统计
Some rights reserved: www.chmhome.com, 鄂ICP备07010232号 E-mail:chinakafei@live.com,QQ:552766
中国咖啡技术网(Chmhome):国外编程技术书籍,中文编程手册,经典编程文章,交流技术,技术软件下载,计算机论文,毕业论文.