您的位置:首页 > 编程语言 > C语言/C++

C++ 面向对象—类继承(酒店会员管理系统)

2017-05-30 14:03 501 查看
#include<iostream>
#include<string>
#include<vector>
using namespace std;
class RMB
{
friend ostream &operator<<(ostream &output, RMB &m);
public:
RMB(double m=0)
{
this->money = m;
}
double Add(double m)
{
return this->money + m;
}
double Reduce(double m)
{
return this->money - m;
}
void Print()
{
cout << money << "元" << endl;
cout <<"人民币:"<< *this << endl; // 人民币大写输出
}
protected:
int yuan;
int jiao;
int fen;
double money;
};
ostream &operator<<(ostream &output, RMB &m)
{
int t = int(m.money * 100);
m.yuan = t / 100;
m.jiao = (t % 100) / 10;
m.fen = t % 10;
output << m.yuan << "元" << m.jiao << "角" << m.fen << "分" << endl;
return output;
}

class Member
{
public:
Member(int number1=0,string name1=" ", string tel1=" ", string code1 = "000000")
{
this->number = number1;
this->name = name1;
this->code = code1;
this->tel = tel1;
}
void Input()
{
string name;
string code;
string tel;
cout << "请输入姓名:";
cin >> name;
this->name = name;
cout << "请设置密码:";
cin >> code;
this->code = code;
cout << "请输入电话:";
cin >> tel;
this->tel = tel;
}
void PrintInfo()
{
cout << "会员:" << this->number << "信息如下:" << endl;
cout << "编号:" << this->number << endl;
cout << "姓名:" << this->name << endl;
cout << "电话:" << this->tel<<endl;
}
protected:
int number;
string name;
string code;
string tel;
};

class MemberCar :public RMB, public Member
{
static int num;  //静态变量记录会员编号
public:
MemberCar(double m=0, int number1 = 0,string name1=" ", string tel1=" ", string code1 = "000000") :RMB(m), Member(number1,name1,code1,tel1)
{
num++;
Input();
this->number = num;
this->flag = true;
cout << "新会员创建成功!编号为:" << num << endl;
}
void ChongZhi()
{
double m;
cout << "请输入充值金额:";
cin >> m;
this->money = this->Add(m);
cout << "会员充值成功!金额为:" << m << endl;
}
void XiaoFei()
{
double m;
cout << "请输入消费金额:";
cin >> m;
string mima;
cout << "请输入密码:";
cin >> mima;
for (int i = 0; i<3; i++) //限制密码输入错误3次
{
if (this->code == mima && this->money >= m && this->flag == true)
{
this->money = this->Reduce(m);
cout << "本次消费:" << m << endl;
cout << "账户余额:" << this->money << endl;
break;
}
else if (this->code == mima && this->money<m && this->flag == true)
{
cout << "余额不足,请充值!" << endl;
break;
}
else
{
if (i == 2)
{
cout << "密码错误次数超过限制,账户已锁定,请联系管理人员修改密码!" << endl;
this->flag = false;
break;
}
else
{
cout << "密码输入错误,请重新输入:";
cin >> mima;
continue;
}
}
}
}
void ChaXun()
{
this->Member::PrintInfo();
cout << "会员余额:";
this->RMB::Print();
}
void ChangeCode()
{
cout << "请输入新密码:";
string mima1;
cin >> mima1;
cout << "请再次输入新密码:";
string mima2;
cin >> mima2;
if (mima1 == mima2)
{
this->code = mima1;
this->flag = true;
cout << "密码修改成功!" << endl;
}
else
{
cout << "两次密码输入不一致!" << endl;
}
}
static int GetNum()
{
return MemberCar::num;
}
private:
bool flag;  // 会员账户是否处于错定状态标识
};
int MemberCar::num = 0;
int main()
{
cout << "欢迎使用会员卡管理系统!" << endl;
cout << "1.会员创建\t 2.会员充值\t 3.会员消费\t 4.会员查询\t 5.密码重置\t 6.查询会员总数" << endl;
int choice;
char stop = ' ';
int number;
int num = 0;
vector<MemberCar>v;  // 存放会员
do {
cout << "请输入操作选项:";
cin >> choice;
switch(choice)
{
case 1:
{
MemberCar vip;//会员创建
v.push_back(vip);
num++;
break;
}
case 2:
{
cout << "请输入会员编号:";//会员充值
cin >> number;
if (number <= num)
{
v[number - 1].ChongZhi();
break;
}
else
{
cout << "此会员未创建,请重新重新输入!"<<endl;
continue;
}
}
case 3:
{
cout << "请输入会员编号:";//会员消费
cin >> number;
if (number <= num)
{
v[number - 1].XiaoFei();
break;
}
else
{
cout << "此会员未创建,请重新重新输入!" << endl;
continue;
}
}
case 4:
{
cout << "请输入会员编号:";//会员查询
cin >> number;
if (number <= num)
{
v[number - 1].ChaXun();
break;
}
else
{
cout << "此会员未创建,请重新重新输入!" << endl;
continue;
}
}
case 5:
{
cout << "请输入会员编号:";//密码修改
cin >> number;
if (number <= num)
{
v[number - 1].ChangeCode();
break;
}
else
{
cout << "此会员未创建,请重新重新输入!" << endl;
continue;
}
}
case 6:
{
cout << "会员总数:" << MemberCar::GetNum() << endl;
}
}
cout << "是否继续?(Y||N):";
cin >> stop;
} while (stop == 'Y' || stop == 'y'); // 交互式操作
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++