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

// 定义学生结构体 typedef struct student { char name[20]; char phone[20]; char email[50]; } Student;

// 定义链表节点结构体 typedef struct node { Student data; struct node* next; } Node;

// 定义链表头指针 Node* head = NULL;

// 添加学生信息 void addStudent() { Student s; printf("请输入学生姓名:"); scanf("%s", s.name); printf("请输入学生电话:"); scanf("%s", s.phone); printf("请输入学生邮箱:"); scanf("%s", s.email);

// 创建新节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = s;
newNode->next = NULL;

// 插入链表
if (head == NULL) {
    head = newNode;
} else {
    Node* cur = head;
    while (cur->next != NULL) {
        cur = cur->next;
    }
    cur->next = newNode;
}

printf("添加成功!\n");

}

// 删除学生信息 void deleteStudent() { if (head == NULL) { printf("通讯录为空,无法删除!\n"); return; }

char name[20];
printf("请输入要删除的学生姓名:");
scanf("%s", name);

// 查找节点
Node* cur = head;
Node* prev = NULL;
while (cur != NULL) {
    if (strcmp(cur->data.name, name) == 0) {
        break;
    }
    prev = cur;
    cur = cur->next;
}

// 删除节点
if (cur == NULL) {
    printf("未找到该学生!\n");
} else {
    if (prev == NULL) {
        head = cur->next;
    } else {
        prev->next = cur->next;
    }
    free(cur);
    printf("删除成功!\n");
}

}

// 查找学生信息 void findStudent() { if (head == NULL) { printf("通讯录为空,无法查找!\n"); return; }

char name[20];
printf("请输入要查找的学生姓名:");
scanf("%s", name);

// 查找节点
Node* cur = head;
while (cur != NULL) {
    if (strcmp(cur->data.name, name) == 0) {
        printf("姓名:%s,电话:%s,邮箱:%s\n", cur->data.name, cur->data.phone, cur->data.email);
        return;
    }
    cur = cur->next;
}

printf("未找到该学生!\n");

}

// 打印通讯录 void printList() { printf("姓名\t电话\t邮箱\n"); Node* cur = head; while (cur != NULL) { printf("%s\t%s\t%s\n", cur->data.name, cur->data.phone, cur->data.email); cur = cur->next; } }

// 主函数 int main() { int choice; while (1) { printf("\n1.添加学生信息\n"); printf("2.删除学生信息\n"); printf("3.查找学生信息\n"); printf("4.打印通讯录\n"); printf("5.退出程序\n"); printf("请选择操作(输入数字):"); scanf("%d", &choice);

    switch (choice) {
        case 1:
            addStudent();
            break;
        case 2:
            deleteStudent();
            break;
        case 3:
            findStudent();
            break;
        case 4:
            printList();
            break;
        case 5:
            printf("程序已退出!\n");
            exit(0);
        default:
            printf("无效选择,请重新输入!\n");
            break;
    }
}

return 0;
C语言学生通讯录管理系统代码示例

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

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