用C语言写一个通讯录管理系统并包含文件的操作
时间: 2024-05-06 19:16:37 浏览: 87
基于C++语言和单链表数据结构实现的通讯录管理系统,包含文件读取、文件保存、增删改查、排序、清空等功能.zip
5星 · 资源好评率100%
好的,这里给您提供一个简单的通讯录管理系统程序,包含文件的操作:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义通讯录结构体
struct Contact {
char name[20];
char phone[20];
};
// 定义通讯录数组和记录条数
struct Contact contacts[100];
int count = 0;
// 显示菜单
void showMenu() {
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("请选择操作:");
}
// 添加联系人
void addContact() {
struct Contact contact;
printf("请输入联系人姓名:");
scanf("%s", contact.name);
printf("请输入联系人电话:");
scanf("%s", contact.phone);
contacts[count++] = contact;
printf("添加成功!\n");
}
// 删除联系人
void deleteContact() {
char name[20];
printf("请输入要删除的联系人姓名:");
scanf("%s", name);
int index = -1;
for (int i = 0; i < count; i++) {
if (strcmp(name, contacts[i].name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到联系人!\n");
} else {
for (int i = index; i < count - 1; i++) {
contacts[i] = contacts[i + 1];
}
count--;
printf("删除成功!\n");
}
}
// 修改联系人
void modifyContact() {
char name[20];
printf("请输入要修改的联系人姓名:");
scanf("%s", name);
int index = -1;
for (int i = 0; i < count; i++) {
if (strcmp(name, contacts[i].name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到联系人!\n");
} else {
printf("请输入新的联系人姓名:");
scanf("%s", contacts[index].name);
printf("请输入新的联系人电话:");
scanf("%s", contacts[index].phone);
printf("修改成功!\n");
}
}
// 查找联系人
void findContact() {
char name[20];
printf("请输入要查找的联系人姓名:");
scanf("%s", name);
int index = -1;
for (int i = 0; i < count; i++) {
if (strcmp(name, contacts[i].name) == 0) {
index = i;
break;
}
}
if (index == -1) {
printf("未找到联系人!\n");
} else {
printf("联系人姓名:%s,电话:%s\n", contacts[index].name, contacts[index].phone);
}
}
// 显示所有联系人
void showAllContacts() {
if (count == 0) {
printf("通讯录为空!\n");
} else {
printf("所有联系人:\n");
for (int i = 0; i < count; i++) {
printf("联系人姓名:%s,电话:%s\n", contacts[i].name, contacts[i].phone);
}
}
}
// 保存联系人到文件
void saveToFile() {
FILE *fp = fopen("contacts.txt", "w");
if (fp == NULL) {
printf("保存失败!\n");
} else {
for (int i = 0; i < count; i++) {
fprintf(fp, "%s %s\n", contacts[i].name, contacts[i].phone);
}
fclose(fp);
printf("保存成功!\n");
}
}
// 从文件中读取联系人
void readFromFile() {
FILE *fp = fopen("contacts.txt", "r");
if (fp == NULL) {
printf("读取失败!\n");
} else {
count = 0;
while (!feof(fp)) {
struct Contact contact;
fscanf(fp, "%s %s\n", contact.name, contact.phone);
if (strlen(contact.name) > 0) {
contacts[count++] = contact;
}
}
fclose(fp);
printf("读取成功!\n");
}
}
int main() {
int choice = 0;
while (choice != 8) {
showMenu();
scanf("%d", &choice);
switch (choice) {
case 1:
addContact();
break;
case 2:
deleteContact();
break;
case 3:
modifyContact();
break;
case 4:
findContact();
break;
case 5:
showAllContacts();
break;
case 6:
saveToFile();
break;
case 7:
readFromFile();
break;
case 8:
printf("谢谢使用!\n");
break;
default:
printf("请输入正确的选项!\n");
break;
}
}
return 0;
}
```
这个程序实现了一个简单的通讯录管理系统,包含添加、删除、修改、查找、显示和保存到文件等功能。文件的操作使用了C语言标准库中的文件操作函数,具体实现可以参考代码中的`saveToFile()`和`readFromFile()`函数。
阅读全文