实验目的:运用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/flNc 著作权归作者所有。请勿转载和采集!

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