c语言:电话本系统


#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就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值