//************************************
author:chinayaosir
date:06/22/2009
blog:http://blog.csdn.net/chinayaosir
tool:vc++6.0
file:ATM.cpp
ide:vc++6.0/mingGW编译通过
//************************************
#include
#include
//#include
#include"atm.h"
int main()
{
//张三是用户名,955998008129990691为卡号,11200.50f为存款总金额,123123为密码
consumer c1("张三","955998008129990691",11200.50f,"123123"); // 先构造一个用户
ATM atm(c1);
atm.welcome();
return 0;
}
/****************************************************************/
/*@file ATM.H
*ATM.h是定义和实现类
*ATM.cpp 应用此类
*模仿ATM和取款人的两个类的使用
*VC 6.0编译实现
*/
class consumer;
// ATM取款机类
class 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类的成员函数 *
// * *
// ************************************
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类的成员函数 *
// * *
// ************************************
void ATM::welcome()
{
times=0;
cout<<"$ 欢迎使用若雪银行ATM自动取款机!~! "<
char pwd[8],num[20],ch;
int i=0;
do
{
i=0;
cout<
{
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<<"你输入的卡号或密码有误, 请重新输入"<
}
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<
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<
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<<"你输入的两次密码不一样, 请重新输入!"<
cnsm.set_passwd(pwd);
cout<<"密码修改成功,请牢记!"<
}
void ATM::fetchmoney()
{
float m;
char ch;
do
{
cout<
while(m<=0)
{
cout<<"请输入正确的数字!"<
cin>>m;
}
if(cnsm.get_money()-m<0)
{
cout<<"对不起,你的余额不足!"
<
else
{
cout<
}
cout<<"是否要继续该项操作:(Y/N) " <
cin>>ch;
while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')
{
cout<<"$ >";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
void ATM::information()
{
cout<<"**********************************"<
}
void ATM::lock()
{
cout<
}
void ATM::exitATM()
{
cout<
}