栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

结构体链表学生信息管理系统_2

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

结构体链表学生信息管理系统_2

成绩查找 score_found.c

#include 

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.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

#include 
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.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;inext;
 }
 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:郑轻大学生**
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/233582.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号