第1章 C# 入门概述 2
1.1 C#语言概述 2
1.1.1 什么是C#语言 2
1.1.2 C#的发展历史 2
1.1.3 C#的优势分析 2
1.1.4 如何学好C#语言 3
1.2 C##环境——.NET框架 4
1.2.1 什么是.NET框架 4
1.2.2.NET框架的组件 4
1.2.3.NET框架的版本 5
1.2.4.NET框架的体系结构 6
1.3 C#开发——Visual Studio 2015 7
1.3.1 什么是Visual Studio 7
1.3.2 Visual Studio的发展历程 8
1.3.3 Visual Studio 2015的新功能 8
1.4 高手带你做——安装VS 2015 10
1.5 高手带你做——创建第一个控制台程序 14
1.6 认识C#程序结构 16
1.6.1 C#程序结构组成 16
1.6.2 创建和执行C#程序 17
1.7 高手带你做——通过记事本创建应用程序 17
1.8 高手带你做——创建Windows窗体应用程序 19
1.9 成长任务 21
第2章 C#基础语法 24
2.1 认识C#语法 24
2.2 using关键字 25
2.2.1 using指令 25
2.2.2 常见的命名空间 26
2.2.3 using语句 27
2.2.4 高手带你做——using语句的详细使用 28
2.3 namespace关键字 29
2.3.1 定义命名空间 30
2.3.2 嵌套命名空间 30
2.3.3 高手带你做——为自定义命名空间指定别名 31
2.4 class关键字 32
2.5 Main()方法 32
2.6 Console类 33
2.6.1 输出内容到控制台 33
2.6.2 从控制台输入内容 34
2.6.3 Console类的其他方法 34
2.7 C#语言注释 35
2.7.1 单行注释 35
2.7.2 多行注释 36
2.7.3 文档注释 36
2.8 C#关键字 37
2.8.1 保留关键字 37
2.8.2 上下文关键字 38
2.9 C#预处理器指令 38
2.9.1 C#预处理器指令列表 38
2.9.2 #define指令 39
2.9.3 条件指令 40
2.9.4 #region指令 41
2.10 高手带你做——根据输入内容返回结果 42
2.11 成长任务 44
第3章 变量、常量与数据类型 46
3.1 变量 46
3.1.1 声明变量 46
3.1.2 变量赋值 47
3.1.3 变量类型 47
3.2 常量 50
3.2.1 常量概述 50
3.2.2 定义常量 51
3.3 数据类型 53
3.3.1 数据类型分类 53
3.3.2 基本数据类型 54
3.3.3 枚举和结构类型 57
3.4 数据类型转换 57
3.4.1 隐式转换 58
3.4.2 显式转换 60
3.5 高手带你做——Convert类实现类型转换 62
3.6 成长任务 64
第4章 运算符和表达式 66
4.1 基础运算符 66
4.1.1 算术运算符 66
4.1.2 关系运算符 67
4.1.3 逻辑运算符 68
4.1.4 赋值运算符 69
4.1.5 位运算符 71
4.2 高级运算符 73
4.2.1 自增运算符 74
4.2.2 自减运算符 74
4.2.3 杂项运算符 76
4.3 高手带你做——认识并使用三元运算符 77
4.4 运算符的优先级 77
4.5 表达式 79
4.6 成长任务 80
第5章 流程控制语句 82
5.1 语句概述 82
5.1.1 语句类型 82
5.1.2 空语句 83
5.2 if选择语句 83
5.2.1 简单if语句 83
5.2.2 if else语句 85
5.2.3 if else if else语句 86
5.2.4 嵌套if语句 87
5.3 高手带你做——根据输入的年龄判断信息 89
5.4 switch选择语句 90
5.4.1 switch 语句 90
5.4.2 嵌套switch语句 92
5.4.3 switch语句与if语句的区别 94
5.5 循环语句 95
5.5.1 while语句 95
5.5.2 do while语句 97
5.5.3 for语句 99
5.5.4 foreach语句 102
5.6 高手带你做——循环打印点阵图形 104
5.7 跳转语句 106
5.7.1 return语句 106
5.7.2 break语句 107
5.7.3 continue语句 108
5.7.4 goto语句 109
5.8 成长任务 111
第6章 字符串与正则表达式 114
6.1 认识String类 114
6.1.1 创建String对象 114
6.1.2 null字符串和空字符串 115
6.1.3 String类的属性 116
6.2 字符串的基本操作 116
6.2.1 连接字符串 116
6.2.2 转换大小写 119
6.2.3 去除空格 120
6.2.4 提取字符串 120
6.2.5 分割字符串 121
6.3 字符串的高级操作 122
6.3.1 替换字符串 122
6.3.2 比较字符串 123
6.3.3 定位字符串 124
6.3.4 格式化字符串 126
6.4 高手带你做——验证指定的文件和邮箱 126
6.5 StringBuilder类操作字符串 128
6.5.1 创建StringBuilder对象 128
6.5.2 StringBuilder类的属性 128
6.5.3 追加字符串 130
6.5.4 插入字符串 131
6.5.5 替换字符串 132
6.5.6 删除字符串 132
6.6 高手带你做——字符串加密和解密操作 133
6.7 正则表达式 136
6.7.1 正则元字符 136
6.7.2 正则限定符 137
6.7.3 正则表达式Regex类 138
6.7.4 高手带你做——将人民币金额转换为大写汉字 142
6.8 成长任务 143
第7章 数值处理和日期处理 146
7.1 数值处理——Math类 146
7.1.1 静态常量 146
7.1.2 求最值 146
7.1.3 求绝对值 146
7.1.4 求整数值 147
7.1.5 求三角函数 148
7.1.6 Math的其他方法 149
7.2 伪随机数——Random类 149
7.2.1 初始化随机数生成器 149
7.2.2 生成随机数 150
7.2.3 高手带你做——求随机数的平均值和方差 151
7.3 日期处理——DateTime结构 153
7.3.1 静态字段 153
7.3.2 静态属性 153
7.3.3 实例属性 154
7.3.4 静态方法 155
7.3.5 实例方法 156
7.3.6 ToString()方法格式化日期 159
7.4 日期处理——TimeSpan结构 160
7.4.1 静态字段 160
7.4.2 静态常量 161
7.4.3 实例属性 162
7.4.4 实例方法 163
7.4.5 高手带你做——基于TimeSpan实现倒计时效果 165
7.5 高手带你做——根据年月输出日历 166
7.6 成长任务 167
第8章 数组 170
8.1 数组概述 170
8.2 一维数组 170
8.2.1 声明数组 170
8.2.2 分配空间 171
8.2.3 初始化数组 171
8.2.4 获取单个元素 172
8.2.5 获取全部元素 173
8.3 二维数组 174
8.3.1 声明数组 174
8.3.2 初始化数组 175
8.3.3 获取单个元素 175
8.3.4 获取全部元素 176
8.4 高手带你做——二维数组如何实现矩阵乘法 177
8.5 多维数组 179
8.5.1 三维数组 179
8.5.2 交错数组 180
8.6 数组处理类 181
8.6.1 Array类 182
8.6.2 ArrayList类 183
8.7 数组的基础操作 185
8.7.1 添加元素 185
8.7.2 复制元素 186
8.7.3 反转元素 188
8.7.4 移除元素 190
8.7.5 清除元素 191
8.8 数组排序 192
8.8.1 内置排序法 192
8.8.2 冒泡排序法 192
8.8.3 快速排序法 194
8.8.4 选择排序法 195
8.8.5 插入排序算法 196
8.9 高手带你做——商品信息查询功能 197
8.10 成长任务 199
第9章 内置集合和自定义集合 202
9.1 集合概述 202
9.2 Hashtable集合 203
9.2.1 Hashtable的常用属性 203
9.2.2 Hashtable的常用方法 203
9.2.3 Hashtable的基本操作 203
9.3 SortedList集合 206
9.3.1 SortedList集合类的常用属性 207
9.3.2 SortedList集合的常用方法 207
9.3.3 SortedList基本操作 208
9.4 Stack集合 212
9.4.1 Stack的常用方法 212
9.4.2 Stack的基本操作 212
9.5 Queue集合 214
9.5.1 Queue的常用方法 214
9.5.2 Queue的基本操作 214
9.6 BitArray集合 216
9.7 高手带你做——用户自定义集合操作数据 217
9.8 成长任务 220
第10章 类和对象 222
10.1 面向对象编程 222
10.1.1 什么是面向对象 222
10.1.2 类和对象 222
10.2 认识类 223
10.2.1 类的声明 223
10.2.2 System.Object类 224
10.3 类的函数 224
10.3.1 构造函数 225
10.3.2 析构函数 226
10.4 类的成员 227
10.4.1 字段和常量 227
10.4.2 定义属性 228
10.4.3 定义方法 230
10.4.4 方法分类 231
10.4.5 方法重载 232
10.4.6 Main()方法 234
10.5 声明和使用对象 234
10.6 this关键字 235
10.6.1 引用类的当前实例 235
10.6.2 调用其他的构造函数 236
10.6.3 声明索引器 236
10.7 高手带你做——字符串反转及字符出现次数 237
10.8 高手带你做——根据用户选择打印图形 238
10.9 高手带你做——在类中嵌套内部类 241
10.10 成长任务 242
第11章 类的面向对象编程 244
11.1 封装性 244
11.1.1 封装的概念 244
11.1.2 如何实现封装 244
11.1.3 字段和属性的区别 246
11.2 继承性 246
11.2.1 继承的概念 247
11.2.2 如何实现继承 247
11.2.3 继承的缺点 249
11.3 多态性 249
11.3.1 多态的概念 249
11.3.2 编译时多态 250
11.3.3 运行时多态 251
11.3.4 重载和重写的区别 253
11.4 抽象类 254
11.4.1 抽象类的概念 254
11.4.2 抽象方法的概念 254
11.4.3 实现抽象类和抽象方法 255
11.4.4 高手带你做——实现从基类中继承的抽象属性 256
11.5 密封类 257
11.5.1 密封类的概念 257
11.5.2 密封方法的概念 258
11.5.3 实现密封类和密封方法 259
11.6 类的常用关键字 260
11.6.1 base关键字 260
11.6.2 virtual关键字 261
11.6.3 ref关键字 262
11.6.4 out关键字 264
11.7 高手带你做——简单计算器的完整实现 265
11.8 成长任务 269
第12章 枚举、结构和接口 272
12.1 枚举 272
12.1.1 枚举概述 272
12.1.2 定义枚举 272
12.1.3 使用枚举 274
12.1.4 枚举类型强制转换 275
12.1.5 Enum类操作枚举 275
12.2 高手带你做——获取枚举成员对应的中文名称 278
12.3 结构 280
12.3.1 结构概述 280
12.3.2 定义结构 281
12.3.3 使用结构 281
12.3.4 结构和类的异同点 282
12.4 接口 283
12.4.1 接口概述 283
12.4.2 声明接口 284
12.4.3 接口成员 285
12.4.4 实现接口 286
12.4.5 接口和抽象类的区别 288
12.5 高手带你做——类显式实现接口 288
12.6 内置接口 290
12.6.1 IComparable接口 290
12.6.2 IComparer接口 291
12.7 成长任务 294
第13章 C#语言高级编程 296
13.1 异常处理 296
13.1.1 异常处理概述 296
13.1.2 异常处理语句 296
13.2 高手带你做——Exception类获取异常信息 300
13.3 程序调试 301
13.3.1 程序调试概述 302
13.3.2 程序调试操作 302
13.4 泛型 304
13.4.1 泛型概述 304
13.4.2 泛型类 304
13.4.3 泛型方法 305
13.4.4 泛型委托 306
13.4.5 泛型集合 307
13.5 高手带你做——泛型参数的约束 309
13.6 委托和事件 310
13.6.1 委托 310
13.6.2 事件 312
13.7 成长任务 316
第14章 Windows窗体基础控件 318
14.1 Windows窗体应用程序 318
14.1.1 创建Windows窗体应用程序 318
14.1.2 Windows窗体概述 319
14.1.3 Windows窗体属性 321
14.1.4 Windows窗体事件 323
14.1.5 Windows窗体控件概述 325
14.2 基本控件 325
14.2.1 Label控件 325
14.2.2 LinkLabel控件 327
14.2.3 TextBox控件 329
14.2.4 RichTextBox控件 331
14.2.5 MaskedTextBox控件 333
14.3 按钮控件 334
14.3.1 Button控件 334
14.3.2 RadioButton控件 336
14.3.3 CheckBox控件 337
14.4 列表控件 339
14.4.1 ListBox控件 339
14.4.2 ComboBox控件 340
14.4.3 ListView控件 342
14.4.4 CheckedListBox控件 344
14.5 容器控件 346
14.5.1 Panel控件 346
14.5.2 GroupBox控件 347
14.5.3 TabControl控件 348
14.6 图像控件 349
14.6.1 PictureBox控件 349
14.6.2 ImageList组件 350
14.7 Windows其他控件 351
14.7.1 Timer组件 352
14.7.2 NotifyIcon控件 352
14.7.3 DomainUpDown控件 353
14.7.4 NumericUpDown控件 354
14.7.5 MonthCalendar控件 354
14.8 高手带你做——模拟在线购物程序 356
14.9 成长任务 362
第15章 构建MDI窗体应用程序 364
15.1 MDI窗体应用程序 364
15.1.1 什么是MDI窗体 364
15.1.2 创建MDI父窗体 364
15.1.3 设置MDI子窗体 366
15.1.4 子窗体访问父窗体成员 367
15.2 MDI窗体控件 369
15.2.1 MenuStrip控件 369
15.2.2 ContextMenuStrip控件 372
15.2.3 ToolStrip控件 374
15.2.4 StatusStrip控件 376
15.3 高手带你做——排列MDI子窗体 377
15.4 常用对话框 379
15.4.1 标准对话框 379
15.4.2 字体对话框 383
15.4.3 颜色对话框 384
15.4.4 浏览目录对话框 385
15.4.5 打开和保存文件对话框 386
15.5 高手带你做——简易图片格式转换器 388
15.6 成长任务 389
第16章 ADO.NET技术访问数据库 392
16.1 ADO.NET和数据库 392
16.1.1 ADO.NET概述 392
16.1.2 数据库概述 393
16.2 连接数据库 394
16.2.1 SqlConnection简述 394
16.2.2 打开数据库连接 395
16.2.3 关闭数据库连接 397
16.3 执行SQL语句 397
16.3.1 SqlCommand简述 397
16.3.2 获取数据总记录 399
16.3.3 读取数据 400
16.3.4 删除数据 401
16.4 读取数据 402
16.4.1 SqlDataReader 对象简述 402
16.4.2 判断查询结果中是否有值 403
16.4.3 获取数据列的值 403
16.5 数据适配器——SqlDataAdapter对象 406
16.6 数据集 407
16.6.1 DataSet对象简述 407
16.6.2 合并DataSet内容 408
16.6.3 复制DataSet内容 410
16.7 其他常见对象 411
16.7.1 DataTable对象 411
16.7.2 DataView对象 415
16.8 高手带你做——ListView控件加载和删除图书信息 417
16.9 成长任务 420
第17章 Windows表格数据控件 422
17.1 了解DataGridView控件 422
17.1.1 DataGridView控件概述 422
17.1.2 DataGridView的结构 423
17.1.3 DataGridView的常用属性 423
17.1.4 DataGridView的常用事件 425
17.2 DataGridView控件的操作 425
17.2.1 数据显示 426
17.2.2 获取单元格 428
17.2.3 修改数据 429
17.2.4 删除数据 430
17.2.5 设置选中行的颜色 432
17.2.6 禁止添加和删除行 433
17.3 高手带你做——为DataGridView控件手动添加数据 434
17.4 了解TreeView控件 436
17.4.1 TreeView控件概述 436
17.4.2 TreeView的常用属性 437
17.4.3 TreeView的方法和事件 438
17.5 TreeView控件的操作 439
17.5.1 添加节点 439
17.5.2 移除节点 440
17.5.3 清空节点 441
17.5.4 获取选中节点 441
17.5.5 为节点设置图标 442
17.6 高手带你做——利用TreeView控件浏览图像 443
17.7 成长任务 445
第18章 数据流和文件的输入/输出 445
18.1 数据流 448
18.1.1 流操作类的介绍 448
18.1.2 FileStream文件流类 448
18.1.3 写入和读取文本文件 450
18.1.4 写入和读取二进制文件 453
18.2 System.IO命名空间 456
18.2.1 File类 456
18.2.2 Directory类 458
18.2.3 FileInfo类 459
18.2.4 DirectoryInfo类 460
18.3 文件的基本操作 461
18.3.1 判断文件是否存在 461
18.3.2 获取文件信息 462
18.3.3 创建文件 463
18.3.4 复制文件 464
18.3.5 移动文件 465
18.3.6 删除文件 466
18.4 文件夹的基本操作 467
18.4.1 判断文件夹是否存在 467
18.4.2 获取文件夹信息 468
18.4.3 遍历文件夹 468
18.4.4 创建文件夹 470
18.4.5 移动文件夹 472
18.4.6 删除文件夹 473
18.5 高手带你做——实现Windows资源管理器 474
18.6 成长任务 479
第19章 三层架构实现汽车租赁系统 479
19.1 了解汽车租赁系统 482
19.1.1 开发背景 482
19.1.2 功能介绍 482
19.1.3 可行性分析 482
19.1.4 需求分析 483
19.2 数据库设计 483
19.2.1 数据库概述 483
19.2.2 设计数据表 484
19.3 了解三层架构 485
19.3.1 三层架构概述 485
19.3.2 实体层概述 486
19.3.3 三层架构的优缺点 486
19.4 搭建系统框架 487
19.4.1 搭建三层项目 487
19.4.2 项目引用 488
19.4.3 设置项目启动项 490
19.4.4 向三层框架中添加内容 490
19.5 SQLHelper类详解 495
19.5.1 SQLHelper是什么 495
19.5.2 为SQLHelper类添加内容 496
19.6 用户界面设计与实现 498
19.6.1 登录窗体 498
19.6.2 注册窗体 499
19.6.3 查看和修改用户信息 500
19.6.4 查找租车信息 502
19.6.5 汽车租赁 504
19.6.6 操作租车记录 506
19.6.7 汽车出租 509
19.6.8 打印信息 510
19.6.9 退出系统 511