用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;
}

四.結果:
無此賬戶的情況
卡被鎖的情況
其餘功能

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章