第1篇 基础篇 2
第1章 搭建C#开发环境 2
1.1 了解软件 3
1.2 软件开发相关的概念 4
1.3 C#语言入门 5
1.3.1 C#语言的发展 6
1.3.2 C#语言的特点 7
1.3.3 认识.NET Framework 7
1.3.4 C#与.NET Framework 8
1.3.5 C#的应用领域 8
1.4 Visual Studio 2017的安装与卸载 10
1.4.1 安装Visual Studio 2017必备条件 10
1.4.2 安装Visual Studio 2017 10
1.4.3 卸载Visual Studio 2017 13
1.5 熟悉Visual Studio 2017开发环境 14
1.5.1 创建项目 14
1.5.2 菜单栏 16
1.5.3 工具栏 17
1.5.4 解决方案资源管理器 18
1.5.5 “工具箱”窗口 18
1.5.6 “属性”窗口 19
1.5.7 “错误列表”窗口 20
1.6 小结 20
第2章 初识C#程序结构 21
2.1 编写第一个C#程序 22
2.2 C#程序结构预览 24
2.2.1 命名空间 24
2.2.2 类 26
2.2.3 关键字与标识符 27
2.2.4 Main方法 28
2.2.5 C#语句 29
2.2.6 注释 31
2.2.7 一个完整的C#程序 32
2.3 程序编写规范 34
2.3.1 代码编写规则 34
2.3.2 命名规范 34
2.4 小结 37
2.5 实战 37
2.5.1 实战一:模拟手机充值业务 37
2.5.2 实战二:绘制情人节快乐图案 37
第3章 C#语言基础 38
3.1 为什么要使用变量 39
3.2 变量是什么 39
3.3 变量的声明及初始化 40
3.3.1 声明变量 40
3.3.2 简单数据类型 41
3.3.3 变量的初始化 50
3.3.4 变量的作用域 52
3.4 常量 53
3.4.1 常量是什么 53
3.4.2 常量的分类 53
3.5 数据类型转换 55
3.5.1 隐式类型转换 55
3.5.2 显式类型转换 56
3.5.3 使用Convert类进行转换 56
3.6 小结 58
3.7 实战 58
3.7.1 实战一:打印保险单详细列表 58
3.7.2 实战二:记录京东618节日名称 58
第4章 运算符 59
4.1 运算符分类 60
4.1.1 算术运算符 60
4.1.2 自增、自减运算符 61
4.1.3 赋值运算符 62
4.1.4 关系运算符 64
4.1.5 逻辑运算符 65
4.1.6 位运算符 66
4.1.7 移位运算符 67
4.1.8 条件运算符 68
4.2 运算符优先级与结合性 69
4.3 小结 70
4.4 实战 71
4.4.1 实战一:谁家是“超生游击队” 71
4.4.2 实战二:模拟用户登录 71
第5章 条件控制语句 72
5.1 决策分支 73
5.2 if语句 73
5.2.1 最简单的if语句 74
5.2.2 if…else语句 75
5.2.3 if…else if…else语句 77
5.2.4 if语句的嵌套 80
5.3 switch多分支语句 82
5.3.1 switch语句 82
5.3.2 switch与if…else if…else的区别 85
5.4 小结 85
5.5 实战 85
5.5.1 实战一:模拟到银行取钱场景 85
5.5.2 实战二:模拟设计游戏关卡 86
第6章 循环控制语句 87
6.1 while和do…while循环 88
6.1.1 while循环 88
6.1.2 do…while循环 89
6.1.3 while和do…while语句的区别 90
6.2 for循环 90
6.2.1 for循环的一般形式 91
6.2.2 for循环的变体 92
6.2.3 for循环中逗号的应用 93
6.3 循环的嵌套 94
6.4 跳转语句 96
6.4.1 break语句 96
6.4.2 continue语句 97
6.5 小结 98
6.6 实战 98
6.6.1 实战一:猜数字游戏 98
6.6.2 实战二:输出金字塔形状 98
第7章 数组的使用 99
7.1 数组概述 100
7.2 一维数组 101
7.2.1 一维数组的创建 101
7.2.2 一维数组的初始化 102
7.2.3 一维数组的使用 103
7.3 二维数组 104
7.3.1 二维数组的创建 104
7.3.2 二维数组的初始化 106
7.3.3 二维数组的使用 108
7.3.4 不规则数组的定义 109
7.4 数组与Array类 109
7.5 数组的常用操作 111
7.5.1 使用foreach语句遍历数组 112
7.5.2 对数组进行排序 114
7.6 小结 115
7.7 实战 115
7.7.1 实战一:模拟火车票预订 115
7.7.2 实战二:五子棋游戏 115
第8章 字符串处理 116
8.1 什么是字符串 117
8.2 字符串的声明与初始化 117
8.2.1 声明字符串 117
8.2.2 字符串的初始化 118
8.3 提取字符串信息 119
8.3.1 获取字符串长度 119
8.3.2 获取指定位置的字符 119
8.3.3 获取子字符串索引位置 120
8.3.4 判断字符串首尾内容 122
8.4 字符串操作 123
8.4.1 字符串的拼接 123
8.4.2 比较字符串 124
8.4.3 字符串的大小写转换 125
8.4.4 格式化字符串 125
8.4.5 截取字符串 129
8.4.6 分割字符串 130
8.4.7 去除空白内容 131
8.4.8 替换字符串 131
8.5 可变字符串类 133
8.5.1 StringBuilder类的定义 133
8.5.2 StringBuilder类的使用 133
8.5.3 StringBuilder类与string类的区别 135
8.6 小结 135
8.7 实战 136
8.7.1 实战一:模拟微信抢红包 136
8.7.2 实战二:输入天气预报及主要时刻点天气情况 136
第9章 类和对象 137
9.1 面向对象概述 138
9.1.1 对象 138
9.1.2 类 139
9.1.3 三大基本特征 140
9.2 类 141
9.2.1 类的声明 141
9.2.2 类的成员 142
9.2.3 构造函数 145
9.2.4 析构函数 148
9.2.5 权限修饰符 148
9.3 方法 149
9.3.1 方法的声明 149
9.3.2 方法的参数 150
9.3.3 方法的重载 152
9.4 类的静态成员 153
9.5 对象的创建及使用 154
9.5.1 对象的创建 154
9.5.2 对象的销毁 155
9.5.3 类与对象的关系 156
9.6 小结 156
9.7 实战 156
9.7.1 实战一:银行账户资金交易管理 156
9.7.2 实战二:模拟华容道游戏场景 157
第10章 继承和多态 158
10.1 继承 159
10.1.1 继承的实现 159
10.1.2 base关键字 161
10.1.3 继承中的构造函数与析构函数 163
10.2 多态 163
10.2.1 虚方法的重写 164
10.2.2 抽象类与抽象方法 165
10.2.3 接口的使用 167
10.2.4 抽象类与接口的区别 171
10.3 小结 171
10.4 实战 171
10.4.1 实战一:Pad和计算机的关系 171
10.4.2 实战二:打印每月销售明细 172
第11章 程序调试与异常处理 173
11.1 程序调试 174
11.1.1 Visual Studio编辑器调试 174
11.1.2 Visual Studio调试器调试 175
11.2 异常处理 179
11.2.1 try…catch语句 180
11.2.2 try…catch…finally语句 182
11.2.3 throw语句 183
11.3 小结 184
第2篇 提高篇 186
第12章 Windows窗体程序设计 186
12.1 开发应用程序的步骤 187
12.2 Form窗体 189
12.2.1 添加和删除窗体 189
12.2.2 多窗体的使用 190
12.2.3 窗体的属性 191
12.2.4 窗体的显示与隐藏 194
12.2.5 窗体的事件 195
12.3 MDI窗体 197
12.3.1 MDI窗体的概念 198
12.3.2 如何设置MDI窗体 198
12.3.3 排列MDI子窗体 199
12.4 小结 201
12.5 实战 201
12.5.1 实战一:最大化打开子窗体 201
12.5.2 实战二:制作圆形窗体 202
第13章 Windows控件的使用 203
13.1 控件概述 204
13.2 控件的相关操作 205
13.2.1 添加控件 205
13.2.2 对齐控件 205
13.2.3 删除控件 206
13.3 Windows控件的使用 206
13.3.1 Label控件 206
13.3.2 Button控件 206
13.3.3 TextBox控件 207
13.3.4 RadioButton控件 209
13.3.5 CheckBox控件 210
13.3.6 RichTextBox控件 211
13.3.7 ComboBox控件 213
13.3.8 ListBox控件 214
13.3.9 GroupBox控件 215
13.3.10 ListView控件 216
13.3.11 TreeView控件 219
13.3.12 ImageList组件 222
13.3.13 Timer组件 222
13.4 菜单、工具栏与状态栏 224
13.4.1 MenuStrip控件 224
13.4.2 ToolStrip控件 225
13.4.3 StatusStrip控件 226
13.5 对话框 228
13.5.1 消息框 228
13.5.2 打开对话框控件 230
13.5.3 另存为对话框控件 231
13.5.4 浏览文件夹对话框控件 231
13.6 小结 232
13.7 实战 232
13.7.1 实战一:动态添加控件 232
13.7.2 实战二:模拟交通红绿灯 232
第14章 C#操作数据库 233
14.1 ADO.NET概述 234
14.1.1 ADO.NET对象模型 234
14.1.2 数据访问命名空间 234
14.2 Connection数据连接对象 235
14.2.1 熟悉Connection对象 235
14.2.2 数据库连接字符串 235
14.2.3 应用SqlConnection对象连接数据库 237
14.3 Command命令执行对象 238
14.3.1 熟悉Command对象 238
14.3.2 应用Command对象操作数据 239
14.3.3 应用Command对象调用存储过程 240
14.4 DataReader数据读取对象 241
14.4.1 DataReader对象概述 241
14.4.2 使用DataReader对象检索数据 242
14.5 DataSet对象和DataAdapter操作对象 243
14.5.1 DataSet对象 243
14.5.2 DataAdapter对象 244
14.5.3 填充DataSet数据集 245
14.6 DataGridView控件的使用 246
14.7 小结 249
14.8 实战 249
14.8.1 实战一:在DataGridView控件中添加“合计”和“平均值” 249
14.8.2 实战二:分页查看信息 250
第15章 Entity Framework编程 251
15.1 什么是Entity Framework 252
15.2 Entity Framework实体数据模型 252
15.3 Entity Framework运行环境 253
15.4 创建实体数据模型 253
15.5 通过EF对数据表进行增删改查操作 257
15.6 EF相对于ADO.NET的优势 260
15.7 小结 260
15.8 实战 260
15.8.1 实战一:通过EF添加数据 260
15.8.2 实战二:通过EF删除数据 260
第16章 文件及数据流技术 261
16.1 文件基本操作 262
16.1.1 File类 262
16.1.2 FileInfo类 262
16.1.3 判断文件是否存在 263
16.1.4 创建文件 264
16.1.5 复制文件 265
16.1.6 移动文件 266
16.1.7 删除文件 266
16.1.8 获取文件基本信息 267
16.2 文件夹基本操作 268
16.2.1 Directory类 268
16.2.2 DirectoryInfo类 269
16.2.3 判断文件夹是否存在 270
16.2.4 创建文件夹 270
16.2.5 移动文件夹 271
16.2.6 删除文件夹 272
16.2.7 遍历文件夹 273
16.3 I/O(输入/输出) 275
16.3.1 流概述 275
16.3.2 文件I/O流介绍 276
16.3.3 使用I/O流操作文本文件 277
16.4 小结 279
16.5 实战 280
16.5.1 实战一:分类整理文件夹中的文件 280
16.5.2 实战二:模拟记录进销存管理系统的登录日志 280
第17章 GDI+绘图应用 281
17.1 GDI+绘图基础 282
17.1.1 GDI+概述 282
17.1.2 Graphics绘图类 282
17.2 设置画笔与画刷 283
17.2.1 设置画笔 283
17.2.2 设置画刷 284
17.3 绘制几何图形 286
17.3.1 绘制图形 287
17.3.2 填充图形 289
17.4 绘制图像 290
17.5 小结 291
17.6 实战 291
17.6.1 实战一:带说明文字的饼形图 291
17.6.2 实战二:开心农场小游戏 292
第18章 Socket网络编程 293
18.1 计算机网络基础 294
18.1.1 局域网与广域网 294
18.1.2 网络协议 294
18.1.3 端口及套接字 295
18.2 IP地址封装 296
18.3 TCP程序设计 299
18.3.1 Socket类 299
18.3.2 TcpClient类和TcpListener类 300
18.3.3 TCP网络程序实例 301
18.4 UDP程序设计 304
18.4.1 UdpClient类 304
18.4.2 UDP网络程序实例 305
18.5 小结 308
18.6 实战 308
18.6.1 实战一:局域网IP地址扫描 308
18.6.2 实战二:点对点聊天程序 309
第19章 多线程编程技术 310
19.1 线程概述 311
19.1.1 线程的定义与分类 311
19.1.2 多线程的优缺点 311
19.2 线程的实现 312
19.2.1 使用Thread类创建线程 312
19.2.2 线程的生命周期 315
19.3 操作线程的方法 315
19.3.1 线程的休眠 316
19.3.2 线程的加入 317
19.3.3 线程的终止 319
19.3.4 线程的优先级 320
19.4 线程的同步 321
19.4.1 线程同步机制 322
19.4.2 使用lock关键字实现线程同步 323
19.4.3 使用Monitor类实现线程同步 325
19.4.4 使用Mutex类实现线程同步 326
19.5 小结 327
19.6 实战 327
19.6.1 实战一:模拟手机号抽奖 327
19.6.2 实战二:有进度条的文件异步复制 328
第3篇 项目篇 330
第20章 库存管理系统(C#+GDI+技术+SQL Server 2014实现) 330
20.1 开发背景 331
20.2 需求分析 331
20.3 系统设计 331
20.3.1 系统目标 331
20.3.2 系统功能结构 332
20.3.3 业务流程图 332
20.3.4 业务逻辑编码规则 333
20.3.5 程序运行环境 334
20.3.6 系统预览 334
20.4 数据库设计 335
20.4.1 数据库概要说明 335
20.4.2 数据库概念设计 336
20.4.3 数据库逻辑设计 338
20.5 公共类设计 340
20.5.1 程序文件架构 341
20.5.2 DataCon类 342
20.5.3 DataOperate类 344
20.6 供应商信息设置模块设计 349
20.6.1 供应商信息设置模块概述 349
20.6.2 供应商信息设置模块技术分析 350
20.6.3 供应商信息设置模块实现过程 350
20.7 货物入库管理模块设计 354
20.7.1 货物入库管理模块概述 354
20.7.2 货物入库管理模块技术分析 355
20.7.3 货物入库管理模块实现过程 357
20.8 货物出库管理模块设计 359
20.8.1 货物出库管理模块概述 359
20.8.2 货物出库管理模块技术分析 360
20.8.3 货物出库管理模块实现过程 360
20.9 库存信息查询模块设计 364
20.9.1 库存信息查询模块概述 364
20.9.2 库存信息查询模块技术分析 364
20.9.3 库存信息查询模块实现过程 365
20.10 出入库货物年统计模块设计 367
20.10.1 出入库货物年统计模块概述 367
20.10.2 出入库货物年统计模块技术分析 367
20.10.3 出入库货物年统计模块实现过程 368
20.11 文件清单 369
20.12 小结 370