0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2022-08-14 10:07 次阅读

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

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

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

功能如下:

(1). 欢迎界面提示

(2). 输入密码登录

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

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

2. 框架设计

#include 
#include 

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 
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. 完整代码

#include 
#include 

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(stu_info)>
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7591

    浏览量

    135800
  • 数组
    +关注

    关注

    1

    文章

    412

    浏览量

    25880
  • 结构体
    +关注

    关注

    1

    文章

    129

    浏览量

    10823
收藏 人收藏

    评论

    相关推荐

    源码|学生信息管理系统C语言单链表实现

    源码|学生信息管理系统C语言单链表实现
    发表于 11-03 10:24 490次阅读

    C语言数组结构的内存表示和布局

    C语言中,数组结构都可以代表一块内存,但为什么结构
    发表于 08-28 10:54 1383次阅读

    C语言教程之使用数组统计学生成绩

    C语言教程之使用数组统计学生成绩,很好的C语言资料,快来学习吧。
    发表于 04-25 15:13 0次下载

    为什么C语言函数不能返回数组

    C语言函数可以返回指针、结构,为什么不能返回数组? 下面一步一步来分析: 1 函数不能返回数组
    的头像 发表于 03-29 11:18 1960次阅读

    Keil使用结构数组的奇怪问题

    今天用keil的时候发现一个很奇怪的点,是关于结构数组的。首先说明我的keil版本是:V5.28.0.0问题是这样的:我在a.h文件定义了一个结构
    发表于 11-21 16:36 3次下载
    Keil使用<b class='flag-5'>结构</b><b class='flag-5'>体</b><b class='flag-5'>数组</b>的奇怪问题

    C语言_结构体总结

    当前文章介绍动态堆空间内存分配与释放,C语言结构定义、初始化、赋值、结构
    的头像 发表于 08-14 09:52 1049次阅读

    C程序设计基础-数组结构

    数组结构和指针是C语言里面最难的部分,如果在编程中可以熟练的运用这三样工具,会大大地提高开发效率,简化程序
    的头像 发表于 03-02 10:10 887次阅读
    <b class='flag-5'>C</b>程序设计基础-<b class='flag-5'>数组</b>与<b class='flag-5'>结构</b><b class='flag-5'>体</b>

    C程序设计入门笔记之数组结构

    数组结构和指针是C语言里面最难的部分,如果在编程中可以熟练的运用这三样工具,会大大地提高开发效率,简化程序
    的头像 发表于 03-02 10:13 597次阅读
    <b class='flag-5'>C</b>程序设计入门笔记之<b class='flag-5'>数组</b>与<b class='flag-5'>结构</b><b class='flag-5'>体</b>

    C语言使用结构数组注意事项

    一个结构变量中可以存放一组有关联的数据,如一个学生的学号、姓名、成绩等数据,如果有10个学生的数据需要参加运算,显然应该用数组,这就是
    的头像 发表于 03-10 15:37 698次阅读

    C语言入门之结构指针

    C语言中,指向结构对象的指针变量既可以指向结构变量,也可指向
    的头像 发表于 03-24 14:59 976次阅读

    C语言程序设计--通讯录系统

    本题目设计目的是训练学生的基本编程能力,了解通讯录系统的开发流程,熟悉C语言数组和函数的各种基本操作。本程序中涉及
    发表于 04-10 09:17 8次下载

    C语言程序设计--学生信息管理系统

    C语言程序设计--学生信息管理系统
    的头像 发表于 08-01 00:38 1849次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>程序设计--<b class='flag-5'>学生</b>信息<b class='flag-5'>管理</b><b class='flag-5'>系统</b>

    C语言如何创建数组

    用法和注意事项。 要创建一个数组,首先需要确定数组的数据类型和大小。C语言中的数据类型包括基本数据类型(如整数、浮点数、字符等)以及派生数据类型(如
    的头像 发表于 11-24 10:08 1657次阅读

    c语言数组怎么定义

    C语言中,数组是一种用来存储相同类型元素的数据结构。它可以存储多个元素,并通过一个共同的名称来引用这些元素。数组是一种很重要的数据
    的头像 发表于 11-24 10:11 2782次阅读

    嵌入式系统C语言结构的基础实现与应用

    C语言中的数组只能允许程序员定义存储相同类型数据。但是结构C语言编程中允许您存储不同数据类型的
    发表于 03-12 14:29 401次阅读
    嵌入式<b class='flag-5'>系统</b>中<b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>结构</b><b class='flag-5'>体</b>的基础<b class='flag-5'>实现</b>与应用