微软的C#(VS 2012版)是从C和C++演变而来的一种新的面向对象的程序设计语言,用它结合ASP.NET或Windows Phone平台的开发应用代表了当前的编程方向。C#可以编译成跨平台的代码,它避免了C语言的指针和多继承,简单易学且功能强,其协变和逆变、LINQ及PLINQ等新特点皆受到人们青睐。本书共12章和两个附录,详述了C#的由来和发展,数据类型、运算符与表达式,结构化程序设计及算法,数组、结构、枚举和集合,面向对象程序设计(类、委托、继承和接口),可视化应用程序设计,文件和流,数据库操作,C/S模式编程,多线程和多窗体等。最后给出一个较完整的编程案例。
本书可作为高等学校及软件学院的教材,也适合从事软件开发和应用的人员参考。
C#是从C和C++演变而来的一种新的面向对象的编程语言。结合了C#的强大功能和Visual Studio.NET平台的环境和类的支持后,形成了功能强大的开发工具——C#.NET。C#是目前主流语言中不多见的在Internet出现后推出的语言,故它的设计很适合在国际互联网上使用。C#结合ASP.NET或Windows Phone平台开发应用程序,代表了当前的编程方向。C#可以编译成跨平台的代码,它避免了C语言中的指针和多继承,简单易学且功能强。
目前,国内高校该类课程的教学内容一般理论过多,笔者认为主要应加强编程实践,提高动手能力。很有必要改变课程的教学内容和教学模式,用先进的教学理念和方法培养一流人才,本教材就是在此改革的思路下编写的,其主要特点如下。
(1)《C# 程序设计教程(第3版)》介绍了VS2012(C#在其中)等的新特点,并以C# 2010(C# 4)版平台为基础进行了内容更新和添加。所用的Access数据库也升级了版本。
(2)增加了泛型、泛型集合List<T>、ICollection接口、IEnumerable<T>接口、yield,以及泛型接口和委托中的协变、逆变的内容,见第7.4节。
(3)增加了10.6节“LINQ语言集成查询以及PLINQ”(Var、Lambda、查询表达式转换和LINQ To SQL);第6章增加了对象初始化器;第9章加强了C#的文件中流的概念。
(4)增加“C#的多线程、多窗体”,将原第11章Web服务放到笔者另外的B/S的书中。
(5)精炼了第12章C#案例——人力资源管理系统的内容。
(6)区分各课程在该专业的不同技能培养目标。C#程序设计作为计算机软件类专业基础课,其目标重点是C/S模式编程,即对专业分解到该课程的结构化程序设计、面向对象程序设计、可视化编程、ADO.NET与库表、.NET平台等能力模块进行教学;而把XML、正则表达式、WPF、Ajax、WCF、ListView富数据控件等放笔者另外一部书(ASP.NET B/S)中。
(7)在选材上,继续强调理论“以必需、够用为度”,减少了个别章节的难度,且深入浅出。另外,书中例子使用了许多经典算法,弥补了有些读者未学《数据结构》的不足。
(8)增强实践性,各章均有不少经过运行验证的例题与实例(例如,10.7节C#应用实例——学生成绩管理系统)以及第12章较完整的案例(用UML、CASE、MVC等技术)。
(9)辅助教学资源丰富,打造成立体化精品教材。在其精品课程网站上,有配套的PPT、教学大纲、习题、实验指导书、专周课程设计、教师在线辅导、CAI、网络课程、试题库、考试系统、相关素材等,这些资源生动、具体、形象、直观,便于教与学。
本书由刘甫迎教授主编,刘光会、王蓉、刘焱老师任副主编。刘甫迎编写第1章、7.4节、第12章;刘光会编写第2章至第6章和附录;王蓉编写第7章、第9章、第10章;刘焱编写第8章、6.2.4节、10.6节、第11 章,全书由刘甫迎统稿。其他参编人员有:周绍敏、李朝蓉、党晋蓉、李琦、李飞跃、杨雅志、龚茗茗、谢春、饶斌、陈振梁、樊婷婷等。对电子工业出版社的编辑在本书出版过程中给予的帮助表示感谢。由于水平有限,错误难免,请斧正。
刘甫迎
2012年4月
第1章 C#概述
1.1 C#简介
1.1.1 C#的发展
1.1.2 C#的特点
1.1.3 VS2012等的新功能
1.1.4 Microsoft.NET平台
1.1.5 C#的运行环境及安装
1.2 C#集成开发环境
1.2.1 C#的启动
1.2.2 C#集成开发环境
习题
第2章 简单的C#程序设计
2.1 C#程序结构
2.1.1 第一个C#程序
2.1.2 编译和执行程序
2.1.3 C#程序结构分析
2.1.4 标识符
2.2 输入/输出操作
2.2.1 Console.WriteLine 方法
2.2.2 Console.Write 方法
2.2.3 Console.ReadLine 方法
2.2.4 Console.Read方法
习题
第3章 数据类型、运算符与表达式
3.1 数据类型
3.1.1 值类型
3.1.2 引用类型
3.1.3 类型转换
3.1.4 装箱和拆箱
3.2 常量与变量
3.2.1 常量
3.2.2 变量
3.3 运算符和表达式
3.3.1 运算符
3.3.2 表达式
习题
第4章 结构化程序设计
4.1 结构化程序设计的概念
4.1.1 结构化程序设计的概念及算法的概念
4.1.2 流程图
4.2 顺序结构
4.2.1 顺序结构的概念
4.2.2 顺序结构的实例
4.3 选择结构
4.3.1 选择结构的概念
4.3.2 条件语句
4.3.3 分支语句
4.3.4 选择结构的实例
4.4 循环结构
4.4.1 循环结构的概念
4.4.2 while语句和do-while语句
4.4.3 for语句和foreach语句
4.4.4 跳转语句
4.4.5 循环语句的算法——循环结构的实例
4.5 异常处理
4.5.1 异常处理的概念
4.5.2 异常的处理
习题
第5章 数组、结构和枚举
5.1 数组
5.1.1 数组的概念
5.1.2 一维数组
5.1.3 二维数组
5.1.4 “冒泡排序”算法——数组的实例
5.2 结构类型
5.2.1 结构的声明
5.2.2 结构成员的访问
5.2.3 顺序查找算法——结构的实例
5.3 枚举
5.3.1 枚举类型的定义
5.3.2 枚举成员的赋值
5.3.3 枚举成员的访问
习题
第6章 C#的面向对象程序设计
6.1 面向对象程序设计的基本概念
6.2 类和对象
6.2.1 类的声明
6.2.2 类的成员
6.2.3 对象的声明
6.2.4 对象初始化器
6.3 构造函数和析构函数
6.3.1 构造函数
6.3.2 析构函数
6.4 方法
6.4.1 方法的定义及调用
6.4.2 方法的参数类型
6.4.3 方法的重载
6.4.4 静态方法与非静态方法
6.4.5 运算符的重载
6.4.6 递归
6.5 属性
6.5.1 属性的声明
6.5.2 属性的访问
6.6 索引指示器
6.6.1 定义索引指示器
6.6.2 使用索引指示器访问对象
6.7 委托与事件
6.7.1 委托
6.7.2 事件
6.8 C#常用的基础类
6.8.1 Math类与Random类
6.8.2 字符串
6.9 命名空间
6.9.1 命名空间的声明
6.9.2 命名空间的成员
6.9.3 命名空间的使用
习题
第7章 继承和接口
7.1 C#的继承机制
7.1.1 继承的基本知识
7.1.2 base关键字
7.1.3 覆盖
7.2 多态性
7.2.1 多态性概述
7.2.2 虚方法
7.2.3 多态性的实现
7.3 接口
7.3.1 接口的定义
7.3.2 接口的成员
7.3.3 接口的实现
7.3.4 接口的应用实例
7.4 泛型、泛型接口和委托中的协变、逆变
7.4.1 泛型、泛型集合List<T>、IEnumerable<T>接口及yield
7.4.2 协变和逆变
7.4.3 泛型接口和委托中的协变和逆变
习题
第8章 可视化应用程序设计
8.1 Windows窗体
8.1.1 Windows窗体的基本属性
8.1.2 创建窗体
8.1.3 设置启动窗体属性
8.2 控件概述
8.2.1 控件的基本属性
8.2.2 控件共有的属性、事件和方法
8.3 命令按钮控件(Button)
8.4 标签控件(Label)
8.5 文本框控件(TextBox)
8.6 单选按钮(RadioButton)和复选框(CheckBox和CheckedListBox)
8.7 面板控件(Panel)和分组框(GroupBox)控件
8.8 图形框控件(PictureBox)
8.9 列表框(ListBox)、带复选框的列表框(Checked ListBox)和组合框(ComboBox)控件
8.9.1 列表框控件(ListBox)
8.9.2 带复选框的列表框控件(CheckedListBox)
8.9.3 组合框控件(ComboBox)
8.10 滚动条控件(ScrollBar)
8.11 定时器控件(Timer)
8.12 超链接标签控件(LinkLabel)
8.13 通用对话框控件
8.13.1 消息框
8.13.2 文件打开和保存对话框
8.13.3 颜色选择对话框
8.13.4 字体对话框
8.13.5 打印机对话框
8.13.6 对话框综合实例
习题
第9章 C#的文件和流
9.1 文件和流的概念
9.2 文件的读和写
9.2.1 读文件
9.2.2 写文件
9.3 文件操作实例——链表算法
习题
第10章 C#的数据库操作
10.1 Access数据库
10.1.1 建立Access数据库表
10.1.2 输入表的数据
10.1.3 SQL语言简介及常用的SQL命令
10.2 客户机/服务器(C/S)模式编程
10.3 ADO.NET概念
10.4 ADO.NET对象
10.4.1 Connection对象
10.4.2 Command对象
10.4.3 DataReader对象
10.4.4 DataAdapter(数据适配器)对象
10.4.5 DataSet对象
10.5 数据绑定控件
10.6 LINQ语言集成查询
10.6.1 LINQ以及PLINQ的概念
10.6.2 LINQ语法(Var、扩展方法、Lambda、匿名类型和查询表达式转换)
10.6.3 关系数据的集成查询LINQ To SQL应用
10.7 C#应用实例——学生成绩管理系统
习题
第11章 C#的多线程、多窗体(MDI)应用
11.1 C#的多线程编程
11.1.1 多线程简介
11.1.2 线程的优先级和执行状态
11.1.3 线程同步
11.2 C#的多窗体(MDI)应用程序
习题
第12章 C#案例——人力资源管理系统
12.1 系统概述
12.1.1 办公自动化系统FoxOA
12.1.2 系统功能
12.2 系统分析与设计(UML)
12.2.1 计算机辅助软件工程(CASE)工具——PD
12.2.2 本系统建模
12.3 主要关键技术
12.3.1 MVC设计模式简介
12.3.2 MVC设计模式的实现
12.4 数据库结构
12.5 用户使用说明书
12.5.1 系统平台
12.5.2 登录和进入系统
12.6 关键源程序
习题
附录A 《C#程序设计课程》教学大纲
附录B 《C#程序设计课程》实验指导书
参考文献