课程设计报告课程名称C语言程序设计课题名称通讯录管理系统专业材料成型及控制工程班级材料1003班学号201002150323姓名裴超指导教师黄哲肖伟平郭芳2011年12月15日湖南工程学院课程设计任务书课程名称C语言程序设计课题通讯录管理系统专业班级材料1003班学生姓名裴超学号201002150323指导老师黄哲肖伟平郭芳任务书下达日期2011年12月15日任务完成日期2011年12月22日C语言课程设计任务书设计课题3:通讯录管理系统问题描述:通讯录管理系统主要管理用户通讯录的基本信息。在系统中,每个用户是一条记录,包括姓名、电话号码、通讯地址。系统要对一个有N个用户的通讯录统一进行管理。包括了用户信息的录入、显示、修改、查询等操作。1、功能设计要求:1)本系统采用结构体数组进行数据存储。用户结构体应该包括用户的基本信息(姓名、电话号码、通讯地址)。2)设计主菜单界面,确定函数个数。设计菜单应包含以下功能:录入信息(用户基本信息录入)显示(显示用户基本情况)修改信息(用户基本信息修改)查询(查询用户的基本信息)退出系统3)要求:建立两个结构体数组(或链表、文件),包括至少5个用户的必要信息,能对数据进行补充、修改。执行一个具体的功能之后,程序将重新显示菜单。3、要求:1)用C语言实现系统;2)函数功能要划分好(结构化程序设计);3)界面友好(良好的人机交互),加必要的注释;4)提供程序测试方案。目录一、系统介绍....................................................................................5二、总体设计....................................................................................52.1程序模块................................................................................52.2.函数分析................................................................................52.3.总体结构................................................................................6三.主要模块的实现........................................................................6四.程序调试..................................................................................10五.总结与体会..............................................................................15六.源程序清单..............................................................................171一、系统介绍1、本系统采用结构体数组进行数据存储,信息包括编号、姓名及通讯地址;2、能够提供添加、浏览和修改通讯录的功能;3、能够提供不同方式查询的功能,可按姓名或电话查询;4、能够按表格的方式输出通讯录信息。二、总体设计2.1程序模块本函数主要设计了四个模块,分别是:添加函数:input()查找函数:search()修改函数:change()浏览函数:scan()2.2.函数分析Input()为输入函数,负责添加通讯录的信息;Search()查找函数,对通讯录中的信息进行查找;Change()函数为修改函数,用于修改成员信息;Scan()函数为浏览函数,用于浏览整个通讯录。22.3.总体结构三.主要模块的实现1、主函数主函数设计要求简洁,只提供部分提示语和函数的调用通讯录管理系统修改记录查找记录浏览记录添加记录32、添加函数为输入函数,负责添加通讯录的信息3、浏览函数以表格形式输出所有成员信息开始显示一系列功能选项输入n,判断n是否是0~4?根据n的值调用各功能模块的函数结束n开始输入信息是否继续返回主菜单ny45、查找函数对通讯录中的信息进行查找开始i=0i=m结束以表格形式输出信息yn开始显示修改联系人模块返回主菜单显示此人信息输入要修改人编号输入修改后的信息56、菜单函数对主要模块进行选择开始显示查询联系人模块显示“输入联系人姓名”输入‘1’显示详情显示“查无此人”是判断是否有此姓名?显示“输入联系人号码”输入‘2’显示详情显示“查无此号”是判断是否有此号码?输入‘0’返回主菜单否否6四.程序调试1、显示主菜单,用户通过各自要求对系统进行操作,如图表达式1表达式1表达式1表达式1表达式1调入添加联系人模块调入查询联系人模块调入修改联系人模块调入浏览联系人模块退出输入要选择的数字显示主菜单开始其他1234572、出现主菜单输入1,根据提示添加信息,如图3、判断是否继续添加信息,如图84、输入y,根据提示继续添加信息,如图91011五.总结与体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随12着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表……通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。我做的是通讯录系统,虽然是很简单的一个小的程序,但对我一个初学者来说却是一个很大的困难。更加是第一次做课程设计,所以第一天下午在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。特别是结构体,指针的部分,几乎是一片空白。不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以下一步就是开始正式的编程序了。不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法。经过一波三折,终于开始正式编程。编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强迫自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。所以认真仔细就是非常重要的了。开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,13自己进步的证明。通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前。参考文献[1]新视野IT培训教学研究组.全国计算机等级考试二级教程.中国地质大学出版社.2010年[2]贾宗璞,许合力.C语言程序设计.人民邮电出版社.2011年六.源程序清单#includestdio.h#includestring.h#includestdlib.h#includeconio.hstructperson{charname[20];chartel[20];14charadd[20];}p[20];charstr[20];charnum[20];intm=-1;charx,t;charmenu()//*目录*//{do{system(cls);printf(\n\n\n\n\n\n\n\t\t■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n);printf(\n\t\t■■■■■■1.添加记录----***----2.查找记录■■■■■■\n);printf(\n\t\t■■■■■■3.浏览记录----***----4.修改记录■■■■■■\n);printf(\n\t\t■■■■■■*********0.退出*********■■■■■■\n);printf(\n\t\t■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■\n);printf(\t\t请输入0-4:\n\t\t\t);x=getchar();}while(x!='1'&&x!='2'&&x!='3'&&x!='4'&&x!='0');returnx;}voidinput()//*添加纪录*//15{inti;charj;system(cls);printf(请输入用户的姓名、电话和地址\n);for(i=m+1;i20;i++){scanf(%s%s%s,&p[i].name,&p[i].tel,&p[i].add);printf(姓名:%s\n电话:%s\n地址:%s\n,&p[i].name,&p[i].tel,&p[i].add);m=i;printf(是否继续(y/n));scanf(%s,&j);if(j=='y'){printf(请输入用户的姓名、电话和地址\n);continue;}elsebreak;}}charsearch()//*查找纪录*//{intflog=0,i;system(cls);printf(\n\n\n\n\n\n\n\t\t\t==============================\n);printf(\t\t\t\t0-返回主菜单\t\n);printf(\t\t\t\t1-按姓名查询\t\n);printf(\t\t\t\t2-按电话查询\t\n);printf(\t\t\t-------------------\n);16printf(\t\t\t请输入0-2:\n\t\t\t);t=getch();switch(t){case'0':break;case'1':system