首页 > 其他分享 >[C语言] 作业8 学生管理系统(结构体实现)

[C语言] 作业8 学生管理系统(结构体实现)

时间:2024-07-16 20:57:49浏览次数:12  
标签:struct 管理系统 void 作业 C语言 xuesheng printf 学生 Xuesheng

1、使用结构体完成学生(学号、姓名、性别、成绩)管理系统

1> 使用菜单实现

2> 功能1:完成对学生信息的录入,确定人数,完成输入

2> 功能2:完成对学生信息的输出

3> 功能3:输出成绩最高和最低学生的信息

4> 功能4:输出学生的总成绩和平均成绩

5> 功能5:对学生信息按成绩进行排序,根据传入的升降序,确定排序功能、

6> 功能6:提示并输入要查找的学生名字,查找该名字是否存在于该班级

7> 功能0:退出

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

int studentsNumber = 0;

struct Xuesheng
{
    char name[20];
    char gender[10];
    char id[20];
    int score;
};

void print_menu();
void enterStudents(struct Xuesheng *xuesheng);
void viewStudents(struct Xuesheng *xuesheng);
void maxminStudents(struct Xuesheng *xuesheng);
void sum_average_Students(struct Xuesheng *xuesheng);
void paixuStudents(struct Xuesheng *xuesheng);
void searchname_Students(struct Xuesheng *xuesheng);

int main(int argc, char const *argv[])
{
    struct Xuesheng xuesheng[MAX];

    memset(xuesheng, 0, sizeof(xuesheng));

    int n = 0;
   

    while (1)
    {
        print_menu();
        printf("请输入需要实现的功能:");
        scanf("%d", &n);
        getchar();
        switch (n)
        {
        case 1:
            printf("请输入学生个数:");
            scanf("%d", &studentsNumber);
            getchar();
            enterStudents(xuesheng);
            break;

        case 2:
            viewStudents(xuesheng);
            break;

        case 3:
            maxminStudents(xuesheng);
            break;

        case 4:
            sum_average_Students(xuesheng);
            break;
        
        case 5:
            paixuStudents(xuesheng);
            break;

        case 6:
            searchname_Students(xuesheng);
            break;

        case 0:
            goto END;

        default:
            break;
        }
    }
    END:
    return 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======5.按成绩进行升序排序===================\n");
    printf("\t\t======6.查找学生姓名=========================\n");
    printf("\t\t======0.退出=================================\n");
}

// 1.录入学生信息
void enterStudents(struct Xuesheng *xuesheng)
{
    for (int i = 0; i < studentsNumber; i++)
    {
        printf("请输入第%d个学生的姓名:", i + 1);
        scanf("%s", xuesheng[i].name);
        printf("请输入第%d个学生的性别:", i + 1);
        scanf("%s", xuesheng[i].gender);
        printf("请输入第%d个学生的学号:", i + 1);
        scanf("%s", xuesheng[i].id);
        printf("请输入第%d个学生的成绩:", i + 1);
        scanf("%d", &xuesheng[i].score);
        printf("\n");
    }
}

// 2.查看学生信息
void viewStudents(struct Xuesheng *xuesheng)
{
    printf("姓名\t性别\t学号\t成绩\n");
    for (int i = 0; i < studentsNumber; i++)
    {
        printf("%s\t%s\t%s\t%d\n", xuesheng[i].name, xuesheng[i].gender, xuesheng[i].id, xuesheng[i].score);
    }
    printf("\n");
}

//3.输出成绩最高和最低的学生信息
void maxminStudents(struct Xuesheng *xuesheng)
{
    struct Xuesheng max = xuesheng[0];
    struct Xuesheng min = xuesheng[0];

    for(int i  = 0;i < studentsNumber;i++)
    {
        if(xuesheng[i].score > max.score)
        {
            max = xuesheng[i];
        }
        if(xuesheng[i].score < min.score)
        {
            min = xuesheng[i];
        }
    }
    printf("成绩最高的学生:\n");
    printf("姓名\t性别\t学号\t成绩\n");
    printf("%s\t%s\t%s\t%d\n\n", max.name, max.gender, max.id, max.score);

    printf("成绩最低的学生:\n");
    printf("姓名\t性别\t学号\t成绩\n");
    printf("%s\t%s\t%s\t%d\n\n", min.name, min.gender, min.id, min.score);
}

//4.输出学生的总成绩和平均成绩
void sum_average_Students(struct Xuesheng *xuesheng)
{
    float sum = 0;
    float average = 0;
    for(int i = 0;i < studentsNumber;i++)
    {
        sum += xuesheng[i].score;
    }
    average = sum / studentsNumber;
    printf("学生总成绩是:%.2lf\n",sum);
    printf("学生平均成绩是:%.2lf\n\n",average);
}

//5.按成绩进行升序排序
void paixuStudents(struct Xuesheng *xuesheng)
{
    for(int i = 1;i < studentsNumber;i++)
    {
        for(int j = 0;j < studentsNumber - i;j++)
        {
            if(xuesheng[j].score > xuesheng[j+1].score)
            {
                struct Xuesheng temp = xuesheng[j];
                xuesheng[j] = xuesheng[j+1];
                xuesheng[j+1] = temp;
            }
        }
    }
    viewStudents(xuesheng);
}

//6.查找学生姓名
void searchname_Students(struct Xuesheng *xuesheng)
{
    printf("请输入你需要查找的学生姓名:");
    char studentName[20] = {"0"};
    int count = 0;
    scanf("%s",studentName);
    for(int i = 0;i < studentsNumber;i++)
    {
        if(strcmp(studentName,xuesheng[i].name) == 0)
        {
            count++;
        }
    }
    if(count != 0)
    {
        printf("该学生在这个班里\n\n");
    }
    else
    {
        printf("该学生不在这个班里\n\n");
    }
}

输出结果如下: 

2、思维导图:

标签:struct,管理系统,void,作业,C语言,xuesheng,printf,学生,Xuesheng
From: https://blog.csdn.net/2301_77133426/article/details/140475967

相关文章

  • c语言-逻辑运算符和逻辑表达式
    一认识三个逻辑运算符    1.&&“逻辑与”一假则假 2.||“逻辑或”一真则真3.!“逻辑非” 逻辑与和逻辑或都是双目运算符,要求两个操作数;逻辑非为单目运算符优先级为!>算术运算符>关系运算符>&&和|| >赋值运算符  运算符可以通过括号展开或收缩......
  • C语言中的整数类型及其类型转换
    C语言中的整数数据类型C语言中的整型数据就是定点整数,根据位数的不同,可分为字符型(char,8位)、短整型(short或shortint,16位)、整型(int,32位)、长整型(long或longint,在32位机器中为32位,在64位机器中为64位)。char是整型数据中比较特殊的一种,其他如short/int/......
  • 【C语言习题】39.模拟实现atoi
    文章目录作业标题作业内容代码作业标题模拟实现atoi作业内容自行了解库函数atoi的功能,学习使用,并模拟实现atoi函数。文档链接:atoi-C++Reference(cplusplus.com)代码//atoi将一个字符串转化为一个整型#include<stdio.h>#include<assert.h>#include<......
  • 【C语言习题】40.变种水仙花数
    文章目录题目代码题目代码#include<stdio.h>intmain(){inti,j;for(i=10000;i<99999;i++){intsum=0;for(j=10;j<=10000;j=10*j){sum+=(i/j)*(i%j);}if(sum==i)prin......
  • 【c语言】函数递归的一些例题1.编写一个函数,不许创建临时变量,求字符串长度 2.求n的阶
    1.intmy_strlen(char*str){   if(*str!='\0')   {      return1+my_strlen(str+1);//利用递归求字符串长度:递归一次就是多一个字符这样就可以求出字符串的长度了   }   else      return0;}intmain(){   //编写......
  • C语言中的指针:掌握内存的钥匙
    C语言中的指针:掌握内存的钥匙引言       C语言是一种结构化编程语言,它提供了对硬件底层的直接访问,其中最强大的特性之一就是指针。指针允许程序员直接操作内存地址,这对于理解程序的内部工作原理以及优化代码性能至关重要。本文将深入探讨C语言中指针的概念、使用方......
  • C语言指针详解(初级)
    1.指针是什么?指针理解的2个要点:        1.指针是内存中一个最小单元的编号,也就是地址(&)        2.平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量总结:指针就是地址,口语中说的指针通常指的是指针变量。那我......
  • 基于Springboot的博物馆管理系统
    全文内容包括:1、采用技术;2、系统功能;3、系统截图;4、配套内容。索取方式见文末微信号,欢迎关注收藏!一、采用技术语言:Java1.8框架:SpringBoot数据库:MySQL5.7、8.0开发工具:IntelliJIDEA旗舰版其他:Maven3.8以上二、系统功能用户管理:负责注册用户的信息维护,包括用户账号的创建......
  • C语言网络编程(一对多通讯)
    使用C语言实现一个服务器对多个客户端主要技术除了网络编程几个函数的使用外,还用到了线程,实现方式是一个客户端对应一个新的线程Server:#include<pthread.h>//包含线程库的头文件#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h......
  • (开源)都进来!简单易懂、功能强大的权限+可视化流程管理系统
    1、预览地址:http://139.155.137.144:90122、qq群:801913255一、前言随着网络的发展,企业对于信息系统数据的保密工作愈发重视,不同身份、角色对于数据的访问权限都应该大相径庭。列如1、不同登录人员对一个数据列表的可见度是不一样的,如数据列、数据行、数据按钮等......