《C#软件项目开发基础》从.NET技术出发,结合软件项目开发的思想,从登录模块开始上手,培养学生兴趣,锤炼调试功底。本书直接介绍数据库的登录模块,引入ADO.NET;在代码不多的基础上,强化软件分层思想,引入三层架构,讲授了Web服务的使用,并结合单元测试、委托等技术,使读者可以边学习C#技术边进行软件项目模块的开发。通过学习本书,读者不仅可以了解常用的控件典型的框架,还能认识运行机制、理解框架类库、品味设计架构。
本书体系新颖、内容丰富、结构合理、文句精练,不仅可以作为高等院校计算机专业大学生计算机C#编程技术课程的教材,也可以作为培训教材,为企业招聘人员进行入职培训提供指导。
前 言
目前大多数高校计算机专业都开设有计算机编程类课程,这类课程肩负着讲授计算机程序设计的任务,但侧重面多有不同。\"C#软件项目开发基础\"不同于一般的计算机编程类课程,它是计算机科学与技术及相关专业的一门重要专业特色课,主要讲授.NET框架下的程序设计,使学生对.NET技术有深入的了解,并能深刻认识C#软件项目开发。同时,该门课程也必须注重计算机应用能力的培养和计算机素质的全面提高,因此在理论教学的同时,应配套一定的实验环节。
本教材的编写本着与时俱进的原则,针对计算机科学及相关专业的教学特点和需求,在内容上力求反映教学改革的最新成果,指导学生进一步掌握C#软件项目开发的方法,学习软件分层、委托事件、Web服务以及设计模式等技术。
本书特别强调了软件项目的思想、软件分层的思想、三层架构的思想、单元测试能力、设计模式的引入,只有掌握一定的软件项目经验、一定的大型程序的开发思路,才能站得高、看得远。对于阅读本书的读者而言,带着思考进行基础和本质的探索,同时也能体验技术学习的有效方法。作者在论述大部分的知识要点时,会总结和归纳其重要的规律和注意事项,这些归纳为实际的编程提供了良好的执行法则,读者应该花费必要的精力熟练掌握所有的归纳内容。
.NET技术正是一个大花园的集合,每个程序开发者必须经历一次深入的磨炼,在基本认识的水平上前进一步,才能发现更多。就像练武之人,除了研习一招一式(了解常用的控件,了解典型的框架),还得修炼内功(认识运行机制,理解框架类库,品味设计架构)。
这些正是本书呈现于读者的内容,也体现了不同于其他.NET专著的风格。
本书由苏前敏担任主编,杨孜茁、张辉担任副主编,具体分工如下:苏前敏编写了第2、3、4、5、7章,杨孜茁编写了第1章、第9章以及附录,张辉编写了第6、8、10章。本书是集体智慧的结晶,在此对清华大学出版社的编辑对本书的编辑和出版所做的努力表示感谢。本书还得到了上海工程技术大学教材建设项目的资助,一并感谢。
由于作者水平有限,加之计算机科学与技术发展迅速、内容覆盖面广,书中错误和不妥之处在所难免,恳请读者批评指正。
编 者
第1章 C#与.NET Framework1
1.1 C#的历史1
1.1.1 从C到C++1
1.1.2 Java的出现2
1.1.3 C#的诞生3
1.1.4 C#的发展历程5
1.2 .NET Framework6
1.2.1 什么是 .NET Framework6
1.2.2 .NET Framework的工作原理7
1.2.3 公共语言运行时9
1.2.4 .NET Framework类库10
1.2.5 用C#创建.NET应用程序11
1.3 C#软件项目开发14
1.3.1 需求分析14
1.3.2 概要设计15
1.3.3 详细设计15
1.3.4 编码15
1.3.5 测试15
1.3.6 软件交付16
1.3.7 维护16
本章小结16
习题16
第2章 登录功能18
2.1 登录界面设计18
2.1.1 简化的用户登录界面18
2.1.2 新建项目19
2.1.3 界面设计20
2.2 登录模块23
2.2.1 模块和模块化23
2.2.2 登录IPO23
2.2.3 登录模块代码实现24
2.3 界面逻辑24
2.3.1 事件和事件驱动24
2.3.2 单击事件处理过程25
2.3.3 消息对话框显示25
2.3.4 界面跳转25
2.3.5 启动窗体设置26
2.4 详细代码和程序运行26
2.4.1 详细代码26
2.4.2 程序运行界面27
2.5 调试28
2.5.1 调试概述28
2.5.2 Visual Studio调试28
2.6 打字小游戏实例31
2.6.1 Timer控件31
2.6.2 键盘事件32
2.6.3 随机数32
2.6.4 实现打字小游戏33
2.7 四则运算器实例35
2.7.1 四则运算器要求35
2.7.2 操作步骤36
本章小结39
习题39
第3章 用数据库实现操作模块40
3.1 数据准备40
3.1.1 数据库、数据表及测试数据40
3.1.2 结构化查询语言SQL41
3.2 ADO.NET42
3.2.1 ADO.NET概述42
3.2.2 ADO.NET核心组成43
3.2.3 ADO.NET通俗理解44
3.2.4 ADO.NET命名空间44
3.3 登录模块45
3.3.1 程序步骤45
3.3.2 关键代码说明47
3.4 用户注册、删除和修改任务47
3.4.1 界面设计48
3.4.2 增删改模块48
3.5 用户表显示50
3.5.1 DataGridView控件50
3.5.2 DataSet和DataTable50
3.5.3 数据绑定过程51
3.6 运行界面和详细代码52
3.6.1 用户运行界面52
3.6.2 完整代码54
本章小结57
习题57
第4章 软件分层和三层架构58
4.1 软件分层58
4.1.1 分层原理58
4.1.2 分层开发的特点和优势59
4.1.3 分层开发的缺点60
4.1.4 常用的软件分层技术60
4.2 三层架构63
4.2.1 基本原理63
4.2.2 三层架构的演变64
4.2.3 三层架构的形象对比65
4.3 搭建三层结构66
4.3.1 程序集66
4.3.2 搭建数据访问层67
4.3.3 搭建业务逻辑层69
4.3.4 搭建表示层69
4.3.5 添加各层之间的依赖关系69
4.4 登录案例70
4.4.1 编写实体类User.cs71
4.4.2 编写数据访问类UserService71
4.4.3 编写业务逻辑类
UserManager72
4.4.4 编写表示层72
本章小结74
习题74
第5章 Web服务75
5.1 Web服务的概念和用途75
5.1.1 Web服务的基本概念75
5.1.2 Web服务的优点75
5.1.3 Web服务的应用77
5.1.4 Web服务的调用原理78
5.1.5 支付宝Web服务接口79
5.2 Web服务实现80
5.2.1 用Visual Studio.NET建立
Web服务80
5.2.2 自定义Web服务82
5.2.3 WinForm项目调用84
5.2.4 Web项目调用86
5.2.5 Web服务常用接口88
本章小结88
习题88
第6章 C#面向对象程序设计89
6.1 类和对象概念89
6.1.1 对象89
6.1.2 类90
6.1.3 属性和字段90
6.1.4 方法91
6.1.5 对象的生命周期91
6.1.6 静态成员92
6.2 定义类92
6.3 定义类成员93
6.3.1 定义字段94
6.3.2 定义方法94
6.3.3 定义属性95
6.3.4 定义构造函数和析构函数96
6.3.5 重载97
6.3.6 类定义示例99
6.3.7 聪明猪实例100
6.4 继承、接口和抽象类103
6.4.1 继承103
6.4.2 接口定义103
6.4.3 接口和抽象类104
6.4.4 接口和抽象类示例104
6.5 常用字符串类String108
6.5.1 字符串与System.String108
6.5.2 字符串对象的不可变性109
6.5.3 正则字符串和原义字符串110
6.5.4 字符串转义序列110
6.5.5 格式字符串111
6.5.6 子字符串112
6.5.7 null字符串和空字符串113
6.5.8 使用 StringBuilder 快速创建
字符串115
本章小结115
习题116
第7章 委托与事件117
7.1 委托117
7.1.1 委托的引入117
7.1.2 委托使用方法120
7.1.3 定义和使用委托实例120
7.1.4 组合委托121
7.2 事件122
7.2.1 事件的概念122
7.2.2 创建步骤123
7.3 实例125
7.3.1 委托租房125
7.3.2 清晨鸡叫128
本章小结130
习题130
第8章 图形编程和Bitmap处理基础131
8.1 GDI+绘图基础131
8.1.1 GDI+概述131
8.1.2 Graphics类132
8.1.3 常用画图对象133
8.1.4 绘图程序示例137
8.2 Bitmap类141
8.2.1 Bitmap类支持的图像类型141
8.2.2 Bitmap类的方法141
8.2.3 图片处理实例142
本章小结144
习题144
第9章 异常处理和单元测试145
9.1 异常处理概述145
9.1.1 为何要用异常处理145
9.1.2 .NET异常处理机制146
9.2 异常处理148
9.2.1 基本格式148
9.2.2 异常的顺序和嵌套151
9.2.3 throw语句和自定义
异常类152
9.3 单元测试153
9.3.1 单元测试概述153
9.3.2 测试用例154
9.4 单元测试实例155
9.4.1 项目准备155
9.4.2 单元测试向导建立测试
项目156
9.4.3 建立测试用例159
9.4.4 Assert断言162
本章小结163
习题163
第10章 设计模式164
10.1 设计模式概述164
10.1.1 为什么要用设计模式164
10.1.2 设计模式的概念164
10.1.3 设计模式的基本要素165
10.1.4 常见设计模式165
10.2 简单工厂模式167
10.2.1 简单工厂模式的概念167
10.2.2 实例168
10.3 单例模式171
10.3.1 单例模式的概念171
10.3.2 为什么要用单例模式171
10.3.3 剖析单例模式的实现
思路171
10.3.4 代码实现172
本章小结174
习题174
附录A C#代码规范175
A.1 编程风格175
A.1.1 统一编程风格的意义175
A.1.2 变量命名规则175
A.1.3 函数命名规则176
A.1.4 类命名规则177
A.1.5 常见语句书写规则177
A.1.6 注释风格178
A.2 代码组织179
A.3 代码优化179
A.3.1 代码优化的意义179
A.3.2 函数内的代码优化180
A.3.3 类内的代码优化181
A.3.4 类之间的代码优化181
A.4 调试技巧182
A.4.1 编译时的错误182
A.4.2 运行时的错误182
A.4.3 C#常见问题182
附录B C#基本语法183
B.1 变量和常量183
B.1.1 变量183
B.1.2 常量184
B.2 值类型和引用类型185
B.2.1 值类型186
B.2.2 引用类型188
B.3 装箱和拆箱190
B.4 类型转换190
B.5 流程控制191
B.5.1 条件语句191
B.5.2 循环195
B.5.3 跳转语句199
B.6 数组和集合200
B.6.1 数组200
B.6.2 集合201
参考文献212