文件+通讯录

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_SIZE 100
typedef struct information {
char name[100];
char phone[100];
}information;
typedef struct Addressbook {
information person[MAX_SIZE];
int size;
}Addressbook;
void InitAddressbook(Addressbook* addressbook)
{
for (int i = 0;i < MAX_SIZE;i++)
{
strcpy(addressbook->person[i].name, “”);
strcpy(addressbook->person[i].phone, “”);
}
addressbook->size = 0;
}
void openFile(Addressbook* addressbook)
{
FILE* fp = fopen(“d:/iformation.txt”, “rb”);
if (fp == NULL)
{
perror(" 您的输入有误\n");
}
fread(addressbook, sizeof(Addressbook), 1, fp);
fclose(fp);
}
void readInformation(Addressbook* addressbook)
{
FILE* fp = fopen(“d:/iformation.txt”, “wb”);
if (fp == NULL)
{
perror(“您的输入有误\n”);
}
fwrite(addressbook, sizeof(Addressbook), 1, fp);
fclose(fp);
}
int meau()
{
printf("=\n");
printf(" 1.添加联系人信息\n");
printf(" 2.删除联系人信息\n");
printf(" 3.查找联系人信息\n");
printf(" 4.修改联系人信息\n");
printf(" 5.打印所有联系人\n");
printf(" 6.清空所有联系人\n");
printf(" 7.排序联系人\n");
printf(" 0.保存并且退出\n");
printf("
=\n");
int choice = 0;
printf(" 请输入您的选择: “);
scanf(”%d", &choice);
return choice;
}
void addContactPerson(Addressbook* addressbook)
{
if (addressbook->size >= MAX_SIZE)
{
printf(" 通讯录已满,无法添加\n");
return;
}
int location = addressbook->size;
printf(" 请输入联系人姓名: “);
scanf(”%s", addressbook->person[location].name);
printf(" 请输入联系人电话: “);
scanf(”%s", addressbook->person[location].phone);
printf(" 添加成功!!\n");
addressbook->size++;
}
void delContactPerson(Addressbook* addressbook)
{
if (addressbook->size == 0)
{
printf(" 通讯录为空,不能进行删除操作!!\n");
return;
}
while (1)
{
char c = 0;
int node = 0;
printf(" 请输入您所要删除内容的序号: “);
scanf(”%d", &node);
getchar();
if (node >= addressbook->size || node < 0)
{
printf(“删除对象不在通讯录中,是否进行删除操作 Y/N: “);
char c;
c = getchar();
if (c != ‘y’ && c != ‘Y’)
{
return;
}
continue;
}
printf(” 您确定吗? Y/N : “);
c = getchar();
if (c == ‘y’ || c == ‘Y’)
{
addressbook->person[node] = addressbook->person[addressbook->size - 1];
addressbook->size–;
printf(” 删除成功!\n”);
break;
}
else
{
printf("\n");
return;
}
}
}
void findContactPerson(Addressbook* addressbook)
{
if (addressbook->size == 0)
{
printf(" 通讯录内容为空,无法进行检索!\n");
return;
}
while (1) {
printf(" 请输入您的检索方式(1.姓名搜索 2.电话号码搜索)\n");
printf(" 请输入您的选择: “);
int choice = 0;
scanf(”%d", &choice);
if (choice == 1)
{
printf(“请输入您要搜索的姓名: “);
char tmp[100];
scanf(”%s”, tmp);
for (int i = 0;i < addressbook->size;i++)
{
if (strcmp(tmp, addressbook->person[i].name) == 0)
{
printf(" [%d] 姓名: %s 电话: %s\n", i, addressbook->person[i].name, addressbook->person[i].phone);
return;
}
}
printf(" 您输入的姓名不存在!\n");
printf(" 1.结束搜索 2.继续继续搜索\n");
printf(" 请输入您的选择: “);
int ce = 0;
scanf(”%d", &ce);
if (ce == 1)
{
return;
}
}
else if (choice == 2)
{
printf(“请输入您要搜索的电话号码: “);
char tmp[100];
scanf(”%s”, tmp);
for (int i = 0;i < addressbook->size;i++)
{
if (strcmp(tmp, addressbook->person[i].phone) == 0)
{
printf(" [%d] 姓名: %s 电话: %s\n", i, addressbook->person[i].name, addressbook->person[i].phone);
return;
}
}
printf(“您输入的电话号码不存在\n”);
printf(" 1.结束搜索 2.继续继续搜索\n");
printf(" 请输入您的选择: “);
int be = 0;
scanf(”%d", &be);
if (be == 1)
{
return;
}
}
else {
printf(" 您的输入有误,请重新输入\n");
}
}
}
void modifyContactPerson(Addressbook* addressbook)
{
if (addressbook->size == 0)
{
printf(" 通讯录为空,无修改对象!\n");
return;
}
while (1)
{
printf(" 请输入您要修改的序号: “);
int node = 0;
scanf(”%d", &node);
getchar();
if (node >= addressbook->size || node > 0)
{
printf(" 修改对象不存在, 是否继续? (Y/N): “);
char c = 0;
c = getchar();
if (c != ‘Y’ && c != ‘y’)
return;
continue;
}
printf(” 请输入您要修改的选项 1.姓名 2.电话号码 3.都要改 \n");
printf(" 请输入您的选择: “);
int a = 0;
scanf(”%d", &a);
if (a == 1)
{
printf(" 新姓名: “);
scanf(”%s", addressbook->person[node].name);
printf(" 修改成功! \n");
return;
}
else if (a == 2)
{
printf(" 新电话: “);
scanf(”%s", addressbook->person[node].phone);
printf(" 修改成功! \n");
return;
}
else if (a == 3)
{
printf(" 新姓名: “);
scanf(”%s", addressbook->person[node].name);
printf(" 新电话: “);
scanf(”%s", addressbook->person[node].phone);
printf(" 修改成功! \n");
return;
}
else
{
printf(" 您的输入有误,请重新输入\n");
}
}
}
void printfContactPerson(Addressbook* addressbook)
{
if (addressbook->size == 0)
{
printf(" 通讯录为空!\n");
return;
}
int size = addressbook->size;
for (int i = 0;i < size;i++)
{
printf(" [%d] 姓名: %s 电话: %s\n", i, addressbook->person[i].name, addressbook->person[i].phone);
}
}
void clearContactPerson(Addressbook* addressbook)
{
if (addressbook->size == 0)
{
printf(" 清空完毕!\n");
return;
}
getchar();
printf(“是否继续执行删除? (Y/N): “);
char c = 0;
c = getchar();
if (c == ‘Y’ || c == ‘y’)
addressbook->size = 0;
printf(” 清空完毕!\n”);
}
void arrangeAddaressbook(Addressbook* addressbook)
{
if (addressbook == 0)
{
printf(" 无可进行排序的元素\n");
return;
}
for (int i = 0;i < addressbook->size - 1;i++)
{
for (int j = 0;j < addressbook->size - 1 - i;j++)
{
if (strcmp(addressbook->person[j].name, addressbook->person[j + 1].name) > 0)
{
char nam[100];
char num[100];
strcpy(nam, addressbook->person[j].name);
strcpy(num, addressbook->person[j].phone);
strcpy(addressbook->person[j].name, addressbook->person[j + 1].name);
strcpy(addressbook->person[j].phone, addressbook->person[j + 1].phone);
strcpy(addressbook->person[j + 1].name, nam);
strcpy(addressbook->person[j + 1].phone, num);
}
}
}
printf(" 排序成功\n ");
}
int main()
{
Addressbook addressbook;
InitAddressbook(&addressbook);
openFile(&addressbook);
typedef void(Fuc)(Addressbook);
Fuc Fuc_table[] = {
NULL,
addContactPerson,
delContactPerson,
findContactPerson,
modifyContactPerson,
printfContactPerson,
clearContactPerson,
arrangeAddaressbook,
readInformation
};
while (1)
{
int i = meau();
if (i == 0)
{
printf(“Good-Bye!!\n”);
Fuc_table8;
break;
}
else if (i < 0 || i >= sizeof(Fuc_table) / sizeof(Fuc_table[0]))
{
printf(“您的输入有误!!请重新输入i\n”);
}
else
Fuc_tablei;
}
system(“pause”);
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值