第1章 C#入门基础 1
1.1 C#语言简介 1
1.2 .NET Framework简介 2
1.2.1 .NET Framework概述 3
1.2.2公共语言运行时 3
1.2.3类库 5
1.3程序集 6
1.3.1程序集概述 6
1.3.2程序集内容 7
1.3.3程序集清单 8
1.3.4全局程序集缓存 9
1.4命名空间 9
1.5安装Visual Studio 2010 11
1.6项目案例1:使用记事本创建应用程序 14
1.7项目案例2:创建第一个控制台应用程序 16
1.8项目案例3:创建第一个窗体应用程序 17
1.9习题 19
1.10实践疑难解答 20
1.10.1安装Visual Studio 2010的问题 20
1.10.2安装Visual Studio 2010的配置要求 21
第2章 C#基础语法 22
2.1变量 22
2.1.1变量概述 22
2.1.2声明变量 22
2.1.3初始化变量 23
2.1.4变量分类 24
2.2常量 27
2.2.1常量概述 28
2.2.2声明常量 28
2.3数据类型 29
2.3.1数据类型分类 29
2.3.2值数据类型 29
2.3.3引用类型 31
2.4运算符与表达式 34
2.4.1运算符 35
2.4.2运算符优先级 39
2.4.3表达式 39
2.5数据类型转换 40
2.5.1隐式转换 40
2.5.2 显式转换 41
2.5.3装箱和拆箱 42
2.6注释 43
2.7项目案例1:把整数转换为二进制数 44
2.8项目案例2:求圆的面积 45
2.9习题 45
2.10实践疑难解答 48
2.10.1使用引用参数ref 48
2.10.2类型转换 48
2.10.3三元运算符 49
第3章 流程控制语句 50
3.1基本语句 50
3.1.1空语句 50
3.1.2语句块 51
3.1.3声明语句 51
3.1.4表达式语句 52
3.2选择语句 52
3.2.1 if语句 52
3.2.2 if else语句 53
3.2.3 if else if else语句 54
3.2.4嵌套if语句 56
3.2.5 switch语句 58
3.3循环语句 60
3.3.1 for语句 61
3.3.2 while语句 63
3.3.3 do while语句 64
3.3.4 foreach语句 65
3.4跳转语句 66
3.4.1 break语句 66
3.4.2 continue语句 67
3.4.3 return语句 68
3.4.4 goto语句 68
3.5项目案例1:实现简单的计算器 70
3.6项目案例2:百钱买百鸡 71
3.7习题 72
3.8实践疑难解答 75
3.8.1多重循环输出等腰三角形 75
3.8.2 do while的使用 76
3.8.3李白喝酒问题 77
第4章 数组 78
4.1数组概述 78
4.2维数组 79
4.2.1声明数组 79
4.2.2初始化数组 79
4.3二维数组 80
4.3.1声明数组 80
4.3.2初始化数组 81
4.4多维数组 81
4.5数组操作 83
4.5.1访问数组元素 83
4.5.2使用foreach语句遍历数组 84
4.5.3对数组排序 84
4.6静态数组 87
4.6.1属性 87
4.6.2方法 87
4.6.3获取数组长度和数组元素的值 88
4.6.4数组排序 89
4.6.5复制数组 90
4.7动态数组 93
4.7.1属性 93
4.7.2方法 93
4.7.3增加元素 94
4.7.4删除元素 95
4.8项目案例1:求3*4矩阵的所有外侧元素的和 96
4.9项目案例2:输出学生的成绩 97
4.10习题 98
4.11实践疑难解答 101
4.11.1数组初始化 101
4.11.2数组降序排列 101
4.11.3交错数组 102
4.11.4 for语句数组遍历 103
第5章 集合 104
5.1集合概述 104
5.2 C#的内置集合 105
5.2.1 ArrayList集合 105
5.2.2 Hashtable集合 108
5.2.3 Stack集合 111
5.2.4 Queue集合 113
5.2.5 BitArray集合 115
5.2.6 SortedList集合 117
5.3自定义集合 119
5.3.1声明集合 120
5.3.2向集合中添加对象 121
5.3.3从集合中删除元素 122
5.3.4在集合中检索元素 123
5.4项目案例:模拟购物车 124
5.5习题 130
5.6实践疑难解答 132
5.6.1 Hashtable遍历元素 132
5.6.2 GetEnumerator()方法的返回值问题 133
第6章 类编程 134
6.1面向对象简介 134
6.1.1对象唯一性 134
6.1.2抽象性 134
6.1.3继承性 135
6.1.4多态性 135
6.2类 136
6.2.1类声明语法 136
6.2.2类字段 137
6.2.3属性 137
6.3方法 138
6.3.1无参方法 138
6.3.2有参方法 139
6.3.3重载方法 140
6.3.4 MAIN()方法 141
6.4构造方法 142
6.4.1无参构造方法 143
6.4.2有参构造方法 143
6.5静态方法 145
6.6析构方法 146
6.7项目案例:输出不同图形 147
6.8习题 156
6.9实践疑难解答 158
6.9.1访问静态方法出错 158
6.9.2返回值出错 160
第7章 继承及多态 162
7.1抽象类和抽象方法 162
7.2继承 164
7.2.1虚方法和虚属性 165
7.2.2隐藏方法 168
7.2.3调用基类 169
7.3实现继承 170
7.3.1继承抽象类 170
7.3.2继承中的构造方法 172
7.4实现类的多态 175
7.5项目案例1:计算电阻值 178
7.6项目案例2:选择不同的商品 181
7.7习题 184
7.8实践疑难解答 185
7.8.1重写基类方法时出错 185
7.8.2调用构造方法时出错 187
第8章 结构、枚举和接口 191
8.1结构 191
8.1.1结构概述 191
8.1.2结构成员 192
8.1.3结构和类的区别 195
8.2枚举 196
8.2.1枚举声明 196
8.2.2枚举成员 196
8.2.3枚举类型转换 197
8.2.4枚举的优势和特点 199
8.3接口 199
8.3.1接口概述 199
8.3.2接口成员 200
8.3.3实现接口 202
8.3.4接口和抽象类的区别 203
8.4项目案例1:实现坐标系统中的点 204
8.5项目案例2:简单地使用枚举和接口 205
8.6习题 208
8.7实践疑难解答 211
8.7.1 C#中的枚举问题 211
8.7.2接口变量为普通对象赋值问题 212
第9章 C#应用编程 214
9.1字符串String类 214
9.1.1 String类的构造函数 214
9.1.2比较字符串 216
9.1.3提取字符串 218
9.1.4拆分字符串 219
9.1.5定位与查找字符串 220
9.1.6格式化字符串 222
9.1.7 String类中的其他常用方法 224
9.2 StringBuilder类 227
9.2.1追加字符串 227
9.2.2插入字符串 229
9.2.3替换字符串 230
9.2.4移除字符串 230
9.3正则表达式 231
9.3.1正则表达式的基本语法 231
9.3.2基本类 232
9.3.3 Regex类 234
9.4日期和时间处理 237
9.4.1 DateTime结构 237
9.4.2 TimeSpan结构 241
9.4.3日期和时间的常用操作 244
9.5泛型 246
9.5.1泛型类 246
9.5.2类型形参的约束 247
9.5.3泛型方法 248
9.5.4泛型集合类 249
9.6项目案例:实现某公司员工增删核查的功能 252
9.7习题 258
9.8实践疑难解答 260
9.8.1 String和StringBulider的执行效率 260
9.8.2正则表达式截取地址 261
9.8.3比较字符串忽略大小写问题 261
第10章 构建窗体应用程序 263
10.1 Windows窗体控件概述 263
10.2基本控件 264
10.2.1 Label控件 264
10.2.2 LinkLabel控件 265
10.2.3 TextBox控件 265
10.2.4 MaskedTextBox控件 266
10.2.5 RichTextBox控件 267
10.3按钮类控件 269
10.3.1 Button控件 269
10.3.2 RadioButton控件 270
10.3.3 CheckBox控件 272
10.3.4 NotifyIcon控件 274
10.4项目案例1:用户注册功能的实现 274
10.5图形、图像和计时类控件 277
10.5.1 ImageList控件 278
10.5.2 PictureBox控件 278
10.5.3 Timer控件 279
10.6列表类控件 281
10.6.1 ListBox控件 281
10.6.2 CheckedListBox控件 284
10.6.3 ListView控件 286
10.6.4 ComboBox控件 288
10.7容器类控件 290
10.7.1 Panel控件和GroupBox控件 290
10.7.2 TabControl控件 291
10.8项目案例2:图书管理系统 292
10.9习题 295
10.10实践疑难解答 298
10.10.1 TextBox控件按Enter键进入下一个TextBox控件 298
10.10.2 NotifyIcon控件的问题 298
10.10.3 ComboBox控件实现级联菜单问题 299
第11章 构建MDI应用程序 300
11.1 MDI概述 300
11.1.1什么是MDI 300
11.1.2如何创建MDI 301
11.2菜单、工具栏和状态条控件 303
11.2.1菜单控件 303
11.2.2 ToolStrip控件 307
11.2.3 StatusStrip控件 308
11.3 MDI窗体事件 309
11.4管理MDI子窗体和模式窗体 312
11.5对话框 315
11.5.1窗体对话框 316
11.5.2字体对话框 317
11.5.3颜色对话框 318
11.5.4浏览目录对话框 320
11.5.5打开和保存文件对话框 321
11.6项目案例:考试管理系统 324
11.7习题 330
11.8实践疑难解答 332
11.8.1 MDI子窗体重复打开的问题 332
11.8.2 Close()方法和Application.Exit()的区别 333
11.8.3删除ListView控件的数据 334
第12章 处理文件 335
12.1 I/O流 335
12.1.1 Stream抽象类 335
12.1.2文件流 336
12.1.3内存流 339
12.2目录处理 341
12.2.1 Directory类 341
12.2.2 DirectoryInfo类 341
12.2.3创建目录 342
12.2.4移动目录 344
12.2.5遍历目录 345
12.2.6删除目录 346
12.3文件管理 347
12.3.1 File类 347
12.3.2 FileInfo类 348
12.3.3创建文件 348
12.3.4写入读取文件 349
12.3.5移动文件 351
12.4读写文件 351
12.4.1 StreamWroter和StreaReader 352
12.4.2 BinaryWriter和BinaryReader类 353
12.5注册表 355
12.5.1注册表概述 355
12.5.2注册表类 356
12.5.3对注册表进行操作 357
12.6项目案例:商品文件的读写器 360
12.7习题 362
12.8实践疑难解答 364
12.8.1 StreamReader类读取文件内容 364
12.8.2注册表中判断指定项是否存在 364
第13章 使用ADO.NET访问数据库 366
13.1 ADO.NET概述 366
13.1.1 ADO.NET组件 366
13.1.2 ADO.NET基本对象 367
13.2 ADO.NET操作数据库 369
13.2.1连接数据库 370
13.2.2 Command对象的使用 372
13.2.3 DataReader对象的使用 373
13.3 DataSet概述 375
13.3.1认识和创建DataSet对象 375
13.3.2 DataAdapter填充DataSet对象 376
13.3.3保存数据集中的数据 378
13.3.4 DataTable和DataView的使用 378
13.4 DataGridView控件 380
13.4.1使用DataGridView控件显示数据 381
13.4.2保存修改后的数据 383
13.5使用Tree View控件显示数据 384
13.6项目案例:实现客户数据的管理功能 388
13.7习题 393
13.8实践疑难解答 395
13.8.1打开或关闭数据库连接 395
13.8.2 DataGridView控件显示数据 396
13.8.3 DataReader和DataSet的区别以及使用 396
第14章 超市会员管理系统 398
14.1系统概述 398
14.2系统功能模块 398
14.3数据库设计 401
14.4公共模块 404
14.4.1搭建三层框架 405
14.4.2程序主入口 406
14.4.3系统的主界面 407
14.4.4连接数据库 408
14.5登录模块 411
14.6基本资料模块 413
14.6.1商品管理 413
14.6.2员工管理 420
14.6.3修改登录密码 422
14.7前台收银模块 423
14.8会员管理模块 427
14.8.1会员管理 428
14.8.2会员类型管理 429
14.9统计报表 429
14.9.1会员消费统计 429
14.9.2商品销售统计 432
14.10帮助模块 433
参考答案 434