主要通过采用友元和构造函数对定义的两个类consumer和ATM进行操作
定义ATM类
//********************************声明ATM类、CATM.h************************************
#include<iostream>
#include<string.h>
using namespace std;
//定义一个ATM类,主要实现以下内容:
//1、操作界面显示
//2、输入密码并校验
//3、取款
//4、查询余额信息
//5、退出系统
//6、欢迎界面
class consumer;
class CATM
{
public:
CATM(consumer& cn);
void wellcome();//打开后欢迎界面
void function();//操作界面
bool check_passwd(char passwd[],char num[]);//核对密码
void change_passwd();//修改密码
void get_money();//取款
void information();//查询信息
void exit();//退出系统
~CATM();
consumer& cnsm;
};
//================================定义CATM成员函数======================================
#include "CATM.h"
#include"consumer.h"
CATM::CATM(consumer& cn) :cnsm(cn){};//拷贝构造函数
CATM::~CATM()
{
}
//欢迎界面
void CATM::wellcome(){
cout << "欢迎使用ATM自助服务系统" << endl;
char passwd[8], num[20],ch;
//请输入个人卡号:
cout << "请输入个人卡号:" << endl;
cin >> num;//空格会分开输入
//输入个人密码
cout << "请输入个人密码:" << endl;
cin >> passwd;
if (check_passwd(passwd, num)){
function();
}
else
cout << "你输入的信息不对" << endl;
}
//核对密码
bool CATM::check_passwd(char passwd[],char num[]){
if ((strcmp(passwd,cnsm.get_passwd()) == 0) && (strcmp(num,cnsm.get_num())==0))
return true;
else
return false;
}
//修改密码
void CATM::change_passwd(){
char passwd[8],repasswd[8];
cout << "请输入您要修改的密码:" << endl;
cin >> passwd;
cout << "请再次输入您要修改的密码:" << endl;
cin >> repasswd;
if (strcmp(passwd, repasswd) == 0)
cout << "密码修改成功,请保存好密码";
}
//取钱
void CATM::get_money(){
float m, n;
cout << "请输入取款金额:" << endl;
cin >> m;
n = cnsm.get_money();
if (m < n)
{
cout << "您的余额是:" << (n - m)<<endl;
cnsm.set_money(n - m);
}
else{
cout << "您的余额不够" << endl;
}
}
//个人信息显示
void CATM::information(){
cout << "**********************" << endl;
cout << "*" << endl;
cout << "用户姓名:" << cnsm.get_name() << endl;
cout << "卡号:" << cnsm.get_num() << endl;
cout << "余额:" << cnsm.get_money() << endl;
cout << "****************************" << endl;
}
//功能选择
void CATM::function()
{
int i;
do{
cout << "请输入你选择操作:" << endl;
cout << "****************************" << endl;
cout << "*****1、查询信息**********" << endl;
cout << "*****2、取钱**********" << endl;
cout << "*****3、修改密码**********" << endl;
cout << "*****4、退出**************" << endl;
cin >> i;
while (i > 4 || i < 1){
cout << "您输入的操作序号有误:";
cout << "请输入您要选择的操作:";
cin >> i;
}
switch (i)
{
case(1) : information(); break;
case(2) : get_money(); break;
case(3) : change_passwd(); break;
case(4) : break;
}
} while (i != 4);
}
定义一个用户类,存储用户信息
//=============================声明Cconsumer类========================================
#include<iostream>
#include<string.h>
using namespace std;
//定义一个用户类
/*1、设置密码
2、取钱
3、获取信息
*/
class consumer
{
public:
// friend class CATM;
consumer(char Name[], char Num[],float Money,char Passwd[]);
~consumer();
void set_passwd(char psd[]);//设置密码
void set_money(float m);//存钱
char* get_name();//获得姓名信息
char* get_num();//获得卡号信息
float get_money();//余额信息
char* get_passwd();//密码信息
private:
char name[20];
char num[20];
char passwd[6];
float money;
};
//=============================定义consumer成员函数====================================
#include "consumer.h"
#include"iostream"
consumer::consumer(char Name[], char Num[], float Money, char Passwd[])
{
strcpy(name, Name);
strcpy(num, Num);
money = Money;
strcpy(passwd, Passwd);
}
char * consumer::get_name(){
return name;
}
char* consumer::get_num(){
return num;
}
char* consumer::get_passwd(){
return passwd;
}
float consumer::get_money(){
return money;
}
void consumer::set_passwd(char psd[]){
strcpy(passwd, psd);
}
void consumer::set_money(float m){
money = m;
}
consumer::~consumer()
{
}
最后进行测试:
#include"consumer.h"
#include"CATM.h"
//测试
int main(){
consumer danny("zhangsan", "2111602147", 1000, "195424");
CATM atm(danny);
atm.wellcome();
}