介绍一些有关c/c++的文章 例如:VC++6.0 下搭建 wxWidgets 开发环境 最强大的.NET语言之对象构造 最强大的.NET语言之内存与资源 最强大的.NET语言之装箱 C++

源代码在线查看: 详细解析c++编写的atm自动取款机模拟程序.txt

软件大小: 120 K
上传用户: jc6629402
关键词: NET wxWidgets 语言 6.0
下载地址: 免注册下载 普通下载 VIP

相关代码

				详细解析C++编写的ATM自动取款机模拟程序 
				 
				 
				文章录入:7747.Net    责任编辑:7747.Net  更新时间:2006-9-21 10:38:10 1359 
				 【字体:小 大】
				 
				 
				学习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				
				    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				
				      				
				      				
				         				
				     cout				
				     cin>>n;
				
				     while(n4)
				
				  {
				
				      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				
				
				
				 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				
					  				
				      cin>>m;
				
				      while(m				
				   {
				
				    cout				
				    cout				
				    cin>>m;
				
				   }
				
				
				
				      if(cnsm.get_money()-m				
				   {
				
				     cout				
					 				
				   }
				
				   else
				
				   {
				
				   cout				
				   				
				         cnsm.set_money(m);
				
				   }
				
				   cout				
				   				
				   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();
				
				}
				 
				 
							

相关资源