用c++模拟ATM机

**一.题目:**用c++模拟ATM机.
二.分析:

实现ATM机,首先要创建两个类,一个为用户类,用来存储用户个人信息。另一个为ATM类,
用来实现各种功能。用户类中用户个人信息只有用户本人可以查看,所以全部为私有数据成
员,包括用户的密码、用户的卡号、用户余额、用户名字。ATM机类主要是实现登录、存款、
取款、余额查询、修改密码、退出系统等基本功能。登录时要核对账户和密码是否正确,若
密码错误3次,则锁卡。存款和取款是对用户余额进行操作,取款时还有可能出现余额不足
的情况。修改密码时首先要进行原密码的核对,其次要让用户输入两次新密码,以免用户因
手误输入错误。还有最重要的是要将用户类类的对象作为参数传入ATM机类里面,要实现这
个功能,就需要在ATM机类中定义一个用户类,并将用户类的一个对象作为参数传入其构造
函数中。

三.代码:

#include<iostream>
#include<string>

using namespace std;

class account     //定义一个用户类
{
public:
	account();    //构造函数
	string get_number();  //返回用户卡号
	string get_name();    //返回用户姓名
	int get_money();       //返回余额,不带参数
	int get_money(int m); //给余额赋值
	string get_password(); //返回密码
	void get_password(string p);//给密码赋值
private:
	int money;
	string number;
	string name;
	string password;
};

account::account()
{
    cout << "欢迎使用!" << "请创建您的账户!" <<endl;
	cout << "请输入卡号:";
	cin >> number;
	cout << endl;
	cout << "请输入用户名:";
	cin >> name;
	cout << endl;
	cout << "请输入你的密码:";
	cin >> password;
	money = 0;
	cout << "创建成功!" << endl;

}

string account::get_number()
{
    return number;
}

string account::get_name()
{
    return name;
}

string account::get_password()
{
    return password;
}

void account::get_password(string p)
{
    password = p;
}

int account::get_money()
{
    return money;
}

int account::get_money(int m)
{
    money = m;
    return money;
}

class atm   //atm类
{
public:
    atm();   //构造函数
    atm(account a1);  //构造函数,用account类的一个对象作参数
	void enter();     //登录
	void display();   //显示功能
	void deposit();   //存款
	void withdraw();  //取款
	void change_password();  //修改密码
	void inquiry();   //查询余额
	void exit();      //退出系统
private:
    account a;
};

atm::atm()
{
}

atm::atm(account a1)
{
    a = a1;
}

void atm::display()
{
    int n;
    cout << "1.登录  2.存款  3.取款  4.修改密码  5.查询余额  6.退出系统"<<endl<<"请选择:"<<endl;
    while(cin >> n)
    {
        if(6 == n)
        {
            exit();
            break;
        }                          //当n为6时退出系统,不再显示功能界面,则跳出循环
        switch(n)
        {
            case 1: enter();
                    break;
            case 2: deposit();
                    break;
            case 3: withdraw();
                    break;
            case 4: change_password();
                    break;
            case 5: inquiry();
                    break;
            default: cout << "无此操作!" << endl;
                    break;
        }
        cout << "1.登录  2.存款  3.取款  4.修改密码  5.查询余额  6.退出系统"<<endl<<"请选择:"<<endl;
    }
}
void atm::enter()
{
    string number1;
	string temp;
	int t = 0;
	cout << "请输入卡号:";
	cin >> number1;
	if(a.get_number() == number1)  //判断是否存在此账户,若存在则执行下面语句
    {
        cout << "请输入密码:";
        cin >> temp;
        cout << endl;
        while(a.get_password() != temp)
        {
            t++;
            if(3 == t)
            {
                cout << "密码错误3次,卡已被锁!"<< endl;
                exit();
                break;
            }          //当密码错误3次时,锁卡,退出系统
            cout << "密码错误!" <<endl <<"请重新输入:";
            cin >> temp;    //密码错误,提示用户重新输入
        }
        if(a.get_password() == temp)
        {
            cout << "登录成功!" << a.get_name() << "欢迎您!" << endl;
            display();
        }                  //密码正确则登录成功,显示功能
    }
    else
    {
        cout << "无此账户!" << endl;
    }            //若未找到此卡号,则无此账户
}

void atm::deposit()              //存款
{
	int m;
	cout << "请输入存款数:";
	cin >> m;
	cout << endl;
	a.get_money(a.get_money() + m);
}

void atm::withdraw()  //取款
{
	int m;
	cout << "请输入取款数:";
	cin >> m;
	if(m <= a.get_money())
	{
		a.get_money(a.get_money() - m);
	}
	else
	{
		cout << "余额不足!"<< endl;
	}    //当取款数大于余额时,余额不足,不操作
}

void atm::change_password()  //修改密码
{
	string temp;
	string temp1;
	string temp2;
	int t = 0;
	cout << "请输入原密码:";
	cin >> temp;
	cout << endl;
	while(a.get_password() != temp)
	{
		t++;
		if(3 == t)
		{
			cout << "密码错误3次,卡已被锁!"<< endl;
			exit();
			break;
		}
		cout << "密码错误!" <<endl <<"请重新输入:";
		cin >> temp;
	}  //先确认原密码
	if(a.get_password() == temp)
	{
		cout << "请输入新密码:";
		cin >> temp1;
		cout << "请确认密码:";
		cin >> temp2;
		if(temp1 == temp2)  //判断两次输入是否相同
		{
			a.get_password(temp1);
			cout << "修改密码成功!" <<endl;
		}
		else
		{
			cout << "密码错误! 请重新操作。" << endl;
			display();
		}
	}
}
void atm::inquiry()   //显示余额
{
	cout << "您的余额为:" << a.get_money() <<"元"<<endl;
}

void atm::exit()  //退出系统
{
	cout << "感谢您的使用!"<<endl;
}

int main()
{
	atm my_atm;
	my_atm.enter();
	return 0;
}

四.结果:
无此账户的情况
卡被锁的情况
其余功能

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

格格不入ち

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值