杨惠明数据结构课程设计通讯录的制作Word文件下载.docx
- 文档编号:16240003
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:18
- 大小:193.26KB
杨惠明数据结构课程设计通讯录的制作Word文件下载.docx
《杨惠明数据结构课程设计通讯录的制作Word文件下载.docx》由会员分享,可在线阅读,更多相关《杨惠明数据结构课程设计通讯录的制作Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
存盘———save();
6)
装入———load();
3系统流程图
系统功能模块图如下:
4详细设计及测试
结构体:
structrecord
{
charname[20];
charstreet[20];
charcity[20];
chareip[20];
//邮编
charstate[20];
}people[500];
//500个记录,可修改
structpnode
recorddata;
structpnode*next,*prior;
//双循环链表
};
typedefpnode*linklist;
函数目录表:
voidmainmenu();
//主菜单
voidsearchmenu();
//查询菜单
voidenter();
//添加新纪录
voidsearch();
//按条件搜索记录
voiddisplay();
//显示全部记录
voidload();
//载入文件
voidsave();
//写入文件
voiddel();
//删除记录
voidlistinsert();
//插入结点函数
voidinitlist();
//初始化链表函数
主程序与各模块的调用关系:
voidmain()//主函数
initlist();
//初始化链表
load();
listinsert();
//增设新节点
while
(1)
mainmenu();
//进入主菜单,有非法输入仍停留在主菜单
}
voidmainmenu()//主菜单
{菜单界面;
printf("
%c"
ch=getch());
switch(ch)
{
case'
1'
:
enter();
break;
2'
searchmenu();
3'
del();
4'
save();
5'
exit(0);
default:
mainmenu();
}
voidsearchmenu()//查询菜单
{查询菜单;
%c"
display();
search();
}
链表初始化:
voidinitlist()//链表初始化函数
{
l=(linklist)malloc(sizeof(pnode));
//动态申请内存
l->
next=l;
prior=l;
}
载入可能存在的通讯录文件:
voidload()//装载已有文件信息
{//无文件,新建立文件
……;
//已有文件,导入文件
增加新节点:
voidlistinsert()//增加新结点
{//插入新结点,读入内存信息
增加新记录:
voidenter()//添加新纪录
{//信息输入
//是否继续添加?
按姓名查找:
voidsearch()
{//输入姓名
//输出查询结果
//检索可能的重名纪录
显示所有的记录:
voiddisplay()//显示所有纪录
{//显示内存中的所有记录
删除指定的记录:
voiddel()//删除纪录
{//输入要删除的姓名
//查找符合条件的记录,对于每条记录询问是否删除;
//满足条件的输出结束,询问是否删除其他记录,循环
保存到磁盘文件:
voidsave()//
{//写入文件操作
5部分调试界面
6心得和总结
1.总结:
这次的程序实设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。
自己动手,自己发现和解决问题。
发现了自己的许多不足。
平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机运行,解决其中大部分问题,当然还存在一些问题没有解决。
我相信在以后的学习能够解决好它们。
但是,收获还是不小的,我不仅对C的操作有了进一步的掌握,还了解到了程序设计的书写风格及其注释的格式。
2、心得体会:
体会就是书上和老师教的东西是有限的,我们需要不断的靠自己去学习,向他人请教,了解和掌握更多的知识,这样我们才能编出更加好的C程序,程序编写之前的需求分析,至关重要,将关系到这整个项目的成败。
7源程序清单
#include<
stdio.h>
stdlib.h>
string.h>
conio.h>
linklistl;
intlen=0;
//链表长度
FILE*fp;
//文件指针
//载入文件内容
if((fp=fopen("
txl.txt"
"
rb"
))==NULL)
printf("
\n\t\t通讯录文件不存在"
);
if((fp=fopen("
wb"
{
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(len=0;
!
feof(fp)&
&
fread(&
people[len],sizeof(structrecord),1,fp);
len++);
\n\t\t文件导入成功"
\n\t\t按任意键返回主菜单"
getch();
return;
\n\t\t通讯录文件中无任何纪录"
getch();
return;
linklists,p=l;
for(inti=0;
i<
len;
i++)
{
s=(linklist)malloc(sizeof(pnode));
strcpy(s->
data.name,people[i].name);
data.city,people[i].city);
data.street,people[i].street);
data.eip,people[i].eip);
data.state,people[i].state);
s->
prior=p->
prior;
next=p;
p->
prior->
next=s;
prior=s;
p=p->
next;
charch;
system("
cls"
\n\t\t***************欢迎进入通讯录系统***************"
\n\t\t******************1-新添纪录***************"
\n\t\t******************2-查找联系人***************"
\n\t\t******************3-删除联系人***************"
\n\t\t******************4-保存***************"
\n\t\t******************5-退出***************"
\n\t\t************************************************"
\n\t\t请选择:
"
\n\t\t****************请输入学生信息****************\n"
\n\t\t姓名:
scanf("
%s"
&
people[len].name);
\n\t\t街道:
people[len].street);
\n\t\t城市:
people[len].city);
\n\t\t邮编:
people[len].eip);
\n\t\t国家:
people[len].state);
len++;
\n\t\t是否继续添加?
(Y/N):
if(getch()=='
y'
)
enter();
\n\t\t*******************查询菜单*******************"
\n\t\t****************1-显示所有记录****************"
\n\t\t****************2-按姓名查询****************"
\n\t\t****************3-返回主菜单****************"
\n\t\t*****************按姓名查找*******************"
charname[20];
\n\t\t请输入姓名:
name);
查询到的信息:
\n"
%-18s%-18s%-18s%-15s%s\n"
姓名"
街道"
城市"
邮编"
国家"
//格式控制输出
-----------------------------------------------------------------------------\n"
for(inti=0;
i++)
if(strcmp(name,people[i].name)==0)
printf("
people[i].name,people[i].street,people[i].city,people[i].eip,people[i].state);
if(i+1<
len)continue;
//重名纪录再检索
\n\t\t按任意键返回查询菜单"
searchmenu();
inti;
if(len!
=0)
\n\t\t***************以下为通讯录所有信息************\n\n"
for(i=0;
else
\n\\tt通讯录中无任何纪录"
\n\t\t按任意键返回查询菜单:
inta=0,i,j,findmark;
//findmark为查找结果标志
//intfindmark=0,delmark=0;
\n\t\t请输入要删除学生姓名:
for(i=a;
if(findmark=strcmp(people[i].name,name)==NULL)//找到一条符合条件的记录
//findmark++;
\n\t\t以下是您要删除的学生纪录:
\n\t\t是否删除?
(y/n)"
if(getch()=='
{
for(j=i;
j<
len-1;
j++)
people[j]=people[j+1];
len--;
i--;
//delmark++;
\n\t\t删除成功"
if((i+1)<
len)
{
printf("
\n\t\t是否继续删除相同姓名的同学信息?
//是否删除同名纪录
if(getch()=='
{
a=i;
continue;
//删除上一条记录之后搜索是否有同名纪录
}
}
}//endif
if((i+1)<
//不删前一条纪录,删当前纪录
if(getch()=='
a=i;
continue;
}
}//endif
continue;
}//endfor
if(!
findmark)//没有找到任何符合条件的记录
\n\t\t没有符合条件的记录!
\n\t\t是否继续删除?
//无同名纪录,是否继续删除其他纪录
del();
//继续删除其他纪录
voidsave()//写入文件
if((fp=fopen("
\n\t\t文件打开失败"
for(i=0;
if(fwrite(&
people[i],sizeof(structrecord),1,fp)!
=1)
\n\t\t写入文件错误!
fclose(fp);
//关闭文件指针
\n\t\t通讯录文件已保存,按任意键继续..."
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 杨惠明 数据结构课程设计 通讯录的制作 数据结构 课程设计 通讯录 制作