⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xuyan.cpp

📁 C++作业 完成一些简单的图形及其输入输出的功能 对于大学本科生做课程设计又很大帮助
💻 CPP
字号:
 //create.h
 #include<string.h>
 #include<stdio.h>
 #include<stdlib.h>
 #include<iostream.h>
 class String//创建一个string类用来拷贝字符串,拷贝构造函数,对象赋值。
 {
  public:
     String():buf(0),length(0){}
     String(const char *s);
     //~String(){}
     //copy constructor
     String(const String &other);
     //Assignment operator
     String &operator=(const String &other);
     void Display()const{cout<<buf;}
  private:
     int length;
     char *buf;
 };

 //family.h
 enum familyClasses{GENERAL,LULL,ENRICH};
 const String gClassName[]={"General","Lull","Enrich"};
 enum familyNation{CHINA,AMERICAN,INDIAN};
 const String gNationName[]={"China","American","Indian"};

 class Condition//创建一个condition类,其成员是公有的,三个家庭都具有的条件
 {
  public:
    double chattel;
    int income;
    int outgiving;
    int houseSize;
    int floor;
  public:
    Condition(){}
    ~Condition(){}
    //return a const pointer to a Condition object
    const Condition *GetCondi(){return this;}
    void SetCondi(double c,int i,int o,int h,int f)
    {chattel=c;
     income=i;
     outgiving=o;
     houseSize=h;
     floor=f;}
 };
 class level//创建一个基类,是个抽象类,将不同的家庭情况赋值
 {private:
     int familyClass,familyNation;
     class String className,nationName;
     class String name;
     class String nation;
     class String furniture;
     class String electronic;
     class String advanced;
     Condition FamilyCondi;
     static int count;
  public:
     level(){InCount();}
     ~level(){DecCount();}
     static void PrintTitle()
	 {cout<<"****************************************************************\n"<<endl;
	  cout<<"            WELCOME TO SEE THIS LIST\n"<<endl;
	  cout<<"  This is list show about some family of different\n"<<endl;
	  cout<<"nation and life level,you can write down your life condition."<<endl;
	  cout<<"****************************************************************\n"<<endl;}
	 static int GetCount(){return count;}
     static void InCount(){count++;}
     static void DecCount(){count--;}
     static void PrintCount();
     void SetFamilyClass(int fc){familyClass=fc;SetClassStr(fc);}
     void SetClassStr(int fc){className=gClassName[fc];}
     void SetFamilyNation(int fn){familyNation=fn;SetClassStr(fn);}
     void SetNationStr(int fn){nationName=gNationName[fn];}
     int GetFamilyClass(){return familyClass;}
     String GetClassName(){return className;}
     int GetFamilyNation(){return familyNation;}
     String GetNationName(){return nationName;}
     void SetName(String nm){name=nm;}
     String GetName(){return name;}
     void SetNation(String nt){nation=nt;}
     String GetNation(){return nation;}
     void SetFurniture(String fne){furniture=fne;}
     String GetFurniture(){return furniture;}
     void SetElectronic(String elc){electronic=elc;}
     String GetElectronic(){return electronic;}
     void SetAdvanced(String adv){advanced=adv;}
     String GetAdvanced(){return advanced;}
     //intialize a Condition object
     void SetCondi(double c,int i,int o,int h,int f){FamilyCondi.SetCondi
     (c,i,o,h,f);}
     //read contents of then familyCondi object
     const Condition*GetCondi(){return (FamilyCondi.GetCondi());}
     virtual void PrintEntry()=0;
     void PrintCondi();
 };
 class Family: public level//是level的派生类,也是下面几个类的基类
 {
  public:
    Family(int fn){SetFamilyNation(fn);}
    void PrintEntry();//虚函数,输出家庭情况
 };
 class General:public Family//family的子类,是一个普通家庭的类
 {
  public:
    General(int fn,String nm):Family(fn)
	   {SetFamilyNation(fn);
	    SetFamilyClass(GENERAL);
	    SetName(nm);}
  void PrintEntry();
 };
 class Lull:public Family//family的子类,描述了小康家庭的情况
 {
  public:
    Lull(int fn,String nm,String elc):Family(fn)
	  {SetFamilyNation(fn);
	   SetFamilyClass(LULL);
	   SetName(nm);
	   SetElectronic(elc);
	   }
     Lull(int fn,String nm):Family(fn)
	   {SetFamilyNation(fn);
	    SetFamilyClass(LULL);
	    SetName(nm); }
     void PrintEntry();
 };
 class Enrich:public Family//family的子类,描述了富裕家庭的状况
 {
  public:
    Enrich(int fn,String nm,String elc):Family(fn)
	  {SetFamilyNation(fn);
	   SetFamilyClass(ENRICH);
	   SetName(nm);
	   SetElectronic(elc);
	  }
    Enrich(int fn,String nm):Family(fn)
	  {SetFamilyNation(fn);
	   SetFamilyClass(ENRICH);
	   SetName(nm);
	  }
    void PrintEntry();
 };


  //create.cpp
 //constructor that take a parameter
 String::String(const char *s)//拷贝字符串
 {
  length=strlen(s);
  buf=new char[length+1];
  strcpy(buf,s);
 }
 //copy constuctor
 String::String(const String &other)//拷贝对象
{
  length=other.length;
  buf=new char[length+1];
  strcpy(buf,other.buf);
 }
 String &String::operator=(const String &other)//用重载运算符给对象赋值
 {
  if(&other==this)
     return *this;
     length=other.length;
     buf=new char[length+1];
     strcpy(buf,other.buf);
     return *this;
 }


 //family.cpp
 int level::count=0;
 void FatalError()
 {
  fprintf(stderr,"A fatal error error has occurred\n");
  exit(1);
 }
 void level::PrintCount()
 {
  cout<<"\nNUMBER OF PLAYERS:"<<level::GetCount()<<"\n";
 };
 void level::PrintCondi()
 {
  const Condition*locCondi=GetCondi();
  cout<<"\nChattel:"<<locCondi->chattel<<"\n";
  cout<<"Income:"<<locCondi->income<<"\n";
  cout<<"Outgiving:"<<locCondi->outgiving<<"\n";
  cout<<"HouseSize:"<<locCondi->houseSize<<"\n";
  cout<<"Floor:"<<locCondi->floor<<"\n";
 }
 void Family::PrintEntry()
 {
 // const Condition*locCondi=GetCondi();
  cout<<"\nNAME:";
  (this->GetName()).Display();
  cout<<"\nNation:";
  (this->GetNationName()).Display();
  cout<<"\nClass:";
  (this->GetClassName()).Display();
 }
 void General::PrintEntry()//输出普通家庭的情况
 {
  //const Condition*locCondi=GetCondi();
  Family::PrintEntry();
  cout<<"\nFurniture:";
  (this->GetFurniture()).Display();
  cout<<"\nElectronic:";
  (this->GetElectronic()).Display();
  PrintCondi();
 }
 void Lull::PrintEntry()//输出小康家庭的生活情况
 {
  //const Condition*locCondi=GetCondi();
  Family::PrintEntry();
  cout<<"Furniture:";
  (this->GetFurniture()).Display();
  cout<<"Electronic:";
  (this->GetElectronic()).Display();
  cout<<"Advanced:";
  (this->GetAdvanced()).Display();
  PrintCondi();
 }
 void Enrich::PrintEntry()//输出富裕家庭的情况
 {
  //const Condition*locCondi=GetCondi();
  Family::PrintEntry();
  cout<<"\nFurniture:";
  (this->GetFurniture()).Display();
  cout<<"\nElectronic:\n";
  (this->GetElectronic()).Display();
  cout<<"\nAdvanced:";
  (this->GetAdvanced()).Display();
  PrintCondi();
 }
 //main.cpp
 int main()
 {
  Family*familyPtr[3];//定义一个基类的指针,给不同子类赋值
  familyPtr[0]=new General(INDIAN,"Lilio");
  familyPtr[0]->SetCondi(50000,1500,800,50,2);
  familyPtr[0]->SetFurniture("chair,counter");
  familyPtr[0]->SetElectronic("Radio");
  familyPtr[1]=new Lull(CHINA,"LaoGao");
  familyPtr[1]->SetCondi(100000,3000,1500,100,4);
  familyPtr[1]->SetFurniture("sofa");
  familyPtr[1]->SetElectronic("TV");
  familyPtr[2]=new Enrich(AMERICAN,"Smiths","Radio and TV");
  familyPtr[2]->SetCondi(2000000,5000,3000,300,6);
  familyPtr[2]->SetFurniture("advanced soft");
  familyPtr[2]->SetAdvanced("Garden car");
  Family::PrintTitle();
  level::PrintCount();
  int n;
  for(n=0;;n++)
  {cout<<"if you want to know the condition of General family,please input 0:"<<endl;

  cout<<"if you want to know the lull family'scondition ,input 1:"<<endl;
  cout<<"or you want to know the Enrich family,input 2:"<<endl;
  cout<<"if you want to quit ,input any key except 0-2:"<<endl;

   cin>>n;
     familyPtr[n]->PrintEntry(); }

      return 0;
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -