第1部分 基础篇 1
第1章 Java概述 2
1.1 Java介绍 2
1.1.1 Java的历史与发展 2
1.1.2 Java的应用领域 3
1.1.3 Sun技术认证简介 3
1.2 Java语言的特点 3
1.2.1 简单 3
1.2.2 面向对象 3
1.2.3 与平台无关性和可移植性 4
1.2.4 可靠性和安全性 4
1.2.5 多线程并发机制 5
1.2.6 分布式 5
1.2.7 动态的内存管理机制 5
1.3 Java开发环境介绍 5
1.3.1 下载与安装JDK 6
1.3.2 环境变量的设置 7
1.3.3 JDK的命令行工具 9
1.4 Java程序的开发 9
1.4.1 编写并运行Java应用程序 9
1.4.2 编写并运行Applet小应用程序 11
1.5 使用Eclipse开发Java程序 13
1.5.1 安装Eclipse及新建Java项目 13
1.5.2 使用Eclipse开发Java应用程序与Applet小应用程序 15
1.6 第一次编译和运行Java程序时的常见问题 17
1.6.1 javac不是内部或外部命令 17
1.6.2 无法找到类定义 17
1.6.3 找不到文件 18
1.6.4 找不到符号 19
1.6.5 其他可能错误 20
1.7 小结 20
第2章 Java语言基础 21
2.1 Java语言的基本要素 21
2.1.1 标识符 21
2.1.2 关键字与保留字 22
2.1.3 分隔符 23
2.1.4 代码注释 24
2.2 常量与变量 25
2.2.1 常量 25
2.2.2 变量 25
2.2.3 使用常量和变量需要注意的问题 26
2.3 基本数据类型 26
2.3.1 整数类型 26
2.3.2 浮点类型 28
2.3.3 字符类型 29
2.3.4 逻辑类型 31
2.3.5 数据类型转换 31
2.4 引用数据类型 33
2.5 运算符与表达式 34
2.5.1 算术运算符与算术表达式 34
2.5.2 赋值运算符与赋值表达式 36
2.5.3 关系运算符与关系表达式 36
2.5.4 逻辑运算符与逻辑表达式 37
2.5.5 位运算符与位运算 39
2.5.6 移位运算符 40
2.5.7 条件运算符 41
2.5.8 字符串连接运算符 42
2.5.9 运算符的优先级 43
2.6 全局变量和局部变量 44
2.7 小结 45
第3章 流程控制 46
3.1 分支控制语句 46
3.1.1 简单的if语句 46
3.1.2 if…else语句基本格式 47
3.1.3 嵌套的if…else语句 49
3.1.4 switch多分支选择语句 50
3.2 循环控制语句 53
3.2.1 while循环语句 53
3.2.2 do…while语句 55
3.2.3 for循环语句 56
3.3 跳转控制语句 58
3.3.1 continue语句:跳出当次循环 58
3.3.2 break语句:退出当前所在循环 60
3.3.3 带标号的跳转控制语句 61
3.4 综合应用程序举例 62
3.4.1 测试你的体重是否标准 62
3.4.2 随机彩票模拟程序 64
3.5 小结 65
第4章 数组 66
4.1 一维数组 66
4.1.1 一维数组声明 66
4.1.2 一维数组初始化 67
4.1.3 一维数组引用 68
4.1.4 一维数组的应用 69
4.2 多维数组 70
4.2.1 二维数组声明 70
4.2.2 二维数组初始化 70
4.2.3 二维数组引用 72
4.2.4 多维数组 72
4.2.5 二维数组的应用 73
4.3 增强的for循环 74
4.4 数据保存与内存分配 75
4.4.1 数据的保存 75
4.4.2 一维数组的内存分配 75
4.4.3 多维数组的内存分配 76
4.5 与数组有关的类Arrays 77
4.5.1 判断两个数组是否相等的equals()方法 77
4.5.2 填充数值的fill()方法 78
4.5.3 排序数组的sort()方法 79
4.6 数组的复制 81
4.7 应用程序举例 82
4.7.1 对数组元素进行排序 82
4.7.2 实现矩阵的转置 84
4.8 小结 85
第5章 字符串与正则表达式 86
5.1 字符串的创建和初始化 86
5.2 String类主要方法的使用 87
5.2.1 获取字符串长度 87
5.2.2 比较字符串 87
5.2.3 查找字符串中某个位置的字符 91
5.2.4 查找指定子字符串在字符串中第一次或最后一次出现的位置 91
5.2.5 检查字符串的起始字符和结束字符 92
5.2.6 截取子串 93
5.2.7 字符串的替换 93
5.2.8 字符串的大小写转换 94
5.2.9 去除字符串首尾空格 95
5.2.10 字符串转换 95
5.3 可变字符串的创建和初始化 97
5.4 StringBuffer类主要方法的使用 98
5.4.1 获取可变字符串长度 99
5.4.2 比较可变字符串 99
5.4.3 追加和插入字符串 100
5.4.4 反转和删除字符串 101
5.4.5 减少用于字符序列的存储空间 101
5.4.6 StringBuffer类型转换成String类型 102
5.5 字符串应用程序举例 103
5.5.1 使用异或运算符实现字符串加密与解密 103
5.5.2 统计字符串中关键字的个数 104
5.6 对字符串进行分析的StringTokenizer类 105
5.7 正则表达式 107
5.7.1 模式匹配 108
5.7.2 特殊字符匹配 109
5.7.3 元字符匹配与限定符的匹配 110
5.8 正则表达式应用程序举例 111
5.8.1 实现时间匹配 111
5.8.2 实现E-mail地址匹配 113
5.9 小结 114
第2部分 面向对象篇 115
第6章 面向对象思想 116
6.1 对象和类 116
6.1.1 对象和类的概念 116
6.1.2 类的声明 117
6.1.3 类的实体 118
6.1.4 对象的创建和使用 120
6.1.5 对象的生命周期 121
6.2 关于句柄的理解 122
6.3 面向对象的软件开发方法 124
6.4 面向对象的特点 125
6.4.1 抽象 125
6.4.2 继承 126
6.4.3 封装 127
6.4.4 多态 129
6.5 小结 129
第7章 方法的调用和参数的传递 131
7.1 构造方法 131
7.2 方法的调用 133
7.2.1 向对象发送一条消息 133
7.2.2 方法中return关键字的使用 134
7.2.3 非静态方法的调用 135
7.2.4 静态方法的调用 137
7.2.5 方法调用的常见错误 138
7.2.6 构造方法的调用 138
7.3 方法的重载 139
7.3.1 一般方法的重载 139
7.3.2 构造方法的重载 141
7.4 方法的参数传递 142
7.4.1 基本数据类型作为参数传递 142
7.4.2 对象参数的传递 143
7.4.3 字符串作为参数传递 145
7.4.4 数组作为参数传递 147
7.5 方法调用应用程序举例 148
7.5.1 计算两个数的最大公约数 148
7.5.2 计算矩阵对角元素和 149
7.6 方法的递归调用 150
7.6.1 递归的定义 150
7.6.2 递归的使用 151
7.7 递归调用应用程序举例 154
7.7.1 递归与循环的转换 154
7.7.2 使用递归方法计算两个数的最大公约数 154
7.8 小结 155
第8章 继承、聚集与多态 156
8.1 类的继承 156
8.1.1 继承中的子类与父类 156
8.1.2 Java类的单一继承 157
8.1.3 类的继承中变量的访问和隐藏 159
8.1.4 方法的重写 161
8.1.5 类的继承中构造方法的调用 162
8.1.6 类的继承中构造方法的执行 164
8.1.7 类的继承应用程序举例:汽车类继承的设计 165
8.2 类的聚集 168
8.3 继承与聚集的选择 170
8.4 强制类型转换与类型检测 171
8.5 安全的向上转型 172
8.6 继承的利与弊 173
8.7 多态 174
8.7.1 什么是多态 175
8.7.2 多态在软件开发中的应用 175
8.7.3 多态是基于继承的 177
8.8 动态绑定 179
8.9 向下转型 180
8.10 小结 180
第9章 信息封装与实施细节的隐藏 181
9.1 Java中的包 181
9.1.1 使用package关键字声明包 181
9.1.2 包的命名规则 183
9.1.3 使用import关键字导入包 183
9.1.4 导入包时的命名冲突问题 186
9.1.5 静态导入包 189
9.1.6 设置classpath类路径 190
9.1.7 Java标准包 190
9.2 访问控制符 191
9.2.1 访问控制权限 191
9.2.2 使用私有类型private关键字 192
9.2.3 使用友好类型friendly关键字 192
9.2.4 使用保护类型protected关键字 194
9.2.5 使用公共类型public关键字 195
9.3 应用程序举例:成员变量的隐藏 196
9.4 小结 198
第10章 类的高级特性 199
10.1 使用this和super关键字 199
10.1.1 使用this关键字引用成员变量 199
10.1.2 使用this关键字引用当前对象 201
10.1.3 使用this关键字调用构造方法 201
10.1.4 super关键字使用的场合 202
10.2 使用static关键字 203
10.2.1 使用static关键字修饰变量 203
10.2.2 使用static关键字修饰方法 204
10.2.3 使用static关键字静态初始化 206
10.3 使用final关键字 208
10.3.1 使用final关键字修饰变量 208
10.3.2 使用final关键字修饰方法 210
10.3.3 使用final关键字修饰类 210
10.4 抽象类和抽象方法 212
10.4.1 抽象类和抽象方法的声明 212
10.4.2 应用程序举例:计算图形体积 213
10.5 接口 215
10.5.1 接口的声明与实现 215
10.5.2 接口的扩展 218
10.5.3 接口与多态 219
10.5.4 接口作为参数 220
10.5.5 抽象类与接口的比较 221
10.5.6 应用程序举例:使用接口对常数分组 222
10.6 内部类与匿名内部类的使用 223
10.6.1 使用内部类 223
10.6.2 局部内部类 225
10.6.3 静态内部类 226
10.6.4 使用匿名内部类 227
10.6.5 应用程序举例:使用内部类控制汽车行驶 228
10.7 克隆技术 230
10.7.1 对象赋值与克隆 230
10.7.2 实现克隆方法 231
10.7.3 克隆技术的应用:实现对象的浅度克隆和深度克隆 231
10.8 小结 234
第11章 Java中的集合 235
11.1 Collection接口:集合类的根接口 235
11.2 集Set 237
11.2.1 HashSet类:对元素随机排序的集合类 237
11.2.2 TreeSet类:对元素排序的有序集合类 239
11.3 列表List 240
11.3.1 ArrayList类:实现数组的动态操作 240
11.3.2 ArrayList转换为数组 243
11.3.3 调整当前ArrayList容量 243
11.3.4 Vector类:实现动态数组线程安全向量类 244
11.3.5 Stack类:表示后进先出的对象栈 246
11.4 映射Map 247
11.4.1 HashMap类:将键-值映射关系存储到散列表 247
11.4.2 Hashtable类:线程安全的散列表 249
11.5 迭代器Iterator 251
11.6 Collections类:提供与集合操作有关方法的类 253
11.6.1 对指定列表排序和反转 253
11.6.2 支持集合的线程同步方法 254
11.7 应用程序举例 254
11.7.1 顺序输出HashMap映射中的键值 254
11.7.2 顺序输出HashMap映射中的键对应的值 256
11.8 小结 257
第12章 Java常用类 258
12.1 所有类的父类Object类 258
12.1.1 判断两个对象引用上是否相同的equals()方法 258
12.1.2 返回对象运行时类的getClass()方法 259
12.1.3 返回对象哈希码值的hashCode()方法 260
12.1.4 返回对象字符串表示的toString()方法 260
12.2 与基本数据类型对应的封装类 261
12.3 与数学计算有关的类 263
12.3.1 实现基本数字操作的Math类 263
12.3.2 产生随机数的Random类 266
12.3.3 应用程序举例:计算三角形的面积 268
12.4 日期与时间类 269
12.4.1 表示日期的Date类 269
12.4.2 日期格式化的DateFormat类 270
12.4.3 操作日历字段的Calendar类 271
12.5 应用程序举例 273
12.5.1 日期的格式变换 273
12.5.2 取得指定的日期 274
12.6 小结 276
第13章 泛型与枚举 277
13.1 泛型类型 277
13.1.1 使用泛型的原因 277
13.1.2 泛型在集合类中的应用 279
13.1.3 定义泛型类和泛型方法 280
13.2 枚举类型 283
13.2.1 什么是枚举类型 283
13.2.2 枚举类型中定义常量 284
13.2.3 枚举类型中定义方法 285
13.2.4 使用java.lang.Enum类中的方法 287
13.3 小结 288
第14章 异常处理与断言 289
14.1 异常与错误 289
14.2 几种常见的运行时异常 290
14.2.1 空指针异常NullPointerException 290
14.2.2 超出排序范围异常IndexOutOfBoundsException 290
14.2.3 错误的类型转换ClassCastException 291
14.2.4 数学运算异常ArithmeticException 292
14.3 异常处理方式 292
14.3.1 使用try…catch语句捕获异常 292
14.3.2 使用带有多个catch的try…catch语句捕获异常 294
14.3.3 带有finally子句的try…catch语句 296
14.3.4 使用finally直接和try语句连用 298
14.3.5 嵌套的try…catch语句 299
14.3.6 使用throws关键字抛出异常 299
14.3.7 使用throw关键字抛出异常 301
14.3.8 用户自定义异常 302
14.4 异常处理机制 304
14.5 异常的使用原则 305
14.5.1 在可能出现异常的情况下使用异常 305
14.5.2 不要不处理捕获的异常 305
14.5.3 不要不指定具体的异常代码 306
14.5.4 不要过于细化try…catch 306
14.5.5 使用finally释放占用的资源 307
14.6 断言 308
14.7 小结 310
第15章 多线程 311
15.1 什么是线程 311
15.2 线程与进程的比较 311
15.3 线程的生命周期 312
15.4 实现多线程的方法 313
15.4.1 继承Thread类实现多线程 313
15.4.2 实现Runnable接口 315
15.4.3 两种方法的比较 317
15.5 线程的调度方法 317
15.5.1 与线程调度有关的方法 317
15.5.2 返回当前正在执行的线程方法currentThread() 318
15.5.3 等待线程终止方法join() 319
15.5.4 设置和取得线程优先级 320
15.5.5 使正在执行的线程休眠的方法sleep() 321
15.5.6 暂停正在执行的线程的方法yield() 323
15.5.7 中断线程方法interrupt() 324
15.6 线程同步的实现 325
15.6.1 一个共享资源冲突的例子 325
15.6.2 使用synchronized实现线程同步 327
15.6.3 synchronized线程同步与对象锁标志 328
15.6.4 实现线程同步的几种形式 329
15.7 线程通信的实现 331
15.7.1 使当前的线程处于等待的方法wait() 331
15.7.2 通知线程结束等待的方法notify()和notifyAll() 332
15.7.3 不建议使用的suspend(),resume()和stop()方法 333
15.7.4 应用程序举例:生产者和消费者问题 333
15.8 死锁 337
15.8.1 死锁的产生 337
15.8.2 避免死锁的方法 339
15.9 小结 340
第3部分 图形界面设计篇 341
第16章 Swing容器和基本组件 342
16.1 Swing介绍 342
16.2 组件类JComponent 343
16.2.1 组件字体 344
16.2.2 组件颜色 345
16.2.3 组件外观 346
16.3 Swing窗体 347
16.4 布局管理器 349
16.4.1 流布局管理器 350
16.4.2 边界布局管理器 351
16.4.3 卡片布局管理器 354
16.4.4 网格布局管理器 356
16.4.5 箱式布局管理器 358
16.4.6 不使用布局管理器定位组件 360
16.5 Swing基本组件 361
16.5.1 按钮 361
16.5.2 标签 363
16.5.3 单行文本区与密码域 365
16.5.4 多行文本区 368
16.5.5 复选框 370
16.5.6 单选按钮 373
16.5.7 下拉列表 375
16.5.8 列表 377
16.5.9 面板 379
16.5.10 滚动条 380
16.6 JApplet小应用程序 381
16.7 应用程序举例 383
16.7.1 更改窗体的外观风格 383
16.7.2 应用JApplet小应用程序显示日期和时间 386
16.8 小结 388
第17章 事件处理 389
17.1 什么是事件 389
17.2 事件处理机制 389
17.2.1 实现监听接口处理事件 389
17.2.2 使用匿名内部类处理事件 392
17.3 事件类的层次关系 393
17.4 低级事件 394
17.4.1 焦点事件 394
17.4.2 键盘事件 396
17.4.3 鼠标事件 399
17.4.4 窗体事件 404
17.4.5 适配器类 405
17.5 语义事件 407
17.6 动作接口 409
17.6.1 动作接口简介 409
17.6.2 使用动作接口 410
17.6.3 动作与键盘事件的对应 412
17.7 应用程序举例:计算器的设计与使用 414
17.7.1 计算器的设计 414
17.7.2 数字键和功能键的实现 416
17.7.3 实现加减乘除运算 418
17.7.4 实现求平方根、倒数、百分比运算 419
17.7.5 实现数据的记忆功能 420
17.7.6 计算器的使用 421
17.8 小结 422
第18章 Swing高级组件 423
18.1 表格 423
18.1.1 创建表格 423
18.1.2 编辑表格 427
18.1.3 应用程序举例:编辑计算机的配置信息 428
18.2 树 431
18.2.1 创建树 431
18.2.2 树的监听事件 434
18.2.3 应用程序举例:实现对树的遍历 436
18.3 菜单组件 437
18.3.1 创建菜单栏和菜单项 437
18.3.2 绘制基本菜单 439
18.3.3 为菜单项设置图标 441
18.3.4 设置菜单快捷键 441
18.3.5 创建复选框菜单项 444
18.3.6 创建单选按钮菜单项 446
18.3.7 禁用和启用菜单项 448
18.3.8 创建弹出式菜单 450
18.4 工具栏 452
18.5 对话框 455
18.5.1 标准对话框 455
18.5.2 确认对话框 456
18.5.3 消息对话框 457
18.5.4 输入对话框 457
18.5.5 选项对话框 458
18.5.6 文件对话框 459
18.5.7 文件过滤 461
18.5.8 JDialog类创建自定义对话框 463
18.5.9 颜色选择器 466
18.5.10 应用程序举例:通过文件选择器获取文件或者目录信息 468
18.6 小结 472
第4部分 应用篇 473
第19章 输入输出流与对象序列化 474
19.1 文件操作 474
19.1.1 File类介绍 474
19.1.2 获取文件本身信息操作 475
19.1.3 文件的测试检查操作 476
19.1.4 目录操作 477
19.1.5 创建、修改与删除文件操作 479
19.2 I/O流概述 480
19.2.1 什么是流 481
19.2.2 字节输入流InputStream 481
19.2.3 字节输出流OutputStream 482
19.2.4 字符输入流Reader 484
19.2.5 字符输出流Writer 485
19.3 字节流 486
19.3.1 文件字节流 486
19.3.2 字节数组流 490
19.3.3 连接管道输入字节流和管道输出字节流 491
19.3.4 创建指明文件路径和读取文件内容的共通类 492
19.3.5 使用管道字节输入输出流实现线程之间的相互通信 494
19.3.6 读写基本数据类型数据流 496
19.3.7 缓冲字节流 499
19.4 字符流 502
19.4.1 文件字符流 502
19.4.2 字符数组流 505
19.4.3 连接管道输入字符流和管道输出字符流 506
19.4.4 创建用于读取文件中字符内容的共通类 507
19.4.5 使用管道字符输入输出流实现线程之间的相互通信 508
19.4.6 缓冲字符流 510
19.4.7 字符与字节相互转换流 513
19.4.8 字符串流 517
19.5 随机存储读写文件RandomAccessFile类 519
19.6 对象序列化与反序列化 522
19.6.1 实现对象序列化的Serializable接口 522
19.6.2 将对象写入字节流 523
19.6.3 读取字节流中对象 524
19.6.4 自定义实现序列化的类 526
19.6.5 使用对象序列化实现对象的深度克隆 528
19.7 小结 530
第20章 网络编程 531
20.1 计算机网络基本知识 531
20.1.1 TCP/IP协议 531
20.1.2 IP地址 532
20.1.3 套接字 532
20.1.4 端口 533
20.1.5 URL 533
20.1.6 UDP 533
20.2 URL类 533
20.2.1 创建URL对象 534
20.2.2 读取页面信息 535
20.2.3 创建一个到URL的连接 537
20.2.4 获取响应头的所有字段的值 539
20.3 表示互联网协议地址InetAddress类 541
20.3.1 获取本地主机IP地址 541
20.3.2 获取Internet给定的主机名和IP地址 542
20.4 套接字通信 543
20.4.1 实现客户端套接字Socket类 543
20.4.2 实现服务器套接字ServerSocket类 546
20.5 UDP传输 549
20.5.1 表示数据报包DatagramPacket类 549
20.5.2 收发数据报 550
20.6 应用程序举例:聊天室程序模拟 552
20.6.1 聊天室用户界面设计 552
20.6.2 服务器端代码 554
20.6.3 客户端代码 555
20.6.4 运行程序 558
20.7 小结 559
第21章 数据库基本操作 560
21.1 关系数据库基本概念 560
21.2 SQL操作数据库 560
21.2.1 SQL介绍 561
21.2.2 创建、修改和删除表 561
21.2.3 索引 562
21.2.4 查询 563
21.2.5 查询满足条件的元组 564
21.2.6 连接查询 565
21.2.7 集合查询 566
21.2.8 数据更新 567
21.2.9 视图 569
21.2.10 数据控制 569
21.3 完整性约束和数据库的完整性 570
21.4 事务 571
21.5 利用MySQL通过SQL操作数据库 572
21.5.1 安装MySQL 5.0 572
21.5.2 安装图形界面工具 574
21.5.3 运行MySQL 5.0 575
21.6 应用举例:利用MySQL 5.0通过SQL语句操作数据库 577
21.6.1 表的创建、修改和删除 577
21.6.2 更新表中数据 578
21.6.3 查询表中数据 579
21.6.4 创建视图 580
21.7 小结 581
第22章 Java与数据库的连接 582
22.1 JDBC简介 582
22.1.1 什么是JDBC 582
22.1.2 JDBC的用法 583
22.1.3 JDBC驱动的类型 584
22.2 Java与数据库的开发 585
22.2.1 使用JDBC实现MySQL 5.0数据库开发 585
22.2.2 通过JDBC实现Java对数据库中数据的存取过程 588
22.3 深入了解JDBC 589
22.3.1 使用executeQuery()和executeUpdate()方法执行查询和更新 590
22.3.2 使用execute()方法执行查询和更新 592
22.3.3 使用executeBatch()方法执行多个SQL更新语句 592
22.3.4 预编译SQL语句的对象PreparedStatement 594
22.3.5 滚动结果集 597
22.3.6 更新结果集 598
22.3.7 使用ResultSet对象处理结果集 599
22.3.8 使用DatabaseMetaData对象处理数据库信息 601
22.4 Java与SQL之间的数据类型转换 601
22.5 小结 603
第23章 数据库应用实例:查询和更新教师信息表 604
23.1 实现查询与更新数据库数据操作思路 604
23.2 实现对教师信息表的查询操作 607
23.2.1 单条记录的查询 607
23.2.2 全表记录查询 611
23.3 实现对教师信息表的插入操作 615
23.4 实现对教师信息表的查询修改操作 620
23.5 实现对教师信息表的查询删除操作 625
23.6 小结 630
第24章 JSP开发 631
24.1 安装配置JSP开发环境 631
24.1.1 安装配置Tomcat服务器 631
24.1.2 发布一个JSP应用程序 633
24.2 JSP基本语法 634
24.3 JSP内置对象 636
24.3.1 请求对象request 636
24.3.2 响应对象response 638
24.3.3 会话对象session 640
24.3.4 应用程序对象application 642
24.3.5 输出对象out 643
24.3.6 页面上下文对象pageContext 644
24.3.7 配置对象config 645
24.3.8 页面对象page 645
24.3.9 异常对象exception 645
24.4 应用程序举例:使用JavaBean实现画面与业务的分离 646
24.4.1 JSP画面的实现 646
24.4.2 业务逻辑的实现 648
24.5 Servlet介绍 649
24.5.1 什么是Servlet 649
24.5.2 Servlet与JSP 650
24.5.3 Servlet生命周期 650
24.5.4 Servlet的开发和部署 650
24.6 应用程序举例:Servlet会话管理 652
24.7 小结 655
第25章 MVC与项目开发 656
25.1 MVC 656
25.1.1 什么是MVC 656
25.1.2 MVC处理过程 657
25.1.3 使用MVC的原因 657
25.2 项目开发 658
25.2.1 项目开发过程 658
25.2.2 快速原型模型 659
25.2.3 V字形模型 659
25.3 小结 660
第5部分 案例分析篇 661
第26章 DVD在线租赁的模拟 662
26.1 提出问题 662
26.2 分析问题 662
26.3 解决问题 663
26.3.1 获取当月的实际天数 663
26.3.2 计算在线租赁DVD的不同会员所占的人数 665
26.3.3 取得DVD在线租赁的详细信息 667
26.3.4 程序的运行 670
26.3.5 程序的测试 671
26.4 小结 673
第27章 高校科研管理系统 674
27.1 需求分析 674
27.2 基本设计 675
27.2.1 系统功能描述 675
27.2.2 功能结构图 675
27.2.3 系统流程分析 676
27.3 数据库设计 676
27.3.1 数据库需求分析 677
27.3.2 数据库逻辑结构设计 677
27.3.3 数据库的物理设计 678
27.3.4 实现与数据库的操作 679
27.4 详细设计 681
27.4.1 用户登录模块 681
27.4.2 高校科研管理系统的主画面 684
27.4.3 全校科研信息查询模块 684
27.4.4 院系科研信息查询模块 689
27.4.5 添加教师科研信息模块 692
27.4.6 修改教师科研信息模块 695
27.4.7 删除教师科研信息模块 703
27.5 程序的运行与测试 707
27.6 小结 707
第28章 ATM处理系统模拟 708
28.1 ATM处理系统的功能描述 708
28.1.1 系统功能描述 708
28.1.2 系统流程分析 709
28.1.3 基本思路 710
28.2 数据库设计 711
28.2.1 数据库逻辑结构设计 711
28.2.2 数据库的物理设计 711
28.2.3 实现与数据库的操作 712
28.3 详细设计 714
28.3.1 ATM处理系统主界面 714
28.3.2 用户卡号验证界面 716
28.3.3 用户密码验证界面 720
28.3.4 业务选择界面 724
28.3.5 余额查询界面 727
28.3.6 取现界面 729
28.3.7 提取固定金额现金界面 731
28.3.8 提取其他金额界面 736
28.3.9 转账界面 739
28.3.10 操作提示界面 744
28.3.11 选择查询明细界面 745
28.3.12 查询明细显示界面 748
28.3.13 修改密码界面 752
28.4 系统的运行与测试 758
28.4.1 ATM处理系统的运行主方法 758
28.4.2 使用Eclipse将Java应用程序打包为JAR 759
28.4.3 系统测试 761
28.5 小结 763