zoukankan      html  css  js  c++  java
  • 详细解析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 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___FCKpd___2gt;//"<<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();

  • 相关阅读:
    Linux(CentOS 7)命令行模式安装VMware Tools 详解
    最全面的移动APP测试点
    利用Fiddler编写Jmeter接口测试
    LeetCode | TwoSum
    Python
    Django
    浅谈web网站架构演变过程
    Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
    Web服务器之Nginx详解(操作部分)
    Web服务器之Nginx详解(理论部分)
  • 原文地址:https://www.cnblogs.com/encounter/p/2189298.html
Copyright © 2011-2022 走看看