c语言通讯录管理系统.docx

上传人:b****0 文档编号:9201039 上传时间:2023-05-17 格式:DOCX 页数:22 大小:19.98KB
下载 相关 举报
c语言通讯录管理系统.docx_第1页
第1页 / 共22页
c语言通讯录管理系统.docx_第2页
第2页 / 共22页
c语言通讯录管理系统.docx_第3页
第3页 / 共22页
c语言通讯录管理系统.docx_第4页
第4页 / 共22页
c语言通讯录管理系统.docx_第5页
第5页 / 共22页
c语言通讯录管理系统.docx_第6页
第6页 / 共22页
c语言通讯录管理系统.docx_第7页
第7页 / 共22页
c语言通讯录管理系统.docx_第8页
第8页 / 共22页
c语言通讯录管理系统.docx_第9页
第9页 / 共22页
c语言通讯录管理系统.docx_第10页
第10页 / 共22页
c语言通讯录管理系统.docx_第11页
第11页 / 共22页
c语言通讯录管理系统.docx_第12页
第12页 / 共22页
c语言通讯录管理系统.docx_第13页
第13页 / 共22页
c语言通讯录管理系统.docx_第14页
第14页 / 共22页
c语言通讯录管理系统.docx_第15页
第15页 / 共22页
c语言通讯录管理系统.docx_第16页
第16页 / 共22页
c语言通讯录管理系统.docx_第17页
第17页 / 共22页
c语言通讯录管理系统.docx_第18页
第18页 / 共22页
c语言通讯录管理系统.docx_第19页
第19页 / 共22页
c语言通讯录管理系统.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言通讯录管理系统.docx

《c语言通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《c语言通讯录管理系统.docx(22页珍藏版)》请在冰点文库上搜索。

c语言通讯录管理系统.docx

c语言通讯录管理系统

#include

#include

#include

typedefstruct/*公共部分*/

{

intscore;/*编号*/

charname[10];/*姓名*/

charnum[15];/*号码*/

charemail[20];/*邮箱*/

charage[8];/*年龄*/

charadds[20];/*住址*/

}Person;

Personpe[80],temp;

intmenu_select();/*界面函数陆*/

intInput(Personper[],intn);/*添加记录王*/

voidDisplay(Personper[],intn);/*显示函数公共*/

intDelete_a_record(Personper[],intn);/*删除函数赵应振*/

voidQuery_a_record(Personper[],intn);/*查询函数王嘉*/

voidChange(Personper[],intn);/*修改函数赵*/

voidWritetoText(Personper[],intn);/*打印保存公共*/

voidrank(intn);/*排序函数陆*/

voidmain()/*主函数陆*/

{

intn=0,i=0,k;

FILE*fp1;/*运行之前从文件中读取之前输入的项目*/

if((fp1=fopen("PersonInfo.dat","rb"))==NULL)/*如果没有文件,自动创建一个*/

{

fp1=fopen("PersonInfo.dat","wb");

}

do

{

k=fread(&pe[i],sizeof(Person),1,fp1);

i++;

n=i-1;

}while(k!

=0);/*文件读取完毕或错误时fread函数返回值为0。

资料来自csdn论坛*/

fclose(fp1);

for(;;)

{

switch(menu_select())

{

case1:

printf("\n\t添加记录到通讯录\n");/*添加记录*/

n=Input(pe,n);

break;

case2:

printf("\n\t\t\t通讯录记录表\n");/*显示记录*/

Display(pe,n);

break;

case3:

printf("\n\t从通讯录中删除记录\n");

n=Delete_a_record(pe,n);/*删除记录*/

printf("\t");

system("pause");

break;

case4:

printf("\n\t在通讯录中查找记录\n");

Query_a_record(pe,n);/*查找记录*/

printf("\t");

system("pause");

break;

case5:

printf("\n\t修改通讯录中的记录\n");

Change(pe,n);/*修改数据*/

printf("\t");

system("pause");

break;

case6:

printf("\n\t保存通讯录中的记录\n");

WritetoText(pe,n);/*保存数据*/

printf("\t");

system("pause");

break;

case7:

/*帮助信息*/

printf("\n\t使用帮助\n");

printf("\n\t#1.添加记录,用于输入你想添加的条目的信息,注意格式。

\n");

printf("\n\t#2.显示记录,用于显示当前所有条目。

\n");

printf("\n\t#3.删除记录,用于删除当前所有条目中的某一条。

\n");

printf("\n\t#4.查找记录,用于查找当前所有条目中的某一条,可以姓名模糊查找。

\n");

printf("\n\t#5.修改记录,用于修改当前所有条目中的某一条。

\n");

printf("\n\t#6.保存记录,用于保存当前所有条目和打印当前所有条目。

\n");

system("pause");

break;

case0:

printf("\n\t\t谢谢使用,再见!

\n");/*结束程序*/

printf("\n\t\t");

system("pause");

printf("\n\t\t");

exit(0);

}

}

}

intmenu_select()/*界面函数陆*/

{

charc,null[20];

do

{

system("cls");

printf("\t\t*****通讯录*****\n");

printf("\t\t┌───────┐\n");

printf("\t\t│1.添加记录│\n");

printf("\t\t│2.显示记录│\n");

printf("\t\t│3.删除记录│\n");

printf("\t\t│4.查询记录│\n");

printf("\t\t│5.修改记录│\n");

printf("\t\t│6.保存记录│\n");

printf("\t\t│7.功能帮助│\n");

printf("\t\t│0.退出程序│\n");

printf("\t\t└───────┘\n");

printf("\t提醒:

退出程序前,请保存记录。

\n");

printf("\t\t请您选择(0-7):

");

c=getchar();

gets(null);

}while(c<'0'||c>'7');

return(c-'0');

}

intInput(Personper[],intn)/*添加记录王*/

{

inttemp,i=0,j=0,k1=0,k2=0;/*temp为临时编号存储变量*/

charsign,null[20];/*k1为编号检测阀开关,k2为@符检测阀开关*/

while(sign!

='n'&&sign!

='n'-32)

{

printf("\t编号:

");/*编号的唯一:

by:

王嘉*/

do

{

while(0==scanf("\t%d",&temp))

{

while('\n'!

=getchar()){}

printf("\t输入无效!

请重新输入\n\t编号:

");

}

for(j=0;j

{

if(temp==per[j].score)k1++;

}/*k1为两种情况0或1*/

if(k1==1)/*k1为1时,有重复并使k1归零进入循环*/

{

printf("\t编号重复,请重新输入\n\t编号:

");

k1=0;

}

elsebreak;/*k1为0时,无重复,结束循环*/

}while(k1==0);/*循环的终止条件是没有找出相同,k1=0*/

per[n+i].score=temp;/*临时到最终*/

printf("\t姓名:

");

scanf("\t%s",per[n+i].name);

printf("\t年龄:

");

scanf("\t%s",per[n+i].age);

printf("\t电话号码:

");

scanf("\t%s",per[n+i].num);

printf("\t通讯住址:

");

scanf("\t%s",per[n+i].adds);

printf("\t电子邮箱:

");

scanf("\t%s",per[n+i].email);

do/*Email的@符检测*/

{/*By:

陆文虎*/

for(j=0;j<20;j++)

{

if(per[n+i].email[j]=='@')k2++;

}

if(k2!

=1)

{

printf("\tEmail格式错误,未检测到合法@符,请重新输入\n\t电子邮箱:

");

scanf("\t%s",per[n+i].email);

k2=0;

}

}while(k2!

=1);

k2=0;

printf("\n\t是否继续添加?

(Y/N)");

scanf("\t%c",&sign);

gets(null);

i++;

/*只能输入y和n(不区分大小写)*/

while(sign!

='y'&&sign!

='y'-32&&sign!

='n'&&sign!

='n'-32)

{

printf("\n\t选择错误,请重新选择\n\t是否继续添加?

(Y/N)");

scanf("\t%c",&sign);

gets(null);

}

}

return(n+i);

}

voidDisplay(Personper[],intn)/*显示函数*//*公共*/

{

rank(n);/*调用排序函数。

*/

inti;/*格式*/

printf("----------------------------------------------------------------------\n");

printf("编号姓名年龄电话号码通讯地址电子邮箱\n");

printf("----------------------------------------------------------------------\n");

for(i=1;i

{

printf("%-5d%-8s%-6s%-13s%-15s%-15s\n",per[i-1].score,per[i-1].name,per[i-1].age,per[i-1].num,per[i-1].adds,per[i-1].email);

if(i>1&&i%10==0)

{

printf("\t-----------------------------------\n");

printf("\t");

system("pause");

printf("\t-----------------------------------\n");

}

}

printf("----------------------------------------------------------------------\n");

system("pause");

}

intDelete_a_record(Personper[],intn)/*删除函数赵应振*/

{

charch,name[20];

inti=0,j,tabi,deletescore,count1=0,count2=0;/*tabi为标记的i值,deletescore为选择删除的编号*/

printf("\t请输入想删除记录中的名字:

");

scanf("%s",name);

while(strcmp(per[i].name,name)!

=0&&i

{

i++;

count2++;

}

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return(n);

}

for(i=0;i<=n;i++)/*同名人员删除问题*/

{/*统计并找出通讯录中存在相同姓名的条目*/

while(strcmp(per[i].name,name)==0&&i

{

printf("\t此人编号:

%d\n",per[i].score);

printf("\t此人姓名:

%s\n",per[i].name);

printf("\t此人年龄:

%s\n",per[i].age);

printf("\t通讯地址:

%s\n",per[i].adds);

printf("\t电子邮箱:

%s\n",per[i].email);

printf("\t-----------------------------------\n");

count1++;

i++;

}

}

if(count1==1)/*当姓名唯一时*/

{

printf("\t是否删除?

[y/n]");

fflush(stdin);

scanf("%c",&ch);

if(ch=='y'||ch=='y'-32)

{

for(j=count2;j

{

per[j]=per[j+1];

}

printf("\t\t已经成功删除!

\n");

fflush(stdin);

return(n-1);

}

else

printf("\t未删除\n\t谢谢使用!

\n\t");

returnn;

}

else/*当姓名有两个或以上时,按编号删除。

*/

{

printf("\t\t请输入要删除人的编号!

\n\t\t");

scanf("%d",&deletescore);

for(i=0;i

{

if(per[i].score==deletescore)

{

printf("\t-----------------------------------\n");

printf("\t此人编号:

%d\n",per[i].score);

printf("\t此人姓名:

%s\n",per[i].name);

printf("\t此人年龄:

%s\n",per[i].age);

printf("\t通讯地址:

%s\n",per[i].adds);

printf("\t电子邮箱:

%s\n",per[i].email);

printf("\t-----------------------------------\n");

tabi=i;

}

}

printf("\t\t是否删除?

(y/n)\n\t\t");

fflush(stdin);

scanf("%c",&ch);

if(ch=='y'||ch=='y'-32)

{

for(j=tabi;j

{

per[j]=per[j+1];

}

printf("\t\t\t已经成功删除!

\n");

fflush(stdin);

return(n-1);

}

else

printf("\t\t谢谢使用!

");

returnn;

}

}

voidQuery_a_record(Personper[],intn)/*查询函数by:

王嘉*/

{

intm;

printf("\t\n请选择查询方式:

\n");/*查找总菜单*/

printf("\t┌───────┐\n");

printf("\t│1--------姓名│\n");

printf("\t│2--------电话│\n");

printf("\t│3--------地址│\n");

printf("\t│4--------返回│\n");

printf("\t└───────┘\n");

printf("请选择:

");

scanf("%d",&m);

while(m!

=1&&m!

=2&&m!

=3&&m!

=4)

{

printf("输入错误,请重新选择:

");

getchar();

scanf("%d",&m);

}

if(m==1)

{

intx;

printf("\t\n请选择查询方式:

\n");/*查找二级菜单*/

printf("\t┌────────┐\n");

printf("\t│1------精确查找│\n");

printf("\t│2------模糊查找│\n");

printf("\t└────────┘\n");

printf("请选择:

");

scanf("%d",&x);

while(x!

=1&&x!

=2)

{

printf("\t输入错误,请重新选择:

");

getchar();

scanf("%d",&x);

}

if(x==1)/*精确查找单元*/

{

chars[20];

inti=0;

printf("\t请输入想查询的姓名:

");

scanf("\t%s",s);

while(strcmp(per[i].name,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

printf("\t此人编号:

%d\n",per[i].score);

printf("\t此人年龄:

%s\n",per[i].age);

printf("\t电话号码:

%s\n",per[i].num);

printf("\t通讯地址:

%s\n",per[i].adds);

printf("\t电子邮箱:

%s\n",per[i].email);

};

if(x==2)/*模糊查找单元*/

{

chars[20];

inti=0,j=0;

printf("\t请输入想查询的姓名:

");

scanf("\t%s",s);

while(i

{

if(strstr(per[i].name,s))/*使用strstr函数指向第一次出现*/

{

printf("%s",per[i].name);

printf("\t此人编号:

%d\n",per[i].score);

printf("\t此人年龄:

%s\n",per[i].age);

printf("\t电话号码:

%s\n",per[i].num);

printf("\t通讯地址:

%s\n",per[i].adds);

printf("\t电子邮箱:

%s\n",per[i].email);

}

elsej++;

i++;

}

if(j==n)printf("\t通讯录中没有此人!

\n");/*如果找了n次没结果,则无此人*/

}

}

if(m==2)

{

chars[20];

inti=0;

printf("\t请输入想查询的电话:

");

scanf("\t%s",s);

while(strcmp(per[i].num,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

printf("\t此人编号:

%d\n",per[i].score);

printf("\t此人姓名:

%s\n",per[i].name);

printf("\t此人年龄:

%s\n",per[i].age);

printf("\t通讯地址:

%s\n",per[i].adds);

printf("\t电子邮箱:

%s\n",per[i].email);

};

if(m==3)

{

chars[20];

inti=0;

printf("\t请输入想查询的地址:

");

scanf("\t%s",s);

while(strcmp(per[i].adds,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

printf("\t此人编号:

%d\n",per[i].score);

printf("\t此人姓名:

%s\n",per[i].name);

printf("\t此人年龄:

%s\n",per[i].age);

printf("\t电话号码:

%s\n",per[i].num);

printf("\t电子邮箱:

%s\n",per[i].email);

}

}

voidChange(Personper[],intn)/*修改函数赵*/

{

chars[20];

inti=0,j=0,temp,k1=0,k2=0;

printf("\t请输入想修改的记录中的名字:

");

scanf("%s",s);

while(strcmp(per[i].name,s)!

=0&&i

if(i==n)

{

printf("\t通讯录中没有此人!

\n");

return;

}

else

{

printf("\t此人编号:

%d\n",per[i].score);

printf("\t此人姓名:

%s\n",per[i].name);

printf("\t此人年龄:

%s\n",per[i].age);

printf("\t电话号码:

%s\n",per[i].num);

printf("\t电子邮箱:

%s\n",per[i].email);

printf("\n\t重新输入信息:

\n");

}

printf("\t编号:

");

do/*修改函数同样重复输入函数时的问题*/

{

while(0==scanf("\t%d",&temp))

{

while('\n'!

=getchar()){}

printf("\t输入无效!

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2