C++实例会员管理程序

2022-11-30 16:47:01 浏览数 (2)

设计快捷店会员的简单管理程序。基本要求如下: (1)定义人民币RMB类,实现人民币的基本运算和显示。 (2)定义会员member类,表示会员的基本信息,包括:编号(按建立会员的顺序自动生成),姓名,密码,电话。提供输入、输出信息等功能。 (3)由RMB类和member类共同派生一个会员卡memberCar类,提供新建会员、充值、消费和查询余额等功能。 (4)main函数定义一个memberCar类数组或链表,保存会员卡,模拟一个快捷店的会员卡管理功能,主要包括: ① 新建会员; ② 已有会员充值; ③ 已有会员消费(凭密码,不能透支); ④ 输出快捷店当前会员数,营业额(收、支情况)。

代码:

代码语言:javascript复制
#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;
}

运行结果:

0 人点赞