计算机C语言课程设计报告1太原学院计算机工程系课程设计报告课程名称:数据结构课程设计姓名:苏建花学号:20140903336专业班级:计算机工程系网络三班指导教师:翟婷婷2015年12月30日计算机C语言课程设计报告2计算机工程系课程设计报告课程名称:C语言课程设计课程设计题目:通讯录管理系统班级:网络14-3班姓名:苏建花学号:20140903328目录(参考)1.设计目的与要求…………………………………………X1.1题目与设计要求……………………………………X1.2本程序涉及的知识点………………………………X2.功能设计………………………………………………X2.1总体设计……………………………………………X2.2详细设计……………………………………………X3.程序实现……………………………………………X3.1程序实现时应考虑的问题…………………………X3.2XX模块核心代码…………………………………X4.测试分析……………………………………………X4.1测试结果及分析…………………………………X4.总结…………………………………………………X参考文献………………………………………………X成绩:指导教师:(签名):计算机C语言课程设计报告31、设计目的与要求这次课程设计的目的在于:1.熟练的掌握C语言课程中所学的理论知识,并对其进行应用;2.通过综合C语言的基本知识来解决实际问题;3.加强分析和解决问题的能力;4.提高实践动手能力,将知识化为实际成果1.1题目与设计要求(1)题目:通讯录(2)设计要求a、建立通讯录信息,信息至少包含姓、名、电话号码、住址、分类(如同事、朋友、同学、家人等)等。b、该系统提供添加、删除、修改和查找功能,其中按姓名方式删除、修改,按姓名、姓氏方式查找。c、将通讯录保存在文件中。d、能够输出通讯录中的信息。1.2本程序设计的知识点(1)采用结构体数组。structPerson{chara[16];chars[16];chard[16];charf[24];structPerson*next;}stu;(2)运用函数之间的调用主函数可以调用子函数,子函数之间可以相互调用,子函数不能调用主函数,主函数可以多次调用一个子函数,也可以一次调用多个子函数。(3)利用指针变量structPerson*head;structPerson*p1,*p22、功能设计添加:添加通讯录记录修改:修改通讯录记录删除:删除通讯录记录查找:查询通讯录记录计算机C语言课程设计报告4显示:显示通讯录记录统计:统计通讯录数目2.1需求分析信息记录要存放到文件中去,因而要实现文件的输入输出操作;要实现数据的插入、删除、修改和显示功能,因而要实现插入、删除、修改和显示操作;要实现按人名或姓氏进行查询的功能,因而要提供查找操作;另外还应该提供键盘式选择菜单以实现功能选择。2.2总体设计整个系统可设计分为数据插入模块、数据修改模块、数据删除模块、数据显示模块、数据查询模块和数据统计模块2、3详细设计2.3.1、菜单函数菜单函数首先标出欢迎使用通讯录管理系,然后给出用户可选择的项目,用户可以通过选择该项前的代码来实现想要实现的功能,其流程图如图:个人通讯录管理系统添加查找修改统计显示删除退出姓名电话地址确定删除不删除计算机C语言课程设计报告52.3.2、添加通讯录将结构体数组分成几个数组分别对每个数组赋值,用while循环对不同地址的数组分别赋值。流程图如下(假设w=1)2.3.2、修改通讯录修改通讯录通过指针变量用另一个数据代替原先存在的数据,将新的数据存储在文件中,其流程图如下:(假设w=1)开始结束in输入添加的个数ni=0输入信息i=i+1添加函数流程图intii1||i7返回i结束开始输入选项1—7—666真假菜单函数流程图是否计算机C语言课程设计报告62.3.4、显示通讯录显示通讯录通过循环函数将全部的通讯录信息以此显示出来,其流程图如图:2.3.5、删除通讯录删除通讯录通过数组中该位置之后的数据存放位置向前移一位来实现删除功能,其流程图如下:开始结束i=1?无此相关信息输入要修改人的姓名,i输入新的信息修改函数流程图开始结束显示该文件中全部信息输入w1=w=4是否显示函数流程图是否计算机C语言课程设计报告72.3.6、查找通讯录(假设w=1)查找通讯录通过数组位置查找相关信息实现查找功能,其流程图如下:2.3.7、统计通讯录统计通讯录通过循环函数将全部的通讯录信息以此显示出来,(假设w=1)流程图Intii=1?好像没有此记录删除结束开始删除函数流程图是否结束输入ee=1?e=2?按姓氏查找按姓名查找开始输出信息否是否是查找函数流程图计算机C语言课程设计报告8如下:2.3.8、退出通讯录在使用完通讯录后,按7键便会退出系统,其流程图如下图所示:3、程序实现3、1程序实现时应该考虑的问题1.分析系统中的各个实体之间的关系及其属性和行为;2.根据问题描述设计系统的类层次;3.完成类层次中各个类的描述,包括属性和方法;4.完成类中各个成员函数的定义;5.在程序中应该考虑主函数与子函数之间的调用情况,数组的使用。w=7输出谢谢使用结束开始退出函数流程图返回()开始结束i=0i=i+1feof(fp)==0?00输出某文件总个数统计函数流程图否是计算机C语言课程设计报告96.完成系统的应用模块;7功能调试;8.完成系统总结报告以及系统使用说明书。注:各函数之间的调用关系,如下图所示:3、2源代码及说明(见附加)4、测试分析4.1测试结果及分析(以下列操作为例)进入系统后,系统会出现如下图:main函数Tianjia()tongji()chazhao()shanchu()xianshi()xiugai()Menu()调用计算机C语言课程设计报告10显示输入账号和密码:输入账号和密码后会进入主菜单页码:计算机C语言课程设计报告11在主菜单中输入1后,选择要操作的文件,选择同学,输入要添加的个数,输入姓名电话号码地址,结果如下图:在主菜单中输入2后,输入要修改人的姓名。系统找到后会提示输入新的姓名电话号码地址,结果如下图:在主菜单中输入3后,选择要操作的文件,选择查找的方式,。结果如下图计算机C语言课程设计报告12在主菜单中输入4后,输入要操作的文件,然后输入要删除的人的姓名,结果如下图:在主菜单中输入5后,选择要操作的文件,会显示出此文件中所有的信息,结果如下图:在主菜单中输入6后,输入要操作的文件,系统会统计出此文件中的总数,结果如下图计算机C语言课程设计报告13在主菜单中输入7后,“会显示谢谢您的使用,请按任意键退出”。在运行的过程中曾出现,每执行完一个操作返回主菜单後就无法再继续执行接下来的操作,后来我从网上搜了一下,当执行system(cls);时会清除屏幕,然后我就在多次的修改中将程序中多余的system(cls);语句删除后,程序终于可以正常运行。而且编译时会出现如下信息,但好在不影响程序的正常运行。5、总结这个课题是设计一个通讯录系统,该通讯系统能够较好的管理好我们的通讯录记录,具有添加、修改、查找、删除、显示和统计的功能,但是该系统依旧有漏洞,此程序必须按照系统提示的操作来执行,而且还有部分的功能缺陷,例如用户无法自行修改用户名和密码,必须使用系统分配的数据登陆系统。功能也不是很齐全,没有排序功能,没有加密功能,还需要进一步的更新,才能达到更好地效果。从刚开始的不只如何下手到最后看到自己的程序按自己的想法运行,心里时不时的有一种喜悦我在编写过程中,逐步的了解了程序模块化设计的思想含义。在整个程序设计的过程中语法的错误还是比较容易检查的,但是对于那些逻辑思维的问题方面的缺陷不易查出,因此常常出现系统提示没有错误但是仍然不能够正常运行的境况,尽管有很多不足之处,但我在整个系统程序设计的过程中,我可以感受到自己对C语言有了一定的掌握,对整体的把握度也提高了很多。此外编程是一项高精度需求的工作,所以我们要有规范化,标准化的代码计算机C语言课程设计报告14编写习惯。良好的编写习惯,不但有助于代码的纠错,也有助于各功能负责人员之间的协同合作。我们还要有模块化思维能力,模块化思维就是编程任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大的避免重复性的工作。另外我们要重视程序的算法,在程序中,算法是灵魂,我们要努力学习各种先进的算法,提高自己的编程能力。而在这个过程中,我更深的理解和运用结构化程序设计的思想和方法,掌握开发一个小型实用系统的基本方法,同时学会了一些调试一个较长程序的基本方法,提高了书写程序设计开发文档的能力(书写课程设计报告)。参考文献1、谭浩强著.C程序设计(第四版).北京:清华大学出版社,20102、谭浩强著.C程序设计(第四版)学习辅导.北京:清华大学出版社,20103、3.C编写组编.常用C语言用法速查手册.北京:龙门书局,19954、[2]刘振安.C语言程序设计[M].机械工业出版社,2007附加:#includestdio.h#includestdlib.h#includestring.h#includeconio.h#includewindows.h#defineLENsizeof(structPerson)voidtianjia();//对调用的函数进行声明voidtongji();voidshanchu();voidchazhao();voidxianshi();voidxiugai();FILE*fp;structPerson//声明一个结构体类型structPerson{chara[16];chars[16];chard[16];charf[24];structPerson*next;}stu;////////////////////////////////////////////主菜单计算机C语言课程设计报告15voidmenu(){inti=0;printf(*******************************************************************************\n);printf(*\t\t1添加通讯录*\n);printf(*\t\t2修改通讯录*\n);printf(*\t\t3查找通讯录*\n);printf(*\t\t4删除通讯录*\n);printf(*\t\t5显示通讯录*\n);printf(*\t\t6统计通讯录*\n);printf(*\t\t7退出通讯录*\n);printf(*******************************************************************************\n);printf(\t\t\t请输入操作1-7,以Enter结束\n\t\t\t\t);while(i==0){scanf(%d,&i);switch(i)//用switch函数实现多分支选择结构{case1:tianjia();break;case2:xiugai();break;case3:chazhao();break;case4:shanchu();break;case5:xianshi();break;case6:tongji();break;case7:printf(\t\t\t谢谢您的使用,请按任意键退出....\n);getchar();break;default:printf(\t\t您的输入有误,请重新输入,并以Enter结束\n);menu();}}}/////////////////////////////////////////////////////////////////////////////////1添加voidtianjia()计算机C语言课程设计报告16{intw=0;