Slxxxx 2021-06-29 11:26 采纳率: 100%
浏览 53
已采纳

C++继承题,要代码ballball了

创建一个名为Person的类,该类包含以下数据:Lastname、Eirstname、Address、City、State、Zip、Phone

创建第二个名为Customer的类,该类继承Person并包含以下数据:

o可以设置的唯一字符串值。如果在创建客户时未提供,则应自动生成。)

o电子邮件地址

List(一个布尔变量,指示它们是否是邮件列表的成员)

所有的顾客都是人,但人不一定是顾客。

为这两个类编写所有适当的构造函数、访问器和mutator函数。

所有类都必须有一个空构造函数、各种各样的构造函数排列(根据需要)以及任何必要的析构函数。

创建一个名为Customer的文本文件。txt,文件的每一行都包含

个人客户的信息。各个字段应该用逗号分隔,并且您应该用至少20条记录填充文档。

使用文件流从文件中读取数据,将每行的数据存储到Customer类的单个实例中。

存储在动态分配的数组中创建的客户类的每个实例。换句话说,您应该有一个动态分配的数组,其中包含Customer类的所有实例。客户中的每一行数据都应该有一个客户类实例。txt文件。

将数组传递给函数,以便在格式良好的表中打印出所有客户信息。

  • 写回答

2条回答 默认 最新

  • qfl_sdu 2021-06-29 23:53
    关注

    Customer.txt内容如下

    1000000001,1,Zhang,San,Xingfudajie 4-21,New York,Youta,aaa,123456789
    1000000002,1,Zhou,San,Xingfudajie 5-21,New York,Youta,aaa,223456789
    1000000003,1,Wu,San,Xingfudajie 6-21,New York,Youta,aaa,323456789
    1000000004,1,Zheng,San,Xingfudajie 7-21,New York,Youta,aaa,423456789
    1000000005,1,Wang,San,Xingfudajie 8-21,New York,Youta,aaa,523456789
    1000000006,1,Liu,San,Xingfudajie 4-44,New York,Youta,aaa,623456789
    1000000007,1,Tang,San,Xingfudajie 4-23,New York,Youta,aaa,723456789
    1000000008,1,Han,San,Xingfudajie 4-18,New York,Youta,aaa,823456789
    1000000009,1,Dong,San,Xingfudajie 3-22,New York,Youta,aaa,923456789
    1000000010,1,Gao,Yi,Xingfudajie 7-21,New York,Youta,aaa,103456789
    1000000011,1,Gao,Yang,Xingfudajie 7-21,New York,Youta,aaa,103456789
    1000000012,1,Gao,Hao,Xingfudajie 7-21,New York,Youta,aaa,103456789
    1000000013,1,Gao,Tian,Xingfudajie 7-21,New York,Youta,aaa,103456789
    1000000014,1,Gao,Xiang,Xingfudajie 7-21,New York,Youta,aaa,103456789
    1000000015,1,Gao,Mei,Xingfudajie 7-21,New York,Youta,aaa,103456789
    1000000016,1,Gao,Li,Xingfudajie 7-21,New York,Youta,aaa,103456789
    1000000017,1,Gao,Huan,Xingfudajie 7-21,New York,Youta,aaa,103456789
    1000000018,1,Gao,Juan,Xingfudajie 7-21,New York,Youta,aaa,103456789
    1000000019,1,Gao,Ya,Xingfudajie 7-21,New York,Youta,aaa,103456789
    1000000020,1,Gao,Song,Xingfudajie 7-21,New York,Youta,aaa,103456789
    

    代码如下:

    #include <iostream>
    #include <string>
    #include <fstream>
    #include <time.h>
    using namespace std;
    
    class People
    {
    private:
        string Lastname;
        string Firstname;
        string Address;
        string City;
        string State;
        string Zip;
        string Phone;
    public:
        People(){}
        People(string ln,string fn,string addr, string ct,string state,string zip,string phone)
        {
            Lastname = ln;
            Firstname = fn;
            Address = addr;
            City = ct;
            State = state;
            Zip = zip;
            Phone = phone;
        }
        ~People(){}
        //setter
        void setLastName(string ln){Lastname = ln;}
        void setFirstName(string fn){Firstname = fn;}
        void setAddress(string a){Address = a;}
        void setCity(string ct){City = ct;}
        void setState(string st){State = st;}
        void setZip(string zip){Zip = zip;}
        void setPhone(string ph){Phone = ph;}
    
        //getter
        string getLastName(){return Lastname;}
        string getFirstName(){return Firstname;}
        string getAddress(){return Address;}
        string getCity(){return City;}
        string getState(){return State;}
        string getZip(){return Zip;}
        string getPhone(){return Phone;}
    };
    
    class Customer : public People
    {
    private:
        string CustomerNmb;
        bool MailList;
    public:
        Customer(){}
        Customer(string ln,string fn,string addr, string ct,string state,string zip,string phone,string nmb,bool b):People(ln,fn,addr,ct,state,zip,phone)
        {
            CustomerNmb = nmb;
            MailList = b;
        }
        ~Customer(){}
        //setter
        void setCustomNmb(string nmb){CustomerNmb = nmb;}
        void setMailList(bool b){MailList = b;}
        //getter
        string getCustomNmb()
        {
            if (CustomerNmb.empty())
            {
                //自动生成一个Custom Number
                char buf[11]={0};
                srand((unsigned int)time(0));
                for (int i = 0;i<10;i++)
                {
                    buf[i] = '0'+ rand()%10;
                }
                CustomerNmb = buf;
            }
            return CustomerNmb;
        }
        bool getMailist(){return MailList;}
    
        friend istream & operator>>(istream &is,Customer &c)
        {
            char buf[200] = {0};
            is.getline(buf,200);//读入一行数据
            string s = buf;
            int startpos = s.find(",",0);
            if(startpos < 0) return is;
            //第一个元素Custom nmb
            c.setCustomNmb(s.substr(0,startpos));
    
            //第二个元素是否在列表中
            int endpos = s.find(",",startpos+1);
            if(endpos < 0) return is;
            startpos +=1;
            string blist = s.substr(startpos,endpos - startpos);
            startpos = endpos;
            if (blist.compare("1")==0)
                c.setMailList(true);
            else
                c.setMailList(false);
    
            //第三个元素Lastname
            endpos = s.find(",",startpos+1);
            if(endpos < 0) return is;
            startpos +=1;
            c.setLastName(s.substr(startpos,endpos - startpos));
            startpos = endpos;
    
            //第四个元素
            endpos = s.find(",",startpos+1);
            if(endpos < 0) return is;
            startpos +=1;
            c.setFirstName(s.substr(startpos,endpos - startpos));
            startpos = endpos;
    
            //第五个元素address
            endpos = s.find(",",startpos+1);
            if(endpos < 0) return is;
            startpos +=1;
            c.setAddress(s.substr(startpos,endpos - startpos));
            startpos = endpos;
    
            //第六个元素city
            endpos = s.find(",",startpos+1);
            if(endpos < 0) return is;
            startpos +=1;
            c.setCity(s.substr(startpos,endpos - startpos));
            startpos = endpos;
    
            //第七个元素state
            endpos = s.find(",",startpos+1);
            if(endpos < 0) return is;
            c.setState( s.substr(startpos,endpos - startpos));
            startpos = endpos;
    
            //第八个元素zip
            endpos = s.find(",",startpos+1);
            if(endpos < 0) return is;
            startpos +=1;
            c.setZip(s.substr(startpos,endpos - startpos));
            startpos = endpos;
            
            //第9个元素phone
            startpos +=1;
            endpos = s.length();
            if(endpos < 0) return is;
            c.setPhone(s.substr(startpos,endpos - startpos));
    
            return is;
        }
    
        void display()
        {
            cout << CustomerNmb << "," << MailList << "," << getLastName() <<","<<getFirstName()<< ",";
            cout << getAddress()<<"," << getCity() << "," << getState()<<"," << getZip() << "," << getPhone() << endl; 
        }
    };
    //读文件
    Customer* ReadFile(const char* name,int &nmb)
    {
        int size= 40;
        nmb = 0;
        Customer* a = new Customer[size]; //申请40个空间
        ifstream is(name);
        if (!is.is_open())
        {
            cout << "文件打开失败" << endl;
            return 0;
        }
        while(!is.eof())
        {
            Customer cus;
            is >> cus;
            if(nmb >= size)
            {
                size = size * 2;
                Customer* pt = new Customer[size];
                for (int i=0;i< nmb;i++)
                {
                    pt[i] = a[i];
                }
                delete[] a;
                a = pt;
            }
            a[nmb++] = cus;
        }
        is.close();
        return a;
    }
    
    
    
    int main()
    {
        int nmb = 0;
        Customer* pp = 0;
        pp = ReadFile("Customer.txt",nmb);  //读取文件
        for (int i = 0; i< nmb;i++)
        {
            pp[i].display();
        }
    
        delete[] pp;
        pp = 0;
        system("pause");
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败