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

本文提供了一个使用链表实现的简单C语言课程设计示例,该示例演示了一个简单的学生信息管理系统,包含添加、删除和显示学生信息的功能。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 定义学生结构体
typedef struct Student {
    char name[20];
    int age;
    char gender[10];
    struct Student* next;
} Student;

// 创建学生节点
Student* createStudent(char name[], int age, char gender[]) {
    Student* student = (Student*)malloc(sizeof(Student));
    strcpy(student->name, name);
    student->age = age;
    strcpy(student->gender, gender);
    student->next = NULL;
    return student;
}

// 添加学生信息
void addStudent(Student** head, char name[], int age, char gender[]) {
    Student* student = createStudent(name, age, gender);
    if (*head == NULL) {
        *head = student;
    } else {
        Student* current = *head;
        while (current->next != NULL) {
            current = current->next;
        }
        current->next = student;
    }
    printf('学生信息添加成功!\n');
}

// 删除学生信息
void deleteStudent(Student** head, char name[]) {
    if (*head == NULL) {
        printf('学生信息为空,无法删除!\n');
        return;
    }

    Student* current = *head;
    Student* prev = NULL;

    // 删除头节点
    if (strcmp(current->name, name) == 0) {
        *head = current->next;
        free(current);
        printf('学生信息删除成功!\n');
        return;
    }

    // 删除中间或尾部节点
    while (current != NULL && strcmp(current->name, name) != 0) {
        prev = current;
        current = current->next;
    }

    if (current == NULL) {
        printf('学生信息不存在,无法删除!\n');
        return;
    }

    prev->next = current->next;
    free(current);
    printf('学生信息删除成功!\n');
}

// 显示学生信息
void displayStudents(Student* head) {
    if (head == NULL) {
        printf('学生信息为空!\n');
        return;
    }

    printf('学生信息如下:\n');
    Student* current = head;
    while (current != NULL) {
        printf('姓名:%s\t年龄:%d\t性别:%s\n', current->name, current->age, current->gender);
        current = current->next;
    }
}

// 释放链表内存
void freeList(Student* head) {
    Student* current = head;
    while (current != NULL) {
        Student* temp = current;
        current = current->next;
        free(temp);
    }
}

int main() {
    Student* head = NULL;  // 学生链表头指针

    int choice;
    char name[20], gender[10];
    int age;

    while (1) {
        printf('\n学生信息管理系统\n');
        printf('1. 添加学生信息\n');
        printf('2. 删除学生信息\n');
        printf('3. 显示学生信息\n');
        printf('4. 退出\n');
        printf('请输入你的选择:');
        scanf('%d', &choice);

        switch (choice) {
            case 1:
                printf('请输入学生姓名:');
                scanf('%s', name);
                printf('请输入学生年龄:');
                scanf('%d', &age);
                printf('请输入学生性别:');
                scanf('%s', gender);
                addStudent(&head, name, age, gender);
                break;
            case 2:
                printf('请输入要删除的学生姓名:');
                scanf('%s', name);
                deleteStudent(&head, name);
                break;
            case 3:
                displayStudents(head);
                break;
            case 4:
                freeList(head);
                exit(0);
            default:
                printf('无效的选择!\n');
        }
    }

    return 0;
}

这个示例实现了一个简单的学生信息管理系统,通过菜单选择可以添加学生信息、删除学生信息和显示学生信息。学生信息通过链表存储,每个节点包含学生的姓名、年龄和性别。

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

原文地址: https://www.cveoy.top/t/topic/rAS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录