第1章 C#概述 1
1.1 C#是什么 2
1.1.1 C#及其发展历程 2
1.1.2 C#和.NET Framework的关系 3
1.2 Visual Studio集成开发环境 4
1.2.1 Visual Studio是什么 4
1.2.2 配置Visual C#开发环境 4
1.2.3 Visual Studio 2012的启动和退出 4
1.2.4 Visual C#集成开发环境 6
1.3 编写第一个C#程序 11
1.4 Console类 15
练习题 17
第2章 C#程序设计基础 19
2.1 C#中的数据类型 20
2.1.1 C#数据类型概述 20
2.1.2 值类型 21
2.1.3 引用类型 22
2.2 变量和常量 22
2.2.1 变量及其定义 22
2.2.2 值变量和引用变量的区别 24
2.2.3 常量及其定义 27
2.2.4 简单类型值的转换 28
2.3 结构类型和枚举类型 30
2.3.1 结构类型 30
2.3.2 枚举类型 33
2.4 C#运算符和表达式 34
2.4.1 C#的运算符 34
2.4.2 运算符的优先级 37
2.4.3 C#的表达式 38
2.5 C#中的常用类和结构 39
2.5.1 String类 39
2.5.2 Math类 42
2.5.3 Convert类 43
2.5.4 数据类型转换 44
2.5.5 DateTime结构 45
2.6 程序集简介 47
练习题 49
上机实验题 52
第3章 C#控制语句 53
3.1 C#语句 54
3.1.1 C#语句概述 54
3.1.2 顺序控制结构 54
3.2 选择控制语句 54
3.2.1 if语句 55
3.2.2 if…else语句 55
3.2.3 if…else if语句 56
3.2.4 switch语句 57
3.3 循环控制语句 59
3.3.1 while语句 59
3.3.2 do…while语句 61
3.3.3 for语句 61
3.3.4 break语句和continue语句 62
3.4 异常处理 64
3.4.1 异常处理概述 64
3.4.2 异常处理流程 65
3.5 程序调试 67
3.5.1 程序调试概述 67
3.5.2 程序调试过程 68
练习题 71
上机实验题 76
第4章 数组和集合 77
4.1 一维数组 78
4.1.1 数组概述 78
4.1.2 一维数组的定义 78
4.1.3 一维数组的动态初始化 79
4.1.4 一维数组的静态初始化 79
4.1.5 访问一维数组中的元素 80
4.1.6 一维数组的越界 81
4.2 二维数组 81
4.2.1 二维数组的定义 82
4.2.2 二维数组的动态初始化 82
4.2.3 二维数组的静态初始化 82
4.2.4 访问二维数组中的元素 82
4.3 交错数组 84
4.3.1 交错数组的定义和初始化 84
4.3.2 访问交错数组中的元素 85
4.4 Array类 86
4.4.1 Array类的属性和方法 87
4.4.2 Array类中方法的使用 87
4.5 ArrayList集合类 89
4.5.1 ArrayList类概述 89
4.5.2 定义ArrayList类的对象 89
4.5.3 ArrayList类的属性 89
4.5.4 ArrayList类的方法 90
练习题 91
上机实验题 93
第5章 面向对象程序设计 94
5.1 类 95
5.1.1 类的声明 95
5.1.2 类的成员 96
5.1.3 类和结构类型的差异 97
5.2 对象 97
5.2.1 定义类的对象 97
5.2.2 访问对象的成员 98
5.2.3 访问对象成员的限制 98
5.2.4 类对象的内存空间分配方式 99
5.3 字段 100
5.3.1 定义字段 101
5.3.2 常量字段 101
5.3.3 只读字段 101
5.4 构造函数和析构函数 102
5.4.1 构造函数 102
5.4.2 析构函数 103
5.5 静态成员 104
5.5.1 静态字段 104
5.5.2 静态方法 105
5.6 属性 106
5.6.1 属性概述 106
5.6.2 属性的定义和使用 107
5.6.3 自动实现的属性 108
5.7 方法 108
5.7.1 方法的定义 109
5.7.2 方法的返回值 109
5.7.3 方法的参数类型 109
5.7.4 方法的可选参数 114
5.7.5 this关键字 114
5.8 方法重载和运算符重载 116
5.8.1 方法重载 116
5.8.2 运算符重载 117
练习题 119
上机实验题 124
第6章 继承、接口和泛型 125
6.1 继承设计 126
6.1.1 继承概述 126
6.1.2 派生类的声明 126
6.1.3 基类成员的可访问性 127
6.1.4 调用构造函数和析构函数的次序 128
6.1.5 使用sealed修饰符来禁止继承 130
6.2 多态性 131
6.2.1 多态性概述 131
6.2.2 覆盖实现多态性 131
6.2.3 重写实现多态性 133
6.3 抽象类 135
6.3.1 抽象类的特性 135
6.3.2 抽象方法实现 135
6.4 接口设计 138
6.4.1 接口的特性 138
6.4.2 接口设计 138
6.4.3 声明接口成员 139
6.4.4 接口的实现 140
6.4.5 接口在集合排序中的应用 142
6.4.6 继承和接口设计方法 147
6.5 泛型设计 148
6.5.1 泛型概述 148
6.5.2 泛型的声明和使用 149
6.5.3 List<T>泛型及其应用 151
练习题 154
上机实验题 159
第7章 Windows窗体应用程序设计 160
7.1 Windows窗体应用程序概述 161
7.1.1 创建Windows窗体应用程序的过程 161
7.1.2 Windows窗体应用程序的结构 164
7.2 常用的控件设计 166
7.2.1 控件概述 166
7.2.2 按钮类控件 168
7.2.3 分组类控件 172
7.2.4 文本类控件 173
7.2.5 列表类控件 176
7.2.6 其他控件 187
7.3 通用对话框 190
7.3.1 打开文件对话框 190
7.3.2 保存文件对话框 190
7.3.3 颜色对话框 192
7.3.4 字体对话框 193
7.4 菜单设计 193
7.4.1 下拉式菜单设计 193
7.4.2 弹出式菜单设计 197
7.5 工具栏控件和状态栏控件 200
7.5.1 工具栏控件 200
7.5.2 状态栏控件 202
7.6 多窗体调用和数据传递 203
7.6.1 多个窗体之间的调用 203
7.6.2 多个窗体之间的数据传递 203
7.7 多文档窗体 206
7.7.1 多文档窗体概述 206
7.7.2 MDI父窗体属性、事件和方法 206
7.7.3 MDI子窗体属性 207
7.7.4 创建MDI父窗体及其子窗体 207
练习题 208
上机实验题 211
第8章 文件操作 213
8.1 System.IO模型 214
8.1.1 System.IO模型概述 214
8.1.2 文件编码 214
8.1.3 C#的文件流 215
8.2 文件夹和文件操作 215
8.2.1 文件夹操作 215
8.2.2 文件操作 216
8.3 文件的读写操作 219
8.3.1 读写文件的过程 219
8.3.2 FileStream类 219
8.3.3 StreamReader类和StreamWriter类 220
8.3.4 BinaryReader类和BinaryWriter类 223
练习题 226
上机实验题 228
第9章 SQL Server数据库 229
9.1 数据库概述 230
9.1.1 关系数据库术语 230
9.1.2 数据库管理系统提供的功能 231
9.1.3 SQL Server数据库管理系统 232
9.2 创建和删除数据库 233
9.2.1 SQL Server数据库的存储结构 233
9.2.2 创建数据库 234
9.2.3 修改数据库 235
9.2.4 数据库更名和删除 236
9.3 创建和使用表 237
9.3.1 表概述 237
9.3.2 创建表 238
9.3.3 修改表结构 242
9.3.4 表更名和删除表 242
9.3.5 新增和修改表记录 243
练习题 244
上机实验题 245
第10章 SQL语言 247
10.1 SQL概述 248
10.1.1 什么是SQL 248
10.1.2 T-SQL的组成 248
10.1.3 T-SQL语句的执行过程 249
10.2 数据定义语言 249
10.2.1 数据库的数据定义语句 250
10.2.2 表的数据定义语句 253
10.3 数据操纵语言 256
10.3.1 INSERT语句 256
10.3.2 UPDATE语句 257
10.3.3 DELETE语句 258
10.4 数据查询语言 258
10.4.1 查询的基本格式 258
10.4.2 投影查询 259
10.4.3 选择查询 260
10.4.4 对查询结果进行排序 260
10.4.5 使用聚合函数 261
10.4.6 连接查询 263
10.4.7 子查询 266
10.4.8 空值及其处理 272
10.5 T-SQL编程基础 273
10.5.1 标识符和注释 273
10.5.2 数据类型 274
10.5.3 变量 276
10.5.4 运算符 278
10.5.5 批处理 279
10.5.6 控制流语句 280
10.5.7 函数 282
练习题 288
上机实验题 291
第11章 索引和视图 292
11.1 索引概述 293
11.1.1 什么是索引 293
11.1.2 索引的类型 293
11.2 创建和使用索引 294
11.2.1 创建索引 295
11.2.2 查看索引信息 298
11.2.3 索引的使用 298
11.2.4 修改索引 298
11.2.5 删除索引 300
11.3 视图概述 301
11.3.1 什么是视图 301
11.3.2 视图类型 301
11.4 创建和使用视图 302
11.4.1 创建视图 302
11.4.2 使用视图 305
11.4.3 修改视图定义 308
11.4.4 查看视图的信息 308
11.4.5 视图重命名和删除 309
练习题 310
上机实验题 311
第12章 存储过程 312
12.1 存储过程概述 313
12.1.1 什么是存储过程 313
12.1.2 存储过程的类型 313
12.2 创建存储过程 314
12.2.1 使用SQL Server管理器创建存储过程 314
12.2.2 使用CREATE PROCEDURE语句创建存储过程 315
12.3 执行存储过程 316
12.4 存储过程的参数和返回值 317
12.4.1 存储过程中使用参数 318
12.4.2 存储过程中使用默认参数 318
12.4.3 存储过程中使用输出参数 319
12.4.4 存储过程的返回值 320
12.5 使用游标 321
12.5.1 游标的概念 321
12.5.2 游标的基本操作 322
12.5.3 使用游标获取结果集 324
12.6 存储过程的管理 326
12.6.1 查看存储过程 326
12.6.2 修改存储过程 327
12.6.3 重命名存储过程 328
12.6.4 删除存储过程 328
练习题 329
上机实验题 330
第13章 ADO.NET访问数据库基础 331
13.1 ADO.NET模型 332
13.1.1 ADO.NET模型简介 332
13.1.2 ADO.NET数据库的访问流程 334
13.2 ADO.NET的数据访问对象 334
13.2.1 SqlConnection对象 335
13.2.2 SqlCommand对象 338
13.2.3 SqlDataRead对象 344
13.2.4 SqlDataAdapter对象 348
13.3 DataSet对象 351
13.3.1 DataSet对象概述 351
13.3.2 DataTable对象 352
13.3.3 DataSet对象的应用 354
练习题 355
上机实验题 357
第14章 数据控件 359
14.1 数据控件概述 360
14.2 数据绑定 360
14.2.1 单一绑定 360
14.2.2 复合绑定 365
14.2.3 Binding Navigator控件 367
14.3 DataView对象 371
14.3.1 DataView对象概述 372
14.3.2 DataView对象的排序设置 373
14.3.3 DataView对象的过滤条件设置 374
14.4 DataGridView控件 375
14.4.1 创建DataGridView控件 375
14.4.2 DataGridView控件的属性、方法和事件 379
14.4.3 DataGridView与DataView对象结合 384
14.4.4 通过DataGridView对象更新数据库 388
练习题 390
上机实验题 391
第15章 数据库系统开发实例 393
15.1 SM系统概述 394
15.1.1 SM系统功能 394
15.1.2 SM系统设计技巧 395
15.1.3 SM系统安装 395
15.2 数据库设计 395
15.3 公共类设计 396
15.4 登录和主菜单窗体设计 399
15.4.1 登录窗体设计 399
15.4.2 主菜单窗体设计 401
15.5 商品信息管理功能设计 404
15.5.1 “添加新商品”功能设计 404
15.5.2 “编辑商品信息”功能设计 407
15.5.3 “增加老商品库存”功能设计 414
15.5.4 “商品库存报警”功能设计 416
15.6 顾客信息管理功能设计 418
15.6.1 “添加新顾客”功能设计 418
15.6.2 “编辑顾客信息”功能设计 420
15.6.3 “查看顾客购物信息”功能设计 420
15.7 购物管理功能设计 422
15.7.1 “顾客购物”功能设计 422
15.7.2 “顾客退货”功能设计 425
15.8 查询功能设计 429
15.8.1 “按分类统计销售情况”功能设计 429
15.8.2 “按子类统计销售情况”功能设计 431
15.8.3 “按商品统计销售情况”功能设计 431
15.9 系统管理功能设计 433
15.9.1 “用户管理”功能设计 433
15.9.2 “设置商品类别”功能设计 438
15.9.3 “设置地区信息”功能设计 441
15.9.4 “系统初始化”功能设计 441
15.10 帮助功能设计 442
15.10.1 “关于……”功能设计 443
15.10.2 “联系信息”功能设计 443
附录 444
附录A部分练习题参考答案 444
附录B上机实验题参考答案 458
参考文献 478