查看完整版本: 谁能帮我 改下C语言通讯簿 最好加点功能 谢谢了

3876568 2008-6-24 16:40

谁能帮我 改下C语言通讯簿 最好加点功能 谢谢了

#include <stdio.h>
#include <conio.h>
struct person
{
char name[10];
     char tel[20];
    char  msn[30];
    char addr[60];
};
char filename[20];
FILE*fp;
void creat();
void output();
void search();
void append();
void modify();
void delete();
main()
{
int m;
clrscr();
  gotoxy(1,1);
  textcolor(GREEN);
  textbackground(YELLOW);
  window(2,2,99,99);
   clrscr();
creat();
while(1)
{
printf("*********zhi zuo by shenchao***************");
printf("\t|List|Search|Insert|Delete|Exit|\n");
printf("\n\n添加,请按1");
printf("\n查找,请按2");
printf("\n修改,请按3");
printf("\n删除,请按4");
printf("\n输出,请按5");
printf("\n退出,请按0\n");
printf("*********shenchao********");
printf("\n\t\t********************************************\n");
printf("\t\t\t欢迎使用通讯录管理系统");
printf("\n\t\t********************************************\n");
printf("\n\n\t\t\t******请选择你的操作******\n");
printf("\t\t\t +-------------------------------+");
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();
    }
    printf("\n\n操作完毕,请再次选择!");
    }
    else
      printf("\n\n选择错误,请再次选择!");
   }
  }



  void creat()
  {
   struct person one;
       long sl;

       printf("\n请输入通讯簿名:");
       scanf("%s",filename);
       if((fp=fopen(filename,"w"))==NULL)
       {
     printf("\n不能建立通讯簿!");
     exit();
       }
       fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","住址","msn");
       printf("\n请输入姓名、msn、电话号码及住址(以0结束)\n");
       scanf("%s",one.name);
       while(strcmp(one.name,"0"))
       {
     scanf("%s%s",one.tel,one.addr);
     fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr,one.msn);
     scanf("%s",one.name);
       }
       fclose(fp);
  }



  void output()
  {
   struct person one;

       if((fp=fopen(filename,"r"))==NULL)
       {
printf("\n 不能打开通讯簿!");
exit();
}
printf("\n\n%20s\n","通讯簿");
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr,one.msn);
printf("%-10s%-20s%-50s",one.name,one.tel,one.addr,one.msn);
}
fclose(fp);
}
void append()
{
struct person one;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n 不能打开通讯簿!");
exit();
}
printf("\n 请输入添加的姓名、msn、电话号码及住址\n");
scanf("%s%s%s",one.name,one.tel,one.addr,one.msn);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr,one.msn);
fclose(fp);
}
void search()
{
int k=0;
char namekey[8];
struct person one;
printf("\n 请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\n 不能打开通讯簿!");
exit();
}
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr,one.msn);
if(!strcmp(namekey,one.name))
{
printf("\n\n已查到,记录为:");
printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr,one.msn);

k=1;
      }
  }
  if(!k)
printf("\n\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();
     }
     while(!feof(fp))
     {
   offset=(!feof(fp));
   fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr,one.msn);
   if(!strcmp(namekey,one.name))
   {
    k=1;
    break;
   }
     }
     if(k)
{
   printf("\n已查到,记录为:");
           printf("\n%-10s%-18s%-50s%-50s",one.name,one.tel,one.addr,one.msn);
           printf("\n请输入新姓名,msn,电话号码及住址:");
   scanf("%s%s%s",one.name,one.tel,one.tel,one.addr,one.msn);
   fseek(fp,offset,SEEK_SET);
   printf("%ld",ftell(fp));
   fprintf(fp,"%-10%-20%-50s\n",one.name,one.tel,one.addr,one.msn);
  }
    else
   printf("\n对不起,通讯薄中没有此人的记录。");
    fclose(fp);
}
void delete()
{
int m,k=0,flag;
     long offset1,offset2;
     char namekey[8],valid[4];
     struct person one;

     printf("\n请输入姓名:");
     scanf("%s",namekey);
     if((fp=fopen(filename,"r+"))==NULL)
     {
printf("\n不能打开通讯薄!");
exit();
     }
     while(!feof(fp))
     {
offset1=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr,one.msn);
if(!strcmp(namekey,one.name))
{
  k=1;
  break;
}
     }
     if(k)
  {
   printf("\n已查到,记录为");
         printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr,one.msn);
         printf("\n确实要删除,按 1; 不删除, 按 0; ");
         scanf("%d",&m);
         if(m)

  {
   fseek(fp,offset1,SEEK_SET);
   fprintf(fp,"%-10s%-20s%-50s\n","","","");
  }
}
   else
  printf("\n对不起, 通讯薄中没有此人的记录。");
   fclose(fp);
}

418502283 2008-6-24 17:26

嘿嘿,哥们不会啊

zjnhao 2008-7-4 15:37

我也不会啊xunleiforumsbossleixun

chenhaibo8339 2008-7-11 01:38

xunleiforumssweatleixun xunleiforumssweatleixun xunleiforumssweatleixun xunleiforumssweatleixun xunleiforumssweatleixun xunleiforumssweatleixun
页: [1]
查看完整版本: 谁能帮我 改下C语言通讯簿 最好加点功能 谢谢了