课程设计报告课程名称C语言程序设计课题名称简单的通讯录程序设计专业电气工程及其自动化班级1281班学号201213010132姓名姚景昌指导教师王颖2013年6月20日湖南工程学院课程设计任务书课程名称《C语言程序设计》课题通讯录课程设计专业班级电气1281学生姓名姚景昌学号201213010132指导老师王颖审批王颖目录一、绪论........................................................4二、需求分析....................................................61、系统功能需求分析:..........................................62、总体设计思路:..............................................6三、概要设计....................................................7四、详细设计....................................................81、通讯录:....................................................82、工作流程图:...............................................10五、测试数据及其结果分析.......................................141、测试:.....................................................142、功能模块的调试及测试:.....................................20六、课程设计总结...............................................22七、附录.......................................................241.源程序......................................................242.参考文献....................................................34一、绪论1、《C语言数据结构课程设计》是我国高校计算机相关专业在近几年来所面临的一个新课题。自问世以来,以其功能丰富多彩、应用面广、表达能力强、使用灵活方便和可移植性好多等特点,一直是最受欢迎、最活跃的高级语言之一。时间就是金钱,但是就是在一些琐碎的事上面浪费了大量的时间,例如查询资料之类.如果我们把浪费的时间用于其他方面,势必会有更大的收益.应此需求,为使广大教师掌握更多的时间,相应的开发出此软件为学生成绩管理软件系统.而编写详细设计说明书是软件开发过程必不可少的部分,其目的是为了使开发人员在完成概要设计说明书的基础上完成概要设计规定的各项模块的具体实现的设计工作。本软件属于绿色软件,适合任何层次的用户,因此本说明书的预期读者范围相当广。笔考提出用数据结构实验来深化课程设计的观点,并对此进行一系列的论述。强调首次设计的重要性,就如何进行选题,调动学生产生浓厚的兴趣,发挥团队精神与运用综合知识的能力等方面采取具体的措施,以其达到课程设计的目标,为今后从事项目开发积累经验。本次设计,设计一个“通讯录管理系统”,使其具有数据插入、修改、删除、显示和查询等功能。[关键词]:C语言;数据结构;通讯录;经验;兴趣2、引言:数据结构是一门理论性强、思维抽象、难度较大的课程,是基础课和专业课之间的桥梁。该课程的先行课程是计算机基础、程序设计语言、离散数学等,后续课程有操作系统、编译原理、数据库原理、软件工程等。通过本门课程的学习,我们应该能透彻地理解各种数据对象的特点,学会数据的组织方法和实现方法,并进一步培养良好的程序设计能力和解决实际问题的能力,而且该课程的研究方法对我们学生在校和离校后的学习和工作,也有着重要的意义。数据结构是计算机科学与技术专业的一门核心专业基础课程,在该专业的课程体系中起着承上启下的作用,学好数据结构对于提高理论认知水平和实践能力有着极为重要的作用1。学习数据结构的最终目的是为了获得求解问题的能力。对于现实世界中的问题,应该能从中抽象出一个适当的数学模型,该数学模型在计算机内部用相应的数据结构来表示,然后设计一个解此数学模型的算法,再进行编程调试,最后获得问题的解答。基于此原因,暑期放假前我们开设了数据结构课程设计。针对数据结构课程的特点,着眼于培养我们的实践能力。实习课程是为了加强编程能力的培养,鼓励学生使用新兴的编程语言。相信通过数据结构课程实践,无论是理论知识,还是实践动手能力,同学们都会不同程度上的提高。3、设计目的:设计“通讯录管理系统”使其具有数据插入、修改、删除、显示和查询等功能。使学生进一步理解和掌握课堂上所学各种基本抽象数据类型的逻辑结构、存储结构和操作实现算法,以及它们在程序中的使用方法。使学生掌握软件设计的基本内容和设计方法,并培养学生进行规范化软件设计的能力。使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。其功能包括以下各项:建立学生信息,每个通讯者的信息包括:姓名、电话号码、QQ、类别(小学,初中,高中,大学);新增通讯录信息;根据姓名,电话号码,QQ等查找该通讯者的信息并输出;输入通讯者的姓名,进行查找并修改信息,若不存在该通讯者,则提示说明;根据姓名删除指定信息;显示全部的通讯者信息;能够将输入信息导出文件,同时能把文件导入到内存中;退出整个系统操作。二、需求分析设计题目及要求:◆建立通讯录信息,信息至少包含学号、姓名、年龄、电话、工作单位、电子邮箱等;◆能够提供添加、删除和修改通讯录信息的功能;◆能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询;◆将通讯录保存在文件中;◆能够按表格方式输出通讯录信息。1、系统功能需求分析:主要包含一下多种功能:添加:添加通讯录记录显示:显示通讯录记录删除:删除通讯录记录查询:查询通讯录记录修改:修改通讯录记录保存:将信息保存到文件2、总体设计思路:本系统首先设计出了主函数,然后根据去要实现的功能分别设计拉,显示、删除、查找、修改、添加功能的子函数。在显示的函数设计过程中首先运用拉文件的读取等必要的知识通过把文件的内容读取到内存然后打印出来。删除函数的设计是首先从文件内找到要删除的人,然后通过写一个实现删除目的的FOR循环将该人从内存里删除,然后再用写的方式打开文件,将内存内的信息写入文件,实现删除。查找也是先打开文件,用一个字符串对比的方法找出用户要查找的人,然后打印出来。修改也大体和删除相同,添加函数在设计时通过申请一片空间,然后通过指针将需要添加的信息添加进去,从而实现添加功能。三、概要设计系统功能模块图:添加:可以添加通讯录记录,依次输入学号、姓名、年龄、电话号码、工作单位、电子邮箱后,会提示是否继续添加。显示:可以以表格形式输出所有通讯录里的记录删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容查询:可以选择用姓名、电话、地址三种方式查询修改:输入欲修改的那个人的名字后,再依次输入学号、姓名、年龄、电话号码、工作单位、电子邮箱即可完成修改保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件四、详细设计1、通讯录:typedefstruct{charscore;/*编号*/charname[10];/*姓名*/charsex;/*性别*/charnum[15];/*电话号码*/charemail[20];/*邮箱*/charage[8];/*年龄*/charadds[20];/*住址*/}Person;voidmain()/*主函数*/{intn=0;for(;;){switch(menu_select()){case1:printf(\n\t添加记录到通讯录\n);/*添加记录*/n=Input(pe,n);break;case2:printf(\n\t\t\t通讯录记录表\n);/*显示记录*/Display(pe,n);break;case3:printf(\n\t从通讯录中删除记录\n);n=Delete_a_record(pe,n);/*删除记录*/printf(\t);system(pause);break;case4:printf(\n\t在通讯录中查找记录\n);Query_a_record(pe,n);/*查找记录*/printf(\t);system(pause);break;case5:printf(\n\t修改通讯录中的记录\n);Change(pe,n);/*修改数据*/printf(\t);system(pause);break;case6:printf(\n\t保存功能\n);WritetoText(pe,n);/*保存数据*/printf(\t);system(pause);break;case0:printf(\n\t\t谢谢使用,再见!\n);/*结束程序*/printf(\n\t\t);system(pause);exit(0);}}}2、工作流程图:①添加:添加通讯录记录②显示:显示通讯录记录③删除:删除通讯录记录④查询:查询通讯录记录先选择查询方式,以姓名查询方式为例⑤修改:修改通讯录记录五、测试数据及其结果分析1、测试:1.添加界面2.显示界面:3.删除界面:删除后,通讯录里的显示记录:4.查询界面:5.修改界面:修改后,通讯录里的显示记录:6.保存界面:问题思考:1.当我在进行删除、查询、修改、保存等功能时,以查询为例,输入名字按回车后,虽然会显示该人的所有记录,但是显示后,它马上自动消失了,还没来得及等我看内容。因此,向别人请教后,在一些地方加入了system(pause);这个语言,用来对某项操作完成后进行暂停。2.现在这个程序的界面个人感觉很清爽。但在最初,每次进行一项操作,运行窗口里的内容会一直保留着,感觉很杂乱,如下图(添加后,进行显示操作):之后,我去网上寻求解决办法,知道可以使用system(cls);这一语句可以解决这个问题,最后,修改成功。2、功能模块的调试及测试:(1)、当软件中总有输入人员信息时:1)、添加人员信息:根据提示输入1,添加记录到通讯录,依次为学号、姓名、性别、电话号码、工作单位、电子邮件,如果还要即系添加的话就非n或N即可,直到添加人员已达到你需要的为止再按n或N。2)、显示人员信息:1.查看全部信息时:根据提示输入2,按回车键,显示所有人员的所有信息。3)、删除人员信息:根据提示输入3,按回车键,输入需要删除人员姓名:例如(小明)按回车显示需要删除人员信息并删除。4)、查找人员信息:根据提示输入4,按回车键,输入要查找的人员名字:例如(于海)按回车键,显示查找到的人员信息。5)、修改人员信息:根据提示输入5,按回车键,输入需要修改的人员姓名:例如(小张)按回车键,根据提示输入修改的信息,修改完后按回车键,显示修改成功,然后可以在显示记录里面可以看到修改了的人员信息。(2)、当软件中总没有输入人员信息时:、添加人员信息:根据提示输入1,按回车键,输入添加的信息,学号、姓名、性别、电话号码、电子邮件、工作单位。输入完毕后按回车键,可以再根据提示使用查找功能。该操作可以看见刚才添加的人员信息。2)、、查看全部信息时:根据提示输入2,按回车键,没有任何人员的信息显示3)、删除人员信息:根据提示输入3,按回车键,请输入你想要删除记录中的名字:例如(小明)按回车,显示通讯录中没有此人。4)、查找人员信息:根据提示输入4,按回车键,再按1进行姓名查找,输入要查找的人员名字:例如(欧鸿)按回车,显示通讯录中没有此人。5)、修改人员信息:根据提示输入5,键按回车,输入需要修改的人员姓名、