精华内容
下载资源
问答
  • //二维数组总共pnum个学生,每个学生有knum门课程 int[][]all=new int[pnum][knum]; //总分数组 int[] sum=new int[pnum]; //平均分数组 int[] avg=new int[pnum]; //每个学生的分数信息字符串包括总分...
  • 选择界面②用二维数组和调用函数实现学号、语文、数 学、英语成绩的输入、求每-一个人的总成绩、平均分、显 示、查询、修改和排序(按总分)功能、输出各科最高分、 以及排序后的成绩表(包含表头)。
  • java实现学生成绩管理系统数组实现)

    千次阅读 多人点赞 2019-01-07 20:49:40
    1、需定义存储学生姓名的数组、存储课程名称的数组、各科成绩二维数组、存储总分的数组、存储平均分的数组、存储学生信息的数组(拼接学生姓名、各科成绩、总分、平均分) 2、对学生信息排序(根据总分排序) 3、...

    需求:
    录入班级学生的各科成绩,计算总分、平均分,并按总分降序排序
    在这里插入图片描述
    思路:
    1、需定义存储学生姓名的数组、存储课程名称的数组、各科成绩的二维数组、存储总分的数组、存储平均分的数组、存储学生信息的数组(拼接学生姓名、各科成绩、总分、平均分)
    2、对学生信息排序(根据总分排序)
    3、循环打印排序后的学生信息
    代码:

    package com.student.test;
    import java.util.Scanner;
    
    public class StudentM {
        public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入学生人数");
            int stuNum=sc.nextInt();
            System.out.println("请输入课程数");
            int couNum=sc.nextInt();
            String[] name=new String[stuNum];  //存储学生姓名
            String[] course=new String[couNum]; //存储课程名称
            int[][] score=new int[stuNum][couNum]; //存储各科成绩
            int[] sum=new int[stuNum];         //存储总分
            int[] avg=new int[stuNum];         //存储平均分
            String[] content=new String[stuNum];  //存储学生信息
            /**
             * 录入课程名称
             */
            for(int i=0;i<couNum;i++){
                System.out.println("请输入第"+(i+1)+"个课程名称");
                course[i]=sc.next();
            }
            /**
             * 录入学生各科成绩,同时计算总分、平均分
             */
             for(int i=0;i<stuNum;i++){
                 System.out.println("请输入第"+(i+1)+"个学生的名字");
                 name[i]=sc.next();
                 content[i]=name[i]+"\t\t";//拼接姓名
                 for(int j=0;j<couNum;j++){
                     System.out.println("请输入"+name[i]+course[j]+"的成绩");
                     score[i][j]=sc.nextInt();
                     sum[i]+=score[i][j];  //计算总分
                     content[i]+=score[i][j]+"\t\t"; //拼接各科成绩
                 }
                 avg[i]=sum[i]/stuNum; //计算平均分
                 content[i]+=sum[i]+"\t\t"+avg[i]+"\t\t"; //拼接总分、平均分
             }
    
            /**
             * 根据总分对学生成绩排序
             */
            for(int i=0;i<stuNum-1;i++){  //冒泡排序
                for(int j=0;j<stuNum-1;j++){
                    if(sum[j]<sum[j+1]){   //比较总分
                        int t=sum[j];      //交换总分
                        sum[j]=sum[j+1];
                        sum[j+1]=t;
                        String temp=content[j];  //交换字符串
                        content[j]=content[j+1];
                        content[j+1]=temp;
                    }
                }
            }
            /**
             * 打印学生成绩
             */
            System.out.print("姓名\t\t");
            for(int i=0;i<couNum;i++){
                System.out.print(course[i]+"\t\t");
            }
            System.out.println("总分\t\t平均分\t\t排名\t\t"); //表头
    
            for(int i=0;i<stuNum;i++){
                System.out.println(content[i]+"第"+(i+1)+"名\t\t");
            }
        }
    }
    
    

    运行结果:
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • P228计算机双学位第8章实验题:学生成绩管理系统 l在上次作业的基础上,改为每学生2门课,用二维数组编程实现相应功能,相应功能所有涉及分数的均需可以处理每门课程分数及每个学生课程总分。 l涉及到排序的,...

    高级语言程序设计报告

     

    实习题目

    第二次作业: 二维数组

      1. P228计算机双学位第8章实验题:学生成绩管理系统

    l 在上次作业的基础上,改为每学生2门课,用二维数组编程实现相应功能,相应功能所有涉及分数的均需可以处理每门课程分数及每个学生课程总分。

    l 涉及到排序的,均需提供冒泡及选择两种排序方法,可增加菜单项。

    l 功能5中按学号查询学生排名及成绩,要求用折半法,为此你的学生数据可以多一点。

    l 数组中可以事先有数据(省却每次输入数据浪费时间),为此输入数据菜单可以改造为增加数据菜单。

    l 在一次运行过程中,菜单功能应该可以循环多次使用,直到确定退出。

    l 程序输入界面应该是美观、友好的。

    l 本题无需在ACM系统中完成。

     

     

      1. 你的代码、注释及运行结果贴图。

    #include <stdio.h>

    #include <stdlib.h>

    #define N 30

    #define M  4

    void paixu(int a[][M],int m);

    void shuxuepaiming(int a[][M],int m);

    void yingyupaiming(int a[][M],int m);

    void zongfenpaiming(int a[][M],int m);

    void xuehaopaiming(int a[][M],int m);

    void  fenlei(int a[][M],int m);

    int chazhao(int a[][M],int m);

    void shuru(int a[][M],int m);

    int jisuan(int a[][M],int m);

    void shuchu(int a[][M],int m);

    int main()

    {

        int x,o,y,n,z,m,a[N][M];

        printf("      欢迎进入学生成绩管理系统\n");//进入系统

      printf("请输入人数 m:");

        scanf("%d",&m);

        for(o=0;o<m;o++)

       {

      a[o][0]=2014011000+o;

        a[o][1]=rand()%90+10;

          a[o][2]=rand()%90+10;

          a[o][3]=a[o][1]+a[o][2];

        }      

        for(y=0;y>=0;y++)                        //选择菜单

        {

        printf("1.手动输入数据\n");

        printf("2.计算总分和平均分\n");

        printf("3.按分数排名\n");

        printf("4.按学号排名\n");

        printf("5.按学号查找\n");

        printf("6.数据分析\n");

        printf("7.清单记录\n");

        printf("0.退出系统\n");

        printf("请输入您的选择:");

    scanf("%d",&n);                                                         

    switch(n)                             //选择结果

    {

    case 1:shuru(a,m);

           break;

    case 2:jisuan(a,m);

       break;

    case 3:paixu(a,m);

           break;

    case 4:xuehaopaiming(a,m);

       break;

    case 5:x=chazhao(a,m);

       printf("数学:%d 英语:%d 总分:%d\n",a[x][1],a[x][2],a[x][3]);

         break;

    case 6:fenlei(a,m);

        break;

    case 7:shuchu(a,m);

       break;

    case 0:break;

    }

    if(n==0)  break;                         //退出系统

        }

        return 0;

    }

    void shuru(int a[][M],int m)                 //手动输入数据函数

    {

    int  i,n,o;

    printf("请输入数据\n");

    for(i=0;i<m;i++)

    {

            printf("学号 数学 英语\n");

    scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);

            if(a[i][0]<0) break;

            a[i][3]=a[i][1]+a[i][2];

            printf("个人总分:%d\n",a[i][3]);

    }

    }

    int jisuan(int a[][M],int m)                   //计算各种分函数

    {

    int i,s=0,y=0,z=0;

    for(i=0;i<m;i++)

    {  

    s=s+a[i][1];

            y=y+a[i][2];

            z=z+a[i][3];        

    }

        printf("数学总分:%d 数学平均:%d 英语总分:%d 英语平均:%d\n",s,s/m,y,y/m);

        printf("              总分数:%d 平均分:%d\n",z,z/m);

    return (z);

    }

    void paixu(int a[][M],int m)                     //排序函数

    {

    int t;

    printf("按数学排名输入1,按英语排名输入2,按总分排名输入3\n");                //选择排序方法

    scanf("%d",&t);                         

    if(t==1)  shuxuepaiming(a,m);

        else   {                                        

                if(t==2)    yingyupaiming(a,m);

    else    zongfenpaiming(a,m);               

               }

    }

    void shuxuepaiming(int a[][M],int m)//数学排序函数

    {

    int i,t,p,q,o,g;

    printf("请选择排序方法:1.冒泡法 2.选择法");//选择排序方法

    scanf("%d",&g);

    if(g==2)

    {

    for(i=0;i<m;i++)//选择排序法

    {

    q=i;

    for(t=i+1;t<m;t++)

            {

    if(a[t][1]>a[i][1])

    {

    q=t;

    }    

            }

    if(q!=i)

    {

    a[q][1]=a[q][1]+a[i][1];

    a[i][1]=a[q][1]-a[i][1];

    a[q][1]=a[q][1]-a[i][1];

    }

    }

    }

    else

        {

    for(i=0;i<m;i++)//冒泡排序法

    {

    for(t=i+1;t<m;t++)

            {

    if(a[t][1]<a[i][1])

    {

    a[t][1]=a[t][1]+a[i][1];

    a[i][1]=a[t][1]-a[i][1];

    a[t][1]=a[t][1]-a[i][1];

    }    

            }

    }

        }

    printf("学号              数学     英语           总分\n");

    for(p=0;p<m;p++)

    {

    printf("%d     *      %d      *     %d      *      %d\n",a[p][0],a[p][1],a[p][2],a[p][3]);

        }

    }

    void yingyupaiming(int a[][M],int m)//英语排序函数

    {

    int i,t,p,q,o,g;

    printf("请选择排序方法:1.冒泡法 2.选择法");

    scanf("%d",&g);

    if(g==2)

    {

    for(i=0;i<m;i++)//选择排序法

    {

    q=i;

    for(t=i+1;t<m;t++)

            {

    if(a[t][2]>a[i][2])

    {

    q=t;

    }    

            }

    if(q!=i)

    {

    a[q][2]=a[q][2]+a[i][2];

    a[i][2]=a[q][2]-a[i][2];

    a[q][2]=a[q][2]-a[i][2];

    }

    }

    }

    else

        {

    for(i=0;i<m;i++)//冒泡排序法

    {

    for(t=i+1;t<m;t++)

            {

    if(a[t][2]<a[i][2])

    {

    a[t][2]=a[t][2]+a[i][2];

    a[i][2]=a[t][2]-a[i][2];

    a[t][2]=a[t][2]-a[i][2];

    }    

            }

    }

        }

    printf("学号              数学     英语           总分\n");

    for(p=0;p<m;p++)

    {

    printf("%d     *      %d      *     %d      *      %d\n",a[p][0],a[p][1],a[p][2],a[p][3]);

        }

    }

    void zongfenpaiming(int a[][M],int m)//总分排序函数

    {

    int i,t,p,q,o,g;

    printf("请选择排序方法:1.冒泡法 2.选择法");

    scanf("%d",&g);

    if(g==2)

    {

    for(i=0;i<m;i++)//选择排序法

    {

    q=i;

    for(t=i+1;t<m;t++)

            {

    if(a[t][3]>a[i][3])

    {

    q=t;

    }    

            }

    if(q!=i)

    {

    a[q][3]=a[q][3]+a[i][3];

    a[i][3]=a[q][3]-a[i][3];

    a[q][3]=a[q][3]-a[i][3];

    }

    }

     }

    else

        {

    for(i=0;i<m;i++)//冒泡排序法

    {

    for(t=i+1;t<m;t++)

            {

    if(a[t][3]<a[i][3])

    {

    a[t][3]=a[t][3]+a[i][3];

    a[i][3]=a[t][3]-a[i][3];

    a[t][3]=a[t][3]-a[i][3];

    }    

            }

    }

        }

    printf("学号              数学     英语           总分\n");

    for(p=0;p<m;p++)

    {

    printf("%d      *     %d      *     %d      *      %d\n",a[p][0],a[p][1],a[p][2],a[p][3]);

        }

    }

    void xuehaopaiming(int a[][M],int m)//学号排序函数

    {

    int i,t,p,q,o,g;

    printf("请选择排序方法:1.冒泡法 2.选择法");

    scanf("%d",&g);

    if(g==2)

    {

        for(i=0;i<m;i++)//选择排序法

    {

    q=i;

    for(t=i+1;t<m;t++)

            {

    if(a[t][0]>a[i][0])

    {

    q=t;

    }    

            }

    if(q!=i)

    {

    a[q][0]=a[q][0]+a[i][0];

    a[i][0]=a[q][0]-a[i][0];

    a[q][0]=a[q][0]-a[i][0];

    }

    }

        }

        else

        {

    for(i=0;i<m;i++)//冒泡排序法

    {

    for(t=i+1;t<m;t++)

            {

    if(a[t][0]<a[i][0])

    {

    a[t][0]=a[t][0]+a[i][0];

    a[i][0]=a[t][0]-a[i][0];

    a[t][0]=a[t][0]-a[i][0];

    }    

            }

    }

        }

    printf("学号              数学     英语           总分\n");

    for(p=0;p<m;p++)

    {

    printf("%d     *      %d      *     %d      *      %d\n",a[p][0],a[p][1],a[p][2],a[p][3]);

        }

    }

    void  fenlei(int a[][M],int m)//按成绩分类函数

    {

    int i,t,p=0,q=0,r=0,s=0;

    printf("数学分类输入1,英语分类输入2\n");

    scanf("%d",&i);

    for(t=0;t<m;t++)//优秀的

    {

    if(a[t][i]>=90)   p++;

    }

    for(t=0;t<m;t++)//良好的

    {

    if(a[t][i]>=80&&a[t][i]<=89)   q++;

    }

    for(t=0;t<m;t++)//中等的

    {

    if(a[t][i]>=70&&a[t][i]<=79)   r++;

    }

    for(t=0;t<m;t++)//及格的

    {

    if(a[t][i]>=60&&a[t][i]<=69)   s++;

    }

    printf("   优秀:%d 良好:%d 中等:%d 及格:%d 不及格:%d\n",p,q,r,s,m-p-q-r-s);

    printf("百分率:%d%%      %d%%     %d%%     %d%%       %d%%\n",100*p/m,100*q/m,100*r/m,100*s/m,100*(m-p-q-r-s)/m );

    }

    int chazhao(int a[][M],int m)//按学号查找函数

    {

    int b,c,d=0,e,f=0,low=0,high=m-1,mid;

    printf("请选择查找方法:1.折半查找 2.顺序查找\n");//选择查找方法

    scanf("%d",&e);

    if(e==1)

    {

    printf("请输入学生学号:");//折半查找

        scanf("%d",&b);

        do

        {

    while(low<=high)

    {

    mid=(high+low)/2;

    if(b>a[mid][0])

      low=mid+1;

    else if(b<a[mid][0])

         high=mid-1;

         else  {return mid ;f++;}

    }

    if(f!=0)  {

       break;}

    printf("无此学生成绩,请重试,若输入0,则退出:");

            scanf("%d",&b);

            if(b==0)  break;

            }while(b==0);

    }

    else

    {

    printf("请输入学生学号:");//顺序查找

    scanf("%d",&b);

    do

    {

    for(c=0;c<m;c++)

    {

    if(b==a[c][0])

    {   

    printf("数学:%d 英语:%d 总分:%d\n",a[c][1],a[c][2],a[c][3]);

            d++;

    }    

    }

    if(d==1)  break;

        printf("无此学生成绩,请重试,若输入0,则退出:");

        scanf("%d",&b);

        if(b==0)  break;

        }while(d==0);

        }

    }

    void shuchu(int a[][M],int m)//输出成绩单函数

    {

    int i,s=0,y=0,z=0,b;

    for(b=0;b<m;b++)

    {

    printf("学号:%d 数学:%d 英语:%d 总分:%d\n",a[b][0],a[b][1],a[b][2],a[b][3]);

        }

        for(i=0;i<m;i++)

    {  

    s=s+a[i][1];

            y=y+a[i][2];

            z=z+a[i][3];        

    }

        printf("数学总分:%d 数学平均:%d 英语总分:%d 英语平均:%d\n",s,s/m,y,y/m);

        printf("                总分数:%d 平均分:%d\n",z,z/m);

    }

     

     

     

      1. 设计及调试过程遇到的问题及解决方案。

        不会折半查找,不知道冒泡排序就是交换法,开始时遇到的各种高级问题,从没见过,还有对二维数组的使用真是尴尬,连调用都不会,后来才慢慢从书上边抄边学,明白了二维数组的调用注意什么,其实每次报告都会知道许多注意事项,然后就会用了,折半查找完全是从书上copy下来的,抄完也就会的差不多了,区分冒泡和交换是问同学的,那个高级问题其实我没有解决,后来直接按书上的抄下来,也就对了,波波老师死活不肯告诉我。看了刘兴的程序后震惊了,自己又添加了美化的零件,弥补了一些细节,让使用者不仅用的舒服,而且看得舒服,才是一个好的程序猿。

      1. 心得体会和自我对程序的评价。

    还是万事开头难,刚开始真不知道怎么下手,慢慢一点一点才搞出来的,有了第一个,就继续我的复制粘贴大业了,首先一定要迈出第一步,老拖着什么都做不成,这不狠下心来不也做成了吗,费劲,也要努力去抠。我感觉作报告真的很有用,能一下让我知道很多东西,以前不懂得都懂了,对于我的程序,和刘兴的相比真是不敢望其项背,在外观和实用性上有待改善,总之提升空间很大很大,加油,许恺,要做就做一个优质的程序员。

    转载于:https://www.cnblogs.com/xukaiae86/p/6414858.html

    展开全文
  • 某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,参考第11周在线测验中“学生成绩管理系统V2.0”,用二维字符数组作函数参数编程实现如下菜单驱动的学生成绩管理系统: (1)录入每个学生的学号、...
    某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,参考第11周在线测验中“学生成绩管理系统V2.0”,用二维字符数组作函数参数编程实现如下菜单驱动的学生成绩管理系统:
    (1)录入每个学生的学号、姓名和考试成绩;
    (2)计算课程的总分和平均分;
    (3)按成绩由高到低排出名次表;
    (4)按成绩由低到高排出名次表;
    (5)按学号由小到大排出成绩表;
    (6)按姓名的字典顺序排出成绩表;
    (7)按学号查询学生排名及其考试成绩;
    (8)按姓名查询学生排名及其考试成绩;
    (9)按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比;
    (10)输出每个学生的学号、姓名、考试成绩。
    要求程序运行后先显示如下菜单,并提示用户输入选项:
    1.Input record
    2.Caculate total and average score of course
    3.Sort in descending order by score
    4.Sort in ascending order by score
    5.Sort in ascending order by number
    6.Sort in dictionary order by name
    7.Search by number
    8.Search by name
    9.Statistic analysis
    10.List record
    0.Exit
    Please enter your choice:
    然后,根据用户输入的选项执行相应的操作。
    请按照下面的定义及函数原型编程
    #define   MAX_LEN  10        	/* 字符串最大长度 */
    #define   STU_NUM 30         /* 最多的学生人数 */
    int   Menu(void);
    void  ReadScore(long num[], char name[][MAX_LEN], float score[], int n);
    void  AverSumofScore(float score[], int n);
    void  SortbyScore(long num[], char name[][MAX_LEN], float score[], int n,
    int (*compare)(float a, float b));
    int   Ascending(float a, float b);
    int   Descending(float a, float b);
    void  SwapFloat(float *x, float *y);
    void  SwapLong(long *x, long *y);
    void  SwapChar(char x[], char y[]);
    void  AsSortbyNum(long num[], char name[][MAX_LEN], float score[], int n);
    void  SortbyName(long num[], char name[][MAX_LEN], float score[], int n);
    void  SearchbyNum(long num[], char name[][MAX_LEN], float score[], int n);
    void  SearchbyName(long num[], char name[][MAX_LEN], float score[], int n);
    void  StatisticAnalysis(float score[], int n);
    void  PrintScore(long num[], char name[][MAX_LEN], float score[], int n) ;
    程序运行结果示例:
    Input student number(n<30):
    6↙
    Management for Students' scores
    1.Input record
    2.Caculate total and average score of course
    3.Sort in descending order by score
    4.Sort in ascending order by score
    5.Sort in ascending order by number
    6.Sort in dictionary order by name
    7.Search by number
    8.Search by name
    9.Statistic analysis
    10.List record
    0.Exit
    Please Input your choice:
    1↙
    Input student's ID, name and score:
    11003001↙
    lisi↙
    87↙
    11003005↙
    heli↙
    98↙
    11003003↙
    ludi↙
    75↙
    11003002↙
    dumo↙
    48↙
    11003004↙
    zuma↙
    65↙
    11003006↙
    suyu↙
    100↙
    Management for Students' scores
    1.Input record
    2.Caculate total and average score of course
    3.Sort in descending order by score
    4.Sort in ascending order by score
    5.Sort in ascending order by number
    6.Sort in dictionary order by name
    7.Search by number
    8.Search by name
    9.Statistic analysis
    10.List record
    0.Exit
    Please Input your choice:
    2↙
    sum=473,aver=78.83
    Management for Students' scores
    1.Input record
    2.Caculate total and average score of course
    3.Sort in descending order by score
    4.Sort in ascending order by score
    5.Sort in ascending order by number
    6.Sort in dictionary order by name
    7.Search by number
    8.Search by name
    9.Statistic analysis
    10.List record
    0.Exit
    Please Input your choice:
    3↙
    Sort in descending order by score:
    11003006        suyu    100
    11003005        heli    98
    11003001        lisi    87
    11003003        ludi    75
    11003004        zuma    65
    11003002        dumo    48
    Management for Students' scores
    1.Input record
    2.Caculate total and average score of course
    3.Sort in descending order by score
    4.Sort in ascending order by score
    5.Sort in ascending order by number
    6.Sort in dictionary order by name
    7.Search by number
    8.Search by name
    9.Statistic analysis
    10.List record
    0.Exit
    Please Input your choice:
    4↙
    Sort in ascending order by score:
    11003002        dumo    48
    11003004        zuma    65
    11003003        ludi    75
    11003001        lisi    87
    11003005        heli    98
    11003006        suyu    100
    Management for Students' scores
    1.Input record
    2.Caculate total and average score of course
    3.Sort in descending order by score
    4.Sort in ascending order by score
    5.Sort in ascending order by number
    6.Sort in dictionary order by name
    7.Search by number
    8.Search by name
    9.Statistic analysis
    10.List record
    0.Exit
    Please Input your choice:
    5↙
    Sort in ascending order by number:
    11003001        lisi    87
    11003002        dumo    48
    11003003        ludi    75
    11003004        zuma    65
    11003005        heli    98
    11003006        suyu    100
    Management for Students' scores
    1.Input record
    2.Caculate total and average score of course
    3.Sort in descending order by score
    4.Sort in ascending order by score
    5.Sort in ascending order by number
    6.Sort in dictionary order by name
    7.Search by number
    8.Search by name
    9.Statistic analysis
    10.List record
    0.Exit
    Please Input your choice:
    6↙
    Sort in dictionary order by name:
    11003002        dumo    48
    11003005        heli    98
    11003001        lisi    87
    11003003        ludi    75
    11003006        suyu    100
    11003004        zuma    65
    Management for Students' scores
    1.Input record
    2.Caculate total and average score of course
    3.Sort in descending order by score
    4.Sort in ascending order by score
    5.Sort in ascending order by number
    6.Sort in dictionary order by name
    7.Search by number
    8.Search by name
    9.Statistic analysis
    10.List record
    0.Exit
    Please Input your choice:
    7↙
    Input the number you want to search:
    11003004↙
    11003004        zuma    65
    Management for Students' scores
    1.Input record
    2.Caculate total and average score of course
    3.Sort in descending order by score
    4.Sort in ascending order by score
    5.Sort in ascending order by number
    6.Sort in dictionary order by name
    7.Search by number
    8.Search by name
    9.Statistic analysis
    10.List record
    0.Exit
    Please Input your choice:
    8↙
    Input the name you want to search:
    heli↙
    11003005        heli    98
    Management for Students' scores
    1.Input record
    2.Caculate total and average score of course
    3.Sort in descending order by score
    4.Sort in ascending order by score
    5.Sort in ascending order by number
    6.Sort in dictionary order by name
    7.Search by number
    8.Search by name
    9.Statistic analysis
    10.List record
    0.Exit
    Please Input your choice:
    9↙
    <60     1       16.67%
    60-69   1       16.67%
    70-79   1       16.67%
    80-89   1       16.67%
    90-99   1       16.67%
    100     1       16.67%
    Management for Students' scores
    1.Input record
    2.Caculate total and average score of course
    3.Sort in descending order by score
    4.Sort in ascending order by score
    5.Sort in ascending order by number
    6.Sort in dictionary order by name
    7.Search by number
    8.Search by name
    9.Statistic analysis
    10.List record
    0.Exit
    Please Input your choice:
    10↙
    11003002        dumo    48
    11003005        heli    98
    11003001        lisi    87
    11003003        ludi    75
    11003006        suyu    100
    11003004        zuma    65
    Management for Students' scores
    1.Input record
    2.Caculate total and average score of course
    3.Sort in descending order by score
    4.Sort in ascending order by score
    5.Sort in ascending order by number
    6.Sort in dictionary order by name
    7.Search by number
    8.Search by name
    9.Statistic analysis
    10.List record
    0.Exit
    Please Input your choice:
    11↙
    Input error!
    Management for Students' scores
    1.Input record
    2.Caculate total and average score of course
    3.Sort in descending order by score
    4.Sort in ascending order by score
    5.Sort in ascending order by number
    6.Sort in dictionary order by name
    7.Search by number
    8.Search by name
    9.Statistic analysis
    10.List record
    0.Exit
    Please Input your choice:
    0↙
    End of program!
    
    输入格式:
    ( 1 ) 录入学生的人数:
                     **要求输入数据格式为:"%d"
                     **提示信息为:"Input student number(n<30):\n"
    ( 2 )录入每个学生的学号、姓名和考试成绩: 
                   **要求输入数据格式为:"%ld%s%f"
                   **提示信息为:"Input student's ID, name and score:\n"
    输出格式:
    计算课程的总分和平均分:
                  **要求输出总分与平均分格式为:"sum=%.0f,aver=%.2f\n"
    按成绩由高到低排出名次表:
                  **要求输出格式为:"%ld\t%s\t%.0f\n"
                  **提示信息为:"Sort in descending order by score:\n"
    按成绩由低到高排出名次表:
                  **要求输出格式为:"%ld\t%s\t%.0f\n"
                  **提示信息为:"Sort in ascending order by score:\n"
    按学号由小到大排出成绩表:
                  **要求输出格式为:"%ld\t%s\t%.0f\n"
                  **提示信息为:"Sort in ascending order by number:\n"
    按姓名的字典顺序排出成绩表
                  **要求输出格式为:"%ld\t%s\t%.0f\n"
                  **提示信息为:"Sort in dictionary order by name:\n"
    按学号查询学生排名及其考试成绩:
                   **如果未查到此学号的学生,提示信息为:"Not found!\n";
                   **如果查询到该学生,要求输出格式为:"%ld\t%s\t%.0f\n"
    按姓名查询学生排名及其考试成绩;
                   **如果未查到此学号的学生,提示信息为:"Not found!\n";
                   **如果查询到该学生,要求输出格式为:"%ld\t%s\t%.0f\n"
    按优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比:
                    **成绩<60输出提示格式为:"<60\t%d\t%.2f%%\n";
                    **成绩=100输出格式为:"%d\t%d\t%.2f%%\n";
                    **其他要求输出百分比格式为:"%d-%d\t%d\t%.2f%%\n" 
    输出每个学生的学号、姓名、考试成绩,以及课程总分和平均分
                    **输出格式为:"%ld\t%s\t%.0f\n"
    选择退出(菜单项0)
                    **提示信息:"End of program!"
    菜单项选择错误(不在0-10之间)
                    **提示信息:"Input error!\n"

    #include  <stdio.h>
    #include  <stdlib.h>
    #include  <string.h>
    #define   MAX_LEN  10           /* 字符串最大长度 */
    #define   STU_NUM 30         /* 最多的学生人数 */
    int   Menu(void);
    void  ReadScore(long num[], char name[][MAX_LEN], float score[], int n);
    void  AverSumofScore(float score[], int n);
    void  SortbyScore(long num[], char name[][MAX_LEN], float score[], int n,
                      int (*compare)(float a, float b));
    int   Ascending(float a, float b);
    int   Descending(float a, float b);
    void  SwapFloat(float *x, float *y);
    void  SwapLong(long *x, long *y);
    void  SwapChar(char x[], char y[]);
    void  AsSortbyNum(long num[], char name[][MAX_LEN], float score[], int n);
    void  SortbyName(long num[], char name[][MAX_LEN], float score[], int n);
    void  SearchbyNum(long num[], char name[][MAX_LEN], float score[], int n);
    void  SearchbyName(long num[], char name[][MAX_LEN], float score[], int n);
    void  StatisticAnalysis(float score[], int n);
    void  PrintScore(long num[], char name[][MAX_LEN], float score[], int n) ;
    int main()
    {                              
        char  ch;
        int   n = 0;
        float score[STU_NUM];
        long num[STU_NUM];
        char name[STU_NUM][MAX_LEN];
        printf("Input student number(n<30):\n");
        scanf("%d", &n);
        while (1)
        {                              
            ch = Menu();            /* 显示菜单,并读取用户输入 */
            switch (ch)
            {                              
            case 1:
                ReadScore(num, name, score, n);
                break;
            case 2:
                AverSumofScore(score, n);
                break;
            case 3:
                SortbyScore(num, name, score, n, Descending);
                printf("Sort in descending order by score:\n");
                PrintScore(num, name, score, n);
                break;
            case 4:
                SortbyScore(num, name, score, n, Ascending);
                printf("Sort in ascending order by score:\n");
                PrintScore(num, name, score, n);
                break;
            case 5:
                AsSortbyNum(num, name, score, n);
                printf("Sort in ascending order by number:\n");
                PrintScore(num, name, score, n);
                break;
            case 6:
                SortbyName(num, name, score, n);
                printf("Sort in dictionary order by name:\n");
                PrintScore(num, name, score, n);
                break;
            case 7:
                SearchbyNum(num, name, score, n);
                break;
            case 8:
                SearchbyName(num, name, score, n);
                break;
            case 9:
                StatisticAnalysis(score, n);
                break;
            case 10:
                PrintScore(num, name, score, n);
                break;
            case 0:
                printf("End of program!");
                exit(0);
            default:
                printf("Input error!\n");
            }
        }
        return 0;
    }                              
    /*  函数功能:显示菜单并获得用户键盘输入的选项 */
    int Menu(void)
    {                              
        int itemSelected;
        printf("Management for Students' scores\n");
        printf("1.Input record\n");
        printf("2.Caculate total and average score of course\n");
        printf("3.Sort in descending order by score\n");
        printf("4.Sort in ascending order by score\n");
        printf("5.Sort in ascending order by number\n");
        printf("6.Sort in dictionary order by name\n");
        printf("7.Search by number\n");
        printf("8.Search by name\n");
        printf("9.Statistic analysis\n");
        printf("10.List record\n");
        printf("0.Exit\n");
        printf("Please Input your choice:\n");
        scanf("%d", &itemSelected);     /* 读入用户输入 */
        return itemSelected;
    }                              
    /* 函数功能:输入n个学生的某门课成绩 */
    void ReadScore(long num[], char name[][MAX_LEN], float score[], int n)
    {                              
        int i;
        printf("Input student's ID, name and score:\n");
        for (i = 0; i < n; i++)
        {                              
            scanf("%ld%s%f", &num[i], name[i], &score[i]);
        }
    }                              
    /* 函数功能:计算全班总分和平均分 */
    void AverSumofScore(float score[], int n)
    {                              
        int    i;
        float  sum = 0;
        for (i = 0; i < n; i++)
        {                              
            sum = sum + score[i];
        }
        printf("sum=%.0f,aver=%.2f\n", sum, n > 0 ? sum / n : 0);
    }                              
    /* 函数功能:按选择法将数组score的元素值排序 */
    void SortbyScore(long num[], char name[][MAX_LEN], float score[], int n,
                     int (*compare)(float a, float b))
    {                              
        int i, j, k;
        for (i = 0; i < n - 1; i++)
        {                              
            k = i;
            for (j = i + 1; j < n; j++)
            {                              
                if ((*compare)(score[j], score[k])) k = j;
            }
            if (k != i)
            {                              
                SwapFloat(&score[k], &score[i]); /* 交换成绩 */
                SwapLong(&num[k], &num[i]);       /* 交换学号 */
                SwapChar(name[k], name[i]);       /* 交换姓名 */
            }
        }
    }                              
    /* 使数据按升序排序 */
    int Ascending(float a, float b)
    {                              
        return a < b;     /* 这样比较决定了按升序排序,如果a<b,则交换 */
    }                              
    /* 使数据按降序排序 */
    int Descending(float a, float b)
    {                              
        return a > b;    /* 这样比较决定了按降序排序,如果a>b,则交换 */
    }                              
    /* 交换两个单精度浮点型数据 */
    void  SwapFloat(float *x, float *y)
    {                              
        float  temp;
        temp = *x;
        *x = *y;
        *y = temp;
    }                              
    /* 交换两个长整型数据 */
    void  SwapLong(long *x, long *y)
    {                              
        long   temp;
        temp = *x;
        *x = *y;
        *y = temp;
    }                              
    /* 交换两个字符串 */
    void  SwapChar(char x[], char y[])
    {                              
        char temp[MAX_LEN];
        strcpy(temp, x);
        strcpy(x, y);
        strcpy(y, temp);
    }                              
    /* 函数功能:按选择法将数组num的元素值按从低到高排序 */
    void AsSortbyNum(long num[], char name[][MAX_LEN], float score[], int n)
    {                              
        int     i, j, k;
        for (i = 0; i < n - 1; i++)
        {                              
            k = i;
            for (j = i + 1; j < n; j++)
            {                              
                if (num[j] < num[k])  k = j;
            }
            if (k != i)
            {                              
                SwapFloat(&score[k], &score[i]); /* 交换成绩 */
                SwapLong(&num[k], &num[i]);       /* 交换学号 */
                SwapChar(name[k], name[i]);       /* 交换姓名 */
            }
        }
    }                              
    /* 函数功能:交换法实现字符串按字典顺序排序 */
    void SortbyName(long num[], char name[][MAX_LEN], float score[], int n)
    {                              
        int    i, j;
        for (i = 0; i < n - 1; i++)
        {                              
            for (j = i + 1; j < n; j++)
            {                              
                if (strcmp(name[j], name[i]) < 0)
                {                              
                    SwapFloat(&score[i], &score[j]); /* 交换成绩 */
                    SwapLong(&num[i], &num[j]);       /* 交换学号 */
                    SwapChar(name[i], name[j]);       /* 交换姓名 */
                }
            }
        }
    }                              
    /* 函数功能:按学号查找学生成绩并显示查找结果 */
    void SearchbyNum(long num[], char name[][MAX_LEN], float score[], int n)
    {                              
        long number;
        int   i;
        printf("Input the number you want to search:\n");
        scanf("%ld", &number);
        for (i = 0; i < n; i++)
        {                              
            if (num[i] == number)
            {                              
                printf("%ld\t%s\t%.0f\n", num[i], name[i], score[i]);
                return;
            }
        }
        printf("Not found!\n");
    }                              
    /* 函数功能:按姓名的字典顺序排出成绩表 */
    void SearchbyName(long num[], char name[][MAX_LEN], float score[], int n)
    {                              
        char x[MAX_LEN];
        int  i;
        printf("Input the name you want to search:\n");
        scanf("%s", x);
        for (i = 0; i < n; i++)
        {                              
            if (strcmp(name[i], x) == 0)
            {                              
                printf("%ld\t%s\t%.0f\n", num[i], name[i], score[i]);
                return;
            }
        }
        printf("Not found!\n");
    }                              
    /* 函数功能:统计各分数段的学生人数及所占的百分比 */
    void StatisticAnalysis(float score[], int n)
    {                              
        int  i, total, t[6] = {0, 0, 0, 0, 0, 0};
        for (i = 0; i < n; i++)
        {                              
            if (score[i] >= 0 && score[i] < 60)t[0]++;
            else if (score[i] < 70)            t[1]++;
            else if (score[i] < 80)            t[2]++;
            else if (score[i] < 90)            t[3]++;
            else if (score[i] < 100)           t[4]++;
            else if (score[i] == 100)        t[5]++;
        }
        for (total = 0, i = 0; i <= 5; i++)
        {                              
            total = total + t[i];
        }
        for (i = 0; i <= 5; i++)
        {                              
            if (i == 0) printf("<60\t%d\t%.2f%%\n", t[i], (float)t[i] / n * 100);
            else if (i == 5) printf("%d\t%d\t%.2f%%\n",
                                        (i + 5) * 10, t[i], (float)t[i] / n * 100);
            else    printf("%d-%d\t%d\t%.2f%%\n",
                               (i + 5) * 10, (i + 5) * 10 + 9, t[i], (float)t[i] / n * 100);
        }
    }                              
    /* 函数功能: 打印学生成绩 */
    void PrintScore(long num[], char name[][MAX_LEN], float score[], int n)
    {                              
        int i;
        for (i = 0; i < n; i++)
        {                              
            printf("%ld\t%s\t%.0f\n", num[i], name[i], score[i]);
        }
    }    

    展开全文
  • 学生成绩管理系统 一功能需求分析 根据用户输入的学生序号输出该学生的全部成绩包括平均分总分显示学生的信息显示有不及格课程的学生信息 系统功能模块设计 学生成绩管理系统系统功能模块设计图 三详细设计 一数据...
  • c语言之学生成绩管理系统

    千次阅读 2016-10-18 22:08:37
    学生成绩管理。有一个班 10 个学生,5 门功课。用二维数组做参数编函数分别实现部分功能
    /*1. 学生成绩管理。有一个班 10 个学生,5 门功课。用二维数组做参数编函数分别实现:
    (1)录入每个学生的学号和考试成绩;
    (2)求第一门课的平均分;
    (3) 找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩和平均成绩;
    (4)找出平均成绩在 90 以上或全部成绩在 85 分以上的学生;
    (5)按成绩高低排出名次表;*/
    /*
    #include<stdio.h>


    int input(int a[10][6])
    {
    int i,j;
    for(i=0;i<10;i++)
    {
    scanf("%ld",&a[i][0]);
    for(j=1;j<6;j++)
    scanf("%d",&a[i][j]);
    }
    return a;
    }


    void average(int a[10][6])
    {
    int i;
    double av;
    for(i=0;i<10;i++)
    av+=a[i][1];
    printf("%g\n",av);
    }


    void failure(int a[10][6])
    {
    int i,j,b[10];
    double sum=0;
    for(i=0;i<10;i++)
    b[i]=0;
    for(i=0;i<10;i++)
    {
    for(j=1;j<6;j++)
    if(a[i][j]<60)
    b[i]++;
    for(i=0;i<10;i++)
    if(b[i]>2)
    {
    printf("%d ",a[i][0]);
    for(j=1;j<6;j++)
    {
    printf("%d ",a[i][j]);
    sum+=a[i][j];
    }
    printf("%g\n",sum/5);
    }
    }
    展开全文
  • 定义一个二维数组存储这10个学生的6门课(C程序设计、物理、英语、高数、体育、政治)的成绩; 程序应具有下列功能:  (1)按名字查询某位同学成绩  (2)查询某个科目不及格的人数,及学生名单
  • 主要包括以下几个功能: (1)录入学生成绩 (2)... 可采用二维字符数组来存储 (3)成绩。 可采用一维整型数组来存储  </p>
  • c++实现学生成绩管理系统

    万次阅读 2019-03-11 15:53:34
    学完结构体后做了这一个简易的成绩管理系统,很多地方还有不足,不过也算自己做的第一个简单系统,思路的话也是特别简单,就是定义一个结构体,把姓名,学号,三科成绩,还有绩点都存到结构体中,姓名我是用的一个...
  • 学生成绩管理系统 一、在控制台提示该系统是如何操作的 将该系统的使用方法打印出来 、输入指令help之后,系统会弹出具体提示 当输入help后,系统会输出系统的具体指令,并且当输入对应指令加-h后,控制台会再...
  • 《C语言程序设计》实训报告——学生成绩管理系统 一、课程设计题目 《学生成绩管理系统》 二、课程设计要求 综合利用顺序、选择、循环等各种程序结构,使用自定义函数和二维数组,完成任务。 三、课程设计思路 3.1...
  • 参考学生成绩管理系统V3.0,用二维数组作函数参数编程实现如下菜单驱动的学生成绩管理系统: (1)录入每个学生的学号、姓名和各科考试成绩; (2)计算每门课程的总分和平均分; (3)计算每个学生的总分和平均分;...
  • 第11章实验1:学生成绩管理系统V4.0(C语言)

    千次阅读 多人点赞 2020-12-23 23:34:44
    参考学生成绩管理系统V3.0,用二维数组作函数参数编程实现如下菜单驱动的学生成绩管理系统: (1)录入每个学生的学号、姓名和各科考试成绩; (2)计算每门课程的总分和平均分; (3)计算每个学生的总分和平均分;...
  • 并且将该数据存储在二维数组中; <p>3、类中的方法有: <p>(1)查询某个学生某门课的成绩; <p>(2)获取学生成绩总分; <p>(3)获取每个学生...
  • 第10章 实验1:学生成绩管理系统V3.0

    千次阅读 2018-05-29 22:44:45
    某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,参考第11周在线测验中“学生成绩管理系统V2.0”,用二维字符数组作函数参数编程实现如下菜单驱动的学生成绩管理系统: (1)录入每个学生的学号、...
  • 哈工大慕课 学生成绩管理系统V3.0

    千次阅读 2019-12-17 09:39:23
    某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用二维字符数组作函数参数编程实现如下菜单驱动的学生成绩管理系统: (1)录入每个学生的学号、姓名和考试成绩; (2)计算课程的总分和平均分; ...
  • 纯C语言学生成绩管理系统(以包含文件的形式写的),结构体,链表,数组,以下是main.c #include #include #include #define m 3/*宏定义m的值为3*/ struct node/*链表初始化*/ { char name[20]; int no; float ...
  • 直接上代码 #include &lt;stdio.h&gt; #include&lt;stdlib.h&...//定义一个二维数组,行表示学生号,列用来放三个科目第四列用来存放学生平均分 char choice='1'; void input(int a[][M],i...
  • C# 学生信息管理系统

    2011-11-16 12:23:45
    (可选择一维数组、二维数组或交错数组)存储数据。 (4)学生类的定义可参照实验2中的Student类,也可适当扩展。 附加要求:(有能力的情况下可将系统进行完善) 查询信息可设定查询条件,比如按照学号、姓名、或...
  • 用for或while或do-while循环语句实现,能对数据进行排序的程序,能运用二维数组能熟练对学生成绩进行输入,查找,排序,输出等功能并提交程序 基本思路 这是一个较为基础的小代码,小编便直接将输入、输出、排序、...
  • // 将stuList数组转变为Object的二维数组用于插入JTable Object[][] objects = new Object[stuList.size()][6]; for (int i = 0; i (); i++) { for (int j = 0; j ; j++) { switch (j) { case...
  • 练习使用C语言的标准I/O函数系列处理文件熟悉二维数组的操作函数、模块化程序设计以及增量测试方法熟悉结构体类型、结构体数组、写钩体数组函数参数、体会结构体类型代替普通的数组类型实现数据库管理的优越性熟悉...
  • 课程管理系统 java

    千次阅读 2014-01-16 11:27:32
    设计一个课程管理系统,能录入各科目及学生成绩,排名,显示总分及平均分。 用数组来实现,一维的二维的还有字符数组,最主要的还是如何进行排名问题,我们都知道java数组有这强大的功能,有自动升阶排序,但放在...
  • 二维数组作函数参数编程实现如下菜单 驱动的学生成绩管理系统: (1) 录入每个学生的学号和成绩; (2) 求第一门课的平均分; (3) 找出有 2 门以上课程不及格的学生, 输出他们的学号、全部课程成绩、平均...
  • C语言汇总计算e的绝对值计算pi的值计算sinx求一元次方程的根随机数种子例题随机猜数游戏静态变量的应用srand(time(NULL))数组入门指针入门...学生的平均分学生成绩管理1学生成绩管理2学生成绩管理系统3输入学生成绩...
  • 1.课程设计题目学生成绩管理系统职工工资管理系统2.课程设计内容(1)简单的系统与功能分析(2)建立数据结构表1)字段名(不少于10个)2)真实的二维表(3)要建立一个测试的数据表,至少要有20个测试数据(4)...
  • 华恩JAVA班第9天

    2017-06-08 11:28:50
    编了一个学生成绩管理系统 注意点: 1.人数确定学生姓名长度。 2.姓名是String类型 3.一维数组,二维数组的定义: 一维:int a[] = new int[5];int a[] = {1,2,3}; 二维:int a[][] = new int[5][6]; java中多维数组...
  • 参考学生成绩管理系统V3.0,用二维数组作函数参数编程实现如下菜单驱动的学生成绩管理系统: (1)录入每个学生的学号、姓名和各科考试成绩; (2)计算每门课程的总分和平均分; (3)计算每个学生的总分和平...

空空如也

空空如也

1 2 3 4 5 6
收藏数 115
精华内容 46
关键字:

学生成绩管理系统二维数组