前言
前言
本书是C 程序设计的实验指导书,以Visual C 6.0集成开发环境或Visual Studio 2017集成开发环境为开发工具,内容包含面向对象程序设计领域内的基本概念和技术,突出面向对象程序设计的思想,培养程序设计的良好风格。本实验指导书的目的是使读者在学习面向对象技术以及C 程序设计语言的过程中,同步进行上机实验。更重要的是,在读者学习的过程中,本书能起良师益友的作用——给予必要的实验指导和说明。本书以标准C 语言提供的语法、语句和结构为基础来指导上机实验,实验内容涉及C 语言的基本概念、变量、常量、指针、数组、引用、静态量、函数、参数、类与对象、运算符重载、类的继承、虚函数、纯虚函数、多态性、异常、函数模板、类模板以及C 的I/O流库等。本书所选实验按相关内容划分成章,概念清晰,覆盖面广,在每章开始部分给出本次实验的基础知识、实验目的和要求。对每个实验不仅给出参考答案,还进一步给出实验解答及解析,并给出在实现中的意见和建议,引起读者的注意和讨论,以期拓宽程序设计的思路。读者应如何使用本书的指导实验来巩固和提高所学内容?首先,本书的实验指导专注于面向对象技术思想的建立,不涉及复杂的算法和数据结构。其次,本书实验指导力求将所学习的、离散的知识点有机组合,形成一个较完整的实验,使读者从实际的问题入手,分析、设计并编码完成实验;在每个实验的实验解答及解析中,讨论面向对象程序设计中应注意的问题。后,本书实验指导从个实验开始,就注意培养读者良好的面向对象程序设计风格,包括定义类、属性、成员函数时的命名方式、版式、注释等内容。良好的程序设计和实现风格是确保软件质量的要素之一。本书各章的组织结构如下图所示。本书各章主要内容如下: 第1章实验指导目标,介绍实验指导的目的和本书的实验指导结构和内容。第2章C 语言集成开发环境,分别讲述Visual C 6.0集成开发环境和Visual Studio 2017集成开发环境。本书中的所有实验代码在两个编译环境下均测试通过。第3章面向对象程序设计基础,主要是帮助读者巩固结构化程序设计的基础,因为这些内容也是面向对象程序设计的基础。只有在充分理解、掌握和灵活应用的基础上,才能更好地完成面向对象的程序设计。第4章面向对象封装性,通过对一个类的属性、方法、构造函数、析构函数、成员函数、运算符重载等内容的综合定义与实现,理解类的封装性特征。第5章面向对象继承性,通过定义和实现多个类之间的继承(泛化)关系来理解和掌握C 语言对继承性的技术支持。第6章面向对象多态性,通过定义虚函数、纯虚函数(接口)、抽象类以及类模板等技术来实现多态性特征。第7章错误处理机制: 异常,通过定义异常、捕获异常,以及自定义异常类,来理解面向对象程序设计中错误的处理方式。第8章综合实验指导,设计了多项综合实验指导,这些实验指导提炼于实际项目,并与本书各章之间的内容相互衔接。读者可以在阅读、完成各章实验之后,选择本章中与之对应的实验指导进行进一步练习,巩固和提高所学知识。本书既可以作为高等院校本科、专科等学生学习C 语言程序设计的实验指导,也可以作为自学考试、计算机等级考试、资格和水平考试等的实践用书。由于作者水平有限,疏漏、欠妥之处在所难免,恳请读者指正。读者如果对本书有任何意见和建议,欢迎与作者联系: skhu@163.com。
作者于北京理工大学2018年5月〖1〗C 程序设计实验指导前言〖3〗〖3〗
导语摘要
本书全面、系统地引导读者进行面向对象程序设计的学习和实验。本书注重知识的原理性、系统性,并通过各章实验的逐步展开,不仅使读者巩固面向对象程序设计的基本原理和概念,而且有利于读者提升对面向对象三大特性的理解、掌握和实际应用。本书共分为8章。第1章是本书实验指导目标的说明;第2章简要介绍本书实验所用的Visual C 与Visual Studio 2017集成开发环境;第3章进行面向对象程序设计基础的实验,包括指针、引用、数组、函数、重载等要素;第4章进行面向对象封装性的实验,包括构造函数、拷贝构造函数、析构函数、运算符重载等内容;第5章进行面向对象继承性的实验,包括单继承、函数覆盖、聚集(组合)、类间关系分析等内容;第6章进行面向对象多态性的实验,包括虚函数、纯虚函数、抽象类、继承过程中的构造函数和析构函数、类家族分析与设计等内容;第7章进行面向对象错误处理的异常机制实验,包括异常的声明、定义、抛出、捕获等技术和方法;第8章综合实验指导,用于巩固和提高面向对象程序设计的实践和综合应用能力。本书可作为高等院校计算机专业或信息类相关专业课程的上机实验教材或教学参考书,也可作为从事软件开发的工程人员或计算机用户的参考用书。
目录
目录
第1章实验指导目标/1
1.1目的1
1.2实验指导的结构1
第2章C 语言集成开发环境/3
2.1Visual C 6.0集成开发环境3
2.1.1Visual C 6.0集成开发环境概述3
2.1.2Visual C 6.0的菜单项4
2.1.3Visual C 6.0的工具条5
2.1.4Visual C 6.0的项目工作区7
2.1.5编写个C 程序——Hello
World!8
2.1.6Visual C 6.0 的帮助系统——MSDN9
2.2Visual Studio 2017集成开发环境10
2.2.1Visual Studio 2017集成开发环境概述10
2.2.2Visual Studio 2017的个程序——Hello
World!
10
第3章面向对象程序设计基础/15
3.1实验目的15
3.2知识要点15
3.3实验一: 返回数组的函数16
3.3.1实验内容16
3.3.2实验要求17
3.3.3实验解答及解析17
3.4实验二: 统计英文文本中的单词个数20
3.4.1实验内容20
3.4.2实验要求21
3.4.3实验解答及解析21
3.5实验三: 分析程序——Stash的数据结构及内存分配23
3.5.1实验内容23
3.5.2实验要求23
3.5.3实验解答及解析23
3.6实验四: 求不同类型数据的长度27
3.6.1实验内容27
3.6.2实验要求27
3.6.3实验解答及解析27
3.7实验五: 求指定范围内的数组元素之和29
3.7.1实验内容29
3.7.2实验要求29
3.7.3实验解答及解析29
3.8实验六: 互换两个变量的值30
3.8.1实验内容30
3.8.2实验要求31
3.8.3实验解答及解析31
3.9实验七: 通过函数指针调用不同宠物的进食过程32
3.9.1实验内容32
3.9.2实验要求32
3.9.3实验解答及解析32
〖1〗C 程序设计实验指导目录〖3〗〖3〗第4章面向对象封装性/34
4.1实验目的34
4.2知识要点34
4.3实验一: 表示平面位置的点CPoint类35
4.3.1实验内容35
4.3.2实验要求35
4.3.3实验解答及解析35
4.4实验二: 分析程序——构造函数与析构函数的自动调用37
4.4.1实验内容37
4.4.2实验要求38
4.4.3实验解答及解析38
4.5实验三: 对结构体Stash的实现进行面向对象转换40
4.5.1实验内容40
4.5.2实验要求40
4.5.3实验解答及解析41
4.6实验四: 完善CStash类的功能43
4.6.1实验内容43
4.6.2实验要求43
4.6.3实验解答及解析43
4.7实验五: 分析程序——查找并修改程序中的错误44
4.7.1实验内容44
4.7.2实验要求46
4.7.3实验解答及解析46
4.8实验六: 实现对日期的计算48
4.8.1实验内容48
4.8.2实验要求48
4.8.3实验解答及解析49
4.9实验七: 定义自己的字符串CMyString类57
4.9.1实验内容57
4.9.2实验要求57
4.9.3实验解答及解析58
第5章面向对象继承性/64
5.1实验目的64
5.2知识要点64
5.3实验一: 分析程序——类间的聚集和继承关系65
5.3.1实验内容65
5.3.2实验要求65
5.3.3实验解答及解析65
5.4实验二: 给出两个圆的相互位置关系68
5.4.1实验内容68
5.4.2实验要求68
5.4.3实验解答及解析68
5.5实验三: 使用自定义的字符串CMyString类71
5.5.1实验内容71
5.5.2实验要求72
5.5.3实验解答及解析72
5.6实验四: 计算几何图形的面积与周长74
5.6.1实验内容74
5.6.2实验要求74
5.6.3实验解答及解析75
5.7实验五: 显示不同类的对象名称77
5.7.1实验内容77
5.7.2实验要求78
5.7.3实验解答及解析78
5.8实验六: 根据位置与边长来确定矩形与正方形80
5.8.1实验内容80
5.8.2实验要求80
5.8.3实验解答及解析81
5.9实验七: 银行个人账户不同类别的管理85
5.9.1实验内容85
5.9.2实验要求85
5.9.3实验解答及解析85
第6章面向对象多态性/89
6.1实验目的89
6.2知识要点89
6.3实验一: 分析程序——不同工种工人的工作90
6.3.1实验内容90
6.3.2实验要求90
6.3.3实验解答及解析90
6.4实验二: 改进计算几何图形的面积与周长的设计94
6.4.1实验内容94
6.4.2实验要求94
6.4.3实验解答及解析95
6.5实验三: 快递运费的计算97
6.5.1实验内容97
6.5.2实验要求98
6.5.3实验解答及解析98
6.6实验四: 管理家庭宠物101
6.6.1实验内容101
6.6.2实验要求102
6.6.3实验解答及解析102
6.7实验五: 显示不同艺术品的基本信息和重要信息106
6.7.1实验内容106
6.7.2实验要求106
6.7.3实验解答及解析106
6.8实验六: 根据元素个数改变栈大小109
6.8.1实验内容109
6.8.2实验要求109
6.8.3实验解答及解析110
6.9实验七: 栈的应用——在类模板中保存类的对象114
6.9.1实验内容114
6.9.2实验要求114
6.9.3实验解答及解析114
第7章错误处理机制: 异常/118
7.1实验目的118
7.2知识要点118
7.3实验一: 分析程序——抛出和捕获异常118
7.3.1实验内容118
7.3.2实验要求119
7.3.3实验解答及解析119
7.4实验二: 数组下标越界的异常处理121
7.4.1实验内容121
7.4.2实验要求121
7.4.3实验解答及解析122
7.5实验三: 定义抛出除以0错误和下标越界的异常类124
7.5.1实验内容124
7.5.2实验要求124
7.5.3实验解答及解析124
第8章综合实验指导/128
8.1实验目的128
8.2实验一: 切分字符串为多个子串129
8.3实验二: 仓库进出货统计129
8.4实验三: 多用户与文件130
8.5实验四: 整数与字符130
8.6实验五: 大整数运算130
8.7实验六: 集合运算131
8.8实验七: 构建SQL语句132
8.9实验八: 统计英文文本中词频与的词频133
8.10实验九: 硬件与软件133
8.11实验十: 图书、图书馆与读者134
8.12实验十一: 数据库的建立与数据存储134
8.13实验十二: 教师与学生信息的综合查询136
8.14实验十三: 菜单操作138
8.15实验十四: 工厂与产品139
8.16实验十五: 食肉动物与食草动物139
参考文献/140
内容摘要
本书全面、系统地引导读者进行面向对象程序设计的学习和实验。本书注重知识的原理性、系统性,并通过各章实验的逐步展开,不仅使读者巩固面向对象程序设计的基本原理和概念,而且有利于读者提升对面向对象三大特性的理解、掌握和实际应用。
本书共分为8章。第1章是本书实验指导目标的说明;第2章简要介绍本书实验所用的Visual C 与Visual Studio 2017集成开发环境;第3章进行面向对象程序设计基础的实验,包括指针、引用、数组、函数、重载等要素;第4章进行面向对象封装性的实验,包括构造函数、拷贝构造函数、析构函数、运算符重载等内容;第5章进行面向对象继承性的实验,包括单继承、函数覆盖、聚集(组合)、类间关系分析等内容;第6章进行面向对象多态性的实验,包括虚函数、纯虚函数、抽象类、继承过程中的构造函数和析构函数、类家族分析与设计等内容;第7章进行面向对象错误处理的异常机制实验,包括异常的声明、定义、抛出、捕获等技术和方法;第8章综合实验指导,用于巩固和提高面向对象程序设计的实践和综合应用能力。
本书可作为高等院校计算机专业或信息类相关专业课程的上机实验教材或教学参考书,也可作为从事软件开发的工程人员或计算机用户的参考用书。
主编推荐
强调实验的综合性应用,避免在实验中出现对单一的知识点进行实验设计
精彩内容
第5章面向对象继承性5.1实 验 目 的面向对象继承性是面向对象思想的三大特征之一,是实现软件重用的重要手段。继承(泛化)是指一个类自动获取另一个类的属性和方法,同时增加自身类的属性和方法,从而实现扩充类功能的机制。继承关系是类与类之间的重要关系,它将类以层次结构组织起来,利于项目中类的管理、扩展和维护。此外,继承机制还是实现面向对象多态性的基础。C 语言提供了多种继承形式和不同实现机制来体现继承关系,包括单继承、多继承的技术,以及公有继承、私有继承和受保护继承等机制。结合实际项目应用和面向对象程序语言的发展趋势,在本书中不体现多继承,以及私有继承与受保护继承形式。本章的目的是通过完成实验,不仅让读者掌握类继承的技术,而且在实验过程中,贯穿继承、聚合等类间关系的设计和比较,务求让读者掌握在实际项目的分析设计中,懂得如何设定类间关系。更重要的是,本章的部分实验需要用到前几章中实现的类。通过把读者自己实现的类应用起来,才能检查出原来分析、设计的类中存在的问题和不足,不断促进自身编程能力的提升。完成本章的实验指导,读者将能够: 理解面向对象继承性的意义和应用。 掌握C 语言的单继承技术。 理解和掌握C 语言中的公有继承(public)机制,包括派生类对基类成员的调用权限及其实现方法。 理解和掌握C 语言中的受保护(protected)机制,掌握受保护部分在继承中起到的独特作用,即受保护部分的成员能被派生类成员直接调用,但不能被基类和派生类对象调用。这样,既体现继承中的垂直访问,又体现类的封装性。 理解和掌握继承过程中,基类与派生类的构造函数与析构函数的调用和执行顺序,从而更进一步理解对象的生存周期。5.2知 识 要 点C 语言对面向对象继承性提供了相关的概念与技术,主要包括: 面向对象继承性的基本概念,包括继承、派生、基类/父类、派生类/子类、子孙类、公有继承、受保护成员。 C 语言中,类继承的具体实现机制,包括继承的语法、继承所包括的基类内容。 派生类对基类的访问权限,包括派生类和子孙类的成员函数对基类成员的访问权限,派生类和子孙类的对象对基类成员的访问权限。 C 语言的继承过程中,派生类对基类构造函数和析构函数的调用过程。 C 语言的继承过程中,在派生类中基类对象的定义、初始化过程和使用方法。〖1〗C 程序设计实验指导第5章面向对象继承性〖3〗〖3〗5.3实验一: 分析程序——类间的聚集和继承关系〖*4/5〗5.3.1实验内容本实验内容是: 教师(CTeacher)是一个用户(CUser),他完成教学(CCourse)工作。教学是一项事务(CTransaction),事务根据不同的权限(CPermission)对外提供差异化服务。本实验给出的源代码描述了上述类间的相互关系。根据描述信息与源代码,给出程序运行结果,并进行说明。5.3.2实验要求本实验结合源代码的注释信息,仔细阅读源代码并给出运行结果。具体实验要求是: 画出类图及类间关系。 给出程序运行结果。 对运行结果逐一进行说明。5.3.3实验解答及解析【解答】本实验的源程序在Visual C 6.0以及Visual Studio 2017集成开发环境下编译通过。源程序及注释如下。/ Lab5.1:分析程序——类间的聚集和继承关系 仔细阅读源代码,给出运行结果并进行说明 /#include <iostream>using namespace std;//-----------------------------------------------class CPermission{public:CPermission() { cout << "CPermission" << endl; }~CPermission() { cout << "~CPermission"<< endl; }};//-----------------------------------------------class CTransaction {public:CTransaction() { cout << "CTransaction" << endl; }~CTransaction() { cout << "~CTransaction" << endl; }private:CPermission permission;};//-----------------------------------------------class CCourse : public CTransaction {public:CCourse(){ cout << "CCourse" << endl; }~CCourse() { cout << "~CCourse" << endl; }};//-----------------------------------------------class CUser {public:CUser(){ cout << "CUser" << endl; }~CUser() { cout << "~CUser" <&
以下为对购买帮助不大的评价