有关c++的问题!(十万火急)

来源:百度知道 编辑:UC知道 时间:2024/05/16 16:11:50
我准备写个学生信息管理的程序,可以实现查找,添加,打印的功能
在调试时无误,在运行时出现"非法执行",希望大家帮我改一下!!!!
QQ:419979711!!!!
#include<iostream>
#include<string>
using namespace std;

class Student // 类声明
{private:
string name;
char sex;
string adress;
long int number;

public:
friend void find2(string name1,Student *p);
friend void find1(long int num,Student *p);
friend Student* insert(Student *p);
friend void putout(Student *p);
Student *next;

void output()//输出
{cout<<name<<sex<<number<<adress<<endl;}

void compare(string name1)//姓名比较
{if(name==name1)
cout<<name<<sex<<number<<adress<<endl;
}

void compare2(long int num)//学号比较
{if(number==num)
cout<<name<<sex<<number<<adress<<endl;
}

void enter()//输入
{cin>>name>>sex>>

void find2(string name1,Student *p)//姓名查找函数
{
for(;p->next!=NULL;p=p->next)
{
p->compare(name1);
// if(p->next=NULL) cout<<"无此人!"<<endl;
}
}
find2函数修改如上,if语句中=是赋值,所以p->next=NULL,再循环就非法操作了,用==,但是无作用,因为p->next=NULL时,已经跳出循环了.

main函数中的//t=(Student *)malloc(sizeof(Student)); 修改成t=new Student;
再Student类中加缺省构造函数Student(){};

main函数中一段语句可以改为如下:
for(i=0;i<3;i++)
stu[i].next=&stu[i+1];
//stu[i-1].next=NULL;
stu[3].next=NULL;

提醒一下:字符串比较应该用strcmp函数吧