成绩查找 score_found.c #includetypedef struct Student { char classs[20];//班级 int num;//学号 char name[20];//名字 double score[5];//五科成绩 double average;//平均成绩 struct Student *next;//下一个地址 }stu; void score_found(stu *head)//成绩查找 { stu *p=head; for(;;) { printf("—————————————————————n"); printf("n按学号查找输入1: 按姓名查找输入2:n"); printf("n—————————————————————"); int chose3_1; chose3_1=fied_judje();//判断输入是否正确 if(chose3_1==1) { printf("请输入需要查找的学生的学号:"); int num; int lang1=0;//判断是否存在所查学生 scanf("%d",&num); for(;p!=NULL;) { p->average=(p->score[0]+p->score[1]+p->score[2]+p->score[3]+p->score[4])/5; if(num==p->num) { lang1=1; printf("n你所查学生的信息为:n"); printf("班级: 学号: 姓名: 五门成绩: 平均成绩:n"); printf("%s %d %s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn", p->classs,p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->score[4], p->average); } p=p->next; } if(lang1==0) printf("< >"); }else { printf("n请输入需要查找的学生的姓名:"); char name[20]; int lang2=0;//判断是否存在所查学生 scanf("%s",&name); for(;p!=NULL;) { p->average=(p->score[0]+p->score[1]+p->score[2]+p->score[3]+p->score[4])/5; if(!strcmp(name,p->name)) { printf("n你所查学生的信息为:n"); printf("班级: 学号: 姓名: 五门成绩: 平均成绩:n"); printf("%s %d %s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn", p->classs,p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->score[4], p->average); lang2=1; } p=p->next; } if(lang2==0) printf("< >"); } //查询后的选择 int chose3_2; printf("n—————————————————————"); printf("n退出查询请输入1: 继续查询请输入2:n"); printf("—————————————————————n"); chose3_2=fied_judje();//判断输入是否正确 if(chose3_2==1)break; else continue; } }
成绩修改 score_change.c #includetypedef struct Student { char classs[20];//班级 int num;//学号 char name[20];//名字 double score[5];//五科成绩 double average;//平均成绩 struct Student *next;//下一个地址 }stu; void score_change(stu *head)//成绩修改 { stu *p=head; for(;;) { printf("n—————————————————————————————"); printf("n按学号查找修改输入1: 按姓名查找修改输入2:n"); printf("—————————————————————————————n"); int chose_1; chose_1=fied_judje();//判断输入是否正确 if(chose_1==1) { printf("请输入需要查找修改的学生的学号:"); int num; int lang=0;//判断是否存在所查学生 scanf("%d",&num); for(;p!=NULL;) { if(num==p->num) { lang=1; p->average=(p->score[0]+p->score[1]+p->score[2]+p->score[3]+p->score[4])/5;//修改前的平均成绩 printf("n你所查学生的信息为:n"); printf("班级: 学号: 姓名: 五门成绩: 平均成绩:n"); printf("%s %d %s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn", p->classs,p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->score[4], p->average); printf("n请输入要修改的班级、姓名、学号、五门成绩n"); scanf("%s %d %s %lf %lf %lf %lf %lf",p->classs,&p->num,p->name,&p->score[0], &p->score[1],&p->score[2],&p->score[3],&p->score[4]); p->average=(p->score[0]+p->score[1]+p->score[2]+p->score[3]+p->score[4])/5;//平均成绩 printf("n你所修改后的学生的信息为:n"); printf("班级: 学号: 姓名: 五门成绩: 平均成绩:n"); printf("%s %d %s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn", p->classs,p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->score[4], p->average); } p=p->next; } if(lang==0) printf("n<<你所查学生不存在!>>"); }else { printf("n请输入需要查找修改的学生的姓名:"); char name[20]; int lang=0;//判断是否存在所查学生 scanf("%s",&name); for(;p!=NULL;) { if(!strcmp(name,p->name)) { lang=1; p->average=(p->score[0]+p->score[1]+p->score[2]+p->score[3]+p->score[4])/5;//修改前的平均成绩 printf("n你所查学生的信息为:n"); printf("班级: 学号: 姓名: 五门成绩: 平均成绩:n"); printf("%s %d %s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn", p->classs,p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->score[4], p->average); printf("n请输入要修改的班级、姓名、学号、五门成绩n"); scanf("%s %d %s %lf %lf %lf %lf %lf",p->classs,&p->num,p->name,&p->score[0], &p->score[1],&p->score[2],&p->score[3],&p->score[4]); p->average=(p->score[0]+p->score[1]+p->score[2]+p->score[3]+p->score[4])/5;//平均成绩 printf("n你所修改后的学生的信息为:n"); printf("班级: 学号: 姓名: 五门成绩: 平均成绩:n"); printf("%s %d %s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn", p->classs,p->num,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->score[4], p->average); } p=p->next; } if(lang==0) printf("n<<你所查学生不存在!>>n"); } //修改完后的选择 int chose4_2; printf("n—————————————————————————————"); printf("n退出查询修改请输入1: 继续查询修改请输入2n"); printf("—————————————————————————————n"); chose4_2=fied_judje();//判断输入是否正确 if(chose4_2==1)break; else continue; } }
成绩追加 score_add.c #include#define LEN sizeof(stu) typedef struct Student { char classs[20];//班级 int num;//学号 char name[20];//名字 double score[5];//五科成绩 double average;//平均成绩 struct Student *next;//下一个地址 }stu; extern n; void score_add(stu *head)//成绩追加 { for(;;) { stu *p=head; stu *padd; printf("n———————————————————————————"); printf("n请输入你需要添加学生的班级、学号、姓名、五门成绩n"); printf("———————————————————————————n"); int i; for(i=1;i next; } padd=(stu *)malloc(LEN); scanf("%s %d %s %lf %lf %lf %lf %lf",&padd->classs,&padd->num,&padd->name,&padd->score[0], &padd->score[1],&padd->score[2],&padd->score[3],&padd->score[4]); n++; p->next=padd; padd->next=NULL; //追加完后的选择 int chose5_1; printf("n———————————————————————————"); printf("n退出成绩追加请输入1: 继续成绩追加请输入2n"); printf("———————————————————————————n"); chose5_1=fied_judje();//判断输入是否正确 if(chose5_1==1)break; else continue; } }
成绩分段 score_stage.c
typedef struct Student
{
char classs[20];//班级
int num;//学号
char name[20];//名字
double score[5];//五科成绩
double average;//平均成绩
struct Student *next;//下一个地址
}stu;
extern n;
void score_stage(stu *head)//成绩分段
{
//先求平均成绩
stu *p=head;
stu sort[n];//排序临时数组
stu temp;//排序交换
int i,j,m;
//求平均值并且把所有学生数据复制到数组
for(i=0;iaverage=(p->score[0]+p->score[1]+p->score[2]+p->score[3]+p->score[4])/5;
sort[i]=*p;
p=p->next;
}
//按从小到大排序
for(i=0;isort[j].average)
{
m=j;
}
}
temp=sort[i];
sort[i]=sort[m];
sort[m]=temp;
}
//分段输出
printf("n下面是学生的信息:n");
printf("n第一阶段的学生总平均分大于等于90分n");
printf("班级: 学号: 姓名: 五门成绩: 平均成绩:n");
for(i=n-1;i>=0;i--)
{
if(sort[i].average>=90)
printf("%s %d %s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn",
sort[i].classs,sort[i].num,sort[i].name,sort[i].score[0],sort[i].score[1],sort[i].score[2],
sort[i].score[3],sort[i].score[4],sort[i].average);
}
printf("n第二阶段的学生总平均分大于等于80分n");
printf("班级: 学号: 姓名: 五门成绩: 平均成绩:n");
for(i=n-1;i>=0;i--)
{
if(sort[i].average>=80&&sort[i].average<90)
printf("%s %d %s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn",
sort[i].classs,sort[i].num,sort[i].name,sort[i].score[0],sort[i].score[1],sort[i].score[2],
sort[i].score[3],sort[i].score[4],sort[i].average);
}
printf("n第三阶段的学生总平均分大于等于60分n");
printf("班级: 学号: 姓名: 五门成绩: 平均成绩:n");
for(i=n-1;i>=0;i--)
{
if(sort[i].average>=60&&sort[i].average<80)
printf("%s %d %s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn",
sort[i].classs,sort[i].num,sort[i].name,sort[i].score[0],sort[i].score[1],sort[i].score[2],
sort[i].score[3],sort[i].score[4],sort[i].average);
}
printf("n第四阶段的学生总平均分小于60分n");
printf("班级: 学号: 姓名: 五门成绩: 平均成绩:n");
for(i=n-1;i>=0;i--)
{
if(sort[i].average<60)
printf("%s %d %s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2fn",
sort[i].classs,sort[i].num,sort[i].name,sort[i].score[0],sort[i].score[1],sort[i].score[2],
sort[i].score[3],sort[i].score[4],sort[i].average);
}
}
单科分段 single_ranking.c
typedef struct Student
{
char classs[20];//班级
int num;//学号
char name[20];//名字
double score[5];//五科成绩
double average;//平均成绩
struct Student *next;//下一个地址
}stu;
extern n;
void single_ranking(stu *head)//单科排名
{
stu *p;
stu sort_single[5][n];//排序临时数组
stu temp;//排序交换
//把链表复制到5个数组
int i,j,k,m;
for(i=0;i<5;i++)
{
p=head;
for(j=0;jnext;
}
}
////按从小到大排序
for(i=0;i<5;i++)
{
for(j=0;jsort_single[i][k].score[i])
m=k;
}
temp=sort_single[i][m];
sort_single[i][m]=sort_single[i][j];
sort_single[i][j]=temp;
}
}
for(;;)
{
int chose_1,chose_2;
printf("n请输入按第几科排名:");
for(;;)
{
scanf("%d",&chose_1);
if(chose_1<=5&&chose_1>=1)
{
break;
}
else
{
printf("n<<你的输入有错误请重新输入!>>n");
}
}
printf("n————————————————————————————————————");
printf("n选择按单科从大到小输出请输入:1 选择从小到大输出请输入:2n");
printf("—————————————————————————————————————n");
chose_2=fied_judje();
printf("n下面是学生的信息:n");
printf("班级: 学号: 姓名: 第%d科成绩: n",chose_1);
//排序输出
if(chose_2==1)//从大到小
{
for(i=n-1;i>=0;i--)
{
printf("%s %d %s %6.2fn",
sort_single[chose_1][i].classs,
sort_single[chose_1][i].num,
sort_single[chose_1][i].name,
sort_single[chose_1][i].score[chose_1]);
}
}else//从小到大
{
for(i=0;i
未完待续,请参见结构体链表学生管理系统_3
https://www.imooc.com/article/22419
仅供参考,不足的地方还望原谅!!!
**by:郑轻大学生**



