#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#define Max_Contacts 100
//联系人信息
struct Contact
{
char name[32];
char tele[64];
};
//联系人数量信息
struct Book
{
struct Contact contacts[Max_Contacts];
int size;
};
//读取地址信息
char file_path[]="./Book_contacts.txt";
void test01()
{
/****************************变量定义区域********************************/
// 创建保存电话本信息的变量
struct Book book = {0};
//判断文件是否存在的变量
int have=0;
int ret;
//输入变量
int in;
//操作变量
int i=0;
int j=0;
int z=0;
//清空缓存区变量
char buf[128]={0};
// 增加变量
char ADD_name[32]={0};
char ADD_tele[64]={0};
// 删除变量
int DEL_flag=-1;
int del_id=-1;
char DEL_name[32]={0};
// 修改变量
char ED_name[32]={0};
char ED_tele[64]={0};
int ED_flag=-1;
int ed_id=-1;
// 查找变量
char SER_name={0};
int SER_flag=-1;
int ser_id=-1;
/**********从文件中加载联系人数据************/
FILE *fp=fopen(file_path,"r");
if(NULL==fp)
{
printf("加载数据失败!!\n");
return;
}
fread(&book,sizeof(struct Book),1,fp);
fclose(fp);
fp=NULL;
/******************************功能实现处**************************/
while(1)
{
//1.展示菜单
printf("------------------------------------\n");
printf("----------电话本系统V1.0------------\n");
printf("------------------------------------\n");
printf("1.添加联系人.\n");
printf("2.删除联系人.\n");
printf("3.修改联系人.\n");
printf("4.查找联系人.\n");
printf("5.显示电话本.\n");
printf("6.退出电话本.\n");
printf("------------------------------------\n");
//2.进行输入提示并且能输入数据
printf("请输入对应功能前的数字1-6\n");
ret=scanf("%d",&in);
if(!ret)
{
system("cls");
printf("读入了非整数字符,请重新输入:\n");
//刷新缓存区
fgets(buf,128,stdin);
continue;
}
switch(in)
{
/******************添加联系人******************/
case 1:
system("cls");
printf("请输入增加联系人的姓名:\n");
scanf("%s",ADD_name);
printf("请输入增加联系人的电话号码:\n");
scanf("%s",ADD_tele);
strcpy(book.contacts[book.size].name,ADD_name);
strcpy(book.contacts[book.size].tele,ADD_tele);
book.size ++;
printf("联系人[%s]添加成功!\n",ADD_name);
break;
/******************删除联系人******************/
case 2:
system("cls");
printf("请输入要删除的联系人姓名:\n");
scanf("%s",DEL_name);
for(j=0;j<book.size ;j++)
{
if(strcmp(book.contacts[j].name, DEL_name)==0)
{
//成功查找到此人
DEL_flag=0;
del_id=j;
break;
}
}
if(DEL_flag==0)
{
for(z=del_id;z<book.size-1 ;z++)
{
book.contacts[z] = book.contacts[z+1];
}
book.size --;
printf("删除联系人[%s]成功!",DEL_name);
}
else
{
printf("查无此人!\n");
}
break;
/******************修改联系人******************/
case 3:
system("cls");
printf("请输入要修改的联系人姓名:\n");
scanf("%s",ED_name);
for(j=0;j<book.size ;j++)
{
if(strcmp(book.contacts[j].name, ED_name)==0)
{
//成功查找到此人
ED_flag=0;
ed_id=j;
break;
}
}
if(ED_flag==0)
{
printf("当前联系人的电话号码为【%s】请输入要修改后号码:\n" ,book.contacts[ed_id].tele);
scanf("%s",ED_tele);
strcpy(book.contacts[ed_id].name ,ED_name );
strcpy(book.contacts[ed_id].tele ,ED_tele );
printf("修改联系人[%s]成功!",ED_name);
}
else
{
printf("查无此人!\n");
}
break;
/******************查找联系人******************/
case 4:
system("cls");
printf("请输入要查找的联系人姓名:\n");
scanf("%s",SER_name);
for(j=0;j<book.size ;j++)
{
if(strcmp(book.contacts[j].name, DEL_name)==0)
{
//成功查找到此人
SER_flag=0;
ser_id=j;
break;
}
}
if(SER_flag==0)
{
printf("%s\t%s\n",book.contacts[ser_id].name ,book.contacts[ser_id].tele);
}
else
{
printf("查无此人!\n");
}
break;
/******************展示全部联系人******************/
case 5:
system("cls");
printf("姓名\t\t号码\n");
for( i = 0;i<book.size;i++)
{
printf("%s\t\t%s\n",book.contacts[i].name ,book.contacts[i].tele );
}
break;
/******************退出电话本******************/
case 6:
system("cls");
fp = fopen(file_path,"wb");
if(NULL==fp)
{
printf("文件打开失败!!!\n");
return ;
}
fwrite(&book,sizeof(struct Book),1,fp);
fclose(fp);
fp=NULL;
printf("欢迎下次使用!!!\n");
return;
break;
default :
system("cls");
printf("暂时不支持此版本,请期待下一版本!!\n");
}
}
}
//2判断文件是否存在
void test02()
{
int a=-1;
//函数access();返回-1不存在 ,0存在
if( ( a = access(file_path,0) )!=0)
{
FILE *fp=fopen(file_path,"w");
}
}
int main()
{
test02();
test01();
return 0;
}
代码如有不足,请不吝指正;
如想拿走,扣个great就行了。