C语言程序设计报告_第1页
C语言程序设计报告_第2页
C语言程序设计报告_第3页
C语言程序设计报告_第4页
C语言程序设计报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

C 语言程序设计报告 题题 目 学生通讯录管理系统目 学生通讯录管理系统 院系名称 电子工程系院系名称 电子工程系 专业名称 电子信息工程专业名称 电子信息工程 班班 级 电信一班级 电信一班 学生姓名 韦金海学生姓名 韦金海 学号 学号 8 位 位 1252100110 指导教师 指导教师 设计起止时间 设计起止时间 2013 年 9 月 13 日 2013 年 9 月 23 日 一 目的一 目的 全面熟悉 掌握 C 语言基本知识 掌握 C 程序设计中的顺序 分支 循环 三种结构及数组 函数和 C 语言基本图形编程等方法 把编程和实际结合起来 增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领 熟悉 编制和调试程序的技巧 掌握分析结果的若干有效方法 进一步提高上机动手 能力 培养使用计算机解决实际问题的能力 养成提供文档资料的习惯和规范 编程的思想 为以后在专业课程中应用计算机系统解决计算 分析 实验和设 计等学习环节打下较扎实的基础 二 设计内容 二 设计内容 设计与开发一个通讯录管理系统 对通讯录中的姓名 单位 电话 QQ mail 等基本信息进行管理 主要功能如下 1 输入记录 2 显示记录 3 按姓名查找显示记录 4 删除记录 5 插入记录 6 记录保存为文件 7 从文件中读记录 8 按姓名排序 9 显示单条记录 三 概要设计三 概要设计 1 录入学生信息将信息保存至文件中 2 从文件中读取信息显示出学生信息 3 从文件中读取信息存至单链表中 传递头指针从而修改学生信息 再将修改完成的学生 信息保存至文件中 4 从文件中读取信息存至单链表中 传递头指针从然后用冒泡法排序学生信息 再将修改 完成的学生信息保存至文件中 1 课题的主要功能模块划分 课题的主要功能模块划分 同 学 录 输 入查 找 显 示删 除快 速 查 找记 录 保 存 按姓名查找 显示记录 按序号查找 显示记录 按姓名查找 2 2 各个模块详细的功能描述 各个模块详细的功能描述 1 录入学生信息 录入学生信息将信息保存至文件中 2 显示学生信息 从文件中读取信息显示出学生信息 3 查询学生信息 从文件中读取信息存至单链表中 输入你要查找的学号 4 修改学生信息 从文件中读取信息存至单链表中 传递头指针从而修改学生信息 再将修改完成的学 生信息保存至文件中 5 删除学生信息 从文件中读取信息存至单链表中 传递头指针从而删除学生信息 再将修改完成的学 生信息保存至文件中 6 排序学生信息 从文件中读取信息存至单链表中 传递头指针从然后用冒泡法排序学生信息 再将修改完 成的学生信息保存至文件 四 程序调试 一 先进行人工检查 即静态检查 在写好一个程序以后 不要匆匆忙忙上机 而应对程序进行人工检查 这 一步十分重要 它能发现程序设计人员由于疏忽而造成的多数错误 这一步往 往容易被人忽视 总希望把一切都推给计算机去做 但这样会多占用机器时间 作为一个程序人员应当养成严谨的作风 每一步都要严格把关 不把问题留给 后面的工序 为了更有效地进行人工检查 所编的程序应力求做到以下几点 应当采用结构化程序方法编程 以增加可读性 尽可能多加注释 以帮助理解每段程序的作用 在编写复杂的程序时不要将全部语句都写在 main 函数中 而要多利用函 数 用一个函数来实现一个单独的功能 各函数之间除用参数传递数据外 尽 量少出现耦合关系 这样便于分别检查和处理 二 在人工检查无误后 再上机调试 通过上机发现错误称为动态检查 在编译时会给出语法错误的信息 调试 时可以根据提示信息具体找出程序中出错之处并改正 应当注意的是有时提示 出错的地方并不是真正出错的位置 如果在提示出错的行找不到错误的话应当 到上一行再找 有时提示出错的类型并非绝对准确 由于出错的情况繁多且各 种错误互有关联 因此要善于分析 找出真正的错误 而不要只从字面意义上 找出错信息 钻牛角尖 如果系统提示的出错信息很多 应当从上到下逐一改正 有时显示出一大 片出错信息往往使人感到问题严重 无从下手 其实可能只有一二个错误 例 如 对使用的变量未定义 编译时就会对所有含该变量的语句发出出错信息 这时只要加上一个变量定义 就所有错误都消除了 三 在改正语法错误 包括 错误 error 和 警告 warning 后 程序经过连接 link 就得到可执行的目标程序 运行程序 输入程序所需数 据 就可得到运行结果 应当对运行结果作分析 看它是否符合要求 有的初 学者看到运行结果就认为没问题了 不作认真分析 这是危险的 有时 数据比较复杂 难以立即判断结果是否正确 可以事先考虑好一批 试验数据 输入这些数据可以很容易判断结果正确与否 例如解方程 事实 上 当程序复杂时很难把所有的可能情况全部都试到 选择典型的临界数据作 试验即可 四 运行结果不对 大多属于逻辑错误 对这类错误往往需要仔细检查和 分析才能发现 可以采用以下办法 1 将程序与流程图仔细对照 如果流程图是正确的 程序写错了 是很容 易发现的 例如 复合语句忘记写花括弧 只要一对照流程图就能很快发现 2 如果实在找不到错误 可以采用 分段检查 的方法 在程序不同的位 置设几个 printf 函数语句 输出有关变量的值 逐段往下检查 直到找到在某 一段中数据不对为止 这时就已经把错误局限在这一段中了 不断减小 查错 区 就能发现错误所在 3 也可以用 条件编译 命令进行程序调试 在程序调试阶段 若干 printf 函数语句就要进行编译并执行 当调试完毕 这些语句不用再编译了 也不再被执行了 这种方法可以不必一一去掉 printf 函数语句 以提高效率 4 如果在程序中没有发现问题 就要检查流程图有无错误 即算法有无问 题 如有则改正之 接着修改程序 5 有的系统还提供 debug 调试 工具 跟踪程序并给出相应信息 使用 更为方便 请查阅有关手册 总之 程序调试是一项细致深入的工作 需要下功夫 动脑子 善于积累 经验 在程序调试过程中往往反映出一个人的水平 经验和态度 希望大家给 以足够的重视 上机调试程序的目的决不是为了 验证程序的正确 而是 掌 握调试的方法和技术 要学会自己找问题 这样慢慢自己就会写出错误较少的 实用程序 五 测试数据及运行结果五 测试数据及运行结果 1 1 正常测试数据和运行结果 正常测试数据和运行结果 要求提供 3 组正常测试数据和运行结果 初始界面 输入数据 回到主菜单 进行数据管理 添加通讯信息 修改通讯信息 显示通讯信息 查询通讯信息 六 总结 课程设计是培养学生综合运用所学知识 发现 提出 分析和解决实际问题 锻炼实践能力的重要环节 是对我们的实际工作能力的具体训练和考察过程 随 着科学技术发展的日新月异 当今计算机应用在生活中可以说得是无处不在 因此作为二十一世纪的大学来说掌握程序开发技术是十分重要的 而 C 语言又 是最常见 功能最强大的一种高级语言 因此做好 C 语言课程设计是十分必要 的 回顾起此次课程设计 至今我们仍感慨颇多 的确 自从拿到题目到完成 整个编程 从理论到实践 在整整半个月的日子里 可以学到很多很多的东西 同时不仅可以巩固了以前所学过的知识 而且学到了很多在书本上所没有学到 过的知识 通过这次课程设计使我们懂得了理论与实际相结合是很重要的 只 有理论知识是远远不够的 只有把所学的理论知识与实践相结合起来 从理论 中得出结论 才能真正为社会服务 从而提高自己的实际动手能力和独立思考 的能力 在设计的过程中遇到问题 可以说得是困难重重 这毕竟第一次做的 难免会遇到过各种各样的问题 同时在设计的过程中发现了自己的不足之处 对一些前面学过的知识理解得不够深刻 掌握得不够牢固 比如说结构体 指 针 链表 通过这次课程设计之后 我们把前面所学过的知识又重新温故了 一遍 我做的是通讯录系统 虽然是很简单的一个小的程序 但对我一个初学者来 说却是一个很大的困难 更加是第一次做课程设计 所以第一天下午在机房做 了一个下午却丝毫没有进展 最主要是不知从何开始 这个时候才知道上课老 师们不厌其烦的教导是多么的宝贵 这个时候才后悔上课的时候没有认真的听 讲 可是现在一切都晚了 还好时间还算是充裕 只好拿出书本重新复习一下 特别是结构体 指针的部分 几乎是一片空白 不过经过几天的努力 大体上 把课本上的知识点看了一遍 知识点也都基本是撑握了 所以下一步就是开始 正式的编程序了 不过毕竟是个新手 还是不知如何下手 于是就在网上下了 一篇类似的程序 经过仔细的研究 终于读懂了 C 语言编程的基本过程和方法 经过一波三折 终于开始正式编程 编程是一件很枯燥很无聊的事情 但是出于完成作业 得到学分的压力 还必须强迫自己坚持下去 按照老师所说的模块化思想 分部分的进行编写 而且编程是一件高精度 模范化的事情 稍有疏乎都会影响全局 也可能因为 某一处的小的错误而导致整个程序的无法运行 所以认真仔细就是非常重要的 了 开始的时候真的感觉编程是一件很无聊的事情 不过当一个程序运行成功 的时候那种喜悦是无法言语的 那种成就感是无法比拟的 又经过几天的努力 终于把程序完成了 尽管程序还是有很多错误和漏洞 不过还是很高兴的 无 论如何是自己的劳动成果 是自己经过努力得到的成绩 同时也是学习 C 语言 的一次实践作业 自己进步的证明 通过这次课程设计 使我对 C 语言有了更进一步的认识和了解 要想学好它 要重在实践 要通过不断的上机操作才能更好地学习它 我也发现我的好多不 足之处 首先是自己在指法上还不行 经常按错字母 通过学习也有所改进 再有对 C 语言的一些标准库函数不太了解 还有对函数调用的正确使用不够熟 悉 还有对 C 语言中经常出现的错误也不了解 通过实践的学习 我认识到学 好计算机要重视实践操作 不仅仅是学习 C 语言 还是其它的语言 以及其它 的计算机方面的知识都要重在实践 所以后在学习过程中 我会更加注视实践 操作 使自己便好地学好计算机 在课程设计过程中 收获知识 提高能力的同时 我也学到了很多人生的哲 理 懂得怎么样去制定计划 怎么样去实现这个计划 并掌握了在执行过程中 怎么样去克服心理上的不良情绪 因此在以后的生活和学习的过程中 我一定 会把课程设计的精神带到生活中 不畏艰难 勇往直前 七 源程序七 源程序 include include stdio h stdio h include include string h string h include include stdlib h stdlib h include include conio h conio h define define PTPT 序号序号 s s 姓名姓名 s s 性别性别 s s 手机号手机号 s s QQ sQQ s 生生 日日 s n p num p name p sex p phone p QQ p s n p num p name p sex p phone p QQ p birthday birthday define define N N sizeof structsizeof struct stud stud structstruct studstud charchar num 10 num 10 charchar name 15 name 15 charchar sex 15 sex 15 charchar phone 15 phone 15 charchar QQ 15 QQ 15 charchar birthday 15 birthday 15 structstruct studstud next next structstruct studstud creat void creat void structstruct studstud p1 p2 head p1 p2 head intint i 1 i 1 charchar choice choice head p2 structhead p2 struct studstud malloc N malloc N printf printf n n printf printf 欢迎使用通讯录管理系欢迎使用通讯录管理系 统统 n n printf printf n n n n n n printf printf n n printf printf n n n n n n printf printf 输入信息时请以空格间隔输入 一组通讯信息输输入信息时请以空格间隔输入 一组通讯信息输 入完后请按回车键结束入完后请按回车键结束 n n n n n n printf printf 请输入序号请输入序号 姓名姓名 性别性别 手机号手机号 QQQQ 生日生日 n n head next NULL head next NULL choice y choice y for i 1 choice y choice Y i for i 1 choice y choice Y i p1 structp1 struct studstud malloc N malloc N scanf sscanf s s s s s s s s s s p1 num p1 name p1 s p1 num p1 name p1 sex p1 phone p1 QQ p1 birthday sex p1 phone p1 QQ p1 birthday p2 next p1 p2 next p1 p2 p1 p2 p1 printf nprintf n 是否继续是否继续 Y N Y N choice getche choice getche printf n printf n p2 next NULL p2 next NULL returnreturn head head voidvoid insertinsert struct struct studstud head head structstruct studstud p p p structp struct studstud malloc N malloc N printf printf 请输入要插入的序号请输入要插入的序号 姓名姓名 性别性别 手机号手机号 QQQQ 生日生日 n n scanf sscanf s s s s s s s s s s p num p name p sex p s p num p name p sex p phone p QQ p birthday phone p QQ p birthday if head next NULL if head next NULL p next head next p next head next head next p head next p printf nprintf n 通讯信息插入成功通讯信息插入成功 按任意键继续按任意键继续 getche getche voidvoid modify structmodify struct studstud h h charchar number 10 number 10 structstruct studstud p p charchar choice choice printf printf 请输入要修改的通讯信息的序号 请输入要修改的通讯信息的序号 scanf s number scanf s number for p h strcmp p num number 0 p p next for p h strcmp p num number 0 p p next while 1 while 1 printf printf 请输入修改后通讯信息 请输入修改后通讯信息 n n printf printf 请输入要插入的序号请输入要插入的序号 姓名姓名 性别性别 手机号手机号 QQQQ 生日生日 n n scanf sscanf s s s s s s s s s s p num p name p sex p s p num p name p sex p phone p QQ p birthday phone p QQ p birthday printf printf 修改后通讯信息如下修改后通讯信息如下 n n printf nprintf n 序号序号 s s 姓名姓名 s s 性别性别 s s 手机号手机号 s s QQ sQQ s 生日生日 s n p num p name p sex p phone p s n p num p name p sex p phone p QQ p birthday QQ p birthday printf nprintf n 确认确认 是是 Y Y 否否 N N choice getche choice getche if choice y choice Y if choice y choice Y break break printf nprintf n 修改成功修改成功 按任意键继续按任意键继续 getche getche voidvoid cut structcut struct studstud p0 p0 charchar number 10 number 10 structstruct studstud p p charchar choice choice if p0 next NULL if p0 next NULL printf printf 信息出错信息出错 按任意键退出按任意键退出 getch getch exit 1 exit 1 printf printf 请输入要删除的序号 请输入要删除的序号 scanf s number scanf s number for p p0 next strcmp p num number 0 p0 p p p for p p0 next strcmp p num number 0 p0 p p p next next printf printf 你要删除的通讯信息如下你要删除的通讯信息如下 请确认是否删除请确认是否删除 n n printf nprintf n 序号序号 s s 姓名姓名 s s 性别性别 s s 手机号手机号 s s QQ sQQ s 生日生日 s n p num p name p sex p phone p QQ p s n p num p name p sex p phone p QQ p birthday birthday printf nprintf n 是是 Y Y 否否 N N choice getche choice getche if choice Y choice y if choice Y choice y p0 next p next p0 next p next free p free p printf nprintf n 文件删除成功文件删除成功 printf nprintf n 按任意键结束按任意键结束 getche getche voidvoid find structfind struct studstud h h charchar number 10 number 10 structstruct studstud p p printf printf 请输入你要查找的序号 请输入你要查找的序号 scanf s number scanf s number for p h strcmp p num number 0 p p next for p h strcmp p num number 0 p p next printf printf 你查找的通讯信息如下你查找的通讯信息如下 n n printf nprintf n 序号序号 s s 姓名姓名 s s 性别性别 s s 手机号手机号 s s QQ sQQ s 生日生日 s n p num p name p sex p phone p QQ p s n p num p name p sex p phone p QQ p birthday birthday printf printf 按任意键继续按任意键继续 getche getche voidvoid print structprint struct studstud p p p p next p p next while p NULL while p NULL printf PT printf PT p p next p p next printf nprintf n 按任意键继续按任意键继续 getche getche voidvoid sort structsort struct studstud head head structstruct studstud q t p q t p p head p head t NULL t NULL while t head next while t head next p head p head q p next q p next while q next t while q next t if strcmp p next num q next num 0 if strcmp p next num q next num 0 p next q next p next q next q next q next next q next q next next p next next q p next next q p p next p p next q p next q p next t q t q printf printf 通讯信息排序完毕 按任意键继续通讯信息排序完毕 按任意键继续 getche getche voidvo

温馨提示

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

评论

0/150

提交评论