首页 > 编程语言 >C++实例会员管理程序

C++实例会员管理程序

时间:2022-11-20 10:32:28浏览次数:41  
标签:head cout 管理程序 int C++ 实例 output input memberCar

设计快捷店会员的简单管理程序。基本要求如下:

(1)定义人民币RMB类,实现人民币的基本运算和显示。

(2)定义会员member类,表示会员的基本信息,包括:编号(按建立会员的顺序自动生成),姓名,密码,电话。提供输入、输出信息等功能。

(3)由RMB类和member类共同派生一个会员卡memberCar类,提供新建会员、充值、消费和查询余额等功能。

(4)main函数定义一个memberCar类数组或链表,保存会员卡,模拟一个快捷店的会员卡管理功能,主要包括:

① 新建会员;

② 已有会员充值;

③ 已有会员消费(凭密码,不能透支);

④ 输出快捷店当前会员数,营业额(收、支情况)。


代码:

#include<iostream>
#include<String.h>
using namespace std;
class RMB{
int yuan,jiao,fen;
public:
RMB(int y=0,int j=0,int f=0){
yuan=y;
jiao=j;
fen=f;
}
RMB(double x)
{
int n = int((x + 0.005) * 100);
yuan = n / 100;
jiao = (n - yuan * 100) / 10;
fen = n % 10;
}
operator double()
{
return (yuan + jiao * 0.1 + fen * 0.01);
}
~RMB() {}
friend ostream & operator<<(ostream&output, const RMB&m){
output << m.yuan << "元" << m.jiao << "角" << m.fen << "分" << endl;
return output;
}
friend istream & operator>>(istream&input, RMB&m){
cout << "元:";
input >> m.yuan;
cout << "角:";
input >> m.jiao;
cout << "分:";
input >> m.fen;
return input;
}
};
class member{
public:
static int number;
char name[20],code[10], phoneNumber[12];
static int bianhao() { number++; return number; }
member(char*a,char*c,char*p){
strcpy(name,a);
strcpy(code,c);
strcpy(phoneNumber,p);
}
~member() {}
friend istream&operator>>(istream&input, member&A)
{
cout << "please input name: " << endl;
input >> A.name;
cout << "please input code: " << endl;
input >> A.code;
cout << "please input phone number : " << endl;
input >> A.phoneNumber;
return input;
}
friend ostream&operator<<(ostream&output, member&A)
{
output << "the information of member:" << endl;
output << "number" << '\t' << "name" << '\t' << "phone" << endl;
output << A.bianhao() << '\t' << A.name << '\t' << A.phoneNumber << endl;
return output;
}
};
int member::number=0;
class memberCar:public RMB,public member{
public:
RMB income, outcome, balance;
memberCar*next;
memberCar(char*a, char*c, char*p):member(a,c,p){
balance = 0;
income = 0;
outcome = 0;
}
~memberCar() {}
friend ostream&operator<<(ostream&output, const memberCar&A)
{
output << "the information of member:" << endl;
output << "number" << '\t' << "name" << '\t' << "phone" << '\t' << '\t' << "balance" << endl;
output << A.bianhao() << '\t' << A.name << '\t' << A.phoneNumber << '\t' << A.balance << endl;
return output;
}
void recharge()
{
cout << "How much do you want to recharge?" << '\n' << "please input the money : " << endl;
cin >> income;
balance =balance + income;
cout << "your balance : " << balance << endl;
}
void cost()
{
char y[10];
cout << "please input your code : " << endl;
cin >> y;
if (strncmp(code, y, 10)==0)
{
cout << "please input the money you cost : " << endl;
cin >> outcome;
if (outcome > balance)
{
cout << "your balance is not enough ! " << endl;
}
else
{
balance = balance - outcome;
cout << "your balance : "<< balance;
}
}
else
{
cout << "your code is wrong ! " << endl;
}
}
void query(){ cout << "your balance : " << balance; }
};
void AddFront(memberCar*&h, memberCar*&t)
{
t->next = h;
h = t;
}
void FindList(memberCar*head, int n = 2)
{
char s[20];
cout << "please input your name : " << endl;
cin >> s;
while (head)
{
if (strncmp(head->name, s, 20) == 0) {
switch (n)
{
case 2:
(*head).recharge();
break;
case 3:
(*head).cost();
break;
}
}
head = head->next;
}
}
void ShowList(memberCar*head)
{
int count = 0;
RMB I=0, O=0;
while (head)
{
count++;
I=I+head->income;
O = O + head->outcome;
head = head->next;
}
cout << "the number of member : " << count << endl;
cout << "the income of the store : " << I << endl;
cout << "the outcome of the store : " << O << endl;
cout << "turn-over of the store : " << (I - O) << endl;
}

int main()
{
int choice;
memberCar*head = NULL, *p;
do
{
cout << "please choice:\n";
cout << "1 : new member, 2 : recharge, 3 : purchase , 4 :output the number of member and turn-over,other number is over! " << endl;
cin >> choice;
switch (choice)
{
case 1:
{
cout << "input information of new member : " << endl;
char a[20],c[10],h[12];
cout << "please input name: " << endl;
cin>>a;
cout << "please input code: " << endl;
cin>>c;
cout << "please input phone number : " << endl;
cin>>h;
p = new memberCar(a, c, h);
AddFront(head, p);
cout << *p << endl;
break;
}
case 2:
{
FindList(head, 2);
break;
}
case 3:
{
FindList(head, 3);
break;
}
case 4:
{
ShowList(head);
break;
}
}
} while (choice);
return 0;
}

运行结果:

C++实例会员管理程序_基本运算

标签:head,cout,管理程序,int,C++,实例,output,input,memberCar
From: https://blog.51cto.com/u_14682436/5871295

相关文章

  • C++ 类的项目练习 定义一个类,来表示某模拟养成游戏中人物: 每个人物, 有昵称,年龄,性别,
    Hero.h:#pragmaonce#include<iostream>#include<string>#include<vector>#include<sstream>usingnamespacestd;typedefenumgender{Man,//男W......
  • C++机票购买系统
    C++机票购买系统机票购买系统该系统有两类用户,会员(多名)和管理员(1名)。其中,会员功能包括:1、首先注册并录入个人信息,包括:用户名,密码,生日,邮箱。注册后,自动设置会员编号。2......
  • [排序算法] 堆排序 (C++)
    堆排序解释什么是堆堆heap是一种近似完全二叉树的数据结构,其满足一下两个性质1.堆中某个结点的值总是不大于(或不小于)其父结点的值;2.堆总是一棵完全二叉树将根......
  • C++ STL简介
     vector,变长数组,倍增的思想size()返回元素个数empty()返回是否为空clear()清空front()/back()push_back()/pop_back()begin()/en......
  • [排序算法] 树形选择排序 (C++)
    树形选择排序解释树形选择排序又称为锦标赛排序,其实理解起来很简单。......
  • [排序算法] 希尔排序 (C++)
    前言本文章是建立在插入排序的基础上写的喔,如果有对插入排序还有不懂的童鞋,可以看看这里。❤❤❤直接/折半插入排序2路插入排序❤❤❤希尔排序解释希尔排序Shell......
  • C++11中using的用法学习
    转自:https://blog.csdn.net/shift_wwx/article/details/787424591.命名空间usingnamespacestd;//最常见的用法2.在子类中引入基类的成员当private继承时,可以通过usin......
  • c++友元类2
    #include<iostream>#include<cmath>usingnamespacestd;classPoint{private: doublex,y; friendclassLine;public: Point(doublei=0,doublej=0) { x=i; y=j; }......
  • c++友元类
    #include<iostream>usingnamespacestd;classmyComplex//复数类{private: doublereal,imag;public: myComplex(); myComplex(doubler,doublei); friendclassope......
  • C++初阶(封装+多态--整理的自认为很详细)
    继承概念:继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程......