通讯录文件管理系统c++可保存信息到文件
时间: 2023-12-13 20:03:46 浏览: 128
好的,通讯录文件管理系统可以分为以下几个模块:
1. 菜单模块:用于显示程序的主界面和用户选项,包括增加联系人、查找联系人、修改联系人、删除联系人、显示联系人列表等选项。
2. 联系人信息结构体:用于存储每个联系人的信息,包括姓名、电话、地址等。
3. 文件操作模块:用于将联系人信息保存到文件中,并能够从文件中读取联系人信息。
4. 用户输入模块:用于获取用户输入的联系人信息,包括姓名、电话、地址等。
下面是一个简单的通讯录文件管理系统的代码示例,其中包含了文件操作和用户输入模块,你可以根据自己的需要进行修改和完善:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME 20
#define MAX_PHONE 15
#define MAX_ADDRESS 50
typedef struct Contact {
char name[MAX_NAME];
char phone[MAX_PHONE];
char address[MAX_ADDRESS];
} Contact;
void addContact(Contact *contacts, int *count);
void searchContact(Contact *contacts, int count);
void modifyContact(Contact *contacts, int count);
void deleteContact(Contact *contacts, int *count);
void displayContacts(Contact *contacts, int count);
void saveContactsToFile(Contact *contacts, int count);
void readContactsFromFile(Contact *contacts, int *count);
int main() {
Contact contacts[100];
int count = 0;
int choice;
readContactsFromFile(contacts, &count);
while (1) {
printf("\n========================\n");
printf(" 1. Add a contact\n");
printf(" 2. Search a contact\n");
printf(" 3. Modify a contact\n");
printf(" 4. Delete a contact\n");
printf(" 5. Display all contacts\n");
printf(" 6. Exit\n");
printf("========================\n");
printf("\nEnter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1:
addContact(contacts, &count);
saveContactsToFile(contacts, count);
break;
case 2:
searchContact(contacts, count);
break;
case 3:
modifyContact(contacts, count);
saveContactsToFile(contacts, count);
break;
case 4:
deleteContact(contacts, &count);
saveContactsToFile(contacts, count);
break;
case 5:
displayContacts(contacts, count);
break;
case 6:
saveContactsToFile(contacts, count);
exit(0);
default:
printf("\nInvalid choice!\n");
break;
}
}
return 0;
}
void addContact(Contact *contacts, int *count) {
printf("\nEnter the name: ");
scanf("%s", contacts[*count].name);
printf("Enter the phone number: ");
scanf("%s", contacts[*count].phone);
printf("Enter the address: ");
scanf("%s", contacts[*count].address);
(*count)++;
}
void searchContact(Contact *contacts, int count) {
char name[MAX_NAME];
printf("\nEnter the name: ");
scanf("%s", name);
int found = 0;
for (int i = 0; i < count; i++) {
if (strcmp(contacts[i].name, name) == 0) {
printf("\nName: %s\n", contacts[i].name);
printf("Phone: %s\n", contacts[i].phone);
printf("Address: %s\n", contacts[i].address);
found = 1;
break;
}
}
if (!found) {
printf("\nContact not found!\n");
}
}
void modifyContact(Contact *contacts, int count) {
char name[MAX_NAME];
printf("\nEnter the name: ");
scanf("%s", name);
int found = 0;
for (int i = 0; i < count; i++) {
if (strcmp(contacts[i].name, name) == 0) {
printf("\nEnter the new phone number: ");
scanf("%s", contacts[i].phone);
printf("Enter the new address: ");
scanf("%s", contacts[i].address);
found = 1;
break;
}
}
if (!found) {
printf("\nContact not found!\n");
}
}
void deleteContact(Contact *contacts, int *count) {
char name[MAX_NAME];
printf("\nEnter the name: ");
scanf("%s", name);
int found = 0;
for (int i = 0; i < *count; i++) {
if (strcmp(contacts[i].name, name) == 0) {
for (int j = i; j < *count - 1; j++) {
strcpy(contacts[j].name, contacts[j + 1].name);
strcpy(contacts[j].phone, contacts[j + 1].phone);
strcpy(contacts[j].address, contacts[j + 1].address);
}
(*count)--;
found = 1;
break;
}
}
if (!found) {
printf("\nContact not found!\n");
}
}
void displayContacts(Contact *contacts, int count) {
printf("\nContacts:\n");
for (int i = 0; i < count; i++) {
printf("\nName: %s\n", contacts[i].name);
printf("Phone: %s\n", contacts[i].phone);
printf("Address: %s\n", contacts[i].address);
printf("---------------------------\n");
}
}
void saveContactsToFile(Contact *contacts, int count) {
FILE *fp = fopen("contacts.txt", "w");
if (fp == NULL) {
printf("\nError opening file!\n");
exit(1);
}
for (int i = 0; i < count; i++) {
fprintf(fp, "%s %s %s\n", contacts[i].name, contacts[i].phone, contacts[i].address);
}
fclose(fp);
}
void readContactsFromFile(Contact *contacts, int *count) {
FILE *fp = fopen("contacts.txt", "r");
if (fp != NULL) {
while (fscanf(fp, "%s %s %s", contacts[*count].name, contacts[*count].phone, contacts[*count].address) != EOF) {
(*count)++;
}
fclose(fp);
}
}
```
在这个示例中,联系人信息使用了一个结构体来存储,通讯录最多可以存储100个联系人信息。当用户选择添加一个联系人时,程序会提示用户输入联系人的信息,并将其存储到数组中。当用户选择查找、修改或删除一个联系人时,程序会提示用户输入联系人的姓名,并遍历数组查找该联系人。当用户选择显示所有联系人时,程序会遍历数组并打印所有联系人的信息。当用户选择退出程序时,程序会将所有联系人信息保存到文件中,并退出。
这只是一个简单的示例,你可以根据自己的需要对其进行修改和完善。
阅读全文