通讯录的数据结构课程设计

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

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

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

资源描述

第1页共17页湖南商学院《数据结构》课程设计(实习)报告题目通讯录姓名:蒋妤婷学号:090910108专业:电子信息工程班级:电信0903指导教师:梁英老师职称:副教授通讯录1设计任务与要求软件设计课程设计是学习完《数据结构》课程后进行的一次全面的综合性实践过程,其目的在于为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生分析解决实际问题的能力。提高学生实践编程的能力。第2页共17页这次的课程设计,我主要是设计一个通讯录,包含编号、姓名、单位、通信地址、邮箱和联系电话等基本信息。而通讯录这个程序是一个简单的通讯管理系统。这个程序不仅要包含创建通讯录中包含的编号、姓名、单位、通信地址、邮箱和联系电话等基本信息,还应具有数据录入、删除、修改、浏览、查找、排序以及数据保存等功能。2系统功能描述一个通讯录包含编号、姓名、单位、通信地址、联系电话等基本信息,同时应该具有以下功能:1、录入信息:将录入的信息导入链表。2、删除:将指定的信息(按姓名)删除并保存。3、修改:将指定的信息(按姓名)修改并保存。4、浏览:将入的全部信息显示出来。5、查找:按姓名查找指定的信息。6、保存:保存所录入,修改,删除,排序的信息。3系统总体设计3.1模块划分程序设计一般由两部分组成:算法和数据结构,合理地选择和实现一个数据结构和处理这些数据结构具有同样的重要性。在通讯录管理程序中,由于预计记录数相对于一个单位的学生人数或职工人数来说不会太大,除了能够增加、保存外,更多的情况是查询,所以用静态数组保存数据,实现查询。首先,定义一下各个标准库函数,建立一个结构体数组,定义各个功能所需的函数等。然后设置主函数,程序采用模块化设计,主函数程序的入口,各模块独立,可分块调试,均由主函数控制调用。控制功能的实现通过循环执行一个开关语句,该语句的条件值是通过调用主菜单得到的返回值(head),根据该值,调用相应得各功能函数。分别编写showmenu()菜单,Appenditem()添加条目,print输出条目,Finditem1()查找条目(按姓名),Correct()修改信息,Removeitem()删除信息,Saveandfree()保存到文件等函数。第3页共17页系统包括的功能模块,模块功能描述,各模块间的层次结构(即相互调用关系)以及模块之间的信息交换问题。最终成为一个整体。3.2功能分析本程序是一个简单的通讯管理系统。程序具有数据录入、删除、修改、浏览、查找、排序以及数据保存等功能。创建通讯录包括编号、姓名、单位、通信地址、邮箱和联系电话等基本信息。4系统详细设计4.1定义库函数#includestdio.h#includestring.h#includestdlib.hstructTelephone{charnumber[200];charname[20];charfia[20];charaddrass[20];charmail[20];chartelephone[20];structTelephone*next;}student[50];typedefstructTelephoneTEL;TEL*head=NULL;4.2定义功能函数:voidshowmenu();/*菜单*/voidAppenditem();/*添加条目*/voidprint();/*输出条目*/voidFinditem1();/*查找条目(按姓名)*/voidCorrect();/*修改条目*/voidRemoveitem();/*删除信息*/voidSaveandfree();/*保存到文件*/voidOpen();/*打开文件*/第4页共17页4.3函数编制(1)首先编制菜单,设置一个Open()函数,打开文件。showmenu()菜单函数主要运用一个开关语句就能实现,菜单有7个选项,随便选择一个选项就能直接进入所要进的函数,如程序charch;Open();/*打开文件*/while(1){showmenu();/*显示菜单*/scanf(%c,&ch);switch(ch){case'1':Appenditem();/*添加条目*/break;case'2':print();/*输出条目*/break;case'3':Finditem1();/*查找条目1.按姓名*/break;case'4':Removeitem();/*删除信息*/print();/*输出删除后的结果*/break;case'5':Correct();/*修改信息*/break;case'0':Saveandfree();/*保存并释放内存*/exit(0);/*退出*/break;default:printf(选择错误!);break;}}}然后编制输出函数,使其输出菜单选项。第5页共17页(2)编制Appenditem()添加条目函数。首先建立2个结构体指针*p1,*p2.并且利用p1=(TEL*)malloc(sizeof(TEL))申请结点,然后输入一系列信息,如编号、姓名、单位、通信、地址、邮箱、联系、电话等信息。最后申请空间将其保存。(3)编制print()输出函数,此函数主要是通过结构体指针实现的,将输入的数据一次通过printf将其显示出来。(4)编制Finditem1()查找函数。建立结构体指针TEL*p;并且定义一个数组charfindname[20];利用比较函数strcmp(),比较所要查找的节点中的姓名。如果输入的姓名不存在,则只输出基本行,即编号、姓名、单位、通信、地址、邮箱、联系、电话。如果存在则输出信息。如for(p=head-next;p!=NULL;p=p-next){if(strcmp(p-name,findname)==0)printf(%s\t%s\%s\t%s\t%s\t%s\n,p-number,p-name,p-fia,p-addrass,p-mail,p-telephone);}(5)Correct()函数旨在更改通讯录中的信息。运用这个函数时先按姓名查找要更改的信息,利用比较函数strcmp(),比较所要查找的节点中的姓名。找到之后再重新输入编号、姓名、单位、通信、地址、邮箱、联系、电话,并且覆盖原来的内容。(6)Removeitem()函数用来删除信息,先按姓名查找要删除的信息。利用比较函数strcmp(),比较所要查找的节点中的姓名。找到之后释放姓名所在的结点。如果不存在则输出:“没有要删除的对象”。此函数分3种情况,删除头结点,删除中间或尾结点。所需算法不一样。算法如下if(strcmp(p-name,findname)==0){if(p==head)head=p-next;/*删除头结点*/elsepr-next=p-next;/*删除中间或尾结点*/free(p);}elseprintf(没有要删除的对象\n);第6页共17页(7)Saveandfree()函数用来保存链表信息到文件并释放内存空间,主要运用文件函数实现。先将文件以“wb+”方式打开,再利用循环和fwrite()函数将内容写入文件中,写完之后关闭文件。因为信息已保存,所以还要释放链表空间。(8)Open()函数用来打开已存在的文件,它的功能是读取以存储的文件内容,在利用print()函数显示出来。5系统实现与测试图1运行后选择1.录入信息1第7页共17页图2运行后选择1.录入信息2图3运行后选择2.输出信息第8页共17页图4运行后选择3.按姓名查询图5运行后选择4.修改信息第9页共17页图6运行后选择5.修改信息图7运行后选择0.保存并退出6课程设计总结课程设计是培养学生综合运用所学知识发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。在课程设计的这几天里我感觉自己学到很多很多的的东西,课程设计不仅使我们巩固了以前在C程序设计和数据结构中所学过的知识,而且也让我们学到了很多在书本上所没有学到过的知识。通过这些日子的课程设计,我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中第10页共17页得出结论,才能提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到很多问题,一些程序学的好的同学给了我很多的帮助。通过课程设计,也发现了自己的不足之处:对以前C程序设计和数据结构所学过的知识理解得不够深刻,掌握得不够牢固,学的不够扎实,感觉都没有真正学到些什么实用的东西,很多东西都不是很明白。所以这次课程设计做的有点艰辛,但是我却感觉自己还确实是收获了很多,这次课程设计也的确让我受益匪浅。参考文献1谭浩强,张基温.C语言程序设计教程(第3版)[M].北京:高等教育出版,20062吕凤煮.C语言基础教程——基础理论与案例[M].北京:清华大学出版社,20053黄明、梁旭、万洪莉.C语言课程设计[M].北京:电子工业出版社,20064郭宁,郑小玲.管理信息系统[M].北京:人民邮电出版社,20065赵池龙,杨林,陈伟.实用软件工程[M].北京:电子工业出版社,2006附录#includestdio.h#includestring.h#includestdlib.hstructTelephone{charnumber[200];charname[20];charfia[20];charaddrass[20];charmail[20];chartelephone[20];structTelephone*next;}student[50];typedefstructTelephoneTEL;TEL*head=NULL;voidshowmenu();/*菜单*/voidAppenditem();/*添加条目*/voidprint();/*输出条目*/第11页共17页voidFinditem1();/*查找条目(按姓名)*/voidCorrect();/*修改条目*/voidRemoveitem();/*删除信息*/voidSaveandfree();/*保存到文件*/voidOpen();/*打开文件*/main(){charch;Open();/*打开文件*/while(1){showmenu();/*显示菜单*/scanf(%c,&ch);switch(ch){case'1':Appenditem();/*添加条目*/break;case'2':print();/*输出条目*/break;case'3':Finditem1();/*查找条目1.按姓名*/break;case'4':Removeitem();/*删除信息*/print();/*输出删除后的结果*/break;case'5':Correct();/*修改信息*/break;case'0':Saveandfree();/*保存并释放内存*/exit(0);/*退出*/break;default:printf(选择错误!);break;}}}第12页共17页/*菜单*/voidshowmenu(){printf(\n*********************通讯录**********************\n);printf(*\t1.录入信息*\n);printf(*\t2.输出信息*\n);printf(*\t3.按姓名查询*\n);printf(*\t4.删除信息*\n);printf(*\t5.修改信息*\n);printf(*\t0.保存并退出!*\n);printf(*************************************************\n);printf(\t请选择:\n);}/*添加条目*/voidAppenditem(){TEL*p1=NULL,*p2=NULL;p1=(TEL*)malloc(sizeof(TEL));/*申请结点*/printf(输入编号:\n);scanf(

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

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

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

×
保存成功