建立一个通讯录管理系统:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<conio.h>
int n;
struct tongxunlu
{
int no;//序号
char xingming[20];//姓名
char dianhuahaoma[15];/ 
char dizhi[50];//地址
char youzhengbianma[10];//邮政编码
char qqhaoma[11];/号码
    int pno;
}txl  ;


  
 

void ReadFile(txl emp[],int &n) //读取文件并存入emp数组
{


if((fp=fopen("tongxunlu.dat","rb"))==NULL) //判断文件是否可读 
{
n=0;
return;
}
fseek(fp,0,2); //文件指针移到文件尾
length=ftell(fp); //length求出文件长度
rewind(fp); //文件位置指针指向文件首
n=length/sizeof(txl);


for(i=0;i<=n;i++)
fread(&emp[i],sizeof(txl),1,fp); //将文件的数据读到emp中
    fclose(fp);
}

  void Clearup(txl emp[],int &n) //清空文件的全部记录
{
FILE *fp;
if((fp=fopen("tongxunlu.dat","wb"))==NULL){
printf(">> 文件不能打开\n");
return;
}
emp[0].pno=-1;
n=0;
fclose(fp);
printf(" ============================================================================\n");
}

void SaveFile(txl emp[],int &n) //将emp数组存入库存文件
{
int i;
FILE *fp;
if((fp=fopen("tongxunlu.dat","wb"))==NULL)
{
printf(">> 文件不能打开\n");
return;
}
if(n>1)
{ for(i=0;i<=n;i++)
fwrite(&emp[i],sizeof(txl),1,fp);
       fclose(fp);
printf(" ============================================================================\n");
}
}  
void chazhao ( txl emp[],int n)/*查找人的信息记录*/
{
   char c;
   system("cls");
   printf("\n\t\t------------------显示和查找联系人-----------------");
   printf("\n\t\t             1-逐个显示所有          2-按姓名查询      ");
   printf("\n\t\t             3-按电话查询                  ");
   printf("\n\t\t请选择您所需要的服务:");
   c=getch();
   switch (c)
   {
   case'1':xianshi(txl emp[]);break;/*显示所有联系人*/
   case'2':chazhao_xingming(txl emp[]);break;/*调用按姓名查询的函数*/
   case'3':chazhao_dianhuahaoma(txl emp[]);break;/*调用按号码查询的函数*/

   }
}
void xianshi(txl emp[],int n)
{
int i;
system("cls");
     if(n!=0)
{
printf("\n\t\t------------欢迎您查询通讯录的所有联系人信息--------------");
for(i=0;i<n;i++)
{
  
      printf("\n\t\t 姓名:%s", emp[i].xingming);
  printf("\n\t\t 地址:%s", emp[i].dizhi);
  printf("\n\t\t 电话:%s", emp[i].dianhuahaoma);
  printf("\n\t\t 邮政编码:%s", emp[i].youzhengbiana);
  printf("\n\t\t QQ号码:%s", emp[i].qqhaoma);
  printf("\n\t\t----------------------------------");
  if(i+1<n)
  {
  printf("\n\t\t---------------");
  system("pause");/*返回错误信息*/
  }
}
printf("\n\t\t------------------------------------");

}
else
printf("\n\t\t通讯录中无任何记录");
    printf("\n\t\t按任意键返回主菜单");
getch();
return;
}
void chazhao_dianhuahaoma(txl emp[],int n)
{
int mark=0;
int i;
char phone[15];
printf("\n\t\t----------------按电话查找-------------");
printf("\n\t\t 请输入电话号码:");
scanf("%s",phone);
for (i=0;i<n;i++)
{
if (strcmp(emp[i].dianhuahaoma.phone)==0)/*对比查找函数*/
{
printf("\n\t\t------------以下是您查找的联系人信息--------------");
printf("\n\t\t 姓名:%s",emp[i].xingming);
            printf("\n\t\t 地址:%s",emp[i].dizhi);
    printf("\n\t\t 电话:%s",emp[i].dianhuahaoma);
    printf("\n\t\t 邮政编码:%s",emp[i].youzhengbianma);
    printf("\n\t\t QQ号码:%s",emp[i].qqhaoma);
            printf("\n\t\t----------------------------------");
            printf("\n\t\t按任意键返回主菜单");
mark++;
getch();
return;
}
}
   if(mark==0)
   {
   printf("\n\t\t 没有找到联系人的信息");
   printf("\n\t\t 按任意键返回主菜单");
   getch();
   return;
   }

}
void chazhao_xingming(txl emp[])
{
int mark=0;
int i;
char name[20];
printf("\n\t\t -------------------按姓名查找--------------------");
printf("\n\t\t 请输入您要查找的姓名:");
scanf("%s",name);
for(i=0;i<n;i++)
{
      if(strcmp(emp[i].xingming.name)==0)
  {
         printf("\n\t\t------------以下是您查找的联系人信息--------------");
     printf("\n\t\t 姓名:%s",emp[i].xingming);
         printf("\n\t\t 地址:%s",emp[i].dizhi);
 printf("\n\t\t 电话:%s",emp[i].dianhua);
 printf("\n\t\t 邮政编码:%s",emp[i].youzhengbianma);
 printf("\n\t\t QQ号码:%s",emp[i].qqhaoma);
         printf("\n\t\t----------------------------------");
 mark++;
 getch();
 return;
  }
}
if(mark==0)
{
printf("\n\t\t没有找到联系人的信息");
    printf("\n\t\t 按任意键返回主菜单");
getch();
return;
}


}



void xiugai_xingming(txl emp[],int &n) 
{
char c; 
int i,mark=0; 
char name[20]; 
printf("\n\t\t请输入要修改的联系人姓名:"); 
scanf("%s",name); 
if(n==0) 
{
printf("\n\t\t文件中无任何联系人"); 
     
    getchar();
mark++; 
    return; 
} 
for(i=0;i<n;i++) 
{
	if(strcmp(emp[i].xingming.name)==0) 
{ 
	 printf("\n\t\t以下是您要修改的联系人信息"); 
     printf("\n\t\t姓名: %s",emp[i].xingming); 
     printf("\n\t\t电话号码: %s",emp[i].dianhuahaoma); 
     printf("\n\t\t地址: %s",emp[i].dizhi);
	 printf("\n\t\t邮政编码:%s",emp[i].youzhengbianma);
     printf("\n\t\tqq号码:%s",emp[i].qqhaoma);
	 printf("\n\t\t是否修改(y/n)");
	  if(getchar()=='y') 
	  {
		  printf("\n\t------------请选择修改信息---------------"); 
          printf("\n\t          1-修改姓名             2-修改电话"); 
          printf("\n\t          3-修改地址             4-修改邮政编码");
		  printf("\n\t          5-修改qq号码");

          printf("\n\t-----------------------------------------"); 
          printf("\n\t请选择您所所要的服务:"); 
          scanf("%s",&c); 
          switch(c) 
		  { 

          case '1': printf("\n\t请输入新姓名:"); 
          scanf("%s",emp[i].xingming);break; 
          case '2':printf("\n\t请输入新电话:"); 
          scanf("%s",emp[i].dianhuahaoma);break; 
          case '3':printf("\n\t请输入新地址:"); 
          scanf("%s",emp[i].dizhi);break; 
          case '4':printf("\n\t请输入新邮政编码:");
		  scanf("%s",emp[i].youzhengbianma);break;
          case '5':printf("\n\t请输入新qq号码:");
		  scanf("%s",emp[i].qqhaoma);break;
		  } 

	  } 

} 

} 
if (mark==0) 
{ 
printf("\n\t\t没有找到联系人信息"); 
printf("\n\t是否继续修改?(Y/N):"); 
if(getchar()=='y') 
xiugai_xingming(txl emp[]); 
return; 
} 




void zengjia(txl emp[],int &n) 
{
printf("\n\t\t------------------ 请输入联系人信息--------------------\n"); 
printf("\n\t\t输入联系人姓名:"); 
scanf("%s",emp[n].xingming);  
printf("\n\t\t输入联系人电话号码:"); 
scanf("%s",emp[n].dianhua); 
printf("\n\t\t输入联系人地址:"); 
scanf("%s",emp[n].dizhi);
printf("\n\t\t输入联系人邮政编码:");
scanf("%s",emp[n].youzhengbianma);
printf("\n\t\t输入联系人qq号码:");
scanf("%s",emp[n].qqhaoma); 
n++;  
printf("\n\t\t是否继续添加联系人?(Y/N):");  
if (getchar()=='y') 
    zengjia(txl emp[]); 
return; 
} 




void delect(txl emp[],int &n)          /*删除某人的信息记录*/
{int i,No,j;
 if(n<1)
 {
	 printf("没有信息记录!!!");
  return;
 }
  printf("请输入你要删除的人的序号:\n");
  scanf("%d",&No);
 
  for(i=0;i<=n;i++)
{   if(i==NO)
 {
	for(j=i;j<n;j++)
	emp[j]=emp[j+1];
 }	

  }
 n--;
 printf("==================================================================================================\n");
printf("\n\t\t是否继续删除联系人?(Y/N):");  
if (getchar()=='y') 
    delect(txl emp[]); 
return; 
}

void main()
 {int a,n;
txl emp[];
  printf("                     欢迎登陆个人通讯录管理系统!!!\n");
  printf("===================================================================================================\n");
  readfile(emp,n);
 do { 
	 printf("\n\t\t1.显示\n");
	printf("\t\t\t2.查找联系人\n");
	printf("\t\t\t3.清除记录\n");
	printf("\t\t\t4.增加记录\n");
	printf("\t\t\t5.按照姓名修改联系人\n");
	printf("\t\t\t6.删除记录\n");
	printf("\t\t\t7.存储\n");
	printf("\t\t**************************************\n\n");
		
	
		printf("enter your choice(1~7):");
			scanf("%d",&a);
  
switch(a)
  {case 1:  xianshi(txl emp[],int n) ;break;
   case 2:  chazhao(txl emp[],int n);break;
   case 3: Cleanup(txl emp[],int &n);break;
   case 4: zengjia(txl emp[],int &n) ;break;
   case 5: xiugai_xingming(txl emp[],int &n) ;break;
   case 6: delect(txl emp[],int & n) ;break;
   case 7: SaveFile(txl emp[],int &n);break;
   
  }
 }while(a!=0) ; 

  
printf("                               谢谢使用!!!\n");
 printf("=====================================================================================================\n");
 
 
 }
}