第1篇 Java基础篇 2
第1章 Java平台及开发环境的搭建 2
1.1 Windows下Java开发环境的配置 2
1.1.1 相关软件介绍 2
1.1.2 应用平台 3
1.1.3 解析JDK结构 4
1.2 Eclipse安装和使用 4
1.2.1 Eclipse的下载和安装 4
1.2.2 MyEclipse下载和安装 5
1.3 JBuilder集成开发环境介绍 5
1.4 NetBeans集成开发环境介绍 6
1.5 本章小结 6
第2章 理解Java语言 7
2.1 Java的发展历程 7
2.1.1 Java的现状 7
2.1.2 Java语言的应用领域 8
2.1.3 Java编程语言的主要目标 8
2.1.4 Java JVM虚拟机 8
2.1.5 垃圾收集机制 9
2.1.6 Coin项目 9
2.2 Java语言的特性 10
2.3 Java中的面向对象编程 12
2.3.1 对象的定义及操作 12
2.3.2 抽象 13
2.3.3 如何定义对象类 13
2.3.4 类和对象的关系 14
2.3.5 对象操作 14
2.3.6 封装 15
2.3.7 继承与子类 15
2.3.8 多态 16
2.3.9 模板/泛型(template/generic) 17
2.3.10 注解 17
2.4 Java程序结构 18
2.4.1 学习Java应用程序的编写 18
2.4.2 解析FirstHelloWorldApp.java 18
2.4.3 编译并运行FirstHelloWorldApp 18
2.4.4 使用package管理类 20
2.4.5 包的引用 21
2.4.6 目录布局及CLASSPATH环境变量 21
2.4.7 编译查错 22
2.4.8 从JDK到IDE 23
2.5 Java与C/C++、C#的比较 28
2.5.1 全局变量 28
2.5.2 goto 29
2.5.3 指针 29
2.5.4 内存管理 30
2.5.5 数据类型的支持 31
2.5.6 类型转换 31
2.5.7 头文件 31
2.5.8 结构和联合 32
2.5.9 预处理 32
2.6 本章考试、面试问题分析 32
2.7 实验:Java运行环境的安装、配置与运行 33
2.8 问题集锦与解答 36
2.9 自我检测 37
2.10 本章小结 37
第3章 Java标识符、关键字和类型 38
3.1 Java基本语法 38
3.1.1 程序注释 38
3.1.2 分号、块和空白块 40
3.1.3 标识符 40
3.1.4 Java关键字 41
3.1.5 Java编码约定 42
3.2 数据类型 43
3.2.1 简单数据类型 43
3.2.2 复合数据类型 44
3.2.3 常量与变量 44
3.2.4 整型数据 45
3.2.5 浮点型(实型)数据 45
3.2.6 字符型数据 46
3.2.7 布尔型数据 47
3.2.8 枚举类型 48
3.3 二进制字面值 49
3.4 在数值字面量中使用下划线 50
3.5 本章程序设计案例 50
3.6 本章考试、面试问题分析 51
3.7 实验:Java标识符、关键字和类型练习 52
3.8 问题集锦与解答 53
3.9 自我检测 53
3.1 0本章小结 54
第4章 表达式和流控制 55
4.1 变量 55
4.1.1 变量的声明和作用域 55
4.1.2 变量初始化 56
4.2 运算符 57
4.3 算术运算 58
4.3.1 二元算术运算符 58
4.3.2 一元算术运算符 58
4.3.3 整数计算 59
4.3.4 整数除法和余数 59
4.3.5 其他算术运算 59
4.3.6 混合运算自动类型转换 60
4.3.7 混合运算强制类型转换 61
4.4 逻辑关系运算 61
4.4.1 关系运算符 61
4.4.2 布尔逻辑运算符 62
4.5 位运算 63
4.5.1 位运算符 63
4.5.2 位移运算 63
4.5.3 位逻辑运算符 64
4.6 顺序结构 64
4.7 分支结构 65
4.7.1 条件语句if-else 65
4.7.2 多分支语句switch 65
4.7.3 Java 7的switch分支语句 67
4.8 循环结构 68
4.8.1 while循环语句 68
4.8.2 do-while循环语句 68
4.8.3 for语句 69
4.9 控制循环结构 69
4.9.1 return语句 69
4.9.2 continue语句 70
4.9.3 break语句 70
4.9.4 带标签的break 72
4.9.5 带标签的continue 72
4.9.6 各种控制语句在实际编程中的应用 73
4.10 本章程序设计案例 75
4.11 本章考试、面试问题分析 76
4.12 实验:Java表达式和流控制练习 77
4.13 自我检测 79
4.14 本章小结 80
第5章 数组和字符串 81
5.1 一维数组 81
5.1.1 一维数组的定义 81
5.1.2 一维数组元素的引用 82
5.1.3 一维数组的初始化 83
5.1.4 一维数组在实际编程中的应用方法 83
5.2 多维数组 84
5.2.1 二维数组的定义 84
5.2.2 二维数组元素的引用 84
5.2.3 二维数组的初始化 84
5.2.4 二维数组在实际编程中的应用 85
5.2.5 复制数组 86
5.3 字符串 86
5.3.1 字符串字面量 86
5.3.2 String对象的创建 87
5.4 字符串操作 87
5.4.1 字符串基本方法 87
5.4.2 字符串的比较 88
5.4.3 从字符串中提取子串 88
5.5 可变字符串 89
5.5.1 创建StringBuffer对象 89
5.5.2 使用StringBuffer对象 90
5.5.3 删除StringBuffer对象 90
5.5.4 StringBuffer对象的容量 91
5.6 本章考试、面试问题分析 91
5.7 实验数组和字符串 92
5.8 问题集锦与解答 94
5.9 自我检测 95
5.10 本章小结 95
第6章 类、对象、包和接口 96
6.1 类 96
6.1.1 类的声明 96
6.1.2 类体 97
6.2 定义方法 97
6.2.1 方法的返回值 98
6.2.2 方法的参数列表 98
6.3 构造方法 99
6.3.1 构造方法 99
6.3.2 默认构造方法 99
6.4 类成员 100
6.4.1 成员变量 100
6.4.2 显式成员初始化 101
6.4.3 单根(Singleton)类 101
6.5 方法重载 102
6.5.1 多个构造方法 102
6.5.2 调用重载构造方法 102
6.6 对象 103
6.6.1 对象生成 103
6.6.2 对象的使用 103
6.6.3 构造函数的特点 105
6.7 继承 106
6.7.1 继承的概念 106
6.7.2 继承定义 106
6.7.3 扩展类 107
6.7.4 属性继承与隐藏 109
6.7.5 方法继承、覆盖与重载 109
6.7.6 在子类中使用构造方法 110
6.7.7 @Override标记 110
6.8 多态与动态绑定 111
6.8.1 多态 111
6.8.2 动态绑定 112
6.8.3 父类对象与子类对象的使用与转化 112
6.8.4 Instanceof运算符 113
6.8.5 多态性在实际编程中的应用 113
6.8.6 泛型 114
6.8.7 Java 7泛型的“菱形”语法 116
6.8.8 构造方法的继承与重载 117
6.8.9 参数可变的方法 118
6.8.10 Java 7优化变长参数的方法调用 120
6.9 抽象类与抽象方法 120
6.9.1 抽象类 120
6.9.2 抽象方法 121
6.9.3 访问控制符 122
6.10 包 123
6.10.1 包的作用 123
6.10.2 包的创建 123
6.10.3 包的引用 123
6.10.4 向包中添加类 124
6.10.5 包的作用域 124
6.10.6 静态引用 124
6.11 接口 125
6.11.1 接口概念 126
6.11.2 接口声明 126
6.11.3 接口的实现 127
6.12 静态变量 129
6.12.1 类(static)变量 129
6.12.2 类(static)方法 129
6.13 关键字final 130
6.13.1 final类 130
6.13.2 final方法 130
6.13.3 final变量 131
6.14 内部类 131
6.14.1 内部类定义 131
6.14.2 内部类属性 132
6.15 包装类 132
6.16 反射API 133
6.16.1 反射API特征 133
6.16.2 反射机制应用实例 134
6.17 本章考试、面试问题分析 135
6.18 实验:面向对象编程练习 137
6.19 问题集锦与解答 140
6.20 自我检测 140
6.21 本章小结 141
第2篇 Java标准类包篇 143
第7章 Java集合与工具类 143
7.1 Java集合 143
7.1.1 Java语言的util类 143
7.1.2 Collection接口 143
7.1.3 Collection的功能方法 144
7.2 List集合 145
7.2.1 LinkedList类 145
7.2.2 ArrayList类 147
7.2.3 Vector类 148
7.2.4 Stack类 148
7.3 Set集合 149
7.3.1 HashSet类 151
7.3.2 TreeSet类 152
7.3.3 LinkedHashSet类 152
7.3.4 EnumSet类 153
7.4 Map接口 154
7.4.1 Hashtable类 155
7.4.2 HashMap类 155
7.4.3 WeakHashMap类 156
7.4.4 EnumMap类 157
7.4.5 IdentityHashMap类 157
7.5 Queue集合 158
7.5.1 PriorityQueue实现类 159
7.5.2 LinkedList实现类 159
7.5.3 Deque接口与ArrayDeque实现类 160
7.6 日期操作 162
7.6.1 Date类 162
7.6.2 Calendar类 162
7.6.3 SimpleDateFormat类 163
7.7 Arrays类 164
7.7.1 数组排序 164
7.7.2 数组填充 165
7.7.3 数组比较 165
7.7.4 数组复制 166
7.8 java.lang.Math类和java.math包 167
7.8.1 java.lang.Math类 167
7.8.2 java.math包 167
7.9 Java Annotation 168
7.9.1 Java注释 168
7.9.2 @Override注释 168
7.9.3 @Deprecated注释 169
7.9.4 @SuppressWarnings注释 169
7.9.5 自定义注释 170
7.10 常用类 171
7.10.1 Object类 171
7.10.2 Java 7新增的Objects类 171
7.10.3 Java 7的ThreadLocalRandom与Random 172
7.10.4 BigDecimal 172
7.10.5 使用Scanner获取键盘输入 173
7.10.6 使用BufferedReader获取键盘输入 174
7.10.7 System类 174
7.10.8 Runtime类 176
7.11 本章考试、面试问题分析 177
7.12 实验:集合类的使用 178
7.13 自我检测 180
7.14 本章小结 182
第8章 异常处理 183
8.1 异常处理 183
8.1.1 异常的类型 184
8.1.2 不捕捉异常 184
8.2 异常处理机制 184
8.2.1 使用try-catch捕获异常 184
8.2.2 多个catch子句 185
8.2.3 try语句的嵌套 186
8.2.4 Java 7提供的多异常捕获 186
8.2.5 Java 7自动关闭资源的try语句 187
8.2.6 使用finally回收资源 188
8.3 使用throw抛出异常 189
8.3.1 throw语句 189
8.3.2 throws语句 189
8.3.3 Java 7增强的throw语句 190
8.4 异常分类 191
8.5 自定义异常 192
8.6 本章考试、面试问题分析 193
8.7 实验:异常处理 194
8.8 问题集锦与解答 195
8.9 自我检测 195
8.10 本章小结 196
第9章 多线程 197
9.1 多线程的概念 197
9.2 线程的创建和启动 198
9.2.1 继承Thread类创建线程类 198
9.2.2 实现Runnable接口创建线程类 199
9.2.3 使用Callable和Future创建线程 200
9.3 线程调度 201
9.4 线程的同步 202
9.5 线程的基本控制 203
9.5.1 显式定义线程 203
9.5.2 多线程例子 204
9.5.3 启动一个线程 204
9.5.4 操作线程 205
9.5.5 暂停一个线程 205
9.5.6 停止一个线程 205
9.5.7 常用线程API 205
9.6 线程池 206
9.6.1 Java 5实现的线程池 206
9.6.2 Java 7新增的ForkJoinPool 208
9.7 ThreadLocal类 210
9.8 本章考试、面试问题分析 212
9.9 实验:多线程 213
9.10 问题集锦与解答 214
9.11 本章小结 215
第10章 输入输出 216
10.1 Java输入/输出流 216
10.1.1 概述 216
10.1.2 标准输入/输出例子 216
10.2 字节流和字符流 217
10.2.1 InputStream和Reader 217
10.2.2 OutputStream和Writer 218
10.2.3 缓冲输入文件 222
10.2.4 格式化的内存输入 223
10.3 文件操作类 223
10.3.1 创建一个新的文件对象 224
10.3.2 在实际编程中读写文件 225
10.3.3 RandomAccessFile类 229
10.3.4 Java的文件管理 233
10.4 对象序列化 235
10.4.1 序列化的含义和意义 235
10.4.2 使用对象流实现序列化 236
10.4.3 对象引用的序列化 238
10.5 用Zip进行多文件保存 239
10.6 NIO 241
10.6.1 使用Buffer 242
10.6.2 使用Channel 243
10.6.3 字符集和Charset 244
10.6.4 文件锁 245
10.7 Java 7的N1O2 247
10.7.1 文件及路径操作API 248
10.7.2 使用FileVisitor遍历文件和目录 248
10.7.3 使用WatchService监控文件变化 250
10.7.4 访问文件属性 252
10.8 本章考试、面试问题分析 253
10.9 实验:流式I/O和文件 254
10.10 本章小结 255
第11章 网络编程 256
11.1 网络编程的基础知识 256
11.1.1 连接的地址 256
11.1.2 端口号 257
11.2. Java网络通信模型 257
11.2.1 Java网络模型 257
11.2.2 InetAddress类 257
11.2.3 使用URLDecoder类和URLEncoder类 259
11.2.4 URL类和URLConnection类 260
11.3 基于TCP协议的网络编程 261
11.3.1 TCP协议 261
11.3.2 使用Socket进行通信 261
11.3.3 使用ServerSocket创建TCP服务器端 263
11.3.4 使用NIO实现非阻塞Socket通信 264
11.3.5 使用Java 7的AIO 267
11.4 基于UDP协议的网络编程 272
11.4.1 UDP协议基础 272
11.4.2 DatagramPacket 272
11.4.3 DatagramSocket 273
11.4.4 UDP实现客户端/服务器端通讯 273
11.5 Java访问网络资源 275
11.6 实验:Java网络编程 276
11.7 本章小结 277
第12章 Swing编程 278
12.1 Swing概述 278
12.2 Swing基本组件的用法 279
12.2.1 Swing的类层次结构 279
12.2.2 Swing组件的多样化 280
12.2.3 MVC(Model-View-Control)体系结构 280
12.2.4 可存取性支持 280
12.2.5 支持键盘操作 281
12.2.6 设置边框 281
12.2.7 使用图标(Icon) 281
12.2.8 Swing程序结构简介 282
12.3 Swing组件和容器 282
12.3.1 容器组件的分类 282
12.3.2 使用容器的基本规则 283
12.3.3 Swing事件模型 284
12.4 图解应用集成开发环境设计GUI程序 285
12.4.1 框架API概述 285
12.4.2 图解创建GUI程序 285
12.5 各种容器面板 288
12.5.1 分层面板(JLayeredPane) 289
12.5.2 面板(JPanel) 289
12.5.3 滚动窗口(JScrollPane) 291
12.5.4 选项板(JTabbedPane) 291
12.5.5 工具栏(JToolBar) 291
12.5.6 内部框架(JIntemalFrarne) 291
12.6 常用组件 292
12.6.1 按钮(JButton) 292
12.6.2 复选框(JCheckBox) 293
12.6.3 单选按钮(JRadioButton) 293
12.6.4 文件选择器(JFileChooser) 293
12.6.5 Java 7增强的JColorChooser 296
12.6.6 标签(JLabel) 298
12.7 列表 298
12.7.1 使用List 298
12.7.2 使用JComboBox 302
12.8 菜单 303
12.9 滑动条(JSlider) 304
12.10 进程条(JProgressBar) 304
12.11 表格(JTable) 305
12.11.1 TableModel 305
12.11.2 表格的创建 306
12.12 使用JTree和TreeModel创建树 310
12.13 使用消息框 313
12.13.1 消息框(Message box) 313
12.13.2 确认对话框 315
12.13.3 选择对话框 315
12.13.4 信息提示对话框 315
12.13.5 数据录入对话框 316
12.14 使用文本区域 316
12.14.1 使用JTextPane 316
12.14.2 文件编辑器的创建 317
12.15 绘图 319
12.16 对话框(Dialog box) 321
12.17 选择外观(Look and Feel) 322
12.17.1 使用Pluggable Look and Feel 322
12.17.2 使用Java 7的Nimbus Look and Feel 322
12.18 Java 7新增的Swing功能 323
12.18.1 使用JLayer装饰组件 323
12.18.2 创建透明、不规则形状窗口 325
12.19 本章考试、面试问题分析 327
12.20 实验:建立图形用户界面 327
12.21 本章小结 328
第13章 Applet设计 329
13.1 Applet简介 329
13.1.1 编写Applet小程序 329
13.1.2 把Applet嵌入到网页 330
13.2 Applet基础 332
13.2.1 Applet类与JApplet类 332
13.2.2 Applet与Application的区别 333
13.2.3 Applet安全性 334
13.3 向Applet传递参数 334
13.4 将Application转化为Applet 335
13.4.1 Application程序 335
13.4.2 将Application转化为Applet的具体方法 337
13.4.3 Application与Applet组合 338
13.5 Applet与JAR文件 339
13.5.1 JAR文件概述 339
13.5.2 jar命令 340
13.5.3 为Applet生成数字签名 341
13.5.4 JNLP与Java Web Start 344
13.6 本章考试、面试问题分析 349
13.7 实验:Applet设计 349
13.8 本章小结 350
第3篇 Java扩展功能篇 352
第14章 Java图形图像编程 352
14.1 Java 2D API 352
14.1.1 概述 352
14.1.2 图形、文本和图像增强功能 353
14.1.3 使用Java 7的GraphicsEnvironment 353
14.2 基本图形绘制模型 354
14.2.1 坐标系统 354
14.2.2 变换 355
14.2.3 字体 355
14.2.4 图像 356
14.2.5 填充和笔画 356
14.2.6 复合 357
14.3 Java 2D API包 357
14.4 图形的绘制 359
14.4.1 接口和类 359
14.4.2 图形绘制过程 360
14.4.3 Stroke属性 362
14.4.4 Fill属性 362
14.4.5 剪切路径 362
14.4.6 变换 363
14.4.7 Composite属性 363
14.5 设置Graphics2D上下文环境 364
14.5.1 指定Stroke属性 364
14.5.2 指定Fill属性 365
14.5.3 使用纹理填充形状 365
14.5.4 设置剪切路径 366
14.5.5 在Java 2D中绘制各种样式的图形 366
14.5.6 设置Graphics2D变换 370
14.5.7 指定复合样式 371
14.6 图形元素的绘制 373
14.6.1 绘制形状 373
14.6.2 填充形状 374
14.7 实现几何形状接口和类 375
14.8 几何 376
14.8.1 几何的概念 376
14.8.2 构造几何区域 376
14.9 字体和文本布局 381
14.9.1 接口和类 381
14.9.2 管理文本布局 381
14.9.3 确定文本布局 382
14.9.4 双插入记号 382
14.9.5 移动插入记号 383
14.9.6 选择测试 383
14.9.7 显示所选内容 383
14.9.8 查询布局度量 384
14.9.9 绘制文本查询 384
14.10 Java 3D API 386
14.10.1 Java 3D的安装和运行 386
14.10.2 Java 3D数据结构 387
14.10.3 Virtual Universe 389
14.10.4 Java 3D的坐标系统 389
14.10.5 Java 3D API 390
14.10.6 创建Java 3D应用程序 391
14.11 BranchGroup类 395
14.12 Canvas3D类 395
14.13 Transforrn3D类 395
14.14 TransformGroup类 396
14.15 Vector3f类 396
14.16 Primitive类 398
14.17 OrbitBehavior类 398
14.18 Light类 399
14.18.1 光的类型 399
14.18.2 场景图中的光 399
14.18.3 材质特性 399
14.19 材质贴图 400
14.19.1 装入材质 400
14.19.2 粘贴到图像上 400
14.19.3 压缩和拉伸材质 400
14.19.4 材质贴图示例 401
14.20 Behavior类 403
14.20.1 唤醒调用 404
14.20.2 processStimulus方法 404
14.20.3 旋转示例 404
14.21 Java打印技术 407
14.21.1 打印控制类 407
14.21.2 打印机对话框 407
14.21.3 启动打印机 409
14.22 Java打印实例 409
14.22.1 打印图像和文本 409
14.22.2 打印文件 411
14.23 实验:图形与多媒体处理 412
14.24 本章小结 413
第15章 MySQL数据库与JDBC编程 414
15.1 JDBC基础 414
15.1.1 JDBC的用途 415
15.1.2 JDBC与ODBC和其他API的比较 415
15.1.3 两层模型和三层模型 416
15.1.4 SQL的一致性 416
15.1.5 JDBC驱动程序的类型 417
15.2 安装MySQL数据库 417
15.2.1 MySQL的下载与安装 417
15.2.2 MySQL图形界面工具的下载与安装 422
15.2.3 MySQL图形界面工具 423
15.3 SQL语句基础 424
15.3.1 from子句 424
15.3.2 select子句 424
15.3.3 聚集函数 425
15.3.4 where子句 425
15.3.5 表达式 425
15.3.6 表达式的使用 425
15.4 创建Connection对象 426
15.4.1 建立连接 427
15.4.2 发送SQL 427
15.4.3 事务隔离级别 427
15.4.4 驱动设置 428
15.5 使用Statement对象 429
15.5.1 创建Statement对象 429
15.5.2 使用Statement对象执行语句 429
15.5.3 语句完成 430
15.5.4 关闭Statement对象 430
15.5.5 Statement对象中的SQL转义语法 430
15.6 使用ResultSet对象 430
15.6.1 行和光标的操作 431
15.6.2 列的操作 431
15.6.3 数据类型和转换 431
15.7 PreparedStatement接口 432
15.7.1 创建PreparedStatement对象 432
15.7.2 传递IN参数 432
15.7.3 IN参数中数据类型的一致性 432
15.8 CallableStatement对象 433
15.8.1 创建CallableStatement对象 433
15.8.2 IN和OUT参数 433
15.8.3 INOUT参数 434
15.8.4 检索OUT参数 434
15.8.5 检索作为0UT参数的NULL值 434
15.9 JDBC 4.0新特性 435
15.9.1 自动加载驱动 435
15.9.2 Rowld 435
15.9.3 SQL XML 436
15.9.4 SQLExcpetion的增强 436
15.10 JDBC 4.1新特性 437
15.10.1 自动关闭相关资源 437
15.10.2 Java 7中的RowSetFactory与RowSet 437
15.11 本章程序设计案例 439
15.11.1 数据库开发环境的搭建 439
15.11.2 操作数据库 440
15.12 本章考试、面试问题分析 442
15.13 实验:数据库的连接 443
15.14 本章小结 444
第4篇 Java项目实战篇 446
第16章 MP3/MP4媒体播放器 446
16.1 在Applet中播放声音 446
16.1.1 Java声音处理 446
16.1.2 应用AudioClip接口来实现声音的播放 447
16.1.3 应用Sound API来处理声音 448
16.2 Java媒体框架 451
16.2.1 JMF系统介绍 451
16.2.2 数据源(Data source) 452
16.2.3 捕获设备(Capture Device) 452
16.2.4 播放器(Player) 452
16.2.5 处理器(Processor) 453
16.2.6 数据池(DataSink) 454
16.2.7 数据格式(Format) 454
16.2.8 管理器(Manager) 454
16.3 MP3/MP4媒体播放器的设计 455
16.3.1 JMF的下载和安装 455
16.3.2 MP3/MP4媒体播放器设计分析 456
16.3.3 Player对象的扩展 457
16.3.4 MP3/MP4媒体播放器主程序的设计 459
第17章 远程实时监控系统 462
17.1 获取媒体数据的分析 462
17.1.1 注册音频和视频截取设备 462
17.1.2 获取音频和视频数据 463
17.1.3 保存摄像头数据为视频文件 464
17.1.4 摄像头拍照 466
17.1.5 通过网络发送实时媒体流数据 467
17.1.6 通过网络接收实时媒体流数据 469
17.2 网络实时流媒体收发系统的设计 471
17.2.1 Java网络流媒体播放器分析 471
17.2.2 媒体设备捕捉和发送类 472
17.2.3 媒体播放主程序类 478
17.2.4 同时接收多个流媒体类 481
17.3 本章小结 484
第18章 航空票务管理系统 485
18.1 系统需求说明 485
18.1.1 需求分析 485
18.1.2 主要用例说明 485
18.2 业务实体层设计 486
18.2.1 设计域模型 486
18.2.2 设计数据模型 487
18.3 系统设计 488
18.3.1 程序的实现 488
18.3.2 航空电子票务管理类 489
18.3.3 数据库连接类 495
18.3.4 每期航班座位信息类 497
18.3.5 航班管理类 502
18.3.6 航班简单查询类 505
18.3.7 综合信息查询类 511
18.3.8 定票管理类 523
18.3.9 定票客户信息类 535
18.3.10 退票管理类 541
18.3.11 查询客户已定票信息类 548
18.4 本章小结 551
第19章 即时通信系统 552
19.1 概述 552
19.2 服务器用户数据库设计 552
19.3 系统架构技术 553
19.4 即时通信系统服务器设计 553
19.4.1 服务器协议设计 553
19.4.2 启动即时通信系统服务器 565
19.4.3 实现多线程类监听类 566
19.5 即时通客户端设计 566
19.5.1 客户端主界面设计 566
19.5.2 系统托盘的设计 578
19.5.3 用户登录主程序 578
19.5.4 用户登录过程 581
19.5.5 用户申请号码 582
19.5.6 用户注册分析 585
19.5.7 查找并添加网友 587
19.5.8 添加网友程序分析 590
19.5.9 发送聊天信息 593
19.5.10 发送消息过程分析 594
19.5.11 接收聊天信息 594
19.5.12 查看好友详细信息 596
19.5.13 删除好友 597
19.6 本章总结 597