C语言课程设计报告电子通讯录.doc_第1页
C语言课程设计报告电子通讯录.doc_第2页
C语言课程设计报告电子通讯录.doc_第3页
C语言课程设计报告电子通讯录.doc_第4页
C语言课程设计报告电子通讯录.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

课程名称 高级语言程序设计课程设计 题目名称 电子通讯录 一、课程设计的内容 熟悉 VC6 环境下 C 语言程序的创建、编辑、编译和调试改错等设计过程; 根据设计任务中所描述的功能需求,设计合理的实现算法,并设计中等详 细度的流程图; 综合运用 C 语言的语法知识,将算法和流程图转换成 C 语言程序,实现一 个基于 Windows 控制台的应用程序; 对于标准 C 中未规定的与操作系统或编译器相关的部分,如键盘鼠标的输 入检测、字符颜色的控制、系统时间的获取、多媒体文件的播放等,查阅 MSDN 中的相关说明和示例,完成程序设计。 二、课程设计的要求与数据 设计一个学生电子通讯录,可以进行添加、删除、查找、排序(按学号或 按姓名)和列表输出的完整程序。每个学生的信息包括: 学号 姓名 性别 出生日期 宿舍 电话 Email 可以使用结构体存取每个学生的信息,多个学生的信息可以保存到结构体 数组中。使用文本文件保存以往的所有学生信息,添加、删除和排序后应更新 该文本文件。 程序运行后,应有一个简单的操作界面。如有可能,用字符绘制一个简单 的菜单界面,并随用户输入情况使用不同的颜色和动画进行显示。 本任务主要涉及字符数组、指针、结构体和文件操作的综合运用,字符模 式的简单动画和色彩显示的程序设计与所使用的系统相关,不是标准 C 的内容, 其实现需要参考 MSDN 中的 Platform SDK Documentation 相关资料(见后) 。 三、课程设计应完成的工作 程序运行后,显示一个操作界面,用户可选择“添加、删除、查找、排序 (按学号或按姓名)和列表输出”等功能,用户选择某一功能后,程序或者提 示下一步输入(添加、删除、查找) ,或者输出结果(排序(按学号或按姓名) 、 列表输出) 。程序对用户的错误输入数据应有一定的考虑,不至于导致错误的运 行结果。 如果程序运行时尚未建立通讯录文件,应先创建,否则在原通讯录文件上 进行相应的操作。 记录或复制各步骤的主要屏幕显示内容作为实验测试数据保留。 四、课程设计进程安排 序号设计各阶段内容地点起止日期 1 熟悉 VC6 环境下 C 程序开发的方法和步骤, 选择设计任务,程序设计资料搜集实 3-508 1.7 2 制定实现算法,设计中等详细度的流程图, 编写框架程序实 3-508 1.8 3 独立编写各模块的具体实现程序,按照流 程图完成完整程序的编写(结合调试)实 3-517 1.9 4 独立完成程序的调试、差错定位和排错, 修改完善程序功能,完成设计任务实 3-508 1.10 5 演示和验收源程序及其可执行程序实 2-214 1.11 6 完成课程设计报告 1.111.13 五、应收集的资料及主要参考文献 C 语言文件操作库函数 Windows98 程序设计从入门到精通:“第十五章 利用控制台” MSDN:“Platform SDK DocumentationBase ServicesDLL, Processes, and ThreadsCharacter-Mode Applications” MSDN:“Platform SDK DocumentationBase ServicesWindows System InformationTime” 发出任务书日期: 2008 年 1 月 2 日 指导教师签名: 计划完成日期: 2008 年 1 月 13 日 基层教学单位责任人签章: 主管院长签章: 摘 要 本设计基于C语言设计平台,在VC6环境下C语言程序的创建、编辑、编译和调试改错等 设计过程,设计了一个简单的电子通讯录。重点实现了从原有通讯录数据添加、查询、插入、 删除及定格式输入输出。通过控制台,用户根据操作界面提示,实现对通讯录资料的更改。 通过多维结构体数组获取即使信息,然后以读写文件方式将其回传到用户指定的通讯录文件 上,实现用户数据的读写。 本程序具有简单的C源程序,设计方法合乎C语言结构性设计的要求。并能实现多功能的 电子通讯录。 此设计综合运用 C 语言的语法知识,将算法和流程图转换成 C 语言程序,实现一个基于 Windows 控制台的应用程序。 关键词:C 语言,通讯录,格式化,课程设计 目 录 1 设计任务目的及要求设计任务目的及要求6 1.1设计目的.6 1.2设计要求.6 2 原理与模块介绍原理与模块介绍6 2.1 输出记录模块6 2.2 增添记录模块记录模块6 2.3 插入与删除模块模块6 2.4 查询模块2 2.5 保存退出程序模块2 3 设计方案设计方案2 3.1 软件设计思想2 3.2 设计流程图4 4 实验结果与数据处理实验结果与数据处理7 4.1 测试步骤及实验现象7 5 结论与问题讨论结论与问题讨论12 5.1 完成实验的基本要要求.12 5.2 遇到的问题及解决办法12 5.3 存在的不足及改进思路13 参考文献参考文献14 附录附录 C 语言源程序语言源程序14 1 设计任务目的及要求设计任务目的及要求 1.1 设计目的 设计一个学生电子通讯录,可以进行添加、删除、查找、排序(按学号或按姓名)和列表输 出的完整程序。 1.2 设计要求 1) 学生电子通讯录每个学生的信息包括:学号 姓名 性别 出生日期 宿舍 电话 Email 2) 使用文本文件保存以往的所有学生信息,添加、删除和排序后应更新该文本文件 3)程序运行后,应有一个简单的操作界面。如有可能,用字符绘制一个简单的菜单界面,并随用户输 入情况使用不同的颜色和动画进行显示。 4)字符数组、指针、结构体和文件操作的综合运用 5) 熟悉 VC6 环境下 C 程序开发的方法和步骤,选择设计任务,程序设计资料搜集 6) 制定实现算法,设计中等详细度的流程图,编写框架程序 7) 独立编写各模块的具体实现程序,按照流程图完成完整程序的编写(结合调试) 8) 独立完成程序的调试、差错定位和排错,修改完善程序功能,完成设计任务 2 原理与模块介绍原理与模块介绍 2.1 输出记录模块 利用文件的录入操作函数及文件指针的使用可完成此操作。 2.2 增添记录模块记录模块 对于电子通讯录这样一张顺序表来说,内容的录入是必不可少的操作。由于采用的是顺序存 储结构。这项工作只需要在把输入的信息按顺序放在空的 friends 数组元素中即可。函数 Data_Input 完成了信息的录入工作。 2.3 插入与删除模块模块 在实际使用中,数据资料输入后,还需要不断的更新和维护操作,最常见的是数据的插入与删 除。作为顺序表来说,如何在插入与删除数据资料后仍然能保持原有数据之间的关系,是需 要考虑的关键问题。利用顺序表的所有元素加减移动便可实现此功能。 2.4 查询模块 用名字可查询到有关些名字的记录,查找出相应名字的字符串并嵌套 Data_Show 函数实现此 功能。 2.5 保存退出程序模块 以文件及文件指针操作为主的 void Data_Save()实现此功能。 电子通讯录功能如下: Function choose 1.输出记录 2.增加记录 3.删除记录 4.查询记录 5.插入记录 6.保存退出 7.退出程序 上图是电子通讯录的主菜单,利用它,将能够轻松地录入一个同学的电话号码,通讯地址和 出生日期,而且它还提供了检索和删除功能。还可按学号进行排序,这些都有助于该通讯录 的管理。电子通讯录是采用线性表作为程序的基本结构的。 3 设计方案设计方案 3.1 软件设计思想 1)、设计思想: 用顺序表设计电子通讯录的结构: 为了表示较为复杂的数据内容,一般用结构这种数据类型,第一步就是在结构中定义所需要 的各项信息。一般的通讯录都包括姓名,性别,出生年月,通讯地址和联系电话这几项,而 在这几项中,出生年月又包括年份,月份和日期三项,通讯地址包括邮箱和宿舍二项,我们 把这些联系较为紧密的内容又用单独的结构表示,这样就产生了电子通讯录的基本结构。 struct addr char post_num10; char add40; ; struct birth int year; int month; int day; ; struct friend1 int number; char name20; char sex; struct birth birth; struct addr addr; char telephone13; friends50; 3.2 设计流程图 程序开始 清屏 打印功能说明列表 调用 switch 函数实现各功能 case 1:输出记录模块 case 4:查询记录模块 case 3:删除记录模块 case 2:增添记录模块 case 5:插入记录模块 case 6:保存退出模块 case 7:退出程序模块 1、输出记录模块 打开文件 输出记录 输出“搜索完毕” 有记录无记录 2、增添记录模块 按顺序输入一条记录 跳出 3、删除记录模块 输出“没有记录”删除选中的记录 没有保存记录有保存记录 跳出 4、查询记录模块 输入要查询的姓名 查找到结果 输出结果 跳出 跳 5、插入记录模块 输入要插入的学号 插入一条记录 跳出 6、保存退出模块 将记录保存到文本文件 退出程序 7、退出程序模块 退出不退出 yn 4 实验结果与数据处理实验结果与数据处理 4.1 测试步骤及实验现象 1)功能 1 及功能 2 的实现,记录的输出及增加记录。如下图: 2)功能 3 及 4 的实现:首先用查询功能可查到学号为 1 的记录,用功能 3 将此记录删除后, 再用 4 功能便不可看到些记录。如下图: 3)功能 5 的实现:插入学号为“1”的记录,用输出功能可以看见刚刚插入的记录。如下图: 4)功能 6 和功能 7 的实现:选择 6 和 7 后程序退出。如下图: 5 结论与问题讨论结论与问题讨论 5.1 完成实验的基本要要求 总的来说设计出一个学生电子通讯录,可以进行添加、删除、查找、排序(按学号)和列表 输出的完整程序。 1) 学生电子通讯录每个学生的信息包括:学号 姓名 性别 出生日期 宿舍 电话 Email 2) 使用文本文件保存以往的所有学生信息,添加、删除和排序后应更新该文本文件 3)程序运行后,有一个简单的操作界面。 4)字符数组、指针、结构体和文件操作的综合运用 5) 熟悉 VC6 环境下 C 程序开发的方法和步骤,选择设计任务,程序设计资料搜集 6) 制定实现算法,设计中等详细度的流程图,编写框架程序 7) 独立编写各模块的具体实现程序,按照流程图完成完整程序的编写(结合调试) 8) 独立完成程序的调试、差错定位和排错,修改完善程序功能,完成设计任务 5.2 遇到的问题及解决办法 1) 、在实际使用中,数据资料输入后,还需要不断的更新和维护操作,最常见的是数据的插入与删除。作为顺 序表来说,如何在插入与删除数据资料后仍然能保持原有数据之间的关系? 解决方法的插入算法如下: printf(“ntInsert No:“); /*录入插入位置*/ scanf(“%d“, for(j=i+1;jk;j-) /*插入位置后的元素顺序后移*/ strcpy(,); /*交换元素内容*/ friendsj.sex=friendsj+1.sex; friendsj.birth.year=friendsj-1.birth.year; friendsj.birth.month=friendsj-1.birth.month; friendsj.birth.day=friendsj-1.birth.day; strcpy(friendsj.addr.post_num,friendsj-1.addr.post_num); strcpy(friendsj.addr.addr,friendsj-1.addr.addr); strcpy(friendsj.telephone,friendsj-1.telephone); Data_Input(k); /*插入位置上填入待插入元素*/ i+; /*总元素个数增 1*/ 删除算法如下: printf(“ntDelete No:“); /*读入删 除位置*/ scanf(“%d“, for(j=k;j #include #include #include #include struct addr char post_num10; char add40; ; struct birth int year; int month; int day; ; struct friend1 int number; char name20; char sex; struct birth birth; struct addr addr; char telephone13; friends50; FILE *fp; int i; void Data_Load() int j; long k; fp=fopen(“friend.txt“,“r+t“); /*打开文件 friend.txt*/ if(fp!=NULL) for(i=1;ii) printf(“nt 搜索完毕n“); break; case 2: while(getch()

温馨提示

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

评论

0/150

提交评论