C语言学生通讯录管理系统代码示例
#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;
原文地址: https://www.cveoy.top/t/topic/nE7l 著作权归作者所有。请勿转载和采集!