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

📄 phone.c

📁 电话本查询系统 可按姓名 笔画等方式查询管理电话本
💻 C
📖 第 1 页 / 共 2 页
字号:

 while(!kbhit());
 textbackground(BLACK);

 puttext(1,1,80,23,buf);
 textcolor(WHITE);

 free(buf);

}

/*----------------------------------修改函数------------------------------*/
void EDIT()
{
 char name[20];
 Message t[1];
 FILE* fp=fopen("TBS.dat","wb");
 int i,find=0,num=0;

   gotoxy(1,23);
 delline();
 cprintf("Name:");                                             /*读取要编辑的名字*/
 cscanf("%s",&name);                                           /*比较文件*/
 for(i=0;i<sum[0];i++)
 {
  if(strcmp(name,msg[i].name)==0)
  {                                                          /*找到 find=1*/
   find=1;                                                 /*num记录位置*/
   num=i;
  }
 }
 puttext(1,23,80,23,buff);
 if(find!=1)
 {
  gotoxy(1,23);
  delline();
  cprintf("Not found");
  while(!kbhit() );
 }
 else
 {
  gotoxy(1,23);                                              /*重新输入*/
  cprintf("New name:");
  cscanf("%s",t[0].name);
  delline();

  cprintf("Telphoto number:");
  cscanf("%s",t[0].telnum);
  delline();

  cprintf("QQ:");
  cscanf("%s",t[0].Email);
  delline();

  cprintf("Work place:");
  cscanf("%s",t[0].workpl);
  delline();

  strcpy(msg[num].name,t[0].name);                          /*复制*/
  strcpy(msg[num].telnum,t[0].telnum);
  strcpy(msg[num].workpl,t[0].workpl);
  strcpy(msg[num].Email,t[0].Email);

  for(i=0;i<sum[0];i++)                                     /*写入文件*/
  fwrite(&msg[i],sizeof(Message),1,fp);
  fclose(fp);
  cprintf("success!");
  while(!kbhit());
  SHOW(1,ON);
 }

}

/*-----------------------------删除函数-----------------------------------*/
void DELETE()
{

 FILE *fp;
 char name[20];
 int i,num=0,find=0;

 gotoxy(1,23);
 delline();
 cprintf("Name:");
 cscanf("%s",&name);                                        /*读取要删除的名字*/

 for(i=0;i<sum[0];i++)
 {                                                          /*搜索*/
  if(strcmp(name,msg[i].name)==0)
  {
   find=1;
   num=i;
   break;
  }
 }

 if(find!=1)
 {
  gotoxy(1,23);
  delline();
  cprintf("Not found");
  while(!kbhit() );
 }
 else
 if(num==sum[0]&&sum[0]>0)
 {
  sum[0]--;
 }
 else
 {

  for(i=num;i<sum[0];i++)                                 /*写入文件*/
  {
   strcpy(msg[i].name,msg[i+1].name);
   strcpy(msg[i].telnum,msg[i+1].telnum);
   strcpy(msg[i].workpl,msg[i+1].workpl);
   strcpy(msg[i].Email,msg[i+1].Email);
  }
  sum[0]--;
 }
 fp=fopen("TBS.dat","wb");
 for(i=0;i<sum[0];i++)
  fwrite(&msg[i],sizeof(Message),1,fp);
 fclose(fp);
 Savesm();
 SHOW(1,ON);
}
/*---------------------------------添加函数-------------------------------*/
int ADD()
{
 FILE* fp;
 int i;

 Message t[1];


 puttext(1,23,80,23,buff);

 gotoxy(1,23);                                               /*读取信息*/
 cprintf("New name:");
 cscanf("%s",t[0].name);
 delline();

 cprintf("Telphoto number:");
 cscanf("%s",t[0].telnum);
 delline();

 cprintf("QQ:");
 cscanf("%s",t[0].Email);
 delline();

 cprintf("Work place:");
 cscanf("%s",t[0].workpl);
 delline();
 sum[0]++;
 strcpy(msg[sum[0]-1].name,t[0].name);
 strcpy(msg[sum[0]-1].Email,t[0].Email);
 strcpy(msg[sum[0]-1].workpl,t[0].workpl);
 strcpy(msg[sum[0]-1].telnum,t[0].telnum);

 fp=fopen("TBS.dat","wb");
 for(i=0;i<sum[0];i++)
  fwrite(&msg[i],sizeof(Message),1,fp);
 fclose(fp);
 Savesm();
 cprintf("Success!");
 while(!kbhit());
 puttext(1,1,80,23,buffer);
 if(sum[0]%19==0&&sum[0]!=0)
  pg=sum[0]/19;
 else
  pg=sum[0]/19+1;

 return pg;
}

/*----------------------------排序函数-----------------------------------*/
void SORT()
{
 int Key,i,p=1;
 FILE *fp=fopen("TBS.dat","rb");
 for(i=0;i<sum[0];i++)
  fread(&msgtem[i],sizeof(Message),1,fp);              /*更新信息,写入msgtem*/
 fclose(fp);

 Quick();                                                /*排序*/
 while(1)
 {
  SHOW(p,OFF);
  Showms(p);
  while(!kbhit());
  Key=getch();
  switch(Key)
  {
   case Pageup:p=PAGEUP(p,OFF);break;
   case Pagedm:p=PAGEDM(p,OFF);break;
   case ESC:goto AA;
  }
 }
 AA:;
}

/*----------------------------搜索函数-----------------------------------*/
void SEARCH()
{
  char name[20];
   int i,find=0,num=0;
 FILE* fp=fopen("TBS.dat","rb");

 for(i=0;i<sum[0];i++)
  fread(&msg[i],sizeof(Message),1,fp);
 fclose(fp);

 fp=fopen("sum.dat","rb");
 fread(&sum[0],sizeof(Message),1,fp);
 fclose(fp);

 gotoxy(1,23);
 delline();
 cprintf("Name or Telphone:");
 cscanf("%s",&name);
 for(i=0;i<sum[0];i++)
 {
  if(strcmp(name,msg[i].name)==0||strcmp(name,msg[i].telnum)==0)
  {
   find=1;
   num=i;
   break;
  }
 }

 if(find!=1)
 {
  gotoxy(1,23);
  delline();
  cprintf("Not found");
  while(!kbhit() );
 }
 else
 {
  gotoxy(1,23);
  delline();
  cprintf("Result:");
  cprintf("    %s",msg[num].name);
  cprintf("       %s",msg[num].telnum);
  cprintf("       %s",msg[num].Email);
  cprintf("       %s",msg[num].workpl);
  while(!kbhit());
 }
}

 

/*----------------------------显示电话本信息---------------------------------*/
void SHOW(int page,int sta)
{

 int i,pages=0,n,n1,j=0;
   FILE* fp=fopen("TBS.dat","rb");
   for(i=0;i<sum[0];i++)
  fread(&msg[i],sizeof(Message),1,fp);
   fclose(fp);


 n=sum[0]%19;                                        /*该页行数*/
 pages=sum[0]/19+1;                    /*页数*/
 puttext(1,1,80,23,buffer);
 textcolor(WHITE);
 if(n==0&&sum[0]!=0)
 {
  n=19;
  pages--;
 }

 if(pg==1)
 {
  i=0;
  n1=n;
 }
 else
 if(page<pg)
 {
  i=(page-1)*19;
  n1=(page-1)*19+19;
 }
 else
 if(page==pg)
 {
  i=(page-1)*19;
  n1=(page-1)*19+n;
 }

 if(sta==ON)                                           /*ON为文件内容,off为排序后的内容*/
 {
  if(sum[0]!=0)
  for(;i<n1;i++)
  {
   gotoxy(2,3+j);
   cprintf("%s",msg[i].name);
   gotoxy(18,3+j);
   cprintf("%s",msg[i].telnum);
   gotoxy(34,3+j);
   cprintf("%s",msg[i].Email);
   gotoxy(55,3+j);
   cprintf("%s",msg[i].workpl);
   j++;
  }
 }
 else
 {
  if(sum[0]!=0)
   for(;i<n1;i++)
   {
    gotoxy(2,3+j);
    cprintf("%s",msgtem[i].name);
    gotoxy(18,3+j);
    cprintf("%s",msgtem[i].telnum);
    gotoxy(34,3+j);
    cprintf("%s",msgtem[i].Email);
    gotoxy(55,3+j);
    cprintf("%s",msgtem[i].workpl);
    j++;
   }
 }

}
/*----------------显示信息-----------------*/
void Showms(int apg)
{

 if(sum[0]%19==0&&sum[0]!=0)
  pg=sum[0]/19;
 else
  pg=sum[0]/19+1;

 gotoxy(1,23);
 cprintf("Total:%d     Page :%d/%d   ",sum[0],apg,pg);
}
/*------------------------------记录sum-------------------------------------*/
void Savesm()
{
 FILE* fp;
 fp=fopen("sum.dat","wb");
 fwrite(&sum[0],sizeof(sum),1,fp);
 fclose(fp);
}
/*-------------------------------冒泡排序------------------------------------*/
void Quick()
{
 int i,j;
 char name[20];
 Message tem[1];

 for(j=0;j<sum[0]-1;j++)
  for(i=0;i<sum[0]-1-j;i++)
  {
   if(strcmp(msgtem[i].name,msgtem[i+1].name)>0)
   {
    strcpy(tem[0].name,msgtem[i].name);
    strcpy(tem[0].telnum,msgtem[i].telnum);
    strcpy(tem[0].Email,msgtem[i].Email);
    strcpy(tem[0].workpl,msgtem[i].workpl);

    strcpy(msgtem[i].name,msgtem[i+1].name);
    strcpy(msgtem[i].telnum,msgtem[i+1].telnum);
    strcpy(msgtem[i].Email,msgtem[i+1].Email);
    strcpy(msgtem[i].workpl,msgtem[i+1].workpl);

    strcpy(msgtem[i+1].name,tem[0].name);
    strcpy(msgtem[i+1].telnum,tem[0].telnum);
    strcpy(msgtem[i+1].Email,tem[0].Email);
    strcpy(msgtem[i+1].workpl,tem[0].workpl);
   }
  }
}

/*-----------------------------------向下翻屏------------------------------------------*/


int PAGEUP(int page,int sta)
{
 int n=page;
 if(pg==page)
  goto AA;
 else
 {
  page++;
  n++;
 }
 puttext(1,1,80,23,buffer);
 AA:SHOW(n,sta);
 return page;

}

/*-----------------------------------向上翻屏-----------------------------------------*/
int PAGEDM(int page,int sta)
{
 int n=page;
 if(page==1)
  goto AA;
 else
 {
  page--;
  n--;
 }
 puttext(1,1,80,23,buffer);
 AA:SHOW(n,sta);
 return page;
}

⌨️ 快捷键说明

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