




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电话簿管理程序课件 电话簿管理程序 程序设计基础模拟项目之一 电话簿管理程序课件 项目目标 通过该模拟项目巩固C语言所学知识 主要包括 指针 链表 结构体 预编译 宏定义 函数调用 数组 文件读写 enum typedef等 将所学各项离散的C语言知识进行自然的 有机的组合运用 学习完整的项目开发过程 包括 功能需求分析 系统概要设计 系统详细设计 编码和测试 建立程序设计和算法设计基本思想 用C语言完成一个完整的电话簿管理程序 电话簿管理程序课件 项目所需完成的任务 功能需求分析系统概要设计 包括数据结构设计 功能接口设计 关键算法设计 界面设计等 系统详细设计 程序框架设计 文件结构 函数设计 代码编写调试和测试 单元测试和系统测试 电话簿管理程序课件 示例 从以下方面来示范一个电话簿管理程序1 功能需求分析2 系统概要设计3 系统详细设计4 代码编写5 调试和测试 从开发者的角度 电话簿管理程序课件 1 功能需求分析 增加记录修改记录删除记录根据查询条件查询符合条件的记录程序退出时能保存所有记录程序启动时能读入所有记录 每条记录所包括的内容 格式等 电话簿管理程序课件 2 系统概要设计 2 1系统结构系统结构包括系统物理结构和系统逻辑结构 a 物理结构 从硬件结构 部署 的角度例 电话簿管理程序课件 2 系统概要设计 b 逻辑结构 从软件结构 部署 的角度例 电话簿管理程序课件 2 系统概要设计 c 各软件功能划分 略 电话簿管理程序课件 2 系统概要设计 d 功能需要分配表 略 电话簿管理程序课件 2 系统概要设计 本系统的物理结构 单机 PC 本系统的逻辑结构 磁盘 电话簿管理程序 记录数据 电话簿管理程序课件 2 系统概要设计 2 2开发技术a 操作系统WindowsXPb 开发环境 开发平台 VisualC c 开发语言C语言 电话簿管理程序课件 2 系统概要设计 2 3数据结构 接口 内部和外部接口 a 用于存放单个名片的结构typedefstruct intmemberID 成员ID号charname LEN NAME 1 成员姓名SEXsex 成员性别charteleNo LEN TELENO 1 成员的电话charaddr LEN ADDRESS 1 成员地址charemail LEN EMAIL 1 成员e mail地址GROUPTYPErelation 分组信息 ElemType 电话簿管理程序课件 2 系统概要设计 2 3数据结构a 用于存放单个名片的结构 续 enumSEX 性别 FEMALE 0 MALE 1 分组enumGROUPTYPE FRIENDS 0 FAMILYMEMBERS CLASSMATES COLLEAGUE OTHER 电话簿管理程序课件 2 3数据结构b 用于存放所有名片的结构链表 最后一个空节点的作用 避免用指针的指针 在稍后的程序中讲解 掌握指针 函数参数传值和传指针的不同执行结果 2 系统概要设计 电话簿管理程序课件 2 3数据结构b 用于存放所有名片的结构 续 定义链表的结点结构typedefstructSTRU NODE ElemTypedata 结点数据structSTRU NODE next 指向下一个结点的指针 LinkList typedefSTRU NODELNode 2 系统概要设计 电话簿管理程序课件 2 系统概要设计 2 4数据存放永久性的数据存放主要有两种方式 写入数据库和写入文件 本项目选择写入文件 电话簿管理程序课件 2 系统概要设计 2 5程序功能接口设计对照程序所要完成的功能 设计出如下接口 voidAddMember LinkList L 往电话本中添加一个记录voidDelMember LinkList L 从电话本中删除一个记录voidModifyMember LinkList L 修改成员信息voidSearchMember LinkList L 查询记录voidDisplayAll LinkList L 显示所有记录信息 电话簿管理程序课件 2 系统概要设计 2 5程序功能接口设计 续 boolReadDataFrom L char 从文件中读入保存的记录信息boolWriteDataTo L char 将所有记录写入文件 电话簿管理程序课件 2 系统概要设计 2 6界面设计 电话簿管理程序课件 3 系统详细设计 3 1程序框架设计程序的主程序框架用以下伪代码说明 voidmain 程序初始化工作生成一个含有一个空节点的链表 从文件中读出数据并插入链表中 显示程序信息 程序运行方式调用用户界面 接受用户的输入并响应 程序结束工作将电话本 链表 中的数据保存到文件中 销毁链表 回收new分配的空间 电话簿管理程序课件 3 系统详细设计 3 1程序框架 main函数 详细设计 续 voidmain 生成一个含有一个空节点的链表LinkList L newLNode 1 InitElem 销毁链表 回收new分配的空间 电话簿管理程序课件 3 系统详细设计 3 1程序框架 main函数 详细设计 续 voidRun LinkList L do 提示用户选择操作 switch 用户选择 根据用户选择调用相关函数完成指定的操作 case添加一个成员 AddMember L break case删除成员 DelMember L break case修改各项信息 ModifyMember L break case查询记录信息 SearchMember L break case所有记录信息 DisplayAll L break default break while 选择 退出 电话簿管理程序课件 3 系统详细设计 3 2功能接口详细设计 往电话本中添加一个记录a voidAddMember LinkList L 输入新的记录信息 if 该记录信息已经存在于链表之中 提示操作失败信息 显示已经存在的记录信息 返回 将记录信息插入链表 电话簿管理程序课件 3 系统详细设计 3 2功能接口详细设计 从电话本中删除一个记录b voidDelMember LinkList L 输入查询条件 查找符合条件的记录 if 找到符合条件的记录 显示该记录信息 从链表中删除记录 reutrn 提示删除失败信息 电话簿管理程序课件 3 系统详细设计 3 2功能接口详细设计 在电话本中修改一个记录c voidModifyMember LinkList L 输入查询条件 在链表中查找符合条件的记录 if 找到符合条件的记录 显示记录信息 输入新的记录信息 在链表中修改记录信息 reutrn 提示修改失败信息 电话簿管理程序课件 3 系统详细设计 3 2功能接口详细设计 往电话本中查找一个记录d voidSearchMember LinkList L 输入查询条件 在链表中查找符合条件的记录 if 找到符合条件的记录 显示记录信息 reutrn 提示查找失败信息 电话簿管理程序课件 3 系统详细设计 3 2功能接口详细设计 显示电话本中所有的记录信息e voidDisplayAll LinkList L for inti 0 i LenthOfList i 显示记录信息 电话簿管理程序课件 3 系统详细设计 3 2功能接口详细设计 将所有记录写入文件f boolWriteDataTo L char 打开保存信息的数据文件 if 打开文件成功 for inti 0 i LenthOfList i 将记录写入文件中 reutrn 提示打开文件失败信息 电话簿管理程序课件 3 系统详细设计 3 2功能接口详细设计 从文件中读入保存的记录信息g boolReadDataFrom L char 打开保存信息的数据文件 if 打开文件成功 while fread记录信息成功 将记录信息加入链表 提示打开文件失败信息 电话簿管理程序课件 3 系统详细设计 3 3文件结构从接口设计过程中可以知道我们需要操作链表 进行链表元素的增加 修改 查询和删除 需要操作文件 对文件进行读写 需要管理电话簿 对电话簿所管理的记录进行增加 修改 查询 删除和显示 需要响应用户的操作 因此我们用以下文件分别来完成相应的功能 电话簿管理程序课件 3 系统详细设计 3 3文件结构 续 文件结构划分原则 界面相关的函数放在同一文件中 操作相同数据结构的函数放在同一文件中 操作数据联系紧密的函数放在同一文件中 协同完成同一功能的函数放在同一文件中 电话簿管理程序课件 3 系统详细设计 3 3文件结构 续 1 elemtype h和elemtype cpp完成记录元素的定义及操作函数 电话簿管理程序课件 3 系统详细设计 3 3文件结构 续 1 ListManage h和ListManage cpp完成记录元素的定义 链表操作 查 插 删 改 记录文件的读写 电话簿管理程序课件 3 系统详细设计 3 3文件结构 续 2 AddressBook h和AddressBook cpp 主要协助主程序框架完成相应的功能 对电话簿中的记录进行插 查 删 改操作 对电话簿中的记录进行显示 读写文件生成一条新的记录 生成查询条件 电话簿管理程序课件 3 系统详细设计 3 3文件结构 续 3 AddressBookManage cpp主程序 完成main函数 电话簿管理程序课件 程序运行演示 上机实验 1 完成一个用于存放记录信息的结构体的定义 2 完成一组操作链表的函数 包括在链表中进行插 查 删 改 3 完成将链表中的数据写入本地文件和从本地文件中读入数据 与界面相关的函数接口定义 4 完成主程序框架 电话簿管理程序课件 4 代码编写及代码解析 编程规范由底向上的代码编写方法由顶向下的代码编写方法 电话簿管理程序课件 4 代码编写及代码解析 4 1文件elemtype h和elemtype cpp 电话簿管理程序课件 4 代码编写及代码解析 4 1文件elemtype h和elemtype cpp 1 什么是预编译 为什么要预编译头 ifndef LIST MANAGE H define LIST MANAGE H endif 电话簿管理程序课件 4 代码编写及代码解析 4 1文件elemtype h和elemtype cpp 续 2 宏定义 为什么用宏定义 有什么好处 defineLEN NAME16 defineLEN EMAIL32 defineLEN ADDRESS50 defineLEN TELENO16 3 如何定义一个枚举类型 4 如何定义一个结构体 5 typedef 电话簿管理程序课件 4 代码编写及代码解析 4 1文件elemtype h和elemtype cpp 续 对各个函数代码进行解析 函数voidInitElem ElemType e 的作用 变量初始化的重要意义 电话簿管理程序课件 4 代码编写及代码解析 4 2文件listmanage h和listmanage cpp 电话簿管理程序课件 4 代码编写及代码解析 4 2文件listmanage h和listmanage cpp 续 对各个函数代码进行解析 1 注释怎么写 写什么内容 2 new delete 3 函数调用 4 函数参数 传值和传指针有何不同 电话簿管理程序课件 4 代码编写及代码解析 4 3文件AddressBook h和AddressBook cpp 1 读写文件 2 标准输入输出 3 函数调用 电话簿管理程序课件 4 代码编写及代码解析 4 4文件AddressBookManage cpp程序框架main函数 电话簿管理程序课件 4 代码编写及代码解析 1 条件表达式的正确写法voidDisplayMemData ElemType memData if memData sex FEMALE 容易写成 printf FEMALE n elseprintf MALE n return 电话簿管理程序课件 4 代码编写及代码解析 2 条件表达式中布尔值的最佳写法voidDelMember LinkList L if InputCondition 比if InputCondition memData false 等写法要好 如果InputCondition的返回值不是布尔类型 禁止如下用法 if InputCondition memData 电话簿管理程序课件 4 代码编写及代码解析 3 判断指针是否为空的最佳写法voidDestroyList LinkList L while L NULL 很多人写成while L 错的 return 电话簿管理程序课件 4 代码编写及代码解析 4 枚举类型的实质voidDisplayMemData ElemType memData if memData sex FEMALE printf FEMALE n elseprintf MALE n return 电话簿管理程序课件 4 代码编写及代码解析 5 输入数值型变量之后再输入字符 串 型为什么需要getchar boolInputMemData ElemType memData printf 请输入ID号 int scanf d 电话簿管理程序课件 4 代码编写及代码解析 6 在对指针空间进行操作之前一定要保证指针空间的合法性boolInputCondition ElemType memData if memData NULL returnfalse 电话簿管理程序课件 4 代码编写及代码解析 7 字符 字符串输入输出操作函数getchar getc puts gets getline C printf scanf fread fwite 电话簿管理程序课件 程序运行演示 上机实验 1 完成一组操作电话簿记录的函数 包括在电话簿中进行插 查 删 改以及显示 2 完成主程序 3 完成整个工程下的所有编码且没有编译错误 文件AddressBook h AddressBook cpp和AddressBookManage cpp 电话簿管理程序课件 5 调试和测试 程序完成之后 在提交给外部进行测试之前需要进行内部测试本课程只学习内部测试 即从程序开发者的角度进行的最基本的测试 并对测试的过程和方法进行简化 为什么要进行测试和调试测试分为 单元测试和功能测试调试 在测试过程中定位错误的方法 电话簿管理程序课件 5 调试和测试 5 1单元测试单元测试又称模块测试 是针对软件设计的最小单位 程序模块 进行正确性检验的测试工作 其目的在于发现各模块内部可能存在的各种差错 单元测试需要从程序的内部结构出发设计测试用例 多个模块可以平行地独立进行单元测试 电话簿管理程序课件 5 调试和测试 5 1单元测试单元测试是在软件开发过程中要进行的最低级别的测试活动 在单元测试活动中 软件的独立单元将在与程序的其他部分相隔离的情况下进行测试 在一种传统的结构化编程语言中 比如C 要进行测试的单元一般是函数或子过程 在象C 这样的面向对象的语言中 要进行测试的基本单元是类 单元测试工具 软件 CppUnit 这是C 单元测试工具的鼻祖 免费的开源的单元测试框架 c Test 这是Parasoft公司的产品 C Test是一个功能强大的自动化C C 单元级测试工具 可以自动测试任何C C 函数 类 自动生成测试用例 测试驱动函数或桩函数VisualUnit 简称VU 是可视化 自动化 高效率的C C 单元测试 可视编程工具 功能强大 易学易用 电话簿管理程序课件 5 调试和测试 5 1单元测试例1 boolListInsert LinkList L ElemType e intindex 根据函数调用关系 先测试函数CopyElem测试的通常输入输出方式 界面和文件 优缺点 实际输出与期望输出不一致 bug 需要纠正在测试函数的设计过程中可以同时测试关联比较紧密
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 声测管注浆施工方案
- 美术培训机构宣讲
- 上海市延安实验初级中学2026届九年级英语第一学期期末监测模拟试题含解析
- 高胆红素血症的护理措施
- 行为管理安全培训
- 2026届石狮七中学英语九年级第一学期期末质量检测试题含解析
- 黑龙江省哈尔滨市松北区2026届化学九年级第一学期期中调研试题含解析
- 山东省济南市育英中学2026届九上化学期中质量检测模拟试题含解析
- 2026届吉林省长春市中学九年级化学第一学期期中达标测试试题含解析
- 2026届安徽省六安市舒城县九年级化学第一学期期末质量检测试题含解析
- 《销售培训实例》课件
- 糖尿病足的影像学鉴别诊断
- 象棋入门课件教学
- 2024-2030年能源行业市场深度分析及竞争格局与投资价值研究报告
- 休学申请书家长
- 香港买卖黄金佣金合同模板
- 3.2 摩擦力 课件 高一上学期物理人教版(2019)必修第一册
- 初中九年级数学中考复习讲义(20讲全)
- 2024年指标房转让买卖合同范本
- 排球课教案完整版本
- 2024土建工程承包合同范
评论
0/150
提交评论