用c语音写按照名字查找后插入数据的学生通讯录系统
时间: 2023-12-05 18:06:24 浏览: 28
好的,下面是一个简单的学生通讯录系统的C语言代码,其中包括按照姓名查找并插入数据的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
struct student {
char name[MAX_NAME_LEN];
char phone[11];
struct student* next;
};
// 插入新学生信息
struct student* insert_student(struct student* head, char* name, char* phone) {
struct student* new_student = (struct student*)malloc(sizeof(struct student));
strcpy(new_student->name, name);
strcpy(new_student->phone, phone);
new_student->next = NULL;
if (head == NULL) {
head = new_student;
}
else {
struct student* p = head;
struct student* prev = NULL;
while (p != NULL && strcmp(p->name, name) <= 0) {
prev = p;
p = p->next;
}
if (prev == NULL) {
new_student->next = head;
head = new_student;
}
else {
prev->next = new_student;
new_student->next = p;
}
}
return head;
}
// 按照姓名查找学生信息
struct student* search_student(struct student* head, char* name) {
struct student* p = head;
while (p != NULL && strcmp(p->name, name) != 0) {
p = p->next;
}
return p;
}
// 输出所有学生信息
void print_all_students(struct student* head) {
struct student* p = head;
while (p != NULL) {
printf("%s\t%s\n", p->name, p->phone);
p = p->next;
}
}
int main() {
struct student* head = NULL;
char name[MAX_NAME_LEN];
char phone[11];
int choice = 0;
while (1) {
printf("1. 插入学生信息\n");
printf("2. 查找学生信息\n");
printf("3. 输出所有学生信息\n");
printf("4. 退出\n");
printf("请输入选项:");
scanf("%d", &choice);
switch (choice) {
case 1:
printf("请输入学生姓名:");
scanf("%s", name);
printf("请输入学生电话:");
scanf("%s", phone);
head = insert_student(head, name, phone);
printf("插入成功!\n");
break;
case 2:
printf("请输入要查找的学生姓名:");
scanf("%s", name);
struct student* result = search_student(head, name);
if (result == NULL) {
printf("未找到该学生!\n");
}
else {
printf("%s\t%s\n", result->name, result->phone);
}
break;
case 3:
print_all_students(head);
break;
case 4:
return 0;
default:
printf("无效选项!\n");
break;
}
}
}
```
在这个程序中,我们定义了一个学生结构体,包括姓名和电话号码两个属性,以及一个指向下一个学生节点的指针。然后我们实现了三个函数:
- `insert_student`:按照姓名顺序插入一个新学生的信息,并返回新的链表头指针。
- `search_student`:按照姓名查找学生信息,并返回指向该学生节点的指针。
- `print_all_students`:输出所有学生的信息。
在 `main` 函数中,我们通过一个循环来处理用户的不同选项,包括插入新学生信息、查找学生信息、输出所有学生信息以及退出程序等。用户输入学生姓名和电话号码时,我们调用 `insert_student` 函数来插入新学生信息。用户要查找学生信息时,我们调用 `search_student` 函数进行查找,并输出结果。如果用户要输出所有学生信息,则调用 `print_all_students` 函数。最后,用户选择退出程序时,我们返回 0 来结束程序的运行。
希望这个程序对你有所帮助!