• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
C++编写的ATM自动取款机模拟程序分析
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
C++编写的ATM自动取款机模拟程序分析
软件发布 C++编写的ATM自动取款机模拟程序分析
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 编程技术 >> C/C++教程 >> C++编写的ATM自动取款机模拟程序分析

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

添加时间: 2006-2-13 9:42:28  作者: C++教程  阅读次数:408   来源: http://d9soft.com

       

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

  

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

  // * *

  // * function.h *

  // * *

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

  

  #include

  

  

  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

  

  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

  #include

  

  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<
   <<"\n$>\\"<
   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);

  }

  

  

  

  

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

  // * *

  // * ATM.cpp *

  // * *

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

  #include

  #include"function.h"

  

  void main()

  {

   consumer c1("jim","12345",5200.3f,"123");

   // 先构造一个用户

   ATM atm(c1);

   atm.welcome();

  }

 

上下文章:

 

上一篇文章: Visual C#中灵活使用DataView 下一篇文章: QQ用户小心!C语言实现QQ密码大盗

相关文章:

  • AV杀手变种强行关闭杀度软件与下载恶意程序
  • 深度分析:Oracle收购JBoss&BEA开源kodo
  • Oracle10gR2中自动检查点调整的新特性
  • Oracle9iAS证书指南与教材分析
  • 为数据库的表自动生成行号

相关软件:

  • 哑巴鼠标自动点击器 V2.3
  • 木马分析专家个人防火墙 2008 0814
  • 策略大师证券分析系统 V3.0
  • 全国计算机等级考试模拟软件(2006年全年使用)二级Visual Basic V9.0
  • FTP远程文件同步更新程序 1.0.0.0
  • 木马分析专家 2008 9.93 Build 0811

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • C/C++作用域引申出的编码规范
  • 程序宝典:C++学习感想
  • C语言:黑客学员必修课(一)
  • C语言:黑客学员必修课(二)
  • 使用多线程实现数据实时采集
  • C++编程中的四个调试小技巧
  • C语言程序设计基础之联合
  • 学C++不得不看的一篇文章
  • C,曾经的程序员梦
  • 水滴石穿C语言之可变参数问题

C/C++教程阅读排行

  • 学C++不得不看的一篇文章
  • 水滴石穿C语言之可变参数问题
  • C语言:黑客学员必修课(一)
  • 程序宝典:C++学习感想
  • 我的Visual C++入门之路
  • 初学者学习C++的50条忠告
  • C++中的struct专题研究
  • C++箴言:只要可能就用const
  • 强大的语言——C入门
  • C++编程中的四个调试小技巧

编程技术阅读总排行

  • VB入门教程之一
  • Java连接数据库实例
  • 第二章 PowerBuilder 入门之创建新...
  • VC++之List Box/Check List Box控...
  • 第一章 什么是PowerBuilder
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有