产品特色
编辑推荐
30小时慕课教学视频同步讲解,让学习更高效快捷
80个精彩课堂案例,12个课堂实验,1个综合案例,C#学习从入门到精通
66道习题,300道自测题,5套自测试卷,巩固所学知识
提供免费教学资源,包括精品教学PPT、案例源代码、自测题库、拓展综合案例
内容简介
全书共分13章,内容包括.NET与C#基础、C#编程基础、面向对象编程基础、面向对象编程进阶、Windows应用程序开发、GDI+编程、文件操作等。全书每章内容都与实例紧密结合,有助于学生理解知识、应用知识,达到学以致用的目的。
作者简介
明日科技,程序设计类畅销书作者,其主要作品“视频大讲堂”系列,每个品种都在其同品种的图书中销售名列前茅。累计销售数十万册。其中《C#从入门到精通》长期占据C#零售图书排行榜前三位,年销量上万册。
目录
第1章 .NET与C#基础 1
1.1 C#语言简介 2
1.1.1 C#的发展历史 2
1.1.2 C#的特点 2
1.2 .NET开发平台 2
1.2.1 .NET Framework概述 2
1.2.2 VS 2015的集成开发环境 3
1.2.3 第一个C#程序 5
实例:在控制台中创建“Hello World”程序并运行
1.2.4 C#程序的基本结构 6
1.3 Visual C#开发环境 9
1.3.1 新建Windows窗体应用程序 9
实例:创建Windows窗体应用程序
1.3.2 标题栏 10
1.3.3 菜单栏 10
1.3.4 工具栏 16
1.3.5 工具箱 16
1.3.6 窗口 17
小结 19
上机指导 19
习题 20
第2章 C#编程基础 21
2.1 基本数据类型 22
2.1.1 值类型 22
2.1.2 引用类型 23
2.1.3 值类型与引用类型的区别 24
实例:演示值类型和引用类型使用区别
2.2 常量和变量 26
2.2.1 常量的声明和使用 26
2.2.2 变量的声明和使用 27
2.3 表达式与运算符 27
2.3.1 算术运算符 28
2.3.2 自增自减运算符 28
2.3.3 赋值运算符 29
2.3.4 关系运算符 30
实例:比较3个int变量的大小关系
2.3.5 逻辑运算符 31
实例:使用逻辑运算符判断两个int类型变量大小
2.3.6 位运算符 32
2.3.7 移位运算符 33
2.3.8 条件运算符 34
2.3.9 运算符的优先级与结合性 34
2.3.10 表达式中的类型转换 35
2.4 选择语句 37
2.4.1 if语句 37
实例:判断用户输入的年份是不是闰年
2.4.2 switch语句 41
实例:判断用户的操作权限
2.5 循环语句 43
2.5.1 while循环语句 44
实例:使用while循环编写程序实现1到100的累加
2.5.2 do...while循环语句 44
实例:使用do...while循环编写程序实现1到100的累加
2.5.3 for循环语句 45
实例:使用for循环语句实现1到100的累加
2.6 跳转语句 46
2.6.1 break语句 46
实例:使用break语句退出循环
2.6.2 continue语句 46
实例:通过在for循环中使用continue语句实现1到100之间的偶数和
2.6.3 goto语句 47
实例:通过goto语句实现1到100的累加
2.7 数组 48
2.7.1 一维数组 48
2.7.2 多维数组 49
2.7.3 不规则数组 49
2.7.4 数组与System.Array 50
实例:打印杨辉三角
2.7.5 常用数组操作 51
实例:定义一个int类型的一维数组,然后使用for循环将数组元素值读取出来
实例:定义两个3行3列的矩阵,根据矩阵乘法规则对它们执行乘法运算,得到一个新的矩阵,输出矩阵的元素
实例:冒泡排序算法的实现
2.7.6 使用foreach语句遍历数组 54
实例:遍历进销存管理系统的主要功能模块
小结 55
上机指导 55
习题 57
第3章 面向对象编程基础 58
3.1 面向对象概念 59
3.1.1 对象、类、实例化 59
3.1.2 面向对象程序设计语言
的三大原则 60
3.2 类 62
3.2.1 类的概念 62
3.2.2 类的声明 62
3.2.3 类的成员 63
实例:在类中定义属性,设置访问级别为public,然后在该属性的set访问器中对属性的值进行判断
3.2.4 构造函数和析构函数 66
实例:声明并使用构造函数
3.2.5 对象的创建及使用 67
实例:显示库存商品信息
3.2.6 this关键字 70
3.2.7 类与对象的关系 71
3.3 方法 71
3.3.1 方法的声明 71
3.3.2 方法的参数 72
实例:形参和实参的调用
3.3.3 静态方法与实例方法 75
实例:定义并调用静态方法
实例:定义并调用实例方法
3.3.4 方法的重载 76
实例:定义一个加法运算的重载方法
小结 77
上机指导 78
习题 80
第4章 面向对象编程进阶 81
4.1 类的继承与多态 82
4.1.1 继承 82
实例:模拟实现进销存管理系统的进货信息并输出
4.1.2 多态 84
实例:通过多态实现不同交通工具的运行状态
4.2 结构与接口 89
4.2.1 结构 89
实例:定义结构存储职工的信息
4.2.2 接口 90
实例:通过继承接口输出进货信息和销售信息
4.3 集合与索引器 95
4.3.1 集合 95
实例:使用自定义集合存储商品信息
4.3.2 索引器 99
实例:声明一个用于操作字符串数组的索引器;然后通过索引器为数组中的元素赋值;最后使用for循环通过索引器获取数组中的所有元素
4.4 异常处理 100
4.4.1 异常处理类 101
4.4.2 异常处理语句 101
实例:捕获除数为0的异常信息
4.5 委托和匿名方法 103
4.5.1 委托 103
实例:委托类型使用实例
4.5.2 匿名方法 105
实例:匿名方法调用
4.6 事件 106
4.6.1 委托的发布和订阅 106
实例:通过委托来实现学生们对铃声所作出的响应
4.6.2 事件的发布和订阅 108
4.6.3 EventHandler类 109
实例:模拟学生对上下课铃声做出的响应动作
4.6.4 Windows事件概述 110
4.7 预处理指令 111
4.7.1 #region和#endregion 112
实例:定义一个实现用户登录的
方法,然后使用#region和#endre-
gion指令折叠该方法
4.7.2 #define和#undef 112
4.7.3 #if、#elif、#else和#endif 113
实例:判断当前测试的是哪种操作系统的版本
4.7.4 #warning和#error 114
4.7.5 #line 114
4.8 泛型 115
4.8.1 类型参数T 115
4.8.2 泛型接口 115
4.8.3 泛型方法 116
实例:计算商品销售额
小结 117
上机指导 117
习题 120
第5章 Windows应用程序开发 121
5.1 开发应用程序的步骤 122
实例:创建进销存管理系统的登录窗体
5.2 Windows窗体介绍 123
5.2.1 添加窗体 124
5.2.2 设置启动窗体 124
5.2.3 设置窗体属性 124
5.2.4 窗体常用方法 126
5.2.5 窗体常用事件 127
5.3 Windows控件的使用 128
5.3.1 Control基类 128
5.3.2 Label控件 129
5.3.3 Button控件 130
实例:制作“登录”和“退出”按钮
5.3.4 TextBox控件 131
实例:创建“密码”文本框
5.3.5 CheckBox控件 132
实例:设置用户操作权限
5.3.6 RadioButton控件 133
实例:选择用户登录身份
5.3.7 RichTextBox控件 134
5.3.8 ComboBox控件 135
实例:选择用户职位
5.3.9 ListBox控件 136
实例:在ListBox控件中添加和移除商品
5.3.10 GroupBox控件 137
5.3.11 ListView控件 138
实例:为ListView项设置图标并分组
5.3.12 TreeView控件 140
实例:使用TreeView控件显示部门结构
5.3.13 ImageList组件 142
5.3.14 Timer组件 143
实例:倒计时程序
5.4 菜单、工具栏与状态栏 145
5.4.1 MenuStrip控件 145
5.4.2 ToolStrip控件 146
5.4.3 StatusStrip控件 147
实例:设计进销存管理系统的状态栏
5.5 对话框 149
5.5.1 消息框 149
5.5.2 窗体对话框 150
5.5.3 打开对话框控件 151
5.5.4 另存为对话框控件 152
5.5.5 浏览文件夹对话框控件 153
5.5.6 颜色对话框控件 154
5.5.7 字体对话框控件 155
5.6 多文档界面(MDI) 156
5.6.1 MDI窗体的概念 156
5.6.2 设置MDI窗体 156
5.6.3 排列MDI子窗体 156
实例:显示并排列MDI窗体
5.7 打印与打印预览 158
5.7.1 PageSetupDialog组件 158
5.7.2 PrintDialog组件 159
5.7.3 PrintPreviewDialog组件 159
5.7.4 PrintDocument组件 160
实例:打印古诗
小结 161
上机指导 161
习题 164
第6章 GDI+编程 165
6.1 GDI+绘图基础 166
6.1.1 坐标系 166
6.1.2 像素 166
6.1.3 Graphics类 166
6.2 绘图 169
6.2.1 画笔 169
6.2.2 画刷 169
6.2.3 绘制直线 170
实例:绘制坐标轴
6.2.4 绘制矩形 171
实例:绘制柱形图分析商品销售情况
6.2.5 绘制椭圆 173
实例:绘制空心椭圆和实心椭圆
6.2.6 绘制圆弧 174
实例:使用DrawArc方法绘制圆弧
6.2.7 绘制扇形 175
实例:绘制饼形图分析商品销售情况
6.2.8 绘制多边形 177
实例:绘制空心五角星和实心五角星
6.3 颜色 179
6.4 文本输出 180
6.4.1 字体 180
6.4.2 输出文本 180
实例:为“商品销售柱形图”添加标题
6.5 图像处理 181
6.5.1 绘制图像 181
实例:绘制公司Logo
6.5.2 刷新图像 182
小结 183
上机指导 183
习题 185
第7章 文件操作 186
7.1 文件概述 187
7.2 System.IO命名空间 187
7.3 文件与类 188
7.3.1 File和FileInfo类 188
实例:创建文件并显示文件详细信息
7.3.2 Directory和DirectoryInfo类 190
实例:遍历指定驱动器下的所有文件夹及文件名称
7.3.3 Path类 194
7.3.4 DriveInfo类 195
实例:获取本地计算机上的所有磁盘驱动器
7.4 数据流基础 197
7.4.1 流操作类介绍 197
7.4.2 文件流 197
实例:使用不同的方式打开文件
7.4.3 文本文件的读写 200
实例:模拟记录进销存管理系统的登录日志
7.4.4 二进制文件的读写 202
实例:使用BinaryWriter类和BinaryReader类来读写二进制文件
小结 204
上机指导 204
习题 206
第8章 数据库应用 207
8.1 数据库基础 208
8.1.1 数据库概述 208
8.1.2 数据库的创建及删除 208
实例:创建进销存管理系统数据库
8.1.3 数据表的创建及删除 209
实例:创建商品信息表
8.1.4 结构化查询语言(SQL) 211
8.2 ADO.NET概述 215
8.2.1 ADO.NET对象模型 215
8.2.2 数据访问命名空间 216
8.3 Connection数据连接对象 217
8.3.1 熟悉Connection对象 217
8.3.2 数据库连接字符串 217
8.3.3 应用SqlConnection对象
连接数据库 218
实例:使用SqlConnection对象连接SQL Server数据库
8.4 Command命令执行对象 219
8.4.1 熟悉Command对象 219
8.4.2 应用Command对象操作
数据 220
实例:使用SQL语句添加数据
8.4.3 应用Command对象调用
存储过程 221
实例:使用存储过程添加数据
8.5 DataReader数据读取对象 223
8.5.1 DataReader对象概述 223
8.5.2 使用DataReader对象检索
数据 224
实例:使用DataReader获取数据表中的所有商品信息
8.6 DataSet对象和DataAdapter
操作对象 225
8.6.1 DataSet对象 225
8.6.2 DataAdapter对象 228
8.6.3 填充DataSet数据集 229
实例:使用DataSet获取数据表中的所有商品信息
8.6.4 DataSet对象与DataReader
对象的区别 230
8.7 数据操作控件 230
8.7.1 DataGridView控件 230
实例:使用DataGridView控件用来显示数据表中的数据
8.7.2 BindingSource组件 233
实例:分页查看数据表中的信息
小结 236
上机指导 236
习题 240
第9章 LINQ技术 241
9.1 LINQ基础 242
9.1.1 LINQ概述 242
9.1.2 LINQ查询 242
实例:使用LINQ查询表达式查找数组中长度小于7的所有项
9.1.3 使用var创建隐型局部变量 244
实例:定义一个字符串数组,然后通过定义隐型查询表达式将字符串数组中的单词分别转换为大写和小写,最后循环访问隐型查询表达式,并输出相应的大小写单词
9.1.4 Lambda表达式的使用 245
实例:查找数组中包含“C#”的字符串
9.2 LINQ查询表达式 246
9.2.1 获取数据源 246
9.2.2 筛选 246
9.2.3 排序 247
9.2.4 分组 247
9.2.5 联接 247
9.2.6 选择(投影) 248
9.3 LINQ操作SQL Server数据库 248
9.3.1 使用LINQ查询SQL Server
数据库 248
实例:使用LINQ查询商品信息
9.3.2 使用LINQ更新SQL Server
数据库 252
实例:使用LINQ对库存商品信息表进行增、删、改操作
小结 259
上机指导 259
习题 261
第10章 网络编程 262
10.1 计算机网络基础 263
10.1.1 局域网与因特网介绍 263
10.1.2 网络协议介绍 263
10.1.3 端口及套接字介绍 264
10.2 网络编程基础 265
10.2.1 System.Net命名空间及
相关类的使用 265
实例:获取本地计算机名、IP地址
10.2.2 System.Net.Sockets命名
空间及相关类的使用 272
实例:简单聊天器
10.2.3 System.Net.Mail命名空
间及相关类的使用 278
实例:发送邮件
小结 281
上机指导 281
习题 284
第11章 多线程编程 285
11.1 线程概述 286
11.1.1 多线程工作方式 286
11.1.2 何时使用多线程 286
11.2 线程的基本操作 287
11.2.1 线程的创建与启动 287
实例:创建并启动一个新线程
11.2.2 线程的挂起与恢复 289
实例:挂起和恢复创建的线程
11.2.3 线程休眠 290
11.2.4 终止线程 290
实例:终止已开启的线程
11.2.5 线程的优先级 292
实例:使用线程实现大容量数据的计算
11.3 线程同步 293
11.3.1 lock关键字 294
实例:模拟用户转账操作
11.3.2 线程监视器——Monitor 295
实例:同时向同一用户转账
11.3.3 子线程访问主线程的控件 296
实例:在子线程中操作窗体中的TextBox
11.4 线程池和定时器 297
11.4.1 线程池 297
11.4.2 定时器 298
11.5 互斥对象——Mutex 299
实例:使用Mutex类中的方法
小结 300
上机指导 301
习题 303
第12章 综合案例——腾龙进销存管理系统 304
12.1 需求分析 305
12.2 总体设计 305
12.2.1 系统目标 305
12.2.2 构建开发环境 305
12.2.3 系统功能结构 305
12.2.4 业务流程图 306
12.3 数据库设计 307
12.3.1 数据库概要说明 307
12.3.2 数据库E-R图 307
12.3.3 数据表结构 309
12.4 公共类设计 311
12.4.1 DataBase公共类 311
12.4.2 BaseInfo公共类 315
12.5 系统主要模块开发 320
12.5.1 系统主窗体设计 320
12.5.2 库存商品管理模块设计 322
12.5.3 进货管理模块概述 326
12.5.4 商品销售排行模块概述 334
12.6 运行项目 336
小结 337
第13章 课程设计——桌面提醒工具 338
13.1 课程设计目的 339
13.2 功能描述 339
13.3 总体设计 339
13.3.1 构建开发环境 339
13.3.2 程序预览 339
13.4 数据库设计 341
13.5 公共类设计 342
13.5.1 封装数据值和显示值的类 342
13.5.2 绑定和显示数据的类 342
13.6 实现过程 343
13.6.1 提醒设置 343
13.6.2 计划录入 346
13.6.3 计划查询 350
13.7 课程设计总结 354
13.7.1 技术总结 354
13.7.2 经验总结 355
前言/序言
《深入理解C:构建现代应用的核心技术》 一、 引言:拥抱C,开启编程新篇章 在快速发展的软件开发领域,一门强大、灵活且富有表现力的编程语言是开发者手中不可或缺的利器。《深入理解C:构建现代应用的核心技术》旨在为广大编程爱好者、在校学生以及希望提升自身技能的从业者,提供一本全面、深入且实用的C学习指南。本书不局限于语言的表面语法,更着重于剖析C背后的设计理念、运行机制以及在现代软件开发中的最佳实践。通过循序渐进的学习,读者将能够掌握C语言的精髓,并具备独立构建高质量、高性能应用程序的能力。 本书的目标是帮助读者从“会写C代码”迈向“写好C代码”,最终成为一名能够解决复杂问题的C开发者。我们相信,深入理解一门语言的核心,才能真正发挥其潜力,并应对不断变化的行业需求。 二、 C语言基础:坚实的地基 任何高层建筑都离不开坚实的地基,C编程亦是如此。本书将从最基础的C语法特性开始,为您打下坚实的基础。 1. 变量、数据类型与运算符: 我们将深入讲解C中的各种数据类型,包括值类型(整型、浮点型、布尔型、字符型等)和引用类型(类、接口、委托、数组等)。您将理解它们在内存中的存储方式和区别,以及如何根据实际需求选择合适的数据类型。各种运算符的优先级和结合性也将被详细解析,帮助您写出清晰、高效的表达式。 2. 控制流语句: 条件语句(`if-else`、`switch`)和循环语句(`for`、`while`、`do-while`、`foreach`)是程序逻辑控制的核心。本书将通过丰富的实例,展示如何利用这些语句构建复杂的程序逻辑,并介绍`break`、`continue`等跳转语句的使用场景。 3. 方法与函数: 方法是实现代码复用和模块化的基石。我们将讲解方法的定义、调用、参数传递(值传递和引用传递)、返回值等概念,并深入探讨方法的重载、递归等高级用法。 4. 数组与集合: 数组作为最基本的数据结构,其使用方式和生命周期将被详细阐述。在此基础上,我们将引入.NET Framework提供的强大的集合类,如`List`、`Dictionary`、`HashSet`等泛型集合,让您能够更高效地管理和操作数据。 5. 面向对象编程(OOP)基础: C是一门面向对象的编程语言,OOP是其核心思想。本书将系统地讲解OOP的三大基本概念: 封装: 讲解访问修饰符(`public`、`private`、`protected`、`internal`),如何通过属性(`get`、`set`)来控制数据的访问,以及如何创建封装良好的类。 继承: 深入理解基类与派生类的关系,`virtual`、`override`关键字的使用,以及`base`关键字的妙用。我们将分析继承在代码重用和多态性实现中的作用。 多态: 讲解运行时多态和编译时多态,`abstract`类和`interface`的区别与联系。您将学会如何通过多态编写更具扩展性和可维护性的代码。 三、 C进阶特性:释放语言潜能 在掌握了C的基础知识后,本书将引导您探索更高级的语言特性,这些特性能够显著提升您的开发效率和代码质量。 1. 类与对象的高级概念: 构造函数与析构函数: 详细讲解构造函数的种类、初始化顺序,以及析构函数(`~`)在资源释放中的作用(虽然在现代C中`IDisposable`和`using`语句更为常用,但理解析构函数有助于理解底层机制)。 静态成员: 理解`static`关键字的含义,如何创建静态类、静态字段、静态方法,以及它们在单例模式和工具类中的应用。 嵌套类与内部类: 探讨嵌套类的定义和使用场景,以及它们与外部类之间的访问关系。 ToString()方法的重写: 学习如何重写`ToString()`方法,为对象提供有意义的字符串表示。 2. 接口与抽象类: 深入理解接口的契约特性,以及抽象类的抽象与继承能力。通过对比分析,帮助您在设计中做出正确的选择。 3. 委托与事件: 委托: 将委托视为“方法的引用”,讲解委托的定义、实例化、多播委托,以及它们在回调机制中的核心作用。 事件: 讲解事件的发布/订阅模式,`event`关键字的使用,以及如何利用事件实现组件之间的解耦。 4. 泛型(Generics): 泛型是C中提升代码复用性和类型安全性的重要机制。我们将深入讲解泛型类、泛型接口、泛型方法,以及泛型约束,让您能够编写出更加灵活和健壮的代码。 5. 异常处理: robust的应用程序必须能够优雅地处理运行时错误。本书将详细讲解`try-catch-finally`块的使用,自定义异常类的创建,以及异常处理的最佳实践,帮助您编写更具容错性的代码。 6. LINQ(Language Integrated Query): LINQ是一项革命性的特性,它将查询能力直接集成到C语言中。我们将讲解LINQ to Objects、LINQ to SQL、LINQ to XML等,让您能够以一种声明式、直观的方式查询和操作数据,极大地简化了数据处理的代码。 7. 异步编程(Async/Await): 在现代应用程序中,提高响应性和并发性至关重要。本书将深入讲解`async`和`await`关键字,`Task`和`Task`的用法,以及异步编程在I/O密集型和CPU密集型操作中的优势,帮助您构建流畅的用户体验和高效的服务器端应用。 8. 反射(Reflection): 反射允许程序在运行时检查、自省和修改自身的结构和行为。我们将讲解反射的基本概念,如何获取类型信息、创建对象、调用方法,并探讨反射在插件化、序列化等高级场景下的应用。 9. 多线程与并发: 深入理解线程的概念,线程的创建与管理,线程同步机制(如`lock`、`Mutex`、`Semaphore`),以及`Parallel.For`、`Parallel.ForEach`等并行编程工具,让您能够充分利用多核处理器的优势,构建高性能的并发应用。 四、 .NET Framework 与 .NET Core/5+ 生态系统 C语言离不开其赖以生存的平台。.NET Framework(及其后续的.NET Core和.NET 5/6/7/8+)提供了丰富的类库和强大的运行时环境。 1. .NET Framework 核心类库: 熟悉常用命名空间,如`System`、`System.Collections`、`System.IO`、`System.Net`等,以及它们提供的基本功能。 2. 文件I/O操作: 学习如何进行文件的读写、复制、移动、删除,以及目录的管理。 3. 网络编程基础: 了解`Socket`编程、`HttpClient`的使用,以及Web服务(如RESTful API)的概念。 4. 数据库访问: 介绍ADO.NET的基本用法,以及ORM(Object-Relational Mapping)框架(如Entity Framework Core)在简化数据库操作中的作用。 5. .NET Core / .NET 5+ 平台概览: 介绍跨平台能力、性能提升、新的语言特性以及其在现代应用开发中的地位(Web应用、微服务、桌面应用等)。 五、 现代 C 应用开发实践 本书不仅教授语言本身,更注重培养读者的工程实践能力。 1. 面向服务的设计原则: 讲解SOLID原则(单一职责、开闭原则、里氏替换原则、接口隔离原则、依赖倒置原则)在C项目中的应用,帮助您设计出易于维护、扩展和理解的代码。 2. 设计模式: 介绍常用的设计模式,如工厂模式、单例模式、观察者模式、策略模式、装饰器模式等,并展示如何在C中实现这些模式,解决常见的软件设计问题。 3. 单元测试与集成测试: 强调测试的重要性,讲解如何使用MSTest、NUnit、xUnit等框架编写单元测试,以及如何进行集成测试。 4. 代码重构: 学习如何识别代码中的坏味道,并运用安全有效的重构手法来改进代码结构,提高代码的可读性和可维护性。 5. 调试技巧: 掌握Visual Studio等IDE的强大调试工具,学习如何设置断点、监视变量、步进执行,以及分析内存和性能问题。 六、 结语:持续学习,不断成长 软件开发是一个不断学习和进化的过程。掌握了《深入理解C:构建现代应用的核心技术》中的内容,您将为自己在C领域的深入发展打下坚实的基础。本书所涵盖的知识和技能,是构建各种现代应用程序(从桌面应用、Web服务到游戏开发、移动应用后端)的关键。 我们鼓励您在阅读本书的同时,积极动手实践,通过编写代码来加深理解。不断挑战自己,尝试解决更复杂的问题,参与开源项目,与社区交流。C语言及其生态系统正在不断发展,保持好奇心和学习热情,您将能够在这个充满活力的领域取得更大的成就。 本书不仅仅是一本技术书籍,更是一次与您共同探索C世界、提升编程思维的旅程。希望它能成为您编程道路上不可或缺的伙伴,助您在构建卓越应用的道路上越走越远。