📄 phone.c
字号:
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 + -