概述 1
软件的基本概念 1
软件的概念 1
软件的特征 1
软件的分类 3
软件的发展和软件危机 6
软件的发展 6
软件危机 8
产生软件危机的原因 10
解决软件危机的途径 11
第1章 线性数据结构 13
1.1 数据结构概述 13
1.1.1 数据和数据结构 13
1.1.2 算法的描述及评价 15
1.2 线性表 17
1.2.1 线性表的逻辑结构及运算 17
1.2.2 顺序表类 18
1.2.3 链表类 20
1.2.4 线性表的基本应用 27
1.3 栈和队列 32
1.3.1 栈的逻辑结构与运算 32
1.3.2 堆栈类 33
1.3.3 队列 37
1.3.4 队列类 37
1.3.5 栈和队列的基本应用 44
1.4 串和数组 47
1.4.1 串及其运算 47
1.4.2 串的顺序和链式存储结构 48
1.4.3 数组 51
1.4.4 数组的顺序存储结构 52
1.4.5 矩阵的压缩存储 53
1.5 小结 54
习题 55
第2章 非线性数据结构 57
2.1 树的逻辑结构及其运算 57
2.2 二叉树 58
2.2.1 二叉树的定义及其运算 58
2.2.2 二叉树类 60
2.2.3 特殊二叉树 61
2.2.4 二叉树的遍历 65
2.3 树类 70
2.5 图的逻辑结构及其运算 73
2.4 森林与二叉树的转换 73
2.6 图类 75
2.6.1 邻接矩阵 75
2.6.2 邻接表 77
2.7 图的遍历 79
2.7.1 深度优先遍历连通图 79
2.7.2 广度优先遍历连通图 82
2.8 树和图的基本应用 84
2.9 小结 88
习题 88
第3章 查找和排序 90
3.1 什么是查找 90
3.2 顺序表的查找 91
3.2.1 顺序查找 91
3.2.2 折半查找 93
3.3 树表查找 94
3.2.3 分块查找 94
3.4 哈希查找 96
3.4.1 什么是哈希表 96
3.4.2 哈希表的建立 97
3.4.3 解决冲突的方法 97
3.4.4 哈希查找 99
3.4.5 平均查找长度的计算举例 100
3.5 什么是排序 102
3.6 简单插入排序 104
3.7 简单选择排序 105
3.8 冒泡排序 106
3.9 快速排序 107
3.10 归并排序 109
习题 112
3.11 小结 112
第4章 操作系统基础 114
4.1 操作系统概述 114
4.1.1 操作系统定义 114
4.1.2 CPU及进程管理 117
4.1.3 内存管理 122
4.1.4 外设管理 129
4.1.5 外存及文件系统 135
4.1.6 用户接口 147
4.1.7 程序员接口 150
4.2 三种典型操作系统的特点及比较 151
4.3 小结 153
习题 154
5.1 DOS操作系统编程模式 156
5.1.1 DOS结构 156
第5章 典型操作系统平台下的编程模式 156
5.1.2 DOS编程流程及开发工具 158
5.1.3 内存分配图 159
5.1.4 操作系统程序员接口 160
5.1.5 实例 162
5.2 UNIX操作系统编程模式 163
5.2.1 结构 163
5.2.2 编程流程及开发包 164
5.2.3 多进程编程特点 166
5.2.4 常见进程通信方式 166
5.2.5 程序员接口 169
5.2.6 实例 169
5.3 Windows编程模式 170
5.3.1 Widnows结构 170
5.3.2 WOSA及Windows DNA 172
5.3.3 事件及消息机制 173
5.3.4 多线程 175
5.3.5 编程流程及开发包 176
5.3.6 程序员接口 177
5.3.7 实例 178
5.4 小结 181
习题 182
第6章 数据库系统基础 184
6.1 概述 184
6.1.1 发展简史 184
6.1.2 数据库是什么 185
6.2 数据模型 187
6.3 数据库系统的结构 191
6.3.1 三级模式结构体系 191
6.3.3 数据库管理系统 192
6.3.2 数据库系统的构成 192
6.4 小结 193
习题 194
第7章 关系数据库系统基础 195
7.1 关系模型的数学定义和关系代数 195
7.1.1 关系模型的数学定义 195
7.1.2 关系代数及关系运算 198
7.2 关系数据库标准查询语言(SQL) 201
7.2.1 概述 201
7.2.2 DDL 202
7.2.3 DML 205
7.2.4 DCL 209
7.3.2 数据依赖 214
7.3.1 概述 214
7.3 关系数据库理论 214
7.3.3 规范化 215
7.4 关系数据库的安全性和完整性 218
7.4.1 安全性 218
7.4.2 完整性 219
7.4.3 并发控制 219
7.5 新型关系数据库概述 219
7.5.1 分布式关系数据库 219
7.5.2 对象关系数据库 220
7.5.3 数据仓库 220
7.6 小结 220
习题 221
8.1.1 主机/终端模式 225
8.1.2 C/S分布式模式 225
8.1 计算模式介绍 225
第8章 实用关系数据库管理系统应用基础 225
8.1.3 B/S模式 226
8.2 Oracle RDBMS介绍 226
8.2.1 概述 226
8.2.2 Oracle数据库的体系结构 227
8.2.3 分布式处理功能 229
8.3 PL/SQL语言 230
8.3.1 PL/SQL程序的结构 230
8.3.2 存储过程及触发器 238
8.4 数据库设计基础 240
8.5 应用实例 241
8.5.1 系统简介 241
8.5.2 系统分析和设计 242
8.5.3 系统实施 244
8.6 小结 246
习题 246
第9章 软件工程 248
9.1 软件工程 248
9.1.1 软件工程概述 248
9.1.2 软件工程的基本原理 250
9.1.3 软件工程的基本目标 251
9.1.4 传统软件工程模式 252
9.1.5 现代软件工程模式 253
9.2 软件生存周期 254
9.2.1 软件生存周期各个阶段的主要任务 256
9.2.2 软件生存周期模型 258
9.3 软件工程管理 261
9.3.1 软件工程项目管理的任务 261
9.3.2 软件人员组织与管理 264
9.3.3 软件配置管理 266
9.3.4 软件知识产权保护 268
9.4 小结 270
习题 271
第10章 传统的软件开发方法 273
10.1 结构化开发方法概述 273
10.2 系统分析与定义 274
10.2.1 需求分析概述 274
10.2.2 需求分析的任务 275
10.2.3 系统需求分析的原则 277
10.2.4 系统需求分析的工具 277
10.2.5 结构分析方法(SA方法) 280
10.3 系统设计 282
10.3.1 软件设计概述 282
10.3.3 软件设计准则 284
10.3.2 软件设计原则 284
10.3.4 面向数据流的设计 288
10.3.5 详细设计 295
10.3.6 面向数据结构的设计 298
10.4 系统编程 303
10.4.1 软件编程概述 303
10.4.2 软件编程风格 303
10.4.3 程序设计语言 305
10.5 系统测试 306
10.5.1 软件测试概述 306
10.5.2 测试用例的设计 307
10.5.3 测试实施方法 311
10.5.4 软件调试 313
10.6.1 软件维护概述 315
10.6 软件维护 315
10.6.2 软件维护的任务 316
10.6.3 软件维护的副作用 318
10.6.4 软件的可维护性 319
10.7 小结 321
习题 322
第11章 面向对象的软件开发方法 324
11.1 面向对象方法概述 325
11.1.1 面向对象方法 325
11.1.2 实体和对象 328
11.1.3 服务和消息 330
11.1.4 类和类层次 331
11.1.5 OO方法的特点 334
11.2.1 OOA方法概述 340
11.2 面向对象分析OOA 340
11.2.2 确定对象 342
11.2.3 确定属性和服务 344
11.2.4 建立结构 347
11.2.5 确定关联 348
11.3 面向对象设计OOD 351
11.3.1 OOD的基本准则 351
11.3.2 设计要点 352
11.3.3 系统分解 352
11.3.4 问题域子系统的设计 353
11.3.5 用户界面子系统的设计 356
11.3.6 任务管理子系统的设计 357
11.3.7 数据管理子系统的设计 358
11.3.8 程序设计语言的影响 359
11.4 小结 360
习题 361