C语言编程练习:建立一个同学通讯录,输入学号、姓名、电话号码、住址等信息,然后 对通信录进行显示、查找、添加、修改。 编写一个菜单驱动的通讯录,其功能要求: (1)通讯录的每一条信息包括学号、姓名、家庭住址、电话、分类(如 同事、朋友、同学、家人等)、EMAIL、QQ等。 (2)输入功能:可以一次完成若干条信息的输入,再输入第二个人的信息时,自动刷新前一个人的信息。 (3)显示功能:完成全部通讯录信息的显示。
时间: 2023-11-27 20:03:10 浏览: 256
学生信息管理系统, 实现学生信息包括:学号、姓名、性别、年龄、班级等信息
5星 · 资源好评率100%
好的,这是一道非常典型的 C 语言编程练习题,我可以帮你解答。
首先,我们可以定义一个结构体来存储每个同学的信息:
```c
typedef struct {
int id; // 学号
char name[20]; // 姓名
char address[50]; // 家庭住址
char phone[20]; // 电话
char category[10];// 分类
char email[30]; // 邮箱
char qq[20]; // QQ号码
} Student;
```
然后,我们可以定义一个数组来存储所有同学的信息:
```c
#define MAX_STUDENTS 100 // 最多存储100个同学的信息
Student students[MAX_STUDENTS];
int num_students = 0; // 当前已经存储的同学数量
```
接下来,我们可以编写一个菜单函数,让用户选择要进行的操作:
```c
void menu() {
printf("\n\n");
printf("欢迎使用同学通讯录\n");
printf("------------------------\n");
printf("1. 输入同学信息\n");
printf("2. 显示所有同学信息\n");
printf("3. 查找同学信息\n");
printf("4. 添加同学信息\n");
printf("5. 修改同学信息\n");
printf("6. 退出程序\n");
printf("------------------------\n");
printf("请输入要执行的操作(1-6):");
}
```
接着,我们可以编写函数来实现各种操作:
1. 输入同学信息
```c
void input_students() {
printf("请输入同学信息(学号、姓名、家庭住址、电话、分类、邮箱、QQ号码),用空格分隔:\n");
scanf("%d %s %s %s %s %s %s",
&students[num_students].id,
students[num_students].name,
students[num_students].address,
students[num_students].phone,
students[num_students].category,
students[num_students].email,
students[num_students].qq);
num_students++;
}
```
2. 显示所有同学信息
```c
void display_students() {
printf("所有同学信息如下:\n");
printf("学号\t姓名\t家庭住址\t电话\t分类\t邮箱\tQQ号码\n");
for (int i = 0; i < num_students; i++) {
printf("%d\t%s\t%s\t%s\t%s\t%s\t%s\n",
students[i].id,
students[i].name,
students[i].address,
students[i].phone,
students[i].category,
students[i].email,
students[i].qq);
}
}
```
3. 查找同学信息
```c
void search_students() {
char name[20];
printf("请输入要查找的同学姓名:");
scanf("%s", name);
for (int i = 0; i < num_students; i++) {
if (strcmp(students[i].name, name) == 0) {
printf("找到了以下同学信息:\n");
printf("学号\t姓名\t家庭住址\t电话\t分类\t邮箱\tQQ号码\n");
printf("%d\t%s\t%s\t%s\t%s\t%s\t%s\n",
students[i].id,
students[i].name,
students[i].address,
students[i].phone,
students[i].category,
students[i].email,
students[i].qq);
return;
}
}
printf("没有找到名为%s的同学\n", name);
}
```
4. 添加同学信息
```c
void add_student() {
int id;
printf("请输入要添加的同学信息(学号、姓名、家庭住址、电话、分类、邮箱、QQ号码),用空格分隔:\n");
scanf("%d", &id);
// 检查学号是否已经存在
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
printf("学号%d已经存在,无法添加同学信息\n", id);
return;
}
}
students[num_students].id = id;
scanf("%s %s %s %s %s %s",
students[num_students].name,
students[num_students].address,
students[num_students].phone,
students[num_students].category,
students[num_students].email,
students[num_students].qq);
num_students++;
}
```
5. 修改同学信息
```c
void modify_student() {
int id;
printf("请输入要修改的同学学号:");
scanf("%d", &id);
for (int i = 0; i < num_students; i++) {
if (students[i].id == id) {
printf("找到以下同学信息:\n");
printf("学号\t姓名\t家庭住址\t电话\t分类\t邮箱\tQQ号码\n");
printf("%d\t%s\t%s\t%s\t%s\t%s\t%s\n",
students[i].id,
students[i].name,
students[i].address,
students[i].phone,
students[i].category,
students[i].email,
students[i].qq);
printf("请输入要修改的同学信息(姓名、家庭住址、电话、分类、邮箱、QQ号码),用空格分隔:\n");
scanf("%s %s %s %s %s %s",
students[i].name,
students[i].address,
students[i].phone,
students[i].category,
students[i].email,
students[i].qq);
printf("修改成功!\n");
return;
}
}
printf("没有找到学号为%d的同学\n", id);
}
```
最后,我们可以编写主函数来调用这些函数,并实现菜单驱动:
```c
int main() {
int choice;
do {
menu();
scanf("%d", &choice);
switch (choice) {
case 1:
input_students();
break;
case 2:
display_students();
break;
case 3:
search_students();
break;
case 4:
add_student();
break;
case 5:
modify_student();
break;
case 6:
printf("谢谢使用同学通讯录,再见!\n");
break;
default:
printf("无效的选择,请重新输入(1-6)\n");
break;
}
} while (choice != 6);
return 0;
}
```
好了,这样就完成了这道 C 语言编程练习题目的解答,希望能够对你有所帮助!
阅读全文