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

news2024/11/14 13:32:26

成学生管理系统

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;
}

输出结果如下:

思维导图整理:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1922166.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hyper-V 性能监控工具

虚拟化是任何组织网络管理战略不可或缺的一部分&#xff0c;对于帮助提高网络效率和资源可用性至关重要。采用虚拟基础架构具有多种好处&#xff0c;例如最大限度地减少停机时间、降低运营成本和提高生产力。 在所有虚拟服务器中&#xff0c;Microsoft Hyper-V因其多功能性和可…

亚马逊测评如何实现不同账户拥有独立运行环境,提高成功率

测评之所以被认为是最快速有效的推广方式&#xff0c;是因为它能够迅速影响多个关键因素。通过测评&#xff0c;您能够快速提升关键词的转化率&#xff0c;从而获得更好的搜索排名。优质的评价有助于增加产品的权重和转化率&#xff0c;进一步提升排名。同时&#xff0c;增加的…

在Windows环境下安装pycharm

Python环境搭建 第一步下载安装python 等待安装完成 验证python是否安装成功 Python开发工具安装部署 JetBrains: Essential tools for software developers and teams PyCharm: the Python IDE for data science and web development 下载社区版本的PyCharm 双击打开下载好的…

花几千上万学习Java,真没必要!(一)

1、主流的操作系统&#xff1a; 目前主流的PC端操作系统包括Windows、Mac OS和Linux。其中Windows是由微软公司开发的操作系统&#xff0c;Mac OS是由苹果公司开发的操作系统&#xff0c;而Linux则是开放源代码的操作系统&#xff0c;它有很多的发行版&#xff1a;比如&#xf…

PostgreSQL(二十二)缓冲区管理器

目录 一、缓冲区概述 1、缓冲区结构 2、buffer_tag结构 3、Backend进程读取操作 4、写脏块 二、缓冲区管理器结构 1、第一层&#xff1a;Buffer Table layer&#xff08;缓冲区表层&#xff09; 2、第二层&#xff1a;Buffer Descriptor Layer&#xff08;缓冲区描述层…

Vue2-动画

1.transition过渡 | 用transition CSS做动画 Vue-transition文档&#xff1a;进入/离开 & 列表过渡 — Vue.js [用transition做CSS动画]Enter状态&#xff1a;JS Bin - Collaborative JavaScript Debugging Leave状态&#xff1a;JS Bin - Collaborative JavaScript Debug…

经验分享:征信查询多了会不会影响大数据综合评分?

很多人在申请贷款的时候&#xff0c;会有一个疑问&#xff0c;就是自己的征信没逾期&#xff0c;就是查询偏多一点&#xff0c;但能达到申贷要求&#xff0c;为什么还会被拒贷?其实就是大数据花了的原因&#xff0c;那征信查询多了会不会影响大数据综合评分呢?接下来本文就为…

【C++】继承最全解析(什么是继承?继承有什么用?)

目录 一、前言 二、什么是继承 ? &#x1f4a2;继承的概念&#x1f4a2; &#x1f4a2;继承的定义&#x1f4a2; &#x1f95d;定义格式 &#x1f347;继承权限 三、基类与派生类对象的赋值转换 四、继承的作用域 五、派生类中的默认成员函数 &#x1f4a2…

[leetcode]minimum-cost-to-reach-destination-in-time 规定时间内到达终点的最小费用

. - 力扣&#xff08;LeetCode&#xff09; class Solution { private:// 极大值static constexpr int INFTY INT_MAX / 2;public:int minCost(int maxTime, vector<vector<int>>& edges, vector<int>& passingFees) {int n passingFees.size();ve…

windows节点加入一个Linux集群组成的kubernetes集群

windows节点加入一个Linux集群组成的kubernetes集群 背景描述一.准备环境搭建二.Windows上docker安装三.配置Windows server2019方法一&#xff1a;自动配置安装方法二&#xff1a;手动配置安装失败处理过程 四.Windows的node加入Linux的kubernetes集群五.配置Linux的master 背…

在linux中查找 / 目录下的以.jar结尾的文件(find / -name *.jar)

文章目录 1、查找 / 目录下的以.jar结尾的文件 1、查找 / 目录下的以.jar结尾的文件 [rootiZuf6332h890vozldoxcprZ ~]# find / -name *.jar /etc/java/java-1.8.0-openjdk/java-1.8.0-openjdk-1.8.0.342.b07-1.el9_0.x86_64/lib/security/policy/limited/US_export_policy.ja…

初学SpringMVC之过滤器解决乱码

写个 login.jsp 页面 提交的 method 一般为 post&#xff08;写 get 不安全&#xff0c;地址栏上会显示&#xff09; action 表示提交后跳转的地址 &#xff08;不直接写控制器里的路径是因为配置 Tomcat 时设置了前缀路径&#xff0c;默认走 http://localhost:8080&#xf…

Linux ---gcc

c语言的链接类型&#xff1a; 动态链接&#xff1a; ll /lib64/libc-2.17.so 静态链接&#xff1a; ll /lib64/libc.a glibc-static安装-CSDN博客https://blog.csdn.net/itas109/article/details/104226783在Linux中下载c语言的静态库。 gcc test.c -o test.s -static 以…

代码随想录二刷7.22|977.有序数组的平方

暴力解法&#xff1a; ——如果想暴力解决这个问题的话&#xff0c;可以像题目那样&#xff0c;先将每一个元素平方&#xff0c;然后再排序 双指针&#xff1a; ——从题目中找到的信息&#xff1a;这是一个非递减顺序的整数数组&#xff0c;从例子中&#xff0c;可以容易看…

搭建NEMU与QEMU的DiffTest环境(Socket方式)

搭建NEMU与QEMU的DiffTest环境&#xff08;Socket方式&#xff09; 1 简述2 编译NEMU2.1 配置2.2 修改NEMU/scripts/build.mk2.3 修改isa_difftest_checkregs函数2.4 修改isa_pmp_check_permission函数2.5 编译 3 编译qemu-socket-difftest3.1 修改NEMU/scripts/isa.mk3.2 修改…

数据结构之单链表在不带标准头的情况下C,C#,C++分别怎么实现?

文章目录 单链表的概念单链表的操作单链表不带标准头结点示例C语言实现C#实现C实现 数据结构是计算机科学中非常重要的一部分&#xff0c;它帮助我们理解和操作数据。单链表是数据结构中的一种基本类型&#xff0c;它由一系列节点组成&#xff0c;每个节点包含数据域和指向列表…

强化学习编程实践-4-基于蒙特卡洛的方法

第3章给出了学习算法的基本思路&#xff1a;策略评估和策略改善。其中策略评估用到了以下的公式&#xff08;4.1&#xff09;&#xff1a; 策略改善则用了最简单的贪婪策略&#xff08;4.2&#xff09;&#xff1a; 为什么要用蒙特卡洛算法&#xff1f;先看公式4.1和4.2&#x…

图鸟UI框架在uni-app多端应用开发中的实践与应用

摘要&#xff1a; 随着移动互联网的蓬勃发展&#xff0c;跨平台应用开发已成为行业趋势。本文将探讨图鸟UI框架如何在uni-app开发环境下助力开发者高效构建多端应用&#xff0c;并通过具体案例展示其在实际项目中的应用效果。 一、引言 在移动应用开发领域&#xff0c;跨平台…

【错题集-编程题】栈和排序(栈 + 贪心)

牛客对于题目连接&#xff1a;栈和排序_牛客题霸_牛客网 (nowcoder.com) 一、分析题目 每次尽可能的先让当前需要的最大值弹出去。 二、代码 // 修改后的代码 class Solution { public:/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方…

百度文心4.0 Turbo开放,领跑国内AI大模型赛道!

百度文心4.0 Turbo开放&#xff0c;领跑国内AI大模型赛道&#xff01; 前言 文心一言大模型 就在7月5日&#xff0c;在2024世界人工智能大会 (WAIC) 上&#xff0c;百度副总裁谢广军宣布文心大模型4.0 Turbo正式向企业客户全面开放&#xff01;这一举动直接引发了业界的关注。那…