#include<iostream.h>
#include<string.h>
#include <string.h>
#include<stdlib.h>
class Users;
class ATM // ATM取款机
{
public:
ATM(Users& er):use(er)
{
}
void Login(); // 通过Login输入卡号和密码进入界面
bool check_passwd(char n[],char pwd[]); // 核对密码,一致则进入界面
void change_passwd(); // 修改密码
void Debit(); // 取款
void Credit(); //存款
void Quary(); // 查询余额及信息
void exitATM(); // 退出系统
void func(); // 功能实现界面
void lock(); // 锁机
private:
int times; // 记录密码输入次数
Users& use;
};
class Users // 用户
{
public:
friend class ATM;//声明ATM为Users的友元类
Users(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); // 取钱
void set1_money(float m); //存款
private:
char passwd[10]; // 用户密码
char name[20]; // 用户姓名
char num[20]; //卡号
float money; //账户余额
};
Users::Users(char Name[],char Num[],float Money,char Password[])
{
strcpy(name,Name);
strcpy(num,Num);
money=Money;
strcpy(passwd,Password);
}
float Users::get_money()
{
return money;
}
char* Users::get_name()
{
return name;
}
char* Users::get_num()
{
return num;
}
char* Users::get_passwd()
{
return passwd;
}
void Users::set_money(float m)
{
money-=m*100;
}
void Users::set1_money(float m)
{
money+=m;
}
void Users::set_passwd(char pwd[])
{
strcpy(passwd,pwd);
}
void ATM::Login()//登陆界面
{
times=0;
cout<<"************************************************************************"<<endl;
cout<<"*welcome *"<<endl;
cout<<"* *"<<endl;
cout<<"******************欢迎使用中国农业银行ATM自动取款机*******************"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"************************************************************************"<<endl;
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<<"你输入的卡号或密码有误,请重新输入"<<endl;
times++;
}
else
{
func();
}
}while(times<3);
lock();
}
bool ATM::check_passwd(char num[],
char pwd[])
{
if(strcmp(num,use.get_num())==0&&strcmp
(pwd,use.get_passwd())==0)
return true;
else
return false;
}
void ATM::func()
{
int n;
do
{
cout<<endl<<"请你输入相应的操作序号进行操作:"<<endl;
cout<<endl;
cout<<"1) 查询余额";
cout<<"2) 取款 ";
cout<<"3) 存款";
cout<<"4) 修改密码";
cout <<"5) 退出系统"<<endl;
cout<<endl;
cout<<"请选则业务序号:";
cin>>n;
while(n<1||n>5)
{
cout<<"请输入正确的操作序号!"<<endl;
cout<<"$ >\\";
cin>>n;
}
switch(n)
{
case 1: Quary();
break;
case 2: Debit();
break;
case 3: Credit();
break;
case 4: change_passwd();
break;
case 5: exitATM();
}
}while(true);
}
void ATM::change_passwd()
{
char pwd[10],repwd[10];
times=0;
do
{
cout<<endl<<"请输入旧密码:";
cin>>pwd;
if(!check_passwd(use.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<<"你输入的两次密码不一样,请重新输入!"<<endl;
}while(t!=0);
use.set_passwd(pwd);
cout<<"恭喜您,密码修改成功!"<<endl;
}
void ATM::Debit()
{
float m;
float n;
char ch;
do
{
cout<<endl<<"请输入您要取一百元的现金的张数:"<<"\n$>\\"<<endl ;
cin>>m;
n=100*m;
while(n<=0)
{
cout<<"请输入正确的数字!"<<endl;
cout<<"$ >\\ ";
cin>>m;
}
if(n>2000)
{
cout<<"对不起,您余额不足或者超过您的单次取钱限制2000元!"<<endl;
}
else
{
cout<<endl<<"操作成功,请收好钱!"<<endl;
use.set_money(m);
}
cout<<"是否要继续该项操作:(Y/N) "<<endl;
cout<<"$ >\\ ";
cin>>ch;
while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')
{
cout<<"$ >\\";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
void ATM::Credit()
{
int m;
char ch;
do
{
cout<<"你要存的金额:"<<"\n$>\\"<<endl;
cin>>m;
while(m<=0||(m%100)!=0)
{
cout<<"输入有误,请输入正确的数字!"<<endl;
cout<<"$ >\\ ";
cin>>m;
}
cout<<endl<<"恭喜您,操作成功!"<<endl;
use.set1_money(m);
cout<<"是否要继续该项操作:(Y/N) "<<endl;
cout<<"$ >\\ ";
cin>>ch;
while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')
{
cout<<"$ >\\";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
void ATM::Quary()
{
cout<<" 用户姓名:"<<use.get_name()<<endl;
cout<<" 您的卡号:"<<use.get_num()<<endl;
cout<<" 您的余额: "<<use.get_money()<<endl;
}
void ATM::lock()
{
cout<<endl<<"对不起,由于你的操作有误,你的卡已经被没收! "<<endl;
exit(1);
}
void ATM::exitATM()
{
cout<<endl<<"感谢你对本银行的支持,欢迎下次光临!"<<endl;
cout<<"请取卡??"<<endl;
exit(0);
}
void main()
{
Users c1(" 李明","123456",10000,"123456");// 先构造一个用户
ATM atm(c1);
atm.Login();
}
#include<string.h>
#include <string.h>
#include<stdlib.h>
class Users;
class ATM // ATM取款机
{
public:
ATM(Users& er):use(er)
{
}
void Login(); // 通过Login输入卡号和密码进入界面
bool check_passwd(char n[],char pwd[]); // 核对密码,一致则进入界面
void change_passwd(); // 修改密码
void Debit(); // 取款
void Credit(); //存款
void Quary(); // 查询余额及信息
void exitATM(); // 退出系统
void func(); // 功能实现界面
void lock(); // 锁机
private:
int times; // 记录密码输入次数
Users& use;
};
class Users // 用户
{
public:
friend class ATM;//声明ATM为Users的友元类
Users(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); // 取钱
void set1_money(float m); //存款
private:
char passwd[10]; // 用户密码
char name[20]; // 用户姓名
char num[20]; //卡号
float money; //账户余额
};
Users::Users(char Name[],char Num[],float Money,char Password[])
{
strcpy(name,Name);
strcpy(num,Num);
money=Money;
strcpy(passwd,Password);
}
float Users::get_money()
{
return money;
}
char* Users::get_name()
{
return name;
}
char* Users::get_num()
{
return num;
}
char* Users::get_passwd()
{
return passwd;
}
void Users::set_money(float m)
{
money-=m*100;
}
void Users::set1_money(float m)
{
money+=m;
}
void Users::set_passwd(char pwd[])
{
strcpy(passwd,pwd);
}
void ATM::Login()//登陆界面
{
times=0;
cout<<"************************************************************************"<<endl;
cout<<"*welcome *"<<endl;
cout<<"* *"<<endl;
cout<<"******************欢迎使用中国农业银行ATM自动取款机*******************"<<endl;
cout<<"* *"<<endl;
cout<<"* *"<<endl;
cout<<"************************************************************************"<<endl;
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<<"你输入的卡号或密码有误,请重新输入"<<endl;
times++;
}
else
{
func();
}
}while(times<3);
lock();
}
bool ATM::check_passwd(char num[],
char pwd[])
{
if(strcmp(num,use.get_num())==0&&strcmp
(pwd,use.get_passwd())==0)
return true;
else
return false;
}
void ATM::func()
{
int n;
do
{
cout<<endl<<"请你输入相应的操作序号进行操作:"<<endl;
cout<<endl;
cout<<"1) 查询余额";
cout<<"2) 取款 ";
cout<<"3) 存款";
cout<<"4) 修改密码";
cout <<"5) 退出系统"<<endl;
cout<<endl;
cout<<"请选则业务序号:";
cin>>n;
while(n<1||n>5)
{
cout<<"请输入正确的操作序号!"<<endl;
cout<<"$ >\\";
cin>>n;
}
switch(n)
{
case 1: Quary();
break;
case 2: Debit();
break;
case 3: Credit();
break;
case 4: change_passwd();
break;
case 5: exitATM();
}
}while(true);
}
void ATM::change_passwd()
{
char pwd[10],repwd[10];
times=0;
do
{
cout<<endl<<"请输入旧密码:";
cin>>pwd;
if(!check_passwd(use.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<<"你输入的两次密码不一样,请重新输入!"<<endl;
}while(t!=0);
use.set_passwd(pwd);
cout<<"恭喜您,密码修改成功!"<<endl;
}
void ATM::Debit()
{
float m;
float n;
char ch;
do
{
cout<<endl<<"请输入您要取一百元的现金的张数:"<<"\n$>\\"<<endl ;
cin>>m;
n=100*m;
while(n<=0)
{
cout<<"请输入正确的数字!"<<endl;
cout<<"$ >\\ ";
cin>>m;
}
if(n>2000)
{
cout<<"对不起,您余额不足或者超过您的单次取钱限制2000元!"<<endl;
}
else
{
cout<<endl<<"操作成功,请收好钱!"<<endl;
use.set_money(m);
}
cout<<"是否要继续该项操作:(Y/N) "<<endl;
cout<<"$ >\\ ";
cin>>ch;
while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')
{
cout<<"$ >\\";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
void ATM::Credit()
{
int m;
char ch;
do
{
cout<<"你要存的金额:"<<"\n$>\\"<<endl;
cin>>m;
while(m<=0||(m%100)!=0)
{
cout<<"输入有误,请输入正确的数字!"<<endl;
cout<<"$ >\\ ";
cin>>m;
}
cout<<endl<<"恭喜您,操作成功!"<<endl;
use.set1_money(m);
cout<<"是否要继续该项操作:(Y/N) "<<endl;
cout<<"$ >\\ ";
cin>>ch;
while(ch!='n'&&ch!='N'&&ch!='Y'&&ch!='y')
{
cout<<"$ >\\";
cin>>ch;
}
}while(ch=='y'||ch=='Y');
}
void ATM::Quary()
{
cout<<" 用户姓名:"<<use.get_name()<<endl;
cout<<" 您的卡号:"<<use.get_num()<<endl;
cout<<" 您的余额: "<<use.get_money()<<endl;
}
void ATM::lock()
{
cout<<endl<<"对不起,由于你的操作有误,你的卡已经被没收! "<<endl;
exit(1);
}
void ATM::exitATM()
{
cout<<endl<<"感谢你对本银行的支持,欢迎下次光临!"<<endl;
cout<<"请取卡??"<<endl;
exit(0);
}
void main()
{
Users c1(" 李明","123456",10000,"123456");// 先构造一个用户
ATM atm(c1);
atm.Login();
}