需要帮忙的是------------------红色的那段函数
我需要解决的问题------------注释是用蓝色的那里
我只想把这程序做得完美一点,太垃圾了,不要笑我噢,偶的心灵太弱小了
谢谢~~~~~~~~~~谢谢~~~~~~~~
#include <iostream>
using namespace std;
void gm()
{
cout<<"\n\n\n\t----------------------功能提示-----------------------\n";
cout<<"\t 1.在学生成绩表中,插入一名学生的信息,请输入“1”.\n";
cout<<"\t 2.查看一名学生的相关信息,请输入“2”.\n";
cout<<"\t 3.删除一名学生的所有信息,请输入“3”.\n";
cout<<"\t 4.查看学生成绩表中,所有学生的信息,请输入“4”.\n";
cout<<"\t 5.删除整个学生成绩表,请输入“5”.\n";
cout<<"\t 6.退出功能选项,请输入“6”.\n";
cout<<"\t-------------------------------------------------------\n\n\n";
}
void xsxcts() /*学生信息输入提示*/
{
cout<<"\n\t----------------------学生信息输入提示-----------------------\n";
cout<<"\t 1.输入的学号必须在20位数以内.\n";
cout<<"\t 2.输入的学生成绩不得小于0分或都大于120分.\n";
cout<<"\t 3.输入完一个项目时,请按回车,以便对下一信息的输入.\n";
cout<<"\t 4.输入“exit”,则结束对学生的相关信息的输入.\n\n";
cout<<"\t 例如:\n";
cout<<"\t 请输入第1学生的学号:1001 回车\n";
cout<<"\t 请输入第1学生的姓名:王明 回车\n";
cout<<"\t 请输入第1学生的数学成绩:80 回车\n";
cout<<"\t 请输入第1学生的英语成绩:90 回车\n";
cout<<"\t 请输入第2学生的学号:1003 回车\n";
cout<<"\t 请输入第2学生的姓名:小刚 回车\n";
cout<<"\t 请输入第2学生的数学成绩:70 回车\n";
cout<<"\t 请输入第2学生的英语成绩:80 回车\n";
cout<<"\t | \n";
cout<<"\t | \n";
cout<<"\t 请输入第N学生的学号:exit 回车\n";
cout<<"\t--------------------------------------------------------------\n\n\n";
}
struct student
{
char no[100];
char name[100];
int math,eng;
double ave;
struct student *next;
};
student *jlxslb() /*建立学生成绩链表*/
{
student *head,*p,*pt;
char no[20],a[5]="exit";
int j=1,f,h;
xsxcts(); /*学生信息输入提示*/
cout<<"--------------------------------------------------------------\n";
head=0;
cout<<"请输入第"<<j<<"学生的学号:";
cin>>no;
f=strlen(no);
while(f>20)
{
cout<<"你输入的学号长度,超过了规定的范围内!!\n请重新输入该学生的学号:";
cin>>no;
f=strlen(no);
}
if(strcmp(no,a)==0)
{
cout<<"\n\n\t--------------学生成绩表为空--------------\n\n";
exit(0);
}
while(strcmp(no,a)!=0)
{
p=new student;
strcpy(p->no,no);
cout<<"请输入第"<<j<<"学生的姓名:";
cin>>p->name;
h=strlen(p->name);
while(h>8)
{
cout<<"你输入的学生姓名,超过了规定的范围内!!\n请重新输入该学生的姓名:";
cin>>p->name;
h=strlen(p->name);
}
cout<<"请输入第"<<j<<"学生的数学成绩:";
cin>>p->math;
while(p->math<0||p->math>120)
{
cout<<"-----你输入的数学成绩有误!!请重新输入!!-----\n";
cout<<"请输入该学生的数学成绩:";
cin>>p->math;
}
cout<<"请输入第"<<j<<"学生的英语成绩:";
cin>>p->eng;
while(p->eng<0||p->eng>120)
{
cout<<"-----你输入的英语成绩有误!!请重新输入!!-----\n";
cout<<"请输入该学生的英语成绩:";
cin>>p->eng;
}
if(head==0)
{
head=p;
pt=p;
}
else
{
pt->next=p;
pt=p;
}
cout<<"请输入第"<<++j<<"学生的学号:";
cin>>no;
f=strlen(no);
while(f>20)
{
cout<<"你输入的学号长度,超过了规定的范围内!!\n请重新输入该学生的学号:";
cin>>no;
f=strlen(no);
}
}
cout<<"--------------------------------------------------------------\n";
pt->next=0;
return head;
}
student *jsxscj(student *head) /*计算学生成绩的平均分*/
{
student *p=head;
while(p!=0)
{
p->ave=(p->math+p->eng)/2.0;
p=p->next;
}
return head;
}
void scxslb(student *head) /*输入所有学生的信息*/
{
student *p=head;
cout<<"\n\n\t\t\t学生成绩表\n";
cout<<"\t学号"<<"\t姓名"<<"\t数学"<<"\t英语"<<"\t平均分\n";
while(p!=0)
{
cout<<"\t"<<p->no<<"\t"<<p->name<<"\t "<<p->math<<"\t "<<p->eng<<"\t "<<p->ave<<endl;
p=p->next;
}
}
student *crxsxc(student *head) /*插入一名学生信息*/
{
student *p,*x;
char no[100];
int f,h;
x=new student;
cout<<"请输入该学生的学号:";
cin>>x->no;
f=strlen(x->no);
while(f>20)
{
cout<<"你输入的学号长度,超过了规定的范围内!!\n请重新输入该学生的学号:";
cin>>x->no;
f=strlen(x->no);
}
cout<<"请输入该学生的姓名:";
cin>>x->name;
h=strlen(x->name);
while(h>8)
{
cout<<"你输入的学生姓名,超过了规定的范围内!!\n请重新输入该学生的姓名:";
cin>>x->name;
h=strlen(x->name);
}
cout<<"请输入该学生的数学成绩:";
cin>>x->math;
while(x->math<0||x->math>120)
{
cout<<"-----你输入的数学成绩有误!!请重新输入!!-----\n";
cout<<"请输入该学生的数学成绩:";
cin>>x->math;
}
cout<<"请输入该学生的英语成绩:";
cin>>x->eng;
while(x->eng<0||x->eng>120)
{
cout<<"-----你输入的英语成绩有误!!请重新输入!!-----\n";
cout<<"请输入该学生的英语成绩:";
cin>>x->eng;
}
x->ave=(x->math+x->eng)/2.0;
p=head;
cout<<"*********请输入你想在那位学生的学号后插入该学生的信息:";
cin>>no;
while(p!=0)
{
if(strcmp(p->no,no)==0)
{
x->next=p->next;
p->next=x;
scxslb(head); /*输入所有学生的信息*/
return head;
}
p=p->next;
}
cout<<"\n*********没有该学生的学号或者你的输入有误*********\n";
return head;
}
student *ckxsxc(student *head) /*查看一名学生信息*/
{
student *p;
int f;
char no[100];
cout<<"请输入你要查看学生的学号:";
cin>>no;
f=strlen(no);
if(f>20)
{
cout<<"**********你输入的学号长度,超过了规定的范围内**********\n";
return head;
}
p=head;
while(p!=0)
{
if(strcmp(p->no,no)==0)
{
cout<<"\t学号"<<"\t姓名"<<"\t数学"<<"\t英语"<<"\t平均分\n";
cout<<"\t"<<p->no<<"\t"<<p->name<<"\t "<<p->math<<"\t "<<p->eng<<"\t "<<p->ave<<endl;
return head;
}
p=p->next;
}
cout<<"**********没有你要查看学生的学号,或者你的输入有误*********\n";
return head;
}
student *scxsc(student *head) /*删除一名学生信息*/
{
student *p,*pc;
int f;
char no[100];
cout<<"请输入你要删除学生的学号:";
cin>>no;
f=strlen(no);
if(f>20)
{
cout<<"**********你输入的学号长度,超过了规定的范围内**********\n";
return head;
}
p=pc=head;
if(strcmp(p->no,no)==0)
{
head=p->next;
delete p; /*使用这条语句时,在执行别的功能,程序崩溃; 若不使用这条语句,执行别的功能时,
删除的第一位学生信息,还会显示出来*/
scxslb(head); /*输入所有学生的信息*/
return head;
}
while(p!=0)
{
if(strcmp(p->no,no)==0)
{
p->next=p->next->next; /*我要删除指定的一位学生的信息,但它删除的是下一位学生的信息.请在不改动该函数的格式下
帮我使用其他的方法看一下,谢谢了啵*/
scxslb(head); /*输入所有学生的信息*/
return head;
}
p=p->next;
}
cout<<"\n******没有该学生的学号或者你的输入有误!******\n";
return head;
}
void scxscjb(student *head) /*删除学生成绩表*/
{
student *p;
p=head;
while(head)
{
head=p->next;
delete p;
p=head;
}
cout<<"\n\n*********学生成绩表以为空*********\n\n";
exit (0);
}
int main(void)
{
student *head;
char i[1];
char s0[2]="0",s1[2]="1",s2[2]="2",s3[2]="3",s4[2]="4",s5[2]="5",s6[2]="6";
head=jlxslb(); /*建立学生成绩链表*/
jsxscj(head); /*计算学生成绩的平均分*/
scxslb(head); /*输入所有学生的信息*/
gm();
cout<<"请选择功能:";
cin>>i;
if(strcmp(i,s6)==0)
{
cout<<"\t\t*********你已退出功能选项*********\n";
exit(0);
}
while((strcmp(i,s0)<0)||(strcmp(i,s6)>0))
{
cout<<"\n-------你输入的功能值有误,请参考《功能提示》-------\n请选择功能:";
cin>>i;
}
while(strcmp(i,s0)>0&&strcmp(i,s6)<0)
{
if(strcmp(i,s1)==0)
crxsxc(head); /*插入一名学生信息*/
if(strcmp(i,s2)==0)
ckxsxc(head); /*查看一名学生信息*/
if(strcmp(i,s3)==0)
scxsc(head); /*删除一名学生信息*/
if(strcmp(i,s4)==0)
scxslb(head); /*查看所有的学生信息*/
if(strcmp(i,s5)==0)
scxscjb(head); /*删除学生成绩表*/
cout<<"请选择功能:";
cin>>i;
if(strcmp(i,s6)==0)
{
cout<<"\t\t*********你已退出功能选项*********\n";
exit(0);
}
while((strcmp(i,s0)<0)||(strcmp(i,s6)>0))
{
cout<<"\n-------你输入的功能值有误,请参考《功能提示》-------\n请选择功能:";
cin>>i;
}
}
getchar();
return 0;
}