内容简介
本书从.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 Framework 11.1 C#的历史 11.1.1 从C到C++ 11.1.2 Java的出现 21.1.3 C#的诞生 31.1.4 C#的发展历程 51.2 .NET Framework 61.2.1 什么是 .NET Framework 61.2.2 .NET Framework的工作原理 71.2.3 公共语言运行时 91.2.4 .NET Framework类库 101.2.5 用C#创建.NET应用程序 111.3 C#软件项目开发 141.3.1 需求分析 141.3.2 概要设计 151.3.3 详细设计 151.3.4 编码 151.3.5 测试 151.3.6 软件交付 161.3.7 维护 16本章小结 16习题 16第2章 登录功能 182.1 登录界面设计 182.1.1 简化的用户登录界面 182.1.2 新建项目 192.1.3 界面设计 202.2 登录模块 232.2.1 模块和模块化 232.2.2 登录IPO 232.2.3 登录模块代码实现 242.3 界面逻辑 242.3.1 事件和事件驱动 242.3.2 单击事件处理过程 252.3.3 消息对话框显示 252.3.4 界面跳转 252.3.5 启动窗体设置 262.4 详细代码和程序运行 262.4.1 详细代码 262.4.2 程序运行界面 272.5 调试 282.5.1 调试概述 282.5.2 Visual Studio调试 282.6 打字小游戏实例 312.6.1 Timer控件 312.6.2 键盘事件 322.6.3 随机数 322.6.4 实现打字小游戏 332.7 四则运算器实例 352.7.1 四则运算器要求 352.7.2 操作步骤 36本章小结 39习题 39第3章 用数据库实现操作模块 403.1 数据准备 403.1.1 数据库、数据表及测试数据 403.1.2 结构化查询语言SQL 413.2 ADO.NET 423.2.1 ADO.NET概述 423.2.2 ADO.NET核心组成 433.2.3 ADO.NET通俗理解 443.2.4 ADO.NET命名空间 443.3 登录模块 453.3.1 程序步骤 453.3.2 关键代码说明 473.4 用户注册、删除和修改任务 473.4.1 界面设计 483.4.2 增删改模块 483.5 用户表显示 503.5.1 DataGridView控件 503.5.2 DataSet和DataTable 503.5.3 数据绑定过程 513.6 运行界面和详细代码 523.6.1 用户运行界面 523.6.2 完整代码 54本章小结 57习题 57第4章 软件分层和三层架构 584.1 软件分层 584.1.1 分层原理 584.1.2 分层开发的特点和优势 594.1.3 分层开发的缺点 604.1.4 常用的软件分层技术 604.2 三层架构 634.2.1 基本原理 634.2.2 三层架构的演变 644.2.3 三层架构的形象对比 654.3 搭建三层结构 664.3.1 程序集 664.3.2 搭建数据访问层 674.3.3 搭建业务逻辑层 694.3.4 搭建表示层 694.3.5 添加各层之间的依赖关系 694.4 登录案例 704.4.1 编写实体类User.cs 714.4.2 编写数据访问类UserService 714.4.3 编写业务逻辑类UserManager 724.4.4 编写表示层 72本章小结 74习题 74第5章 Web服务 755.1 Web服务的概念和用途 755.1.1 Web服务的基本概念 755.1.2 Web服务的优点 755.1.3 Web服务的应用 775.1.4 Web服务的调用原理 785.1.5 支付宝Web服务接口 795.2 Web服务实现 805.2.1 用Visual Studio.NET建立Web服务 805.2.2 自定义Web服务 825.2.3 WinForm项目调用 845.2.4 Web项目调用 865.2.5 Web服务常用接口 88本章小结 88习题 88第6章 C#面向对象程序设计 896.1 类和对象概念 896.1.1 对象 896.1.2 类 906.1.3 属性和字段 906.1.4 方法 916.1.5 对象的生命周期 916.1.6 静态成员 926.2 定义类 926.3 定义类成员 936.3.1 定义字段 946.3.2 定义方法 946.3.3 定义属性 956.3.4 定义构造函数和析构函数 966.3.5 重载 976.3.6 类定义示例 996.3.7 聪明猪实例 1006.4 继承、接口和抽象类 1036.4.1 继承 1036.4.2 接口定义 1036.4.3 接口和抽象类 1046.4.4 接口和抽象类示例 1046.5 常用字符串类String 1086.5.1 字符串与System.String 1086.5.2 字符串对象的不可变性 1096.5.3 正则字符串和原义字符串 1106.5.4 字符串转义序列 1106.5.5 格式字符串 1116.5.6 子字符串 1126.5.7 null字符串和空字符串 1136.5.8 使用 StringBuilder 快速创建字符串 115本章小结 115习题 116第7章 委托与事件 1177.1 委托 1177.1.1 委托的引入 1177.1.2 委托使用方法 1207.1.3 定义和使用委托实例 1207.1.4 组合委托 1217.2 事件 1227.2.1 事件的概念 1227.2.2 创建步骤 1237.3 实例 1257.3.1 委托租房 1257.3.2 清晨鸡叫 128本章小结 130习题 130第8章 图形编程和Bitmap处理基础 1318.1 GDI+绘图基础 1318.1.1 GDI+概述 1318.1.2 Graphics类 1328.1.3 常用画图对象 1338.1.4 绘图程序示例 1378.2 Bitmap类 1418.2.1 Bitmap类支持的图像类型 1418.2.2 Bitmap类的方法 1418.2.3 图片处理实例 142本章小结 144习题 144第9章 异常处理和单元测试 1459.1 异常处理概述 1459.1.1 为何要用异常处理 1459.1.2 .NET异常处理机制 1469.2 异常处理 1489.2.1 基本格式 1489.2.2 异常的顺序和嵌套 1519.2.3 throw语句和自定义异常类 1529.3 单元测试 1539.3.1 单元测试概述 1539.3.2 测试用例 1549.4 单元测试实例 1559.4.1 项目准备 1559.4.2 单元测试向导建立测试项目 1569.4.3 建立测试用例 1599.4.4 Assert断言 162本章小结 163习题 163第10章 设计模式 16410.1 设计模式概述 16410.1.1 为什么要用设计模式 16410.1.2 设计模式的概念 16410.1.3 设计模式的基本要素 16510.1.4 常见设计模式 16510.2 简单工厂模式 16710.2.1 简单工厂模式的概念 16710.2.2 实例 16810.3 单例模式 17110.3.1 单例模式的概念 17110.3.2 为什么要用单例模式 17110.3.3 剖析单例模式的实现思路 17110.3.4 代码实现 172本章小结 174习题 174附录A C#代码规范 175A.1 编程风格 175A.1.1 统一编程风格的意义 175A.1.2 变量命名规则 175A.1.3 函数命名规则 176A.1.4 类命名规则 177A.1.5 常见语句书写规则 177A.1.6 注释风格 178A.2 代码组织 179A.3 代码优化 179A.3.1 代码优化的意义 179A.3.2 函数内的代码优化 180A.3.3 类内的代码优化 181A.3.4 类之间的代码优化 181A.4 调试技巧 182A.4.1 编译时的错误 182A.4.2 运行时的错误 182A.4.3 C#常见问题 182附录B C#基本语法 183B.1 变量和常量 183B.1.1 变量 183B.1.2 常量 184B.2 值类型和引用类型 185B.2.1 值类型 186B.2.2 引用类型 188B.3 装箱和拆箱 190B.4 类型转换 190B.5 流程控制 191B.5.1 条件语句 191B.5.2 循环 195B.5.3 跳转语句 199B.6 数组和集合 200B.6.1 数组 200B.6.2 集合 201参考文献 212