C语言数据结构实现学生选课系统实验报告

实验目的

运用C语言实现学生选课系统,熟悉数据结构的应用。

实验环境

Windows 10, Dev-C++ 5.11

实验过程

  1. 定义结构体 根据实验要求,我们需要定义两个结构体,分别表示学生和课程信息:
struct student {
    char name[20];
    int id;
    char 'class'[20];
    char college[20];
};

struct course {
    char name[20];
    char time[20];
    char place[20];
};
  1. 定义链表结构体 我们需要用链表来存储学生和课程信息,所以需要定义一个链表结构体:
struct node {
    void* data; // 数据指针
    struct node* next; // 下一个节点指针
};
  1. 实现链表操作函数 在链表中,我们需要实现添加节点、删除节点、修改节点、查找节点等操作,具体实现如下:
// 添加节点
struct node* add_node(struct node* head, void* data) {
    struct node* new_node = (struct node*)malloc(sizeof(struct node));
    new_node->data = data;
    new_node->next = head;
    head = new_node;
    return head;
}

// 删除节点
struct node* delete_node(struct node* head, void* data) {
    struct node* p = head;
    struct node* q = NULL;
    while (p != NULL) {
        if (p->data == data) {
            if (q == NULL) {
                head = p->next;
            } else {
                q->next = p->next;
            }
            free(p);
            break;
        }
        q = p;
        p = p->next;
    }
    return head;
}

// 修改节点
void modify_node(struct node* head, void* data) {
    struct node* p = head;
    while (p != NULL) {
        if (p->data == data) {
            // 修改节点信息
            break;
        }
        p = p->next;
    }
}

// 查找节点
struct node* find_node(struct node* head, void* data) {
    struct node* p = head;
    while (p != NULL) {
        if (p->data == data) {
            return p;
        }
        p = p->next;
    }
    return NULL;
}
  1. 实现菜单函数 为了方便用户操作,我们需要实现一个菜单函数,具体实现如下:
void menu() {
    printf("学生选课系统\n");
    printf("1. 添加学生\n");
    printf("2. 删除学生\n");
    printf("3. 修改学生信息\n");
    printf("4. 查找学生\n");
    printf("5. 添加课程\n");
    printf("6. 删除课程\n");
    printf("7. 修改课程信息\n");
    printf("8. 查找课程\n");
    printf("9. 退出系统\n");
}
  1. 实现主函数 在主函数中,我们需要先定义一个学生和课程的链表头节点,然后根据用户选择的菜单项执行相应的操作,具体实现如下:
int main() {
    struct node* student_head = NULL;
    struct node* course_head = NULL;
    int choice = 0;
    do {
        menu();
        scanf("%d", &choice);
        switch (choice) {
            case 1: // 添加学生
                // 读入学生信息
                // 创建学生结构体
                // 添加节点到链表中
                break;
            case 2: // 删除学生
                // 读入学生信息
                // 查找节点并删除
                break;
            case 3: // 修改学生信息
                // 读入学生信息
                // 查找节点并修改
                break;
            case 4: // 查找学生
                // 读入学生信息
                // 查找节点
                break;
            case 5: // 添加课程
                // 读入课程信息
                // 创建课程结构体
                // 添加节点到链表中
                break;
            case 6: // 删除课程
                // 读入课程信息
                // 查找节点并删除
                break;
            case 7: // 修改课程信息
                // 读入课程信息
                // 查找节点并修改
                break;
            case 8: // 查找课程
                // 读入课程信息
                // 查找节点
                break;
            case 9: // 退出系统
                printf("谢谢使用!\n");
                break;
            default: // 无效选择
                printf("无效选择!\n");
                break;
        }
    } while (choice != 9);
    return 0;
}

实验结果

经过编译和运行,我们可以看到以下菜单提示信息:

学生选课系统
1. 添加学生
2. 删除学生
3. 修改学生信息
4. 查找学生
5. 添加课程
6. 删除课程
7. 修改课程信息
8. 查找课程
9. 退出系统

然后我们可以根据菜单提示信息进行相应的操作,例如添加学生、删除学生、修改学生信息、查找学生等操作。在操作过程中,我们可以看到链表结构体和链表操作函数的作用,实现了学生选课系统的基本功能。

实验总结

本次实验通过运用C语言和数据结构,实现了一个学生选课系统。在实验过程中,我们学习了如何定义结构体、链表结构体和链表操作函数,以及如何实现菜单函数和主函数。通过实验,我们进一步掌握了数据结构的应用,提高了编程能力和实践能力。

C语言数据结构实现学生选课系统实验报告

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

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