C语言课程设计 学生成绩管理系统.docx

上传人:b****6 文档编号:6553606 上传时间:2023-01-07 格式:DOCX 页数:20 大小:17.51KB
下载 相关 举报
C语言课程设计 学生成绩管理系统.docx_第1页
第1页 / 共20页
C语言课程设计 学生成绩管理系统.docx_第2页
第2页 / 共20页
C语言课程设计 学生成绩管理系统.docx_第3页
第3页 / 共20页
C语言课程设计 学生成绩管理系统.docx_第4页
第4页 / 共20页
C语言课程设计 学生成绩管理系统.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

C语言课程设计 学生成绩管理系统.docx

《C语言课程设计 学生成绩管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计 学生成绩管理系统.docx(20页珍藏版)》请在冰豆网上搜索。

C语言课程设计 学生成绩管理系统.docx

C语言课程设计学生成绩管理系统

#include

#include

#include

#include

typedefstructstudent/*定义一个单链表*/

{

charsno[10];

charname[10];

intChinese;

intMath;

intEnglish;

intsum;

floatavg;

structstudent*next;

}student1,*grade;

gradeget_info(gradeL)//输入学生信息

{

student1*s,*p=NULL,*q;

intflag,n,i;

charchoice='Y';

while(choice!

='N'&&choice!

='n')

{

printf("\n请输入要录入的学生个数:

");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

s=(student1*)malloc(sizeof(student1));

printf("\n请输入学生的学号:

\n");

scanf("%s",&s->sno);

printf("\n请输入学生的姓名:

\n");

scanf("%s",&s->name);

printf("\n请输入学生的语文成绩:

\n");

scanf("%d",&s->Chinese);

printf("\n请输入学生的数学成绩:

\n");

scanf("%d",&s->Math);

printf("\n请输入学生的英语成绩:

\n");

scanf("%d",&s->English);

s->sum=s->Chinese+s->Math+s->English;

s->avg=(float)s->sum/3;

if(L!

=NULL)

{

q=L;

p=L;

while(q)

{

flag=strcmp(q->sno,s->sno);

if(flag==0)

{

printf("该学生已存在!

\n");

break;

}

q=q->next;

}

if(flag!

=0)

{

while(p->next)p=p->next;

p->next=s;

p=s;

s->next=NULL;/*尾结点的指针置空,下同!

*/

}

}

else

{

L=s;

s->next=NULL;

}

}

printf("\n是否继续?

(Y/N或y/n):

");

scanf("%s",&choice);

system("cls");

}

returnL;

}

sno_select(gradeL)/*按学生学号查找*/

{

student1*p=L;

charnum[10],choice='Y';

inti=1,flag;

while(choice!

='N'&&choice!

='n')

{

printf("\n请输入该学生的学号:

");

scanf("%s",&num);

while(p)

{

flag=strcmp(p->sno,num);

if(flag==0)

{

printf("\n*************************************************************\n");

printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");

printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);

printf("***************************************************************\n");

break;

}

elsep=p->next;

}

if(flag)printf("\n不存在该学号的学生!

\n\n");

printf("继续查找?

(Y/N或y/n):

");

scanf("%s",&choice);

system("cls");

}

return0;

}

grade_select(gradeL)/*按分数段查询*/

{

intn,m,j,k=0,x=0,y=0;

charchoice='Y';

student1*p=L;

while(choice!

='N'&&choice!

='n')

{

printf("\n可查找的科目的菜单如下:

\n");

printf("\t1.语文2.数学3.英语\n");

printf("请选择(输入序号即可):

");

scanf("%d",&j);

printf("\n请输入一个分数段,即输入n,m的值(n

");

scanf("%d%d",&n,&m);

printf("\n*************************************************************\n");

printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");

while(p)

{

if(j==1)

{

x=1;

y=1;

if(p->Chinese>=n&&p->Chinese<=m)

{

printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);

k=1;

}

}

if(j==2)

{

k=1;

y=1;

if(p->Math>=n&&p->Math<=m)

{

printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);

x=1;

}

}

if(j==3)

{

k=1;

x=1;

if(p->English>=n&&p->English<=m)

{

printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);

}

}

p=p->next;

}

printf("\n*************************************************************\n");

if(L==NULL)printf("该系统还没有存放数据!

\n\n");

else

{

if(k==0)printf("没有学生的语文成绩在这个分数段上\n\n");

if(x==0)printf("没有学生的数学成绩在这个分数段上\n\n");

if(y==0)printf("没有学生的英语成绩在这个分数段上\n\n");

}

k=0;

x=0;

y=0;

printf("继续查找?

(Y/N或y/n):

");

scanf("%s",&choice);

system("cls");

}

}

statistics(gradeL)/*统计函数*/

{

student1*p=L;

inti=0;

charchoice='N';

floatall_avg=0;

while(choice!

='Y'&&choice!

='y')

{

while(p)

{

all_avg=all_avg+p->avg;

p=p->next;

i++;

}

printf("\n===================================================\n");

printf("该班级总人数为:

%d\n",i);

if(L==NULL)printf("该班级的平均分为:

0\n");

elseprintf("该班级的平均分为:

%5.2f\n",all_avg/i);

printf("===================================================\n");

printf("\n退出?

(Y或y):

");

scanf("%s",&choice);

}

system("cls");

}

gradedelete_grade(gradeL)/*删除指定学生成绩函数*/

{

student1*p=L,*q=L;

inti=1,flag;

charchoice='Y',num[10];

while(choice!

='N'&&choice!

='n')

{

printf("\n===================================================\n");

if(L==NULL)printf("该系统中不存在任何数据\n\n");

else

{

printf("\n请输入想要删除的学生学号:

");

scanf("%s",&num);

while(p)

{

flag=strcmp(p->sno,num);

if(flag==0)

{

if(q==p)

{

L=q->next;

free(q);

}

else

{

while(q->next!

=p)q=q->next;

q->next=p->next;

free(p);

}

break;

}

p=p->next;

}

if(flag)printf("\n不存在该学生");

elseprintf("\n删除成功!

");

printf("\n===================================================\n");

}

p=L;

q=L;

printf("继续删除?

(Y/N或y/n):

");

scanf("%s",&choice);

system("cls");

}

returnL;

}

asc_order_grade(gradeL)/*升序排序函数*/

{

intk,x=1,n=0,m,y;

floatz;

student1*p,*q,*s=L;

chart[10],choice;

while(s)/*计算链表数据个数n*/

{

s=s->next;

n++;

}

while(x)

{

choice='N';

printf("****************************************\n");

printf("成绩升序排序菜单如下:

\n");

printf("-----------------------------------\n");

printf("1.按语文成绩升序排序\n");

printf("2.按数学成绩升序排序\n");

printf("3.按英语成绩升序排序\n");

printf("4.按总成绩升序排序\n");

printf("5.按平均成绩升序排序\n");

printf("6.返回主菜单\n");

printf("****************************************\n");

printf("请选择(输入菜单序号即可):

");

scanf("%d",&k);

system("cls");

if(k==1)/*按语文成绩升序排序*/

{

while(choice!

='Y'&&choice!

='y')

{

for(m=0;m

{

p=L;

while(p->next)

{

q=p->next;

if(p->Chinese>=q->Chinese)

{

strcpy(t,p->sno);/*学号交换*/

strcpy(p->sno,q->sno);

strcpy(q->sno,t);

strcpy(t,p->name);/*学号交换*/

strcpy(p->name,q->name);

strcpy(q->name,t);

y=p->Chinese;/*语文成绩交换*/

p->Chinese=q->Chinese;

q->Chinese=y;

y=p->Math;/*数学成绩交换*/

p->Math=q->Math;

q->Math=y;

y=p->English;/*英语成绩交换*/

p->English=q->English;

q->English=y;

y=p->sum;/*总成绩交换*/

p->sum=q->sum;

q->sum=y;

z=p->avg;/*平均成绩交换*/

p->avg=q->avg;

q->avg=z;

}

p=p->next;

}

}

p=L;

printf("\n按语文成绩升序排序的最终结果为:

\n");

printf("\n*************************************************************\n");

printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");

while(p)

{

printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);

p=p->next;

}

printf("\n*************************************************************\n");

printf("\n\n");

printf("退出?

(Y或y)");

scanf("%s",&choice);

system("cls");

}

}

elseif(k==2)/*按数学成绩升序排序*/

{

while(choice!

='Y'&&choice!

='y')

{

for(m=0;m

{

p=L;

while(p->next)

{

q=p->next;

if(p->Math>=q->Math)

{

strcpy(t,p->sno);/*学号交换*/

strcpy(p->sno,q->sno);

strcpy(q->sno,t);

strcpy(t,p->name);/*学号交换*/

strcpy(p->name,q->name);

strcpy(q->name,t);

y=p->Chinese;/*语文成绩交换*/

p->Chinese=q->Chinese;

q->Chinese=y;

y=p->Math;/*数学成绩交换*/

p->Math=q->Math;

q->Math=y;

y=p->English;/*英语成绩交换*/

p->English=q->English;

q->English=y;

y=p->sum;/*总成绩交换*/

p->sum=q->sum;

q->sum=y;

z=p->avg;/*平均成绩交换*/

p->avg=q->avg;

q->avg=z;

}

p=p->next;

}

}

p=L;

printf("\n按数学成绩升序排序的最终结果为:

\n");

printf("\n*************************************************************\n");

printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");

while(p)

{

printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);

p=p->next;

}

printf("\n*************************************************************\n");

printf("\n\n");

printf("退出?

(Y或y)");

scanf("%s",&choice);

system("cls");

}

}

elseif(k==3)/*按英语成绩升序排序*/

{

while(choice!

='Y'&&choice!

='y')

{

for(m=0;m

{

p=L;

while(p->next)

{

q=p->next;

if(p->English>=q->English)

{

strcpy(t,p->sno);/*学号交换*/

strcpy(p->sno,q->sno);

strcpy(q->sno,t);

strcpy(t,p->name);/*学号交换*/

strcpy(p->name,q->name);

strcpy(q->name,t);

y=p->Chinese;/*语文成绩交换*/

p->Chinese=q->Chinese;

q->Chinese=y;

y=p->Math;/*数学成绩交换*/

p->Math=q->Math;

q->Math=y;

y=p->English;/*英语成绩交换*/

p->English=q->English;

q->English=y;

y=p->sum;/*总成绩交换*/

p->sum=q->sum;

q->sum=y;

z=p->avg;/*平均成绩交换*/

p->avg=q->avg;

q->avg=z;

}

p=p->next;

}

}

p=L;

printf("\n按英语成绩升序排序的最终结果为:

\n");

printf("\n*************************************************************\n");

printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");

while(p)

{

printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);

p=p->next;

}

printf("\n*************************************************************\n");

printf("\n\n");

printf("退出?

(Y或y)");

scanf("%s",&choice);

system("cls");

}

}

elseif(k==4)/*按总成绩升序排序*/

{

while(choice!

='Y'&&choice!

='y')

{

for(m=0;m

{

p=L;

while(p->next)

{

q=p->next;

if(p->sum>=q->sum)

{

strcpy(t,p->sno);/*学号交换*/

strcpy(p->sno,q->sno);

strcpy(q->sno,t);

strcpy(t,p->name);/*学号交换*/

strcpy(p->name,q->name);

strcpy(q->name,t);

y=p->Chinese;/*语文成绩交换*/

p->Chinese=q->Chinese;

q->Chinese=y;

y=p->Math;/*数学成绩交换*/

p->Math=q->Math;

q->Math=y;

y=p->English;/*英语成绩交换*/

p->English=q->English;

q->English=y;

y=p->sum;/*总成绩交换*/

p->sum=q->sum;

q->sum=y;

z=p->avg;/*平均成绩交换*/

p->avg=q->avg;

q->avg=z;

}

p=p->next;

}

}

p=L;

printf("\n按总成绩升序排序的最终结果为:

\n");

printf("\n*************************************************************\n");

printf("\t学号\t姓名\t语文\t数学\t英语\t总分\t平均分\n");

while(p)

{

printf("\t%s\t%s\t%d\t%d\t%d\t%d\t%.2f\n",p->sno,p->name,p->Chinese,p->Math,p->English,p->sum,p->avg);

p=p->next;

}

printf("\n*************************************************************\n");

printf("\n\n");

printf("退出?

(Y或y)");

scanf("%s",&choice);

system("cls");

}

}

elseif(k==5)/*按平均绩升序排序*/

{

while(choice!

='Y'&&choice!

='y')

{

for(m=0;m

{

p=L;

while(p->next)

{

q=p->next;

if(p->avg>=q->avg)

{

strcpy(t,p->sno);/*学号交换*/

strcpy(p->sno,q->sno);

strcpy(q->

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1