第1篇 基础知识 2
第1章 初识C#及其开发环境 2
1.1 C#概述 3
1.1.1 C#语言及其特点 3
1.1.2 认识.NET Framework 3
1.1.3 C#与.NET框架 4
1.1.4 C#的应用领域 4
1.2 安装与卸载Visual Studio 2015 6
1.2.1 安装Visual Studio 2015系统的必备条件 6
1.2.2 安装Visual Studio 2015 6
1.2.3 启动Visual Studio 2015 7
1.2.4 卸载Visual Studio 2015 9
1.3 熟悉Visual Studio 2015开发环境 10
1.3.1 创建项目 10
1.3.2 菜单栏 11
1.3.3 工具栏 12
1.3.4 解决方案资源管理器 13
1.3.5 “工具箱”窗口 13
1.3.6 “属性”窗口 14
1.3.7 “错误列表”窗口 15
1.3.8 “输出”窗口 15
1.4 小结 15
第2章 开始C#之旅 16
2.1 编写第一个C#程序 17
2.2 初识C#程序结构 18
2.2.1 命名空间 18
2.2.2 类 19
2.2.3 Main方法 19
2.2.4 标识符及关键字 20
2.2.5 C#语句 21
2.2.6 注释 21
2.3 程序编写规范 22
2.3.1 代码书写规则 22
2.3.2 命名规范 23
2.4 小结 25
2.5 动手纠错 25
第3章 变量与常量 26
3.1 变量的基本概念 27
3.2 变量的声明及赋值 27
3.2.1 声明变量 27
3.2.2 变量的赋值 28
3.2.3 变量的作用域 28
3.3 数据类型 30
3.3.1 值类型 30
3.3.2 引用类型 32
3.3.3 值类型与引用类型的区别 33
3.3.4 枚举类型 35
3.3.5 类型转换 36
3.4 常量 39
3.5 小结 40
3.6 实践与练习 41
3.7 动手纠错 41
第4章 表达式与运算符 42
4.1 表达式 43
4.2 运算符 43
4.2.1 算术运算符 43
4.2.2 赋值运算符 46
4.2.3 关系运算符 47
4.2.4 逻辑运算符 50
4.2.5 位运算符 52
4.2.6 其他特殊运算符 53
4.3 运算符优先级 55
4.4 小结 56
4.5 实践与练习 57
4.6 动手纠错 57
第5章 字符与字符串 58
5.1 字符类Char的使用 59
5.1.1 Char类概述 59
5.1.2 Char类的使用 59
5.1.3 转义字符 61
5.2 字符串类String的使用 62
5.2.1 字符串的声明及赋值 63
5.2.2 连接多个字符串 63
5.2.3 比较字符串 64
5.2.4 格式化字符串 66
5.2.5 截取字符串 67
5.2.6 分割字符串 68
5.2.7 插入和填充字符串 69
5.2.8 删除字符串 70
5.2.9 复制字符串 71
5.2.10 替换字符串 73
5.3 可变字符串类 74
5.3.1 StringBuilder类的定义 74
5.3.2 StringBuilder类的使用 74
5.3.3 StringBuilder类与String类的区别 75
5.4 小结 76
5.5 实践与练习 77
5.6 动手纠错 77
第6章 流程控制语句 78
6.1 条件判断语句 79
6.1.1 if语句 79
6.1.2 switch多分支语句 83
6.2 循环语句 86
6.2.1 while语句 86
6.2.2 do…while语句 88
6.2.3 for语句 89
6.2.4 foreach语句 91
6.3 跳转语句 92
6.3.1 break语句 92
6.3.2 continue语句 93
6.3.3 goto语句 94
6.3.4 return语句 95
6.4 小结 96
6.5 实践与练习 96
6.6 动手纠错 97
第7章 数组和集合 98
7.1 数组概述 99
7.2 一维数组的创建和使用 99
7.2.1 一维数组的创建 99
7.2.2 一维数组的初始化 101
7.2.3 一维数组的使用 101
7.3 二维数组的创建和使用 102
7.3.1 二维数组的创建 102
7.3.2 二维数组初始化 103
7.3.3 二维数组的使用 103
7.4 数组的基本操作 104
7.4.1 遍历数组 105
7.4.2 添加/删除数组元素 105
7.4.3 对数组进行排序 110
7.4.4 数组的合并与拆分 110
7.5 数组排序算法 112
7.5.1 冒泡排序 113
7.5.2 直接插入排序 114
7.5.3 选择排序法 116
7.6 ArrayList类 117
7.6.1 ArrayList类概述 117
7.6.2 ArrayList元素的添加 119
7.6.3 ArrayList元素的删除 121
7.6.4 ArrayList的遍历 123
7.6.5 ArrayList元素的查找 124
7.7 Hashtable(哈希表) 124
7.7.1 Hashtable概述 124
7.7.2 Hashtable元素的添加 125
7.7.3 Hashtable元素的删除 126
7.7.4 Hashtable的遍历 126
7.7.5 Hashtable元素的查找 127
7.8 小结 128
7.9 实践与练习 128
7.10 动手纠错 129
第8章 属性和方法 130
8.1 属性 131
8.1.1 属性概述 131
8.1.2 属性的使用 132
8.2 方法 134
8.2.1 方法的声明 134
8.2.2 方法的参数类型 135
8.2.3 方法的分类 137
8.2.4 方法的重载 138
8.2.5 Main方法 139
8.3 小结 139
8.4 实践与练习 139
8.5 动手纠错 140
第9章 结构和类 141
9.1 结构 142
9.1.1 结构概述 142
9.1.2 结构的使用 143
9.2 面向对象概述 144
9.2.1 对象 144
9.2.2 类 145
9.2.3 封装 146
9.2.4 继承 146
9.2.5 多态 147
9.3 类 148
9.3.1 类的概念 148
9.3.2 类的声明 148
9.3.3 构造函数和析构函数 149
9.3.4 对象的创建及使用 151
9.3.5 this关键字 154
9.3.6 类与对象的关系 155
9.4 类的面向对象特性 155
9.4.1 类的封装 155
9.4.2 类的继承 157
9.4.3 类的多态 160
9.5 小结 162
9.6 实践与练习 162
第2篇 核心技术 164
第10章 Windows窗体 164
10.1 Form窗体 165
10.1.1 Form窗体的概念 165
10.1.2 添加和删除窗体 165
10.1.3 多窗体的使用 167
10.1.4 窗体的属性 168
10.1.5 窗体的显示与隐藏 171
10.1.6 窗体的事件 172
10.2 MDI窗体 174
10.2.1 MDI窗体的概念 174
10.2.2 如何设置MDI窗体 175
10.2.3 排列MDI子窗体 175
10.3 继承窗体 178
10.3.1 继承窗体的概念 178
10.3.2 创建继承窗体 178
10.3.3 在继承窗体中修改继承的控件属性 179
10.4 小结 180
10.5 实践与练习 180
第11章 Windows应用程序常用控件 181
11.1 控件概述 182
11.1.1 控件的分类及作用 182
11.1.2 控件命名规范 182
11.2 控件的相关操作 183
11.2.1 添加控件 183
11.2.2 对齐控件 184
11.2.3 锁定控件 184
11.2.4 删除控件 184
11.3 文本类控件 185
11.3.1 标签控件(Label控件) 185
11.3.2 按钮控件(Button控件) 186
11.3.3 文本框控件(TextBox控件) 187
11.3.4 有格式文本控件(RichTextBox控件) 190
11.4 选择类控件 193
11.4.1 下拉组合框控件(ComboBox控件) 193
11.4.2 复选框控件(CheckBox控件) 195
11.4.3 单选按钮控件(RadioButton控件) 197
11.4.4 数值选择控件(NumericUpDown控件) 199
11.4.5 列表控件(ListBox控件) 201
11.5 分组类控件 204
11.5.1 容器控件(Panel控件) 204
11.5.2 分组框控件(GroupBox控件) 205
11.5.3 选项卡控件(TabControl控件) 206
11.6 菜单、工具栏和状态栏控件 210
11.6.1 菜单控件(MenuStrip控件) 210
11.6.2 工具栏控件(ToolStrip控件) 211
11.6.3 状态栏控件(StatusStrip控件) 213
11.7 小结 213
11.8 实践与练习 214
第12章 Windows应用程序高级控件 215
12.1 ImageList控件(存储图像控件) 216
12.1.1 在ImageList控件中添加图像 216
12.1.2 在ImageLList控件中移除图像 217
12.2 ListView控件(列表视图控件) 219
12.2.1 在ListView控件中添加移除项 219
12.2.2 选择ListView控件中的项 222
12.2.3 为ListView控件中的项添加图标 222
12.2.4 在ListView控件中启用平铺视图 223
12.2.5 为ListView控件中的项分组 225
12.3 TreeView控件(树控件) 227
12.3.1 添加和删除树节点 227
12.3.2 获取树控件中选中的节点 229
12.3.3 为树控件中的节点设置图标 230
12.4 DateTimePicker控件(日期控件) 231
12.4.1 使用DateTimePicker控件显示时间 231
12.4.2 使用DateTimePicker控件以自定义格式显示日期 232
12.4.3 返回DateTimePicker控件中选择的日期 234
12.5 MonthCalendar控件(月历控件) 234
12.5.1 更改MonthCalendar控件的外观 235
12.5.2 在MonthCalendar控件中显示多个月份 236
12.5.3 在MonthCalendar控件中以粗体显示特定日期 237
12.5.4 在MonthCalendar控件中选择日期范围 237
12.6 其他高级控件 238
12.6.1 使用ErrorProvider控件验证文本框输入 238
12.6.2 使用HelpProvider控件调用帮助文件 240
12.6.3 使用Timer控件设置时间间隔 241
12.6.4 使用ProgressBar控件显示程序运行进度条 243
12.7 小结 244
12.8 实践与练习 244
第13章 数据访问技术 245
13.1 数据库基础 246
13.1.1 数据库简介 246
13.1.2 SQL语言简介 246
13.1.3 数据库的创建及删除 246
13.1.4 数据表的创建及删除 249
13.1.5 简单SQL语句的应用 250
13.2 ADO.NET简介 257
13.3 连接数据库:Connection对象 258
13.3.1 Connection对象概述 258
13.3.2 连接数据库 258
13.3.3 关闭连接 260
13.4 执行SQL语句:Command对象 262
13.4.1 Command对象概述 262
13.4.2 设置数据源类型 262
13.4.3 执行SQL语句 263
13.5 读取数据:DataReader对象 266
13.5.1 DataReader对象概述 266
13.5.2 判断查询结果中是否有值 267
13.5.3 读取数据 268
13.6 数据适配器:DataAdapter对象 269
13.6.1 DataAdapter对象概述 269
13.6.2 填充DataSet数据集 270
13.6.3 更新数据源 271
13.7 数据集:DataSet对象 272
13.7.1 DataSet对象概述 272
13.7.2 合并DataSet内容 273
13.7.3 复制DataSet内容 274
13.8 小结 276
13.9 实践与练习 276
第14章 DataGridView数据控件 277
14.1 DataGridView控件概述 278
14.2 在DataGridView控件中显示数据 278
14.3 获取DataGridView控件中的当前单元格 279
14.4 直接在DataGridView控件中修改数据 280
14.5 当选中DataGridView控件中的行时显示不同的颜色 283
14.6 禁止在DataGridView控件中添加和删除行 284
14.7 使用Columns和Rows属性添加数据 285
14.8 小结 286
14.9 实践与练习 287
第15章 LINQ数据访问技术 288
15.1 LINQ基础 289
15.1.1 LINQ概述 289
15.1.2 使用var创建隐型局部变量 290
15.1.3 Lambda表达式的使用 291
15.1.4 LINQ查询表达式 292
15.2 使用LINQ操作SQL Server数据库 293
15.2.1 使用LINQ查询SQL Server数据库 293
15.2.2 使用LINQ管理SQL Server数据库 298
15.3 使用LINQ操作其他数据 304
15.3.1 使用LINQ操作数组和集合 304
15.3.2 使用LINQ操作DataSet数据集 305
15.3.3 使用LINQ操作XML 307
15.4 小结 311
15.5 实践与练习 311
第16章 程序调试与异常处理 312
16.1 程序调试概述 313
16.2 常用的程序调试操作 313
16.2.1 断点操作 313
16.2.2 开始执行 314
16.2.3 中断执行 315
16.2.4 停止执行 315
16.2.5 单步执行和逐过程执行 316
16.2.6 运行到指定位置 316
16.3 异常处理概述 316
16.4 异常处理语句 317
16.4.1 try...catch语句 317
16.4.2 throw语句 319
16.4.3 try...catch...finally语句 320
16.5 小结 322
16.6 实践与练习 322
第3篇 高级应用 324
第17章 面向对象技术高级应用 324
17.1 抽象类与抽象方法 325
17.1.1 抽象类概述及声明 325
17.1.2 抽象方法概述及声明 326
17.1.3 抽象类与抽象方法的使用 327
17.2 接口 328
17.2.1 接口的概念及声明 328
17.2.2 接口的实现与继承 330
17.2.3 显式接口成员实现 333
17.2.4 抽象类与接口 334
17.3 密封类与密封方法 335
17.3.1 密封类概述及声明 335
17.3.2 密封方法概述及声明 336
17.3.3 密封类与密封方法的使用 336
17.4 小结 338
17.5 实践与练习 338
第18章 迭代器和分部类 339
18.1 迭代器 340
18.1.1 迭代器概述 340
18.1.2 迭代器的使用 340
18.2 分部类 341
18.2.1 分部类概述 341
18.2.2 分部类的使用 341
18.3 小结 343
18.4 实践与练习 343
第19章 泛型的使用 344
19.1 泛型概述 345
19.2 泛型的使用 345
19.2.1 类型参数T 345
19.2.2 泛型接口 346
19.2.3 泛型方法 347
19.3 小结 348
19.4 实践与练习 348
第20章 文件及数据流技术 349
20.1 System.IO命名空间 350
20.1.1 File类和Directory类 350
20.1.2 FileInfo类和DirectoryInfo类 354
20.2 文件基本操作 357
20.2.1 判断文件是否存在 357
20.2.2 创建文件 358
20.2.3 复制或移动文件 359
20.2.4 删除文件 360
20.2.5 获取文件的基本信息 361
20.3 文件夹的基本操作 362
20.3.1 判断文件夹是否存在 362
20.3.2 创建文件夹 363
20.3.3 移动文件夹 364
20.3.4 删除文件夹 364
20.3.5 遍历文件夹 365
20.4 数据流 367
20.4.1 流操作类介绍 367
20.4.2 文件流类 368
20.4.3 文本文件的写入与读取 370
20.4.4 二进制文件的写入与读取 372
20.5 小结 374
20.6 实践与练习 374
第21章 GDI+图形图像技术 375
21.1 GDI+绘图基础 376
21.1.1 GDI+概述 376
21.1.2 创建Graphics对象 376
21.1.3 创建Pen对象 377
21.1.4 创建Brush对象 377
21.2 基本图形的绘制 380
21.2.1 GDI+中的直线和矩形 380
21.2.2 GDI+中的椭圆、圆弧和扇形 382
21.2.3 GDI+中的多边形 384
21.3 GDI+绘图的应用 385
21.3.1 绘制柱形图 386
21.3.2 绘制折线图 388
21.3.3 绘制饼形图 391
21.4 小结 393
21.5 实践与练习 393
第22章 Windows打印技术 394
22.1 PageSetupDialog控件 395
22.2 PrintDialog控件 397
22.3 PrintDocument控件 399
22.4 PrintPreviewControl控件 400
22.5 PrintPreviewDialog控件 401
22.6 小结 402
22.7 实践与练习 402
第23章 网络编程技术 403
23.1 网络编程基础 404
23.1.1 System.Net命名空间 404
23.1.2 System.Net.Sockets命名空间 411
23.1.3 System.Net.Mail命名空间 417
23.1.4 POP3协议 420
23.2 开发网络应用程序 422
23.2.1 创建Web页面浏览器 422
23.2.2 局域网聊天程序 423
23.2.3 电子邮件的发送与接收 425
23.3 小结 430
23.4 实践与练习 430
第24章 注册表技术 431
24.1 注册表基础 432
24.1.1 Windows注册表概述 432
24.1.2 Registry和RegistryKey类 432
24.2 在C#中操作注册表 434
24.2.1 读取注册表中的信息 434
24.2.2 创建和修改注册表信息 437
24.2.3 删除注册表中的信息 439
24.3 小结 442
24.4 实践与练习 443
第25章 线程的使用 444
25.1 线程简介 445
25.1.1 单线程简介 445
25.1.2 多线程简介 445
25.2 线程的基本操作 446
25.2.1 Thread类 446
25.2.2 创建线程 448
25.2.3 线程的挂起与恢复 449
25.2.4 线程休眠 450
25.2.5 终止线程 451
25.2.6 线程的优先级 452
25.2.7 线程同步 454
25.3 小结 458
25.4 实践与练习 458
第4篇 项目实战 460
第26章 企业人事管理系统 460
26.1 系统分析 461
26.1.1 需求分析 461
26.1.2 可行性分析 461
26.1.3 编写项目计划书 462
26.2 系统设计 464
26.2.1 系统目标 464
26.2.2 系统功能结构 464
26.2.3 系统业务流程图 465
26.2.4 系统编码规范 466
26.3 系统运行环境 469
26.4 数据库与数据表设计 469
26.4.1 数据库分析 469
26.4.2 创建数据库 470
26.4.3 创建数据表 472
26.4.4 数据表逻辑关系 477
26.5 创建项目 479
26.6 公共类设计 480
26.6.1 MyMeans公共类 480
26.6.2 MyModule公共类 483
26.7 登录模块设计 497
26.7.1 设计登录窗体 497
26.7.2 按Enter键时移动鼠标焦点 498
26.7.3 登录功能的实现 498
26.8 系统主窗体设计 499
26.8.1 设计菜单栏 499
26.8.2 设计工具栏 501
26.8.3 设计导航菜单 502
26.8.4 设计状态栏 503
26.9 人事档案管理模块设计 503
26.9.1 设计人事档案管理窗体 504
26.9.2 添加/修改人事档案信息 506
26.9.3 删除人事档案信息 509
26.9.4 单条件查询人事档案信息 509
26.9.5 逐条查看人事档案信息 511
26.9.6 将人事档案信息导出为Word文档 513
26.9.7 将人事档案信息导出为Excel表格 518
26.10 人事资料查询模块设计 522
26.10.1 设计人事资料查询窗体 523
26.10.2 多条件查询人事资料 524
26.11 通讯录模块设计 524
26.11.1 设计通讯录窗体 525
26.11.2 添加/修改通讯录信息 525
26.11.3 删除通讯录信息 528
26.11.4 查询通讯录信息 528
26.12 用户设置模块设计 529
26.12.1 设计用户设置窗体 529
26.12.2 添加/修改用户信息 530
26.12.3 删除用户基本信息 532
26.12.4 设置用户操作权限 532
26.13 数据库维护模块设计 533
26.13.1 设计数据库维护窗体 533
26.13.2 备份数据库 534
26.13.3 还原数据库 535
26.14 运行项目 536
26.15 开发的常见问题与解决 538
26.15.1 程序为什么会无法运行 538
26.15.2 为什么无法添加职工基本信息 538
26.15.3 选择职工头像时出现异常怎么办 539
26.15.4 数据库还原不成功应该如何解决 539
26.16 小结 540
附录A 541