#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#pragma warning(disable:4996)
#pragma warning(disable:6031)
typedef struct Person
{
char name[20];
char sex;
char phone[20];
} Person;
/* 全局变量 */
Person g_persons[100];
int g_cnt = 0;
void menu()
{
printf("1.新建联系人\n");
printf("2.删除联系人\n");
printf("3.修改联系人\n");
printf("4.查找联系人\n");
printf("5.列出联系人\n");
}
/* 保存联系人到文件 */
void saveContactsToFile()
{
FILE* file = fopen("contacts.txt", "w");
if (file == NULL) {
printf("无法打开文件以保存联系人数据\n");
return;
}
for (int i = 0; i < g_cnt; i++) {
fprintf(file, "%s %c %s\n", g_persons[i].name, g_persons[i].sex, g_persons[i].phone);
}
fclose(file);
}
/* 加载联系人从文件 */
void loadContactsFromFile()
{
FILE* file = fopen("contacts.txt", "r");
if (file == NULL) {
printf("无法打开文件以加载联系人数据\n");
return;
}
while (fscanf(file, "%s %c %s", g_persons[g_cnt].name, &g_persons[g_cnt].sex, g_persons[g_cnt].phone) != EOF) {
g_cnt++;
}
fclose(file);
}
/* 新建联系人 */
void addPerson()
{
char name[20];
printf("请输入联系人姓名:");
scanf("%s", name);
char sex;
printf("请输入联系人性别:");
scanf(" %c", &sex);
char phone[20];
printf("请输入联系人号码:");
scanf("%s", phone);
strcpy(g_persons[g_cnt].name, name);
g_persons[g_cnt].sex = sex;
strcpy(g_persons[g_cnt].phone, phone);
// 检查联系人是否已经存在
// 检查联系人是否已经存在
int exist = 0;
for (int i = 0; i < g_cnt; i++)
{
if (strcmp(g_persons[i].name, g_persons[g_cnt].name) == 0)
{
exist = 1;
break;
}
}
if (!exist)
{
g_cnt++;
printf("联系人添加成功!n");
}
else
{
printf("联系人已存在,无法添加!\n");
}
}
/* 删除联系人 */
void deletePerson()
{
printf("请输入要删除的联系人姓名:");
char name[20];
scanf("%s", name);
for (int idx = 0; idx < g_cnt; idx++)
{
if (strcmp(g_persons[idx].name, name) == 0)
{
for (int j = idx; j < g_cnt - 1; j++)
{
g_persons[j] = g_persons[j + 1];
}
g_cnt--;
printf("联系人删除成功\n");
return;
}
}
printf("未找到该联系人\n");
}
/* 修改联系人 */
void modifyPerson()
{
printf("请输入要修改的联系人姓名:");
char name[20];
scanf("%s", name);
for (int idx = 0; idx < g_cnt; idx++)
{
if (strcmp(g_persons[idx].name, name) == 0)
{
printf("请输入新的姓名:");
scanf("%s", g_persons[idx].name);
printf("请输入新的性别(M/F):");
scanf(" %c", &g_persons[idx].sex);
printf("请输入新的电话号码:");
scanf("%s", g_persons[idx].phone);
printf("联系人修改成功\n");
return;
}
}
printf("未找到该联系人\n");
}
/* 查找联系人 */
void searchPerson()
{
printf("请输入要查找的联系人姓名:");
char name[20];
scanf("%s", name);
for (int idx = 0; idx < g_cnt; idx++)
{
if (strcmp(g_persons[idx].name, name) == 0)
{
printf("name = %s,\tsex = %c,\tphone = %s\n", g_persons[idx].name, g_persons[idx].sex, g_persons[idx].phone);
return;
}
}
printf("未找到该联系人\n");
}
/* 列出联系人 */
void listPerson()
{
for (int idx = 0; idx < g_cnt; idx++)
{
printf("name=%s,\tsex=%c,\tphone=%s\n", g_persons[idx].name, g_persons[idx].sex, g_persons[idx].phone);
}
printf("列出联系人成功\n");
}
int main()
{
loadContactsFromFile();
int choice;
do {
menu();
printf("请输入你的选项:");
scanf("%d", &choice);
getchar();
switch (choice)
{
case 1:
addPerson();
break;
case 2:
deletePerson();
break;
case 3:
modifyPerson();
break;
case 4:
searchPerson();
break;
case 5:
listPerson();
break;
default:
break;
}
saveContactsToFile();
printf("是否继续操作?(1-是,0-否):");
scanf("%d", &choice);
} while (choice != 0);
return 0;
}