第 3 章 CAD/CAM 软件基础 要点: 1. 了解工程数据库的概念和数据结构 2. 掌握数据库的建立和使用方法 3. 熟悉关系型数据库 4. 了解软件工程
3.1 数据的有关概念 1. 数据是描写客观事物的数字、字符、文 字的集合,是能输入计算机处理的符号。 2. 数据元素是数据的基本单位,是数据集 合一个相对独立的个体。 3. 数据的逻辑结构是数据间的逻辑关系, 数据的物理结构是数据的存储结构,包 括数据元素及关系,以位及节点表示。 4. 数据类型即变量种类,决定数据大小。
3.2 数据结构 线性表 1. 线性表的逻辑结构 是简单的 n 个元素的有限序列,逻辑结构: (a1,a2,a3, ┄,ai-1,ai,ai+1, ┄,an-1,an) 2. 线性表的顺序存储结构 用一组连续存储单元存放逻辑顺序的数据, 数据元素的地址和逻辑顺序关系一一对应
线性表的顺序寻址 若每个元素占用 j 个存储单元,第一个元 素的地址为 Loc(ai), 则 i 个元素的地址为: Loc(ai)=Loc(ai)+(i-1)Xj 线性表顺序存储结构的特点如下: ( 1 )均匀性,每个元素占用的长度相同 ( 2 )有序性,存储顺序和逻辑顺序相同
线性表的删除和插入运算 ( 1 )删除一个数据元素 从数据表中删除一个数据元素后,被删除 元素后的所有元素均向前移动一个单元。 ( 2 )插入一个数据元素 将一个数据插入到 i 位置,原 i 位置及其后 的所有数据均向后移动一个单元,然后 在 i 位置插入新数据。
3. 线性表的链式存储结构 ( 1 )链式存储结构的特点 存储单元是不连续的,存储的除数据外,还 有直接后继和直接前趋,这种存储映像称为 称为结点,包含数据域和指针域。 ( 2 )单向链表 只有一个指针域,指向直接后继(或前趋), 指向第一个结点的地址指针称为表头,数据 域可空,最后结点的指针域为空。见图 3-1 。
单向链表的建立、删除和插入 1. 建立单向链表:定义数据类型,数据域和指 针域,指针域中存放直接后继地址 2. 删除一个元素:删除 i 个数据元素,将第 i- 1 个结点指针指向 i+1 个结点,释放 i 结点 的空间。 3. 插入一个元素:在 i 个数据元素前插入一个 数据,先建一个新结点,将 i-1 结点的指针 指向新结点,新结点指针指向 i 结点的地址。
( 3 )双向链表 在单向链表的基础上,每个结点增加一 个直接前趋的指针域,构成双向链表。 双向链表的第一个结点没有直接前趋, 指针域为空,最后一个结点也没有直接 后继,指针域也为空。再增加一个结点 做表尾,存放最后一个结点的地址。 双向链表的结构示意图如 3-2 所示。
双向链表的建立、删除、插入 1. 建立双向链表:定义结点的数据结构,数据 存放信息, Next 指针域、 Last 指针域、 Hand 表头、 Rear 表尾的地址。 2. 删除数据元素:删除第 i 元素,结点 i-1 的后 继指针指向 i+1 、 i+1 的前趋指针指向 i-1 , 释放 i 空间。 3. 插入数据元素:在 i 结点前插入,建立新结 点,其 Next 指向 i , Last 指向 i-1 ; i-1 结点 Next 的指向新结点,原 i 结点 Last 的指向新结点.
4. 循环链表 将链表的首尾相接,成为循环链表。可分 为单向和双向循环链表两种。见图 3-4 循环链表和普通链表相比,其最后结点的 指针域不空,存放指向表头的地址。 循环链表查找结点比较方便,可以从表中 的任意结点位置出发,顺链指针找出需要 的结点。
链表与线性表比较具有的特点 1. 删除和插入结点时,其他数据元素不需 要移动; 2. 不需要事先分配存储空间,不浪费存储 单元; 3. 表的容量根据需要动态申请和释放,存 储空间利用率高。 链表适用于表容量变化,增删操作频繁。
3.2.2 树和二叉树 树是一类重要的非线性数据结构,元素之间 存在明显的层次关系。 1. 树:由 1 个或多个结点组成的有限集 T ,其 中有一个特定的结点称为根结点,其余结 点分为 n 个互不相交的有限集,这些集本身 又是一棵树,称为该树的子树。有 2 个特点: ( 1 )树中至少有一个根结点, ( 2 )各棵子树是相互独立,互不相交的集合。
2. 二叉树 二叉树的每个结点至多有 2 棵子树,有左 右区分,二叉树与一般树的区别在于: ( 1 )一般树至少要有 1 个结点,二叉树可 以是空的; ( 2 )一般树每个结点可以有多个子树,二 叉 树每个结点的子树不能超过 2 个; ( 3 )一般树的子树次序不分,二叉树的子 树有左右之分,不能颠倒。
3. 二叉树的遍历 以 D 、 L 、 R 分别表示访问根结点,遍厉左子 树、遍历右子树,则二叉树的遍历方式有 6 种: DLR , LDR , LRD , DRL , RDL , RLD 。如 果限定先左后右,则只有 3 种方式, DLR (前序遍历), LDR (中序遍历), LRD (后序遍历)。 一次完整的遍历过程,把树中的结点信息 转化为一个线性序列。
4. 二叉排序树 二叉排序树的检索效率很高。排序规则为: 若左子树不空,则左子树中的所有结点的值 均小于根结点的值;右子树不空,则右子树 中所有的值均大于或等于根结点的值。 根据定义,可以将一个数据元素序列构造 为二叉排序树,通常采用逐步插入结点的方 法来构造一个二叉排序树:
设 K={k1,k2, ┄,kn} 为数据元素序列,从 k1 开始依次取出序列中的元素建立二叉排 序树,每取出一个元素 ki ,按下列原则建 立二叉排序树的一个新结点: ( 1 )若二叉排序树为空,则新的数据元素 就是二叉排序树的根结点。 ( 2 )若二叉排序树非空,则将该数据元素 与根结点的进行比较,小于根结点的值,该 数据插入到左子树中,否则,插入右子树。
3.3 工程数据库 工程数据和工程数据库 1. 工程数据的特点及管理:工程数据的特 点是数据量大、种类多、结构复杂、动 态变化、集中管理、整个生产过程共享。 2. 数据库系统原理:数据库管理系统提供 对数据的定义、建立、检索、修改等操 作,以及对数据的安全性、完整性、保 密性的统一控制。
3. 数据库的数据模型:常用有层次型、网络型、 关系型 3 种。 层次型是树型结构,相互关系是 “ 一对多 ” , 如图 3-7 所示; 网络型是网状结构,相互关系是 “ 多对多 ” , 如图 3-8 所示; 关系型是二维表的组织结构,每一张二维表 称为一个关系,表中每一行是一个记录,列为 相应的数据项。表 3-1 为平口钳的零件数据库。
3.3.2FOXPRO 基本特征: 1. 符合 XBASE 标准, 2. 与 Foxbase 和 Dbase 完全兼容, 3. 良好的图形用户界面, 4. 多窗口技术, 多条命令和技术, 6. 文本编辑器功能强, 7. 图形工具多, 8. 较完善的真编辑功能,
10. 内嵌 SQL , 11. Rushmore 查询, 12. 纠错机制, 13. 内部报表生成器, 14. 键盘、鼠标 2 种操作, 15. 自定义键盘, 16. 硬件适应性好, 17. 支持网络环境, 18. 速度快, 19. 数据传输安全。
5. 与高级语言的接口 FoxPro 的数据库功能强,但分析计算能 力差。 由数据库文件 (*.dbf) 生成文本 (*.txt) 送 C 。 C 语言的文本文件追加到数据库中。 FoxPro 的 SDF 标准数据格式文件。 FoxPro 的 DELIMITED 通用格式数据文件。
2 ) FoxPro 文件的建立和接收 建立文本格式文件: COPY TO TYPE 接收文本格式文件: APPEND FROM TYPE FoxPro 与 C 语言的接口;
3.4 软件工程方法和开发工程 软件基本要求: 1. 满足用户需要, 2. 完整文档资料、培训, 3. 可靠的质量, 4. 可维护性和可扩充性。
3.1.4 软件开发和软件工程 1. 应用软件开发:为解决特定问题而编, 应考虑应用支撑环境,包括硬件、软件 等。 2. 软件工程概念:和硬件一样,软件有自 身的一些特点: 软件的功能是对数据进行处理;软件是 一种结构复杂的智力产品;软件的功能、 所有方法需要说明;软件需要严格测试。
3.4.2 软件开发步骤 1. 软件分析阶段:包括系统定义和软件需 求分析两个方面; 2. 软件设计阶段:确定软件结构,划分软 件模块及联系和接口; 3. 软件实现阶段:软件编码和测试; 4. 软件维护阶段:改错、适应和完善
3.4.3 软件开发方法 1. 组织和实施:软件开发一般是多人合作 完成,要考虑技术结构合理,人员配套。 软件开发 2 种模式:一种是生命周期模 式,另一种是原形模式。 2. 分析与设计:了解应用背景,构思数据 模型,善于抽象思维,逐步完善。 3. 编码与测试:先搭编码的框架,逐步完 善。测试找出软件的错误。反复进行。