Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92222354
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: C/C++

2008-04-15 19:11:01

    来源:C语言之家    作者:萧何

学习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自动取款机!~!
 "<\\";
     cin>>n;
     while(n<1||n>4)
  {
      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<>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<<"你输入的两次密码不一样,
   请重新输入!"<\\"<>m;
      while(m<=0)
   {
    cout<<"请输入正确的数字!"<\\ ";
    cin>>m;
   }

      if(cnsm.get_money()-m<0)
   {
     cout<<"对不起,你的余额不足!"
	 <\\ ";
   cin>>ch;
   while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')
  {
     cout<<"$ >\\";
     cin>>ch;
  }

   }while(ch=='y'||ch=='Y');

}

void ATM::information()
{
 cout<<"**********************************"<

// ************************************
// *                                  *
// *          ATM.cpp                 *
// *                                  *
// ************************************ 
#include
#include"function.h"

void main()
{
  consumer c1("jim","12345",5200.3f,"123");
  // 先构造一个用户
  ATM atm(c1);
  atm.welcome();
}
阅读(159) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~