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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1页共31页GuangxiUniversityofScienceandTechnology课程设计报告课程名称:数据结构与编程综合实训课题名称:通讯录管理系统的设计与实现姓名:熊信萌学号:201400402003院系:计算机科学与通信工程学院专业班级:通信141班指导教师:周坚和完成日期:2015-12-18第2页共31页目录第一部分课程设计报告…………………………………………………………3第1章课程设计目的……………………………………………………3第2章课程设计内容和要求……………………………………………32.1问题描述………………………………………………………32.2设计要求…………………………………………………………4第3章课程设计总体方案及分析………………………………………53.1问题分析………………………………………………………43.2概要设计…………………………………………………………53.3详细设计…………………………………………………………63.4调试分析………………………………………………………183.5测试结果………………………………………………………183.6参考文献………………………………………………………22第二部分课程设计总结………………………………………………………23附录(源代码)…………………………………………………………………24第3页共31页第一部分课程设计报告第1章课程设计目的课程设计是实践教学中的重要环节,它以某一门课程为基础,涉及和课程相关的各方面知识,是一门独立于课程外的特殊课程。课程设计就是让所有同学对课程更全面的应用。本次实验项目“通讯录管理”就是针对数据结构的一门应用较为广泛的系统管理方法。1.实现意义本次实验应用性能很好,结构清楚,能随时添加、删除、查找、修改、输出联系人;并且可以用姓名、编号两种方式;而且其中增加了排序功能,使得插入之后排序为接下来的操作提供便利,操作更精确,以人性化的方式展现出来,效果十分突出。2.系统分析编程完成通讯录的一般性管理工作如通讯录中记录的增加、修改、查找、删除、输出、计算男女人数等功能。每个记录包含编号、姓名、性别、电话号码个人基本信息。用《数据结构》中的链表做数据结构结合c语言基本知识编写一个通讯录管理系统。本程序相对简单,使用方便,几乎不用特殊的命令,只需按提示输入即可。对于建立通讯录管理系统,则需了解并掌握数据结构与算法的设计方法,尤其在算法方面,链表及结点的联系,提高综合运用所学的理论知识和方法独立分析和解决问题的能力。第4页共31页第2章课程设计内容和要求2.1问题描述:设计并实现一个通讯录信息系统建立通讯录信息,信息包含编号、姓名、性别、电话;能够提供添加、删除和修改通讯录信息的功能;能够提供查询的功能;能够提供性别统计的功能;能够输出通讯录信息。2.2设计要求:要求设计程序输出如下:用链表实现学生信息管理系统,完成链表建立(至少包括50个节点),以及链表中信息(节点)的插入、查找、删除、修改、输出等操作,具体的模块要求如下(用“文本文件”按照自定义格式存储数据记录集)。第一个模块——主函数main()实现功能:根据菜单的选项调用各函数,并完成相应的功能。第二个模块——Menu()实现功能:显示提示菜单。第三个模块——Quit()实现功能:退出菜单。第四个模块——Create()实现功能:创建新的学生信息记录。第五个模块——Add()实现功能:增加新的学生信息记录,并返回菜单。第六个模块——Find()实现功能:按要求查询相关的信息,如果找到则显示该学生信息,如果未找到则提示文件中没有该信息,并返回菜单。第七个模块——Alter()实现功能:修改某条学生记录的信息,如果未找到要修改的学生记录,则提示系统中无此学生记录,并返回菜单。第八个模块——Delete()实现功能:删除某条学生记录,如果未找到要删除的学生记录,则提示该学生记录集中没有,并返回菜单。第九个模块——List()实现功能:能够分页显示数据记录集中的所有学生的记录。第十个模块——Searchbysex()实现功能:统计通讯录中男性人数及女性人数第5页共31页第3章课程设计总体方案及分析3.1问题分析:该程序是要将几个不同功能的函数用链表串联起来,来组成一个通讯录信息系统。因为链表能让数据既有独立性又便于数据之间的相互联系,也便于数据的添加和删除。用模块化程序设计的理念,对几个不同功能的函数,分块处理,这样有利于后期的调试及今后对功能的完善。菜单中的每一个选项对应着一个子程序,这个系统就由这些子程序建立起来。下面是这个程序的设计流程图:主菜单删除修改查询统计输出退出增加图3.1设计流程图3.2概要设计1.①构建一个结构体用于建立一个链表。②链表里面包括了要储存学生的信息的代号。③屏幕上显示出菜单。2.本程序包含8个函数:(1)主函数main()(2)创建函数LinkListCreateList()(3)增加通讯录人员函数voidAddNode(LinkListhead,ListNode*p)(4)删除某个学生信息的函数voidDeleteNode(LinkListhead)(5)查询通讯录人员的函数ListNode*ListFind(LinkListhead)(6)修改通讯录人员的函数voidAlterNode(LinkListhead)(7)性别统计的函数voidSeachbysex(LinkListhead)第6页共31页(8)通讯录输出函数voidPrintList(LinkListhead)(9)退出系统函数3.3详细设计实现概要设计中定义的所有数据类型及操作的伪代码算法1.节点类型和指针类型结构体里面的数据类型:typedefstruct//通讯录数据类型{charnumber[3];//编号charname[9];//姓名charsex[10];//性别chartelephone[11];//电话}DataType主函数voidmain(){intk,j=1;ListNode*l;while(j){printf(\t\t\t熊信萌通讯录课程设计\n);printf(\t\t\t********************************);printf(\n\t\t\t1.通讯录的建立);printf(\n\t\t\t2.通讯者的插入);printf(\n\t\t\t3.通讯者的查询);printf(\n\t\t\t4.通讯者的删除);printf(\n\t\t\t5.通讯者的修改);printf(\n\t\t\t6.通讯录的输出);printf(\n\t\t\t7.男生女生的人数);printf(\n\t\t\t0.退出通讯录管理系统);printf(\n\t\t\t******************************);printf(\n请选择菜单号(0--6):);scanf(%d,&k);getchar();switch(k){第7页共31页case1:{printf(\n1.通讯录的建立\n);head=CreateList();flag1=1;break;}case2:{if(flag1!=1){printf(请先建立表!);getchar();}else{printf(\n2.通讯者信息的插入\n);printf(\n编号姓名性别电话\n);printf(--------------------------------------\n);p=(ListNode*)malloc(sizeof(ListNode));/*申请新结点*/printf(输入编号:\n);scanf(%s,p-data.number);printf(输入姓名:\n);scanf(%s,p-data.name);printf(输入性别:\n);scanf(%s,p-data.sex);printf(输入电话:\n);scanf(%s,p-data.telephone);AddNode(head,p);printf(排序:\n);OrderList(l);//调用通讯录排序函数此处放在插入模块下面}break;}case3:{if(flag1!=1){printf(请先建立表!);getchar();system(cls);}else{第8页共31页printf(\n3.通讯录信息的查询\n);p=ListFind(head);if(p!=NULL){printf(编号姓名性别联系电话\n);printf(--------------------------------------------------\n);printf(编号:%s\n姓名:%s\n性别:%s\n联系电话:%s\n,p-data.number,p-data.name,p-data.sex,p-data.telephone);printf(---------------------------------------------------\n);}elseprintf(没有查到要查询的通讯者!\n);break;}case4:{if(flag1!=1){printf(请先建立表!);getchar();}else{printf(\n4.通讯录信息的删除\n);DeleteNode(head);/*删除结点*/}break;}case5:{if(flag1!=1){printf(请先建立表!);getchar();system(cls);}else{printf(\n5.通讯录信息的修改\n);AlterNode(head);}break;}case6:{第9页共31页if(flag1!=1){printf(请先建立表!);getchar();}else{printf(\n6.通讯录链表的输出\n);PrintList(head);}break;}case7:{if(flag1!=1){printf(请先建立表!);getchar();system(cls);}else{printf(\n7.通讯录中男生女生的人数\n);Seachbysex(head);}break;}case0:printf(是否退出(y/n)?);k=getchar();if(k=='y'||k=='Y'){j=0;printf(\n\n\t\t\t谢谢使用!谢谢使用!);printf(\n按任意键退出);}break;default:printf(\n输入有错,请重新输入!\n);printf(\n按任意键继续...);getchar();break;}}第10页共31页}}2.通讯录信息系统的具体操作:(1)添加:可以添加通讯录记录,依次输入编号、姓名、性别、电话号码后,会提示是否继续添加。LinkListCreateList()//尾插法建立带头结点的通讯录链表算法{LinkListhead=(ListNode*)malloc(sizeof(ListNode));//申请头结点ListNode*p,*rear;charflag='y';//结束标志置yrear=head;//尾指针初始指向头结点while(flag=='y'){p=(ListNode*)malloc(sizeof(ListNode));//申新结点printf(编号姓名性别电话\n);printf(-----------------------------------------------\n);printf(输入的编号:\n);scanf(%s,p-data.number);printf(输入的姓名:\n);scanf(%s,p-data.name);printf(输入性别:\n);scanf(%s,p-data.sex);printf(输入电话:\n);scanf(%s,p-data.telephone);rear-next=p;//新结点连接到尾结点之后rear=p;//尾指针指向新结

1 / 31
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功