通讯录.docx
《通讯录.docx》由会员分享,可在线阅读,更多相关《通讯录.docx(16页珍藏版)》请在冰豆网上搜索。
通讯录
#include
#include
#include
#include
#definePprintf
#defineMIMA"225"
/*密码预设*/
#defineBT"%-12s%-15s%-12s%-10s%-20s%-3s\n"
/*标题输出格式*/
#definePBTP(BT,"姓名","电话","出生年月日","性别","住址","删")
/*记录标题输出*/
#defineJL"%-12s%-15s%-6d%-3d%-5d%-10s%-20s%-3c\n"
/*记录输出格式*/
#definePJLP(JL,p->xm,p->dh,p->cs.nian,p->cs.yue,p->cs.ri,p->xb,p->zz,p->sc)
/*记录输出*/
#defineN100
/*最多记录*/
typedefstruct
{intnian;
intyue;
intri;
}RIQI;
typedefstruct
{
charxm[15];/*姓名*/
chardh[15];/*电话*/
RIQIcs;/*出生日期*/
charxb[3];/*性别*/
charzz[20];/*住址*/
charsc;/*删除逻辑标记,*为删除*/
}JILU;/*结构体类型定义*/
intShuRu(JILU[],int);/*输入,包含添加功能*/
voidmenu();/*显示菜单并选择服务*/
voidChaXun(JILU[],int);/*查询*/
voidCha_JiLuHao(JILU[],int);/*按记录号查询*/
voidCha_Dianhua(JILU[],int);/*按电话号查询*/
voidCha_XingMing(JILU[],int);/*按姓名查询*/
voidCha_QuanBu(JILU[],int);/*查询全部*/
intShanChu(JILU[],int);/*删除*/
voidShan_JiLuHao(JILU[],int);/*按记录号删除*/
voidShan_Dianhua(JILU[],int);/*按电话号删除*/
voidShan_XingMing(JILU[],int);/*按姓名删除*/
voidShan_QuanBu(JILU[],int);/*删除全部记录*/
voidShan_HuiShouZhan(JILU[],int);/*回收站察看*/
voidShan_CheXiao(JILU[],int);/*撤销删除*/
intShan_WuLi(JILU[],int);/*清空回收站*/
voidmima(void);/*密码检验*/
voidstop(void);/*暂停*/
voidCunPan(JILUBiao1[],intk_Biao1,charfile[]);/*存盘*/
intDaoRu(JILUBiao1[],charfile[]);/*导入:
从文件file到表Biao1*/
voidJiaoHuan(JILUBiao1[],int,int);/*交换:
表Biao1内两个下标的元素*/
voidPaiXu(JILUBiao1[],intk_Biao1);/*排序:
表Biao1内k_Biao1个记录*/
voidTongJi(JILUBiao1[],intk_Biao1);/*统计:
表Biao1内k_Biao1个记录*/
voidxiugai(JILUBiao1[],intk_Biao1);/*修改模块*/
voidstop(void)
{P("\n\n按任一键继续...");getch();}
voidmima(void)/*****密码检验*****/
{
intj,n;
chara[80];
for(n=1;n<=3;n++)
{
system("CLS");
switch(n)
{case1:
P("\n\n\n\n\t\t\t密码(以Enter结束)=?
");
break;
case2:
P("\n\n\n\n\t密码错误,请重新输入密码(以Enter结束)=?
");
break;
case3:
P("\n\n\n\n\t密码错误,请最后一次输入密码(以Enter结束)=?
");
}
for(j=0;;j++)
{a[j]=getch();
if(a[j]==13){a[j]='\0';break;}
elseputchar('*');
}
if(strcmp(a,MIMA)==0)return;
}
if(n>3)exit
(1);
}
voidmain(void)/*********主函数*********/
{
mima();
menu();
}
voidmenu()//显示菜单模块//
{
charc;
JILUBiao1[N];/*表1,最多纪录N*/
intk_Biao1=0;/*表1实际记录数*/
charfile[20];/*数据库文件名,*/
P("\n\n\t\t\t数据文件名=?
");gets(file);
k_Biao1=DaoRu(Biao1,file);/*自动导入*/
for(;;)
{system("CLS");
P("\n\n\n\n\n\n");
P("\t\t\t★★★★通讯录管理系统★★★★\n");
P("\t\t\t§(225制)§\n");
P("\t\t\t§主菜单§\n");
P("\t\t\t§§\n");
P("\t\t\t§1.新建联系人§\n");
P("\t\t\t§2.添加联系人§\n");
P("\t\t\t§3.查找联系人§\n");
P("\t\t\t§4.删除§\n");
P("\t\t\t§5.存盘§\n");
P("\t\t\t§6.导入§\n");
P("\t\t\t§7.排序§\n");
P("\t\t\t§8.统计§\n");
P("\t\t\t§9.修改§\n");
P("\t\t\t§Esc.退出§\n");
P("\t\t\t§§\n");
P("\t\t\t★★★★★★★★★★★★★★★\n\n");
P("\t\t\t请选择服务种类(1-9):
\b\b");
c=getch();
if(c==0)c=getch();
if(c==27)break;/*ESC*/
switch(c)
{case'1':
k_Biao1=ShuRu(Biao1,k_Biao1);break;/*1*/
case'2':
k_Biao1=ShuRu(Biao1,k_Biao1);break;/*2*/
case'3':
ChaXun(Biao1,k_Biao1);break;/*3*/
case'4':
k_Biao1=ShanChu(Biao1,k_Biao1);break;/*4*/
case'5':
CunPan(Biao1,k_Biao1,file);break;/*5*/
case'6':
k_Biao1=DaoRu(Biao1,file);break;/*6*/
case'7':
PaiXu(Biao1,k_Biao1);break;/*7*/
case'8':
TongJi(Biao1,k_Biao1);break;/*8*/
case'9':
xiugai(Biao1,k_Biao1);break;/*9*/
}
}
puts("\n\n\t\t保存数据?
(N--不保存!
否则保存)");
c=getch();
if(c!
='n'&&c!
='N')CunPan(Biao1,k_Biao1,file);
}
intShuRu(JILUBiao1[],intk_Biao1)/*****输入模块*****/
{
JILU*p;
system("CLS");
for(p=&Biao1[k_Biao1];;k_Biao1++,p++)
{
P("姓名=?
(输入一个“#”则结束输入)");
scanf("%s",p->xm);
if(strcmp(p->xm,"#")==0)break;
P("电话=?
");
scanf("%s",p->dh);
P("出生日期(如198024)=?
");
scanf("%d%d%d",&p->cs.nian,&p->cs.yue,&p->cs.ri);
P("性别=?
");
scanf("%s",p->xb);
P("住址=?
");
scanf("%s",p->zz);
p->sc='';
}
returnk_Biao1;
}
voidChaXun(JILUBiao1[],intk_Biao1)/*****查询主控模块*****/
{charc;
for(;;)
{system("CLS");
P("\n\n\n\n\n\n");
P("\t\t\t*1.按记录号查询*\n");
P("\t\t\t*2.按电话号查询*\n");
P("\t\t\t*3.按姓名查询*\n");
P("\t\t\t*****\n");
P("\t\t\t*9.查询全部*\n");
P("\t\t\t***\n");
P("\t\t\t*Esc.返回*\n\n");
P("\n\t\t\t选择?
");
c=getch();
if(c==27)break;
switch(c)
{case'1':
Cha_JiLuHao(Biao1,k_Biao1);break;
case'2':
Cha_Dianhua(Biao1,k_Biao1);break;
case'3':
Cha_XingMing(Biao1,k_Biao1);break;
case'9':
Cha_QuanBu(Biao1,k_Biao1);break;
}
}
}
voidCha_JiLuHao(JILUBiao1[],intk_Biao1)/*按记录号查询*/
{
inti,n1,n2;
JILU*p;
system("CLS");
P("\n\n\n\n\t\t请输入起始记录流水号(首记录流水号为1):
");scanf("%d",&n1);
P("\n\n\t\t请输入结束记录流水号:
");scanf("%d",&n2);
if(n1<1)n1=0;
if(n1>=k_Biao1)return;
if(n2<1)return;
if(n2>=k_Biao1)n2=k_Biao1;
system("CLS");
PBT;
P("\n");
for(p=&Biao1[n1-1],i=n1;i<=n2;i++,p++)if(p->sc!
='*')PJL;
stop();
}
voidCha_Dianhua(JILUBiao1[],intk_Biao1)/*按电话号查询*/
{
charx[20];
JILU*p;
inti;
system("CLS");
P("\n\n\n\n\t\t请输入电话号:
");scanf("%s",x);
system("CLS");
PBT;
P("\n");
for(i=0,p=Biao1;idh,x)==0&&p->sc!
='*')PJL;
stop();
}
voidCha_XingMing(JILUBiao1[],intk_Biao1)/*按姓名查询*/
{
charx[20];
JILU*p;
inti;
system("CLS");
P("\n\n\n\n\t\t请输入姓名:
");scanf("%s",x);
PBT;
P("\n");
for(i=0,p=Biao1;ixm,x)==0&&p->sc!
='*')PJL;
stop();
}
voidCha_QuanBu(JILUBiao1[],intk_Biao1)/*****查询全部*****/
{
inti;
JILU*p;
system("CLS");
PBT;
P("\n");
for(p=Biao1,i=0;istop();
}
intShanChu(JILUBiao1[],intk_Biao1)/*****删除主控模块*****/
{
charc;
for(;;)
{system("CLS");
P("\n\n\n\n\n\n");
P("\t\t\t*1.按记录号删除*\n");
P("\t\t\t*2.按电话删除*\n");
P("\t\t\t*3.按姓名删除*\n");
P("\t\t\t***\n");
P("\t\t\t*4.删除全部记录*\n");
P("\t\t\t***\n");
P("\t\t\t*5.回收站察看*\n");
P("\t\t\t*6.撤销删除*\n");
P("\t\t\t*9.清空回收站*\n");
P("\t\t\t*(不可恢复!
)*\n");
P("\t\t\t*Esc.返回*\n\n");
P("\n\t\t\t选择?
");
c=getch();
if(c==27)break;
switch(c)
{case'1':
Shan_JiLuHao(Biao1,k_Biao1);break;
case'2':
Shan_Dianhua(Biao1,k_Biao1);break;
case'3':
Shan_XingMing(Biao1,k_Biao1);break;
case'4':
Shan_QuanBu(Biao1,k_Biao1);break;
case'5':
Shan_HuiShouZhan(Biao1,k_Biao1);break;
case'6':
Shan_CheXiao(Biao1,k_Biao1);break;
case'9':
k_Biao1=Shan_WuLi(Biao1,k_Biao1);break;
}
}
returnk_Biao1;
}
voidShan_JiLuHao(JILUBiao1[],intk_Biao1)/*按记录号逻辑删除*/
{
inti,n1,n2;
JILU*p;
system("CLS");
P("\n\n\n\n\t\t请输入起始记录流水号:
");scanf("%d",&n1);
P("\n\n\t\t请输入结束记录流水号:
");scanf("%d",&n2);
if(n1<0)n1=0;if(n1>=k_Biao1)return;
if(n2<0)return;if(n2>=k_Biao1)n2=k_Biao1;
if(n2system("CLS");
for(p=&Biao1[n1],i=n1;i<=n2;i++,p++)p->sc='*';
stop();
}
voidShan_Dianhua(JILUBiao1[],intk_Biao1)/*按电话号逻辑删除*/
{
charx[20];
JILU*p;
inti;
system("CLS");
P("\n\n\n\n\t\t请输入电话号:
");scanf("%s",x);
system("CLS");
for(i=0,p=Biao1;idh,x)==0)p->sc='*';
stop();
}
voidShan_XingMing(JILUBiao1[],intk_Biao1)
{
charx[10];
JILU*p;
inti;
system("CLS");
P("\n\n\n\n\t\t请输入姓名:
");
scanf("%s",x);
system("CLS");
for(i=0,p=Biao1;iif(strcmp(p->xm,x)==0)p->sc='*';
stop();
}
voidShan_QuanBu(JILUBiao1[],intk_Biao1)/*全部删除*/
{
JILU*p,*q;charc;
p=Biao1;
q=Biao1+k_Biao1;
puts("是否全部删除?
(Y/N)");
c=getch();
if(c=='Y'||c=='y')
{
for(;p{
if(p->sc='')
p->sc='*';
}
printf("\n\n");
printf("已成功删除了%d条记录",q-Biao1);
}
stop();
}
voidShan_HuiShouZhan(JILUBiao1[],intk_Biao1)/*回收站察看*/
{
inti;
JILU*p;
system("CLS");
PBT;
for(p=Biao1,i=0;isc=='*')PJL;
stop();
}
voidShan_CheXiao(JILUBiao1[],intk_Biao1)/*撤销删除*/
{
JILU*p,*q;
charc;
system("CLS");
PBT;
for(p=Biao1,q=Biao1+k_Biao1;p{
if(p->sc=='')continue;
PJL;
puts("撤销删除?
(Y/N)");
c=getch();
if(c=='Y'||c=='y')p->sc='';
}
stop();
}
intShan_WuLi(JILUBiao1[],intk_Biao1)/*物理删除(清空回收站)*/
{
JILU*p1,*p2,*q;
p1=p2=Biao1;
q=Biao1+k_Biao1;
for(;p1{
if(p1->sc=='*')continue;
if(p1==p2){p2++;continue;}
strcpy(p2->xb,p1->xb);
strcpy(p2->xm,p1->xm);
p2->cs.nian=p1->cs.nian;
p2->cs.yue=p1->cs.yue;
p2->cs.ri=p1->cs.ri;
strcpy(p2->dh,p1->dh);
strcpy(p2->zz,p1->zz);
p2->sc=p1->sc;
p2++;
}
printf("\n\n\t\t回收站已成功清空了%d条记录\n",p1-p2);
k_Biao1-=p1-p2;
stop();
returnk_Biao1;
}
voidCunPan(JILUBiao1[],intk_Biao1,charfile[])/*存盘*/
{
FILE*fp;
JILU*p,*q;
if((fp=fopen(file,"wb"))==NULL)
{puts("\n\n\t\t文件打开错误!
");stop();return;}
for(p=Biao1,q=Biao1+k_Biao1;pfwrite(p,sizeof(JILU),1,fp);
fclose(fp);
printf("\n\n\t\t已成功保存%d条记录\n",k_Biao1);
stop();
}
intDaoRu(JILUBiao1[],charfile[])/*导入*/
{
FILE*fp;
JILU*p;
intk_Biao1;
if((fp=fopen(file,"rb"))==NULL)
{puts("\n\n\t\t\t文件打开错误!
");stop();return0;}
for(p=Biao1;!
feof(fp);p++)
fread(p,sizeof(JILU),1,fp);
fclose(fp);
k_Biao1=p-Biao1-1;
printf("\n\n\t\t已成功导入%d条记录\n",k_Biao1);
stop();
returnk_Biao1;
}
//交换模块//
voidJiaoHuan(JILUBiao1[],intj,intk)/*交换公共数组Biao1内元素j与元素k*/
{
JILUx;
strcpy(x.xb,Biao1[j].xb);
strcpy(Biao1[j].xb,Biao1[k].xb);
strcpy(Biao1[k].xb,x.xb);
strcpy(x.xm,Biao1[j].xm);
strcpy(Biao1[j].xm,Biao1[k].xm);
strcpy(Biao1[k].xm,x.xm);
x.cs.nian=Biao1[j].cs.nian;
Biao1[j].cs.nian=Biao1[k].cs.nian;
Biao1[k].cs.nian=x.cs.nian;
x.cs.yue=Biao1[j].cs.yue;
Biao1[j].cs.yue=Biao1[k].cs.yue;
Biao1[k].cs.yue=x.cs.yue;
x.cs.ri=Bi