不知道哪错了,求指教
什么值得码 2012-05-20 12:22:18 #include<iostream.h>
#include<string.h>
class consumer
{
protected:
char kahao[20];
char name[20];
char password[10];
float money;
public:
consumer(char Name[],char Kahao[],float Money,char Password[]);
char* getname();
char* getkahao();
char* getpassword();
float getmoney();
void setmoney(float m);
void setpassword(char p[]);
};
class ATM:public consumer
{
int times;
consumer cnsm;
public:
ATM(consumer &cnsm);
void welcome(); //欢迎界面
bool checkpasswd(char num[],char pswd[]); //核对密码
void changepasswd(); //修改密码
void fetchmoney(); //取款
void information(); //查询信息
void functionshow(); //功能界面
void lock();
};
consumer::consumer(char Name[],char Kahao[],float Money,char Password[])//构造函数,建立账户
{
strcpy(name,Name);
strcpy(kahao,Kahao);
money=Money;
strcpy(password,Password);
}
char* consumer::getname(){return name;}
char* consumer::getkahao(){return kahao;}
char* consumer::getpassword(){return password;}
float consumer::getmoney(){return money;}
void consumer::setmoney(float m)
{money=m;}
void consumer::setpassword(char p[])
{ strcpy(password,p);}
void ATM::welcome()
{
times=0;
cout<<"*欢迎使用银行ATM自动取款机*"<<endl;
char passwd[10],num[20];
int i=0;
cout<<endl<<"请输入卡号:";
cin>>num;
cout<<"请输入密码:";
cin>>passwd;
if(!checkpasswd(num,passwd))
{
cout<<"你输入的卡号或密码有误,请从新输入"<<endl;
times++;
}
else { functionshow();}
if(times>=3) lock();
}
bool ATM::checkpasswd(char num[],char pswd[])
{
if(strcmp(num,cnsm.getkahao())==0&&strcmp(pswd,cnsm.getpassword())==0)
return true;
else
return false;
}
void ATM::functionshow()
{
int n;
cout<<endl<<"请输入相应的操作序号进行操作: "<<endl;
cout<<"1)修改密码 "<<endl
<<"2)取款 "<<endl
<<"3)查询余额 "<<endl
<<"4)退出系统 "<<endl;
while(n<1||n>4)
{
cout<<"请输入正确的操作序号!"<<endl;
cin>>n;
}
switch(n)
{
case 1:changepasswd(); break;
case 2:fetchmoney(); break;
case 3:information(); break;
// case 4:exitATM(); break;
default:break;
}
}
void ATM::changepasswd()
{
char pasw[10],repasw[10];
times=0;
cout<<endl<<"请输入旧密码:";
cin>>pasw;
if(strcmp(pasw,cnsm.getpassword())==0)
{
cout<<"请输入新密码:";
cin>>pasw;
int test;
test=strlen(pasw);
if(test<6)
{
cout<<"密码不能小于6位"<<endl;
}
else if(test>6&&test<10)
{
cout<<"请再输入一次新密码:";
cin>>repasw;
if(strcmp(pasw,repasw)!=0)
{
cout<<"你输入的两次密码不一样,请重新输入!"<<endl;
}
else
{
cnsm.setpassword(pasw);
cout<<"密码修改成功,请牢记!"<<endl;
}
}
}
else times++;
if(times>=3) lock();
}
void ATM::fetchmoney()
{
float m;
cout<<endl<<"你要取多少钱:";
cin>>m;
while(m<=0)
{
cout<<"请输入正确的数字!"<<endl;
cin>>m;
}
if(m>5000)
{
cout<<"对不起,每次最多取5000元"<<endl;
}
else
{
if((int)m%100!=0)
cout<<"对不起,取款金额为100的倍数"<<endl;
else if(cnsm.getmoney()>=m)
{
cout<<"对不起,你的余额不足!"<<endl;
}
else
{
cout<< endl<<"操作成功,请收好钱!" <<endl;
cnsm.setmoney(m);
}
}
}
void ATM::information()
{
cout<<"**************************"<<endl;
cout<<"*"<<endl;
cout<<"* 用户姓名:"<<cnsm.getname()<<endl;
cout<<"* 卡号: "<<cnsm.getkahao()<<endl;
cout<<"* 余额: "<<cnsm.getmoney()<<endl;
cout<<"**************************"<<endl;
}
void ATM::lock()
{
cout<<endl<<"感谢你对本银行的支持,欢迎下次光临!"<<endl;
cout<<"请取卡......."<<endl;
}
void main()
{
consumer c1("Me","123456",10000.00F,"123456");
ATM atm(c1);
atm.welcome();
}