陈小lin 2022-06-16 20:18 采纳率: 100%
浏览 101
已结题

用C语言编一个简单的 学生信息管理系统

img


建立4个学生的信息登记表,每个学生的信息包括:
学号 姓名 3门课的成绩(math c english)程序运行显示简单菜单(要求如图

  • 写回答

3条回答 默认 最新

  • qfl_sdu 2022-06-16 21:20
    关注

    代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    //定义课程数量
    #define NMBKC 3
    struct Student
    {
        int id;        //学号
        char name[20]; //姓名
        float score[NMBKC];//成绩
        float total;   //总分
        float avg;     //平均分
    };
    //1录入信息
    void input(struct Student arr[],int n)
    {
        int i,j;
        system("cls");
        for (i = 0;i < n; i++)
        {
            arr[i].total = 0.0;
            printf("请输入第%d名学生的信息(学号、姓名、%d门课程成绩):",i+1,NMBKC);
            scanf("%d %s",&arr[i].id,arr[i].name);
            for (j = 0;j < NMBKC;j++)
            {
                scanf("%f",&arr[i].score[j]);
    
            }
    
        }
        printf("录入完毕!\n");
        system("pause");
    }
    
    //2.统计总分
    void count(struct Student arr[],int n)
    {
        int i,j;
        system("cls");
        for(i=0;i<n;i++)
        {
            arr[i].total = 0;
            for(j=0;j<NMBKC;j++)
                arr[i].total += arr[i].score[j];
            arr[i].avg = arr[i].total/NMBKC;
        }
        printf("总分计算完毕!\n");
        printf("学号  姓名  总分  平均分  math   c   english\n");
        //显示
        for (i = 0;i< n;i++)
        {
            printf("%d\t%s\t%.1f\t%.1f\t",arr[i].id,arr[i].name,arr[i].total,arr[i].avg);
            for (j=0;j<NMBKC;j++)
            {
                printf("%f\t",arr[i].score[j]);
            }
            printf("\n");
        }
        system("pause");
    }
    
    
    //排序 按总分降序排序
    void sort(struct Student arr[],int n)
    {
        int i,j;
        struct Student tmp;
        system("cls");
        for (i = 0; i < n-1;i++)
        {
            for (j = 0;j < n-1-i;j++)
            {
                if(arr[j].total < arr[j+1].total)
                {
                    tmp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = tmp;
                }
            }
        }
        //显示
        printf("学号  姓名  总分  平均分  math   c   english\n");
        for (i = 0;i< n;i++)
        {
            printf("%d\t%s\t%.1f\t%.1f\t",arr[i].id,arr[i].name,arr[i].total,arr[i].avg);
            for (j=0;j<NMBKC;j++)
            {
                printf("%f\t",arr[i].score[j]);
            }
            printf("\n");
        }
        system("pause");
    }
    
    //查询
    void query(struct Student arr[],int n)
    {
        int i,j;
        int id;
        system("cls");
        printf("请输入学号:");
        scanf("%d",&id);
        printf("学号  姓名  总分  平均分  math   c   english\n");
        for (i = 0;i < n;i++)
        {
            if( arr[i].id == id )
            {
                printf("%d\t%s\t%.1f\t%.1f\t",arr[i].id,arr[i].name,arr[i].total,arr[i].avg);
                for (j=0;j<NMBKC;j++)
                {
                    printf("%f\t",arr[i].score[j]);
                }
                printf("\n");
                break;;
            }
        }
        if(i==n)
            printf("查无此人!\n");
        system("pause");
    }
    
    
    int main()
    {
        struct Student stu[10];
        int n=4;
        int opt;
        int bgo = 1;
        float avg[NMBKC]; //课程平均分
        while(bgo)
        {
            system("cls");
            printf("-------学生管理系统-------\n");
            printf("  1.录入学生信息          \n");
            printf("  2.统计学生总分          \n");
            printf("  3.按总分降序排序        \n");
            printf("  4.查询                  \n");
            printf("  9.退出系统              \n");
            printf("--------------------------\n");
            scanf("%d",&opt);
    
            switch(opt)
            {
            case 1:
                input(stu,n);
                break;
            case 2:
                count(stu,n);
                break;
            case 3:
                sort(stu,n);
                break;
            case 4:
                query(stu,n);
                break;
            case 9:
                return 0;
            }
    
        }
        return 0;
    
    }
    
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月25日
  • 已采纳回答 6月17日
  • 创建了问题 6月16日

悬赏问题

  • ¥100 微信小程序跑脚本授权的问题
  • ¥100 房产抖音小程序苹果搜不到安卓可以付费悬赏
  • ¥15 STM32串口接收问题
  • ¥15 腾讯IOA系统怎么在文件夹里修改办公网络的连接
  • ¥15 filenotfounderror:文件是存在的,权限也给了,但还一直报错
  • ¥15 MATLAB和mosek的求解问题
  • ¥20 修改中兴光猫sn的时候提示失败
  • ¥15 java大作业爬取网页
  • ¥15 怎么获取欧易的btc永续合约和交割合约的5m级的历史数据用来回测套利策略?
  • ¥15 有没有办法利用libusb读取usb设备数据