C语言数据结构实现学生选课系统实验报告
C语言数据结构实现学生选课系统实验报告
实验目的
运用C语言实现学生选课系统,熟悉数据结构的应用。
实验环境
Windows 10, Dev-C++ 5.11
实验过程
- 定义结构体 根据实验要求,我们需要定义两个结构体,分别表示学生和课程信息:
struct student {
char name[20];
int id;
char 'class'[20];
char college[20];
};
struct course {
char name[20];
char time[20];
char place[20];
};
- 定义链表结构体 我们需要用链表来存储学生和课程信息,所以需要定义一个链表结构体:
struct node {
void* data; // 数据指针
struct node* next; // 下一个节点指针
};
- 实现链表操作函数 在链表中,我们需要实现添加节点、删除节点、修改节点、查找节点等操作,具体实现如下:
// 添加节点
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;
}
- 实现菜单函数 为了方便用户操作,我们需要实现一个菜单函数,具体实现如下:
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");
}
- 实现主函数 在主函数中,我们需要先定义一个学生和课程的链表头节点,然后根据用户选择的菜单项执行相应的操作,具体实现如下:
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语言和数据结构,实现了一个学生选课系统。在实验过程中,我们学习了如何定义结构体、链表结构体和链表操作函数,以及如何实现菜单函数和主函数。通过实验,我们进一步掌握了数据结构的应用,提高了编程能力和实践能力。
原文地址: https://www.cveoy.top/t/topic/ockO 著作权归作者所有。请勿转载和采集!