利用c语言实现电话簿管理系统课程设计.doc
《利用c语言实现电话簿管理系统课程设计.doc》由会员分享,可在线阅读,更多相关《利用c语言实现电话簿管理系统课程设计.doc(24页珍藏版)》请在沃文网上搜索。
1、目 录摘要3第一章前言4第二章 电话簿管理系统介绍52.1 流程图52.2 程序编写概要6第三章 主要功能实现73.1 删除功能设计73.2 添加功能设计7第四章源程序9第五章系统测试20第六章结语25致谢26参考文献26摘要 电话簿管理系统是利用单链表实现电话簿管理,进而掌握C语言中的结构体、链表,指针、函数(系统函数,自定义函数)等C语言知识。 本文通过利用模块化程序设计思想,使用单链表和结构体等编写出的可以实现存储、打印、删除等功能的电话簿管理系统。通过完成这个课程设计让我们熟悉并掌握在c语言中使用结构体、单链表,指针,函数,和模块化设计思想。关键词 结构体,链表,指针,函数第一章 前言
2、 在前面我们学习了c语言的一些基础知识对c语言有了初步的认识和了解,为了让我们更加全面地了解c语言程序设计的步骤和方法,在老师的指导下 我们进行了一次综合实训。设计一个简单的电话簿管理系统,可以存储,删除等电话号码。为了方便使用DEV-C+来编写程序,可以添加汉字备注方便理解程序。根据前面所学的单链表、指针、函数、结构体等知识在使用模块化设计思想去编写。设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范
3、化软件设计的能力。使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。其功能包括以下各项:1)数据包括:人名、电话号码。2)可对记录中的姓名和电话号码进行修改。3)可增加或删除记录。4)可显示所有保存的记录。第二章 电话簿管理系统介绍2.1 流程图电话簿管理系统因具备以下功能有流程图表示,如下图2.10电话簿管理系统新建一个电话簿插入新的记录打印所有记录读取文件保存当前输入的内容退出系统查找功能添加新记录图2.102.2程序编写概要1 主函数 main()主函数使用户进入电话簿管理系统主界面用户选择界面,用户可以选择要使用的功能并选择相应的选项进入该功能。使用print
4、f函数和switch case结构来编写主函数。2 creat()函数creat函数用来建立新的电话号码簿,用户可以通过它来向系统输入数据。为下面的操作提供数据。3 delete函数delete函数用来删除不需要的数据,可以用单链表来实现,并要记住用free函数来释放被删除链表的空间,避免浪费空间。4 save函数当需要保存已输入的数据时就需要用到save函数,该函数可以将数据存储到指定的地方为以后使用。5 load函数顾名思义load函数是将所存的数据从文件所在位置读取出来以便做打印等处理。6 search函数当存入很多文件时候,再用普通的方法打印输出所有数据再查找文件中的目标文件就会很麻烦
5、,这时你需要从已存文件中快速找出你所想要的用户的电话号码就要选择此功能,他可以快速找出你所输入用户名的电话号码,简单方便。7 append函数Append函数用来像已有的文件中添加新的电话号码文件。8 modify函数在你无意中或心急的时候很有可能将数据输入错误,所以你还需要具有修改数据的功能,将错误的数据重新输入在进行保存工作,确保数据的正确性,modify函数具有该功能。第三章 主要功能实现3.1 删除功能设计 单链表中的元素是可以删除的,要想删除指定的元素逻辑上是把它从单链表中分离出来,并调用free函数释放其储存空间。 算法如下: 删除链表中的第i个结点,就是要让其前驱的指针绕过该结点
6、,指向该结点的后续结点。假设指针P已经指向链表中的第i-1个结点,如图3.10所示。则删除ai结点最基本的操作可以用一条语句实现:p-next=p-next-next。ai+1NULLa1aiai-1 head p图3.10这样操作会浪费掉所有删除的结点空间。如果被删除的结点不再使用了,则释放其存储空间,因此需要按如下方式实现:temp=p-next;p-next=temp-next;free(temp);3.2 添加功能设计 链表的插入是指将一个结点插入到一个已有的链表中去。 算法如下: 首先产生新结点,并放入数据,然后搜索要插入的位置,再将结点连入到已有链表中。设指针p已经指向了ai-1结
7、点,且要插入结点(值为data)由s指向,如图3.20所示,则插入的操作由下面两个语句来实现。 s-next=p-next; p-next=s; 上面的两条插入语句顺序不可颠倒。 P ai-1 ai X data S 图3.20第四章 源程 序 #include #include #include #include /*不是c标准的文件。*/ #define ID struct tel struct tel char name10; char tel11; ID * next; ; int total=0; ID* create() ID *head,*p1,*p2; void save(ID
8、 *head); char saveflag; head=p1=p2=NULL; printf(欢迎使用电话簿管理系统VER1.0n); while(1) p1= (ID*)malloc(sizeof(ID); printf(请输入姓名,以#作为结尾n); scanf(%s,p1-name); if(strcmp(p1-name,#)=0) if(total=0) printf(你输入了0条记录,单链表没有创建.n); free(p1); return (head); else break; printf(请输入电话号码: n); scanf(%s,p1-tel); if(head=NULL)
9、 head=p1; p2=p1; else p2-next=p1; p2=p1; total+; p2-next=NULL; free(p1); printf(n新建电话号码簿成功,共有%d个联系人,是否保存?Y/N n ,total); getchar(); scanf(%c,&saveflag); if(saveflag=y|saveflag=Y) save (head); else printf(n请在退出程序之前,保存当前的编辑工作!n); return head; void print(ID *head) ID* temp; temp=head; system(cls);/*清屏*/
10、 printf(姓名: t电话号码:n); if(head=NULL) printf(当前链表为空,请先创建新的链表或者加载文件n); else do printf(%st%sn,temp-name,temp-tel); temp=temp-next; while(temp!=NULL); void save(ID *head) FILE *fp; ID* t ; /*定义一个可以移动的指针,作用:从头到尾遍历一遍单链表,向文件中写入*/ if (fp=fopen(telephone.txt,w)=NULL) printf(打开文件失败!n); getch(); exit(1); printf
11、(正在保存文件,请稍候.n); t=head; while(t!=NULL) fwrite(t,sizeof(ID),1,fp); t=t-next; fclose(fp); printf(文件保存成功n); ID * load() FILE *fp; ID *t1,*t2,*head=NULL; char ch; if(fp=fopen(telephone.txt,r)=NULL) /*判断文件是否存在*/ printf(打开文件失败!没有该文件n); getch(); exit(1); ch=fgetc(fp); /*判断文件是否为空*/ if(ch=EOF) printf(文件为空,请重
12、新建立一个电话簿n); return (head); else printf(文件正在读取中.n);rewind(fp); t1=(ID *) malloc(sizeof(ID); head=t1; while(!feof(fp) if(fread(t1,sizeof(ID),1,fp)!=1) break; /*如果没有读取的内容,则结束*/ t1-next=(ID *)malloc(sizeof(ID); t2=t1; t1=t1-next; t2-next=NULL; fclose(fp); printf(文件读取完毕n); return head; void search(ID* he
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 语言 实现 电话簿 管理 系统 课程设计
