您的位置:首页 > 其它

课程设计

2015-07-03 12:23 218 查看
#include<iostream>

#include<string>

#include<cstdlib>

using namespace std;

class consumer;

class ATM                                  // ATM取款机

{

public:
ATM(consumer& cn) :cnsm(cn){}
void welcome();                         // 登陆界面
bool check_passwd(char n[], char pwd[]);     // 核对密码
bool check_passwd2(char pwd[]);
void change_passwd();                   // 修改密码
void fetchmoney();                      // 取款
void information();                      // 查询信息 
void functionshow();                    // 功能界面
void guashi();                          //  挂失
void zhuanzhang();                     // 转账
void exitATM();                       // 退出系统
void lock();                           // 锁机

private:
int times;                          // 记录密码输入次数
long cardID;
long psw;
consumer&cnsm;

};

class consumer// 用户

{

public:
friend class ATM;
consumer(char Name[], char Num[], char Nun[], float Money, char Password[]);

protected:
char* get_name();                // 取得姓名
char* get_num();                // 取得卡号
char* get_nun();                //身份证
char* get_passwd();             // 取得密码
float get_money();              // 取得余额
void set_passwd(char pwd[]);     // 设置密码
void set_money(float m);        // 取钱

private:
char passwd[20];                // 用户密码
char name[20];                // 用户姓名
char num[20];
char nun[20];
float money;

};

consumer::consumer(char Name[], char Num[], char Nun[],
float Money, char Password[])

{
strcpy_s(name, Name);
strcpy_s(num, Num);
strcpy_s(nun, Nun);
money = Money;
strcpy_s(passwd, Password);

}

char* consumer::get_name()


return name;

}

char* consumer::get_num()

{
return num; 

}

char* consumer::get_nun()


return nun;

}

char* consumer::get_passwd()

{
return passwd;

}

float consumer::get_money()


return money;

}

void consumer::set_passwd(char pwd[])

{
strcpy_s(passwd, pwd);

}

void consumer::set_money(float m)

{
money -= m;

}

void ATM::welcome()

{
int times = 0;
cout << "************************************" << endl;
cout << "  ★ 欢迎使用李逸凡银行ATM自动取款机 ★" << endl;
cout << "************************************" << endl;
char pwd[20], num[20], ch;
int i = 0;
do
{
i = 0;
cout << endl << "请输入卡号:";
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{ functionshow(); }
} while (times<3);
lock();

}

bool ATM::check_passwd(char num[], char pwd[])

{
if (strcmp(num, cnsm.get_num()) == 0 && strcmp(pwd, cnsm.get_passwd()) == 0)
return true;
else
return false;

}

bool ATM::check_passwd2(char pwd[])

{
if (strcmp(pwd, cnsm.get_passwd()) == 0)
return true;
else
return false;

}

void ATM::change_passwd()

{
char pwd[20], repwd[20],ch;
int times = 0,t;
do
{
int i = 0;
do
{
cin.get(ch);
pwd[i++] = ch;
}while (ch != '\n');
   pwd[i - 1] = '\0';
if (!check_passwd2(pwd))
{
times++;
cout << endl << "请输入旧密码:";
cout << endl;
}
else
break;
} while (times <=3);
if (times == 4)
{
lock();
}
do
{
int i = 0;
cout << "请输入新密码:";
cout << endl;
cin >> pwd;
cout << "请再输入一次新密码:";
cout << endl;
cin >> repwd;
if ((t = strcmp(pwd, repwd)) != 0)cout << "你输入的两次密码不一样,请重新输入!" << endl;
} while (t != 0);

cnsm.set_passwd(pwd);
cout << "密码修改成功,请牢记!" << endl;

}

void ATM::fetchmoney()

{
float m;
char ch;
do{
cout << endl << "你要取多少钱:""\n$\\" << endl;
cin >> m;
while (m <= 0)
{
cout << "请输入正确的数字!" << endl; cout << "$ \\ "; cin >> m;
}

if (cnsm.get_money() - m<0)
{
cout << "对不起,你的余额不足!" << endl;
}
else
{
cout << endl << "操作成功,请收好钱!" << endl;
cnsm.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::information()

{
cout << "**********************************" << endl;
cout << "*" << endl;
cout << "* 用户姓名:" << cnsm.get_name() << endl;
cout << "* 卡号: " << cnsm.get_num() << endl;
cout << "* 身份证: " << cnsm.get_nun() << endl;
cout << "* 余额: " << cnsm.get_money() << endl;
cout << "**********************************" << endl;

}

void ATM::functionshow()

{
int n;
do{
cout << endl << "请你输入相应的操作序号进行操作:" << endl; 
cout << "1) 修改密码 " << endl;
cout << "2) 取款 " << endl;
cout << "3) 查询余额 " << endl;
cout << "4) 挂失 " << endl;
cout << "5) 转账" << endl;
cout<< "6) 退出系统" << endl;
cin >> n;
while (n<0 || n>7);
{
if (n<0 || n>7)
{
cout << "请输入正确的操作序号!" << endl;
cin >> n;
}
}
switch (n)
{
case 1:change_passwd();
break;
case 2:fetchmoney(); 
break;
case 3:information();
break;
case 4:guashi(); 
break;
case 5:zhuanzhang();
break;
case 6:exitATM();
break;
}
} while (true);

}

void ATM::guashi()

{
char ch;
cout << "您确定要挂失吗?(Y/N) " << endl;
cin >> ch;
do{
if (ch == 'Y' || ch == 'y')
{

cout << "挂失成功!请您尽快补办新卡!" << endl;
cout << endl << "感谢你对本银行的支持,欢迎下次光临!" << endl;
cout << "请取卡……" << endl;
exit(0);
return;
}
else if (ch == 'n' || ch == 'N')
{
cout << "未挂失!" << endl;
}
else
{
cout << "您输入有误,请从新输入" << endl;
}
} while ((ch =='n'&&ch =='N') || (ch =='Y'&&ch =='y'));

}

void ATM::zhuanzhang()

{
long double zhanghao;

    float money1;

    cout << "请输入您要转账的卡号:" << endl;
cin >> zhanghao;
cout << "请输入您要转账的金额:" << endl;
cin >> money1;
if (cnsm.get_money() >= money1)
{
cnsm.set_money(money1);
cout << "转账成功,您卡上余额为:" << cnsm.get_money() << endl;
}
else
{
cout << "金额超出账户余额,请重新输入转账金额:";
cin >> money1;
cnsm.set_money(money1);
cout << "转账成功,您卡上余额为:" << cnsm.get_money() << endl;
}

}

void ATM::lock()

{
cout << endl << "对不起,由于你的操作有误,你的卡已经被没收! " << endl;
system("pause");
exit(1);

}

void ATM::exitATM()

{
cout << endl << "感谢你对本银行的支持,欢迎下次光临!" << endl;
cout << "请取卡……" << endl;
system("pause");
exit(0);

}

void main()

{
consumer c1("李逸凡", "12345", "440281199609061818", 10000, "123456");
ATM atm(c1);
atm.welcome();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: