当前位置:文档之家› c语言通讯录管理系统

c语言通讯录管理系统

一课程设计要求1通讯录要求惯例的信息结构体成员有:姓名,单位,电话,家庭住址。

2程序菜单为:************************MEUN***************************0.Enter record /*输入记录*/1.List the file /*显示全部记录*/2.Search record on name /*查找记录*/3.display record on name /*按序号显示记录*/4.Delete a record /*删除记录*/5.add record /*增加记录*/6.sort by name /*按姓名排序*/7.Quit /*退出*/3定义多个子函数与菜单对应:/***********以下是函数原型************/int menu_Select(); /*主菜单函数*/void Init();/*单链表初始化*/void Create();/*创建单链表,输入记录*/void List (ADDRESS t[],int n); /*显示全部记录*/void SearchByName (ADDRESS t[],int n); /*按姓名查找*/int Delete (ADDRESS t[],int n); /*删除记录*/int Delete (ADDRESS t[],int n); /*删除记录*/int Add (ADDRESS t[],int n); /*插入记录*/void SearchByIndex (ADDRESS t[],int n); /*按序号查找显示序列 */ void Sort(ADDRESS t[],int n); /*按姓名排序*/二功能框图图2.1图2.2查询功能流程图图2.3删除功能流程图三主要功能的实现1 结构体由于使用静态数组需要预先估计记录数,所以先预定义一个常数M 表示记录,也就是数组的大小,记录联系人的信息至少应有姓名、单位、电话。

所以定义每个数组元素的类型为结构体。

由于数组存储是采用顺序存放在内存空间中占用连续空间,所以若干条记录通讯录的管理实质就是对顺序存储的线性表的管理结点结构如下:struct student{char number[20];//用户序号char name[100];//用户姓名char danwei[100];//用户单位char phone[20];//电话号码char home[100];//家庭地址struct student *next;};2 main()主函数程序采用模块化设计,主函数是程序的入口各模块独立。

可分块调试均由主函数控制调用控制功能的实现通过循环执行一个开关语句,该语句的条件值是通过调用主菜单函数得到的返回值,根据该值调用相应的各功能函数。

同时设置一个断点。

即当返回值为一定条件时运行e xit()函数结束程序,以免造成死循环。

void main(){// FILE *fp1,*fp2;int c;//功能选择需要的号码system("cls");//system("color 2f");system("cls");struct student *head=NULL;while(1){face();printf("选择你需要操作的功能号码:");scanf("%d",&c);getchar();switch(c){case 0:head=append(head);break;case 1:print(head);break;case 4:head=del(head);break;case 2:search(head);break;case 3:searchByNumber(head);break;case 5:exit(0);break;default :printf("Enter error!!\n");}printf("*****************\n");printf("◇◆请按ENTER返回功能操作菜单◇◆\n");printf("*****************\n");getchar();system("CLS");}}3 menu_select()主菜单直接利用输出函数printf 输出字符串在屏幕上显示一个菜单并显示一个提示输入选项输入 0~5之间的数字,将此数字作为菜单函数的返回值返回主函数,主函数根据这个数字调用相应的功能函数,制作简便,操作简单界面如图1所示:4 enter()输入记录 输入记录时按照一条一行的格式输入,每个数据之间用空格分隔,较为清晰且能直接反映数据之间的关系,但由于 scanf 函数的特性,在输入时数据用回车分隔也是可以的,但与界面设计不吻合界面.如图2 5 list()显示所有记录 通讯录建立好后更频繁的操作是显示和查找记录本函数实现显示所有记录功能输出界面如图 3所示 四 调试1、先进行人工检查,即静态检查。

为了更有效地进行人工检查,所编的程序应力求做到以下几点:①应当采用结构化程序方法编程,以增加可读性;②尽可能多加注释,以帮助理解每段程序的作用;③在编写复杂的程序时不要将全部语句都写在main 函数中,而要多利用函数,用一个函数来实现一个单独的功能。

各函数之间除用参数传递数据外,尽量少出现耦合关系,这样便于分别检查和处理。

2、在人工检查无误后,再上机调试。

通过上机发现错误称为动态检查。

在编译时会给出语法错误的信息,调试时可以根据提示信息具体找出程序中出错之处并改正。

应当注意的是有时提示出错的地方并不是真正出错的位置,如果在提示出错的行找不到错误的话应当到上一行再找。

有时提示出错的类型并非绝对准确,由于出错的情况繁多且各种错误互有关联,因此要善于分析,找出真正的错误,而不要只从字面意义上找出错信息,钻牛角尖。

如果系统提示的出错信息很多,应当从上到下逐一改正。

有时显示出一大片出错信息往往使人感到问题严重,无从下手。

其实可能只有一二个错误。

3、在改正语法错误(包括“错误(error)”和“警告(warning)”)后,程序经过连接(link)就得到可执行的目标程序。

运行程序,输入程序所需数据,就可得到运行结果。

应当对运行结果作分析,看它是否符合要求。

有的初学者看到运行结果就认为没问题了,不作认真分析,这是危险的。

有时,数据比较复杂,难以立即判断结果是否正确。

可以事先考虑好一批“试验数据”,输入这些数据可以很容易判断结果正确与否。

例如解方程。

事实上,当程序复杂时很难把所有的可能情况全部都试到,选择典型的临界数据作试验即可。

4、运行结果不对,大多属于逻辑错误。

对这类错误往往需要仔细检查和分析才能发现。

可以采用以下办法:总之,程序调试是一项细致深入的工作,需要下功夫,动脑子,善于积累经验。

在程序调试过程中往往反映出一个人的水平,经验和态度。

希望大家给以足够的重视。

上机调试程序的目的决不是为了“验证程序的正确”,而是“掌握调试的方法和技术”,要学会自己找问题,这样慢慢自己就会写出错误较少的实用程序。

五总结课程设计是培养学生综合运用所学知识 ,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对我们的实际工作能力的具体训练和考察过程.随着科学技术发展的日新月异,当今计算机应用在生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的,而C语言又是最常见,功能最强大的一种高级语言,因此做好C语言课程设计是十分必要的。

回顾起此次课程设计,至今我们仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一周的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对一些前面学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体,指针,链表……通过这次课程设计之后,我们把前面所学过的知识又重新温故了一遍。

我做的是通讯录系统,虽然是很简单的一个小的程序,但对我一个初学者来说却是一个很大的困难。

更加是第一次做课程设计,所以第一天下午在机房做了一个下午却丝毫没有进展,最主要是不知从何开始,这个时候才知道上课老师们不厌其烦的教导是多么的宝贵,这个时候才后悔上课的时候没有认真的听讲。

可是现在一切都晚了,还好时间还算是充裕,只好拿出书本重新复习一下。

特别是结构体,指针的部分,几乎是一片空白。

不过经过几天的努力,大体上把课本上的知识点看了一遍,知识点也都基本是撑握了,所以下一步就是开始正式的编程序了。

不过毕竟是个新手,还是不知如何下手,于是就在网上下了一篇类似的程序,经过仔细的研究,终于读懂了C语言编程的基本过程和方法。

经过一波三折,终于开始正式编程。

编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强迫自己坚持下去,按照模块化思想,分部分的进行编写。

而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。

所以认真仔细就是非常重要的了。

开始的时候真的感觉编程是一件很无聊的事情,不过当一个程序运行成功的时候那种喜悦是无法言语的,那种成就感是无法比拟的。

又经过几天的努力,终于把程序完成了,尽管程序还是有很多错误和漏洞,不过还是很高兴的。

无论如何是自己的劳动成果,是自己经过努力得到的成绩,同时也是学习C语言的一次实践作业,自己进步的证明。

通过这次课程设计,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对C语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对C语言中经常出现的错误也不了解,通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。

相关主题