**一.題目:**用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;
}
四.結果: