ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:307.35KB ,
资源ID:8710573      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8710573.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(通讯录管理系统数据结构C语言版链表实现实验报告.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

通讯录管理系统数据结构C语言版链表实现实验报告.docx

1、通讯录管理系统数据结构C语言版链表实现实验报告Guangxi University of Science and Technology课程设计报告课程名称: 数据结构与编程综合实训 课题名称: 通讯录管理系统的设计与实现 姓 名: 熊信萌 学 号: 2003 院 系: 计算机科学与通信工程学院 专业班级: 通信 141 班 指导教师: 周坚和 完成日期: 2015-12-18 第一部分 课程设计报告3第1章 课程设计目的 3第2章 课程设计内容和要求 3 问题描述 3 设计要求4第3章 课程设计总体方案及分析 5 问题分析 4 概要设计5 详细设计6 调试分析 18 测试结果 18 参考文献

2、22第二部分 课程设计总结 23附录(源代码) 24第一部分 课程设计报告第1章 课程设计目的课程设计是实践教学中的重要环节,它以某一门课程为基础,涉及和课程相关的各方面知识,是一门独立于课程外的特殊课程。课程设计就是让所有同学对课程更全面的应用。本次实验项目“通讯录管理”就是针对数据结构的一门应用较为广泛的系统管理方法。1. 实现意义本次实验应用性能很好,结构清楚,能随时添加、删除、查找、修改、输出联系人;并且可以用姓名、编号两种方式;而且其中增加了排序功能,使得插入之后排序为接下来的操作提供便利,操作更精确,以人性化的方式展现出来,效果十分突出。2. 系统分析编程完成通讯录的一般性管理工作

3、如通讯录中记录的增加、修改、查找、删除、输出、计算男女人数等功能。每个记录包含编号、姓名、性别、电话号码个人基本信息。 用数据结构中的链表做数据结构结合c语言基本知识编写一个通讯录管理系统。本程序相对简单,使用方便,几乎不用特殊的命令,只需按提示输入即可。对于建立通讯录管理系统,则需了解并掌握数据结构与算法的设计方法,尤其在算法方面,链表及结点的联系,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。第2章 课程设计内容和要求问题描述:设计并实现一个通讯录信息系统 建立通讯录信息,信息包含编号、姓名、性别、电话; 能够提供添加、删除和修改通讯录信息的功能; 能够提供查询的功能; 能够提

4、供性别统计的功能; 能够输出通讯录信息。设计要求:要求设计程序输出如下:用链表实现学生信息管理系统,完成链表建立(至少包括50个节点),以及链表中信息(节点)的插入、查找、删除、修改、输出等操作,具体的模块要求如下(用“文本文件”按照自定义格式存储数据记录集)。 第一个模块主函数main()实现功能:根据菜单的选项调用各函数,并完成相应的功能。 第二个模块Menu()实现功能:显示提示菜单。 第三个模块Quit()实现功能:退出菜单。 第四个模块Create()实现功能:创建新的学生信息记录。第五个模块Add()实现功能:增加新的学生信息记录,并返回菜单。 第六个模块Find()实现功能:按要

5、求查询相关的信息,如果找到则显示该学生信息,如果未找到则提示文件中没有该信息,并返回菜单。 第七个模块Alter()实现功能:修改某条学生记录的信息,如果未找到要修改的学生记录,则提示系统中无此学生记录,并返回菜单。 第八个模块Delete()实现功能:删除某条学生记录,如果未找到要删除的学生记录,则提示该学生记录集中没有,并返回菜单。 第九个模块List()实现功能:能够分页显示数据记录集中的所有学生的记录。第十个模块Searchbysex()实现功能:统计通讯录中男性人数及女性人数第3章 课程设计总体方案及分析 问题分析:该程序是要将几个不同功能的函数用链表串联起来,来组成一个通讯录信息系

6、统。因为链表能让数据既有独立性又便于数据之间的相互联系,也便于数据的添加和删除。用模块化程序设计的理念,对几个不同功能的函数,分块处理,这样有利于后期的调试及今后对功能的完善。菜单中的每一个选项对应着一个子程序,这个系统就由这些子程序建立起来。下面是这个程序的设计流程图: 图 设计流程图 概要设计1.构建一个结构体用于建立一个链表。链表里面包括了要储存学生的信息的代号。屏幕上显示出菜单。 2.本程序包含8个函数: (1)主函数 main()(2)创建函数 LinkList CreateList() (3)增加通讯录人员函数void AddNode(LinkList head,ListNode

7、*p)(4)删除某个学生信息的函数 void DeleteNode(LinkList head)(5)查询通讯录人员的函数ListNode *ListFind(LinkList head)(6)修改通讯录人员的函数 void AlterNode(LinkList head)(7)性别统计的函数void Seachbysex(LinkList head) (8)通讯录输出函数 void PrintList(LinkList head)(9)退出系统函数 详细设计实现概要设计中定义的所有数据类型及操作的伪代码算法1. 节点类型和指针类型结构体里面的数据类型:typedef struct 讯 录 的

8、 建 立 n ); head=CreateList( ); flag1=1; break; case 2: if(flag1!=1) printf(请先建立表!); getchar(); else printf(n 2.通 讯 者 信 息 的 插 入 n); printf(n编号 姓名 性别 电话 n); printf(-n); p=(ListNode *)malloc(sizeof(ListNode); /*申请新结点*/ printf(输入编号:n); scanf(%s,p-; printf(输入姓名:n); scanf(%s,p-; printf(输入性别:n); scanf(%s,p-

9、; printf(输入电话:n); scanf(%s,p-; AddNode(head,p); printf(排序:n); OrderList(l); 讯 录 信 息 的 查 询 n); p=ListFind(head); if (p!=NULL) printf(编号 姓 名 性别 联系电话 n); printf(-n); printf(编号:%sn姓名:%sn性别:%sn联系电话:%sn, p-,p-,p-,p-; printf(-n); else printf(没有查到要查询的通讯者!n); break; case 4: if(flag1!=1) printf(请先建立表!); getch

10、ar(); else printf(n 4.通 讯 录 信 息 的 删 除 n); DeleteNode(head); /*删除结点*/ break; case 5: if(flag1!=1) printf(请先建立表!); getchar(); system(cls); else printf(n 5.通 讯 录 信 息 的 修 改 n); AlterNode(head); break; case 6: if(flag1!=1) printf(请先建立表!); getchar(); else printf(n 6.通 讯 录 链 表 的 输 出 n); PrintList(head); br

11、eak; case 7: if(flag1!=1) printf(请先建立表!); getchar(); system(cls); else printf(n 7.通讯录中男生女生的人数 n); Seachbysex(head); break; case 0: printf(是否退出(y/n)); k=getchar(); if(k=y|k=Y) j=0; printf(nnttt谢谢使用!谢谢使用!); printf(n按任意键退出); break; default: printf(n 输入有错,请重新输入!n); printf(n按任意键继续.); getchar(); break; 2.

12、 通讯录信息系统的具体操作: (1)添加:可以添加通讯录记录,依次输入编号、姓名、性别、电话号码后,会提示是否继续添加。LinkList CreateList() 开始输入y或n用if判断输入了y还是nyn输入要输入的资料将数据保存到指定的文件里结束按编号 n); printf( 2. 按姓名 n); printf(-n); printf(请 选 择1/2: ); p=head-next; 单选择int k,j=1; ListNode *l; while(j) printf(ttt 熊信萌 通 讯 录 课 程 设 计 n); printf(ttt*); printf(nttt 1通 讯 录 的

13、 建 立 ); printf(nttt 2通 讯 者 的 插 入 ); printf(nttt 3通 讯 者 的 查 询 ); printf(nttt 4通 讯 者 的 删 除 ); printf(nttt 5通 讯 者 的 修 改 ); printf(nttt 6通 讯 录 的 输 出 ); printf(nttt 7男 生 女 生 的 人 数 ); printf(nttt 0退出通讯录管理系统 ); printf(nttt); printf(n请选择菜单号(0-6):); scanf(%d,&k); getchar(); 注:具体源代码见附录 调试分析在写统计男女生人数的函数时,一开始只能

14、显示出女生的人数,而且我也没有用到strcmp,所以一直遍历整个链表不成功,后来请教了同学了之后才写出统计的函数。原来开始没有把整个链表传入该函数中。 测试结果1主菜单:2建立通讯录:3显示通讯录信息:4删除某个通讯录信息5查询通讯录记录:6修改通讯录信息7通讯录性别统计:9退出系统 参考文献 徐凤生.数据结构(C语言版).机械工业出版社, 2009年9月. 谭浩强.C程序设计(第三版).清华大学出版社.2009年1月.第2部分 课程设计总结 课程设计,使我懂得了做什么事情只要专心去做,就能够克服各种困难,达到自己的说想要的结果。当然了,同学们和老师的帮助必不可少。从理论中得出结论。此次课程设

15、计使我对自己的专业有了更深刻的认识,从而提高了自己实际动手能力和独立思考问题的能力,总而言之,此次课程设计让我受益颇丰。 该通讯录管理系统可以顺利高效运行,实现相关的要求,当然任何程序都存在不足,我这个程序也不例外:虽然努力在程序中添加了排序模块增加了程序的优化和可读性但是我可以将其中的排序模块的调用放到输出模块中,最后的输出可以更优化些,而不是放在插入后,这样只能根据指示一步一步去调用,相对繁琐一点,其次在程序中增加了修改模块,通过全局的头结点head可以任意修改相关信息,使程序更加可读性和灵活性。同时在这次课程设计中让我们认识到做程序设计这项工作中我门要具备以下素质: 良好的文档是正规研发

16、流程中非常重要的环节,缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。 此外编程是一项高要求的工作所以我们要有规范化,标准化的代码编写习惯通过这次编程我们深深的感受到对代码的变量命名,代码内注释格式,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同人员之间的协作。我们还要有模块化思维能力,模块化思维就是编程任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作。 在编制过程中,可能在实际

17、应用中有些功能不到位,对更多的功能也未能实现。我将不断提高自己,尤其在相关结点知识方面多努力去学习,多看书,多实践,争取今后在编制程序时,能够认真努力编写出有个性且可读性和应用性较强的数据结构系统。附 录源文件#include #include #include #include int flag1=0; 讯 录 的 建 立 n ); head=CreateList( ); flag1=1; break; case 2: if(flag1!=1) printf(请先建立表!); getchar(); else printf(n 2.通 讯 者 信 息 的 插 入 n); printf(n编号

18、姓名 性别 电话 n); printf(-n); p=(ListNode *)malloc(sizeof(ListNode); /*申请新结点*/ printf(输入编号:n); scanf(%s,p-; printf(输入姓名:n); scanf(%s,p-; printf(输入性别:n); scanf(%s,p-; printf(输入电话:n); scanf(%s,p-; AddNode(head,p); printf(排序:n); OrderList(l); 讯 录 信 息 的 查 询 n); p=ListFind(head); if (p!=NULL) printf(编号 姓 名 性别

19、 联系电话 n); printf(-n); printf(编号:%sn姓名:%sn性别:%sn联系电话:%sn, p-,p-,p-,p-; printf(-n); else printf(没有查到要查询的通讯者!n); break; case 4: if(flag1!=1) printf(请先建立表!); getchar(); else printf(n 4.通 讯 录 信 息 的 删 除 n); DeleteNode(head); /*删除结点*/ break; case 5: if(flag1!=1) printf(请先建立表!); getchar(); else printf(n 5.通

20、 讯 录 信 息 的 修 改 n); AlterNode(head); break; case 6: if(flag1!=1) printf(请先建立表!); getchar(); else printf(n 6.通 讯 录 链 表 的 输 出 n); PrintList(head); break; case 7: if(flag1!=1) printf(请先建立表!); getchar(); else printf(n 7.通讯录中男生女生的人数 n); Seachbysex(head); break; case 0: printf(是否退出(y/n)); k=getchar(); if(k

21、=y|k=Y) j=0; printf(nnttt谢谢使用!谢谢使用!); printf(n按任意键退出); break; default: printf(n 输入有错,请重新输入!n); printf(n按任意键继续.); getchar(); break; 头文件typedef struct 按编号 n); printf( 2. 按姓名 n); printf(-n); printf(请 选 择1/2: ); p=head-next; /假定通讯录表带有结点 scanf(%d,&t); if (t=1) printf(请输入所求的编号:); scanf(%s,number); while(p

22、 & strcmp(p-,number)next; if(p=NULL | strcmp(p-,number)0) p=NULL; /没有查到要查找的通讯者 else if (t=2) printf( 请输入要求的姓名:); scanf(%s,name); while(p&strcmp(p-,name)!=0) p=p-next; return p;void DeleteNode(LinkList head) /通讯录链表上的结点删除 char s; ListNode *p,*q; p=ListFind(head); /调用查找函数 if (p=NULL) printf(没有查到要删除的通讯者

23、!n); return; printf(%s %s %s %sn,p- ,p-,p-,p-; printf(真的要删除该结点吗(y/n) : ); scanf(%s,&s); if(s=y) q=head; while(p!=NULL & q-next!=p) q=q-next; q-next=p-next;/删除结点 free(p); /释放被删除的结点空间 printf(通讯者已被删除!n); return; printf(通讯者没有被删除!n); void AlterNode(LinkList head)/通讯录链表上的结点修改 char ch; ListNode *p,*q1; p=ListFind(head); if(p=NULL) printf(没有查到要修改的通讯者!n); return; els

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

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