中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > C/C++
详细解析C++编写的ATM自动取款机模拟程序
作者:萧何 时间:2006-10-04 12:21 出处:C语言之家 责编:月夜寒箫
              摘要:详细解析C++编写的ATM自动取款机模拟程序
学习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);
            }

 

// ************************************
            // *                                  *
            // *          ATM.cpp                 *
            // *                                  *
            // ************************************
            #include<iostream.h>
            #include"function.h"
            void main()
            {
            consumer c1("jim","12345",5200.3f,"123");
            // 先构造一个用户
            ATM atm(c1);
            atm.welcome();
            }
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有