课程设计
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();
}
#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();
}
相关文章推荐
- 前端知识汇总【转】
- ubuntu15.04 vnc安装
- 粒子群算法 MATLAB
- OFBIZ框架的精确查找和模糊查找
- C#运算符重载用法实例分析
- 欢迎使用CSDN-markdown编辑器
- 手机定位原理
- CANopen学习笔记
- MySQL导入sql脚本错误:2006 解决方法
- Haskell之Yesod开发–边踩坑边开发(4.1)
- 解决问题E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录
- 算法练习:两指针之三色排序
- centos 防火墙规则开放22 80 ,8080
- 【数据库】(一)Oracle数据库重启+开启监听
- redis和redis-Java客户端的设计思路
- 纯UILabel实现文字的竖排显示
- Nginx负载均衡
- 继承UILabel类实现Label竖直对齐
- 【正则表达式】正则表达式
- Android-68-Tomcat各种启动错误的解决办法,如:Exception in thread "Thread-6" NoClassDefFoundError,Document base E:\