回 帖 发 新 帖 刷新版面

主题:哪位高手能帮我改一下程序,让它能正常运行

#include<iostream>
using namespace std;
#include<cstring>
struct TLinkNode
{         int Registration_number;
           char Name[20];
           float Chinese;
           float Maths;
           float English;
           float Average_result;
};
class Student
{  private:
           TLinkNode *elem;
           int Length;
           int MaxSize;
           
   public:
          Student(int); //构造函数
          ~Student(); // 析构函数 
        TLinkNode search();   //查询
          void delet();    //删除
         void print();    //打印  
         void sequence(); //排序 
          void empty();    //清空 
         //void out();      导出
        void insert();   //插入  
};

Student::Student(int InitSize)
{
     if(InitSize>0)
     { elem=new  TLinkNode[InitSize]; //申请连续空间,并返回首地址 
     MaxSize=InitSize-1;
     Length=0;
     }                  
 }
 
 
Student::~Student()

   delete []elem;                 //释放空间 
}



void Student::empty()              //请空顺序表 
{ Length=0;
}


void Student::insert()  //插入,添加学生信息 
{  
    if(Length==MaxSize)
    {cout<<"空间已满!"<<endl;}
    cout<<"输入学生的学号:"<<endl;
    cin>>elem[Length+1].Registration_number;
    cout<<"输入学生的姓名:"<<endl;
    cin>>elem[Length+1].Name[20];
    cout<<"输入学生的中文成绩:"<<endl;
    cin>>elem[Length+1].Chinese;
    cout<<"输入学生的数学成绩:"<<endl;
    cin>>elem[Length+1].Maths;
    cout<<"输入学生的英语成绩:"<<endl;
    cin>>elem[Length+1].English;
    elem[Length+1].Average_result=((elem[Length+1].Chinese)
    +(elem[Length+1].Maths)+(elem[Length+1].English))/3;
}



void Student::print( )        //打印学生信息 
{   cout<<"输入要打印的学生的学号:"<<endl;
     int rm,j;
     cin>>rm;
     elem[0].Registration_number=rm;
     for(int i=1;1<Length;i++)
     {
     if((elem[i].Registration_number)==rm) j=i;}
     if(j==0) cout<<"不存在这个信息!"<<endl;
     if(j!=0)
 {
      cout<<"该学生的信息为:"<<endl;
      cout<<"学生的学号:"<<elem[j].Registration_number<<endl;
      cout<<"学生的姓名:"<<elem[j].Name[20]<<endl;
      cout<<"学生的中文成绩:"<<elem[j].Chinese<<endl;
      cout<<"学生的数学成绩:"<<elem[j].Maths<<endl;
      cout<<"学生的英语成绩:"<<elem[j].English<<endl;
      cout<<"学生的平均成绩:"<<elem[j].Average_result<<endl;
  }
}



TLinkNode Student::search()              //查询
{  cout<<"请选择你需要的查找方式:"<<endl;
   cout<<"1。按学号查找"<<endl;
   cout<<"2。按姓名查找"<<endl;
   int Choice;
   cin>>Choice;
   if(Choice==1)                 //按学号查询
   {  cout<<"请输入学生的学号:"<<endl;
      int registration_number,rm;
      cin>>registration_number;
      elem[0].Registration_number=registration_number;
      for(int i=Length;i>=0;i--)
      {  if(elem[i].Registration_number=registration_number)
         rm=i;
      }
      if(rm=0) 
      {cout<<"不存在这个学生的信息。"<<endl;}
      if(rm!=0) return elem[rm];
   }
   if(Choice==1)                 //按姓名查询
   {  cout<<"请输入学生的姓名:"<<endl;
      int n;
      char name[20];
      cin>>name;
      strcpy(elem[0].Name,name);
      for(int i=Length;i>=0;i--)
      {  if(strcmp(elem[i].Name,name)==0)
         n=i;
      }
      if(n=0) 
      {cout<<"不存在这个学生的信息。"<<endl;}
      if(n!=0) return elem[n];
   }
}


   void Student::delet()         //删除 
{  cout<<"1。按学号删除"<<endl;
   cout<<"2. 按姓名删除"<<endl;
   int number;
   cin>>number;
   if(number==1)     //按学号删除 
   {  cout<<"请输入学生的学号:"<<endl;
      int registration_number,rm;
      cin>>registration_number;
      elem[0].Registration_number=registration_number;
      for(int i=Length;i>=0;i--)
      {  if(elem[i].Registration_number=registration_number)
         rm=i;
      }
      if(rm=0) cout<<"不存在这个学生的信息。"<<endl;
      if(rm!=0)
      { TLinkNode e;
        e=elem[rm];
        for(int j=rm;j<Length;j++)
        elem[j]=elem[j+1];
        Length--;
      }
   }
    if(number==2)  //按名字删除 
   {  cout<<"请输入学生的姓名:"<<endl;
      char name[20];
      int n;
      cin>>name;
      strcpy(elem[0].Name,name);
      for(int i=Length;i>=0;i--)
      {  if(strcmp(elem[i].Name,name)==0)
         n=i;
      }
      if(n=0) {cout<<"不存在这个学生的信息。"<<endl;}
      if(n!=0)
      { TLinkNode e;
        e=elem[n];
        for(int j=n;j<Length;j++)
        elem[j]=elem[j+1];
        Length--;
      }
  }
}


   void Student::sequence()            //排序 
{  cout<<"1.按学号排序"<<endl;
   cout<<"2.按平均成绩排序"<<endl;
   int number;
   cin>>number;
   if(number==1)
   {  for(int i=1;i<Length;i++)
      for(int j=i;j<Length;j++)
     {
        if((elem[j].Registration_number)>(elem[j+1].Registration_number))
         {TLinkNode temp;
          temp=elem[j];elem[j]=elem[j+1];elem[j+1]=temp;}
     }
   }
   if(number==2)
   {cout<<"1.按升序排序"<<endl;
    cout<<"2.按降序排序"<<endl;
    int seq;
    cin>>seq;
    if(seq==1)
    {  for(int i=1;i<Length;i++)
        for(int j=i;j<Length;j++)
     {
        if((elem[j].Average_result)>(elem[j+1].Average_result))
         {TLinkNode temp;
          temp=elem[j];elem[j]=elem[j+1];elem[j+1]=temp;}
     }
    }
    if(seq==2)
    {for(int i=1;i<Length;i++)
        for(int j=i;j<Length;j++)
     {
        if((elem[j].Average_result)<(elem[j+1].Average_result))
         {TLinkNode temp;
          temp=elem[j];elem[j]=elem[j+1];elem[j+1]=temp;}
     }
    
   }
 }
}

#include<iostream>
using namespace std;
#include "student.h"

int main()
{ Student stud(100);
  system("cls");
  cout<<"*************欢迎来到学生成绩管理系统!*************"<<endl;
  cout<<"系统功能:"<<endl<<endl; 
  cout<<"1.查询"<<endl;
  cout<<"2.删除"<<endl; 
  cout<<"3.打印"<<endl; 
  cout<<"4.排序"<<endl; 
  cout<<"5.清空"<<endl; 
  cout<<"6.导出"<<endl; 
  cout<<"7.插入"<<endl<<endl;; 
  cout<<"请选择你所需要的操作:"<<endl;
  int number;
  cin>>number;
  switch(number)
  {case 1:stud.search();break;
   case 2:stud.delet();break;
   case 3:stud.print( );break;
   case 4:stud.sequence();break;
   case 5:stud.empty();break;
   case 6:exit(1);break;
   case 7:stud.insert();break; 
   default:cout<<"没有这项功能!"<<endl;break; 
  }
  system("pause");
  return 0;  
}

回复列表 (共1个回复)

沙发

这位大哥挺强的,我们期末考试的C++大作业就是这样的一个题目,老师要求用类编个高校注册系统,我做的很简单,不像大哥有这么多的功能,大哥的主函数int main()
前的三行应该删去#include<iostream>
                using namespace std;
                #include "student.h"
然后可以运行了,可是一输入就出错,搞不懂是怎么一回事。

我来回复

您尚未登录,请登录后再回复。点此登录或注册