通讯录管理系统[推荐]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“通讯录信息管理系统”。
1.题目名称
通讯录管理系统 2.基本功能
(1)显示:将所有联系人的信息显示出来(2)查找:按姓名、手机号码、QQ号码进行查找
(3)添加:从键盘上录入联系人的有关信息,包括姓名、手机号码、QQ号码、家庭地址
(4)修改:根据用户需要,修改联系人的指定信息
(5)删除:删除不需要的信息
源代码
#include #include #include #define LEN sizeof(struct Per)struct Per { char name[17];//姓名
char number[13];//电话 char qq[11];//qq号
char add[30];//家庭地址 };void ClearScreen()//清屏函数 { system(“cls”);} void printf1()//主界面 {
printf(“nnnnttt 欢迎来到通讯录!”);printf(“nntt 请选择操作:”);printf(“nnttt1.显示通讯录”);printf(“nttt2.查找通讯录”);printf(“nttt3.添加通讯录”);printf(“nttt4.修改通讯录”);printf(“nttt5.删除通讯录”);printf(“nttt6.退出n”);} void printf2()//修改页面 { printf(“请选择操作:n”);printf(“t1.按姓名查找n”);printf(“t2.按手机号码查找n”);printf(“t3.按QQ号码查找n”);printf(“t4.返回上一页n”);} void Show()//显示函数 { struct Per * p,person;FILE *fp;int i=0;p=&person;ClearScreen();printf(“姓名tt 电话t QQt 家庭地址nn”);if((fp=fopen(“aa.txt”,“r”))==NULL){ printf(“cannot open filen”);exit(0);} while(!feof(fp)&&fread(p,LEN,1,fp)){
printf(“%-17s%-13s%-11s%-30sn”,p->name,p->number,p->qq,p->add);
i++;} if(i==0)
printf(“没有联系人n”);else
printf(“ntttttt共有%d位联系人n”,i);fclose(fp);printf(“n按回车键返回上一页”);getchar();getchar();} void Seek()//查找 { char name[17],tel[13],qq[11];int n,i;FILE *fp;struct Per * p,person;p=&person;fp=fopen(“aa.txt”,“r”);while(1){ rewind(fp);ClearScreen();printf2();printf(“请选择您的操作:n”);scanf(“%d”,&n);if(n==1){
i=0;
ClearScreen();
printf(“请输入要查找的联系人的姓名:n”);
scanf(“%s”,name);while(!feof(fp)){ fread(p,LEN,1,fp);
if(strcmp(name,p->name)==0)
{
i++;
if(i==1)
{ printf(“姓名tt 电话t QQt 家庭地址nn”);}
printf(“%-17s%-13s%-11s%-30sn”,p->name,p->number,p->qq,p->add);
memset(p,0,LEN);
}
} if(i==0)printf(“没有该联系人的信息n”);
printf(“n按回车键返回上一页”);getchar();getchar();} else if(n==2){ i=0;ClearScreen();printf(“请输入要查找的手机号码:n”);scanf(“%s”,tel);while(!feof(fp)){ fread(p,LEN,1,fp);if(strcmp(tel,p->number)==0){
i++;
if(i==1)
{ printf(“姓名tt 电话t QQt 家庭地址
nn”);}
printf(“%-17s%-13s%-11s%-30sn”,p->name,p->number,p->qq,p->add);
memset(p,0,LEN);
} } if(i==0)printf(“没有该联系人的信息n”);printf(“n按回车键返回上一页”);getchar();getchar();
} else if(n==3){ i=0;ClearScreen();printf(“请输入要查找的QQ号码:n”);scanf(“%s”,qq);while(!feof(fp)){ fread(p,LEN,1,fp);
if(strcmp(qq,p->qq)==0)
{
i++;
if(i==1)
{ printf(“姓名tt 电话t QQt 家庭地址nn”);}
printf(“%-17s%-13s%-11s%-30sn”,p->name,p->number,p->qq,p->add);
memset(p,0,LEN);
} } if(i==0)
printf(“没有该联系人的信息n”);
printf(“n按回车键返回上一页”);getchar();getchar();
} else if(n==4)
break;} fclose(fp);getchar();} void Add()//添加函数 { int n;FILE *fp;struct Per * p,person;p=&person;
printf(“请选择您的操作 1 添加 2 返回上一页nn”);scanf(“%d”,&n);if(n!=1&&n!=2){
printf(“请选择您的操作 1 添加 2 返回上一页n”);scanf(“%d”,&n);} while(n==1){ memset(p,0,LEN);//机构体的初始化 ClearScreen();fp=fopen(“aa.txt”,“a”);printf(“请输入姓名n”);scanf(“%s”,p->name);printf(“请输入手机号码n”);scanf(“%s”,p->number);printf(“请输入qq(没有请输入无)n”);scanf(“%s”,p->qq);printf(“请输入地址n”);scanf(“%s”,p->add);
fwrite(p,LEN,1,fp);fclose(fp);printf(“保存成功!n”);printf(“您想 1继续添加 2退出n”);scanf(“%d”,&n);if(n!=1&&n!=2)
{
printf(“请选择您的操作 1 添加 2 退出nn”);scanf(“%d”,&n);
} } } void Alter()//修改 { char name[17],tel[13],qq[11],add[30];int n,len,i=0;FILE *fp;struct Per *p,person;p=&person;fp=fopen(“aa.txt”,“r+”);printf(“请输入要修改的联系人的姓名n”);scanf(“%s”,name);while(!feof(fp)&&fread(p,LEN,1,fp)){
if(strcmp(name,p->name)==0)
{
i++;
len=ftell(fp);printf(“n姓名tt 电话t QQt 家庭地址nn”);
printf(“%-17s%-13s%-11s%-30sn”,p->name,p->number,p->qq,p->add);
} } printf(“n”);if(i==0){
printf(“没有该联系人的信息n”);getchar();
printf(“按回车键返回主菜单n”);} else { printf(“1.修改该联系人的姓名n”);printf(“2.修改该联系人的手机号码n”);printf(“3.修改该联系人的QQ号码n”);printf(“4.修改该联系人的家庭地址n”);printf(“5.修改该联系人的全部信息n”);
printf(“6.返回上一页nn”);printf(“请输入您的操作序号n”);scanf(“%d”,&n);
switch(n)
{
case 1:
ClearScreen();fseek(fp,len-71,SEEK_SET);printf(“请输入姓名n”);scanf(“%s”,name);
fwrite(&name,sizeof(name),1,fp);printf(“修改成功n”);
printf(“按回车键返回主菜单n”);getchar();
break;
case 2:
ClearScreen();fseek(fp,len-54,SEEK_SET);printf(“请输入手机号码n”);scanf(“%s”,tel);
fwrite(&tel,sizeof(tel),1,fp);printf(“修改成功n”);
printf(“按回车键返回主菜单n”);getchar();
break;
case 3:
ClearScreen();fseek(fp,len-41,SEEK_SET);printf(“请输入qq号码n”);scanf(“%s”,qq);
fwrite(&qq,sizeof(qq),1,fp);printf(“修改成功n”);
printf(“按回车键返回主菜单n”);getchar();
break;
case 4:
ClearScreen();fseek(fp,len-30,SEEK_SET);printf(“请输入家庭地址n”);scanf(“%s”,add);
fwrite(&add,sizeof(add),1,fp);printf(“修改成功n”);
printf(“按回车键返回主菜单n”);getchar();
break;
case 5:
ClearScreen();fseek(fp,len-71,SEEK_SET);
printf(“请输入姓名n”);scanf(“%s”,p->name);printf(“
请
输
入
手
机
号
码n”);scanf(“%s”,p->number);printf(“请输入n”);scanf(“%s”,p->qq);printf(“请输入地址n”);scanf(“%s”,p->add);fwrite(p,LEN,1,fp);printf(“修改成功n”);
printf(“按回车键返回主菜单n”);getchar();
break;
case 6:;
}
} fclose(fp);getchar();
}
qq(没有请输入无)void Delete()//删除 { int i=0,j,l;char name[17];struct Per * p,person;FILE *fp,*fp1;p=&person;fp=fopen(“aa.txt”,“a+”);printf(“请输入要删除的联系人的姓名n”);scanf(“%s”,name);while(!feof(fp)&&fread(p,LEN,1,fp))//显示要删除的联系人的信息
{
if(strcmp(name,p->name)==0)
{
i++;
if(i==1)
{printf(“姓名tt 电话t
QQt 家庭地址nn”);} printf(“%-17s%-13s%-11s%-30sn”,p->name,p->number,p->qq,p->add);
memset(p,0,LEN);
}
} rewind(fp);if(i==0)printf(“没有该联系人的信息n”);else {
printf(“n此联系人将被删除n”);
printf(“1.确定 2.取消n”);
scanf(“%d”,&j);
if(j==1)
{
fp1=fopen(“bb.txt”,“a”);
while(!feof(fp)&&fread(p,LEN,1,fp))
{
if(strcmp(name,p->name)!=0)
{
fwrite(p,LEN,1,fp1);
}
}
fclose(fp);
fclose(fp1);
remove(“aa.txt”);
rename(“bb.txt”,“aa.txt”);
printf(“n该联系人已删除 按回车键返回上一页n”);getchar();getchar();
}
if(j==2)
{
fclose(fp);printf(“n按回车键返回上一页n”);getchar();getchar();
}
} } int Select()//主菜单输入 { int n;printf(“选择您想要的操作 请输入序号!n”);scanf(“%d”,&n);while(n6){
printf(“输入错误,请重新输入!n”);
scanf(“%d”,&n);
}
return(n);} int main(){
while(1){
ClearScreen();
printf1();
switch(Select()){
case 1:ClearScreen();Show();break;
case 2:ClearScreen();Seek();break;
case 3:ClearScreen();Add();break;
case 4:ClearScreen();Alter();break;
case 5:ClearScreen();Delete();break;
case 6:exit(0);} }
return 0;}