第1章 认识C 2
1.1 什么是C 2
1.1.1 Microso.NET框架 2
1.1.2 .NET框架的开发语言——C 3
1.1.3 C#的开发平台Visual Studio 2008 3
1.2 第一个C#程序 4
1.2.1 认识和配置Visual Studio 2008开发环境 4
1.2.2 第一个Windows Console程序 5
1.2.3 创建Windows Console程序 5
1.2.4 解决方案资源管理器 7
1.2.5 属性窗口 7
1.2.6 第一个Windows Form程序 8
1.2.7 创建Windows Form程序 8
1.2.8 Windows Form程序创建技巧 10
1.2.9 第一个ASp. NET程序 11
1.2.10 创建ASp.NET程序 11
1.2.11 Web程序和Windows程序的区别 14
1.3 一个优秀的开发助手——MSDN 15
1.4 小结 15
第2章 C#语法基础 18
2.1 C#的基本语法 18
2.2 变量 19
2.2.1 变量的声明 19
2.2.2 变量的赋值 20
2.2.3 简单数据类型 21
2.2.4 使用简单数据类型 22
2.2.5 使用struct创建结构类型 24
2.2.6 结构类型例程 25
2.2.7 定义结构的构造函数 27
2.2.8 类型转换 29
2.2.9 隐式转换 29
2.2.10 显式转换 31
2.2.11 根据参与类型转换的划分 33
2.3 常量 33
2.3.1 静态常量 33
2.3.2 动态常量 34
2.3.3 使用动态常量 35
2.4 表达式 36
2.4.1 数学运算符 37
2.4.2 普通数学运算符 37
2.4.3 自加和自减运算符 38
2.4.4 赋值运算符 39
2.4.5 比较运算符 41
2.4.6 运算符的优先级 42
2.4.7 命名空间 43
2.4.8 嵌套命名空间 44
2.5 流程控制 45
2.5.1 分支语句 45
2.5.2 三元运算符 45
2.5.3 if语句 47
2.5.4 使用if语句 48
2.5.5 程序流程 49
2.5.6 switch语句 50
2.5.7 使用switch语句 50
2.5.8 goto语句 51
2.5.9 循环语句 53
2.5.10 do-while语句 53
2.5.11 使用do-while语句 53
2.5.12 while语句 55
2.5.13 使用while语句 55
2.5.14 for语句 57
2.5.15 使用for语句 58
2.5.16 foreach循环语句 59
2.5.17 循环中断语句 61
2.5.18 使用break语句 61
2.5.19 使用continue语句 62
2.5.20 使用return语句 63
2.6 小结 64
第3章 C#面向对象基础 65
3.1 类的基本概念 65
3.1.1 C#中的类定义 65
3.1.2 字段 66
3.1.3 常量 66
3.1.4 域 66
3.1.5 类的方法 67
3.1.6 类的属性 69
3.1.7 类的索引器 71
3.1.8 类的构造函数和析构函数 72
3.1.9 事件 74
3.2 VisualStudio中的类向导 74
3.3 事件和委托 77
3.3.1 委托 78
3.3.2 委托的事件处理程序 79
3.3.3 委托中的GUI事件 82
3.4 面向对象的特征 83
3.4.1 继承 83
3.4.2 多态 85
3.4.3 封装 87
3.4.4 重载 87
3.4.5 方法重载 88
3.4.6 运算符重载 88
3.5 接口 89
3.5.1 接口的声明 89
3.5.2 接口的使用 90
3.6 面向对象的其他主题 90
3.6.1 命名空间 91
3.6.2 程序集 92
3.6.3 类库 93
3.7 小结 94
第4章 字符串处理 95
4.1 字符串的常用功能 95
4.1.1 字符串的比较 95
4.1.2 字符串的格式化 96
4.1.3 字符串的大小写转换 96
4.1.4 字符串的拆分与截取 96
4.2 StringBuilder类 97
4.2.1 字符串对象的追加 97
4.2.2 字符串的插入、删除与替换 97
4.3 正则表达式 98
4.3.1 System.Text.RegularExpression命名空间 98
4.3.2 正则表达式的语法 98
4.3.3 正则表达式验证用户输入 99
4.3.4 使用正则表达式来替换字符串 100
4.4 小结 101
第5章 数组处理 102
5.1 创建数组 102
5.2 多维数组 103
5.3 动态数组 103
5.3.1 创建简单的动态数组 104
5.3.2 动态数组的排序 105
5.4 数组的特殊操作 106
5.4.1 作为参数传递的数组 106
5.4.2 将一维数组作为参数传递 106
5.4.3 将多维数组作为参数传递 107
5.4.4 数组的数组 108
5.5 小结 108
第6章 集合与泛型 109
6.1 什么是集合 109
6.2 SortedList可排序数组集合 109
6.3 Queue消息队列集合 110
6.4 Stack栈集合 112
6.5 HashTable哈希表集合 113
6.6 集合中的一些重要概念 114
6.6.1 集合中的索引器 114
6.6.2 集合中的迭代器 115
6.6.3 深度复制 116
6.7 为集合使用泛型 118
6.7.1 定义泛型类 118
6.7.2 定义泛型接口 120
6.7.3 定义泛型方法 120
6.7.4 定义泛型委托 121
6.8 小结 121
第7章 代码调试 122
7.1 Visual Studio2008中的调试 122
7.1.1 正常模式下的调试 122
7.1.2 中断模式下的调试 124
7.2 错误和异常处理 127
7.2.1 使用try...catch...finally语句 127
7.2.2 常见异常类型 129
7.2.3 创建和抛出自定义的异常 129
7.3 小结 130
第8章 编写Windows窗体应用程序 132
8.1 一个Windows窗体程序的深入分析 132
8.1.1 一个典型的Windows窗体程序 132
8.1.2 调试Windows窗体程序 134
8.1.3 调试总结 137
8.2 Windows窗体基本设计内容 137
8.2.1 设置窗体的位置与大小 137
8.2.2 人工设置窗体的位置与大小 138
8.2.3 设置窗体的位置与大小的其他方法 139
8.2.4 设置窗体的边框 140
8.2.5 使用属性窗口设置窗体边框 140
8.2.6 在代码中设置各种窗体边框 141
8.2.7 设置控件框和最小化、最大化、关闭按钮 142
8.2.8 在程序中设置最小化、最大化、关闭按钮 142
8.2.9 设置控件框按钮 144
8.2.10 窗体的事件 145
8.2.11 Load事件 145
8.2.12 鼠标悬停事件 146
8.2.13 按键事件 147
8.2.14 鼠标单击事件 147
8.3 SDI应用程序、MDI应用程序和菜单 148
8.3.1 基于对话框的应用程序 148
8.3.2 单文档(SDI)应用程序 148
8.3.3 多文档(MDI)应用程序 149
8.3.4 菜单 149
8.3.5 多文档、单文档和菜单的设计方法 150
8.4 快捷菜单(ContextMenuStrip) 154
8.5 小结 156
第9章 使用Windows窗体控件 157
9.1 控件 157
9.1.1 控件的属性 157
9.1.2 使用Dock属性布局控件 158
9.1.3 控件的事件 159
9.1.4 为控件添加事件 160
9.2 TextBoxRichTextBox和Button控件 161
9.2.1 使用Button控件实现按钮功能 161
9.2.2 为Button控件设置图片和显示样式 162
9.2.3 使用TextBox控件实现文本的输入和输出功能 163
9.2.4 一个Button和TextBox控件的综合实例 165
9.2.5 综合实例说明 170
9.3 Label和LabelLink控件 171
9.3.1 使用Label控件实现标签功能 171
9.3.2 使用LinkLabel控件实现超链接设置 172
9.4 RadioButton和CheckBox控件 174
9.4.1 使用RadioButton控件实现单选功能 17
9.4.2 使用CheckBox控件实现复选功能 174
9.4.3 一个相应单选和复选事件的实例 175
9.5 使用GroupBox和Panel控件实现控件的分组 178
9.6 ListView控件 179
9.6.1 设置ListView控件的属性 179
9.6.2 ListView控件的事件 180
9.6.3 一个读写ListView控件的实例 181
9.6.4 添加窗体的加载事件处理程序 183
9.6.5 程序运行效果 185
9.6.6 读取XML数据并填充ListView 186
9.6.7 VS2008中建立XML 186
9.6.8 VS2008中读取XML并填充ListView 187
9.6.9 将ListView数据写入XML 190
9.6.10 AfterLabelEdit事件 190
9.6.11 ListView各项的修改 193
9.7 TreeView控件 197
9.7.1 TreeView的属性和事件 197
9.7.2 TreeView树读取并显示XML节点 199
9.7.3 程序运行结果及说明 202
9.8 小结 202
第10章 GDI+概述 203
10.1 GDI+的工作原理 203
10.2 图形绘制基础 204
10.2.1 Graphics类 204
10.2.2 Pen类的用法 205
10.2.3 Brush类的用法 207
10.2.4 Font类的用法 210
10.3 GDI+的一些实例 211
10.3.1 图像的缩放 212
10.3.2 图像的剪切 214
10.3.3 图像的旋转 216
10.3.4 图像的切换显示 218
10.3.5 图片的打印和打印预览 219
10.3.6 自己写播放器 221
10.4 小结 223
第11章 文件的操作 225
11.1 流的概念 225
11.2 用于输入和输出的类 226
11.2.1 文件的移动、删除和复制 226
11.2.2 目录的移动、删除和复制 228
11.2.3 流和文件的读写 228
11.3 对话框 233
11.3.1 文件对话框 233
11.3.2 字体对话框 237
11.3.3 颜色对话框 239
11.3.4 页面设置 241
11.3.5 打印预览对话框和打印对话框 242
11.4 高级主题 245
11.4.1 监控文件结构 245
11.4.2 文件异步写入 250
11.5 小结 252
第12章 部署Windows应用程序 253
12.1 WindowsInstaller部署 253
12.1.1 创建部署 253
12.1.2 在部署中编辑器 255
12.1.3 文件系统编辑器 255
12.1.4 用户界面编辑器 257
12.1.5 文件类型编辑器 260
12.1.6 启动条件编辑器 261
12.1.7 注册表编辑器 262
12.1.8 自定义操作编辑器 262
12.2 WindowsInstaller部署安装全过程 263
12.2.1 欢迎 263
12.2.2 自述文件 264
12.2.3 许可协议 264
12.2.4 客户信息 264
12.2.5 注册用户和复选框 265
12.2.6 选择安装文件夹和确认安装 265
12.2.7 进度和安装提示 265
12.2.8 安装完成 266
12.3 程序的卸载和修复 267
12.4 VS2005中的其他打包方式 268
12.5 ClickOnce部署 268
12.5.1 部署策略的选择 269
12.5.2 创建ClickOnce部署 269
12.5.3 安装全过程 271
12.6 两种部署方式的比较 272
12.7 小结 272
第13章 数据库基础知识 274
13.1 SQLServer2005的安装 274
13.2 Transact-SQL语言 277
13.2.1 Transact-SQL的特点 277
13.2.2 数据控制语言 277
13.2.3 数据定义语言 278
13.2.4 数据操纵语言 278
13.2.5 事务管理语言 278
13.2.6 其他附加语言 278
13.3 表 283
13.3.1 创建、修改和删除表 283
13.3.2 操纵表中的数据 284
13.3.3 主键约束 286
13.3.4 外键约束 287
13.3.5 唯一性约束 288
13.3.6 CHECK约束 288
13.3.7 默认约束 288
13.4 存储过程 288
13.4.1 创建存储过程 289
13.4.2 执行和删除存储过程 290
13.4.3 SQLServer2005中的存储过程向导 290
13.5 触发器 292
13.5.1 创建和使用触发器 292
13.5.2 SQLServer2005中的触发器向导 293
13.6 事务和锁 294
13.6.1 事务 294
13.6.2 锁 296
13.7 小结 297
第14章 利用ADO.NET访问数据库 298
14.1 ADO.NET中的图形化方式 298
14.1.1 连接到数据库 298
14.1.2 在VS2008中创建数据库 300
14.1.3 使用SqlDataAdapter对数据库中表的查询 301
14.1.4 添加、删除和修改数据库中的内容 303
14.2 ADO.NET中的.NET数据提供者 305
14.3 ADO.NET中的DataSet组件 308
14.3.1 DataSet的结构 308
14.3.2 为DataSet创建和删除表 309
14.3.3 在表中列和行的添加和删除 310
14.3.4 设置表的主键 311
14.3.5 为DataSet中的表添加约束 311
14.3.6 为DataSet中的表添加关系 312
14.3.7 DataSet中的导航功能 312
14.3.8 DataSet与XML的交互 313
14.4 ADO.NET操作存储过程 316
14.5 ADO.NET操作触发器 320
14.5.1 创建触发器 321
14.5.2 修改和删除触发器 321
14.6 ADO.NET3.5的高级特性简介 322
14.7 小结 322
第15章 在.NET中访问XML 323
15.1 什么是XML 323
15.1.1 XML与HTML的区别 323
15.1.2 为处理XML提供基于标准的支持——System.Xml命名空间 324
15.2 在.NET中读取XML 325
15.2.1 使用XmiDocument读取整个XML文件 326
15.2.2 使用XmIReader的实现类XmITextReader读取XML文件 328
15.2.3 使用XmINodeReader读取XML中的节点 331
15.2.4 在读取XML文件时使用XmlValidatingReader进行数据验证 334
15.3 在C#中编写XML文件 335
15.3.1 使用XmlWriter创建XML文件 335
15.3.2 使用XmITextWriter编写XML文件 336
15.4 使用XPath检索XML文件 339
15.4.1 XPath的语法 339
15.4.2 XPath实现检索的综合实例 341
15.5 修改XML文件中的数据(DOM应用) 346
15.5.1 利用DOM实现类建立XML文档 346
15.5.2 一个应用实例 347
15.5.3 利用DOM实现类添加和删除XML节点 351
15.5.4 程序运行结果及说明 356
15.6 小结 356
第16章 线程 358
16.1 线程的创建、启动和终止 358
16.2 线程的挂起和恢复 360
16.3 多线程 362
16.3.1 线程的优先级 362
16.3.2 lock关键字锁定线程 362
16.3.3 线程的同步 363
16.3.4 使用线程池 366
16.3.5 使用定时器 368
16.4 线程中的异常 370
16.5 小结 371
第17章 Socket编程 372
17.1 Socket基本原理 372
17.2 服务器的结构 373
17.2.1 Socket类成员 373
17.2.2 Socket类实例:服务器通信 375
17.2.3 Socket类实例:利用多线程解决服务器通信问题 376
17.3 客户端的结构 378
17.4 基于网络流的数据传输 380
17.4.1 网络流的服务器开发 381
17.4.2 网络流的客户器开发 381
17.5 一个基于Socket的C/S模式的完整例子 382
17.5.1 基于Socket服务器端实现 382
17.5.2 基于Socket客户端实现 385
17.5.3 基于Socket的C/S实例的运行 386
17.6 基于UDP的数据传输 387
17.6.1 UDP的类库 388
17.6.2 UDP数据传输实例 388
17.7 异步通信问题 392
17.8 小结 394
第18章 .NET安全编程中的密码术 395
18.1 密码术的基本内容 395
18.2 对称密码术 396
18.2.1 DES算法 396
18.2.2 RC2算法 399
18.2.3 Rijndael算法 401
18.3 非对称密码术 403
18.3.1 RSA算法 404
18.3.2 其他非对称密码术 406
18.4 数字签名技术 407
18.4.1 数字签名的工作原理 407
18.4.2 一个数字签名的完整例子 408
18.4.3 数字签名的客户端流程 408
18.4.4 数字签名的服务器端流程 412
18.4.5 数字签名实例的运行效果 418
18.5 小结 420
第19章 .NET中的电子邮件处理 421
19.1 电子邮件协议SMTP 421
19.2 使用System.Net.Mail命名空间的类发送电子邮件 421
19.3 一个发送电子邮件实例 422
19.3.1 主界面及代码设计 422
19.3.2 邮件参数配置界面及代码设计 424
19.3.3 发送界面及代码设计 426
19.3.4 程序运行效果及说明 432
19.4 小结 432
第20章 Web编程基础 434
20.1 Web工作原理 434
20.1.1 超文本传输协议(HTTP) 434
20.1.2 Web服务器工作原理 435
20.2 超文本标记语言——HTML 435
20.2.1 第一个HTML页面 436
20.2.2 代码说明 437
20.2.3 将HTML页面修改为动态页面 437
20.2.4 代码说明 440
20.3 一种脚本编写语言JavaScript 441
20.3.1 定义函数 441
20.3.2 无参函数 441
20.3.3 有参函数 443
20.3.4 常用对象的属性和方法 444
20.3.5 数组对象(Array) 444
20.3.6 使用数组对象(Array) 445
20.3.7 日期对象(Date) 449
20.3.8 使用日期对象(Date) 451
20.3.9 布尔对象(Boolean) 452
20.3.10 函数对象(Function) 454
20.3.11 字符串对象(String) 456
20.3.12 数值对象(Number) 458
20.3.13 数学对象(Math) 460
20.3.14 JavaScript中的事件及事件处理程序 462
20.3.15 在JavaScript中编写事件处理程序 462
20.3.16 程序说明 463
20.3.17 运行效果 464
20.4 ASp.NET技术 465
20.4.1 动态服务器编程技术ASp.NET 465
20.4.2 一个简单的ASp.NET应用程序 465
20.4.3 程序运行效果及说明 471
20.5 读写SQLServer2005数据库 473
20.5.1 创建数据库和表 473
20.5.2 配置数据库连接字符串 475
20.5.3 程序运行效果及说明 480
20.6 建设优秀网站需要考虑的问题——搜索引擎优化(SEO) 480
20.6.1 什么是SEO 481
20.6.2 影响搜索引擎排名的基本因素 481
20.6.3 对搜索引擎排名不利的因素 482
20.7 小结 483
第21章 表单及ASP.NET对象 484
21.1 表单 484
21.1.1 表单原理 484
21.1.2 创建表单 485
21.1.3 程序运行效果及说明 487
21.2 5个ASp.NET对象 488
21.2.1 检索从浏览器发送到服务器的请求信息——Request对象 488
21.2.2 Request对象中的集合 489
21.2.3 在程序中使用Cookie 491
21.2.4 程序运行效果及说明 493
21.2.5 Request中的Browser对象 494
21.2.6 Request的其他属性和方法 494
21.2.7 将数据从服务器发回浏览器——Response对象 495
21.2.8 共享应用程序全局信息——Application对象 496
21.2.9 Application的数据存储方式 496
21.2.10 使用Application对象实现网站的访客数的统计 497
21.2.11 维护每个客户的个人信息——Session对象 502
21.2.12 用Session存储数据 502
21.2.13 Session存储演示 503
21.2.14 获取服务器信息——Server对象 505
21.2.15 认识Server对象 505
21.2.16 Server对象的演示 505
21.2.17 程序运行效果及说明 507
21.3 一个聊天室实例 508
21.3.1 聊天室实例的模块划分 508
21.3.2 聊天室实例的项目配置 509
21.3.3 聊天室的登录 511
21.3.4 聊天室的聊天主界面 516
21.3.5 发送聊天信息 517
21.3.6 程序流程及说明 519
21.3.7 显示聊天记录 521
21.3.8 聊天演示 523
21.4 配置Internet信息服务(IIS)管理器 523
21.5 小结 525
第22章 Web程序中的服务器端控件 526
22.1 服务器控件 526
22.1.1 什么是服务器控件 526
22.1.2 服务器控件与HTML控件的区别 527
22.2 数据操作控件 527
22.2.1 用于连接SQL数据库的数据源控件——SqlDataSource控件 527
22.2.2 使用SqlDataSource控件 528
22.2.3 以表的形式显示数据——GridView控件 532
22.2.4 一次显示一条表格形式的记录——DetailsView控件 534
22.3 验证控件 538
22.3.1 限制空字段控件 538
22.3.2 程序运行效果及说明 539
22.3.3 比较两个字段控件 539
22.3.4 检查指定范围控件 542
22.3.5 表达式验证控件 543
22.3.6 自定义验证控件 544
22.3.7 程序运行效果及说明 546
22.3.8 错误信息汇总控件 547
22.4 用户控件 548
22.5 小结 551
第23章 ASP.NET3.5高级编程 552
23.1 为一组页面设计相同的风格——母版(MasterPage) 552
23.1.1 创建MasterPage 552
23.1.2 在MasterPage中添加元素 553
23.1.3 创建ContentPage 557
23.1.4 访问母版页中的控件 559
23.1.5 嵌套使用MasterPage 562
23.2 主题和皮肤 564
23.2.1 什么是主题 565
23.2.2 在主题中创建皮肤文件 565
23.2.3 动态加载主题 568
23.3 自定义页面(WebParts) 572
23.3.1 设置WebParts运行环境 572
23.3.2 编写一个简单的WebParts页面 575
23.3.3 编辑WebParts控件 582
23.3.4 使用CatalogZone控件 585
23.3.5 导出与导入WebParts控件 587
23.3.6 使用静态连接实现WebParts控件之间数据传递 590
23.3.7 使用动态连接实现WebParts控件之间数据传递 593
23.4 小结 595
第24章 操作WebService 596
24.1 什么是WebService 596
24.2 在ASp.NET中创建和调用WebService 597
24.2.1 创建WebService 597
24.2.2 程序运行效果及说明 601
24.2.3 使用POST方法调用WebService 602
24.3 在应用程序中使用WebService代理 603
24.3.1 创建客户端程序 603
24.3.2 在客户端程序中使用WebService代理 604
24.4 一个典型的WebService调用的例子 605
24.5 小结 610
第25章 图书管理系统 612
25.1 普通用户模块设计 612
25.1.1 普通用户模块界面设计 613
25.1.2 数据库设计 614
25.1.3 控件事件处理 614
25.2 管理员模块设计 620
25.2.1 登录功能 620
25.2.2 公告栏功能 621
25.2.3 查看书的目录信息 621
25.2.4 读取用户留言 622
25.2.5 管理员登录代码 623
25.2.6 修改公告栏代码 625
25.2.7 读取用户意见的代码 626
25.3 系统启动界面设计 628
25.4 示例演示 629
25.5 小结 633
25.5.1 本章主要内容 634
25.5.2 窗体间的数据通信 634
25.5.3 Panel覆盖 635
25.5.4 .txt文件的操作 635
25.5.5 ADO.NET相关操作 635
25.5.6 本例完整代码 636
25.5.7 Forml.cs窗体 636
25.5.8 Login.cs登录窗体 645
25.5.9 Board.cs公告版 646
25.5.10 Read.cs读取窗体 646
第26章 学生信息管理系统 648
26.1 系统分析 648
26.1.1 需求分析 648
26.1.2 数据库分析 649
26.1.3 系统模块划分 650
26.2 学生访问模块设计 650
26.2.1 数据库设计 651
26.2.2 系统配置与操作类设计 652
26.2.3 设计学生用户登录界面及代码 657
26.2.4 利用母版设计主界面 660
26.2.5 设计数据显示控件 662
26.3 教师访问模块设计 670
26.3.1 数据库设计 670
26.3.2 操作类设计 673
26.3.3 设计教师用户登录界面及代码 674
26.3.4 设计数据显示控件 677
26.3.5 添加学生信息查找及页面返回功能 683
26.3.6 实现数据显示控件的分页显示 688
26.3.7 实现详细信息查看 689
26.4 管理员访问模块设计 695
26.4.1 数据库设计 696
26.4.2 设计操作类及登录验证 696
26.4.3 设计主界面及数据显示控件 698
26.4.4 添加学生信息查找及分页功能 704
26.4.5 添加用户管理功能 708
26.5 小结 718