前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C语言-学生管理系统(结构体+数组实现)

C语言-学生管理系统(结构体+数组实现)

作者头像
DS小龙哥
发布于 2022-01-07 08:00:18
发布于 2022-01-07 08:00:18
80100
代码可运行
举报
运行总次数:0
代码可运行

1. 学生管理系统功能介绍

前面文章里介绍了结构体类型,知道结构体类型里可以存放不同的数据类型,属于一个有序的集合。

这篇文章就使用结构体知识点完成一个小练习,使用结构体+数组设计一个简单的学生管理系统,作为结构体知识点的巩固练习。

功能如下:

(1). 欢迎界面提示

(2). 输入密码登录

(3). 功能: 录入学生信息、按照学号排序、按照成绩排序、输出所有学生信息、输出指定学生信息(学号、姓名、成绩)、计算成绩平均值值输出打印、删除指定学生信息、增加新的学生信息。

(4). 功能模块采用菜单方式选择

2. 框架设计

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <stdlib.h>

void  Display_info(void);

char buff_user[50];
char buff_password[50];
int main()
{
    int a,i;
    printf("------欢迎使用xxxx学生管理系统------\n");

    for(i=1;i<=3;i++)
    {
        printf("请输入用户名:");
        scanf("%s",buff_user);
        printf("请输入密码:");
        system("stty -echo"); //系统函数---调用系统的命令 关闭回显
        scanf("%s",buff_password);
        printf("\n");
        system("stty echo"); //系统函数---调用系统的命令 开回显
        //比较密码是否正确
        if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
        {
            printf("密码或者用户错误.请重新输入,剩余次数:%d\n",3-i);
        }
        else break;
    }
    
    //比较密码是否正确
    if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
    {
        printf("系统安全退出.\n");
        return 0;  //exit();  //终止进程
    }

/*
#include <stdlib.h>
void exit(int status);   比如: exit(0);
*/
    while(1)
    {
        Display_info();
        scanf("%d",&a);
        switch (a)
        {
        case 1:
            printf("选择录取学生信息\n");
            break;
        case 2:
            printf("输出学生信息\n");
            break;
         //............
        default:
            break;
        }
    }
    return 0;
}

//显示提示信息
void  Display_info(void)
{
    printf("------欢迎使用xxxx学生管理系统------\n");
    printf("1. 录取学生信息\n");
    printf("2. 输出学生信息\n");
    printf("3. 打印成绩平均值\n");
    printf("4. 增加学生信息\n");
    printf("5. 按照成绩排序输出学生信息.\n");
    printf("6. 删除指定学生信息\n");
    printf("请选择功能:\n");
}

3. 完整代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <stdio.h>
#include <stdlib.h>

struct STU
{
    char name[100]; //姓名
    int age; //年龄
    char number[100]; //学号
    float grade;//成绩
};

//全局变量定义区域
char buff_user[50];
char buff_password[50];
struct STU stu_info[100];
int stu_cnt=0;  //存放学生总人数

//函数声明区域
void  Display_info(void);
int SystemLogin(void);
void add_info(struct STU *stu,int flag);
void grade_sort(struct STU *stu);
void del_info(struct STU *stu);
void print_info(struct STU *stu);

int main()
{
    int number;
    //1. 登录系统
    if(SystemLogin())
    {
        printf("系统安全退出.\n");
        exit(0);
    }

    //2.执行功能模块 
    while(1)
    {
        Display_info();
        scanf("%d",&number);
        switch (number)
        {
        case 1: //录入学生信息
            add_info(stu_info,1);
            break;
        case 2: //输出学生信息
            print_info(stu_info);
            break;
        case 3: //打印成绩平均值
            break;
        case 4: //增加学生信息
            add_info(stu_info,0);
            break;
        case 5: //按照成绩排序输出学生信息
            grade_sort(stu_info);
            break;
        case 6: //删除指定学生信息
            del_info(stu_info);
            break;
        case 7: //退出系统
            printf("-----系统安全退出------\n");
            exit(0); //退出当前进程
        default:
            break;
        }
    }
    return 0;
}

//显示提示信息
void  Display_info(void)
{
    printf("\n\n");
    printf("------欢迎使用xxxx学生管理系统------\n");
    printf("1. 录入学生信息(按照要求录入信息)\n");
    printf("2. 输出学生信息\n");
    printf("3. 打印成绩平均值\n");
    printf("4. 增加学生信息\n");
    printf("5. 按照成绩排序输出学生信息.\n");
    printf("6. 删除指定学生信息\n");
    printf("7. 退出系统\n");
    printf("请选择功能:");
}

/*
函数功能: 系统登录
返回值:  0表示成功 1表示失败 
*/
int SystemLogin(void)
{
    printf("------欢迎使用xxxx学生管理系统------\n");
    int i;
    for(i=1;i<=3;i++)
    {
        printf("请输入用户名:");
        scanf("%s",buff_user);
        printf("请输入密码:");
        system("stty -echo"); //系统函数---调用系统的命令 关闭回显
        scanf("%s",buff_password);
        printf("\n");
        system("stty echo"); //系统函数---调用系统的命令 开回显
        //比较密码是否正确
        if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
        {
            printf("密码或者用户错误.请重新输入,剩余次数:%d\n",3-i);
        }
        else break;
    }
    //比较密码是否正确 
    if(strcmp(buff_user,"wbyq")!=0 || strcmp(buff_password,"123456")!=0)
    {
        return 1; 
    }
    return 0;
}

/*
函数功能: 录入学生信息
int flag :1表示连续增加学生信息  0表示增加单个学生信息
*/
void add_info(struct STU *stu,int flag)
{
    int i;
    int tmp;
    int addr=stu_cnt; //学生总人数
    if(flag)
    {
        for(i=addr;i<sizeof(stu_info)/sizeof(stu_info[0]);i++)
        {
            printf("请输入学生姓名:");
            scanf("%s",stu[i].name);
            printf("请输入学生年龄:");
            scanf("%d",&stu[i].age);
            printf("请输入学号:");
            scanf("%s",stu[i].number);
            printf("请输入成绩:");
            scanf("%f",&stu[i].grade);
            
            stu_cnt++;  //记录总人数
            printf("是否继续录入?  0表示继续  1表示退出");
            scanf("%d",&tmp);
            printf("\n\n");
            if(tmp)break;
        }
    }
    else
    {
        printf("请输入学生姓名:");
        scanf("%s",stu[addr].name);
        printf("请输入学生年龄:");
        scanf("%d",&stu[addr].age);
        printf("请输入学号:");
        scanf("%s",stu[addr].number);
        printf("请输入成绩:");
        scanf("%f",&stu[addr].grade);
        stu_cnt++;  //记录总人数
    }
}

//输出学生信息
void print_info(struct STU *stu)
{
    int i;
    printf("--------------------------------------------------\n");
    for(i=0;i<stu_cnt;i++)
    {
        printf("学生姓名:%s\n",stu[i].name);
        printf("学生年龄:%d\n",stu[i].age);
        printf("学号:%s\n",stu[i].number);
        printf("成绩:%f\n",stu[i].grade);
        printf("\n");
    }
    printf("--------------------------------------------------\n");
}

//按照成绩排序输出学生信息
void grade_sort(struct STU *stu)
{
    int i,j;
    struct STU tmp;
    for(i=0;i<stu_cnt-1;i++)
    {
        for(j=0;j<stu_cnt-1-i;j++)
        {
            if(stu[j].grade<stu[j+1].grade)
            {
                tmp=stu[j];
                stu[j]=stu[j+1];
                stu[j+1]=tmp;
            }
        }
    }
}

//1234567890
//删除指定学生信息
void del_info(struct STU *stu)
{
    char number[100];
    int i,j;
    printf("请输入要删除学生的学号:");
    scanf("%s",number);
    printf("--------------------------------------------------\n");
    for(i=0;i<stu_cnt;i++)
    {
        if(strcmp(stu[i].number,number)==0)
        {
            printf("成功删除以下学生信息:");
            printf("学生姓名:%s\n",stu[i].name);
            printf("学生年龄:%d\n",stu[i].age);
            printf("学号:%s\n",stu[i].number);
            printf("成绩:%f\n",stu[i].grade);
            for(j=i;j<stu_cnt-1;j++)
            {
                stu[j]=stu[j+1];
            }
            stu_cnt--; //减去总数量
            break;
        }
    }
    if(i==stu_cnt+1)
    {
        printf("没有找到该学号.\n");
    }
    printf("--------------------------------------------------\n");
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/12/15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C语言】学生管理系统
学生管理系统是一个用于管理学生信息、成绩、课程等数据的软件系统。在本文中,我们将使用C语言来实现一个简易的学生管理系统,包括学生信息的录入、显示、查询等功能。我们将使用文件来存储学生信息,以便实现持久化存储。
DevKevin
2024/03/19
4940
【C语言】学生管理系统
c语言学生管理系统(上)
你好!如果这是你第一次使用 c语言做完整的一个简单小程序,以下内容包括每个功能函数。如果你想学习c语言不那么枯燥, 可以仔细阅读这篇文章,了解一下c语言的基本语法知识。 **
全栈程序员站长
2022/07/25
7030
c语言学生管理系统(上)
c语言实现的简单学生管理系统
本文链接:https://blog.csdn.net/sakurakider/article/details/72823662
C语言中文社区
2022/05/30
4580
c语言实现的简单学生管理系统
数据结构实验报告—顺序表的基本操作—学生管理系统
程序的设计任务:定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1)根据指定学生个数,逐个输入学生信息; (2)逐个显示学生表中所有学生的相关信息; (3)根据姓名进行查找,返回此学生的学号和成绩; (4)根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5)给定一个学生信息,插入到表中指定的位置; (6)删除指定位置的学生记录; (7)统计表中学生个数。 模块划分: (1)写第一个子函数input()完成输入学生信息操作; (2)写第二个子函数output()完成逐个显示学生表中所有学生的相关信息操作; (3)写第三个子函数findelem()完成根据姓名进行查找,返回此学生的学号和成绩操作; (4)写第四个子函数findnum()完成根据指定的位置可返回相应的学生信息(学号,姓名,成绩)操作; (5)写第五个子函数insertlist()完成给定一个学生信息,插入到表中指定的位置操作; (6)写第六个子函数del()完成删除指定位置的学生记录操作; (7)写第七个子函数Statistics()完成统计表中学生个数操作; (8)写第八个子函数menu()来调用以上函数进行可视化的操作; (9)写一个main()主函数,调用menu()函数来完成所有操作;
命运之光
2024/03/20
6060
数据结构实验报告—顺序表的基本操作—学生管理系统
C语言实现学生成绩管理系统
相关视频——https://www.bilibili.com/video/BV13z4y117qC?p=8 代码实现 #define _CRT_SECURE_NO_WARNINGS 1 #includ
半生瓜的blog
2023/05/12
3420
c语言学生成绩管理系统(c语言链表实现学生管理系统)
二、目的与要求 每位学生记录包含有学号、姓名、性别、出生日期、三门功课的成绩(高等数学、大学英语、C语言)、总分和平均分 系统菜单: (1)录入学生记录 (2)添加学生记录 (3)删除学生记录 (4)修改学生记录(要求输入密码) (5)查找学生记录(按学号、按姓名) (6)按总分对记录进行降序排列 (7)将当前结果显示或打印,重新保存进数据文件中 (8)输出所有学生信息 (9)计算班级平均分 (10)修改管理员密码(未保存至文件,程序关闭后失效) (11)C语言挂科人数 (0)结束程序
全栈程序员站长
2022/07/25
4.3K0
c语言学生成绩管理系统(c语言链表实现学生管理系统)
c语言学生成绩管理系统总结
c语言的大作业,主要功能是录入、修改、删除、插入、排序等,可能有些地方仍然有点bug。
全栈程序员站长
2022/09/06
3.3K0
c语言学生成绩管理系统总结
学生成绩管理系统(C语言版)「建议收藏」
大一刚接触这个计算机专业的相关知识,就觉得这个专业很有趣。最先接触的编程语言就是C语言,想必大多数人都是如此吧。我们这个学期末,也就是期末考试结束后,开始这个实训。我也是第一次听说实训这个东西,当然可能这个实训也主要针对我们计算机专业的学生。 我们这次实训历时5天,是由公司请来的专业人员给我们进行指导的。前面几天时进行C语言基础知识的复习与巩固,后面两天就是给每个组时间,进行实训项目的制作。我们组选择的是学生成绩管理系统,这个也是比较常见的项目,有些组选择的是贪吃蛇等等。 下面给图片展示我们组的实训项目图片: 1 登录界面(确实挺简陋的)
全栈程序员站长
2022/09/06
7770
学生成绩管理系统(C语言版)「建议收藏」
用链表编写学生管理系统(涵盖文件的输入输出)
学过链表的大家都知道,它是一种动态的数据结构,但是它理解起来是比较困难的,但是用链表存储数据是非常好用的,可以使我们的程序更加具有健壮性。为了初学者理解单项链表更加快,今天就用链表和文件操作写了一控制台的学生管理系统,希望可以帮助大家更好的理解链表。
张泽旭
2018/12/10
1.1K0
用链表编写学生管理系统(涵盖文件的输入输出)
C语言学生成绩管理系统(设计报告和全部源码)「建议收藏」
实现如下功能: 1)能够实现学生成绩信息的插入、删除和修改; 2)能够实现各种查询(分别根据学生学号、姓名、课程名称等); 3)能够实现按照考试成绩、总评成绩进行排序; 4)能够查询某门课程的最高分、最低分并输出相应学生信息; 5)能够查询某门课程的优秀率(90 分及以上)、不及格率;
全栈程序员站长
2022/09/06
3.9K0
C语言学生成绩管理系统(设计报告和全部源码)「建议收藏」
C语言实现一个简单学生信息管理系统
然后呢,增,删,查,改,显示,分别封装为五个函数。其中添加和删除的部分,为了使数据长度随函数内增加和删除的操作改变,传参时除了数组指针,数组的长度也使用指针型传递。
英雄爱吃土豆片
2021/01/21
2K0
C语言-学生管理系统
#include <sys/mman.h> #include <fcntl.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #define HEAD_INFO "学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t体育\t总分\t平均分\n" #define HEAD_INFO2 "学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t体育\n" // 定义学生信息数据
天天Lotay
2022/12/02
2.6K0
C语言-学生管理系统
C语言学生管理系统源代码「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128553.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/28
1.8K0
学生信息管理系统(静态版)
简便::4学生信息的查找和3学生信息的删除(用名字删除)共用的查找函数(判断字符串相不相等函数)
ljw695
2024/10/18
1780
【顺序表&学生信息管理系统】学完顺序表就可以上高速写学生信息管理系统
相信数据结构的结课作业都有这种学生信息,图书管理系统,所以提前看一看还是很有必要的.(包含每一步代码和总源码) (如果有需要可以参考我这篇博客:顺序表详解 https://blog.csdn.net/
MicroFrank
2023/01/16
5290
C语言课程设计(成绩管理系统)
C语言课程设计(成绩管理系统) 翻到了大学写的C语言课程设计,缅怀一下 内容: 增加学生成绩 查询学生成绩 删除 按照学生成绩进行排序 等 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #define N 20 5 struct student 6 { 7 int num; 8 char name[30]; 9 int chinese; 10
二十三年蝉
2018/02/28
4.6K0
基于链表实现的学生管理系统
定义一个包含学生信息(学号,姓名,性别,专业,语数外成绩,平均分,成绩排名)的链表,使其具有如下功能:
用户10604450
2024/03/15
1430
基于链表实现的学生管理系统
【升级版学生信息管理系统&员工工资信息管理系统】+文件操作+更多细节
目录 1.功能介绍(主菜单-有什么功能)  2.结构体的定义(定义一个结构体类型) 3.主函数(如何调用分函数) 4.初始化顺序表(数组加上数组的附加信息) 5.退出程序同时保存数据到文档 6.增加员工信息 7.删除员工信息  8.按照名字查找(查询工资信息) 9. 修改员工信息 10. 按照工资排序 11.按照工号排序 12. 计算工资信息  13.打印工资信息 14. 统计员工总数 15.default语句  16.源代码 ---- 1.功能介绍(主菜单-有什么功能) 讲一下:这个0123的标号的伏
MicroFrank
2023/01/16
5240
学生成绩管理系统-C语言(附源码)[通俗易懂]
链接:https://pan.baidu.com/s/13Zx6RJiUX2e0nxom22kn5A 提取码:5892
全栈程序员站长
2022/09/06
12.4K2
学生成绩管理系统-C语言(附源码)[通俗易懂]
学生成绩管理系统(C语言)「建议收藏」
学生成绩管理系统,首先要初始化系统,开始一个新的学生成绩系统初始化记录学生姓名,学号,院系,然后输入学生各科成绩,数学,英语,语文成绩。记录完各课成绩以后,可查看学生平均成绩和是否及格,成绩查询其中有学号查询,姓名查询,院系查询,还有全部输出,可以清晰的看到及格人数,按照分数高低排列,最后还可以添加和删除学生成绩,或者更改学生成绩,避免人为录入成绩错误。
全栈程序员站长
2022/09/06
2.2K0
推荐阅读
相关推荐
【C语言】学生管理系统
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验