晕噢!!! 发错了程序~不过两个程序也差不多一样的`~ 这个程序才是让我满意一点的` 我用你们帮我修改的代码添加进去~~ 现在程序就是这样`~不过还是老问题~~唉~~~
#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 *pa,*pc;
int f;
char no[100];
cout<<"请输入你要删除学生的学号:";
cin>>no;
f=strlen(no);
if(f>20)
{
cout<<"**********你输入的学号长度,超过了规定的范围内**********\n";
return head;
}
pa=pc=head;
if(strcmp(pc->no,no)==0)
{
head=pc->next;
}
while((pc!=NULL)&&(strcmp(pc->no,no)!=0))
{
pa=pc;
pc=pc->next;
}
if(pc==NULL)
{
cout<<"\n******没有该学生的学号或者你的输入有误!******\n";
}
else
{
pa->next=pc->next;
delete pc;
}
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;
head=jlxslb(); /*建立学生成绩链表*/
jsxscj(head); /*计算学生成绩的平均分*/
scxslb(head); /*输入所有学生的信息*/
gm();
cout<<"请选择功能:";
cin>>i;
if(i=='6')
exit(0);
while(!(i>'0'&&i<'6'))
{
cout<<"\n-------你输入的功能值有误,请参考《功能提示》-------\n请选择功能:";
cin>>i;
}
while(i!='6')
{
if(i=='1')
crxsxc(head); /*插入一名学生信息*/
if(i=='2')
ckxsxc(head); /*查看一名学生信息*/
if(i=='3')
{
scxsc(head); /*删除一名学生信息*/
scxslb(head); /*输入所有学生的信息*/
}
if(i=='4')
scxslb(head); /*查看所有的学生信息*/
if(i=='5')
scxscjb(head); /*删除学生成绩表*/
cout<<"请选择功能:";
cin>>i;
if(i=='6')
exit(0);
while(!(i>'0'&&i<'6'))
{
cout<<"\n-------你输入的功能值有误,请参考《功能提示》-------\n请选择功能:";
cin>>i;
}
}
getchar();
return 0;
}