C#程序设计大学教程
作者 : 罗兵 刘艺 孟武生
出版日期 : 2007-08-09
ISBN : 7-111-21721-3
定价 : 30.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 301
开本 : 16开
原书名 :
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书以C#语言为载体,通过讨论C#程序设计的一般过程和方法,重点讲述了程序设计基础、面向对象程序设计、Windows程序设计三大核心内容,并涉及计算机基础、数据和控制、程序设计理论、软件工程四大知识领域。

  本书特点
  ●面向C#初学者的程序设计入门和实践读物。
  ●汇集一线教师教学经验,结合国内计算机教学改革成果,与世界一流课程体系同步的计算机教材。
  ●参照美国ACM和IEEE-CS颁布的课程体系规范Computing Curricula 2004。
  ●采用C# 2.0与微软公司推出的IDE工具Visual C# 2005 Express。
  ●本书为教师配有电子教案和习题答案,读者可登录机工新阅读网站  (http://www.cmpreading.com)下载。

图书特色

图书前言

欢迎进入C#的世界学习计算机程序设计课程。这将是一次美妙和激动人心的探索,可能会为你今后从事充满挑战和令人兴奋的职业奠定软件编程的基础。众所周知,计算机在我们的日常生活中扮演了一个重要的角色,而且在未来仍将继续扮演这一重要角色。
  计算机科学是一个充满挑战和发展机遇的年轻学科,而计算机程序设计则是这门学科的重要基础。随着计算机在各行各业的广泛应用,很多非计算机专业也把计算机程序设计列为公共基础课之一。
  既然是作为基础课的教材,那么本书假定读者既不具有程序设计经验,也不具备面向对象技术的概念和Windows程序设计知识。即使是一个对计算机一无所知的人,也能通过本书获取所有有关的基本知识,进入程序设计的世界。如果读者是一位很有经验的程序员,已用过其他程序设计语言,并掌握了一定的开发技能,也能在本书中发现很多有用的信息。
  本书与程序设计课程
  计算机程序设计既是一门概念复杂、知识面广的理论课,也是一门面向实战、需要动手的实践课。几乎所有的编程初学者都梦想着有朝一日能在计算机上驰骋,让一行行代码在自己敲击键盘的手下源源不断地流出,真正成为驾驭计算机的主人。然而,学完程序设计课程后,实际开始编写程序时,却往往会觉得难以下手、无所适从。尽管自己刻苦学习,高分通过考试,但并不能体会到所学的知识给实际编程带来的便利和优势。
  为什么会这样?一方面是因为我们的学生在学习时没有掌握程序设计的一般过程,没有深入了解通用程序设计语言的本质规律;另一方面是因为我们的教学体制僵化、教材陈旧,教学思想和内容跟不上时代的发展,与软件开发实际情况脱节。
计算机程序设计语言是一种实现对计算机操作和控制的人造语言,与人类的自然语言有一定差距。程序设计语言仅仅是程序设计的手段和途径,而不是程序设计的全部。因此,掌握程序设计语言并不意味着就精通程序设计,就能写出优秀的程序。实际上,程序设计所涉及的领域、知识和技能要远远超出我们的想象。因此,本教材对于程序设计课程在一些方面有着自己独特的理解。
  程序设计首先是一个过程
  程序设计过程通常分为问题建模、算法设计、编写代码和编译调试4个阶段。不同阶段的任务是相对独立的,不能混为一谈。即使是一个比较简单的程序,我们也应该养成先分析,再下手,最后调试的习惯,严格遵循程序设计过程。因为在缺乏对问题深入、全面分析的情况下,就匆匆动手编写程序,将会增加失败的风险,带来后期修改、维护的麻烦。因此,要学习程序设计,不但不能回避程序设计过程,而且还要从软件开发过程和软件生命周期的高度来了解和掌握程序设计过程,从一开始就养成遵从程序设计准则的良好习惯。有别于其他程序设计教材,本书强调程序设计过程和软件开发过程的重要性,向读者介绍了有关软件建模与测试的基本原理和技术。特别考虑到现代软件开发依赖于集体合作和项目管理,是一个汇集了很多程序设计过程的更大的过程。因此,除了在书中增加有关软件过程实施和管理的介绍外,还把如何撰写规范的程序代码作为重要一节,使得读者在学习程序设计之初就了解程序设计的规范,注重编写程序的规范性、正确性和可靠性,从而为将来参与大型软件开发打下良好基础。
  程序设计还是一种解决问题的方法和能力
  程序设计课程的目标是学习用计算机解决问题的思考方法,培养编程应用能力,而不是仅仅学会某个程序设计语言的语法规则。很多学生能弄清楚顺序、选择和循环结构以及算术表达式,但很难把一个编程问题分解成结构良好的程序。这暴露了程序设计教学中偏重语法细节,忽略总体思想方法和整体过程实现的问题。
  尽管程序设计理论的发展为解决问题提供了很多有效方法,但对于初学者而言,学习的捷径应该是抓住最核心的思想方法,即结构化方法和面向对象方法。为实现这个目的,我们既把结构化算法分析和设计作为教材重点,也把面向对象分析和设计作为重点。对于前者,我们以顺序结构、选择结构和循环结构这三种基本结构为基础,讲解常用的结构化算法;对于后者,我们则围绕面向对象的抽象性、继承性、多态性和封装性这4个本质特点阐述面向对象程序设计的基本方法。通过强调基本概念、基本方法、基本应用,为初学者奠定扎实的程序设计基础,树立良好的编程思想。通过大量的实例分析和范例程序设计过程演示,我们力图给初学者建立完整印象,培养其从整体上思考问题和解决问题的编程能力。
  程序设计最终是对程序设计语言的应用
  程序设计和程序设计语言存在着有趣的辩证关系。程序设计可以用不同的程序设计语言来实现,而不同的程序设计语言又决定着能使用怎样的程序设计思想和技术,制约着程序设计的实现能力和效率。本书之所以使用微软推出的面向对象语言C#作为学习程序设计的语言,并不是因为C#有强大的可视化编程能力,而是因为C#不但继承了众多程序设计语言的优点,而且还具有面向对象语言的优势。更可喜的是,C#还在继续发展,不断吸取现代编程语言的精华。就在本书采用目前最新的C# 2.0编写时,微软已经在计划C# 3.0了。这一切使得C#具备现代通用程序设计语言的主流特征,成为微软.NET平台的主打语言。因此,学习C#语言,掌握C#程序设计方法是本课程的另一个重要任务。
  本书虽然以C#语言为背景介绍程序设计语言的相关知识,但是重点强调的是一些通用的思想方法,而放弃了C#的一些奇技淫巧。读者应该注意到,不同的程序设计语言其语法和风格可能迥异,但无论哪一种语言,都是以数据(类型)、操作(运算)、控制(逻辑流程)为基本内容。更进一步讲,学习一门程序设计语言,应该超越语言的具体表述格式,不拘泥于繁芜的语法现象,站在抽象的高度,掌握程序设计的基本概念,深入了解程序设计语言的本质规律。这样将会为深入学习其他程序设计语言带来便利。
  本书的结构
  这本书是为计算机程序设计课程编写的。计算机程序设计课程是理工科类大学的公共基础课,它通过讲授一门具体的计算机语言,来帮助学生掌握程序设计的基础知识和基本应用。同时,对于未接触过计算机科学的学生,本书还涉及和介绍了与程序设计相关的计算机科学知识。程序设计基础、面向对象程序设计和Windows程序设计这3个部分组成了本书的核心知识,并涉及计算机基础、数据和控制、程序设计理论、软件工程知识4大知识领域,汇集20个相关知识点。虽然本书中讨论的内容有一定的理论性,但这些理论都是用实际程序问题表达的,这是为了帮助读者建立完整的程序设计知识体系结构。
  本书的组织结构如图1所示,其中有些知识点是通过各章节的迭代,循序渐进,不断深入的。
  图1  本书的组织结构
  本书共有11章,各章的主要内容如下:
  ·第1章 绪论  介绍程序设计的基本概念,重点帮助读者搞清计算机程序、程序设计、程序设计语言等概念。初步认识.NET和C#,了解C#的特点,并简要介绍Visual C# 2005 Express。
  ·第2章 程序设计基础  首先通过入门示例程序,了解程序的组成结构、语言要素和编写规范,建立程序的基本概念。然后,通过讲解数据和数据类型、变量和常量,开始探索C#程序设计语言。
  ·第3章 程序控制与算法  介绍C#运算符和表达式,并学习顺序、选择、循环三种控制结构,帮助读者完整地理解如何控制程序的逻辑流程。在此基础上,讲解算法的相关概念和几个常用算法。
  ·第4章 面向对象与对象模型  主要介绍面向对象的基本概念和对象建模的方法,剖析类和对象的关系,讲解类成员(属性、索引和方法)的定义和对象的生命周期。
  ·第5章 C#面向对象编程基础  围绕面向对象的抽象性、继承性、多态性和封装性这4个特点讲解面向对象程序设计的基本方法,并引入C# 2.0中的新概念—泛型,对其进行了简要介绍。
  ·第6章 C#面向对象编程深入  重点讲授如何使用对象接口和迭代器,介绍接口和迭代器的实现方法。详细讲授委托和事件,并介绍匿名方法。
  ·第7章 开发过程与程序调试  介绍软件的开发过程及过程的实施管理,从软件质量的高度讨论程序的调试与测试,重点讲述Visual C# 2005 Express程序的调试方法和程序中的异常处理。
  ·第8章 Windows程序设计  讲解Windows应用程序的一般设计方法,包括如何创建窗体、设计界面、使用控件、事件处理等。读者可以学到Windows窗体技术在快速可视化开发Windows应用程序方面的强大功能。
  ·第9章 GDI+编程  讲解图形程序设计的基本概念,了解相关的核心类Graphics,并分别介绍点、画笔、图形、文本和图像的使用和控制。
  ·第10章 文件操作  介绍文件和流,具体说明文件存储管理的概念和方法,并就文件的读写进行了详细讲解。
  ·第11章 数据库程序开发  介绍一些数据库理论基础和SQL语言基础知识,探讨数据库访问技术的发展过程,详细地介绍ADO.NET的体系结构,讲授数据库应用系统的开发过程和方法。
  尽管本书包含以上内容,但实际的教学进度和授课内容可以根据课堂教学的安排或读者的实际技能及对所讨论问题的熟悉程度灵活确定。教学课时数建议安排在30~50课时之间。其中,标有*的章节仅供有能力的学生选学。
  本书的读者对象
  ·对计算机一无所知的人。这类读者想通过程序设计了解和使用计算机,并通过学习获取所有有关的基本知识。显然,C#是一种比较容易学习和入门的语言。
  ·没有任何程序设计基础的学生。这类读者选用本书作为程序设计基础教材,可以掌握C#程序设计语言,为深入学习其他计算机课程奠定基础。显然,C#无论是在结构化、面向对象设计方面,还是在可视化Windows编程方面都能胜任教学的需要,从而为学习程序设计提供更全面的知识结构体系。
  ·因工作或科研需要希望迅速掌握一门程序设计语言以完成不太复杂的编程任务的非专业编程人员。
  ·非计算机专业的编程爱好者。这类读者改行从事程序员工作,有一些实际的经验,但没有系统学习过相关专业知识。可以通过本书重温程序设计知识,补习相关概念和理论。
  ·有一定经验的程序员。这类读者已经学习过其他编程语言并在软件开发中掌握了一定的开发技能,但没有使用过C#语言或对C#语言一知半解。可以利用本书系统学习C#程序设计,发现C#与其所熟悉语言的不同点,并由此掌握C#语言。
  本书的特色
  本书的特色使得本书与众不同,特别有助于入门者的学习。
  概念和知识面
  贯穿本书,我们始终强调概念要比数学模型更重要,我们认为对概念的理解必然左右对模型的理解。同时,我们还特别注意开阔读者的知识面,使读者能够站在现代软件开发和软件工程这个比较开阔的层面上了解程序设计,而不是局限于繁琐的程序设计语言规则。
  代码编写能力
  初学C#程序设计的人,大多数会被C#强大的可视化编程功能所吸引。的确,快速应用开发(RAD)的思想正在改变程序设计的方法,而可视化程序设计实际上已经重造了开发者的工作平台。以前编写程序是通过基于字符的编辑器键入一条条语句,现在我们可以交互式地在窗体上点击和拖放(click-and-drop)组件,并使用短小精悍的代码段连接它们。过去,即使是开发很小的Windows应用程序,也需要很多细心而且繁杂的基础工作,先写出非常长的源代码文件,然后才可编译和测试其结果。C#改变了这种模式。它首先创建一个Windows应用程序的初始框架代码,即默认的用户界面,而无须写任何程序。程序员的创造力被用于真正的程序设计任务,而不是浪费在窗口的几个控件上。
  可是,千万不要被容易的、可视化的、基于组件的程序设计所迷惑,把程序设计变成了点击和拖放组件,然后在窗体上重新排列组件的工作。如果是这样学习程序设计,我们培养的是拖拉现成组件的“拖拉员”,而不是创造代码的程序员。真正的程序设计需要很多知识、技能和创造力。为此,我们的教材不采用大多数C#程序设计教材那种以可视化程序设计为重点的编写模式。为避免过早地引入可视化组件的使用,分散学习程序设计语言基础知识的注意力,本书在讲述程序设计的基本概念和算法设计时,尽量以控制台程序为示例讲解程序设计方法,重在学习程序设计语言的本质,培养代码的编写能力。
  图文并茂
  本书有大量精心设计的插图,这些插图有助于增进读者对文字的理解。
  示例程序
  本书尽可能地运用示例程序来表述概念和模型,同时尽量提供完整的示例程序和程序设计过程。本书所有示例程序和习题中的程序都已在Windows下.NET环境中编译运行通过。
  另外,本书的部分相关资源可以从http://www.liu-yi.net以及http://www.hzbook.com获得。
  CC 2004课程体系
  从1990年开始,美国电气和电子工程师协会计算机社团( Computer Society of the Institute for Electrical and Electronic Engineers,简称IEEE-CS)和计算机协会(Association for Computing Machinery,简称ACM)就着手开发新的本科生计算机课程体系。1991年联合推出了Computing Curricula 1991(简称CC 1991),当时仅限于Computer Science(计算机科学)和Computer Engineering(计算机工程)两个专业的课程。1998年秋季开始,IEEE-CS和ACM联合投入新的力量更新该课程体系,并在2001年开发出Computing Curricula 2001(简称CC 2001),并将该计算机课程体系扩大到Computer Science(计算机科学)、Computer Engineering(计算机工程)、Software Engineering(软件工程)、Information Systems(信息系统)等多个专业。在CC 2001的实施中,专家们发现,计算机课程所涉及的学科专业和教学范围正在不断扩大,而且在内容和教学方面的变化也日新月异。IEEE-CS和ACM意识到10年一次的Computing Curricula修订已经难以满足要求,于是联合国际信息处理联合会(International Federation for Information Processing,简称IFIP)、英国计算机协会(British Computer Society,简称BCS)等更多的组织开发了Computing Curricula 2004(简称CC 2004),使之成为开放的、可扩充的、适合多专业的、整合了计算机教学相关原则体系观点的课程体系指南。其结构参见图2。
  图2  CC 2004体系结构
  为了进一步反映当代计算机科学技术的发展水平,与国际主流计算机教育思想接轨,通过多年来对IEEE-CS和ACM的Computing Curricula课程体系的跟踪研究,我们在本教材的编写中,借鉴了CC 2004课程体系的最新研究成果,同时吸取了国外同类教材的优秀经验,目的是进一步推动教材和课程改革,培养有竞争力的人才。
  致谢
  本书是作者在多年科研和教学基础上编写的,主要参考了作者已发表的文章和著作以及教学中积累的资料。书中还参考了其他中外文教材、资料,由于无法在此一一列举,现谨对这些教材和资料的作者表示衷心的感谢。
  参与本教材编写工作的人员除封面署名人员外,还包括海军工程大学的段立、李启元、包磊、李亚楠、鲁晖,海军指挥学院的蔡敏,南京航空航天大学无人驾驶飞机研究所的吴英,以及刘藩、吴永逸、洪蕾等。
  一本书的出版离不开许多人的支持,尤其是这本书。为此感谢我们的家人和朋友,我们在忍受写作之苦的同时,牺牲了与他们共享天伦之乐的宝贵时光。
  由于作者水平有限,书中难免有疏漏和不妥之处,恳请各位专家、同仁和读者不吝赐教,并在此表示特别感谢!
  2007年6月12日于南京
  http://www.liu-yi.net

封底文字

本书以C#语言为载体,通过讨论C#程序设计的一般过程和方法,重点讲述了程序设计基础、面向对象程序设计、Windows程序设计三大核心内容,并涉及计算机基础、数据和控制、程序设计理论、软件工程四大知识领域。 本书特点 ●面向C#初学者的程序设计入门和实践读物。 ●汇集一线教师教学经验,结合国内计算机教学改革成果,与世界一流课程体系同步的计算机教材。 ●参照美国ACM和IEEE-CS颁布的课程体系规范Computing Curricula 2004。 ●采用C# 2.0与微软公司推出的IDE工具Visual C# 2005 Express。 ●本书为教师配有电子教案和习题答案,读者可登录华章网站 (http://www.hzbook.com)下载。

图书目录

前言
第1章 绪论 1
1.1 计算机概述 1
1.1.1 计算机系统组成 1
1.1.2 数据表示与处理 3
1.2 程序设计语言 6
1.2.1 发展历史 6
1.2.2 语言的类型 6
1.2.3 高级语言的分类 7
1.3 .NET介绍 8
1.3.1 Microsoft .NET概述 8
1.3.2 Microsoft .NET框架 9
1.4 C#语言简介 12
1.4.1  C#语言的起源 12
1.4.2  C#语言的性能 13
1.4.3  C#语言的特点 14
1.5 Visual C# 2005 Express简介 15
1.5.1 Visual C# 2005 Express
的功能介绍 16
1.5.2 Visual C# 2005 Express的项目 16
1.5.3 Visual C# 2005 Express
的界面介绍 17
1.6  本章习题 19
第2章 程序设计基础 21
2.1 程序 21
2.1.1 初识C#程序 21
2.1.2 标识符和关键字 24
2.2 常量和变量 26
2.3 数据类型 27
2.3.1 简单类型 28
2.3.2 枚举类型 31
2.3.3 结构类型 33
2.3.4 数组类型 33
2.4 类型转换 37
2.4.1 隐式转换 37
2.4.2 显式转换 38
*2.5 撰写规范的程序代码 42
2.5.1 基本格式 42
2.5.2 注释  43
2.5.3 命名 47
2.6  本章习题 48
第3章 程序控制与算法 51
3.1 表达式与运算符 51
3.1.1 表达式 51
3.1.2 运算符 51
3.1.3 运算符的优先级 53
3.2 流程控制 54
3.2.1 顺序结构 54
3.2.2 选择结构 55
3.2.3 循环结构 58
3.3 算法 62
3.3.1 算法的图形描述 63
3.3.2 基本算法 65
3.3.3 排序 66
3.3.4 查找 69
3.3.5 算法复杂性分析 72
3.4 本章习题 75
第4章 面向对象与对象模型 80
4.1 面向对象的概念 80
4.1.1 面向对象的基本原理 81
4.1.2 类和对象的概念 82
4.1.3 UML和对象建模 84
4.1.4 简评面向对象 86
4.2 类和对象 86
4.2.1 类的声明及其成员 87
4.2.2 对象和对象的生命周期 93
4.3 属性和索引 96
4.3.1 属性 96
4.3.2 索引 99
4.4 方法 102
4.4.1 方法的定义 102
4.4.2 方法中的字段 103
4.4.3 实例方法与静态方法 104
4.4.4 方法的参数 105
4.5 重载 110
4.5.1 重载方法 111
4.5.2 重载操作符 113
4.6 本章习题 115
第5章 C#面向对象编程基础 119
5.1 继承 119
5.1.1 继承的定义 119
5.1.2 覆盖 120
5.1.3 继承.NET Framework中的类 123
5.2 抽象类和密封类 129
5.2.1 抽象类 129
5.2.2 密封类 130
5.3 多态 131
5.3.1 理解多态 131
5.3.2 实现多态 132
5.4 泛型类 135
5.4.1 引入泛型的原因 136
5.4.2 创建和使用泛型 136
5.4.3 泛型类的成员 137
5.5 本章习题 139
第6章 C#面向对象编程深入 140
6.1 接口 140
6.1.1 定义接口 140
6.1.2 实现接口 141
6.2 迭代器 144
6.2.1 定义迭代器 144
6.2.2 实现迭代器 145
6.3 委托 149
6.3.1 引例 149
6.3.2 定义委托 151
6.3.3 实例化委托 151
6.3.4 通过委托调用方法 152
6.3.5 多重委托 153
6.4 事件 154
6.4.1 定义事件 154
6.4.2 订阅事件 155
6.4.3 实现事件 155
6.4.4 触发事件 156
6.5 匿名方法 160
6.5.1 定义匿名方法 160
6.5.2 委托作为参数和返回值 162
6.6 本章习题 163
第7章 开发过程与程序调试 165
7.1 软件开发过程概述 165
7.1.1 软件生命周期 165
7.1.2 软件开发过程 166
7.2 调试与测试 169
7.2.1 程序调试 169
7.2.2 软件质量与测试 174
7.3 异常与异常处理 176
7.3.1 异常处理概览 178
7.3.2 try、catch和finally块 179
7.3.3 使用throw抛出异常 181
7.4 本章习题 184
第8章 Windows程序设计 187
8.1 Windows窗体 187
8.1.1 Windows窗体简介 187
8.1.2 Windows窗体的特性 188
8.2 事件处理 188
8.2.1 事件驱动概述 189
8.2.2 C#中的事件处理程序 190
8.2.3 Windows窗体事件处理示例 192
8.3 使用控件 193
8.3.1 公共控件 194
8.3.2 容器控件 202
8.3.3 菜单和工具栏 203
8.3.4 对话框 209
8.3.5 综合示例 212
8.4 自定义控件 218
8.5 本章习题 222
第9章 GDI+编程 223
9.1 Graphics类 223
9.2 图形参数 225
9.2.1 位置和大小 225
9.2.2 颜色 227
9.3 绘图工具 227
9.3.1 Brush工具 227
9.3.2 Pen工具 228
9.4 绘制图形 229
9.5 添加文本 232
9.5.1 字体 232
9.5.2 绘制文本 234
9.6 使用图像 236
9.6.1 图像 237
9.6.2 绘制图像 238
9.7 本章习题 239
第10章 文件操作 240
10.1 文件和流 240
10.2 文件存储管理 240
10.2.1 文件管理 241
10.2.2 目录管理 242
10.2.3 Path类 243
10.2.4 程序示例 243
10.3 读写文件 249
10.3.1 二进制文件的读写 250
10.3.2 文本文件的读写 252
10.4 异步访问文件 258
10.5 本章习题 259
第11章 数据库程序开发 261
11.1 数据库和数据库系统 261
11.1.1 数据库管理系统 261
11.1.2 数据库应用程序 263
11.2 SQL基础 263
11.2.1 SQL的历史 264
11.2.2 SQL的特点 264
11.2.3 SQL的基本语法 265
11.3 数据库访问技术的发展 266
11.4 ADO.NET 268
11.4.1 ADO.NET简介 269
11.4.2 ADO.NET体系结构 271
11.4.3 数据集的操作 282
11.5 创建数据库应用程序 286
11.5.1 连接数据库 287
11.5.2 设计数据集 287
11.5.3 填充数据集 289
11.5.4 显示数据 290
11.5.5 编辑并更新数据 292
11.6 本章习题 294
附录A ASCII码 296
附录B Unicode码 299

教学资源推荐
参考读物推荐
作者: (芬)Lasse Koskela 著
作者: [德]延斯·古斯泰特(Jens Gustedt) 著