1、 使用文本文件保存以往的所有学生信息,添加、删除和排序后应更新 该文本文件。 程序运行后,应有一个简单的操作界面。 如有可能,用字符绘制一个简单 的菜单界面,并随用户输入情况使用不同的颜色和动画进行显示。 本任务主要涉及字符数组、指针、结构体和文件操作的综合运用,字符模 式的简单动画和色彩显示的程序设计与所使用的系统相关,不是标准 C 的内容, 其实现需要参考 MSDN 中的 Platform SDK Documentation 相关资料(见后) 。 三、课程设计应完成的工作 程序运行后,显示一个操作界面,用户可选择“添加、删除、查找、排序 (按学号或按姓名)和列表输出”等功能,用户选择某一功
2、能后,程序或者提 示下一步输入(添加、删除、查找) ,或者输出结果(排序(按学号或按姓名) 、 列表输出) 。 程序对用户的错误输入数据应有一定的考虑,不至于导致错误的运 行结果。 如果程序运行时尚未建立通讯录文件,应先创建,否则在原通讯录文件上 进行相应的操作。 记录或复制各步骤的主要屏幕显示内容作为实验测试数据保留。 四、课程设计进程安排 序号设计各阶段内容地点起止日期 1 熟悉 VC6 环境下 C 程序开发的方法和步骤, 选择设计任务,程序设计资料搜集实 3-508 1.7 2 制定实现算法,设计中等详细度的流程图, 编写框架程序实 3-508 1.8 3 独立编写各模块的具体实现程序,
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“Pl
4、atform SDK DocumentationBase ServicesWindows System InformationTime” 发出任务书日期 2008 年 1 月 2 日 指导教师签名 计划完成日期 2008 年 1 月 13 日 基层教学单位责任人签章 主管院长签章 摘 要 本设计基于C语言设计平台,在VC6环境下C语言程序的创建、编辑、编译和调试改错等 设计过程,设计了一个简单的电子通讯录。 重点实现了从原有通讯录数据添加、查询、插入、 删除及定格式输入输出。 通过控制台,用户根据操作界面提示,实现对通讯录资料的更改。 通过多维结构体数组获取即使信息,然后以读写文件方式将其回传
5、到用户指定的通讯录文件 上,实现用户数据的读写。 本程序具有简单的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.
6、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 使用文本文件
7、保存以往的所有学生信息,添加、删除和排序后应更新该文本文件 3程序运行后,应有一个简单的操作界面。 如有可能,用字符绘制一个简单的菜单界面,并随用户输 入情况使用不同的颜色和动画进行显示。 4字符数组、指针、结构体和文件操作的综合运用 5 熟悉 VC6 环境下 C 程序开发的方法和步骤,选择设计任务,程序设计资料搜集 6 制定实现算法,设计中等详细度的流程图,编写框架程序 7 独立编写各模块的具体实现程序,按照流程图完成完整程序的编写(结合调试) 8 独立完成程序的调试、差错定位和排错,修改完善程序功能,完成设计任务 2 原理与模块介绍原理与模块介绍 2.1 输出记录模块 利用文件的录入操作函
8、数及文件指针的使用可完成此操作。 2.2 增添记录模块记录模块 对于电子通讯录这样一张顺序表来说,内容的录入是必不可少的操作。 由于采用的是顺序存 储结构。 这项工作只需要在把输入的信息按顺序放在空的 friends 数组元素中即可。 函数 Data_Input 完成了信息的录入工作。 2.3 插入与删除模块模块 在实际使用中,数据资料输入后,还需要不断的更新和维护操作,最常见的是数据的插入与删 除。 作为顺序表来说,如何在插入与删除数据资料后仍然能保持原有数据之间的关系,是需 要考虑的关键问题。 利用顺序表的所有元素加减移动便可实现此功能。 2.4 查询模块 用名字可查询到有关些名字的记录,
9、查找出相应名字的字符串并嵌套 Data_Show 函数实现此 功能。 2.5 保存退出程序模块 以文件及文件指针操作为主的 void Data_Save实现此功能。 电子通讯录功能如下 Function choose 1.输出记录 2.增加记录 3.删除记录 4.查询记录 5.插入记录 6.保存退出 7.退出程序 上图是电子通讯录的主菜单,利用它,将能够轻松地录入一个同学的电话号码,通讯地址和 出生日期,而且它还提供了检索和删除功能。 还可按学号进行排序,这些都有助于该通讯录 的管理。 电子通讯录是采用线性表作为程序的基本结构的。 3 设计方案设计方案 3.1 软件设计思想 1)、设计思想 用
10、顺序表设计电子通讯录的结构 为了表示较为复杂的数据内容,一般用结构这种数据类型,第一步就是在结构中定义所需要 的各项信息。 一般的通讯录都包括姓名,性别,出生年月,通讯地址和联系电话这几项,而 在这几项中,出生年月又包括年份,月份和日期三项,通讯地址包括邮箱和宿舍二项,我们 把这些联系较为紧密的内容又用单独的结构表示,这样就产生了电子通讯录的基本结构。 struct addr char post_num10; char add40; ; struct birth int year; int month; int day; struct friend1 int number; char name
11、20; 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、删除记录模块 输出“没有记录”删除
12、选中的记录 没有保存记录有保存记录 跳出 4、查询记录模块 输入要查询的姓名 查找到结果 输出结果 跳出 跳 5、插入记录模块 输入要插入的学号 插入一条记录 跳出 6、保存退出模块 将记录保存到文本文件 退出程序 7、退出程序模块 退出不退出 yn 4 实验结果与数据处理实验结果与数据处理 4.1 测试步骤及实验现象 1)功能 1 及功能 2 的实现,记录的输出及增加记录。 如下图 2)功能 3 及 4 的实现首先用查询功能可查到学号为 1 的记录,用功能 3 将此记录删除后, 再用 4 功能便不可看到些记录。 如下图 3)功能 5 的实现插入学号为“1”的记录,用输出功能可以看见刚刚插入的
13、记录。 如下图 4)功能 6 和功能 7 的实现选择 6 和 7 后程序退出。 如下图 5 结论与问题讨论结论与问题讨论 5.1 完成实验的基本要要求 总的来说设计出一个学生电子通讯录,可以进行添加、删除、查找、排序(按学号)和列表 输出的完整程序。 1 学生电子通讯录每个学生的信息包括学号 姓名 性别 出生日期 宿舍 电话 Email 2 使用文本文件保存以往的所有学生信息,添加、删除和排序后应更新该文本文件 3程序运行后,有一个简单的操作界面。 4字符数组、指针、结构体和文件操作的综合运用 5 熟悉 VC6 环境下 C 程序开发的方法和步骤,选择设计任务,程序设计资料搜集 6 制定实现算法
14、,设计中等详细度的流程图,编写框架程序 7 独立编写各模块的具体实现程序,按照流程图完成完整程序的编写(结合调试) 8 独立完成程序的调试、差错定位和排错,修改完善程序功能,完成设计任务 5.2 遇到的问题及解决办法 1) 、在实际使用中,数据资料输入后,还需要不断的更新和维护操作,最常见的是数据的插入与删除。 作为顺 序表来说,如何在插入与删除数据资料后仍然能保持原有数据之间的关系 解决方法的插入算法如下 printf“ntInsert No“; /*录入插入位置*/ scanf“d“, forji1;jk;j- /*插入位置后的元素顺序后移*/ strcpyfriendsj.name,fr
15、iendsj-1.name; /*交换元素内容*/ friendsj.sexfriendsj1.sex; friendsj.birth.yearfriendsj-1.birth.year; friendsj.birth.monthfriendsj-1.birth.month; friendsj.birth.dayfriendsj-1.birth.day; strcpyfriendsj.addr.post_num,friendsj-1.addr.post_num; strcpyfriendsj.addr.addr,friendsj-1.addr.addr; strcpyfriendsj.tele
16、phone,friendsj-1.telephone; Data_Inputk; /*插入位置上填入待插入元素*/ i; /*总元素个数增 1*/ 删除算法如下 printf“ntDelete No“; /*读入删 除位置*/ scanf“d“, forjk;j include include include include struct addr char post_num10; FILE *fp; int i; void Data_Load int j; long k; fpfopen“friend.txt“,“rt“; /*打开文件 friend.txt*/ iffpNULL fori1
17、;ii printf“nt 搜索完毕n“; break; case 2 whilegetch0x1b break; case 5 printf“nt 插入学号“; scanf“d“, forji1;j strcpyfriendsj.name,friendsj-1.name; friendsj.sexfriendsj-1.sex; strcpyfriendsj.addr.add,friendsj-1.addr.add; i; case 6 Data_Save; exit0; case 7 printf“nt 是否保存y/n“; chgetch; ifch y Data_Save; fclosefp; default printf“请选1-4n“; while1;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1