成绩查找 score_found.c
#include <stdlib.h>
typedef 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.2f\n",
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("\<<n你所查学生不存在!>>");
}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.2f\n",
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("\<<n你所查学生不存在!>>");
}
//查询后的选择
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
#include <stdlib.h>
typedef 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.2f\n",
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.2f\n",
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.2f\n",
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.2f\n",
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: 继续查询修改请输入2\n");
printf("—————————————————————————————\n");
chose4_2=fied_judje();//判断输入是否正确
if(chose4_2==1)break;
else continue;
}
}
成绩追加 score_add.c
#include <stdlib.h>
#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<n;i++)
{
p=p->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: 继续成绩追加请输入2\n");
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;i<n;i++)
{
p->average=(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;i<n-1;i++)
{
m=i;
for(j=i+1;j<n;j++)
{
if(sort[m].average>sort[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.2f\n",
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.2f\n",
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.2f\n",
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.2f\n",
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;j<n;j++)
{
sort_single[i][j]=*p;
p=p->next;
}
}
////按从小到大排序
for(i=0;i<5;i++)
{
for(j=0;j<n-1;j++)
{
m=j;
for(k=j+1;k<n;k++)
{
if(sort_single[i][m].score[i]>sort_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 选择从小到大输出请输入:2\n");
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.2f\n",
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<n;i++)
{
printf("%s %d %s %6.2f\n",
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]);
}
}
int chose_3;
printf("\n——————————————————————————");
printf("\n继续选择请输入1: 退出单科排序请输入:2\n");
printf("——————————————————————————\n");
chose_3=fied_judje();
if(chose_3==1) continue;
else break;
}
}
未完待续,请参见结构体链表学生管理系统_3
https://www.imooc.com/article/22419
仅供参考,不足的地方还望原谅!!!
**by:郑轻大学生**
点击查看更多内容
3人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦