通讯录管理程序Word格式.docx
- 文档编号:8579083
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:30
- 大小:240.16KB
通讯录管理程序Word格式.docx
《通讯录管理程序Word格式.docx》由会员分享,可在线阅读,更多相关《通讯录管理程序Word格式.docx(30页珍藏版)》请在冰点文库上搜索。
//删除所有
voiddeleteone();
//删除单个
voiddeletebyid();
//按学号删除
voiddeletebyname();
//按姓名删除
voidlistmenu();
//排序菜单
voidlistbyid();
//按学号排序
voidlistbyname();
//按姓名排序
voidwritetofile();
//写入文件
五、算法描述或流程图
对每个函数具体实现的内容加以说明。
算法描述:
voidreadfromfile()//从文件导入
{
if((fp=fopen("
c:
\\test\\student.bin"
"
rb"
))==NULL)/*如果c:
\\test\\student.bin内容为空*/
{
printf("
\n\t\t通讯录文件不存在"
);
if((fp=fopen("
wb"
\\test\\student.bin文件为空*/
{
printf("
\n\t\t建立失败"
exit(0);
}
else
{
\n\t\t通讯录文件已建立"
\n\t\t按任意键进入主菜单"
getch();
return;
exit(0);
}
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按任意键返回主菜单"
getch();
return;
printf("
\n\t\t通讯录文件中无任何纪录"
getch();
return;
}
voidsearchbyname()//按姓名查询
intmark=0;
inti;
inta=0;
\n\t\t*****************按姓名查找*******************"
charname[20];
\n\t\t请输入姓名:
"
scanf("
%s"
name);
for(i=a;
i<
num;
i++)
if(strcmp(student[i].name,name)==0)/*比较查找姓名和已经保存的姓名是否有一致的*/
\n\t\t*************以下是您查找的学生信息***********"
\n\t\t姓名:
%s"
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************************************************"
mark++;
if((i+1)<
num)
{
printf("
\n\t\t是否继续查找相同名字的学生信息:
(y/n)"
if(getch()=='
y'
)/*扫描用户输入的字符*/
{
a=i;
continue;
}
elsereturn;
}
else
getch();
mainmenu();
}
}
if(mark!
=0)
\n\t\t没有相同姓名的学生纪录"
else
voiddeletebyname()//按姓名删除
intfindmark=0;
intj;
intdeletemark=0;
\n\t\t请输入要删除学生姓名:
for(i=a;
if(strcmp(student[i].name,name)==NULL)/*找出要删除的学生的信息*/
{
\n\t\t以下是您要删除的学生纪录:
findmark++;
\n\t\t________________________________"
\n\t\t是否删除?
if(getch()=='
)
for(j=i;
j<
num-1;
j++)/*纪录移动,从stud数组中删除之*/
student[j]=student[j+1];
num--;
deletemark++;
\n\t\t删除成功"
if((i+1)<
printf("
\n\t\t是否继续删除相同姓名的同学信息?
if(getch()=='
)
{
a=i;
continue;
}
\n\t\t是否继续删除?
)deletebyname();
return;
}
if((i+1)<
num)
elsecontinue;
if((deletemark==0)&
(findmark==0))/*没有找到该同学的信息*/
\n\t\t没有该同学的纪录"
if(getch()=='
deletebyname();
/*继续调用删除函数*/
elseif(findmark!
\n\t\t没有重名信息"
}
voidlistbyname()//按姓名排序
inti,j;
structrecordtmp;
for(i=1;
i++)
{
if(strcmp(student[i].name,student[i-1].name)<
0)/*比较姓名字符的长度*/
tmp=student[i];
j=i-1;
do
{
student[j+1]=student[j];
j--;
while((strcmp(tmp.name,student[j].name)<
0&
j>
=0));
student[j+1]=tmp;
}/*冒泡排序*/
\n\t\t排序成功,是否显示?
)showall();
六、程序运行效果图
首次登陆
主菜单
1.添加记录
继续添加
2.查询菜单
2.1显示所有
按任意键继续
2.2按姓名查询
若有重名
2.3按电话查询
3.删除菜单
3.1删除所有
3.2.按姓名删除
4.姓名排序
5.保存退出
二次进入
七、总结
经一周的程序设计就要走向尾声了,这一周的实践让我获益匪浅,不但复习了以前学习过的知识,还学会了很多新东西新内容,最重要的是提升了自己从细小做起,把握全局的能力。
如果说学习C语言的知识是“点”,那么这次程序设计就是“点成线”甚至“线成面”的过程。
虽然现在来看,我的知识掌握情况还只是停留在浅尝辄止、只知皮毛的阶段,但是现在我已经有了继续提升的信心与决心。
下面对自己近一周的学习实践做以总结。
然而,程序设计本身就是一项精密细致的工作,从第一步做起是必须的。
在细致复习了《C语言程序设计》的所学内容之后,我借鉴网上的的范例构建出了程序的骨架和结构,确定了大的方向,之后一个模块一个模块设计,积少成多,最终完成设计。
作为一个初学者,我在编程过程中出现了很多问题,经过了很长时间的调试才将最终程序完成,虽然程序设计完成了,但是我仍然存在着问题比如程序依然不够美观。
今后,我会继续努力,实现自我的提升!
任何事情都没有一夜成功的,任何事情都需要步步为营,踏实苦干。
本次程序设计既是对我技能的提高,也是对我人生认识的升华。
今后,我将更加努力,更上一层楼!
八、参考文献
[1]李春葆曾平喻丹丹.C语言程序设计教程(第二版).清华大学出版社,2010
[2]谭浩强.C程序设计(第三版).清华大学出版社,2005
九、程序清单
#include<
stdio.h>
stdlib.h>
string.h>
conio.h>
structrecord
charphone[20];
charadress[40];
charQQ[30];
student[500];
intnum=0;
//外部变量num为文件中的纪录数
FILE*fp;
//读取文件
//主菜单
//新添纪录
//查询菜单
//显示所有
//按姓名查询
//按电话查询
//删除菜单
//删除所有
//按姓名删除
//排序菜单
//按姓名排序
//写入文件
voidmain()
readfromfile();
while
(1)
mainmenu();
))==NULL)
voidmainmenu()//主菜单
charchoic;
system("
cls"
\n\t\t**************欢迎使用通讯录系统**************"
\n\t\t"
\n\t\t****************网络112李恩普****************"
\n\t\t********************主菜单********************"
\n\t\t*************1.新添纪录2.查询菜单************"
\n\t\t*************3.删除菜单4.姓名排序************"
\n\t\t*************5.保存退出6.不保存退出***********"
\n\t\t请选择:
choic=getch();
switch(choic)
case'
1'
:
newrecord();
break;
2'
searchmenu();
3'
deletemenu();
4'
listbyname();
5'
writetofile();
6'
exit(0);
default:
mainmenu();
voidnewrecord()//添加纪录
\n\t\t****************请输入学生信息****************\n"
\n\t\t输入姓名:
&
student[num].name);
\n\t\t输入电话号码:
student[num].phone);
\n\t\t输入地址:
student[num].adress);
\n\t\t输入QQ:
student[num].QQ);
num++;
\n\t\t是否继续添加?
(Y/N):
newrecord();
voidsearchmenu()//查询菜单
\n\t\t*******************查询菜单*******************"
\n\t\t**********1.显示所有2.按姓名查询***********"
\n\t\t**********3.按电话查询4.返回主菜单***********"
showall();
searchbyname();
searchbyphone();
break;
voidshowall()//显示所有
if(num!
\n\t\t***************以下为通讯录所有信息************"
for(i=0;
\n\t\tQQ:
student[i].QQ);
\t\t"
if(i+1<
num){printf("
\n\t\t__________________________"
system("
pause"
elseprintf("
\n\t\t通讯录中无任何纪录"
\n\t\t按任意键返回主菜单:
if(strcmp(student[i].name,name)==0)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 管理程序