C语言课程设计报告-《通讯录管理系统》的设计与实现.doc_第1页
C语言课程设计报告-《通讯录管理系统》的设计与实现.doc_第2页
C语言课程设计报告-《通讯录管理系统》的设计与实现.doc_第3页
C语言课程设计报告-《通讯录管理系统》的设计与实现.doc_第4页
C语言课程设计报告-《通讯录管理系统》的设计与实现.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

重庆科技学院课程设计报告重庆科技学院课程设计报告 院(系):_电子信息工程学院 专业班级: 自动化2013级3班 学生姓名: 学 号: 设计地点(单位) 计算机基础自主学习中心设计题目:通讯录管理系统的设计与实现 完成日期: 2014年 9月 24日 指导教师评语: 成绩(五级记分制):_ _指导教师(签字):_ _17重庆科技学院课程设计任务书设计题目:通讯录管理系统的设计与实现学生姓名唐一平课程名称C语言课程设计专业班级自动化1303地 点计算机基础自主学习中心起止时间2014.9.9-2014.24设计内容及要求内容强化C语言中有关结构体数组及外部文件的内容,独立设计通讯录管理系统,并编程实现以下功能:1、整个系统均用C语言实现;2、利用结构体数组来实现通讯录的数据结构设计;3、系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;4、系统的各个功能模块都用函数的形式来实现;5、要求能将学生信息保存在文件中。6、要求能从文件中读取学生信息并进行相关处理。设计参数1、每一条记录应包括一个人的学号、姓名、电话、班级、通讯地址等信息。2、输入功能:进入后可以进行多条记录的输入并保存。3、显示功能:完成全部学生或满足指定条件记录的显示。4、查找功能:完成按学号或姓名查找学生记录,并显示。5、插入功能:按学号顺序插入一条学生记录。6、保存功能:将学生记录保存在自定义名称的文件中。7、读取功能:将保存在文件中的学生记录读取出来。8、排序功能:按学号进行排序。9、有一个文本菜单来调用各个功能。进度要求1.布置设计题目,讲解要求和说明 2014.9.92.确定设计任务,确定具体的功能,熟悉相关知识 2014.9.10-9.123.按功能需求确定程序的主要模块 2014.9.13-9.164.编程实现程序的功能 2014.9.17 9.225.调试并完善程序 2014.9.23 9.246.撰写课程设计报告 2014.9.247. 提交课程设计报告并答辩 2014.9.25参考资料1. C语言程序设计基础.苏传芳.电子工业出版社.2004年 2.C语言程序设计第四版.谭浩强.清华大学出版社.2010年3. c/c+语言程序设计教程 人民邮电出版社 李丽娟主编其它说明.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。 摘 要 本设计主要阐述了通过使用C语言编程实现通讯录管理系统的基本功能,并设计了简单的界面。该程序主要使用的是数组的相关操作,包括结构体数组的输入、输出、查找、删除等。程序利用定义结构体类型struct,将人员的所有信息封装在一个数组中,作为一个整体处理,非常方便。用到的知识点是结构体类型定义结构提数组的的定义及应用。另外还用到了大量的自定义函数。本人设计的这个通讯录系统也初步实现了人员信息的输入、显示、查询、排序、插入,保存、读取基本功能。 关键词: 通讯录管理 结构体类型 自定义函数目录1.简 介11.1设计任务11.2设计思路12、系统设计22.1算法分析22.2 流程图设计22.3程序流程图43系统调试53.1调试方法93.2调试结果分析93.3解决问题的办法134.总结14参考文献15致 谢16附录(源程序)171、任务来源 通讯录管理系统在日常生活中的应用也很广泛,比如在手机、液晶显示电话等通讯设备中。可以用它代替纸质通讯簿,将其与通讯设备相结合具有方便、快捷等特点。2、设计要求 流程图设计:使用传统流程图或N-S流程图,有系统组成框图。 源程序设计:使用C语言编写,有模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等),程序清单中要有足够的注释,程序书写格式规范。 程序调试:使用VC+6.0软件,上机调试必须通过,有调试方法,调试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施。 编写课程设计报告书:用Word2003软件编制,样式、字体、段落、页面、页码等格式要求见课程设计模板。1.2设计思路1、设计方法 根据设计任务书中的设计要求,本设计采用以下设计方法。 本系统首先设计出了主函数,然后根据去要实现的功能分别设计了输入、显示、查找、删除、添加、排序等功能的子函数。通过主函数的调用来实现功能要求。输入函数用来确定输入的记录数及项目内容。显示函数是将是将输入的记录显示出来。查找是调用(search)函数将待查找姓名字符串和记录数组中的姓名字符串进行比较,如果比较相等则调用print()函数显示查找到的记录。姓名拷贝到前一条,从添加函数是先确定插入记录的位置,再将当前位置记录后移。排序是将记录按姓名的英文字母顺序进行排列,使用字符串比较函数strcmp()对数组中的姓名字符串进行比较,定义一个作为交换数据的临时变量用for语句进行交换循环。最后对记录进行保存文件,运用到了文件的打开读写等知识。 2、设计方案分析根据设计任务书中的设计要求,可以设想几种几种方案,可以是简单的设计,也可以是较复杂的设计。由于系统管理要处理大量的数据这些数据要以文件的形式储存外部介质(如磁盘)上的,需要时再从磁盘中调入到计算机内存中,处理完毕后输出到磁盘上存储起来。 2、系统设计2.1、算法分析 本程序是非数值计算型算法设计。部分算法流程图如图一二所示。 对与记录通讯录内的人员的姓名、地址、电话号码这一功能的实现,我们可以使用C语言提供的结构体类型。可以将这些信息封装在一个数组中作为一个整体处理。由于它们是存放在字符数组中的,对于它们的查找、插入、删除我们FOR循环语句中嵌套使用字符串处理函数,如字符串比较函数strcmp() 对与记录数据的保存使用到文件中指向文件的指针,fp是一个FILE型指针变量。使用了一个比较常见的用法,这种用法可以在写文件之前先检验已打开的文件是否有错误,如写保护或磁盘已写满等。用了NULL,也就是0,因为没有文件指针会等于0.NULL是stdio.h中定义的一个宏。 2.2、 流程图设计 排序读取插入保存显示输入 结 束 通讯录管理系统查找 首 页 3、系统调试 在完成了通讯录管理系统的流程图设计和程序设计以后,便进入系统的调试阶段。系统的调试步骤和方法基本上是相同的,但具体细节和所采用的开发系统以及用户系统,如本设计选用VC+6.0软件进行程序调试。3.1、调试方法 1单击File菜单,并单击其子菜单New ,在弹出的窗口中选择Win32 Console Application,在右边Project name下方的文本框中输入项目名称,在Location中选择项目存放的位置,可以选择默认目录,也可自己更改。单击OK。点击Finish按钮新建一个工程。 2 单击File菜单,并单击其子菜单New选择C+Source File 选择Add to Project前的复选框,在File下的文本框中输入文件名。3编写好程序后,对程序进行编译,单击Build菜单,选择Compile *.并单击改选项就可以进行编译。若在屏幕下方的小窗口中显示*.obj-0error(s),0 warning(s),则表明编译成功。若error不为0,则程序有错误,应先找到错误并改正直到没有错误为止。 4. 程序经过编译生成.obj的目标文件后还要对程序进行链接生成.exe文件,该文件生成后即可运行,运行程序之后,屏幕会出现一个合黑色窗口,运行结果显示其中。本程序的运行结果如图所示。 图3.1图3.2图3.3图3.4图3.5图3.63.2调试结果分析程序调试的任务是发现和改正程序中的错误,使程序能正常运行。编译系统能检查出程序中的语法错误。语法错误分为两类:一类是致命错误,以error表示,如果程序中有这类错误,就通不过编译,无法形成目标程序,更谈不上运行了。另一类是轻微错误,以warning(警告)表示,这类错误不影响生成目标程序,但有可能影响运行的结果,因此也应当改正,使程序既无error,又无warning。 3.3解决问题的办法双击调试信息窗口中的第1个报错行,这时在程序窗口中出现一粗箭头指向被报错的程序行(第51行),提示改错位置,在main前加void。再用同样的方法找到第二个出错位置,在第253行的末尾加上分号。再仔细阅读程序,认为应该没有问题了在再进行重新编译,此时编译信息告诉我:0 error(s),0 warning(s),既没有致命错误(error)也没有警告性错误(warning)。编译成功,这时产生一个.obj文件。再得到目标程序后就可以对程序进行连接了,这时连接生成一个.exe的可执行文件,然后用Ctrl+F5来是实现程序的执行。 4.总结完成情况:经过三个星期的努力,我完成了通讯录管理系统的设计,通过这次课程设计,我对很多的函数有了新的认识,也学会了运用多种函数,我也明白了写运用VC+6.0编写程序的基本过程和基本方法。在写程序的过程中我又学到了曾经自己不知道的函数或是自己不会的函数的用法。特别是文件的开启和关闭,读与写。这次课程设计课总的来说让我受益匪浅。 在程序设计过程中遇到了很多的困难。在程序一次一次的调试失败下曾经想过要放弃。我最后还是让自己坚持了下来,毫不畏惧困难,在老师和同学的帮助下我总算是顺利的完成了设计任务。 虽然在调试程序遇到了很多的困难,但是也让我体会到程序调试成功时那种成功时的兴奋与喜悦。在程序的编写过程中我发现我自己有很多的知识漏洞和缺陷,需要进一步努力学习来完善自己。 在这些天的编写过程中我对c语言有了更进一步的认识和了解。此次编程过程的经验和知识肯定能促进我以后的学习。 最后在此感谢对本次课程设计提供技术支持和帮助的老师和同学。 参考文献1. C语言程序设计基础.苏传芳.电子工业出版社.2004年 2.C语言程序设计第四版.谭浩强.清华大学出版社.2010年3. c/c+语言程序设计教程 人民邮电出版社 李丽娟主编 致 谢本课题在选题及进行过程中得到老师门的悉心指导。论文行文过程中,老师们多次帮助我分析思路,开拓视角,在我遇到困难想放弃的时候给予我最大的支持和鼓励。老师们严谨求实的治学态度,踏实坚韧的工作精神,将使我终生受益。再多华丽的言语也显苍白。在此,谨向老师们致以诚挚的谢意和崇高的敬意。感谢我的室友们,我们一起经历过的聚散喜悲,一起走过的每一段路,我一生都不会忘记。友情的无私为我们的大学时光重重地写下了无悔。感谢你们,是你们的陪伴让我度过了最难过的时光;感谢你们,是你们教会了我如何简单地快乐;感谢你们,是你们让我懂得温暖。 附录(源程序)#include#includeint people=0;typedef struct int xuehao;char name8;char tel20;char banji10;char addr50;dingyi; dingyi student5000;void shouye(); void shuru();void xianshi(); void charu(); void baocun();void duqu();void paixu();void search();void searsh1();void search2();void search3();int main()int m;doshouye(); scanf(%d,&m);switch(m)case 1: shuru();break;case 2: xianshi();break;case 3: search();break;case 4: charu();break;case 5: baocun();break;case 6: duqu();break;case 7: paixu();break;while(m!=0);void shuru() /输入学生的信息char m;printf(请输入信息nn);printf(学号);scanf(%d,&studentpeople.xuehao);printf(姓名);scanf(%s,);printf(电话号码);scanf(%s,studentpeople.tel);printf(班级);scanf(%s,studentpeople.banji);printf(地址);scanf(%s,studentpeople.addr);people+;printf(是否继续?);scanf(%s,&m);if(m=y)shuru();void xianshi() /显示输入的学生信息 int i; for(i=0;ipeople;i+) printf(%dn%sn%sn%sn%sn,studenti.xuehao,,studenti.tel,studenti.banji,studenti.addr);void search1() /按学号查找学生信息 int i,num; printf(请输入学号);scanf(%d,&num);for(i=0;ipeople;i+) if(num=studenti.xuehao)printf(%dn%sn%sn%sn%sn,studenti.xuehao,,studenti.tel,studenti.banji,studenti.addr);void search2() /按姓名查找学生int i;char xingming200;printf(请输入姓名n);scanf(%s,xingming);for(i=0;ipeople;i+)if(strcmp(xingming,)=0)printf(%dn%sn%sn%sn%sn,studenti.xuehao,,studenti.tel,studenti.banji,studenti.addr); void search3() /按班级查找学生 int i; char banji200; printf(请输入班级n);scanf(%s,banji);for(i=0;ipeople;i+) if(strcmp(banji,studenti.banji)=0)printf(%dn%sn%sn%sn%sn,studenti.xuehao,,studenti.tel,studenti.banji,studenti.addr);void search() /在页面上显示您需要查找的方式int m;printf(请输入您查找的内容n);printf(1查找学号);printf(2查找姓名);printf(3查找班级);scanf(%d,&m);switch(m) case 1:search1();break; case 2:search2();break; case 3:search3();break; void charu() /增添一个学生的信息到信息库printf(请输入信息n);printf(学号);scanf(%d,&studentpeople.xuehao);printf(姓名);scanf(%s,);printf(电话);scanf(%s,studentpeople.tel);printf(班级);scanf(%s,studentpeople.banji);printf(地址);scanf(%s,studentpeople.addr);people+;void baocun() /保存以上学生的信息 int i; FILE *fp = fopen(c:g.txt, w);if (fp = NULL)printf(fopen error!n);for(i=0;ipeople;i+) fprintf(fp,%dn%sn%sn%sn%sn,studenti.xuehao,stude

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论