#include
#include
#include
class consumer;
class ATM
// A TM取款机
{
public:
friend class consumer;
ATM(consumer& cn):cnsm(cn) {
}
void welcome();
// 登陆界面
bool check_passwd(char n[],char pwd[]); // 核对密码
void change_passwd();
// 修改密码
void fetchmoney();
// 取款
void information();
// 查询信息
void exitA TM();
// 退出系统
void functionshow();
// 功能界面
void lock();
// 锁机
void move_money();
// 转账
private:
int times;
// 记录密码输入次数
consumer& cnsm;
};
class consumer
// 用户
{
public:
friend class A TM;
consumer(char Name[],char Num[],
float Money,char Password[]);
protected:
char* get_name();
// 取得姓名
char* get_kahao();
// 取得卡号
char* get_passwd();
// 取得密码
float get_money();
// 取得余额
void set_passwd(char pwd[]);
// 设置密码
void set_money(float m);
// 取钱
void move_money();
//转账
private:
char passwd[10];
// 用户密码
char name[20];
// 用户姓名
char kahao[20]; //用户卡号
float money;//用户余额
};
consumer::consumer(char Name[],char Kahao[],float Money,char Password[])//构造函数,建立账户{
strcpy(name,Name);
strcpy(kahao,Kahao);
money=Money;
strcpy(passwd,Password);
}
float consumer::get_money()// 取得余额
{
return money;
}
char* consumer::get_name()// 取得姓名
{
return name;
}
char* consumer::get_kahao()// 取得卡号
return kahao;
}
char* consumer::get_passwd()// 取得密码
{
return passwd;
}
void consumer::set_money(float m)// 取钱
{
money-=m;
}
void consumer::set_passwd(char pwd[])// 设置密码
{
strcpy(passwd,pwd);
}
void A TM::welcome() // 登陆界面
{
times=0;
cout<<"*欢迎使用江苏师范大学银行A TM自动取款机*"< char pwd[10],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<3); lock(); } bool A TM::check_passwd(char num[], char pwd[]) { if(strcmp(num,cnsm.get_kahao())==0&&strcmp (pwd,cnsm.get_passwd())==0) return true; else return false; } void A TM::functionshow() { int n; do { cout< cout<<"1) 修改密码"< <<"2) 取款"< <<"3) 转账"< <<"4) 查询余额"< <<"5) 退出系统"< cout<<"请选择:"; cin>>n; while(n<1||n>5) { cout<<"请输入正确的操作序号!"< cout<<"输入正确的序号:"; cin>>n; } switch(n) { case 1: change_passwd(); break; case 2: fetchmoney(); break; case 3: move_money(); break; case 4: information(); break; case 5: exitA TM(); break; } }while(true); } void A TM::change_passwd() { char pwd[10],repwd[10]; times=0; do { cout< cin>>pwd; if(!check_passwd(cnsm.get_kahao(),pwd)) times++; else break; }while(times<3); if(times==3) lock(); int k=0; int t=0; do { k=0; cout<<"请输入新密码:"; int g=0; int v=1; g=strlen(pwd); if(g<6) { k=1; cout<<"密码不能小于6位"< } for(int i=0;i { if(pwd[i]==pwd[i+1]) v=v+1; } if(v==g) { k=1; cout<<"对不起,不允许出现完全相同的情况"< } if(g>6&&v!=g) { cout<<"请再输入一次新密码:"; cin>>repwd; if((t=strcmp(pwd,repwd))!=0) { cout<<"你输入的两次密码不一样,请重新输入!"< } } }while(t!=0||k==1); cnsm.set_passwd(pwd); cout<<"密码修改成功,请牢记!"< } void A TM::fetchmoney() { float m; char ch; do { cout< while(m<=0) { cout<<"请输入正确的数字!"< cout<<"请选择:"; cin>>m; } if(m>5000) { cout<<"对不起,每次最多取5000元"< } else { if((int)m%100!=0) { cout<<"对不起,取款金额为100的倍数"< } else { if(cnsm.get_money()-m<0) { cout<<"对不起,你的余额不足!"< } else { cout< cnsm.set_money(m); } } } cout<<"是否要继续该项操作:(Y/N) " < cout<<"请选择:"; cin>>ch; while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y') { cout<<"请选择:"; cin>>ch; } }while(ch=='y'||ch=='Y'); } void A TM::move_money() { consumer c2("wang ming","234567",10000.00F,"234567"); int zh; int zzk; system( "cls" ); cout<<"输入您的转账目标:"; cin>>zh; cout<<"输入您的转账额度:"; cin>>zzk; if(zh==234567) { if(c2.money-zzk>0){ c2.money=c2.money+zzk; cnsm.money-=zzk; cout<<"转账:"< cout<<"余额:"< } else cout<<"转账金额超出上限"< } else cout<<"转账目标出错没有找到该用户"< // getchar(); } void A TM::information() { cout<<"**********************************"< cout<<"*"< cout<<"* 用户姓名:"< cout<<"* 卡号:"< cout<<"* 余额: "< cout<<"**********************************"< } void A TM::lock() { cout< } void A TM::exitATM() { cout< cout<<"请取卡……"< exit(0); } void main() { consumer c1("Li ming","123456",10000.00F,"123456"); consumer c2("wang ming","123456",10000.00F,"123456"); // 先构造一个用户 A TM atm(c1); atm.welcome(); }