⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tongxunlu.txt

📁 用c语言实现的通讯录系统,包括添加,查询,删除,排序等功能
💻 TXT
字号:
#include<stdlib.h>
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<dos.h>
struct addr             /*通讯地址结构定义*/
{   char post_num[10];  /*邮编*/
    char addr[40];      /*家庭地址*/
};
struct birth      /*出生年月结构定义*/
{   int year;     /*年份*/
    int month;    /*月份*/
    int day;      /*日期*/
};
struct friend1     /*电子通讯录结构定义*/
{   int number;       /*序号*/
    char name[20];     /*姓名*/
    char sex;             /*性别*/
    struct birth birth;   /*出生年月*/
    struct addr addr;     /*通信地址*/
    char telephone[13];   /*联系电话*/
}friends[50];
FILE *fp;
int i; 
void Data_Load()
{   int j;
    long k;
    fp=fopen("friend.txt","r+t");   /*打开文件friend.txt*/
    if(fp!=NULL)
    {   for(i=1;i<50;i++)
 {   j=fgetc(fp);
     if(j==EOF)    /*判断是否到了文件尾*/
               return;
     k=i-1;
     fseek(fp,k*sizeof(struct friend1),SEEK_SET);
     fread(&friends[i],sizeof(struct friend1),1,fp);/*从文件中读取一条记录*/
         }
    }
    else
    {   fp=fopen("friend.txt","w");
        i=1;
    }
}
void Data_Show(int j)    /*打印记录的详细资料*/
{
    printf("\n\n\tNo:%3d\n",friends[j].number);
    printf("\n\tBirthday(y/m/d):%4d%2d%2d",friends[j].birth.year,friends[j].birth.month,friends[j].birth.day);
    printf("\n\tPostnum:%-10s",friends[j].addr.post_num);
 printf("\n\taddress:%-40s",friends[j].addr.addr);
    printf("\n\tTele%-13s",friends[j].telephone);
}
void Data_Input(int j)    /*记录插入函数*/
{
    fflush(stdin);
    friends[j].number=j;
    printf("\n\n\n\tNo %d record",j);
    printf("\n\n\tName:");      /*读入姓名*/
    scanf("%s",friends[j].name);
    printf("\n\tSex(m/f):");    /*读入性别*/
    scanf("%c",&friends[j].sex);
    printf("\n\tbirthday:");   /*读入出生年月*/
    printf("\n\tyear:");
    scanf("%d",&friends[j].birth.year);
    printf("\n\t\tmonth:");
    scanf("%d",&friends[j].birth.month);
    printf("\n\t\tday:");
    scanf("%d",&friends[j].birth.day);
    printf("\n\tPost_number:");   /*读入邮编*/
    scanf("%s",friends[j].addr.post_num);
    printf("\n\tAddress:");    /*读入家庭地址*/
    scanf("%s",friends[j].addr.addr);
    printf("\n\ttelephone:");    /*读入联系电话*/
    scanf("%s",friends[j].telephone);
}
void Data_Save()
{
    int j;
    fp=fopen("friend.txt","w");
    for(j=1;j<=i;j++)
    {   fwrite(&friends[j],sizeof(struct friend1),1,fp);
    }
}
void main()
{
    int j,k;
    char ch;
    char *search_name;
  clrscr();
    Data_Load();
    i--;
    do
    {   printf("\n\n\n\tFunction choose:");
 printf("\n\t1.Read");
 printf("\n\t2.Append");
 printf("\n\t3.Delete");
 printf("\n\t4.Search");
 printf("\n\t5.Insert");
 printf("\n\t6.Save and Exit");
 printf("\n\t7.Quit");
 printf("\n\n");
 printf("\tChoice:");
 ch=getche();
 switch(ch)
 {   case '1': j=1;     /*显示通讯录中的所有记录*/
  while(getch()!=0x1b&&j<=i) Data_Show(j++);
  if(j>i) printf("\n\tEnd of e_note\n");
  break;
     case '2':          /*增加通讯录中的记录*/
  while(getch()!=0x1b&&i<50)
  {   i++;
      Data_Input(i);
  }
  if(i==50)printf("\n\te_note is filled\n");
  break;
     case '3':           /*删 除通讯录中的记录*/
  if(i<1)
  {   printf("\n\tNo records\n");
      break;
  }
  printf("\n\tDelete No:");    /*读入删除位置*/
  scanf("%d",&k);
  for(j=k;j<i;j++)   /*删除位置前的元素顺序前移*/
  {   strcpy(friends[j].name,friends[j+1].name);
      friends[j].sex=friends[j=1].sex;
      friends[j].birth.year=friends[j+1].birth.year;
      friends[j].birth.month=friends[j+1].birth.month;
      friends[j].birth.day=friends[j+1].birth.day;
      strcpy(friends[j].addr.post_num,friends[j+1].addr.post_num);
      strcpy(friends[j].addr.addr,friends[j+1].addr.addr);
   strcpy(friends[j].telephone,friends[j+1].telephone);
  }
  i--;      /*元素总数减1*/
  break;
     case '4':      /*通讯录查询功能*/
  printf("\n\tPlease input name:");
  gets(search_name);
  for(j=1;j<=i;j++)
  {
          if(strcmp(search_name,friends[j].name)==0)  /*比较字符串*/
      {   Data_Show(j);  /*查询成功,打印记录结束循环*/
   break;
      }
  }
  if(j>1)     /*查询失败*/
  printf("\n\t No such records");
  break;
            case '5':
  printf("\n\tInsert No:");     /*录入插入位置*/
  scanf("%d",&k);
  for(j=i+1;j<k;j++)  /*插入位置后的元素顺序后移*/
  {   strcpy(friends[j].name,friends[j-1].name); /*交换元素内容*/
             friends[j].sex=friends[j-1].sex;
      friends[j].birth.year=friends[j-1].birth.year;
      friends[j].birth.month=friends[j-1].birth.month;
      friends[j].birth.day=friends[j-1].birth.day;
      strcpy(friends[j].addr.post_num,friends[j-1].addr.post_num);
      strcpy(friends[j].addr.addr,friends[j-1].addr.addr);
      strcpy(friends[j].telephone,friends[j-1].telephone);
  }
  Data_Input(k);
  i++;
  break;
     case '6': Data_Save();
  exit(0);  break;
     case '7': printf("\n\tDo you want to save e_note:(y/n)");
  ch=getch();
  if(ch=='y') Data_Save();
  fclose(fp);
  exit(0);
     default: printf("Please choose num 1-4\n");
 }
    }while(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -