程序设计语言VC++课程设计学生成绩管理系统.docx
《程序设计语言VC++课程设计学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《程序设计语言VC++课程设计学生成绩管理系统.docx(21页珍藏版)》请在冰豆网上搜索。
程序设计语言VC++课程设计学生成绩管理系统
1.
2.
3.
4.题目:
学生成绩管理系统
5.基本要求
(1)要求用VisualC++语言来实现一个简单的学生成绩管理系统,该系统完成之后,基本上要能够无错运行,能达到学生成绩管理系统的基本要求。
(2)各个功能分别使用函数来完成,主函数和各个函数分别存放在不同的.CPP文件中,要求使用头文件。
(3)准备系统模拟的数据,不得少于10条。
(4)成绩管理程序至少应具备以下功能:
1)输入:
学生的基本信息,包括学号.姓名.性别.籍贯.VisualC++成绩.英语成绩.物理成绩等;
2)计算:
每个学生的总成绩.平均成绩.所有学生单科的平均成绩,找出总成绩和单科成绩最高的学生并输出;
3)查询:
可以按学号.姓名.VisualC++成绩查询
4)4)排序:
可以按学号.姓名.VisualC++成绩.英语成绩.物理成绩.总成绩.平均成绩等进行排序并输出;
5)删除:
删除某条记录;
6)帮助和关于;
7)退出:
退出整个系统的运行。
8)可以增加更多的菜单项,比如设置颜色.字体风格等。
程序如下:
#include
#include
structnode{
intnum;
charname[10];
charsex[10];
charjiguan[10];
floatCscore;
floatEscore;
floatPscore;
floatsum;
floataverage;
node*next;
};
node*create(){
node*head;
node*p,*pend;
inta;
charb[10];
charc[10];
charf[10];
floatd1,d2,d3;
cout<<"请输入学号,姓名,性别,籍贯,C++成绩,英语成绩,物理成绩:
";
cin>>a>>b>>c>>f>>d1>>d2>>d3;
head=0;
inti=0;
while(i<2){
p=newnode;
p->num=a;
strcpy(p->name,b);
strcpy(p->sex,c);
strcpy(p->jiguan,f);
p->Cscore=d1;
p->Escore=d2;
p->Pscore=d3;
p->sum=(d1+d2+d3);
p->average=(d1+d2+d3)/3;
if(head==0){
head=p;
pend=p;}
else{pend->next=p;
pend=p;}
i++;
cout<<"请输入学号,姓名,性别,籍贯,C++成绩,英语成绩,物理成绩:
";
cin>>a>>b>>c>>f>>d1>>d2>>d3;
}
if(head)pend->next=0;
returnhead;
}
voidprint(node*head){
node*p;
floatm,n,k;
p=head;
while(p){
m+=p->Cscore;
n+=p->Escore;
k+=p->Pscore;
p=p->next;
}
m/=3;
n/=3;
k/=3;
node*p1,*p2,*p3,*p4,*p5;
p1=p2=p3=p4=p5=head;
while(p2)
{if(p2->sum>p1->sum)p1=p2;
if(p2->Cscore>p3->Cscore)p3=p2;
if(p2->Escore>p4->Escore)p4=p2;
if(p2->Pscore>p5->Pscore)p5=p2;
p2=p2->next;
}
cout<<"总成绩最高的学生:
";
cout<num<<'\t'<name<<'\t'<sex<<'\t'<jiguan<<'\t'<Cscore<<'\t'<Escore<<'\t'<Pscore<cout<<"C++成绩最高的学生:
";
cout<num<<'\t'<name<<'\t'<sex<<'\t'<jiguan<<'\t'<Cscore<<'\t'<Escore<<'\t'<Pscore<cout<<"英语成绩最高的学生:
";
cout<num<<'\t'<name<<'\t'<sex<<'\t'<jiguan<<'\t'<Cscore<<'\t'<Escore<<'\t'<Pscore<cout<<"物理成绩最高的学生:
";
cout<num<<'\t'<name<<'\t'<sex<<'\t'<jiguan<<'\t'<Cscore<<'\t'<Escore<<'\t'<Pscore<}
voidsearch(node*head,intdata){
node*p;
intm=0;
p=head;
if(head->num==data)
{
m=1;
}
while(p->next&&p->num!
=0)
p=p->next;
if(p->num==data)
{
m=1;
}
if(m==1)cout<num<<'\t'<name<<'\t'<sex<<'\t'<jiguan<<'\t'<Cscore<<'\t'<Escore<<'\t'<Pscore<elsecout<<"查询失败"<}
voidsearch(node*head,charn[10]){
node*p;
intm=0;
p=head;
if(strcmp(head->name,n)==0)
{
m=1;
}
while(p->next&&(p->name,n)!
=0)
p=p->next;
if(strcmp(p->name,n)==0)
{
m=1;
}
if(m==1)cout<num<<'\t'<name<<'\t'<sex<<'\t'<jiguan<<'\t'<Cscore<<'\t'<Escore<<'\t'<Pscore<elsecout<<"查询失败"<}
node*sort1(node*head)
{
node*p=head,*p1,*p2;
while(p->next!
=0)
{p1=p;
p2=p->next;
while(p2!
=0)
{
if(p2->numnum)
p1=p2;
p2=p2->next;
}
if(p!
=p1)
{
intr;charx[10];floats,t,i,j,h;
r=p->num;
strcpy(x,p->name);
s=p->Cscore;
t=p->Escore;
i=p->Pscore;
j=p->sum;
h=p->average;
p->num=p1->num;
strcpy(p->name,p1->name);
p->Cscore=p1->Cscore;
p->Escore=p1->Escore;
p->Pscore=p1->Pscore;
p->sum=p1->sum;
p->average=p1->average;
p1->num=r;
strcpy(p1->name,x);
p1->Cscore=s;
p1->Escore=t;
p1->Pscore=i;
p1->sum=j;
p1->average=h;
}
p=p->next;
}
returnhead;
}
node*sort2(node*head)
{
node*p=head,*p1,*p2;
while(p->next!
=0)
{p1=p;
p2=p->next;
while(p2!
=0)
{
if(strcmp(p2->name,p1->name)<0)
p1=p2;
p2=p2->next;
}
if(p!
=p1)
{
intr;charx[10];floats,t,i,j,h;
r=p->num;
strcpy(x,p->name);
s=p->Cscore;
t=p->Escore;
i=p->Pscore;
j=p->sum;
h=p->average;
p->num=p1->num;
strcpy(p->name,p1->name);
p->Cscore=p1->Cscore;
p->Escore=p1->Escore;
p->Pscore=p1->Pscore;
p->sum=p1->sum;
p->average=p1->average;
p1->num=r;
strcpy(p1->name,x);
p1->Cscore=s;
p1->Escore=t;
p1->Pscore=i;
p1->sum=j;
p1->average=h;
}
p=p->next;
}
returnhead;
}
node*sort3(node*head)
{
node*p=head,*p1,*p2;
while(p->next!
=0)
{p1=p;
p2=p->next;
while(p2!
=0)
{
if(p2->CscoreCscore)
p1=p2;
p2=p2->next;
}
if(p!
=p1)
{
intr;charx[10];floats,t,i,j,h;
r=p->num;
strcpy(x,p->name);
s=p->Cscore;
t=p->Escore;
i=p->Pscore;
j=p->sum;
h=p->average;
p->num=p1->num;
strcpy(p->name,p1->name);
p->Cscore=p1->Cscore;
p->Escore=p1->Escore;
p->Pscore=p1->Pscore;
p->sum=p1->sum;
p->average=p1->average;
p1->num=r;
strcpy(p1->name,x);
p1->Cscore=s;
p1->Escore=t;
p1->Pscore=i;
p1->sum=j;
p1->average=h;
}
p=p->next;
}
returnhead;
p=head;
}
node*sort4(node*head)
{
node*p=head,*p1,*p2;
while(p->next!
=0)
{p1=p;
p2=p->next;
while(p2!
=0)
{
if(p2->EscoreEscore)
p1=p2;
p2=p2->next;
}
if(p!
=p1)
{
intr;charx[10];floats,t,i,j,h;
r=p->num;
strcpy(x,p->name);
s=p->Cscore;
t=p->Escore;
i=p->Pscore;
j=p->sum;
h=p->average;
p->num=p1->num;
strcpy(p->name,p1->name);
p->Cscore=p1->Cscore;
p->Escore=p1->Escore;
p->Pscore=p1->Pscore;
p->sum=p1->sum;
p->average=p1->average;
p1->num=r;
strcpy(p1->name,x);
p1->Cscore=s;
p1->Escore=t;
p1->Pscore=i;
p1->sum=j;
p1->average=h;
}
p=p->next;
}
returnhead;
}
node*sort5(node*head)
{
node*p=head,*p1,*p2;
while(p->next!
=0)
{p1=p;
p2=p->next;
while(p2!
=0)
{
if(p2->PscorePscore)
p1=p2;
p2=p2->next;
}
if(p!
=p1)
{
intr;charx[10];floats,t,i,j,h;
r=p->num;
strcpy(x,p->name);
s=p->Cscore;
t=p->Escore;
i=p->Pscore;
j=p->sum;
h=p->average;
p->num=p1->num;
strcpy(p->name,p1->name);
p->Cscore=p1->Cscore;
p->Escore=p1->Escore;
p->Pscore=p1->Pscore;
p->sum=p1->sum;
p->average=p1->average;
p1->num=r;
strcpy(p1->name,x);
p1->Cscore=s;
p1->Escore=t;
p1->Pscore=i;
p1->sum=j;
p1->average=h;
}
p=p->next;
}
returnhead;
}
node*sort6(node*head)
{
node*p=head,*p1,*p2;
while(p->next!
=0)
{p1=p;
p2=p->next;
while(p2!
=0)
{
if(p2->sumsum)
p1=p2;
p2=p2->next;
}
if(p!
=p1)
{
intr;charx[10];floats,t,i,j,h;
r=p->num;
strcpy(x,p->name);
s=p->Cscore;
t=p->Escore;
i=p->Pscore;
j=p->sum;
h=p->average;
p->num=p1->num;
strcpy(p->name,p1->name);
p->Cscore=p1->Cscore;
p->Escore=p1->Escore;
p->Pscore=p1->Pscore;
p->sum=p1->sum;
p->average=p1->average;
p1->num=r;
strcpy(p1->name,x);
p1->Cscore=s;
p1->Escore=t;
p1->Pscore=i;
p1->sum=j;
p1->average=h;
}
p=p->next;
}
returnhead;
}
node*sort7(node*head)
{
node*p=head,*p1,*p2;
while(p->next!
=0)
{p1=p;
p2=p->next;
while(p2!
=0)
{
if(p2->averageaverage)
p1=p2;
p2=p2->next;
}
if(p!
=p1)
{
intr;charx[10];floats,t,i,j,h;
r=p->num;
strcpy(x,p->name);
s=p->Cscore;
t=p->Escore;
i=p->Pscore;
j=p->sum;
h=p->average;
p->num=p1->num;
strcpy(p->name,p1->name);
p->Cscore=p1->Cscore;
p->Escore=p1->Escore;
p->Pscore=p1->Pscore;
p->sum=p1->sum;
p->average=p1->average;
p1->num=r;
strcpy(p1->name,x);
p1->Cscore=s;
p1->Escore=t;
p1->Pscore=i;
p1->sum=j;
p1->average=h;
}
p=p->next;
}
returnhead;
}
voidout(node*head){
node*p=head;
while(p){
cout<num<<'\t'<name<<'\t'<sex<<'\t'<jiguan<<'\t'<Cscore<<'\t'<Escore<<'\t'<Pscore<p=p->next;}
}
node*delete_d(node*head,intg){
node*p1,*p2;
if(head->num==g)
{
p2=head;
head=head->next;
deletep2;
cout<<"成功删除记录"<}
else{p1=p2=head;
while(p2->num!
=g&&p2->next!
=0)
{p1=p2;p2=p2->next;}
if(p2->num==g)
{p1->next=p2->next;
deletep2;
cout<<"成功删除记录"<}
elsecout<<"没有找到要删除的记录"<}
returnhead;
}
voidmain()
{
cout<<"学生成绩管理统系"<cout<<"菜单:
"<cout<<"1:
输入"<<'\t'<<"2:
计算"<<'\t'<<"3:
查询"<<'\t'<<"4:
排序"<<'\t'<<"5:
删除"<<'\t'<<"6:
帮助和关于"<<'\t'<<"7:
退出"<intm;
cout<<"输入选项:
";
cin>>m;
node*head;
intk,data,g,f;
charn[10];
switch(m){
case1:
{cout<<"输入:
"<head=create();
}
case2:
{cout<<"计算:
"<print(head);
}
case3:
{cout<<"查询:
"<cout<<"选择查询的方式:
";
cin>>k;
if(k==1)
{cout<<"按学号查询:
"<cout<<"输入学号:
";
cin>>data;
search(head,data);
}
if(k==2)
{cout<<"按姓名查询:
"<cout<<"输入姓名:
";
cin>>n;
search(head,n);
}
}
case4:
{
cout<<"排序:
"<cout<<"选择排序的方式:
";
cin>>f;
if(f==1)
{cout<<"按学号排序:
"<sort1(head);
out(head);
}
if(f==2)
{cout<<"按姓名排序:
"<sort2(head);
out(head);
}
if(f==3)
{cout<<"按VC++成绩排序:
"<sort3(head);
out(head);
}
if(f==4)
{cout<<"按英语成绩排序:
"<sort4(head);
out(head);
}
if(f==5)
{cout<<"按物理成绩排序:
"<sort5(head);
out(head);
}
if(f==6)
{cout<<"按总成绩排序:
"<sort6(head);
out(head);
}
if(f==7)
{cout<<"按平均成绩排序:
"<sort7(head);
out(head);
}
}
case5:
{cout<<"删除:
"<cout<<"要删除的记录的学号为:
";
cin>>g;
delete_d(head,g);
}
case6:
{cout<<"帮助和关于"<case7:
{cout<<"退出";
break;
}
}
}