忍者1314 发表于 2014-6-16 18:29:26

请大神帮忙看看问题在哪,并且改下好吗?

#include<iostream.h>
#include<string>
#include<process.h>
//
class person
{
      friend class list;
      protected:
      char *name;
      int age;
      char *sex;
      int number;
      person* temp;
      person* next;
public:
   person( char *s,int a,char *b, int c);
   void add_node();
   virtual ~person();
   virtual void display(void)=0;
};   
class student:public person
{
protected:
    char *spec;

public:
   student( char *s,int a,char *b,int c,char *d);
   void add_node();
   ~student();
   void display(void);
};
//
class teacher:public person
{
protected:
char *course;

public:
    teacher( char *s,int a,char *b,int c,char *f);
   void add_node();
   ~teacher();
   void display(void);
};
class jiaofu:public student,public teacher{
protected:
        char *spec;
        char *course;
public:
   jiaofu(char *s,int a,char *b,int c,char *d ,char *f);

void add_node();
   ~jiaofu();
   void display(void);
};
//   
class list
{      
protected:
person* head;
public:
list(person *p=NULL);
~list();
   void insert();
   void del();   
   void ser();
   void display();
};
person::person( char *s,int a,char *b, int c)
{
name=new char;
   strcpy(name,s);
   age=a;
   sex=new char;
   strcpy(sex,b);
   number=c;
}
void person::add_node(){}
person::~person()
{
delete []name;
   delete []sex;
}
//
student::student( char *s,int a,char *b,int c,char *d):person(s,a,b,c)
{
spec=new char;
   strcpy(spec,d);
}
void student::add_node()
{
temp=new student(name,age,sex,number,spec);
}
void student::display(void)
{   
cout<<"姓名:"<<name<<"\t 年龄:"<<age<<"\t 性别:"<<sex<<endl;
cout<<"学号:"<<number<<"\t 专业:"<<spec<<endl;
}
student::~student()
{
delete []spec;
}
//
teacher::teacher( char *s,int a,char *b,int c,char *f):person(s,a,b,c)
{
course=new char;
strcpy(course,f);
}
void teacher::add_node()
{
temp=new teacher(name,age,sex,number,course);
}
teacher::~teacher()
{
delete []course;
}
void teacher::display()
{
cout<<"姓名:"<<name<<"\t 年龄:"<<age<<"\t 性别:"<<sex<<endl;
cout<<"教师号:"<<number<<"\t 主讲课程:"<<course<<endl;
}
//
jiaofu::jiaofu( char *s,int a,char *b,int c,char *d,char *f):person(s,a,b,c),student(d),teacher(f)
{
spec=new char;
strcpy(spec,d);
course=new char;
strcpy(course,f);   
}
void jiaofu::add_node()
{
temp=new jiaofu(name,age,sex,number,spec,course);
}
jiaofu::~jiaofu()
{
delete[]spec;
delete []course;
}
void jiaofu::display()
{
cout<<"姓名"<<name<< 年龄"<<age<< 性别"<< sex <<endl;
cout<<"教师号"<<number<< "专业"<<spec<< "主讲课程"<<course<<endl;
}
//
list::list(person *p)
{
head=p;
}
list::~list()
{
}
//***********************************************************************************************************************************************

void list::insert()                  //插入函数
{
person *p;                              //指向要插入对象的指针   
int i;
   cout<<"你是想输/插入1<学生>,2<教师>,3<教辅人员>,"<<endl<<"请输入:";
cin>>i;
   if(i==1)
   {
   char c_name,c_sex,c_spec;
   int c_age,c_number,c_credit;
   cout<<" 名字: "; cin>>c_name;
   cout<<" 年龄: "; cin>>c_age;
   cout<<" 性别: "; cin>>c_sex;
   cout<<" 学号: "; cin>>c_number;
   cout<<" 专业: "; cin>>c_spec;
   p=new student(c_name,c_age,c_sex,c_number,c_spec);
   }
   else if(i==2)
   {
   char c_name,c_sex,c_course;
   int c_age,c_number,c_salary;
       cout<<" 名字: "; cin>>c_name;
       cout<<" 年龄: "; cin>>c_age;
       cout<<" 性别: "; cin>>c_sex;
       cout<<" 教师号: "; cin>>c_number;
       cout<<" 主讲课程: "; cin>>c_course;
       p=new teacher(c_name,c_age,c_sex,c_number,c_course);
   }
   else if(i==3)
   {

           char c_name,c_sex,c_spec,c_course;
       int c_age,c_number;
       cout<<" 名字: "; cin>>c_name;
       cout<<" 年龄: "; cin>>c_age;
       cout<<" 性别: "; cin>>c_sex;
       cout<<" 教师号: "; cin>>c_number;
           cout<<"专业 :";cin>>c_spec;
       cout<<" 主讲课程: "; cin>>c_course;
       p=new jiaofu(c_name,c_age,c_sex,c_number,c_spec,c_course );
   }
   else
   {
   cout<<"你的输入不正确, 请重新输入: ";
   }
   char ch;
   cout<<"是否要插入此人员信息(是<Y> / 否<N>)?"<<endl<<" 请输入: ";
   cin>>ch;
   if(ch=='Y')
   {
   p->add_node(); //用链表插入要添加等信息。
       p->temp->next;
       head=p->temp;
   cout<<"你想要插入的信息已经被插入!"<<endl;
   }
   else
   cout<<"刚才的信息没有插入!";
}
//***********************************************************************
void list::del()
{
char p;
cout<<"请输入你想删除的人员的名字:";
cin>>p;
person *curr=head;                           //指向当前的指针
while(curr!=NULL)                           //在遍历过程中寻找删除的对象
{
if(strcmp(curr->name,p)==0)
{
curr->display();
char ch;
cout<<"是否是你要删除的人(是<Y>/否<N>)?"<<endl<<"       请输入:";
cin>>ch;
if(ch=='Y')
{
break;
}
else cout<<"上述信息不是你想要删除的!"<<endl;
curr=curr->next;
}
else
cout<<"你要删除的信息不存在!";
}
}

//************************************************************************

void list::ser()                        //查找某个人员的信息
{
char p;
cout<<"请输入您要查找的人员名字: ";
cin>>p;
   int flag=0;
   person *curr=head;//指向当前的指针
   while(curr!=NULL)
   {
   if(strcmp(curr->name,p)==0)               //判断是否和当前指针对应对象相同
   {
   curr->display();
   char ch;
   cout<<"是否是你所想要查找的人(是<Y>/否<N>)?"<<endl<<"       请输入: ";
   cin>>ch;
   if(ch=='Y')
   {
   flag=1;
   cout<<"你所想要查找的人员信息为:"<<endl;
   curr->display();
   break;
   }
   else
   {
   cout<<"你所想要查找的人员"<<p<<"不存在!"<<endl;
   cout<<"请你重新输入: ";
   goto D;
   }
   }
   else
   cout<<"你要查找的信息不存在 !";
   }
}
//********************************************************
void list::display()
{
int i=1;
person *curr=head;
if(curr==NULL)
cout<<"暂无任何人员信息!"<<endl;
else
while(curr!=NULL)
{
cout<<"NO"<<i<<endl;
curr->display();
curr=curr->next;
i++;
}
}
//*********************************************************

int main()
{
list l;
int i;

{
cout<<"\n\n\t*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl;
cout<<"\t*            欢迎进入高校人员信息管理系统                     *"<<endl;
   cout<<"\t*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl;
   cout<<"\t*                  1.输入人员信息                                 *"<<endl;
   cout<<"\t*                  2.删除人员信息                                 *"<<endl;
   cout<<"\t*                  3.按姓名查询人员信息                           *"<<endl;
   cout<<"\t*                  4.显示人员信息                                 *"<<endl;
   cout<<"\t*                  0.退出                                       *"<<endl;
   cout<<"\t*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*"<<endl;
}
cout<<"\t请输入您的选择<0--4>: ";
   cin>>i; //输入指令
system("cls");
   switch(i)
{
   case 1: system("cls");l.insert();break;
   case 2: system("cls");l.del();break;
   case 3: system("cls");l.ser();break;
   case 4: system("cls");l.display();break;
   case 0: system("cls");cout<<"\t\t\t   谢谢您使用本系统 欢迎下次再次使用!"<<endl;break;
   default: cout<<"对不起,您的输入不正确!";
}while(i!='0');
return(0);
}

















       



elvo 发表于 2014-6-16 19:15:52

你这是没有贴好么,main函数内括号都不匹配...恩,最好可以把报错的信息截个图出来

Mikel 发表于 2014-6-20 10:51:34

我表示非常难看,即使复制还得自己修改才能美观一点
页: [1]
查看完整版本: 请大神帮忙看看问题在哪,并且改下好吗?