鱼C论坛

 找回密码
 立即注册
查看: 1870|回复: 2

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

[复制链接]
发表于 2014-6-16 18:29:26 | 显示全部楼层 |阅读模式
1鱼币
#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[strlen(s)+1];
     strcpy(name,s);
     age=a;
     sex=new char[strlen(b)+1];
     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[strlen(d)+1];
     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[strlen(f)+1];
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[strlen(d)+1];
strcpy(spec,d);  
course=new char[strlen(f)+1];
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[10],c_sex[5],c_spec[20];
   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[10],c_sex[5],c_course[20];
   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[10],c_sex[5],c_spec[8],c_course[20];
       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[10];
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[10];
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);
}  

















         



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-16 19:15:52 | 显示全部楼层
你这是没有贴好么,main函数内括号都不匹配...恩,最好可以把报错的信息截个图出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-6-20 10:51:34 | 显示全部楼层
我表示非常难看,即使复制还得自己修改才能美观一点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 13:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表