快救救孩子吧!写了一下午的题没有过!

本人大一菜鸟,写一个题目写了一下午还没过,真的很崩溃,有哪个大佬可以帮忙看看,万分感谢!

img

img


下面是我的代码
#include
#include
using namespace std;
struct information{
int id,grade1,grade2,grade3;
char name[51];
information* next;
information* last;
};
struct information * phead;
void addastudent();
void revise();
void Delete();
void SearchById();
void SearchByName();
void arrangebyId();
void arrangebygrades();
void print();
int main()
{
int a;
phead=new information;
phead->id=0;
phead->grade1=0;
phead->grade2=0;
phead->grade3=0;
phead->last=NULL;phead->next=NULL;
cin>>a;
while(a!=0){

switch(a)
{
    case 1:
        addastudent();break;
    case 2:
        revise();break;
    case 3:
        Delete();break;
    case 4:
        SearchById();break;
    case 5:
        arrangebyId();
        SearchByName();break;
    case 6:
        arrangebyId();
        print();break;
    case 7:
        arrangebygrades();
        print();
}
cin>>a;
}

return 0;

}
void addastudent()
{
information* p=phead->next;
if(p==NULL)
{p=new information;
cin>>p->id>>p->grade1>>p->grade2>>p->grade3;
cin.getline(p->name,51);
p->last=phead;p->next=NULL;phead->next=p;
}
else {
information* tmp=NULL;
for(;p!=NULL;p=p->next)tmp=p;
p=new information;
cin>>p->id>>p->grade1>>p->grade2>>p->grade3;
cin.getline(p->name,51);
p->last=tmp;p->next=NULL;p->last->next=p;
}
}
void revise()
{
int id1;
cin>>id1;
information* p=phead->next;
for(;p!=NULL;p=p->next)
{
if(p->id==id1){p->id=id1;
cin>>p->grade1>>p->grade2>>p->grade3;
cin.getline(p->name,51);
}
}
}
void Delete()
{
int id2;
cin>>id2;
information* p=phead->next;
for(;p!=NULL;p=p->next)
{
if(p->id==id2){
p->last->next=p->next;
p->next->last=p->last;
delete p;
}
}
}
void SearchById()
{
int id3;cin>>id3;
information* p=phead->next;
for(;p!=NULL;p=p->next)
{
if(p->id==id3){
cout<id<<" "<name<<" "<grade1<<" "<grade2<<" "<grade3<<endl;break;
}
}
}
void SearchByName()
{
char name1[51];cin.getline(name1,51);;
information* p=phead->next;
for(;p!=NULL;p=p->next)
{
if(strcmp(p->name,name1)==0){
cout<id<<" "<name<<" "<grade1<<" "<grade2<<" "<grade3<<endl;
}
}
}
void print()
{
information* p=phead->next;
for(;p!=NULL;p=p->next)
{
cout<id<<" "<name<<" "<grade1<<" "<grade2<<" "<grade3<<endl;
}
}
void arrangebyId()
{
information* p=phead->next;
for(;p!=NULL;p=p->next)
{
information* p0=p,tmpp=p;int tmpid=p->id;
for(;p0->next!=NULL;p0=p0->next)
{
if(tmpid>p0->next->id){
tmpp=p0->next;tmpid=p0->next->id;
}
}
tmpp->last->next=tmpp->next;tmpp->next->last=tmpp->last;
tmpp->last=p->last;tmpp->next=p;
p->last->next=tmpp;p->last=tmpp;
}
}
void arrangebygrades()
{
information
p=phead->next;int sumofgrades;
for(;p!=NULL;p=p->next)
{
information* p0=p,*tmpp=p;int sumofgrades=p->grade1+p->grade2+p->grade3;
for(;p0->next!=NULL;p0=p0->next)
{
int sumofgrades0=p0->next->grade1+p0->next->grade2+p0->next->grade3;
if(sumofgrades<sumofgrades0){
tmpp=p0->next;sumofgrades=sumofgrades0;
}
}
tmpp->last->next=tmpp->next;tmpp->next->last=tmpp->last;
tmpp->last=p->last;tmpp->next=p;
p->last->next=tmpp;p->last=tmpp;
}
}