c++
学生年级成绩管理
调试一直显示访问冲突
#include<iostream>
#include<string>
#include<ctime>
#include<cstdlib>
#define student_number 45
#define class_number 4
#define subject_number 5
using namespace std;
//定义关于学生信息的结构体
struct student
{ string name;
string number;
int score[subject_number];
float score_average;
student *next;
};
//随机数生成函数
int the_rand_create(void)
{
srand((unsigned)time(NULL));
return rand()%(101);};
//平均成绩计算函数
double average(int score[],int n)
{int i;
double sum=0;
double ave;
for(i=0;i<n;i++)
sum=sum+score[i];
ave=(sum*1.0)/n;
return ave;};
//冒泡法排序的函数
void bubble(student *p)
{int i,j;
student t;
for(j=44;j>0;j--)
{for(i=0;i<j;i++)
if((*(p+i)).score_average<(*(p+1+i)).score_average)
{t=(*(p+1+i));
(*(p+1+i))=(*(p+i));
(*(p+i))=t;}}};
//选择法排序函数
void choice(student *p)
{int i,j;
student t;
for(j=0;j<44;j++)
for(i=j;i<45;i++)
{if((*(p+j)).score_average<(*(p+i)).score_average)
{ t=(*(p+j));
*(p+j)=*(p+i);
*(p+i)=t;}}};
//菜单函数
void menu(void)
{cout<<"输入1,查看学号和成绩"<<endl;
cout<<"输入2,查看平均成绩"<<endl;
cout<<"输入3,查看平均成绩的班内排名(冒泡法排序)"<<endl;
cout<<"输入4,查看平均成绩的班内排名(选择法排序)"<<endl;
cout<<"输入5,查看平均成绩的校内排名"<<endl;
cout<<"输入6,退出;"<<endl;
};
int main()
{int i,j,choose,m;
struct student class1[student_number];
struct student class2[student_number];
struct student class3[student_number];
struct student class4[student_number];
struct student t[(student_number*4)];
//班级一
//对学生学号进行赋值
for(i=0;i<student_number;i++)
{class1[i].number=0100+i;
//对学生成绩随机生成
for(j=0;j<subject_number;j++)
class1[i].score[j]=int(the_rand_create);
//平均成绩计算
class1[i].score_average=average( class1[i].score,subject_number);
}
//班级二
for(i=0;i<student_number;i++)
{class2[i].number=20210100+i;
for(j=0;j<subject_number;j++)
class2[i].score[j]=int(the_rand_create);
class2[i].score_average=average( class2[i].score,subject_number);
}
//班级三
for(i=0;i<student_number;i++)
{class3[i].number=20210100+i;
for(j=0;j<subject_number;j++)
class3[i].score[j]=int(the_rand_create);
class3[i].score_average=average( class3[i].score,subject_number);
}
//班级4
for(i=0;i<student_number;i++)
{class4[i].number=20210100+i;
for(j=0;j<subject_number;j++)
class4[i].score[j]=int(the_rand_create);
class4[i].score_average=average( class4[i].score,subject_number);
}
//将班级信息整合到一个年级的数组中
for(j=0;j<class_number;j++)
if(j==0)
for(i=0;i<student_number;i++)
t[student_number*i+i]=class1[i];
else if(j==1)
for(i=0;i<student_number;i++)
t[student_number*j+i]=class2[i];
else if(j==2)
for(i=0;i<student_number;i++)
t[student_number*j+i]=class3[i];
else if(j==3)
for(i=0;i<student_number;i++)
t[student_number*j+i]=class4[i];
//菜单功能的实现
menu;
do{
cout<<"请输入想实现功能的相应序号:"<<endl;
cin>>choose;
switch(choose)
{ case 1:
{cout<<"想要查看那个班级的学号和成绩(1代表1班,2代表2班,3代表3班,4代表4班):"<<endl;
cin>>m;
switch(m)
{//实现功能1
case 1:
for (i=0;i<student_number;i++) cout<<"学号:"<<class1[i].number<<" "<<"科目一成绩:"<<class1[i].score[1]<<" "<<"科目二成绩:"<<class1[i].score[2];
cout<<" "<<"科目三成绩:"<<class1[i].score[3]<<" "<<"科目四成绩:"<<class1[i].score[4]<<" "<<"科目五成绩:"<<class1[i].score[5]<<endl; break;
case 2:
for (i=0;i<student_number;i++) cout<<"学号:"<<class2[i].number<<" "<<"科目一成绩:"<<class2[i].score[1]<<" "<<"科目二成绩:"<<class2[i].score[2];
cout<<" "<<"科目三成绩:"<<class2[i].score[3]<<" "<<"科目四成绩:"<<class2[i].score[4]<<" "<<"科目五成绩:"<<class2[i].score[5]<<endl; break;
case 3:
for (i=0;i<student_number;i++) cout<<"学号:"<<class3[i].number<<" "<<"科目一成绩:"<<class3[i].score[1]<<" "<<"科目二成绩:"<<class3[i].score[2];
cout<<" "<<"科目三成绩:"<<class3[i].score[3]<<" "<<"科目四成绩:"<<class3[i].score[4]<<" "<<"科目五成绩:"<<class3[i].score[5]<<endl; break;
case 4:
for (i=0;i<student_number;i++) cout<<"学号:"<<class4[i].number<<" "<<"科目一成绩:"<<class4[i].score[1]<<" "<<"科目二成绩:"<<class4[i].score[2];
cout<<" "<<"科目三成绩:"<<class4[i].score[3]<<" "<<"科目四成绩:"<<class4[i].score[4]<<" "<<"科目五成绩:"<<class4[i].score[5]<<endl; break;
default: cout<<"输入错误:";}};break;
//实现功能2
case 2:
{cout<<"想要查看哪个班的平均成绩:"<<endl;
cin>>m;
switch(m)
{case 1:
for (i=0;i<student_number;i++) cout<<"学号: "<<class1[i].number<<" 平均成绩 "<<class1[i].score_average<<endl;break;
case 2:
for (i=0;i<student_number;i++) cout<<"学号: "<<class1[i].number<<" 平均成绩 "<<class1[i].score_average<<endl;break;
case 3:
for (i=0;i<student_number;i++) cout<<"学号: "<<class1[i].number<<" 平均成绩 "<<class1[i].score_average<<endl;break;
case 4:
for (i=0;i<student_number;i++) cout<<"学号: "<<class1[i].number<<" 平均成绩 "<<class1[i].score_average<<endl;break;
default:cout<<"输入错误:"<<endl;
}};break;
//实现功能三
case 3:
{cout<<"请输入想要查看的班级平均成绩排名:"<<endl;
cin>>m;
switch(m)
{case 1:
{bubble(class1);
for(i=0;i<student_number;i++)
cout<<"班级一的平均成绩排序: "<<i<<" "<<class1[i].score_average<<endl;};break;
case 2:
{bubble(class2);
for(i=0;i<student_number;i++)
cout<<"班级二的平均成绩排序: "<<i<<" "<<class2[i].score_average<<endl;};break;
case 3:
{bubble(class3);
for(i=0;i<student_number;i++)
cout<<"班级三的平均成绩排序: "<<i<<" "<<class3[i].score_average<<endl;};break;
case 4:
{bubble(class4);
for(i=0;i<student_number;i++)
cout<<"班级四的平均成绩排序: "<<i<<" "<<class4[i].score_average<<endl;};break;
default:cout<<"输入错误!"<<endl;}};break;
//实现功能四
case 4:
{cout<<"请输入想要查看的班级平均成绩排名:"<<endl;
cin>>m;
switch(m)
{case 1:
{(class1);
choice(class1);
for(i=0;i<student_number;i++)
cout<<"班级一的平均成绩排序: "<<i<<" "<<class1[i].score_average<<endl;};break;
case 2:
{choice(class2);
for(i=0;i<student_number;i++)
cout<<"班级二的平均成绩排序: "<<i<<" "<<class2[i].score_average<<endl;};break;
case 3:
{choice(class3);
for(i=0;i<student_number;i++)
cout<<"班级三的平均成绩排序: "<<i<<" "<<class3[i].score_average<<endl;};break;
case 4:
{choice(class4);
for(i=0;i<student_number;i++)
cout<<"班级四的平均成绩排序: "<<i<<" "<<class4[i].score_average<<endl;};break;
default:cout<<"输入错误!"<<endl;}};break;
case 5:
{cout<<"全校排名为:"<<endl;
bubble(t);
for(i=0;i<class_number*student_number;i++)
cout<<"1 "<<t[i].score_average<<endl;
}
case 6:cout<<"退出菜单!"<<endl;break;
default:cout<<"输出错误!"<<endl;break;
}}while(m!=6);
return 0;}
你能单步调试到报错语句的代码么,不要整个都贴出来,没时间看啊