电话簿管理系统课程设计Word下载.docx

上传人:b****3 文档编号:17058361 上传时间:2022-11-28 格式:DOCX 页数:25 大小:328.49KB
下载 相关 举报
电话簿管理系统课程设计Word下载.docx_第1页
第1页 / 共25页
电话簿管理系统课程设计Word下载.docx_第2页
第2页 / 共25页
电话簿管理系统课程设计Word下载.docx_第3页
第3页 / 共25页
电话簿管理系统课程设计Word下载.docx_第4页
第4页 / 共25页
电话簿管理系统课程设计Word下载.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

电话簿管理系统课程设计Word下载.docx

《电话簿管理系统课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《电话簿管理系统课程设计Word下载.docx(25页珍藏版)》请在冰豆网上搜索。

电话簿管理系统课程设计Word下载.docx

.

(2)浏览:

能够查看所有的电话簿信息。

(3)查询:

能实现指定姓名信息查询。

(4)修改:

能修改指定的电话簿信息。

(5)添加:

可以添加想要的信息。

(6)保存和打印:

能保存和打印电话簿信息。

(7)退出:

可以随意退出程序。

三、总体设计

1、模块化设计

为实现系统功能,本程序主要分为九个模块。

它们分别为:

输入一个信息、删除一个信息、查询一个信息、读取查找插入一个信息、查找、添加,修改一个信息,列出所有的信息、退出该程序。

这五个函数再通过主函数调用分别得以实现。

主函数,首先提供了程序运行时的友好界面,列出了清单,提供用户做出选择,以便决定使用电话簿的哪种功能。

然后,通过执行多分支选择语句——switch语句,分别实现其它各个函数的调用功能。

其它各个函数的功能分别如下:

(1)create建立电话簿

(2)delete删除电话号码

(3)print打印电话簿

(4)save保存电话簿

(5)load读取电话簿文件

(6)search查找电话号码

(7)append添加新的电话号码

(8)modify修改电话号码

(9)exit退出电话号码簿

2、模块调用图

四、详细设计

(1)数据结构设计

本程序中,运用了多种数据结构。

首先对于通讯录中各项详细信息的记录用了结构数组的形式,然后又运用链表动态地分配内存单元,通过指针的后移,把多个数据连成一个链,形成一个链表。

对于主要数据结构的举例如下:

结构数组:

struttel{

charname[10];

chartel[11];

chars[11];

};

链表:

ID*next;

ID*creat()

{

ID*head,*p1,*p2;

voidsave(ID*head);

ID*temp;

ID*deleter(ID*head);

ID*append(ID*head);

ID*modify(ID*head);

(2)模块接口设计

由于本程序中大部分运用了链表这一数据结构,函数中存在很多指针,所以这个程序中被调用的函数都是空类型的,但这并没有影响最终结果的输出,反而使得函数调用的过程更加简便。

本程序执行的入口是main函数,然后在main函数中首先调用了creat函数,这就实现了对通讯录中的数据进行录入。

接下来用switch语句实现对各个函数的调用。

通过对链表的使用,可以使得每一次的函数调用都能得到返回值。

最后,再从main函数中结束整个程序的运行。

(3)部分函数细节

print函数,功能:

打印用户已经输入过的电话信息,系统若无法读取原信息,则给用户相关提示:

“当前链表为空,请先创建新的链表或者加载文件”。

voidprint(ID*head)

ID*temp;

temp=head;

system("

cls"

);

printf("

姓名:

\t电话号码:

\n"

if(head==NULL)

{

当前链表为空,请先创建新的链表或者加载文件\n"

}

else

while(temp!

=NULL)

%s\t%s\n"

temp->

name,temp->

tel);

temp=temp->

next;

}

search函数,用户通过提示输入待查姓名的首字母,系统会根据用户输入内容做判断,并给出相应的提示:

"

对不起,未能找到符合条件的记录”,或"

查找完毕,是否重新查询?

voidsearch(ID*head)

欢迎使用查找功能,只需要输入待查姓名的首字母:

ID*p;

intflag,searchflag=1;

charc,choice;

while(searchflag)

flag=0;

请输入需要查找姓名的首字母:

scanf("

%c"

&

c);

getchar();

p=head;

while(p!

if(p->

name[0]==c)

%s\t电话号码:

%s\n"

p->

name,p->

flag=1;

p=p->

if(flag==0)

对不起,未能找到符合条件的记录\n"

Y/N?

%s"

choice);

if(choice=='

Y'

||choice=='

y'

searchflag=1;

searchflag=0;

五、调试与测试

(1)调试过程中的主要问题

由于本程序是分模块设计的,所以运行时选择完任务并且执行完任务后,又会继续回到用户选择界面,供用户继续选择任务并执行任务。

对于本程序的调试运行,总体上情况良好。

但是,其中也出现了一些小问题。

我发现的主要问题有:

对于本程序来说不能实现保存,程序在下一次运行的时候便要从新输入。

(2)测试结果的分析与讨论

用户界面:

共九个函数,用户根据数字提示进行操作。

图5-1

创建电话簿

图5-2

打印电话簿

图5-3

保存电话簿

图5-4

读取电话簿

图5-5

删除电话号码

图5-6

插入新号码

图5-7

查找电话号码

图5-8

修改电话号码

图5-9

六.实习总结

课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。

通过三周的课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次真真的做程序设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表……通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。

我做的是通讯录管理系统的课程设计,虽然是很简单的一个小的程序,但对我来说却是一个很大的困难。

更加是第一次做课程设计,所以第一天下午在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。

可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。

开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。

又经过几天的努力,终于把程序完成了,尽管程序还是有很多功能上的欠缺和漏洞,可我还是很高兴的。

无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。

在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。

因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!

参考文献

[1]郭有强,《C语言程序设计》,清华大学出版社。

[2]谭浩强,《C程序设计》,清华大学出版社。

[3]刘振安,孙忱,刘燕君,《C程序设计课程设计》,机械工业出版社。

[4]汪诗林,《数据结构算法与应用》,机械工业出版社。

致谢辞

在这次课程设计的撰写过程中,我得到了很多人的帮助。

首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次课程设计的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。

在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。

其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计商的难题。

同时也感谢学院为我提供良好的做毕业设计的环境。

最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学!

源程序代码

#include<

stdio.h>

stdlib.h>

string.h>

ctype.h>

mem.h>

conio.h>

#defineIDstructtel

structtel

ID*next;

};

inttotal=0;

charsaveflag;

head=p1=p2=NULL;

欢迎使用\n"

while

(1)

p1=(ID*)malloc(sizeof(ID));

请输入姓名,以#作为结束标志\n"

p1->

name);

if(strcmp(p1->

name,"

#"

)==0)

if(total==0)

{

您输入了0条记录,单链表没有创建\n"

free(p1);

return(head);

break;

请输入电话号码:

head=p1;

p2=p1;

p2->

next=p1;

total++;

next=NULL;

新建电话簿成功,共有%d个联系人,是否存盘?

Y/N"

total);

saveflag);

if(saveflag=='

||saveflag=='

save(head);

请在推出程序之前,保存当前的工作!

returnhead;

voidprint(ID*head)

voidsave(ID*head)

FILE*fp;

ID*t;

if((fp=fopen("

tel.txt"

"

w"

))==NULL)

文件打开失败!

getch();

exit

(1);

正在保存文件,请稍后...\n"

t=head;

while(t!

fwrite(t,sizeof(ID),1,fp);

t=t->

fclose(fp);

文件保存成功!

ID*load()

ID*t1,*t2,*head=NULL;

charch;

r"

没有该文件\n"

//exit

(1);

ch=fgetc(fp);

if(ch==EOF)

文件为空,请重新建立一个电话簿\n"

return(head);

文件正在读取中...\n"

rewind(fp);

t1=(ID*)malloc(sizeof(ID));

head=t1;

while(!

feof(fp))

if(fread(t1,sizeof(ID),1,fp)!

=1)

t1->

next=(ID*)malloc(sizeof(ID));

t2=t1;

t1=t1->

t2->

文件读取完毕\n"

ID*deleter(ID*head)

ID*p,*q;

chars[11],choice;

请输入要删除的电话号码:

s);

q=p=head;

while(strcmp(p->

tel,s)&

&

p!

q=p;

if(p==NULL)

\n对不起,记录中没有电话号码:

姓名:

%s\t电话号码:

是否删除?

按任意键删除...\n"

if(p==head)

head=p->

q->

next=p->

free(p);

\n已经删除了电话号码:

请保存文件!

(按4保存文件)\n"

ID*append(ID*head)

{

ID*temp,*p1,*p2;

插入操作开始!

!

temp=(ID*)malloc(sizeof(ID));

请输入姓名:

请输入电话号码:

if(head==NULL)

head=temp;

temp->

}

else

p1=head;

while(p1!

=NULL)

p1=p1->

next=temp;

插入成功"

}

ID*modify(ID*head)

ID*p1,*p2;

intmode;

charstr[10];

请输入要修改记录的姓名:

str);

while(p1!

name,str)==0)

1.姓名:

%s\t2.电话号码:

name,p1->

请选择要修改选项:

%d"

mode);

if(mode==1)

请输入修改后的姓名\n"

elseif(mode==2)

请输入修改后的电话号码\n"

输入有误!

if(p1==NULL)

未找到符合要求的记录!

intmain()

ID*head=NULL;

intchoice;

\t*************电话簿管理系统*************\n"

\t**\t1create建立新的电话簿**\n"

\t**\t2deleter删除电话号码**\n"

\t**\t3print打印电话簿**\n"

\t**\t4save保存电话簿**\n"

\t**\t5load读取电话簿文件**\n"

\t**\t6search查找电话号码**\n"

\t**\t7append添加新的电话号码**\n"

\t**\t8modify修改电话号码**\n"

\t**\t9exit退出电话号码簿**\n"

\t\t请选择1-9之间的操作:

switch(choice)

case1:

head=creat();

break;

case2:

head=deleter(head);

case3:

print(head);

case4:

case5:

head=load();

case6:

search(head);

case7:

head=append(head);

case8:

head=modify(head);

case9:

exit(0);

default:

printf("

选择错误,请输入1-9之间的数字进行选择\n"

return0;

蚌埠学院本科学生课程设计任务书

题 目

电话簿管理

1、课程设计的目的

利用单链表实现电话簿管理,,掌握C语言中的结构体、链表,指针、函数(系统函数,自定义函数)等C语言知识。

2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)

一、用C实现一个电话簿管理小程序。

具有加入、删除、显示

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

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1