首页 > 代码库 > 学生成绩管理程序(C语言dos程序)

学生成绩管理程序(C语言dos程序)

在昨天写的一个血生成绩管理程序

给大家分享一下

本程序仅供学习交流

代码如下:

  1 /*本程序为简单的学生信息管理系统,作为技术交流,并不作为其它用途*/
  2 #include<stdio.h>
  3 #include<string.h>
  4 
  5 void rank1(float b[]);
  6 int count = 1;
  7 //结构体
  8 struct student
  9 {
 10     char name[10];    //学生的姓名
 11     char subject[10];    //学生的科目
 12     float score[5];    //学生的成绩
 13     float sum;    //学生的总成绩
 14     float average;    //学生的平均分
 15     float min;    //最低分
 16     float max;    //最高分
 17     int rank;    //排名
 18 };
 19 struct student stu[5];
 20 //主函数
 21 int main()
 22 {
 23     char name1[5][10] = { "刘玮","刘然","刘潇","刘鑫","刘鹏" };
 24     char subject1[5][10] = { "语文","数学","英语","物理","化学" };
 25     char title[11][10] = { "姓名","语文","数学","英语","物理","化学","总分","平均分","最高分","最低分","排名" };
 26     int i, j;
 27     float b[5];
 28     //复制姓名到结构体里面
 29     for (i = 0;i < 5;i++)
 30     {
 31         strcpy_s(stu[i].name, name1[i]);
 32         strcpy_s(stu[i].subject, subject1[i]);
 33     }
 34 
 35     printf("请根据提示输入一下信息:\n\n");
 36     //根据提示输入各位学生的成绩信息
 37     for (i = 0;i < 5;i++)
 38     {
 39         printf("请输入%s的成绩:\n", stu[i].name);
 40         for (j = 0;j < 5;j++)
 41         {
 42             printf("%s:", stu[j].subject);
 43             scanf_s("%f", &stu[i].score[j]);
 44         }
 45         printf("\n");
 46     }
 47     //处理个学生的信息
 48     for (i = 0;i < 5;i++)
 49     {
 50         stu[i].sum = 0;
 51         stu[i].min = stu[i].max = stu[i].score[0];
 52         for (j = 0;j < 5;j++)
 53         {
 54             stu[i].sum += stu[i].score[j];
 55             if (stu[i].max < stu[i].score[j])    stu[i].max = stu[i].score[j];
 56             if (stu[i].min > stu[i].score[j])    stu[i].min = stu[i].score[j];
 57         }
 58         stu[i].average = stu[i].sum / 5;
 59     }
 60     //把总分复制到另一个数组里面方便调用
 61     for (i = 0;i < 5;i++)
 62         b[i] = stu[i].sum;
 63     //调用排名函数
 64     rank1(b);
 65     //对学生成绩信息进行输出
 66     printf("学生成绩信息处理为:\n\n");
 67     for (i = 0;i < 11;i++)
 68         printf("%s\t", title[i]);
 69     printf("\n");
 70     printf("-------------------------------------------------------------------------------------------\n");
 71     for (i = 0;i < 5;i++)
 72     {
 73         printf("%s\t", stu[i].name);
 74         for (j = 0;j < 5;j++)
 75         {
 76             printf("%.f\t", stu[i].score[j]);
 77         }
 78         //输出总分
 79         printf("%.f\t", stu[i].sum);
 80         //输出平均分
 81         printf("%.2f\t", stu[i].average);
 82         //输出最高分
 83         printf("%.f\t", stu[i].max);
 84         //输出最低分
 85         printf("%.f\t", stu[i].min);
 86         //输出排名
 87         printf("第%d名", stu[i].rank);
 88         printf("\n");
 89     }
 90 }
 91 //对学生成绩进行排名的函数
 92 void rank1(float b[])
 93 {
 94     int i, j;
 95     float temp;
 96     //用冒泡排序法对数组进行排序(由大到小)
 97     for (i = 0;i < 5;i++)
 98     {
 99         for (j = 0;j<5 - i;j++)
100         {
101             if (b[j] < b[j + 1])
102             {
103                 temp = b[j];
104                 b[j] = b[j + 1];
105                 b[j + 1] = temp;
106             }
107         }
108     }
109     printf("成绩总分排名为:\n\n");
110     //对数组进行排名
111     for (i = 0;i < 5;i++)
112         for (j = 0;j < 5;j++)
113             if (b[i] == stu[j].sum)
114             {
115                 stu[j].rank = count++;
116                 break;
117             }
118     //解决排名为0的问题
119     for (i = 0;i < 5;i++)
120     {
121         if (stu[i].rank == 0)
122         {
123             for (j = 0;j < i;j++)
124             {
125                 if (stu[j].sum == stu[i].sum)
126                     stu[i].rank = stu[j].rank - 1;
127             }
128         }
129     }
130 
131 }

声明:本人的程序是在vs环境下运行成功的,至于有些代码的用法可能与其它的编译器有差别,不过都是少数甚至没有。

本程序不用做其它用途。

学生成绩管理程序(C语言dos程序)