C语言作业5(学生管理系统C语言)

成学生管理系统

1> 使用菜单完成

2> 有学生的信息录入功能:输入学生个数,并将学生的姓名、分数录入

3> 查看学生信息:输出所有学生姓名以及对应的分数

4> 求出学习最好的学生信息:求最大值

5> 按姓名将所有学生进行升序排序

6> 按成绩将所有学生进行升序排序

要求每个功能使用函数完成

>>>>>>>>>>>实现的函数类型是有参数,无返回值的函数<<<<<<<<<<<<<<<<<<

#include <stdio.h>
#include <string.h>
#define MAX 100


void print_menu()
{
    printf("\t\t======1.录入学生信息===================\n");
    printf("\t\t======2.查看学生信息===================\n");
    printf("\t\t======3.查询学习最好的学生信息===========\n");
    printf("\t\t======4.按姓名将所有学生进行升序排序======\n");
    printf("\t\t======0.退出==========================\n");
}
// 1.录入学生信息
void enterStudents(int studentsNumber,char names[MAX][30],int scores[MAX])
{
    for (int i = 0; i < studentsNumber; i++)
    {
        printf("请输入第%d个学生的姓名:", i + 1);
        scanf("%s", names[i]);
        getchar();
        printf("请输入第%d个学生的成绩:", i + 1);
        scanf("%d", &scores[i]);
    }
}

// 2.查看学生信息
void viewStudents(int studentsNumber,char names[MAX][30],int scores[MAX])
{
    printf("学生信息如下:\n");
    for (int i = 0; i < studentsNumber; i++)
    {
        printf("学生姓名:%s 学生成绩:%d\n", names[i], scores[i]);
    }
}

// 3.求出学习最好的学生信息(求最大值)
void bestStudents(int studentsNumber,char names[MAX][30],int scores[MAX])
{
    int maxi = 0;
    for (int i = 0; i < studentsNumber; i++)
    {
        if (scores[maxi] < scores[i])
        {
            maxi = i;
        }
    }
    printf("成绩最好的学生姓名:%s 学生成绩:%d\n", names[maxi], scores[maxi]);
}

// 4.按姓名将所有学生进行升序排序
void nameStudents(int studentsNumber,char names[MAX][30],int scores[MAX])
{
    char temp[50] = {'0'};
    int temps = 0;
    for (int i = 0; i < studentsNumber - 1; i++)
    {
        for (int j = 0; j < studentsNumber - i - 1; j++)
        {
            if (strcmp(names[j], names[j + 1]) > 0)
            {
                strcpy(temp, names[j]);
                strcpy(names[j],names[j+1]);
                strcpy(names[j+1], temp);

                temps = scores[j];
                scores[j] = scores[j+1];
                scores[j+1] = temps;
            }
        }
    }
    for (int i = 0; i < studentsNumber; i++)
    {
        printf("排序后学生姓名:%s 学生成绩:%d\n", names[i], scores[i]);
    }
}

int main(int argc, char const *argv[])
{
    char names[MAX][30] = {'0'};
    int scores[MAX] = {0};
    int studentsNumber = 0;
    
    while (1)
    {
        int n = 0;
        print_menu();
        printf("请输入序号>>");
        scanf("%d", &n);
        getchar();

        switch (n)
        {
        case 1:
            printf("请输入学生个数:");
            scanf("%d", &studentsNumber);
            getchar();
            enterStudents(studentsNumber,names,scores);
            break;
        case 2:
            viewStudents(studentsNumber,names,scores);
            break;
        case 3:
            bestStudents(studentsNumber,names,scores);
            break;
        case 4:
            nameStudents(studentsNumber,names,scores);
            break;
        case 0:
            goto END;
        default:
            printf("您输入的功能有误,请重新输入\n");
            break;
        }
    }
END:
    return 0;
}

 以下代码作为纪念,定义了全局变量,没有传参,直接实现函数功能了,总之好像没啥意义

#include <stdio.h>
#include <string.h>
#define MAX 100
char names[MAX][30] = {'0'};
int scores[MAX] = {0};
int studentsNumber = 0;

void print_menu()
{
    printf("\t\t======1.录入学生信息===================\n");
    printf("\t\t======2.查看学生信息===================\n");
    printf("\t\t======3.查询学习最好的学生信息===========\n");
    printf("\t\t======4.按姓名将所有学生进行升序排序======\n");
    printf("\t\t======0.退出==========================\n");
}
// 1.录入学生信息
void enterStudents(void)
{
    printf("请输入学生个数:");
    scanf("%d", &studentsNumber);
    getchar();

    for (int i = 0; i < studentsNumber; i++)
    {
        printf("请输入第%d个学生的姓名:", i + 1);
        scanf("%s", names[i]);
        getchar();
        printf("请输入第%d个学生的成绩:", i + 1);
        scanf("%d", &scores[i]);
    }
}

// 2.查看学生信息
void viewStudents(void)
{
    printf("学生信息如下:\n");
    for (int i = 0; i < studentsNumber; i++)
    {
        printf("学生姓名:%s 学生成绩:%d\n", names[i], scores[i]);
    }
}

// 3.求出学习最好的学生信息(求最大值)
void bestStudents(void)
{
    int maxi = 0;
    for (int i = 0; i < studentsNumber; i++)
    {
        if (scores[maxi] < scores[i])
        {
            maxi = i;
        }
    }
    printf("成绩最好的学生姓名:%s 学生成绩:%d\n", names[maxi], scores[maxi]);
}

// 4.按姓名将所有学生进行升序排序
void nameStudents(void)
{
    char temp[50] = {'0'};
    int temps = 0;
    for (int i = 0; i < studentsNumber - 1; i++)
    {
        for (int j = 0; j < studentsNumber - i - 1; j++)
        {
            if (strcmp(names[j], names[j + 1]) > 0)
            {
                strcpy(temp, names[j]);
                strcpy(names[j],names[j+1]);
                strcpy(names[j+1], temp);

                temps = scores[j];
                scores[j] = scores[j+1];
                scores[j+1] = temps;
            }
        }
    }
    for (int i = 0; i < studentsNumber; i++)
    {
        printf("排序后学生姓名:%s 学生成绩:%d\n", names[i], scores[i]);
    }
}

int main(int argc, char const *argv[])
{
    while (1)
    {
        int n = 0;
        print_menu();
        printf("请输入序号>>");
        scanf("%d", &n);
        getchar();

        switch (n)
        {
        case 1:
            enterStudents();
            break;
        case 2:
            viewStudents();
            break;
        case 3:
            bestStudents();
            break;
        case 4:
            nameStudents();
            break;
        case 0:
            goto END;
        default:
            printf("您输入的功能有误,请重新输入\n");
            break;
        }
    }
END:
    return 0;
}

输出结果如下:

思维导图整理:

相关推荐

  1. C语言学生管理系统

    2024-07-11 21:50:01       43 阅读
  2. C语言练习作业5

    2024-07-11 21:50:01       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 21:50:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 21:50:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 21:50:01       58 阅读
  4. Python语言-面向对象

    2024-07-11 21:50:01       69 阅读

热门阅读

  1. 机器学习深度学习用得到的数据集

    2024-07-11 21:50:01       28 阅读
  2. 设计模式:单例模式

    2024-07-11 21:50:01       22 阅读
  3. BP神经网络与反向传播算法在深度学习中的应用

    2024-07-11 21:50:01       22 阅读
  4. Ubuntu 打开或关闭界面

    2024-07-11 21:50:01       18 阅读
  5. c++状态机实现示例

    2024-07-11 21:50:01       23 阅读
  6. Mac上pyenv的安装及使用

    2024-07-11 21:50:01       18 阅读
  7. 【C++】智能指针

    2024-07-11 21:50:01       24 阅读
  8. 【TS】Typescript 的类

    2024-07-11 21:50:01       23 阅读
  9. 说一下浏览器中的强缓存和协商缓存的区别

    2024-07-11 21:50:01       24 阅读
  10. 【Redis 如何实现分级缓存】

    2024-07-11 21:50:01       20 阅读