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

📄 ii.txt

📁 简单的通讯录。可用来查询用户的基本信息
💻 TXT
字号:
 printf("\n修改同学地址,请按3"); 
   printf("\n删除原来地址,请按4"); 
   printf("\n输出所有地址,请按5"); 
   printf("\n退出本通讯录,请按0\n"); 
   scanf("%d",&m); 
   if(m>=0&&m<=5) 
  { 
   switch(m)/*调用主菜单函数,返回值整数作开关语句的条件*/ 
   { 
    case 1: append();/*往通讯录中添加*/ 
        break; 
    case 2: search();/*在通讯录中查找*/ 
        break; 
    case 3: modify();/*修改通讯录中资料*/ 
        break; 
    case 4: Delete();/*删除通讯录中资料*/ 
        break; 
    case 5: output();/*输出通讯录中所有名单*/ 
     break; 
    case 0: exit(0);/*退出运行程序*/ 
   } 
    printf("\n\n操作完毕,请再次选择!"); 
  } 
    else 
    printf("\n\n选择错误,请再次选择!"); 
 } 
} 
/********************************进入菜单函数*********************/ 

void creat() 
 { 
   struct person one; 
   printf ("\n*********湘潭大学兴湘学院05计算机**"); 
   printf("\n请输入通讯簿名:                  *"); 
   printf("\n**********作者:王平喜*************:"); 
   scanf("%s",filename); 
   if((fp=fopen(filename,"rb+"))==NULL)/*用读写打开一个二进制文件,同时检验通讯录中是否存在此文件*/ 
    { 
     printf("\n请输入准确的通讯录名"); 
     printf("\n请重新输入"); 
     exit(0);/*退出此程序*/ 
    } 
     fprintf(fp,"%-10s%-15s%-15s%-30s\n","姓名","学号","电话号码","住址");/*把数据输出到fp所指定的文件中*/ 
     printf("\n请输入姓名、电话号码及住址(后加0可进入选择)或者按“0”直接进入选择\n"); 
     scanf("%s",one.name); 
     while( strcmp(one.name,"0"))/*将输入的与数据比较,若正确,返回0*/ 
      { 
       scanf("%s%s%s",one.number,one.tel,one.addr); 
fprintf(fp,"%-10s%-12s%-12s%-30s\n",one.name,one.number,one.tel,one.addr);/*将输入的数据输出到fp所指文件中*/ 
       scanf("%s",one.name); 
      } 
       fclose(fp);/*关闭所指文件,释放文件缓冲区,并返回值*/ 
  } 
/***********************输出函数**********************************/ 

void output() 
 { 
  struct person one; 
  if((fp=fopen(filename,"r"))==NULL)/*用输入打开一个文本文*/ 
   { 
    printf("\n不能打开通讯簿!"); 
    exit(0); 
   } 
    printf("\n\n%12s\n","通 讯 簿"); 
    while(!feof(fp))/*检验fp所指文件是否结束,此为一个循环语句*/ 
     { 
fscanf(fp,"%s%s%s%s\n",one.name,one.number,one.tel,one.addr);/*从fp所指文件中读出数据*/      printf("\n%-10s%-15s%-15s%-30s\n",one.name,one.number,one.tel,one.addr);/*输出上面读出数据*/ 
     } 
      fclose(fp);/*关闭所指文件,释放文件缓冲区,并返回值*/ 
 } 
/*****************添加函数*******************************/ 

void append() 
 { 
  struct person one; 
 if((fp=fopen(filename,"a"))==NULL)/*向二进制文本尾追加数据*/ 
   { 
    printf("\n不能打开通讯簿!"); 
    exit(0); 
   } 
    printf("\n请输入添加的姓名、电话号码及住址\n"); 
    scanf("%s%s%s%s",one.name,one.number,one.tel,one.addr);   fprintf(fp,"%-10s%-12s%-12s%-30s\n",one.name,one.number,one.tel,one.addr); 
    fclose(fp); 
 } 
/*****************查找函数********************************/ 

void search() 
 {   
  int k=0; 
  char namekey[8]; 
  struct person one; 
  printf("\n请输入姓名:"); 
  scanf("%s",namekey); 
  if((fp=fopen(filename,"rb"))==NULL)/*为输入打开一个二进制文件*/ 
 
 
  
 作者:王平喜    2006-11-29 11:29   回复此发言    
 
--------------------------------------------------------------------------------
 
3 C程序课程设计--通讯录  
    {   
    printf("\n不能打开通讯簿!"); 
    exit(0); 
   } 
    while(!feof(fp)) 
     {   
        fscanf(fp,"%s%s%s%s\n",one.name,one.number,one.tel,one.addr); 
      if(!strcmp(namekey,one.name)) 
       { 
        printf("\n\n恭喜!记录为:\n"); 
        printf("\n%-10s%-12s%-12s%-30s\n","姓名","学号","电话号码","住址"); 
printf("\n%-10s%-12s%-12s%-30s",one.name,one.number,one.tel,one.addr); 
        k=1; 
       } 
     } 
        if(!k)   
        printf("\n\n对不起,通讯簿中没有此人的记录。"); 
        fclose(fp); 
 } 
/****************删除函数**********************************/ 

void Delete() 
 {   
   int m,k=0,flag; 
   long offset1;/*定义一个长整型数据*/ 
   char namekey[8], valid[4]; 
   struct person one; 
   printf("\n请输入姓名:"); 
   scanf("%s",namekey); 
   if((fp=fopen(filename,"r+"))==NULL)/*用读/写打开一个二进制文件*/ 
    {   
      printf("\n不能打开通讯簿!"); 
      exit(0); 
    } 
      while(!feof(fp)) 
      {   
       offset1=ftell(fp);/*返回fp所指向的文件中的读写位置*/            
     fscanf(fp,"%s%s%s%s\n",one.name,one.number,one.tel,one.addr);/*从fp指定的文件将输入数据送到指定单元*/ 
       if(!strcmp(namekey,one.name)) 
        {    
         k=1; 
         break;  
        } 
      } 
         if(k) 
          {  
           printf("\n恭喜!已查到,记录为:"); 
           printf("\n%-10s%-12s%-12s%-30s","姓名","学号","电话号码","住址"); 
printf("\n%-10s%-12s%-12s%-30s\n",one.name,one.number,one.tel,one.addr); 
           printf("\n确实要删除?删除请按“1”、不删除请按“0”:"); 
           scanf("%d",&m); 
           if(m) 
           {    
             fseek(fp,offset1,SEEK_SET);/*将fp所指向文件的位置指针移到以SEEK-SET为基准,以offset1为位移量的位置*/ 
                    fprintf(fp,"%-10s%-12s%-12s%-30s\n","","","",""); 
            } 
          }    
 else  printf("\n对不起,通讯簿中没有此人的记录。"); 
            fclose(fp); 
 } 
/**********************修改函数***************************/ 

void modify() 
 {   
  int m,k=0; 
  long offset; 
  char namekey[8]; 
  struct person one; 
  printf("\n请输入姓名:"); 
  scanf("%s",namekey); 
  if((fp=fopen(filename,"r+"))==NULL)/*用读/写打开一个二进制文件*/ 
   {   
     printf("\n不能打开通讯簿!"); 
     exit(0); 
   } 
     while(!feof(fp)) 
     {   
      offset=ftell(fp); 
      fscanf(fp,"%s%s%s%s\n",one.name,one.number,one.tel,one.addr); 
      if(!strcmp(namekey,one.name)) 
       { 
        k=1; 
        break;   
       } 
     } 
        if(k) 
        {   
         printf("\n恭喜!已查到,记录为:\n"); 
         printf("\n%-10s%-12s%-12s%-30s","姓名","学号","电话号码","住址"); 
printf("\n%-10s%-12s%-12s%-30s\n",one.name,one.number,one.tel,one.addr); 
         printf("\n请输入新姓名、学号、电话号码、住址:"); 
     scanf("%s%s%s%s",one.name,one.number,one.tel,one.addr); 
         fseek(fp,offset,SEEK_SET);/*将fp所指向文件的位置指针移到以SEEK-SET为基准,以offset为位移量的位置*/ 
         printf("%ld",ftell(fp));  fprintf(fp,"%-10s%-12s%-12s%-30s\n",one.name,one.number,one.tel,one.addr); 
        } 
         else 
         printf("\n对不起,通讯簿中没有此人的记录。"); 
         fclose(fp); 
 } 
 
 

⌨️ 快捷键说明

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