C语言编程练习:建立一个同学通讯录,输入学号、姓名、电话号码、住址等信息,然后 对通信录进行显示、查找、添加、修改。 编写一个菜单驱动的通讯录,其功能要求: (1)通讯录的每一条信息包括学号、姓名、家庭住址、电话、分类(如 同事、朋友、同学、家人等)、EMAIL、QQ等。 (2)输入功能:可以一次完成若干条信息的输入,输入第二个人信息时,自动刷新上一个人的信息。。 (3)显示功能:完成全部通讯录信息的显示。
时间: 2023-12-11 18:04:40 浏览: 126
好的,这是一个很好的编程练习题目。我可以给你一些思路和代码示例,帮助你完成这个项目。
首先,你需要定义一个结构体来存储每个人的信息。这个结构体应该包含学号、姓名、家庭住址、电话、分类、EMAIL、QQ等字段。例如:
```c
struct Contact {
char id[10];
char name[20];
char address[50];
char phone[20];
char category[20];
char email[50];
char qq[20];
};
```
接下来,你需要定义一个数组来存储所有的联系人信息。你可以在程序开始时,先让用户输入要添加的联系人数量,然后动态分配数组空间。例如:
```c
int size;
printf("请输入联系人数量:");
scanf("%d", &size);
struct Contact *contacts = malloc(size * sizeof(struct Contact));
```
然后,你需要编写一个菜单驱动的程序,让用户可以选择输入、显示、查找、添加或修改联系人信息。例如:
```c
while (1) {
printf("请选择要执行的操作:\n");
printf("1. 输入联系人信息\n");
printf("2. 显示全部联系人信息\n");
printf("3. 查找联系人信息\n");
printf("4. 添加联系人信息\n");
printf("5. 修改联系人信息\n");
printf("6. 退出\n");
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
// 输入联系人信息
break;
case 2:
// 显示全部联系人信息
break;
case 3:
// 查找联系人信息
break;
case 4:
// 添加联系人信息
break;
case 5:
// 修改联系人信息
break;
case 6:
// 退出程序
return 0;
default:
printf("无效的选项,请重新输入\n");
break;
}
}
```
接下来,我们来实现每个操作的具体代码。首先是输入联系人信息:
```c
for (int i = 0; i < size; i++) {
printf("请输入第 %d 个联系人信息:\n", i + 1);
printf("学号:");
scanf("%s", contacts[i].id);
printf("姓名:");
scanf("%s", contacts[i].name);
printf("家庭住址:");
scanf("%s", contacts[i].address);
printf("电话:");
scanf("%s", contacts[i].phone);
printf("分类:");
scanf("%s", contacts[i].category);
printf("EMAIL:");
scanf("%s", contacts[i].email);
printf("QQ:");
scanf("%s", contacts[i].qq);
}
```
接下来是显示全部联系人信息:
```c
for (int i = 0; i < size; i++) {
printf("第 %d 个联系人信息:\n", i + 1);
printf("学号:%s\n", contacts[i].id);
printf("姓名:%s\n", contacts[i].name);
printf("家庭住址:%s\n", contacts[i].address);
printf("电话:%s\n", contacts[i].phone);
printf("分类:%s\n", contacts[i].category);
printf("EMAIL:%s\n", contacts[i].email);
printf("QQ:%s\n", contacts[i].qq);
}
```
接下来是查找联系人信息。你可以让用户输入要查找的联系人姓名,然后在数组中查找是否有匹配的联系人。例如:
```c
char name[20];
printf("请输入要查找的联系人姓名:");
scanf("%s", name);
for (int i = 0; i < size; i++) {
if (strcmp(name, contacts[i].name) == 0) {
printf("找到了匹配的联系人信息:\n");
printf("学号:%s\n", contacts[i].id);
printf("姓名:%s\n", contacts[i].name);
printf("家庭住址:%s\n", contacts[i].address);
printf("电话:%s\n", contacts[i].phone);
printf("分类:%s\n", contacts[i].category);
printf("EMAIL:%s\n", contacts[i].email);
printf("QQ:%s\n", contacts[i].qq);
break;
}
}
```
接下来是添加联系人信息。你可以让用户输入要添加的联系人信息,然后将其添加到数组末尾。如果数组已满,你可以动态扩展数组空间。例如:
```c
if (size >= capacity) {
capacity *= 2;
contacts = realloc(contacts, capacity * sizeof(struct Contact));
}
printf("请输入要添加的联系人信息:\n");
printf("学号:");
scanf("%s", contacts[size].id);
printf("姓名:");
scanf("%s", contacts[size].name);
printf("家庭住址:");
scanf("%s", contacts[size].address);
printf("电话:");
scanf("%s", contacts[size].phone);
printf("分类:");
scanf("%s", contacts[size].category);
printf("EMAIL:");
scanf("%s", contacts[size].email);
printf("QQ:");
scanf("%s", contacts[size].qq);
size++;
```
最后是修改联系人信息。你可以让用户输入要修改的联系人姓名,然后在数组中查找是否有匹配的联系人。如果找到了匹配的联系人,你可以让用户修改其信息。例如:
```c
char name[20];
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
for (int i = 0; i < size; i++) {
if (strcmp(name, contacts[i].name) == 0) {
printf("找到了匹配的联系人信息:\n");
printf("学号:%s\n", contacts[i].id);
printf("姓名:%s\n", contacts[i].name);
printf("家庭住址:%s\n", contacts[i].address);
printf("电话:%s\n", contacts[i].phone);
printf("分类:%s\n", contacts[i].category);
printf("EMAIL:%s\n", contacts[i].email);
printf("QQ:%s\n", contacts[i].qq);
printf("请输入修改后的联系人信息:\n");
printf("学号:");
scanf("%s", contacts[i].id);
printf("姓名:");
scanf("%s", contacts[i].name);
printf("家庭住址:");
scanf("%s", contacts[i].address);
printf("电话:");
scanf("%s", contacts[i].phone);
printf("分类:");
scanf("%s", contacts[i].category);
printf("EMAIL:");
scanf("%s", contacts[i].email);
printf("QQ:");
scanf("%s", contacts[i].qq);
break;
}
}
```
好了,以上就是一个简单的同学通讯录程序的实现。你可以根据自己的需求,对其进行扩展和修改。
阅读全文