C语言——学生信息管理系统(数组)

这篇具有很好参考价值的文章主要介绍了C语言——学生信息管理系统(数组)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

因为最近是在赶进度总结,数组和指针的笔记已经更新,但是数组、指针的习题还未总结,数组的题已经开始总结,但是还没总结完,所以还没发出来,目前学习进度已经到了学生管理系统,趁热打铁将学生管理系统的数组篇更新,因为之后还有指针篇,怕到时候代码搞混了,由于代码注释都比较清晰,所以不在一一赘述代码含义,有疑问可以给老王留言~

二、目的

用C语言数组写一个学生信息管理系统,并实现以下功能
1.对学生信息实现增、删、改、查;
2.对于增加学生信息可以判定内存是否已满、是否重复录入(学号唯一性);
3.对于删除学生信息判定是否有该生信息;
4.对于修改学生信息判定是否有该生信息;
5.对于查询学生信息判定是否有该生信息、仅打印查询信息;
6.排序功能——按照学号排序/按照成绩排序
7.以管理员身份打印所有学生信息;
8.退出系统

三、框架

1.菜单

1.1主菜单

****** -学生管理系统******
1.添加学生信息
2.删除学生信息
3.修改学生信息
4.查询学生信息
5.学生信息排序
0.退出管理系统

1.2子菜单

**排序方式
1-按照学号排序
2-按照成绩排序

2.流程图

2.1总流程图

C语言——学生信息管理系统(数组)
由于不太清楚,我把详细的各部分列出来如下:

2.2开始流程图

C语言——学生信息管理系统(数组)

2.3增加学生信息流程图

C语言——学生信息管理系统(数组)

2.4.删除学生信息流程图

C语言——学生信息管理系统(数组)

2.5修改学生信息流程图

C语言——学生信息管理系统(数组)

2.6查询学生信息流程图

C语言——学生信息管理系统(数组)

2.7对学生信息排序流程图

C语言——学生信息管理系统(数组)

3.思路

1.构建一个学生结构体,里面包含学生学号、姓名、班级、成绩;
2.该结构体是一个数组型,用来存储学生呢信息;
3.先写主菜单和主菜单选项函数及四个相关函数——增删改查;
4.写方便验证的函数——打印函数;
5.写排序方式的子菜单和获取菜单选项的函数;
6.写排序方式——按照学号排序函数/按照成绩排序函数
7.排序函数用的冒泡排序法(在数组的笔记那篇文章有讲);

四、代码

#include "stdio.h"
#define STUDENT_NUM 30

//创建一个学生结构体,包含学号、姓名、班级、成绩
struct Student
{
    int no;
    char name[64];
    int class;
    float score;
};
//初始化一个学生结构体为数组
struct Student student[STUDENT_NUM] = {0};

void Student_Init(void);
int StudentMenu(void); //主菜单函数声明
void Student_ADD();
void Student_Revise();
void Student_Del();
void Student_Find();
void Student_Sort();
int SortMenu();
void SortNo();
void SortScore();
void Student_Printf();



//初始化学生信息,将开辟STUDENT_NUM这么大的空间,并全部赋-1表示未录入信息
void Student_Init(void)
{
    for (int i = 0;i < STUDENT_NUM;i++)
    {
        student[i].no = -1; //未录入信息标志
    }
}

int main()
{
    Student_Init();
    int num1;
    
    
    while (1)
    {
        num1=StudentMenu();
        switch (num1)
        {
            case 1:Student_ADD();break;
            case 2:Student_Del();break;
            case 3:Student_Revise();break;
            case 4:Student_Find();break;
            case 5:Student_Sort();break;
            case 111:Student_Printf();break;
            case 0:goto over;
        }
    }
over:
    printf("感谢使用学生管理系统!\n");
}

//主菜单
int StudentMenu(void)
{
    int num;
p1:
    printf("****** -学生管理系统******\n");
    printf("******1.添加学生信息******\n");
    printf("******2.删除学生信息******\n");
    printf("******3.修改学生信息******\n");
    printf("******4.查询学生信息******\n");
    printf("******5.学生信息排序******\n");
    printf("******0.退出管理系统******\n");
    printf("请输入你要执行操作的序号:\n");
        scanf("%d", &num);
    if ((num >= 0 && num <= 5) || (num == 111)) //111打印所有数据
    {
        return num;
    }
    else
    {
        printf("您输入的菜单选项不正确,清重新输入!\n");
        goto p1;
    }
}
//学生信息排序子菜单
int SortMenu()
{
    int num1;
p1:
    printf("*******排序方式*****\n");
    printf("***1-按照学号排序***\n");
    printf("***2-按照成绩排序***\n");

    printf("请输入排序方式:\n");
    scanf("%d",&num1);
    if (num1>=1&&num1<=2)
    {
        return num1;
    }else{
        printf("输入错误选项,请重新选择排序方式!\n");
        goto p1;
    }

}


//添加学生信息
void Student_ADD()
{
    int i;
    //遍历学号数组,找到放数据的空间
    printf("正在执行添加学生信息操作……\n");
    for (i = 0; i < STUDENT_NUM; i++)
    {
        if (student[i].no==-1)//有空间,跳出循环,输入数据
        {
            break;
        }
    }  
    if (i==STUDENT_NUM)
    {
        printf("空间已满,禁止继续录入!\n");
    }
    //输入信息,由于有判定学号唯一,用tem保存从屏幕上获取的数据
    struct Student temp;
    printf("请输入学号:\n");
    scanf("%d",&temp.no);   
    printf("请输入姓名:\n");
    getchar();
    scanf("%s",temp.name);
    printf("请输入班级:\n");
    getchar();
    scanf("%d",&temp.class);
    printf("请输入成绩:\n");
    scanf("%f",&temp.score);
    //因为学号是唯一的,判断不能重复输入
    for (int j = 0; j < STUDENT_NUM; j++)
    {
        if (student[j].no==temp.no)
        {
            printf("该学生已被录入,请不要重复录入!\n");

        }   
    }
    student[i]=temp;

}
//修改学生信息
void Student_Revise()
{
    int num_0=0;//设置查询标志位,没找到0,找到1
    printf("正在执行修改学生信息操作……\n");
p1:
    printf("请输入您要修改的学号:\n");
    int num,i;
    scanf("%d",&num);
    for (i = 0; i < STUDENT_NUM; i++)   
    {
        if (num!=student[i].no)
        {
            num_0=0;
            continue;
        }else if(student[i].no==num)
        {
            num_0=1;
            break;
        }
    }
    if (num_0==0)
    {
        printf("查无此人,请重新输入要修改的学号!\n");
        goto p1;
    }
    //从屏幕获取新的数据
    printf("请输入学号:\n");
    scanf("%d",&student[i].no);
    printf("请输入姓名:\n");
    getchar();
    scanf("%s",student[i].name);
    getchar();
    printf("请输入班级:\n");
    scanf("%d",&student[i].class);
    printf("请输入成绩:\n");
    scanf("%f",&student[i].score); 

    
    
}
//删除学生信息
void Student_Del()
{
    int num,i;
    int num_0=0;//设置查询标志位,没找到0,找到1
    printf("正在执行删除学生信息操作……\n");
p1:
    printf("请输入您要删除的学号:\n");
    scanf("%d",&num);
    for (i = 0; i < STUDENT_NUM; i++)
    {
        if (num!=student[i].no)//没找到
        {
            continue;
            num_0=0;
        }else if (student[i].no==num)
        {
            num_0=1;
            student[i].no=-1;
            printf("删除成功!\n");
        }
    }
    if (num_0==0)
    {
        printf("查无此人,请重新输入要删除的学号!\n");
        goto p1;
    }
}
//查询学生信息
void Student_Find()
{
    int i,num;
    int num_0=0;//设置查询标志位,没找到0,找到1
    printf("正在执行查询学生信息操作……\n");
p1:
    printf("请输入您要查询的学号:\n");
    scanf("%d",&num);
    for (i = 0; i < STUDENT_NUM; i++)
    {
        if (num!=student[i].no)
        {
            num_0=0;
            continue;
        }else if (student[i].no==num)
        {
            num_0=1;
            break;
        }
    }
    if (num_0==0)
    {
        printf("查无此人,请重新输入要查询的学号!\n");
        goto p1;
    }
    printf("学号\t姓名\t班级\t成绩\n");
    printf("%d\t",student[i].no);
    printf("%s\t",student[i].name);
    printf("%d\t",student[i].class);
    printf("%.2f\n",student[i].score);
    
}
//对学生信息排序
void Student_Sort()
{
    int num2;
    num2=SortMenu();
    int num_0;
    //判断是否有学生信息,有则打印,
    for (int i = 0; i <STUDENT_NUM; i++)
    {
        if (student[i].no==-1)
        {
            num_0=0;
            continue;

        }else{
            num_0=1;
            break;
        }
    }
    if (num_0==0)
    {
        printf("没有学生信息,无法排序打印!\n");
    }
    
    //选择排序方式
    if (num2==1)
    {
        SortNo();
    }else if (num2==2)
    {
        SortScore();
    }
}
//学生学号排序
void SortNo()
{
    int i,j;
    printf("正在按照学号排序\n");
    struct Student temp;
    for ( i = 0; i < STUDENT_NUM; i++)
    {
        for (j = 0; j <STUDENT_NUM-i-1; j++)
        {
            if (student[j].no>student[j+1].no)
            {
                temp=student[j];
                student[j]=student[j+1];
                student[j+1]=temp;
            }
        }
    }
    Student_Printf(); 
}
//学生成绩排序
void SortScore()
{
    int i,j;
    printf("正在按照成绩排序\n");
    struct Student temp;
    for ( i = 0; i < STUDENT_NUM; i++)
    {
        for (j = 0; j <STUDENT_NUM-i-1; j++)
        {
            if (student[j].score<student[j+1].score)
            {
                temp=student[j];
                student[j]=student[j+1];
                student[j+1]=temp;
            }
        }
    }
    Student_Printf(); 

}
//打印所有学生信息
void Student_Printf()
{
    printf("学号\t姓名\t班级\t成绩\n");
    for (int i = 0; i < STUDENT_NUM; i++)
    {
        if (student[i].no!=-1)
        {
            printf("%d\t",student[i].no);
            printf("%s\t",student[i].name);
            printf("%d\t",student[i].class);
            printf("%.2f\n",student[i].score);
        }
    }
    
}

五、演示视频

由于之前我不知道数字时钟上传后友友们下载是要vip的,所以为了方便友友们,我将实现视频放在文章中如下:

数组学生管理系统文章来源地址https://www.toymoban.com/news/detail-414415.html

到了这里,关于C语言——学生信息管理系统(数组)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学生信息管理系统(c语言版)

    大一下C语言要交课程设计,于是就写了一个学生信息管理系统,仅供参考 学生信息包括姓名,学号,性别,年龄和各科成绩,可根据需要自行修改添加 包括增、删、改查、查看所有、保存、清空7个功能,每个功能都封装成一个函数 保存功能是将所添加的信息保存到文件中

    2024年02月12日
    浏览(43)
  • C语言版----学生信息管理系统(分析+代码)

    一、分析系统功能设计 1. 初始化学生列表、教师列表 ·typedef struct student 先对学生结构体进行重定义,便于对相关数组取名 再初始化一个教室class,便于在后面的函数中调用学生信息 ·typedef struct teacher 先对教师结构体进行重定义,便于对相关数组取名 ·void inputtStu() 初始化三

    2024年02月09日
    浏览(47)
  • 基于C语言的学生信息管理系统开发

    软件功能描述 功能模块图 2.信息管理模块 功能说明:输入、增加、删除、修改学生信息同时返回上一级 查询模块 功能说明:根据性别民族等查找学生人数、按照课程最高分查询学生信息、按照课程统计学生的平均分数同时返回上一级 成绩排序模块 功能说明:根据课程对学

    2024年02月04日
    浏览(56)
  • C语言实现学生信息管理系统(附原码)

    本人的C语言学习完后,用所学的知识自己实现了一个学生管理系统,新手一个,代码还有待完善,欢迎大家在评论区指出错误! 一、流程图 二、函数的目录  三、程序介绍  1.主要功能: 添加学生信息、打印学生信息、查找学生信息、添加学生信息、修改学生信息、计算学

    2024年02月12日
    浏览(45)
  • C语言学生成绩信息管理系统(超详细版)

    主题:一个简易成绩管理系统 功能介绍: 1.以文本形式存储学生信息 2.对以存信息进行   1. 插入 2. 修改3. 删除  4.查询  5.成绩数字特征 目录 一:分析 二:查询  三:菜单 四:初始化函数 五:插入函数 六:修改函数 七:删除函数 八:数字特征 九:显示函数 要进行 插入

    2024年02月12日
    浏览(45)
  • 【C语言基础】学生信息管理系统-纯结构体实现

    ps.一定要先确实掌握结构体,结构体数组,函数中的传参,全局变量作用域等知识 一.设计构思和简单的准备工作 首先,要确定一个什么样的结构体,就需要看我需要什么功能。 于是,我写下来一个 我想要的 , 能做xxx功能的 ,可能还 很美观的 学生信息管理系统的目录,既

    2024年02月03日
    浏览(48)
  • 学生信息管理系统——JAVA 语言版(主页面+增+删+改+查+退)

    学生管理系统要能够实现添加学生信息,删除,修改以及查看学生信息的功能。 你是否尝试过使用JAVA语言编写一个代码程序,使用该代码实现学生信息管理呢? 如果你还没有任何头绪,接下来推荐你看一下我的做法,我使用的编程工具是IDEA,以下给出了学生信息管理系统的程

    2024年02月03日
    浏览(44)
  • C语言课程设计:学生成绩信息管理系统(排序、平均分、总分)详解

    1、需求分析 利用C语言编写一个可以对学生成绩信息进行管理的系统 0、退出系统 1、录入学生信息和成绩 2、打印学生信息 3、统计学生人数 4、查找学生信息 5、修改学生信息 6、删除学生信息 7、排序学生成绩 8、生成学生信息文件 9、读取文件学生信息 10、输出各科成绩不

    2024年02月11日
    浏览(54)
  • 赶紧进来看看---C语言实现学生信息管理系统(3.0文件存储版)

    本文主要介绍了将学生信息管理系统改造为文件存储版本… 主要涉及文件操作函数–将学生信息导入文件和从文件读取学生信息到程序中,从而达到数据持久化的效果 文章最后有源码展示 学生信息管理系统1.0静态版-学生信息管理系统2.0动态内存增长版-学生信息管理系统3.0文

    2024年01月20日
    浏览(44)
  • C语言程序设计期末大作业(学生信息管理系统)(可自取源码)

    高校学生信息管理系统 (一)在高校学生管理系统中包含九个主要操作: 退出系统; 学生信息的录入; 学生信息的打印; 学生信息的保存; 学生信息的读取; 学生人数的统计; 学生信息的查找; 学生信息的修改; 学生信息的删除。 (二)设计流程 首先确认用switch ca

    2024年02月10日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包