vc++课设 open error 求告知哪里出错了

下面是源代码

#include <iostream>

#include <fstream>//标准文件输入输出流class

#include <sstream>//文件的分支

#include <cstring>//字符串

#include <iomanip>//操纵运算子

const int number=100;

using namespace std;

void menu(){//自定义一个函数,来查询信息

cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n";

cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n";

    cout<<"                       *欢迎来到学生信息管理系统*                              \n";

cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n";

cout<<"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n";

    cout<<"输入0,退出系统"<<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;

 

}

class Students{//定义一个学生类

public:    //输入公有信息:学号,姓名,性别,地址,VC,英语,体育,德育的信息

    string xh;

    string name;

    string sex;

    string address;

    double Vc;

    double English;

    double Maths;

    double PE;

    double Dy;

    double sum;

    double average;

    double point;

    double JD;

    void sortjd();

    Students test(string path);

    // 1.计算:每个学生的总成绩、平均成绩,所有学生单科的平均成绩,找出总成绩和单科成绩最高的学生,学生的绩点并输出;

    void calculate(Students student[],int n){

       double Vcaverage=0;

       double Mathsaverage=0;

       double Englishaverage=0;

       double VcMax=0;

       double MathsMax=0;

       double EnglishMax=0;

       double sumMax=0;

       for(int i=0;i<n;i++){

           cout<<student[i].name<<"同学的Vc成绩:"<<student[i].Vc<<"同学的Maths成绩:"<<student[i].Maths

           <<"同学的English成绩:"<<student[i].English<<endl;

           cout<<student[i].name<<"同学的PE成绩:"<<student[i].PE<<"同学的德育成绩:"<<student[i].Dy<<endl;

           cout<<student[i].name<<"同学的总成绩:"<<student[i].sum<<endl;

           cout<<student[i].name<<"同学的平均成绩:"<<student[i].average<<endl;

           cout<<student[i].name<<"同学的学分绩点为:"<<student[i].point<<endl;

           //以下是求单科平均成绩

           Vcaverage+=student[i].Vc;

           Mathsaverage+=student[i].Maths;

           Englishaverage+=student[i].English;

           //以下是寻找单科最大值  

           if(student[i].Vc>=VcMax){

               VcMax=student[i].Vc;

           }

           if(student[i].Maths>=MathsMax){

               MathsMax=student[i].Maths;

           }

           if(student[i].English>=EnglishMax){

               EnglishMax=student[i].English;

           }

           if(student[i].sum>=sumMax){

               sumMax=student[i].sum;

           }     

       }

       cout<<"所有学生的Vc平均成绩:"<<Vcaverage/n<<"所有学生的Maths平均成绩:"

       <<Mathsaverage/n<<"所有的学生English平均成绩:"<<Englishaverage/n<<endl;

      

       //下面是输出单科成绩最高的同学及其分数

       for(  i=0;i<n;i++){

          

           if(VcMax==student[i].Vc){

              cout<<"Vc最高的同学:"<<student[i].name<<"   "<<VcMax<<endl;

           }

           if(MathsMax==student[i].Maths){

              cout<<"Maths最高的同学:"<<student[i].name<<"   "<<MathsMax<<endl;

           }

           if(EnglishMax==student[i].English){

              cout<<"English最高的同学:"<<student[i].name<<"   "<<EnglishMax<<endl;

           }

           if(sumMax==student[i].sum){

              cout<<"总分最高的同学:"<<student[i].name<<"   "<<sumMax<<endl;

           }

       }

      

    }

    //2.根据学号查询某个同学的成绩

    void inquirexh(Students student[],int n,string xh){

       int num=0;

       for(int i=0;i<n;i++){

           if(xh==student[i].xh){

              cout<<student[i].name<<"同学的vc成绩:"<<student[i].Vc

              <<"Maths成绩:"<<student[i].Maths

              <<"English成绩:"<<student[i].English

               <<"同学的PE成绩:"<<student[i].PE

              <<"同学的德育成绩:"<<student[i].Dy<<endl;

              num++;

           }

       }

       if(num==0){

           cout<<"没有"<<endl;

       }

    }

    //3.根据名字查询某个同学的成绩

    void inquirename(Students student[],int n,string name){

       int num=0;

       for(int i=0;i<n;i++){

           if(name==student[i].name){

              cout<<student[i].name<<":"<<"同学的vc成绩"<<student[i].Vc<<"同学的Maths成绩"<<student[i].Maths<<"同学的English成绩1"<<student[i].English<<endl;

               num++;

           }

       }

       if(num==0){

           cout<<"没有"<<endl;

       }

    }

    //4.排序

    void SortAll(double a[],int n){

       for(int i=0;i<n;i++){

           for(int j=0;j<n-i;j++){

              if(a[j]<a[j+1]){

              double temp;

              temp=a[j];

              a[j]=a[j+1];

              a[j+1]=temp;            

              }

           }

       }

 

    }

    void Vcsort(Students student[],int n){

       double Avc[number];

       for( int i=0;i<n;i++){

           Avc[i]=student[i].Vc;

       }

       SortAll(Avc,n);

       cout<<"所有学生的Vc排名为:"<<endl;

      

       //找值输出

       for(  i=0;i<n;i++){

           for(int j=0;j<n;j++){

              if(Avc[i]==student[j].Vc){

                  cout<<student[j].name<<" "<<student[j].Vc<<endl;

              }

           }

       }

}

    void Mathssort(Students student[],int n){

       double AMaths[number];

       for( int i=0;i<n;i++){

           AMaths[i]=student[i].Maths;

       }

       SortAll(AMaths,n);

       cout<<"所有同学的Maths排名为:"<<endl;

       //找值输出

       for( i=0;i<n;i++){

           for(int j=0;j<n;j++){

              if(AMaths[i]==student[j].Maths){

                  cout<<student[j].name<<" "<<student[j].Maths<<endl;

              }

           }

       }

}

void Englishsort(Students student[],int n){

       double AEnglish[number];

       for(int i=0;i<n;i++){

           AEnglish[i]=student[i].English;

       }

       SortAll(AEnglish,n);

       cout<<"所有学生的英语排名为:"<<endl;

      

       //找值输出

       for(  i=0;i<n;i++){

           for(int j=0;j<n;j++){

              if(AEnglish[i]==student[j].English){

                 cout<<student[j].name<<" "<<student[j].English<<endl;

              }

           }

       }

}

void JDsort(Students student[],int n){

       double AJD[number];

       for(int i=0;i<n;i++){

           AJD[i]=student[i].point;

       }

       SortAll(AJD,n);

       cout<<"所有学生的绩点排名为:"<<endl;

      

       //找值输出

       for(  i=0;i<n;i++){

           for(int j=0;j<n;j++){

              if(AJD[i]==student[j].point){

                  cout<<student[j].name<<" "<<student[j].point<<endl;

              }

           }

       }

}

void sumsort(Students student[],int n){

       double Asum[number];

       for( int i=0;i<n;i++){

           Asum[i]=student[i].sum;

       }

       SortAll(Asum,n);

       cout<<"所有学生的总分排名为:"<<endl;

       //找值输出

       for(  i=0;i<n;i++){

           for(int j=0;j<n;j++){

              if(Asum[i]==student[j].sum){

                  cout<<student[j].name<<" "<<student[j].sum<<endl;

              }

           }

       }

}

void pointsort(Students student[],int n){

    cout<<"学生的姓名、平均绩点为:\n";

    for(int i=0;i<n-1;i++)

        for(int j=j+1;j<n;j++)

           if(student[i].point<student[j].point){double k=student[i].point;student[i].point=student[j].point;student[j].point=k;}

       for(i=0;i<n;i++)

           cout<<student[i].name<<" 、"<<student[i].point<<endl;

}

    //5.按照学号删除

void DeleteId(Students student[],int n,string xh){

    int j=-1;   //记录删除的下标

    for(int i = 0;i< n;i++){

           if(xh==student[i].xh){

              j=i;

              for(int t=j;j<n;j++){

                  student[t]=student[t+1];

              }

              break;

           }

       }

   

    if(j==-1){

       cout<<"查无此人,删除失败!"<<endl;

    }

    else{

        cout<<"删除成功"<<endl;

    }

}

 

 

    //6.按照姓名删除      其他删除方式一样,只需要修改参数列表以及函数里面的对应数据就可

void DeleteName(Students student[],int n,string name){      

    int j=-1;   //记录删除的下标

    for(int i = 0;i< n;i++){

           if(name==student[i].name){

              j=i;

              for(int t=j;j<n;j++){

                  student[t]=student[t+1];

              }

              break;

           }

       }

   

    if(j==-1){

       cout<<"查无此人,删除失败!"<<endl;

    }else{

       cout<<"删除成功 "<<endl;

    }

    }

    //7.评定奖学金

    void pdjxj(Students student[],int n){

    for(int i=0;i<n;i++){

        if(student[i].point>=4.0&&student[i].PE>=70){   

         cout<<student[i].name<<"同学的总成绩为:"<<" "<<student[i].sum<<"  "<<"学生的绩点:"<<student[i].point<<"    "<<"特等奖"<<endl;

       }

       else

       if(student[i].point>=3.6&&student[i].PE>=70){

         cout<<student[i].name<<"同学的总成绩为:"<<" "<<student[i].sum<<"  "<<"学生的绩点:"<<student[i].point<<"    "<<"一等奖学金"<<endl;

       }

       else

       if(student[i].point>=3.2&&student[i].PE>=70){

         cout<<student[i].name<<"同学的总成绩为:"<<" "<<student[i].sum<<"  "<<"学生的绩点:"<<student[i].point<<"    "<<"二等奖学金"<<endl;    

       }

       else

       if(student[i].point>=2.8&&student[i].PE>=60){

         cout<<student[i].name<<"同学的总成绩为:"<<" "<<student[i].sum<<"  "<<"学生的绩点:"<<student[i].point<<"    "<<"三等奖学金"<<endl;  

       }

       /*else{

           cout<<"没有奖学金"<<endl;

           } */

       }

    }  

 

    //8.评定三好学生

    void pdshxs(Students student[],int n){

       for(int i=0;i<n;i++){

       if(student[i].point>=2.8&&student[i].Vc>=60&&student[i].English>=60&&student[i].Maths>=60){

              cout<<student[i].name<<"被评为三好学生"<<endl;

           }

       }

    }

 

};

   

int main(){

    Students *p=new Students[100];

    int n=0;

    char path0[12];

    string path = "信管2班.txt";

    strcpy(path0,path.c_str());

    ifstream infile(path0,ios::in);

    if(!infile){

       cerr<<"open error!"<<endl;

       exit(-1);

    }

    string line="";

    while(getline(infile,line)){

       istringstream ss(line);

       ss>>p[n].xh;

       ss>>p[n].name;

       ss>>p[n].sex;

       ss>>p[n].address;

       ss>>p[n].Vc;

       ss>>p[n].Maths;

       ss>>p[n].English;

       ss>>p[n].PE;

       ss>>p[n].Dy;

       n++;

    }

    double GainsVc;

    double GainsMaths;

    double GainsEnglish;

    for(int i=0;i<n;i++){

           p[i].sum=p[i].Vc+p[i].Maths+p[i].English;

       p[i].average=(p[i].Vc+p[i].Maths+p[i].English)/3;

      

       if(p[i].Vc<60){

           GainsVc=0;

       }

       else{

           GainsVc=p[i].Vc/10-5;

          

       }

       if(p[i].Maths<60){

           GainsMaths=0;

       }

       else{

           GainsMaths=p[i].Maths/10-5;

          

       }

       if(p[i].English<60){

           GainsEnglish=0;

       }

       else{

           GainsEnglish=p[i].English/10-5;

          

       }

       p[i].point=(GainsVc+GainsMaths+GainsEnglish)/3;

    }

       menu();

       cout<<"请输入选择的序号:";

       int k;

       Students s;

       while(cin>>k){

       if(k==0)

           exit(0);

       if(k==1){

           s.calculate(p,n);

           menu();

           cout<<"请输入选择的序号:";

       }

       if(k==2){

           cout<<"请输入你要查询的学号:";

           string xh;

           cin>>xh;

           s.inquirexh(p,n,xh);

           menu();

           cout<<"请输入选择的序号:";

       }

       if(k==3){

           cout<<"请输入你要查询的名字:";

           string name;

           cin>>name;

           s.inquirename(p,n,name);

           menu();

           cout<<"请输入选择的序号:";

       }

       if(k==4){

           s.Vcsort(p,n);

           s.Mathssort(p,n);

           s.Englishsort(p,n);

           s.sumsort(p,n);

           s.JDsort(p,n);

           menu();

           cout<<"请输入选择的序号:";

       }

       if(k==5){

           cout<<"输入想要删除的同学的学号:"<<endl;

           string xh;

           cin>>xh;

           s.DeleteId(p,n,xh);

           n--;

           menu();

           cout<<"请输入选择的序号:";

       }

       if(k==6){

           cout<<"请输入删除同学的名字:";

           string name;

           cin>>name;

           s.DeleteName(p,n,name);

           menu();

           cout<<"请输入选择的序号:";

       }

       if(k==7){

           s.pdjxj(p,n);

 

           menu();

           cout<<"请输入选择的序号:";

       }

       if(k==8){

           s.pdshxs(p,n);

           menu();

           cout<<"请输入选择的序号:";

       }

    }

      

    return 0;

}

这是运行截图

 

你好,我是有问必答小助手。为了技术专家团更好地为您解答问题,烦请您补充下(1)问题背景详情,(2)您想解决的具体问题,(3)问题相关代码图片或者报错信息。便于技术专家团更好地理解问题,并给出解决方案。

您可以点击问题下方的【编辑】,进行补充修改问题。

img