通讯录c语言程序设计代码
下面是一个简单的通讯录C语言程序设计代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CONTACTS 100
typedef struct {
char name[50];
char phone[20];
char email[50];
} Contact;
Contact contacts[MAX_CONTACTS];
int numContacts = 0;
void addContact() {
if (numContacts >= MAX_CONTACTS) {
printf("通讯录已满,无法添加新联系人。\n");
return;
}
Contact newContact;
printf("请输入联系人姓名:");
scanf("%s", newContact.name);
printf("请输入联系人电话:");
scanf("%s", newContact.phone);
printf("请输入联系人邮箱:");
scanf("%s", newContact.email);
contacts[numContacts] = newContact;
numContacts++;
printf("联系人已添加成功。\n");
}
void searchContact() {
char name[50];
printf("请输入要搜索的联系人姓名:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < numContacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
printf("联系人姓名:%s\n", contacts[i].name);
printf("联系人电话:%s\n", contacts[i].phone);
printf("联系人邮箱:%s\n", contacts[i].email);
found = 1;
break;
}
}
if (!found) {
printf("未找到该联系人。\n");
}
}
void displayContacts() {
if (numContacts == 0) {
printf("通讯录为空。\n");
return;
}
printf("通讯录中的联系人:\n");
for (int i = 0; i < numContacts; i++) {
printf("联系人姓名:%s\n", contacts[i].name);
printf("联系人电话:%s\n", contacts[i].phone);
printf("联系人邮箱:%s\n", contacts[i].email);
printf("--------------------\n");
}
}
int main() {
int choice;
while (1) {
printf("请选择操作:\n");
printf("1. 添加联系人\n");
printf("2. 搜索联系人\n");
printf("3. 显示所有联系人\n");
printf("4. 退出\n");
printf("请输入选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
addContact();
break;
case 2:
searchContact();
break;
case 3:
displayContacts();
break;
case 4:
printf("程序已退出。\n");
exit(0);
default:
printf("无效的选择。\n");
}
}
return 0;
}
这个程序实现了一个简单的通讯录功能,可以添加联系人、搜索联系人和显示所有联系人。通讯录使用结构体数组来存储联系人信息,最多可以存储100个联系人。用户可以通过输入数字选择不同的操作,直到选择退出为止。
这个程序还可以进一步完善,例如可以添加删除联系人的功能,以及对联系人信息的修改和保存等。下面是一个补充的版本:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CONTACTS 100
typedef struct {
char name[50];
char phone[20];
char email[50];
} Contact;
Contact contacts[MAX_CONTACTS];
int numContacts = 0;
void addContact() {
if (numContacts >= MAX_CONTACTS) {
printf("通讯录已满,无法添加新联系人。\n");
return;
}
Contact newContact;
printf("请输入联系人姓名:");
scanf("%s", newContact.name);
printf("请输入联系人电话:");
scanf("%s", newContact.phone);
printf("请输入联系人邮箱:");
scanf("%s", newContact.email);
contacts[numContacts] = newContact;
numContacts++;
printf("联系人已添加成功。\n");
}
void searchContact() {
char name[50];
printf("请输入要搜索的联系人姓名:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < numContacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
printf("联系人姓名:%s\n", contacts[i].name);
printf("联系人电话:%s\n", contacts[i].phone);
printf("联系人邮箱:%s\n", contacts[i].email);
found = 1;
break;
}
}
if (!found) {
printf("未找到该联系人。\n");
}
}
void deleteContact() {
char name[50];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < numContacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
for (int j = i; j < numContacts - 1; j++) {
contacts[j] = contacts[j + 1];
}
numContacts--;
found = 1;
printf("联系人已成功删除。\n");
break;
}
}
if (!found) {
printf("未找到该联系人。\n");
}
}
void modifyContact() {
char name[50];
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
int found = 0;
for (int i = 0; i < numContacts; i++) {
if (strcmp(contacts[i].name, name) == 0) {
printf("请输入新的联系人电话:");
scanf("%s", contacts[i].phone);
printf("请输入新的联系人邮箱:");
scanf("%s", contacts[i].email);
found = 1;
printf("联系人信息已成功修改。\n");
break;
}
}
if (!found) {
printf("未找到该联系人。\n");
}
}
void saveContacts() {
FILE *file = fopen("contacts.txt", "w");
if (file == NULL) {
printf("无法打开文件。\n");
return;
}
for (int i = 0; i < numContacts; i++) {
fprintf(file, "%s %s %s\n", contacts[i].name, contacts[i].phone, contacts[i].email);
}
fclose(file);
printf("通讯录已成功保存到文件。\n");
}
void loadContacts() {
FILE *file = fopen("contacts.txt", "r");
if (file == NULL) {
printf("无法打开文件。\n");
return;
}
numContacts = 0;
while (fscanf(file, "%s %s %s", contacts[numContacts].name, contacts[numContacts].phone, contacts[numContacts].email) != EOF) {
numContacts++;
}
fclose(file);
printf("通讯录已成功从文件加载。\n");
}
void displayContacts() {
if (numContacts == 0) {
printf("通讯录为空。\n");
return;
}
printf("通讯录中的联系人:\n");
for (int i = 0; i < numContacts; i++) {
printf("联系人姓名:%s\n", contacts[i].name);
printf("联系人电话:%s\n", contacts[i].phone);
printf("联系人邮箱:%s\n", contacts[i].email);
printf("--------------------\n");
}
}
int main() {
int choice;
while (1) {
printf("请选择操作:\n");
printf("1. 添加联系人\n");
printf("2. 搜索联系人\n");
printf("3. 删除联系人\n");
printf("4. 修改联系人\n");
printf("5. 保存通讯录到文件\n");
printf("6. 从文件加载通讯录\n");
printf("7. 显示所有联系人\n");
printf("8. 退出\n");
printf("请输入选择:");
scanf("%d", &choice);
switch (choice) {
case 1:
addContact();
break;
case 2:
searchContact();
break;
case 3:
deleteContact();
break;
case 4:
modifyContact();
break;
case 5:
saveContacts();
break;
case 6:
loadContacts();
break;
case 7:
displayContacts();
break;
case 8:
printf("程序已退出。\n");
exit(0);
default:
printf("无效的选择。\n");
}
}
return 0;
}
这个版本在原有的基础上添加了删除联系人、修改联系人、保存通讯录到文件和从文件加载通讯录的功能。用户可以通过输入数字选择不同的操作,直到选择退出为止。通讯录的信息会保存到名为"contacts.txt"的文件中,可以在程序下次运行时加载。