通讯录C语言程序设计Word格式.docx
《通讯录C语言程序设计Word格式.docx》由会员分享,可在线阅读,更多相关《通讯录C语言程序设计Word格式.docx(20页珍藏版)》请在冰豆网上搜索。
![通讯录C语言程序设计Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/27/3fb17277-50e9-4888-8ca2-de386472514f/3fb17277-50e9-4888-8ca2-de386472514f1.gif)
//按学号查询
voidsearchbyname();
//按姓名查询
voidsearchbyphone();
//按电话查询
voiddeletemenu();
//删除菜单
voiddeleteall();
//删除所有
voiddeleteone();
//删除单个
voidshowall();
//显示所有
voidreadfromfile();
//读取文件
voidwritetofile();
//写入文件
voiddeletebyid();
//按学号删除
voiddeletebyname();
//按姓名删除
voidlistbyid();
//按学号排序
voidlistbyname();
//按姓名排序
voidlistmenu();
//排序菜单
voidmain()
readfromfile();
while
(1)
mainmenu();
}
voidreadfromfile()//从文件导入
if((fp=fopen("
student.bin"
"
rb"
))==NULL)
printf("
\n\t\t通讯录文件不存在"
);
if((fp=fopen("
wb"
\n\t\t建立失败"
exit(0);
else
\n\t\t通讯录文件已建立"
\n\t\t按任意键进入主菜单"
getch();
return;
fseek(fp,0,2);
/*文件位置指针移动到文件末尾*/
if(ftell(fp)>
0)/*文件不为空*/
rewind(fp);
/*文件位置指针移动到文件开始位置*/
for(num=0;
!
feof(fp)&
&
fread(&
student[num],sizeof(structrecord),1,fp);
num++);
\n\t\t文件导入成功"
\n\t\t按任意键返回主菜单"
\n\t\t通讯录文件中无任何纪录"
voidmainmenu()//主菜单
charchoic;
system("
cls"
\n\t\t********************主菜单********************"
\n\t\t***********1-新添纪录2-查询菜单************"
\n\t\t***********3-删除菜单4-记录排序************"
\n\t\t***********5-保存退出6-不保存退出***********"
\n\t\t************************************************"
\n\t\t请选择:
"
choic=getch();
switch(choic)
case'
1'
:
newrecord();
break;
2'
searchmenu();
3'
deletemenu();
4'
listmenu();
5'
writetofile();
6'
default:
voidsearchmenu()//查询菜单
\n\t\t*******************查询菜单*******************"
\n\t\t**********1-显示所有2-按学号查询************"
\n\t\t**********3-按姓名查询4-按电话查询************"
\n\t\t**********5-返回主菜单************"
showall();
searchbyid();
searchbyname();
searchbyphone();
voiddeletemenu()//删除菜单
if(num==0)
\n\t\t对不起,文件中无任何纪录"
\n\t\t*******************删除菜单*******************"
\n\t\t***********1-删除所有2-删除单个***********"
\n\t\t***********3-返回主菜单***********"
deleteall();
deleteone();
voiddeleteall()//删除所有
\n\t\t确认删除?
(y/n)"
if(getch()=='
y'
)
fclose(fp);
\n\t\t不能打开文件,删除失败"
num=0;
\n\t\t纪录已删除,按任意键返回主菜单"
voiddeletebyname()//按姓名删除
inta=0;
intfindmark=0;
intj;
intdeletemark=0;
inti;
\n\t\t请输入要删除学生姓名:
scanf("
%s"
name);
for(i=a;
i<
num;
i++)
if(strcmp(student[i].name,name)==NULL)
\n\t\t以下是您要删除的学生纪录:
findmark++;
\n\t\t________________________________"
\n\t\t学号:
%s"
student[i].id);
\n\t\t姓名:
student[i].name);
\n\t\t电话:
student[i].phone);
\n\t\t地址:
student[i].adress);
\n\t\te-mail:
student[i].e_mail);
\n\t\t是否删除?
for(j=i;
j<
num-1;
j++)/*纪录移动,从stud数组中删除之*/
student[j]=student[j+1];
num--;
deletemark++;
\n\t\t删除成功"
if((i+1)<
num)
\n\t\t是否继续删除相同姓名的同学信息?
a=i;
continue;
\n\t\t是否继续删除?
deletebyname();
if((deletemark==0)&
(findmark==0))
\n\t\t没有该同学的纪录"
deletebyid();
elseif(findmark!
=0)
\n\t\t没有重名信息"
voiddeletebyid()//按学号删除
inti,j;
charid[20];
\n\t\t请输入要删除学生学号:
id);
for(i=0;
if(strcmp(student[i].id,id)==NULL)
if(deletemark==0)
voidnewrecord()//添加纪录
\n\t\t****************请输入学生信息****************\n"
\n\t\t输入学号:
&
student[num].id);
\n\t\t输入姓名:
student[num].name);
\n\t\t输入电话号码:
student[num].phone);
\n\t\t输入地址:
student[num].adress);
\n\t\t输入邮编:
student[num].postcode);
\n\t\t输入e-mail:
student[num].e_mail);
num++;
\n\t\t是否继续添加?
(Y/N):
voidshowall()//显示所有
if(num!
\n\t\t***************以下为通讯录所有信息************"
\n\t\t邮编:
student[i].postcode);
\t\t"
if(i+1<
\n\t\t__________________________"
pause"
\n\t\t通讯录中无任何纪录"
\n\t\t按任意键返回主菜单:
voidsearchbyphone()
intmark=0;
\n\t\t******************按电话查找******************"
charphone[10];
\n\t\t请输入学号:
phone);
for(i=0;
if(strcmp(student[i].phone,phone)==0)
\n\t\t**************以下是您查找的学生信息**********"
mark++;
if(mark==0)
\n\t\t没有改学生的信息"
voidsearchbyname()//按姓名查询
\n\t\t*****************按姓名查找*******************"
\n\t\t请输入姓名:
for(i=a;
if(strcmp(student[i].name,name)==0)
\n\t\t*************以下是您查找的学生信息***********"
if((i+1)<
\n\t\t是否继续查找相同名字的学生信息:
if(mark!
\n\t\t没有相同姓名的学生纪录"
voidsearchbyid()//按学号查询
\n\t\t******************按学号查找******************\n"
if(strcmp(student[i].id,id)==0)
voidwritetofile()//写入文件
\n\t\t文件打开失败"
if(fwrite(&
stude