用结构体数组写个通讯录系统的c语言代码,包括增加、删除、修改、查找、保存的功能
时间: 2023-12-11 07:03:03 浏览: 56
下面是一个简单的通讯录系统的C语言代码,使用结构体数组实现:
```c
#include <stdio.h>
#include <string.h>
#define MAX_CONTACTS 100 // 最多存储的联系人数量
#define NAME_LENGTH 50 // 联系人姓名的最大长度
#define PHONE_LENGTH 20 // 联系人电话号码的最大长度
// 定义联系人结构体
struct Contact {
char name[NAME_LENGTH];
char phone[PHONE_LENGTH];
};
// 定义全局变量,存储联系人信息
struct Contact contacts[MAX_CONTACTS];
int num_contacts = 0; // 当前联系人数量
// 添加联系人
void add_contact() {
if (num_contacts == MAX_CONTACTS) {
printf("通讯录已满,无法添加新联系人。\n");
return;
}
printf("请输入联系人姓名:");
scanf("%s", contacts[num_contacts].name);
printf("请输入联系人电话号码:");
scanf("%s", contacts[num_contacts].phone);
num_contacts++;
printf("联系人添加成功。\n");
}
// 删除联系人
void delete_contact() {
char name[NAME_LENGTH];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
int index = -1;
for (int i = 0; i < num_contacts; i++) {
if (strcmp(name, contacts[i].name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到联系人 %s。\n", name);
return;
}
for (int i = index; i < num_contacts - 1; i++) {
contacts[i] = contacts[i + 1];
}
num_contacts--;
printf("联系人 %s 已成功删除。\n", name);
}
// 修改联系人
void edit_contact() {
char name[NAME_LENGTH];
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
int index = -1;
for (int i = 0; i < num_contacts; i++) {
if (strcmp(name, contacts[i].name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到联系人 %s。\n", name);
return;
}
printf("请输入修改后的联系人电话号码:");
scanf("%s", contacts[index].phone);
printf("联系人 %s 已成功修改。\n", name);
}
// 查找联系人
void find_contact() {
char name[NAME_LENGTH];
printf("请输入要查找的联系人姓名:");
scanf("%s", name);
int index = -1;
for (int i = 0; i < num_contacts; i++) {
if (strcmp(name, contacts[i].name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到联系人 %s。\n", name);
return;
}
printf("%s 的电话号码是 %s。\n", name, contacts[index].phone);
}
// 保存联系人信息到文件中
void save_contacts() {
FILE *fp = fopen("contacts.txt", "w");
if (fp == NULL) {
printf("无法打开文件 contacts.txt。\n");
return;
}
for (int i = 0; i < num_contacts; i++) {
fprintf(fp, "%s %s\n", contacts[i].name, contacts[i].phone);
}
fclose(fp);
printf("联系人信息已保存到文件 contacts.txt 中。\n");
}
int main() {
int choice;
while (1) {
printf("\n1. 添加联系人\n");
printf("2. 删除联系人\n");
printf("3. 修改联系人\n");
printf("4. 查找联系人\n");
printf("5. 保存联系人信息\n");
printf("6. 退出\n");
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
add_contact();
break;
case 2:
delete_contact();
break;
case 3:
edit_contact();
break;
case 4:
find_contact();
break;
case 5:
save_contacts();
break;
case 6:
printf("感谢使用本通讯录系统。\n");
return 0;
default:
printf("无效的选择,请重新输入。\n");
}
}
}
```
这个代码使用了结构体数组来存储联系人信息,每个联系人包括姓名和电话号码两个属性。通讯录最多可以存储100个联系人,当联系人数量达到上限时,添加联系人操作会失败。其他操作中,查找、修改和删除联系人都是通过输入联系人姓名来实现的。最后一个操作是将联系人信息保存到文件中,文件名为contacts.txt。