通讯录管理系统c语言
时间: 2023-07-03 13:23:58 浏览: 168
基于c语言做的通讯录管理系统.zip
5星 · 资源好评率100%
通讯录管理系统可以使用 C 语言来实现。以下是一个简单的实现思路:
1. 定义一个结构体来存储通讯录中的联系人信息,包括姓名、电话、地址等信息。
2. 定义一个数组来存储多个联系人的信息。
3. 实现菜单功能,包括添加联系人、删除联系人、修改联系人、查找联系人和显示所有联系人等选项。
4. 实现具体功能,比如添加联系人,需要输入联系人信息,然后将其存储到数组中。
5. 实现文件读写功能,可以将联系人信息存储到文件中或从文件中读取联系人信息。
以下是一个简单的通讯录管理系统的 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CONTACTS 100
struct Contact {
char name[50];
char phone[20];
char address[100];
};
struct Contact contacts[MAX_CONTACTS];
int numContacts = 0;
void addContact() {
if (numContacts >= MAX_CONTACTS) {
printf("通讯录已满,无法添加联系人\n");
return;
}
struct Contact c;
printf("请输入联系人姓名:");
scanf("%s", c.name);
printf("请输入联系人电话:");
scanf("%s", c.phone);
printf("请输入联系人地址:");
scanf("%s", c.address);
contacts[numContacts++] = c;
printf("联系人添加成功\n");
}
void deleteContact() {
char name[50];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
int index = -1;
for (int i = 0; i < numContacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该联系人\n");
return;
}
for (int i = index; i < numContacts - 1; i++) {
contacts[i] = contacts[i + 1];
}
numContacts--;
printf("联系人删除成功\n");
}
void editContact() {
char name[50];
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
int index = -1;
for (int i = 0; i < numContacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该联系人\n");
return;
}
printf("请输入联系人电话:");
scanf("%s", contacts[index].phone);
printf("请输入联系人地址:");
scanf("%s", contacts[index].address);
printf("联系人修改成功\n");
}
void searchContact() {
char name[50];
printf("请输入要查找的联系人姓名:");
scanf("%s", name);
int index = -1;
for (int i = 0; i < numContacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到该联系人\n");
return;
}
printf("姓名:%s\n电话:%s\n地址:%s\n", contacts[index].name, contacts[index].phone, contacts[index].address);
}
void displayContacts() {
if (numContacts == 0) {
printf("通讯录为空\n");
return;
}
printf("姓名\t电话\t地址\n");
for (int i = 0; i < numContacts; i++) {
printf("%s\t%s\t%s\n", contacts[i].name, contacts[i].phone, contacts[i].address);
}
}
void saveContacts() {
FILE *fp = fopen("contacts.txt", "w");
if (fp == NULL) {
printf("文件打开失败\n");
return;
}
fprintf(fp, "%d\n", numContacts);
for (int i = 0; i < numContacts; i++) {
fprintf(fp, "%s %s %s\n", contacts[i].name, contacts[i].phone, contacts[i].address);
}
fclose(fp);
printf("通讯录保存成功\n");
}
void loadContacts() {
FILE *fp = fopen("contacts.txt", "r");
if (fp == NULL) {
printf("文件打开失败\n");
return;
}
fscanf(fp, "%d", &numContacts);
for (int i = 0; i < numContacts; i++) {
fscanf(fp, "%s %s %s", contacts[i].name, contacts[i].phone, contacts[i].address);
}
fclose(fp);
printf("通讯录读取成功\n");
}
int main() {
int choice;
do {
printf("请选择操作:\n");
printf("1. 添加联系人\n");
printf("2. 删除联系人\n");
printf("3. 修改联系人\n");
printf("4. 查找联系人\n");
printf("5. 显示所有联系人\n");
printf("6. 保存通讯录\n");
printf("7. 读取通讯录\n");
printf("0. 退出\n");
scanf("%d", &choice);
switch (choice) {
case 1:
addContact();
break;
case 2:
deleteContact();
break;
case 3:
editContact();
break;
case 4:
searchContact();
break;
case 5:
displayContacts();
break;
case 6:
saveContacts();
break;
case 7:
loadContacts();
break;
case 0:
printf("程序已退出\n");
break;
default:
printf("无效的选项\n");
}
} while (choice != 0);
return 0;
}
```
注意,以上代码仅为示例,实际应用中可能需要根据具体需求进行修改和优化。
阅读全文