图书目录

目  录

  本书光盘"自主学习系统"内容索引...XIII

第1篇  入  门  篇

第1章  搭建C#程序开发环境 2

( 视频讲解:36分钟)

1.1  C#语言简介 3

1.1.1  什么是C#语言 3

1.1.2  C#的应用领域 3

1.1.3  认识.NET Framework 4

1.1.4  C#与.NET的关系 4

1.2  C#开发环境概述 4

1.2.1  Visual Studio开发环境 5

1.2.2  数据库 5

1.3  Visual Studio 2012开发环境 5

1.3.1  系统必备 5

1.3.2  安装Visual Studio 2012 6

1.3.3  启动Visual Studio 2012 8

1.3.4  卸载Visual Studio 2012 11

1.4  安装Visual Studio开发帮助 11

1.5  熟悉Visual Studio 2012开发

环境 12

1.5.1  创建项目 12

1.5.2  菜单栏 14

1.5.3  工具栏 14

1.5.4  解决方案资源管理器 15

1.5.5  "工具箱"窗口 15

1.5.6  "错误列表"窗口 17

1.5.7  "输出"窗口 17

1.6  本章常见错误 17

1.6.1  C#和.NET有什么关系 17

1.6.2  Visual Studio 2012开发环境

安装不上 18

1.7  本章小结 18

1.8  跟我上机 18

第2章  掌握C#语言基础 19

( 视频讲解:2小时)

2.1  代码编写规则 20

2.1.1  代码书写规则 20

2.1.2  代码注释及规则 20

2.2  数据类型 21

2.2.1  值类型的使用 21

2.2.2  引用类型的使用 23

2.3  变量和常量 25

2.3.1  变量的声明和赋值 25

2.3.2  定义和使用常量 26

2.4  数据类型转换 27

2.4.1  隐式类型转换 27

2.4.2  显式类型转换 28

2.4.3  装箱和拆箱 29

2.5  C#中的运算符 31

2.5.1  算术运算符 31

2.5.2  赋值运算符 32

2.5.3  关系运算符 33

2.5.4  逻辑运算符 34

2.5.5  移位运算符 35

2.5.6  其他特殊运算符 36

2.5.7  运算符的优先级 37

2.6  综合应用 37

2.6.1  利用运算符判断用户名称和

密码 37

2.6.2  加密用户密码等重要的数据

信息 38

2.6.3  简单加法计算器 39

2.7  本章常见错误 40

2.7.1  类型转换时产生的错误 40

2.7.2  使用拆箱操作时出现的错误 41

2.8  本章小结 42

2.9  跟我上机 42

第3章  流程控制语句 43

( 视频讲解:54分钟)

3.1  条件选择语句 44

3.1.1  使用if...else语句实现条件

选择 44

3.1.2  使用switch语句实现多分支

选择 46

3.2  循环语句的使用 48

3.2.1  使用while语句实现代码循环 48

3.2.2  使用do...while语句实现至少

执行一次循环 50

3.2.3  使用for语句实现代码循环 51

3.2.4  使用foreach语句遍历数据

集合 53

3.3  跳转语句 54

3.3.1  break语句 54

3.3.2  continue语句 56

3.3.3  goto语句 56

3.3.4  return语句 58

3.4  综合应用 58

3.4.1  利用if...else语句判断分数

是否及格 58

3.4.2  打印九九乘法表 59

3.4.3  利用for循环实现完数的计算 60

3.5  本章常见错误 61

3.5.1  使用循环语句不慎产生死循环的

错误 61

3.5.2  关于return语句的问题 61

3.6  本章小结 62

3.7  跟我上机 62

第4章  字符与字符串的使用 63

( 视频讲解:45分钟)

4.1  字符类Char的使用 64

4.1.1  Char类概述 64

4.1.2  Char类的使用 64

4.1.3  转义字符 66

4.2  字符串类String的使用 67

4.2.1  String类概述 68

4.2.2  String类的使用 68

4.2.3  比较字符串 69

4.2.4  格式化字符串 72

4.2.5  截取字符串 73

4.2.6  分割字符串 74

4.2.7  插入和填充字符串 75

4.2.8  删除字符串 76

4.2.9  复制字符串 77

4.2.10  替换字符串 79

4.3  可变字符串类StringBuilder类 80

4.3.1  StringBuilder类的定义 80

4.3.2  StringBuilder类的使用 80

4.3.3  StringBuilder类与String类的

区别 81

4.4  综合应用 82

4.4.1  将汉字转换为拼音 82

4.4.2  获取字符串中汉字的个数 85

4.5  本章常见错误 86

4.5.1  把字符串当作值类型使用 86

4.5.2  string和String的认识误区 87

4.6  本章小结 87

4.7  跟我上机 87

第5章  数组和集合 88

( 视频讲解:52分钟)

5.1  数组概述 89

5.2  一维数组的声明和使用 89

5.2.1  一维数组的声明 89

5.2.2  一维数组的使用 90

5.3  二维数组的声明和使用 91

5.3.1  二维数组的声明 91

5.3.2  二维数组的使用 92

5.3.3  动态数组的声明及使用 93

5.4  数组的基本操作 94

5.4.1  数组的遍历 95

5.4.2  添加/删除数组元素 95

5.4.3  对数组进行排序 97

5.5  ArrayList类 101

5.5.1  ArrayList类概述 101

5.5.2  ArrayList元素的添加 102

5.5.3  ArrayList元素的删除 104

5.5.4  ArrayList的遍历 106

5.6  综合应用 107

5.6.1  删除数组元素后改变其

长度 107

5.6.2  向班级集合中添加学生

信息 108

5.7  本章常见错误 109

5.7.1  使用for删除集合中元素时的

错误 109

5.7.2  C#数组和C++数组混淆的

问题 111

5.7.3  遍历ArrayList数组时可能存在的

错误 111

5.8  本章小结 112

5.9  跟我上机 112

第6章  面向对象程序设计 113

( 视频讲解:1小时25分钟)

6.1  面向对象编程概述 114

6.2  属性的定义及使用 115

6.2.1  属性概述 115

6.2.2  属性的定义 115

6.2.3  属性的使用 116

6.3  方法的声明及使用 118

6.3.1  方法概述 118

6.3.2  方法修饰符 118

6.3.3  方法的声明 119

6.3.4  方法的分类 120

6.3.5  重载方法的实现 121

6.4  结构的定义及使用 122

6.4.1  结构概述 122

6.4.2  结构的定义 122

6.4.3  结构的使用 123

6.5  类与对象详解 124

6.5.1  类的概念 124

6.5.2  类的声明 125

6.5.3  构造函数和析构函数 125

6.5.4  对象的声明和实例化 127

6.5.5  类与对象的关系 129

6.6  面向对象特性之封装 129

6.6.1  封装概述 129

6.6.2  封装的实现 130

6.7  面向对象特性之继承 131

6.7.1  继承概述 131

6.7.2  继承的实现 132

6.7.3  单继承的使用 134

6.7.4  多重继承的使用 135

6.8  面向对象特性之多态 137

6.8.1  多态概述 137

6.8.2  多态的实现 138

6.9  综合应用 140

6.9.1  使用面向对象思想实现简单

计算器 140

6.9.2  使用面向对象思想实现在字符串中

查找数字 141

6.10  本章常见错误 143

6.10.1  类可以有多少个父类,是否可以

实现多个接口 143

6.10.2  被protected修饰的属性/方法在

何处可以访问 143

6.10.3  能否将非静态的方法覆写成

静态方法 143

6.10.4  为什么不能指定接口中方法的

修饰符 143

6.11  本章小结 143

6.12  跟我上机 143

第7章  认识Windows窗体 144

( 视频讲解:1小时)

7.1  Form窗体的使用 145

7.1.1  Form窗体概述 145

7.1.2  添加和删除窗体 145

7.1.3  多窗体的使用 147

7.1.4  窗体的属性 147

7.1.5  窗体的显示与隐藏 150

7.1.6  窗体的事件 150

7.2  MDI多文档窗体的使用 152

7.2.1  MDI窗体概述 152

7.2.2  如何设置MDI窗体 152

7.2.3  排列MDI子窗体 153

7.3  继承窗体设计 155

7.3.1  继承窗体概述 155

7.3.2  创建继承窗体 156

7.3.3  在继承窗体中修改继承的控件

属性 157

7.4  综合应用 158

7.4.1  根据桌面大小调整窗体大小 158

7.4.2  自定义最大化、最小化和关闭

按钮 159

7.4.3  窗体换肤程序 160

7.5  本章常见错误 162

7.5.1  项目编译之后的.pdb文件有何

用处 162

7.5.2  MDI主窗体中的背景为何

呈现灰色 163

7.5.3  创建继承窗体的两种方法有什么

区别 163

7.5.4  区别Modifiers属性的3种访问

修饰符 163

7.6  本章小结 163

7.7  跟我上机 164

第8章  Windows应用程序的常用

控件 165

( 视频讲解:1小时34分钟)

8.1  控件概述 166

8.2  控件的相关操作 166

8.2.1  添加控件 166

8.2.2  对齐控件 167

8.2.3  锁定控件 167

8.2.4  删除控件 167

8.3  文本类控件 167

8.3.1  标签控件(Label控件) 168

8.3.2  按钮控件(Button控件) 168

  

8.3.3  文本框控件(TextBox控件) 170

8.3.4  有格式文本控件(RichTextBox

控件) 171

8.4  选择类控件 174

8.4.1  下拉组合框控件(ComboBox

控件) 174

8.4.2  复选框控件(CheckBox

控件) 176

8.4.3  单选按钮控件(RadioButton

控件) 178

8.4.4  数值选择控件(NumericUpDown

控件) 180

8.4.5  列表控件(ListBox控件) 181

8.5  分组类控件 184

8.5.1  容器控件(Panel控件) 184

8.5.2  分组框控件(GroupBox

控件) 186

8.5.3  选项卡控件(TabControl

控件) 186

8.6  菜单、工具栏和状态栏控件 190

8.6.1  菜单控件(MenuStrip

控件) 190

8.6.2  工具栏控件(ToolStrip

控件) 191

8.6.3  状态栏控件(StatusStrip

控件) 192

8.7  综合应用 193

8.7.1  只允许输入数字的TextBox

控件 193

8.7.2  实现带查询功能的ComboBox

控件 194

8.7.3  利用选择控件实现权限设置 195

8.8  本章常见错误 196

8.8.1  使用Controls属性遍历窗体控件时

产生的错误 196

8.8.2  获取ComboBox的SelectedValue

属性时产生的错误 198

8.9  本章小结 200

8.10  跟我上机 200

第2篇  提  高  篇

第9章  Windows应用程序的高级

控件 202

( 视频讲解:1小时2分钟)

9.1  ImageList控件(存储图像

控件) 203

9.1.1  在ImageList控件中添加图像 203

9.1.2  在ImageList控件中移除图像 204

9.2  ListView控件(列表视图

控件) 205

9.2.1  在ListView控件中添加

移除项 206

9.2.2  选择ListView控件中的项 208

9.2.3  为ListView控件中的项添加

图标 209

9.2.4  在ListView控件中启用

平铺视图 210

9.3  TreeView控件(树控件) 211

9.3.1  添加和删除树节点 211

9.3.2  获取树控件中选中的节点 213

9.3.3  为树控件中的节点设置图标 214

9.4  DateTimePicker控件(日期

控件) 215

9.4.1  使用DateTimePicker控件显示

时间 216

9.4.2  使用DateTimePicker控件以自定义

格式显示日期 217

9.4.3  返回DateTimePicker控件中选择的

日期 218

9.5  其他高级控件 219

9.5.1  使用ErrorProvider控件验证

文本框输入 219

9.5.2  使用HelpProvider控件调用帮助

文件 221

9.5.3  使用Timer控件设置时间间隔 222

9.5.4  使用ProgressBar控件显示程序

运行进度条 223

9.6  综合应用 224

9.6.1  制作一个闹钟计时器 224

9.6.2  使用TreeView控件遍历磁盘

目录 227

9.7  本章常见错误 229

9.7.1  Timer组件的执行周期最大可以

设置多长时间 229

9.7.2  ImageList中如果放入大图片会

怎么样 229

9.7.3  ProgressBar控件的使用问题 229

9.8  本章小结 229

9.9  跟我上机 229

第10章  面向对象高级技术 231

( 视频讲解:1小时22分钟)

10.1  接口的使用 232

10.1.1  接口的概念及声明 232

10.1.2  接口的实现与继承 233

10.1.3  显式接口成员实现 236

10.2  抽象类与抽象方法 237

10.2.1  抽象类概述及声明 238

10.2.2  抽象方法概述及声明 238

10.2.3  抽象类与抽象方法的使用 239

10.2.4  抽象类与接口 240

10.3  密封类与密封方法 240

10.3.1  密封类概述及声明 240

10.3.2  密封方法概述及声明 241

10.3.3  密封类与密封方法的使用 242

10.4  迭代器与分部类 243

10.4.1  迭代器的使用 243

10.4.2  分部类的使用 244

10.5  泛型的使用 246

10.5.1  类型参数T 246

10.5.2  泛型接口 247

10.5.3  泛型方法 248

10.6  综合应用 249

10.6.1  自定义抽象类计算圆形的

面积 249

10.6.2  使用接口作为方法参数进行

编程 250

10.6.3  使用迭代器显示公交车站点 250

10.7  本章常见错误 251

10.7.1  使用结构实现接口的问题 251

10.7.2  构造方法中调用虚方法的

错误 252

10.7.3  泛型在不被指定的情况下是

不确定的类型 254

10.8  本章小结 255

10.9  跟我上机 255

第11章  ADO.NET数据库开发技术 256

( 视频讲解:2小时8分钟)

11.1  ADO.NET概述 257

11.2  使用Connection连接数据库 258

11.2.1  熟悉Connection对象 258

11.2.2  连接数据库字符串 258

11.2.3  使用SqlConnection对象连接

数据库 260

11.3  使用Command对象操作

数据 261

11.3.1  熟悉Command对象 261

11.3.2  设置数据源类型 263

11.3.3  执行SQL语句 265

11.4  使用DataReader对象读取

数据 267

11.4.1  理解节省内存的DataReader

对象 267

11.4.2  使用DataReader对象

读取数据 268

11.5  使用DataSet和DataAdapter

查询数据 269

11.5.1  离线模式核心对象--DataSet

对象 269

11.5.2  桥梁架设工程师--DataAdapter

对象 269

11.5.3  填充DataSet数据集 271

11.5.4  更新数据源 272

11.6  综合应用 273

11.6.1  使用二进制存储用户头像 273

11.6.2  使用存储过程实现员工

自动编号 276

11.6.3  使用交叉表统计商品销售

信息 278

11.7  本章常见错误 281

11.7.1  用DataReader读取数据时出现

错误 281

11.7.2  混淆.NET和SQL Server中的

"空值" 282

11.7.3  以DataReader作为返回类型的

陷阱 282

11.8  本章小结 283

11.9  跟我上机 284

第12章  数据绑定控件的使用 285

( 视频讲解:50分钟)

12.1  DataGridView控件的使用 286

12.2  BindingSource组件的使用 288

12.3  BindingNavigator控件的

使用 292

12.4  综合应用 294

12.4.1  在DataGridView控件中添加

"合计"和"平均值" 294

12.4.2  通过DataGridView分页查看

用户信息 295

12.5  本章常见错误 297

12.5.1  清除DataGridView中数据时

产生的错误 297

12.5.2  在DataGridView中绑定自增列

产生的错误 300

12.6  本章小结 302

12.7  跟我上机 302

第13章  LINQ数据访问技术 303

( 视频讲解:1小时2分钟)

13.1  LINQ基础 304

13.1.1  LINQ概述 304

13.1.2  使用var创建隐型局部变量 305

13.1.3  Lambda表达式的使用 306

13.1.4  LINQ查询表达式 307

13.2  LINQ操作SQL Server

数据库 308

13.2.1  使用LINQ查询SQL Server

数据库 308

13.2.2  使用LINQ管理SQL Server

数据库 312

13.3  LINQ操作其他数据 318

13.3.1  使用LINQ操作数组和集合 318

13.3.2  使用LINQ操作DataSet

数据集 319

13.3.3  使用LINQ操作XML 321

13.4  综合应用 324

13.4.1  使用LINQ技术获取文件详细

信息 324

13.4.2  使用LINQ技术分类查询公司

员工薪水 327

13.4.3  使用LINQ技术防止SQL注入式

攻击 328

13.5  本章常见错误 329

13.5.1  使用了未赋值的局部

变量var 329

13.5.2  使用LINQ的First方法时产生的

错误 329

13.6  本章小结 331

13.7  跟我上机 331

第14章  文件及数据流技术 332

( 视频讲解:1小时22分钟)

14.1  System.IO命名空间 333

14.2  文件基本操作 333

14.2.1  File类和FileInfo类 334

14.2.2  判断文件是否存在 337

14.2.3  创建文件 338

14.2.4  打开文件 339

14.2.5  复制文件 342

14.2.6  移动文件 343

14.2.7  删除文件 344

14.2.8  获取文件基本信息 345

14.3  文件夹基本操作 346

14.3.1  Directory类和

DirectoryInfo类 346

14.3.2  判断文件夹是否存在 348

14.3.3  创建文件夹 349

14.3.4  移动文件夹 350

14.3.5  删除文件夹 351

14.3.6  遍历文件夹 351

14.4  数据流操作 354

14.4.1  流操作类介绍 354

14.4.2  文件流类 354

14.4.3  文本文件的写入与读取 356

14.4.4  二进制文件的写入与读取 358

14.5  综合应用 360

14.5.1  文件批量重命名的实现 360

14.5.2  对指定文件夹中的文件进行

分类存储 364

14.6  本章常见错误 365

14.6.1  因读写文件时编码格式不一致

而产生的错误 365

14.6.2  读写二进制文件的错误 366

14.7  本章小结 368

14.8  跟我上机 369

第15章  GDI+绘图技术 370

( 视频讲解:1小时12分钟)

15.1  GDI+绘图基础 371

15.1.1  GDI+概述 371

15.1.2  创建Graphics对象 371

15.1.3  创建Pen对象 372

15.1.4  创建Brush对象 373

15.2  基本图形绘制 375

15.2.1  GDI+中的直线和矩形 375

15.2.2  GDI+中的椭圆、弧和扇形 378

15.2.3  GDI+中的多边形 381

15.3  综合应用 382

15.3.1  应用GDI+技术实现图像的

水印效果 382

15.3.2  抓取网站整页面 385

15.4  本章常见错误 389

15.4.1  如何获取一张图片中某个点的

RGB值 389

15.4.2  窗体失去焦点时,图片消失的

错误 389

15.5  本章小结 390

15.6  跟我上机 390

第16章  线程的使用 393

( 视频讲解:56分钟)

16.1  线程概述 394

16.1.1  了解单线程 394

16.1.2  多线程概述 394

16.2  线程的基本操作 395

16.2.1  线程基础--Thread类 395

16.2.2  线程的创建 397

16.2.3  线程的挂起与恢复 398

16.2.4  线程休眠 399

16.2.5  终止线程 400

16.2.6  线程的优先级 402

16.3  线程同步 403

16.3.1  使用lock关键字实现线程

同步 403

16.3.2  使用Monitor类实现线程

同步 404

16.3.3  使用Mutex类实现线程同步 406

16.4  综合应用 407

16.4.1  使用多线程制作端口扫描

工具 407

16.4.2  使用线程控制向窗体中拖放

图片并显示 411

16.4.3  使用线程扫描局域网IP

地址 415

16.5  本章常见错误 416

16.5.1  使用值类型进行线程同步的

错误 416

16.5.2  多个线程调用同一静态方法的

运行结果问题 418

16.6  本章小结 419

16.7  跟我上机 419

第17章  网络编程技术 420

( 视频讲解:52分钟)

17.1  计算机网络基础 421

17.1.1  局域网与互联网介绍 421

17.1.2  网络协议介绍 421

17.1.3  端口及套接字介绍 423

17.2  网络编程基础 424

17.2.1  System.Net命名空间及相关类的

使用 424

17.2.2  System.Net.Sockets命名空间及

相关类的使用 430

17.2.3  System.Net.Mail命名空间及

相关类的使用 436

17.3  综合应用 439

17.3.1  创建Web页面浏览器 439

17.3.2  设计点对点聊天程序 440

17.3.3  远程关闭与重启计算机 442

17.4  本章常见错误 444

17.4.1  无法连接到远程服务器的

错误 444

17.4.2  解决网络编程中的套接字

错误 444

17.5  本章小结 445

17.6  跟我上机 445

第18章  使用C#操作注册表 446

( 视频讲解:20分钟)

18.1  注册表基础 447

18.1.1  Windows注册表概述 447

18.1.2  Registry类和RegistryKey类的

使用 448

18.2  使用C#操作注册表 449

18.2.1  读取注册表中信息 449

18.2.2  创建和修改注册表信息 451

18.2.3  删除注册表中信息 454

18.3  综合应用 457

18.3.1  利用网卡序列号设计软件注册

程序 457

18.3.2  根据CPU序列号、磁盘序列号

设计软件注册程序 459

18.4  本章常见错误 462

18.4.1  C#读取注册表的权限问题 462

18.4.2  使用C#修改注册表DWORD键时

出现的错误 462

18.5  本章小结 463

18.6  跟我上机 463

第19章  程序调试与错误处理 464

( 视频讲解:34分钟)

19.1  程序调试 465

19.1.1  断点操作 465

19.1.2  开始执行 466

19.1.3  中断执行 467

19.1.4  停止执行 467

19.1.5  单步执行和逐过程执行 467

19.1.6  运行到指定位置 468

19.2  异常处理语句 468

  

19.2.1  使用throw语句抛出异常 468

19.2.2  使用try...catch语句捕捉

异常 469

19.2.3  使用try...catch...finally语句

捕捉异常 470

19.3  综合应用 472

19.3.1  使用异常处理语句捕获数据库

连接异常 472

19.3.2  通过插入断点查看局部

变量的值 473

19.4  本章常见错误 474

19.4.1  所有异常都使用try...catch语句

捕获的问题 474

19.4.2  在try语句中使用return语句,

finally语句会不会执行 475

19.5  本章小结 476

19.6  跟我上机 476

第3篇  实  战  篇

第20章  C#游戏开发 478

( 视频讲解:1小时18分钟)

20.1  华容道游戏 479

20.1.1  概述 479

20.1.2  设计思路 479

20.1.3  技术要点 479

20.1.4  实现过程 481

20.2  俄罗斯方块 488

20.2.1  概述 488

20.2.2  设计思路 488

20.2.3  技术要点 489

20.2.4  实现过程 489

20.3  网络五子棋游戏 500

20.3.1  概述 500

20.3.2  设计思路 500

20.3.3  技术要点 500

20.3.4  实现过程 502

20.4  本章小结 515

第21章  企业进销存管理系统 516

( 视频讲解:1小时42分钟)

21.1  开发背景 517

21.2  需求分析 517

21.3  系统设计 517

21.3.1  系统目标 517

21.3.2  系统功能结构 518

21.3.3  系统预览 518

21.3.4  业务流程图 520

21.3.5  程序运行环境 520

21.3.6  数据库分析 520

21.3.7  数据库概念设计 521

21.3.8  数据库逻辑结构设计 522

21.3.9  数据表逻辑关系 524

21.3.10  文件夹组织结构 525

21.4  公共类设计 526

21.4.1  DataBase公共类 526

21.4.2  BaseInfo公共类 529

21.5  登录模块设计 533

21.5.1  设计登录窗体 534

21.5.2  按Enter键时移动鼠标焦点 534

21.5.3  登录功能的实现 534

21.6  系统主窗体设计 535

21.6.1  设计系统主窗体 536

21.6.2  设计菜单栏 536

21.7  库存商品管理模块设计 538

21.7.1  设计库存商品管理窗体 538

21.7.2  显示库存商品所有信息 539

21.7.3  添加/修改库存商品信息 539

21.7.4  删除库存商品信息 541

21.7.5  查询库存商品信息 541

21.8  进货管理模块设计 542

21.8.1  设计进货管理窗体 543

21.8.2  自动生成进货单编号 543

21.8.3  添加进货单信息 544

21.9  商品销售排行模块设计 548

21.9.1  设计商品销售排行窗体 548

21.9.2  绑定经手人及往来单位 549

21.9.3  显示商品销售排行 549

21.10  库存盘点模块设计 550

21.10.1  设计库存盘点窗体 551

21.10.2  显示库存商品信息 551

21.10.3  查询库存商品信息 551

21.10.4  对指定商品进行盘点 552

21.11  开发常见问题与解决 553

21.11.1  为什么无法登录系统 553

21.11.2  如何实现往来对账功能 554

21.11.3  清理系统数据时需要注意的

问题 554

21.11.4  数据库还原不成功应该如何

解决 555

21.12  本章小结 555

  

  

  

  

  

IV

  

  

XI