C语言实现学生信息管理系统(单链表)

C语言实现学生信息管理系统(单链表)

介绍

在学习 C 语言过程中,实现一些小型项目可以帮助我们更好的熟悉和巩固所学的知识。这里介绍一种用 C 语言实现学生信息管理系统的方法,使用单链表来管理学生详细信息,包括编号、姓名、年龄、性别、专业等。本文将讲解该项目的完整攻略。

步骤

步骤1:设计结构体

首先,在程序中需要设计一个结构体来储存学生详细信息。可以考虑在 main 函数外面定义一个结构体:

struct student {
    int id;
    char name[20];
    int age;
    char sex[5];
    char major[20];
    struct student *next;
};

上述结构体中,next 是指向下一个节点的指针,它将被用于组成链表。

步骤2:定义链表

接下来,我们需要定义一个链表结构,用来管理学生信息。具体实现如下:

struct student *head = NULL;
struct student *tail = NULL;

头指针 head 指向链表的第一个节点,尾指针 tail 指向链表的最后一个节点。因为是空链表,所以它们均初始化为 NULL

步骤3:添加学生信息

现在我们需要编写添加新学生信息的函数:

void add_student() {
    struct student *p = (struct student*)malloc(sizeof(struct student));
    printf("请输入新学生的学号:");
    scanf("%d", &p->id);
    printf("请输入新学生的姓名:");
    scanf("%s", p->name);
    printf("请输入新学生的年龄:");
    scanf("%d", &p->age);
    printf("请输入新学生的性别:");
    scanf("%s", p->sex);
    printf("请输入新学生的专业:");
    scanf("%s", p->major);
    p->next = NULL;
    if (tail == NULL) {
        head = p;
        tail = p;
    } else {
        tail->next = p;
        tail = p;
    }
    printf("添加成功!\n");
}

该函数会提示用户输入学生信息,然后创建一个新的学生结构体节点 p。接着,该节点会被添加到链表末尾。如果链表为空,则将 headtail 都指向新节点;否则,将新节点连接到 tail 的后面。

在主函数中,可以调用此函数来添加新学生:

int main() {
    add_student();
    return 0;
}

步骤4:查询学生信息

可以编写 find_student_by_id 函数,通过学号可以查询到学生信息。代码如下:

void find_student_by_id(int id) {
    struct student *p = head;
    while (p != NULL) {
        if (p->id == id) {
            printf("学生信息如下:\n");
            printf("学号:%d\n", p->id);
            printf("姓名:%s\n", p->name);
            printf("年龄:%d\n", p->age);
            printf("性别:%s\n", p->sex);
            printf("专业:%s\n", p->major);
            return;
        }
        p = p->next;
    }
    printf("没有查询到指定学号的学生信息!\n");
}

该函数传入参数为学号 id,会遍历链表,当找到节点的学号与传入参数相同时,打印该学生的信息。如果找不到该学号,则输出相应提示信息。

在主函数中,可以调用此函数查询学生信息:

int main() {
    add_student();
    find_student_by_id(1);
    return 0;
}

当然这里查询的是学号为 1 时的情况。

示例说明

接下来,我们举两个例子来做进一步说明:

示例 1:添加多个学生信息

int main() {
    add_student();
    add_student();
    add_student();
    return 0;
}

以上代码会提示用户加入 3 个学生的信息,将这 3 个学生节点连接成一个链表。

示例 2:查询某个学生信息

int main() {
    add_student();
    find_student_by_id(1);
    return 0;
}

以上代码会添加一个学生节点并查询学号为 1 的学生信息,如果找到,我们会打印查询到的学生信息,否则输出“没有查询到指定学号的学生信息!”的提示信息。

总结

以上我们实现了一个简单的学生信息管理系统。我们使用了单链表来管理学生详细信息,实现了添加学生信息和查询学生信息的功能。在实际应用中,我们还可以扩展其他功能,如修改、删除学生信息等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现学生信息管理系统(单链表) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 流放之路3.0决斗者处刑者双手武器旋风斩BD介绍

    流放之路3.0决斗者处刑者双手武器旋风斩BD介绍 前言 双手武器旋风斩决斗者是一个非常常见的选择,它对于大多数情况都有很好的适应性。下面我来为大家详细介绍这个BD的技能、装备和天赋选择。 技能选择 主要技能 旋风斩:BD的主要输出技能,必须保持在5层狂怒状态下释放,可以让周围的敌人都受到伤害,而且施法时间很短。 督军的战斧:可以提供伤害加成,增加自身暴击率,…

    C 2023年5月23日
    00
  • STL list链表的用法详细解析

    STL list链表的用法详细解析 什么是STL list? STL list是STL(Standard Template Library)中的一个容器,是线性双向链表。该容器通过指针实现节点之间的连接。由于节点的删除和插入只需要操作前后节点的指针,因此在数据大量插入和删除的情况下,STL list比STL vector的效率更高。 list的基本使用 in…

    C 2023年5月22日
    00
  • C语言入门篇–四大常量(字面,const修饰,宏,枚举)及标识符

    C语言入门篇–四大常量及标识符攻略 常量 字面常量 字面常量是指在程序中直接使用的常量,包括整型常量、实型常量、字符常量和字符串常量。 整型常量:在程序中直接写入的整数,如123,-456都是整型常量。 实型常量:包括浮点数和双精度浮点数,如3.14和5.76都是实型常量。 字符常量:单引号 ” 包裹的字符或转义字符的组合,如’A’、’?’或’\n’。 …

    C 2023年5月23日
    00
  • C语言switch语句详解

    C语言switch语句详解 简介 在C语言中,switch语句是一种多分支的选择结构,可以用来比对多个值,根据不同的值来执行对应的代码块。 语法 switch语句的基本语法如下: switch(expression){ case constant-expression1: statement(s); break; case constant-expressi…

    C 2023年5月24日
    00
  • php数字游戏 计算24算法

    PHP数字游戏 计算24算法攻略 计算24算法是一种用于解决数字游戏中24点游戏的算法,可以用PHP编写实现这个算法。下面是计算24算法的完整攻略。 步骤1:生成数字序列 首先,需要生成一个有四个随机数字的序列,这可以通过PHP的rand函数来实现。以下是一个生成随机数字序列的示例代码: $sequence = array(); for ($i = 0; $…

    C 2023年5月22日
    00
  • C++使用链表实现图书管理系统

    C++使用链表实现图书管理系统 引言 链表是一种常见的数据结构,它可以实现动态的存储和操作数据。在实际应用中,我们通常会将链表作为基础数据结构来实现一些更为复杂的问题。本篇文章将介绍如何使用链表来实现一个图书管理系统。 需求分析 首先,我们需要明确需求,以此来确定整个系统的实现思路。本次图书管理系统需要实现以下功能: 添加书籍 删除书籍 修改书籍信息 检索书…

    C 2023年5月23日
    00
  • ACProtect Professional 1.3C 主程序脱壳(1)(图)

    ACProtect Professional 1.3C 主程序脱壳攻略 1. 准备环境 系统环境:Windows操作系统(建议Windows 7以上) 调试器:OllyDbg、x64dbg或者IDA Pro HEX编辑器:WinHex等工具 脱壳工具:ACProtect Unpacker等 2. 破解过程 2.1 加载目标程序并分析 将ACProtect P…

    C 2023年5月23日
    00
  • 计时器的time_t和clock_t 的两种实现方法(推荐)

    计时器的time_t和clock_t的两种实现方法(推荐) 计时器是一个非常实用的工具,在很多应用场景中都得到了广泛的应用。time_t和clock_t是两种常见的计时器类型,它们都可以用于测量时间的长度。本文将详细介绍这两种类型的实现方法,以供大家参考。 time_t的实现方法 time_t是标准C库中的一种数据类型,它代表了从1970年1月1日零时整到给…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部