用C语言编写一个通讯录,要求字段包括:姓名、性别、年龄、E-mail、QQ、联系电话和家庭住址。通过键盘输入数据,并把数据存放在一个文件中,可通过查找显示某人的通信信息。
时间: 2024-06-09 18:06:02 浏览: 92
好的,以下是一个简单的通讯录的 C 语言程序:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_CONTACTS 100
struct contact {
char name[50];
char gender[10];
int age;
char email[50];
char qq[20];
char phone[20];
char address[100];
};
struct contact contacts[MAX_CONTACTS];
int num_contacts = 0;
// 添加联系人
void add_contact() {
if (num_contacts >= MAX_CONTACTS) {
printf("通讯录已满,无法添加新联系人。\n");
return;
}
struct contact new_contact;
printf("请输入联系人姓名:");
scanf("%s", new_contact.name);
printf("请输入联系人性别:");
scanf("%s", new_contact.gender);
printf("请输入联系人年龄:");
scanf("%d", &new_contact.age);
printf("请输入联系人邮箱:");
scanf("%s", new_contact.email);
printf("请输入联系人QQ:");
scanf("%s", new_contact.qq);
printf("请输入联系人电话:");
scanf("%s", new_contact.phone);
printf("请输入联系人家庭地址:");
scanf("%s", new_contact.address);
contacts[num_contacts] = new_contact;
num_contacts++;
printf("成功添加联系人 %s。\n", new_contact.name);
}
// 查找联系人
void find_contact() {
char search_name[50];
printf("请输入要查找的联系人姓名:");
scanf("%s", search_name);
int found = 0;
for (int i = 0; i < num_contacts; i++) {
if (strcmp(contacts[i].name, search_name) == 0) {
printf("姓名:%s\n", contacts[i].name);
printf("性别:%s\n", contacts[i].gender);
printf("年龄:%d\n", contacts[i].age);
printf("邮箱:%s\n", contacts[i].email);
printf("QQ:%s\n", contacts[i].qq);
printf("电话:%s\n", contacts[i].phone);
printf("家庭地址:%s\n", contacts[i].address);
found = 1;
break;
}
}
if (!found) {
printf("没有找到姓名为 %s 的联系人。\n", search_name);
}
}
// 显示所有联系人
void list_contacts() {
if (num_contacts == 0) {
printf("通讯录为空。\n");
return;
}
printf("所有联系人:\n");
for (int i = 0; i < num_contacts; i++) {
printf("姓名:%s\n", contacts[i].name);
printf("性别:%s\n", contacts[i].gender);
printf("年龄:%d\n", contacts[i].age);
printf("邮箱:%s\n", contacts[i].email);
printf("QQ:%s\n", contacts[i].qq);
printf("电话:%s\n", contacts[i].phone);
printf("家庭地址:%s\n", contacts[i].address);
printf("\n");
}
}
// 保存通讯录到文件
void save_contacts() {
FILE *file = fopen("contacts.txt", "w");
if (file == NULL) {
printf("无法打开文件 contacts.txt 进行写入。\n");
return;
}
for (int i = 0; i < num_contacts; i++) {
fprintf(file, "%s\t%s\t%d\t%s\t%s\t%s\t%s\n",
contacts[i].name,
contacts[i].gender,
contacts[i].age,
contacts[i].email,
contacts[i].qq,
contacts[i].phone,
contacts[i].address);
}
fclose(file);
printf("通讯录已保存到文件 contacts.txt。\n");
}
// 从文件中加载通讯录
void load_contacts() {
FILE *file = fopen("contacts.txt", "r");
if (file == NULL) {
printf("无法打开文件 contacts.txt 进行读取。\n");
return;
}
while (!feof(file)) {
struct contact new_contact;
int count = fscanf(file, "%s\t%s\t%d\t%s\t%s\t%s\t%s\n",
new_contact.name,
new_contact.gender,
&new_contact.age,
new_contact.email,
new_contact.qq,
new_contact.phone,
new_contact.address);
if (count != 7) {
break;
}
contacts[num_contacts] = new_contact;
num_contacts++;
}
fclose(file);
printf("从文件 contacts.txt 中加载了 %d 个联系人。\n", num_contacts);
}
// 打印菜单
void print_menu() {
printf("欢迎使用通讯录管理系统\n");
printf("1. 添加联系人\n");
printf("2. 查找联系人\n");
printf("3. 显示所有联系人\n");
printf("4. 保存通讯录到文件\n");
printf("5. 从文件中加载通讯录\n");
printf("6. 退出程序\n");
printf("请输入数字选择要执行的操作:");
}
int main() {
load_contacts();
while (1) {
print_menu();
int choice;
scanf("%d", &choice);
switch (choice) {
case 1:
add_contact();
break;
case 2:
find_contact();
break;
case 3:
list_contacts();
break;
case 4:
save_contacts();
break;
case 5:
load_contacts();
break;
case 6:
printf("程序已退出。\n");
return 0;
default:
printf("无效的选择,请重新输入。\n");
break;
}
}
}
```
这个程序使用结构体 `contact` 存储每个联系人的信息,使用全局数组 `contacts` 存储所有联系人。程序提供了添加、查找、显示、保存和加载联系人的功能。在执行保存和加载操作时,程序将通讯录数据存储在文件 `contacts.txt` 中。
阅读全文