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

// 定义学生结构体 typedef struct student { char name[20]; int id; char major[20]; struct student *next; } Student;

// 链表头指针 Student *head = NULL;

// 添加学生信息 void add_student() { Student *new_student = (Student *)malloc(sizeof(Student)); printf('请输入学生姓名:'); scanf('%s', new_student->name); printf('请输入学生学号:'); scanf('%d', &(new_student->id)); printf('请输入学生专业:'); scanf('%s', new_student->major); new_student->next = head; head = new_student; printf('添加成功!\n'); }

// 查找学生信息 void search_student() { int id; printf('请输入要查找的学生学号:'); scanf('%d', &id); Student *current = head; while (current != NULL) { if (current->id == id) { printf('姓名:%s\n学号:%d\n专业:%s\n', current->name, current->id, current->major); return; } current = current->next; } printf('未找到该学生!\n'); }

// 删除学生信息 void delete_student() { int id; printf('请输入要删除的学生学号:'); scanf('%d', &id); Student *current = head; Student *prev = NULL; while (current != NULL) { if (current->id == id) { if (prev == NULL) { head = current->next; } else { prev->next = current->next; } free(current); printf('删除成功!\n'); return; } prev = current; current = current->next; } printf('未找到该学生!\n'); }

// 修改学生信息 void modify_student() { int id; printf('请输入要修改的学生学号:'); scanf('%d', &id); Student *current = head; while (current != NULL) { if (current->id == id) { printf('请输入新的学生姓名:'); scanf('%s', current->name); printf('请输入新的学生专业:'); scanf('%s', current->major); printf('修改成功!\n'); return; } current = current->next; } printf('未找到该学生!\n'); }

// 显示所有学生信息 void display_students() { if (head == NULL) { printf('暂无学生信息!\n'); return; } Student *current = head; while (current != NULL) { printf('姓名:%s\n学号:%d\n专业:%s\n', current->name, current->id, current->major); current = current->next; } }

int main() { int choice; while (1) { printf('学生信息管理系统\n'); printf('1. 添加学生信息\n'); printf('2. 查找学生信息\n'); printf('3. 删除学生信息\n'); printf('4. 修改学生信息\n'); printf('5. 显示所有学生信息\n'); printf('0. 退出系统\n'); printf('请选择操作:'); scanf('%d', &choice); switch (choice) { case 1: add_student(); break; case 2: search_student(); break; case 3: delete_student(); break; case 4: modify_student(); break; case 5: display_students(); break; case 0: printf('感谢使用!\n'); return 0; default: printf('无效操作!\n'); } }

C语言实现学生信息管理系统(链表数据结构)

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

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