首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

,大姐过来帮帮忙,小弟的程序出有关问题了,还要交作业里,多谢了,回!

2012-06-07 
各位大哥,大姐过来帮帮忙,小弟的程序出问题了,还要交作业里,谢谢了,急回!!!存在的问题,主要是在运行add函

各位大哥,大姐过来帮帮忙,小弟的程序出问题了,还要交作业里,谢谢了,急回!!!
存在的问题,主要是在运行add函数时,总是出现错误,各位高手请看看是哪里出现错误了?小弟不胜感激了。
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
#define max 100
#define null 0
class student 
{
public:
student *next;
public:
string name;
long num;
string nianji;
string major;
  int x,y,z; //英语、网络、C语言
int zongfen;
int averge;
int pm;

void display()
{
cout<<"学号:"<<num<<"姓名:"<<name<<"级别:"<<nianji<<"专业:"<<major<<"英语:"<<x<<"网络:"<<y<<"c语言"<<z
<<"总分:"<<zongfen<<"平均分:"<<averge<<"排名:"<<pm<<endl;
}

student(long snum,string sname,string snianji,string smajor,int sx,int sy,int sz,int spm)
{
  num=snum;
name=sname;
nianji=snianji;
major=smajor;
x=sx;
y=sy;
z=sz;
pm=spm;


}



};

class cla
{
public:
cla()
{
stu=0; //空地址。
sload(); //调用读取函数。

}
~cla()
{
student *p;
p=stu;
while(p)
{
p=p->next;
delete stu; //撤销空间。
stu=p;  
 
}
stu=0;


}

void add(); //添加
void remove(); //删除
void xiugai(); //修改
void search(); //查询
void save(); //保存
void sload(); //读取
void scholar(); //奖学金评定

private:
student *stu; //头结点

 


};


void cla::add()
{
  student *q;
  string namel;
  long numl;
  string nianjil;
  string majorl;
  int xl,yl,zl;
  int pml;
  system("cls");

  cout<<"\n 增加学生 \n"<<endl;
  cout<<"请输入学生的(中间用空格间开)"<<endl;
  cout<<"学号 姓名 年级 专业 英语 网络 C语言 成绩排名"<<endl;
  cin>>numl>>namel>>majorl>>majorl>>xl>>yl>>zl>>pml;
  //q=new student(namel,numl,majorl,xl,yl,zl,pml);//开辟一个存放类成员数据的空间。
  q->next=0; 
  q->zongfen=xl+yl+zl;
  q->averge=(xl+yl+zl)/3;

  if(stu)
  {
  student *t; //定义对象指针。
t=stu; //把stu地址赋给t;
if(t->num==numl)
{
cout<<"学号已存在,请重新输入"<<endl;
return;
}
  while(t->next) //指向下一结点
{
 
if(t->num==numl)
{
cout<<"学号已存在,请重新输入"<<endl;
return;
}
t=t->next; //指向下一结点
 
}
t->next=q; //把新开辟的空间赋给t指向的下一结点。
   
  }
  else
  {
  stu=q;
  
  }


  cout<<"输入完毕"<<endl;


}

void cla::remove()
{
  system("cls");
  int numl;
  cout<<"\n 删除学生信息 \n"<<endl;
  cin>>numl;
  student *p1,*p2;
  p1=stu;
  while(p1)
  {
  if(p1->num==numl)
break;
else
{
p2=p1;
p1=p1->next;
}

  } //找到删除结点。

  if(p1!=null) //如找到结点,就删除。
  {
  cout<<"确定要删除吗?[Y/N]"<<endl;
char c;
cin>>c;
if(toupper(c)!='Y') //大小写字母转换
return;
if(p1==stu) //若要删除的是第一个结点。
{


stu=p1->next;
delete p1;
 
}
  else //若要删除的是后续结点。
{
p2->next=p1->next;
delete p1;

 
}
  cout<<"找到学号为"<<numl<<"的学生,并删除"<<endl;
   
  }
  else 
cout<<"未找到想要删除的学生"<<endl;

}

void cla::xiugai()
{
  system("cls");
  long numl;
  cout<<" 修改学生信息 "<<endl;
  cout<<" 输入修改学生的学号 "<<endl;
  cin>>numl;

  student *p1,*p2;
  p1=stu;
  while(p1)
  {
  if(p1->num==numl)
break;
else
{
p2=p1;
p1=p1->next;
 
}

  }

  if(p1!=null)
  {
  cout<<"学号是"<<numl<<"的信息"<<endl;
cout<<"姓名 "<<p1->name<<" 英语"<<p1->x<<" 网络"<<p1->y<<" C语言"<<p1->z<<endl;
cout<<"请输入修改后的信息: 姓名 英语 网络 C语言"<<endl;
cin>>p1->name>>p1->x>>p1->y>>p1->z;
p1->zongfen=p1->x+p1->y+p1->z;
cout<<"修改成功"<<endl;
   
   
   
  }
  else
  cout<<"未找到"<<endl;


}

void cla::search()
{
  system("cls");
  cout<<" 查询学生信息 "<<endl;
  cout<<" 输入查询的方式 "<<endl;
  cout<<"1按学号查找 "<<endl;
  cout<<"2按姓名查找 "<<endl;
  cout<<"3返回 "<<endl;
  char c;
  cin>>c;
  switch(c)
  {
  case'1':
{
long numl;
cout<<"要查询的学号"<<endl;
cin>>numl;
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->num==numl)
break;
else
{
p2=p1;
p1=p1->next;
}
 
}
if(p1!=null)
{
 
cout<<"学号是"<<numl<<"的信息"<<endl;
cout<<"学号:"<<p1->num<<p1->name<<"级别:"<<p1->nianji<<"专业:"<<p1->major<<"英语:"<<p1->x<<"网络:"<<p1->y<<"c语言"<<p1->z
  <<"总分:"<<p1->zongfen<<"平均分:"<<p1->averge<<"排名:"<<p1->pm<<endl;
cout<<"查询完毕"<<endl;
 
}
else
cout<<"未找到"<<endl;
break;
 
}
  case'2':
{
string namel;
cout<<"要查询的学生姓名"<<endl;
cin>>namel;
student *p1,*p2;
p1=stu;
while(p1)
{
if(p1->name==namel)
break;
else
{
p2=p1;
p1=p1->next;
}
 
}
if(p1!=null)
{
 
cout<<namel<<"的信息"<<endl;
cout<<"学号:"<<p1->num<<"姓名:"<<p1->name<<"级别:"<<p1->nianji<<"专业:"<<p1->major<<"英语:"<<p1->x<<"网络:"<<p1->y<<"c语言"<<p1->z
  <<"总分:"<<p1->zongfen<<"平均分:"<<p1->averge<<"排名:"<<p1->pm<<endl;


cout<<"查询完毕"<<endl;
 
}
else
cout<<"未找到"<<endl;
break;
 
}
   
  case'3':return;
   
  }

}

void cla::save()
{
  system("cls");
  char c;
  cout<<"\n保存学生奖学金结果(将覆盖原文件),是否继续?[Y/N]"<<endl;
  cin>>c;
  if(toupper(c)!='Y') return;
  ofstream tfile("data.txt",ios::binary);
  student *p=stu;
  while(p)
  {
  tfile<<p->name<<"\t"<<p->num<<"\t"<<p->x<<"\t"<<p->y<<"\t"<<p->z;
tfile<<endl;
p=p->next;
   
   
  }
  tfile.close();
  cout<<"保存完毕 "<<endl;





}

void cla::sload()
{
  student *p;
  p=stu;
  while(p)
  {
  stu=p->next;
delete p;
p=stu;
   
  }

  ifstream tfile("data.txt",ios::binary);
  string namel;
  long numl;
  string nianjil;
  string majorl;
  int xl,yl,zl;
  int pml;
  tfile>>namel>>numl>>nianjil>>majorl>>xl>>yl>>zl>>pml;
  while(tfile.good())
  { //创建学生结点
  student *s;
s=stu;
//s=new student(namel,numl,nianjil,majorl,xl,yl,zl,pml);
s->next=0;
s->zongfen=xl+yl+zl;
if(stu) //若已存在结点
  {
student *p2;
p2=stu;
while(p2->next) //查找尾结点
{
p2=p2->next;
}
 
p2->next=s; //连接


  else //若不存在结点。
{
 
stu=s; //连接
 
 
}

  tfile>>namel>>numl>>nianjil>>majorl>>xl>>yl>>zl;
   
  }
  tfile.close();
cout<<"\n欢迎使用郑州航院奖学金评定系统\n"<<endl;


}

void cla::scholar()
{
  system("cls"); //清除屏幕上的信息。
  long numl;
  cout<<" 郑州航院学生奖学金评定 "<<endl;
  cout<<" 输入要评定奖学金的学号 "<<endl;
  cin>>numl;
  student *p1,*p2;
  p1=stu;
  while(p1)
  {
  if(p1->num==numl)
  break;
  else
  {
  p2=p1;
  p1=p1->next;  
  }  
   
   
  }  
   
  if(p1!=null)
  {
  cout<<"输出学号"<<numl<<"的奖学金评定结果"<<endl;
  if(p1->pm>=max*0.3)
  cout<<"一等奖学金"<<endl;
  else if(p1->pm>=max*0.17&&p1->pm<max*0.3)
  cout<<"二等奖学金"<<endl;
  else if(p1->pm>=max*0.3&&p1->pm<max*0.17)
  cout<<"三等奖学金"<<endl;
  else
  cout<<"很可惜你未能得到奖学金"<<endl;  
   
  } 
   



void main()
{
  char c;
  cla a;
  do 
  {


  cout<<"********欢迎使用郑州航院奖学金评定系统**********"<<endl;
cout<<"1......增加学生信息"<<endl;
  cout<<"2......删除学生信息"<<endl;
  cout<<"3......修改学生信息"<<endl;
  cout<<"4......学生奖学金评定"<<endl;
  cout<<"5......查询学生信息"<<endl;
  cout<<"6......保存学生信息"<<endl;
  cout<<"7......读取学生信息"<<endl;
  cout<<"8......退出"<<endl;
  cout<<"*********************"<<endl;
  cout<<"请选择1-8:"<<endl;
cin>>c;
switch(c)
{
case'1':a.add();break;
case'2':a.remove();break;
case'3':a.xiugai();break;
case'4':a.scholar();break;
case'5':a.search();break;
case'6':a.save();break;
case'7':a.sload();break;
}
  }while(c!=8);

}
//小弟我的积分实在是不够用了,对不住大哥大姐们了。

[解决办法]

C/C++ code

[解决办法]
C/C++ code
//存在的问题,主要是在运行add函数时,总是出现错误,各位高手请看看是哪里出现错误了?小弟不胜感激了。#include <iostream>#include <iomanip>#include <fstream>#include <string>using namespace std;#define max 100#define null 0class student  {public:    student *next;public:    string name;    long num;    string nianji;    string major;    int x,y,z; //英语、网络、C语言    int zongfen;    int averge;    int pm;        void display()    {        cout<<"学号:"<<num<<"姓名:"<<name<<"级别:"<<nianji<<"专业:"<<major<<"英语:"<<x<<"网络:"<<y<<"c语言"<<z            <<"总分:"<<zongfen<<"平均分:"<<averge<<"排名:"<<pm<<endl;    }        student(long snum,string sname,string snianji,string smajor,int sx,int sy,int sz,int spm)    {        num=snum;        name=sname;        nianji=snianji;        major=smajor;        x=sx;        y=sy;        z=sz;        pm=spm;            }            };class cla{public:    cla()    {        stu=0; //空地址。        sload(); //调用读取函数。            }    ~cla()    {        student *p;        p=stu;        while(p)        {            p=p->next;            delete stu; //撤销空间。            stu=p;                       }        stu=0;                    }        void add(); //添加    void remove(); //删除    void xiugai(); //修改    void search(); //查询    void save(); //保存    void sload(); //读取    void scholar(); //奖学金评定    private:    student *stu; //头结点                };void cla::add(){    student *q;    string namel;    long numl;    string nianjil;    string majorl;    int xl,yl,zl;    int pml;    system("cls");    fflush(stdin);    cout<<"\n 增加学生 \n"<<endl;    cout<<"请输入学生的(中间用空格间开)"<<endl;    cout<<"学号 姓名 年级 专业 英语 网络 C语言 成绩排名"<<endl;    cin>>numl>>namel>>nianjil>>majorl>>xl>>yl>>zl>>pml;    q=new student(numl,namel,nianjil,majorl,xl,yl,zl,pml);//开辟一个存放类成员数据的空间。    q->next=0;      q->zongfen=xl+yl+zl;    q->averge=(xl+yl+zl)/3;        if(stu)    {        student *t; //定义对象指针。        t=stu; //把stu地址赋给t;        if(t->num==numl)        {            cout<<"学号已存在,请重新输入"<<endl;            return;        }        while(t->next) //指向下一结点        {                        if(t->num==numl)            {                cout<<"学号已存在,请重新输入"<<endl;                return;            }            t=t->next; //指向下一结点                    }        t->next=q; //把新开辟的空间赋给t指向的下一结点。            }    else    {        stu=q;            }            cout<<"输入完毕"<<endl;        }void cla::remove(){    system("cls");    fflush(stdin);    int numl;    cout<<"\n 删除学生信息 \n"<<endl;    cin>>numl;    student *p1,*p2;    p1=stu;    while(p1)    {        if(p1->num==numl)            break;        else        {            p2=p1;            p1=p1->next;        }            } //找到删除结点。        if(p1!=null) //如找到结点,就删除。    {        cout<<"确定要删除吗?[Y/N]"<<endl;        char c;        cin>>c;        if(toupper(c)!='Y') //大小写字母转换            return;        if(p1==stu) //若要删除的是第一个结点。        {            stu=p1->next;            delete p1;                    }        else //若要删除的是后续结点。        {            p2->next=p1->next;            delete p1;                                }        cout<<"找到学号为"<<numl<<"的学生,并删除"<<endl;            }    else          cout<<"未找到想要删除的学生"<<endl;    }void cla::xiugai(){    system("cls");    fflush(stdin);    long numl;    cout<<" 修改学生信息 "<<endl;    cout<<" 输入修改学生的学号 "<<endl;    cin>>numl;        student *p1,*p2;    p1=stu;    while(p1)    {        if(p1->num==numl)            break;        else        {            p2=p1;            p1=p1->next;                    }            }        if(p1!=null)    {        cout<<"学号是"<<numl<<"的信息"<<endl;        cout<<"姓名 "<<p1->name<<" 英语"<<p1->x<<" 网络"<<p1->y<<" C语言"<<p1->z<<endl;        cout<<"请输入修改后的信息: 姓名 英语 网络 C语言"<<endl;        cin>>p1->name>>p1->x>>p1->y>>p1->z;        p1->zongfen=p1->x+p1->y+p1->z;        cout<<"修改成功"<<endl;                            }    else        cout<<"未找到"<<endl;        }void cla::search(){    system("cls");    cout<<" 查询学生信息 "<<endl;    cout<<" 输入查询的方式 "<<endl;    cout<<"1按学号查找 "<<endl;    cout<<"2按姓名查找 "<<endl;    cout<<"3返回 "<<endl;    fflush(stdin);    char c;    cin>>c;    switch(c)    {    case'1':        {            long numl;            cout<<"要查询的学号"<<endl;            cin>>numl;            student *p1,*p2;            p1=stu;            while(p1)            {                if(p1->num==numl)                    break;                else                {                    p2=p1;                    p1=p1->next;                }                            }            if(p1!=null)            {                                cout<<"学号是"<<numl<<"的信息"<<endl;                cout<<"学号:"<<p1->num<<p1->name<<"级别:"<<p1->nianji<<"专业:"<<p1->major<<"英语:"<<p1->x<<"网络:"<<p1->y<<"c语言"<<p1->z                    <<"总分:"<<p1->zongfen<<"平均分:"<<p1->averge<<"排名:"<<p1->pm<<endl;                cout<<"查询完毕"<<endl;                            }            else                cout<<"未找到"<<endl;            break;                    }    case'2':        {            string namel;            cout<<"要查询的学生姓名"<<endl;            cin>>namel;            student *p1,*p2;            p1=stu;            while(p1)            {                if(p1->name==namel)                    break;                else                {                    p2=p1;                    p1=p1->next;                }                            }            if(p1!=null)            {                                cout<<namel<<"的信息"<<endl;                cout<<"学号:"<<p1->num<<"姓名:"<<p1->name<<"级别:"<<p1->nianji<<"专业:"<<p1->major<<"英语:"<<p1->x<<"网络:"<<p1->y<<"c语言"<<p1->z                    <<"总分:"<<p1->zongfen<<"平均分:"<<p1->averge<<"排名:"<<p1->pm<<endl;                cout<<"查询完毕"<<endl;                            }            else                cout<<"未找到"<<endl;            break;                    }            case'3':return;            }    }void cla::save(){    system("cls");    fflush(stdin);    char c;    cout<<"\n保存学生奖学金结果(将覆盖原文件),是否继续?[Y/N]"<<endl;    cin>>c;    if(toupper(c)!='Y') return;    ofstream tfile("data.txt",ios::binary);    student *p=stu;    while(p)    {        tfile<<p->name<<"\t"<<p->num<<"\t"<<p->x<<"\t"<<p->y<<"\t"<<p->z;        tfile<<endl;        p=p->next;                    }    tfile.close();    cout<<"保存完毕 "<<endl;                    }void cla::sload(){    student *p;    p=stu;    while(p)    {        stu=p->next;        delete p;        p=stu;            }        ifstream tfile("data.txt",ios::binary);    string namel;    long numl;    string nianjil;    string majorl;    int xl,yl,zl;    int pml;    tfile>>namel>>numl>>nianjil>>majorl>>xl>>yl>>zl>>pml;    while(tfile.good())    { //创建学生结点        student *s;        s=stu;        //s=new student(namel,numl,nianjil,majorl,xl,yl,zl,pml);        s->next=0;        s->zongfen=xl+yl+zl;        if(stu) //若已存在结点        {            student *p2;            p2=stu;            while(p2->next) //查找尾结点            {                p2=p2->next;            }                        p2->next=s; //连接                    }          else //若不存在结点。        {                        stu=s; //连接                                }                tfile>>namel>>numl>>nianjil>>majorl>>xl>>yl>>zl;            }    tfile.close();    cout<<"\n欢迎使用郑州航院奖学金评定系统\n"<<endl;        }void cla::scholar(){    system("cls"); //清除屏幕上的信息。    fflush(stdin);    long numl;    cout<<" 郑州航院学生奖学金评定 "<<endl;    cout<<" 输入要评定奖学金的学号 "<<endl;    cin>>numl;    student *p1,*p2;    p1=stu;    while(p1)    {        if(p1->num==numl)            break;        else        {            p2=p1;            p1=p1->next;           }                       }           if(p1!=null)    {        cout<<"输出学号"<<numl<<"的奖学金评定结果"<<endl;        if(p1->pm>=max*0.3)            cout<<"一等奖学金"<<endl;        else if(p1->pm>=max*0.17&&p1->pm<max*0.3)            cout<<"二等奖学金"<<endl;        else if(p1->pm>=max*0.3&&p1->pm<max*0.17)            cout<<"三等奖学金"<<endl;        else            cout<<"很可惜你未能得到奖学金"<<endl;               }          }  void main(){    char c;    cla a;    do      {        cout<<"********欢迎使用郑州航院奖学金评定系统**********"<<endl;        cout<<"1......增加学生信息"<<endl;        cout<<"2......删除学生信息"<<endl;        cout<<"3......修改学生信息"<<endl;        cout<<"4......学生奖学金评定"<<endl;        cout<<"5......查询学生信息"<<endl;        cout<<"6......保存学生信息"<<endl;        cout<<"7......读取学生信息"<<endl;        cout<<"8......退出"<<endl;        cout<<"*********************"<<endl;        cout<<"请选择1-8:"<<endl;        cin>>c;        switch(c)        {        case'1':a.add();break;        case'2':a.remove();break;        case'3':a.xiugai();break;        case'4':a.scholar();break;        case'5':a.search();break;        case'6':a.save();break;        case'7':a.sload();break;        }    }while(c!=8);    } 

热点排行