
作者:涂承胜
页数:479
出版社:清华大学出版社
出版日期:2018
ISBN:9787302510857
电子书格式:pdf/epub/txt
内容简介
全书共分为两篇:基础理论篇和应用开发篇。基础理论篇比较全面地介绍了C#面向对象程序设计语言的基础理论,内容包括.NET框架与Visual Studio 2012开发工具概述、C#语法基础知识、C#面向对象编程基础、文件处理系统、.NET Framework框架与常用类库、基于ADO.NET的数据库编程和Windows窗体应用程序开发。
基础理论部分不仅适用于C#的初学者,更适用于有一定C#语言基础的读者,使之能够更好地掌握和熟练的应用C#的基础理论,进行系统设计与应用开发更得心应手。
应用开发篇结合“选课与成绩管理系统”,详细介绍了基于C#的三层C/S模式的系统设计与开发方法及数据库编程技术,内容包括三层体系结构及其基于C#的实现、数据库设计方法与步骤、基于三层C/S模式的选课及成绩管理系统和选课与成绩管理系统几个典型模块的设计及其在C#中的实现。
书中实例及其相关技术具有较强的代表性、实用性、指导性。案例概念清晰,编码规范,解析详细。
本书主要面向C#工程应用与项目开发人员,可以作为基于C#的项目开发的培训教材,也可供C#程序设计语言自学人员参考,还可以作为高等院校C#语言程序设计课程的参考书。本书的基础篇也可以作为C#语言程序设计课程的教材内容。
本书特色
《C#技术与应用开发》书中实例及其相关技术具有较强的代表性、实用性、指导性。案例概念清晰、编码规范、解析详细。
基础理论部分适合C#的初学者。应用开发部分结合“选课与成绩管理系统”详细介绍了基于C#的三层C/S模式的系统设计与开发方法及数据库编程技术。
目录
第1章 Microsoft.NET与C#简介 2
1.1 Visual Studio.NET与.NET Framework简介 2
1.1.1 Visual Studio.NET概述 2
1.1.2 .NET Framework概述 3
1.2 C#简介 4
1.2.1 C#的定义 4
1.2.2 C#与框架类库中重要的命名空间 4
1.2.3 C#程序的基本结构 5
1.3 Visual Studio 2012集成开发环境 7
1.3.1 Visual Studio 2012的运行环境与安装 7
1.3.2 Visual Studio 2012的启动与环境设置 9
1.3.3 项目、文件模板 10
1.3.4 Visual Studio 2012 IDE概述 11
1.3.5 工具栏与工具箱 12
1.3.6 修改字体与颜色 13
1.4 用C#创建.NET应用程序 14
1.4.1 控制台应用程序的创建、编译、运行 14
1.4.2 Windows窗体应用程序的创建、编译、测试、运行 16
1.4.3 ASP.NET应用程序概述 21
第2章 C#语法基础知识 23
2.1 C#的数据类型 23
2.1.1 值类型 23
2.1.2 引用类型 25
2.2 关键字与标识符 28
2.2.1 关键字 28
2.2.2 标识符的分类与命名规则 43
2.3 常量、变量 44
2.3.1 常量 44
2.3.2 变量及其定义与初始化 45
2.3.3 变量的类型、作用域与生存周期 46
2.4 各种运算符及其表达式 49
2.4.1 C#语言运算符的几个要素及分类 49
2.4.2 括号运算符([]、())和成员运算符(.)与域成员运算符(::) 50
2.4.3 算术运算符与算术表达式 51
2.4.4 关系运算符与关系表达式 52
2.4.5 逻辑运算符与逻辑表达式、逻辑运算的特殊规则 53
2.4.6 赋值运算符与赋值表达式 58
2.4.7 条件运算符与条件运算表达式 60
2.4.8 自增量(++)、自减量运算(??)、负号运算符(?)及其表达式 61
2.4.9 逗号运算符、求字节运算符、指针运算符、其他运算符 63
2.4.10 位逻辑运算与位移运算符及其表达式 64
2.4.11 运算符的优先级 66
2.5 数据类型转化 68
2.5.1 数据类型的自动转化及其转化规则 68
2.5.2 显式类型转化 70
2.5.3 数值型与string类型之间的转化 73
2.5.4 使用Convert类的方法进行各种类型之间的强制转化 76
2.5.5 字符串与字符数组之间的转化 77
2.6 流程控制语句 78
2.6.1 C#语句分类 78
2.6.2 if语句 81
2.6.3 switch语句 83
2.6.4 循环结构概述与循环实现的原理 86
2.6.5 while循环语句 86
2.6.6 do…while循环语句 87
2.6.7 for循环语句 87
2.6.8 foreach循环语句 88
2.6.9 循环的嵌套及几种循环的相互转化 89
2.6.10 break语句、continue语句和return语句 90
2.6.11 using语句及其使用 93
2.7 集合与数据处理 96
2.7.1 数组 96
2.7.2 ArrayList 101
2.7.3 泛型 104
2.8 C#语言中的异常及其处理 106
2.8.1 C#语言的异常处理概述 107
2.8.2 使用try…catch…finally处理异常 107
第3章 C#面向对象编程 114
3.1 类与对象 114
3.1.1 类的结构与定义 114
3.1.2 对象的定义 115
3.2 类的成员 116
3.2.1 数据成员与函数成员 116
3.2.2 静态成员与实例成员 118
3.2.3 属性 119
3.2.4 构造函数与析构函数 121
3.3 类的方法与函数 123
3.3.1 方法和函数的定义、调用 123
3.3.2 静态方法和实例方法 124
3.3.3 方法的参数与传递机制 126
3.3.4 方法的返回值 131
3.3.5 方法重载 131
3.3.6 C#的Main函数 132
3.3.7 C#消息对话框类MessageBox及方法show 132
3.4 this指针 134
3.5 类的继承性与多态性 136
3.5.1 类的继承性 136
3.5.2 类的多态性 142
3.6 接口 145
第4章 .NET Framework常用类库 148
4.1 文件系统与I/O流 148
4.1.1 软件系统环境与System.Environment类 148
4.1.2 System.IO命名空间常用的类 151
4.1.3 Directory类和DirectoryInfo类与文件夹操作 152
4.1.4 File类和FileInfo类与文件操作 155
4.1.5 文本文件的基本操作 160
4.1.6 二进制文件的基本操作 166
4.1.7 通过内存流读写显示图片文件 169
4.2 System.Console类 171
4.2.1 Console类与基本输入输出 171
4.2.2 Console类与格式化控制台输出 172
4.2.3 Console类与数值数据的格式化输出 172
4.3 字符串、日期时间、数值处理类 173
4.3.1 字符串处理 173
4.3.2 日期时间处理 177
4.3.3 数值处理与随机数 178
4.4 正则表达式 179
4.4.1 正则表达式类 180
4.4.2 正则表达式基本语法(规则)与实例 181
4.4.3 常用的表达式属性设置 189
第5章 Windows窗体应用程序与控件 191
5.1 Windows应用程序 191
5.1.1 Windows应用程序的创建 191
5.1.2 窗体程序文件Form1.cs 192
5.1.3 程序入口文件Program.cs 193
5.1.4 窗体及控件与属性设计文件Form1.Designer.cs 194
5.1.5 C#中的Form类 195
5.1.6 Form类的常用属性 195
5.1.7 Form类的常用事件和方法 197
5.1.8 为窗体添加控件并布局 198
5.1.9 添加控件事件处理程序 200
5.2 多窗体与多文档应用程序设计 202
5.2.1 多窗体程序设计 202
5.2.2 MDI应用程序设计 202
5.3 常用Windows窗体控件 204
5.3.1 Label、LinkLabel控件 204
5.3.2 TextBox控件 206
5.3.3 RichTextBox控件 209
5.3.4 按钮控件(Button/RadioButton) 211
5.3.5 容器控件(Group/Panel) 212
5.3.6 多页容器控件TabControl 213
5.3.7 NumericUpDown控件 216
5.3.8 CheckBox控件 218
5.3.9 ListBox控件 219
5.3.10 CheckedListBox控件 224
5.3.11 ComboBox控件 227
5.3.12 PictureBox控件的使用 234
5.3.13 ImageList控件 235
5.3.14 Timer控件 236
5.3.15 ProgressBar控件和TrackBar控件 237
5.4 消息显示对话框和通用对话框控件 239
5.4.1 消息对话框 239
5.4.2 OpenFileDialog控件 243
5.4.3 SaveFileDialog控件 245
5.4.4 FontDialog控件 247
5.4.5 ColorDialog控件 249
5.4.6 PrintDocument打印控件 250
5.4.7 PageSetupDialog控件 251
5.4.8 PrintPreviewDialog控件 252
5.4.9 PrintDialog打印控件 252
5.4.10 通用控件实例解析 253
5.5 其他控件(MenuStrip/ToolsStrip) 262
5.5.1 菜单(MenuStrip)控件 262
5.5.2 工具栏(ToolStrip)控件和状态栏(StatusStrip)控件 267
5.6 常用事件处理 270
5.6.1 键盘事件 270
5.6.2 鼠标事件处理 270
5.7 控件的布局与基本操作 271
5.7.1 调整控件对象的位置和大小 271
5.7.2 控件对象的对齐 272
5.7.3 控件对象的间距调整 272
第6章 ADO.NET与数据库编程 273
6.1 ADO.NET简介 273
6.1.1 ADO.NET体系结构 273
6.1.2 ADO.NET对象模型 274
6.2 ADO.NET数据提供程序与命名空间 275
6.2.1 ADO.NET数据提供程序概述 275
6.2.2 C#程序中使用命名空间 276
6.2.3 ADO.NET访问数据库的过程 278
6.3 Connection类(对象)与数据库连接 278
6.3.1 Connection对象的常用属性与方法 278
6.3.2 Connection对象的连接字符串 279
6.3.3 Connection对象的常用方法 281
6.4 Command(命令)对象与查询及其实现 283
6.4.1 Command对象常用属性 283
6.4.2 Command对象常用方法 284
6.4.3 SQL命令的参数化和格式化 290
6.4.4 SqlCommand对象与命令的参数传递 292
6.4.5 操作其他数据源所需名称空间 299
6.5 DataReader对象与数据获取 300
6.5.1 DataReader对象及其常用属性 300
6.5.2 DataReader类的常用属性和方法 300
6.5.3 DataReader对象访问数据库实例 304
6.6 DataAdapter类(对象)与数据库操作 306
6.6.1 DataAdapter对象的常用属性 306
6.6.2 DataAdapter对象的常用方法 307
6.6.3 SqlDataAdapter获取数据库记录应用实例 309
6.7 DataSet与DataTable类与数据库操作 310
6.7.1 DataSet对象概述 311
6.7.2 DataSet对象模型 312
6.7.3 DataTable类 313
6.7.4 DataColumn和DataRow类与对象 315
6.7.5 DataSet类、DataTable类、DataColumn类、DataRow
类综合应用实例 317
6.8 数据显示控件(DataGridView) 321
6.8.1 DataGridView控件简介 321
6.8.2 DataGridView控件常用属性 322
6.8.3 DataGridView控件的常用方法 323
6.8.4 DataGridView控件的常用事件 324
6.8.5 DataGridView控件常用属性、方法、事件的常规操作 325
6.8.6 DataAdapter、DataSet类与DataGridView控件更新数据库应用实例 336
应用开发篇
第7章 三层C/S模式的选课与成绩管理系统 352
7.1 选课与成绩管理系统简介 352
7.1.1 系统描述 352
7.1.2 开发工具与平台 352
7.2 需求分析 352
7.2.1 信息需求 352
7.2.2 数据处理需求 353
7.2.3 系统安全性和完整性需求 353
7.3 数据库设计 353
7.3.1 概念设计 353
7.3.2 逻辑设计 353
7.3.3 物理设计和视图机制 354
7.3.4 完整性规则及其实现 355
7.4 三层C/S模式及成绩管理系统的架构 356
7.4.1 三层架构体系结构简介 356
7.4.2 C#中建立三层结构框架 357
7.4.3 在业务逻辑层和数据访问层添加非可视化类 361
7.4.4 C#中建立三层模式各层之间的引用关系 362
7.4.5 三层C/S模式的选课与简单成绩管理系统体系构架 364
7.4.6 三层模式系统入口与启动项目设置 365
7.5 Server数据库远程连接的实现与配置文件App.config的读取 367
7.5.1 SQL Server 2008数据库的远程连接设置 367
7.5.2 配置文件App.config的建立与读取 375
7.6 三层C/S模式中业务逻辑层、数据访问层类的封装 379
7.6.1 业务逻辑层(BLL)相关的操作类 379
7.6.2 数据访问层(DAL)数据库操作通用类的实现 383
第8章 登录模块设计与实现 391
8.1 登录模块界面设计 391
8.1.1 添加窗体到表示层UI 391
8.1.2 窗体控件设计与布局及其属性设置 392
8.2 模块功能描述 393
8.2.1 设置系统用户类型 393
8.2.2 输入用户名称和密码 393
8.2.3 实现用户验证性登录 393
8.2.4 关闭窗体 394
8.3 编码与功能实现 394
8.3.1 窗体类的框架与类的成员(变量与函数) 394
8.3.2 窗体的加载(Load)事件及其编码 395
8.3.3 文本输入框的相关事件及其编码 395
8.3.4 命令按钮(Button)控件的相关事件及其编码 397
8.3.5 单选按钮(RadioButton)控件的有关事件及其编码 398
8.3.6 FormLogon类的相关自定义函数 399
8.4 BLL层的相关的类及其成员函数和成员变量的引用 399
第9章 主窗体与菜单对象 400
9.1 主窗体界面设计 400
9.1.1 添加MDI型窗体到表示层UI 400
9.1.2 控件设计与布局及其属性设置 400
9.2 窗体上菜单、工具栏、状态栏的建立与布局及其功能描述 401
9.2.1 菜单对象及主菜单的建立 401
9.2.2 主菜单之下拉菜单项的建立及属性设置 403
9.2.3 工具栏按钮控件(ToolStrip)对象的建立及属性设置 404
9.2.4 状态栏控件(StatusStrip)对象的建立及其属性设置 405
9.2.5 计时器控件对象的建立及其属性设置 407
9.3 编码与功能实现 407
9.3.1 窗体类的成员变量 407
9.3.2 窗体的加载事件 408
9.3.3 菜单控件及菜单项的事件代码 409
9.3.4 工具栏控件各按钮的有关事件编码 410
9.4 主窗体的启动、关闭 411
9.5 对BLL层的类及相关成员函数和成员变量的引用 412
第10章 学生信息查询模块 413
10.1 学生信息查询界面设计 413
10.1.1 添加窗体到表示层UI 413
10.1.2 控件设计与布局及其属性设置 413
10.2 模块功能设计与描述 415
10.2.1 按学号动态查询学生信息 415
10.2.2 按姓氏或姓名模糊查询学生信息 416
10.2.3 记录集中学生个人信息的显示 417
10.2.4 窗体的关闭 417
10.3 编码与功能实现 417
10.3.1 窗体类的成员变量和成员函数与相关引用 417
10.3.2 窗体的有关事件 419
10.3.3 文本输入框的事件及其编码 420
10.3.4 表格控件(DataGridView)的相关事件及编码 421
10.4 BLL层的类及其函数与成员变量的引用 423
第11章 选课信息管理模块 425
11.1 选课信息管理模块界面设计 425
11.1.1 添加窗体到表示层(UI) 425
11.1.2 控件设计与布局及属性设置 425
11.2 模块功能设计与描述 428
11.2.1 设置行课日期 428
11.2.2 设置选修课程 428
11.2.3 选课信息添加功能 428
11.2.4 选课信息删除功能 430
11.2.5 为其他学生选课 430
11.3 编程与功能实现 431
11.3.1 窗体类的成员函数、成员变量 431
11.3.2 窗体的有关事件及功能 434
11.3.3 命令按钮Button类控件及有关事件 435
11.3.4 表格DataGridView类控件有关事件 437
11.3.5 文本框TextBox类控件的有关事件 438
11.3.6 组合框ComboBox类控件有关事件 439
11.4 BLL层相关类及其相关成员函数和成员变量的引用 440
第12章 选修课成绩维护模块 445
12.1 界面设计 445
12.1.1 添加窗体到表示层(UI) 445
12.1.2 控件添加与布局及其属性设置 445
12.2 模块功能设计与描述 447
12.2.1 学号的动态输入 448
12.2.2 设置行课日期 448
12.2.3 选修课程信息的显示 448
12.2.4 课程成绩的录入与修改 448
12.3 事件编程与功能实现 449
12.3.1 窗体类的成员函数与成员变量 449
12.3.2 窗体的有关事件 449
12.3.3 输入框的有关事件 450
12.3.4 表格控件的有关事件 452
12.3.5 日期组合框的有关事件 453
12.3.6 Timer控件的有关事件 454
12.4 BLL层的相关的类及其成员函数和成员变量的引用 454
第13章 成绩数据批量维护模块 456
13.1 界面设计 456
13.1.1 添加一个窗体到应用表示层 457
13.1.2 窗体控件添加与布局及属性设置 457
13.2 模块功能设计与描述 459
13.2.1 输入教师编号或姓名 459
13.2.2 设置行课日期 460
13.2.3 获取并显示课程名称 460
13.2.4 获取并显示班级名称 460
13.2.5 课程成绩批量录入与保存 460
13.2.6 提交数据 461
13.3 事件编码与功能实现 462
13.3.1 窗体类的成员函数与成员变量 462
13.3.2 窗体的有关事件 466
13.3.3 文本框TextBox类控件的有关事件 467
13.3.4 组合框ComboBox类控件有关事件 468
13.3.5 命令按钮Button类控件的有关事件 470
13.3.6 表格DataGridView类控件有关事件 471
13.4 BLL层相关类及成员函数和成员变量的引用 472
13.5 DAL层相关类及有关成员函数和成员变量的引用 476
附录 477
附录A 运算的优先级 477
附录B C#语言中的关键字 478
附录C C#常用的ASCII字符集 479
参考文献 480
节选
C#面向对象编程
面向对象编程技术中最重要的概念就是类和对象。类(class)表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。简单地说,类是一种抽象的数据类型,是对一类对象的统一描述。类是对某个对象的定义,它包含有关对象动作方式的信息,包括名称、方法、属性和事件。类本身不是对象,因为它不存在于内存中。
面向对象的程序设计具有3个特征:封装、继承和多态。可以大大地增加程序的可靠性、代码的可重用性和程序的维护性。
封装:将抽象得到的数据和行为(或功能)形成一个有机的整体,即将数据与操作数据的源代码进行有机地结合,形成“类”,其中数据和函数都是类的成员。
继承:通过继承可以创建父类和子类(派生类)之间的层次关系。子类可以使用现有类的所有功能(实现“代码重用”),并对现有的类的功能进行扩展。通过继承创建的新类称为“子类”或“派生类”。 被继承的类称为“基类”“父类”或“超类”。派生的新类既有基类的特点,又有其本身的新特征。
多态是指不同的类进行同一操作可以有不同的方法。实现多态,有两种方式:覆盖和重载。
覆盖:是指子类重新定义父类的虚函数的做法。
重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。
3.1 类与对象
C#的类是一种对包括数据成员、函数成员和嵌套类型进行封装的数据结构。其中数据成员可以是常量。函数成员可以是方法、属性、索引器、事件、操作符、实例构建器、静态构建器、析构器。
类是面向对象的程序设计的核心,实际上是一种新的数据类型。
3.1.1 类的结构与定义
类的定义一般分为声明部分和实现部分。声明部分用于声明该类的成员,包括数据成员、成员函数的声明。成员函数用于对数据进行操作,又称之为“方法”。实现部分用于成员函数的定义。
类声明的一般格式如下:
[类访问修饰符] class类名称:[基类名称]
{
类体
}
【说明】 被方括号括起来的选项为可选项。
(1)类访问修饰符,可选项,用于定义类及其成员的可访问性,包括以下内容。
① public:公共的,表示可以被任意访问,访问不受限制。
② private:只可以被本类所访问。
③ protected:表示受保护的,只能被本类和其继承的子类访问。
④ internal:只限于此程序(类所在的程序内,即同一个编译单元:.DLL或.EXE)访问。
⑤ abstract:抽象类,不允许建立类的实例。
⑥ sealed:密封类,不允许该类被继承。
声明每一个类时,如果省略了访问修饰符,则默认的访问权限为internal。
(2)关键字class,表示类的定义,只能是小写字母。
(3)类名称,是C#中的一个合法的标识符。由用户指定,只要满足命名规则即可;基类名称,可选项,用于声明要继承的类或接口。
(4)类体,用大括号({})括起来,称之为类的主体。其中,一般包含两类成员:数据成员和成员函数。数据成员的数据类型可以是任意合法的数据类型,也可以是另外一个类的对象。例如,例2.47中的类Student的定义。
3.1.2 对象的定义
类是对同类对象的一种抽象,对象是类的实例。一个类定义之后,就可以定义该类的对象。对象是具有数据、行为、标识的编程结构,是面向对象应用程序的一个组成部分。这个组成部分封装了部分应用程序。该应用程序可以是一个过程、数据或一些抽象的实体。
1.对象的定义
类的对象声明与创建格式如下:
类名 对象名; //类的声明未实例化
类名 对象名 = new类名称([参数表]); //类的声明并实例化对象
2.对象的使用(成员的引用)
类的对象,通过运算符“.”引用类的成员。格式如下:
类名.成员名称
当然类的成员能否允许访问要受成员的访问修饰符的控制。在使用“对象名.成员名”来访问对象成员时,一定要确认该对象引用不能为空(null),否则会引起异常。例如:
Student st; //参见例2.47中的类Student的定义,声明了类的对象,未实例化
st.sName = “赵颖”;//将引发错误,因为st对象为null。st未实例化,即未指向任何存储空间
类和对象既有区别也有联系。类是一个相对抽象的概念,对象是一个具体的概念。类为对象的生成提供模板,利用new生成类的一个对象。
3.2 类的成员
定义在类体中的元素都是类的成员。类的成员分为数据成员(描述状态)和函数成员(描述操作)。类的成员要么是静态(static)成员,要么是实例(instance)成员。静态成员可以通过类名称直接引用,实例成员要通过类的实例(对象)引用。类中一些常用的成员如下。
(1)常量:与类关联的常量值,包括常成员函数和常数据成员。
(2)字段:类中定义的变量。
(3)方法:类可执行的计算或操作,主要是函数(方法)。
(4)属性:定义一些特性以及与读写这些特性相关的操作。
(5)事件:可由类生成的通知。
(6)索引器:能以数组方式索引类的实例的操作。
(7)运算符:类所支持的运算符。
(8)委托:本质也是类,可以引用一个或多个方法。
(9)构造函数:特殊的成员函数,初始化类的实例或类本身所需要的操作,名称与类名相同。
(10)析构函数:特殊的成员函数,在撤销类实例之前执行的操作。
(11)嵌套类型:在类中声明的类型。















