C++实验指导书07081.docx
- 文档编号:23404467
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:33
- 大小:420.38KB
C++实验指导书07081.docx
《C++实验指导书07081.docx》由会员分享,可在线阅读,更多相关《C++实验指导书07081.docx(33页珍藏版)》请在冰豆网上搜索。
C++实验指导书07081
面向对象程序设计
实
验
指
导
书
段喜龙
二零零七年九月
前言
本指导书是软件工程专业本科课程《面向对象程序设计B》的实验指导书,一般人员也可以使用它作为学习C++语言的上机指导。
因为选择以Microsoft公司的C++开发环境VisualC++6.0作为实验环境,因此书的前一部分介绍了VisualC++的一些基本知识,并且在实验进行的过程中穿插介绍使用VisualC++的一些技巧。
书的内容分为两大部分:
第一部分介绍VisualC++实验环境;第二部分是具体的实验安排。
使用本书前,请先阅读以下内容:
1.C++语言实验环境配置要求
硬件配置:
586以上PC兼容机或品牌机,配有彩色显示器、鼠标、键盘,内存不小于20MB,硬盘自由空间不少于60MB。
推荐配置为内存32MB或64MB(或以上),硬盘自由空间500MB以上。
软件配置:
操作系统:
Windows95,Windows98,WindowsNT3.51以上版本。
开发集成环境:
MicrosoftVisualC++5.0以上版本
2.建立自己的工作目录
你需要在计算机上先建立自己的工作目录,所有的实验都在该工作目录下进行。
使用VisualC++建立新项目时,需要指定该目录作为项目所在的目录。
本书中假设你的工作目录为c:
\student\your_name,具体的实验目录由你的指导教师指定。
3.安装VisualC++
VisualC++6.0和VisualC++5.0最大的不同是在联机帮助系统上做了很大改变。
VisualC++5.0的帮助系统直接集成在开发环境之中,在安装VisualC++5.0时就可以选择安装帮助内容。
而VisualC++6.0的联机帮助系统采用了MSDN(MicrosoftDeveloperNetwork)库,在安装VisualC++6.0时,只安装了MSDN的索引,实际的内容在光盘上。
如果希望能脱离光盘使用帮助系统,需要在安装了VisualC++6.0以后,再运行MSDN的安装程序,把完整的库装到硬盘上。
第一部分VisualC++实验环境介绍
一、VisualC++简介
VisualC++是Microsoft公司的VisualStudio开发工具箱中的一个C++程序开发包。
VisualStudio提供了一整套开发Internet和Windows应用程序的工具,包括VisualC++,VisualBasic,VisualFoxpro,VisualInterDev,VisualJ++以及其他辅助工具,如代码管理工具VisualSourceSafe和联机帮助系统MSDN。
VisualC++包中除包括C++编译器外,还包括所有的库、例子和为创建Windows应用程序所需要的文档。
从最早期的1.0版本,发展到最新的6.0版本,VisualC++已经有了很大的变化,在界面、功能、库支持方面都有许多的增强。
最新的6.0版本在编译器、MFC类库、编辑器以及联机帮助系统等方面都比以前的版本做了较大改进。
VisualC++一般分为三个版本:
学习版、专业版和企业版,不同的版本适合于不同类型的应用开发。
实验中可以使用这三个版本的任意一种。
VisualC++集成开发环境(IDE)
集成开发环境(IDE)是一个将程序编辑器、编译器、调试工具和其他建立应用程序的工具集成在一起的用于开发应用程序的软件系统。
VisualC++软件包中的DeveloperStudio就是一个集成开发环境,它集成了各种开发工具和VC编译器。
程序员可以在不离开该环境的情况下编辑、编译、调试和运行一个应用程序。
IDE中还提供大量在线帮助信息协助程序员做好开发工作。
DeveloperStudio中除了程序编辑器、资源编辑器、编译器、调试器外,还有各种工具和向导(如AppWizard和ClassWizard),以及MFC类库,这些都可以帮助程序员快速而正确地开发出应用程序。
向导(Wizard)
向导是一个通过一步步的帮助引导你工作的工具。
DeveloperStudio中包含三个向导,用来帮助程序员开发简单的Windows程序,它们是:
AppWizard:
用来创建一个Windows程序的基本框架结构。
AppWizard向导会一步步向程序员提出问题,询问他所创建的项目的特征,然后AppWizard会根据这些特征自动生成一个可以执行的程序框架,程序员然后可以在这个框架下进一步填充内容。
AppWizard支持三类程序:
基于视图/文档结构的单文档应用、基于视图/文档结构的多文档应用程序和基于对话框的应用程序。
也可以利用AppWizard生成最简单的控制台应用程序(类似于DOS下用字符输入输出的程序)。
ClassWizard:
用来定义AppWizard所创建的程序中的类。
可以利用ClassWizard在项目中增加类、为类增加处理消息的函数等。
ClassWizard也可以管理包含在对话框中的控件,它可以将MFC对象或者类的成员变量与对话框中的控件联系起来。
ActiveXControlWizard:
用于创建一个ActiveX控件的基本框架结构。
ActiveX控件是用户自定义的控件,它支持一系列定义的接口,可以作为一个可再利用的组件。
MFC库
库(library)是可以重复使用的源代码和目标代码的集合。
MFC(MicrosoftFundamentalCasses)是VisualC++开发环境所带的类库,在该类库中提供了大量的类,可以帮助开发人员快速建立应用程序。
这些类可以提供程序框架、进行文件和数据库操作、建立网络连接、进行绘图和打印等各种通用的应用程序操作。
使用MFC库开发应用程序可以减少很多工作量。
二、项目开发过程
在一个集成的开发环境中开发项目非常容易。
一个用C++开发的项目的通用开发过程可以用左图表示。
建立一个项目的第一步是利用编辑器建立程序代码文件,包括头文件、代码文件、资源文件等。
然后,启动编译程序,编译程序首先调用预处理程序处理程序中的预处理命令(如#include,#define等),经过预处理程序处理的代码将作为编译程序的输入。
编译对用户程序进行词法和语法分析,建立目标文件,文件中包括机器代码、连接指令、外部引用以及从该源文件中产生的函数和数据名。
此后,连接程序将所有的目标代码和用到的静态连接库的代码连接起来,为所有的外部变量和函数找到其提供地点,最后产生一个可执行文件。
一般有一个makefile文件来协调各个部分产生可执行文件。
可执行文件分为两种版本:
Debug和Release。
Debug版本用于程序的开发过程,该版本产生的可执行程序带有大量的调试信息,可以供调试程序使用,而Release版本作为最终的发行版本,没有调试信息,并且带有某种形式的优化。
学员在上机实习过程中可以采用Debug版本,这样便于调试。
选择是产生Debug版本还是Release版本的方法是:
在DeveloperStudio中选择菜单Build|SetActiveConfiguration,在弹出的对话框中,选择所要的类型,然后选择OK关闭对话框。
VisualC++集成开发环境中集成了编辑器、编译器、连接器以及调试程序,覆盖了的开发应用程序的整个过程,程序员不需要脱离这个开发环境就可以开发出完整的应用程序。
三、集成开发环境DeveloperStudio
进入DeveloperStudio
如果你使用的是VisualC++6.0,则要进入DeveloperStudio,需要单击任务栏中“开始”后选择“程序”,找到MicrosoftVisualStudio6.0文件夹后,单击其中的MicrosoftVisualC++6.0图标,则可以启动DeveloperStudio。
如果你使用的是VisualC++5.0,则要进入DeveloperStudio,需要单击任务栏中“开始”后选择“程序”,找到MicrosoftVisualC++5.0文件夹后,单击其中的MicrosoftVisualC++5.0图标,则可以启动DeveloperStudio。
DeveloperStudio的界面
DeveloperStudio用户界面是一个由窗口、工具条、菜单、工具及其他部分组成的一个集成界面。
通过这个界面,用户可以在同一环境下创建、测试、调试应用程序。
VC5和VC6的DeveloperStudio的初始化界面有一些小的差异,VC5的界面如下:
主要部分介绍如下:
✓工具条和菜单,用于提供用户操作的命令接口。
菜单以文字和层次化的方式提供命令接口,工具条由一系列按钮组成。
这些按钮用一系列小的位图标志。
工具条以图标方式提供快速的命令选择。
菜单和工具条在开发的不同进程有不同显示内容。
当第一次打开DeveloperStudio时,标准的工具条和菜单就会显示出来,随着开发的不同步骤,不同的工具条就会自动显示出来,菜单也会有所变化。
工具条有很多种,你可以显示任意多的工具条,只要屏幕空间允许。
工具条可以任意移动,也可以放大缩小。
工具条和菜单条功能基本相同,唯一的区别是:
菜单条总占据一行,并且一般不能隐藏。
✓工作区窗口,这个窗口包含关于正在开发的这个项目的有关信息。
在没有开发任何项目时,该窗口显示系统的帮助目录。
当打开一个项目以后,工作区窗口将会显示关于当前项目的文件信息和类的信息。
下图是打开一个项目hello以后的工作区窗口(假设该项目由两个文件cpp1.cpp,cpp2.cpp组成)。
✓
文档窗口区,这个区域可以显示各种类型的文档,如源代码文件、头文件、资源文件等。
可以同时打开多个文档。
✓输出窗口,输出窗口用来显示几种信息,可以通过选择不同的标签显示不同的信息。
这些信息包括:
编译连接结果信息(Build标签)、调试信息(Debug标签)、查找结果信息(FindinFiles标签)。
其中查找结果信息有两个标签,可以显示两次在文件中查找指定内容的结果
VC6因为在联机帮助系统上比VC5做了很大改进,所以在工作区窗口中没有VC5的InfoView,初始化界面的其他部分都与VC5相似。
DeleveloperStudio使用MicrosoftDeveloperNetwork(MSDN)库作为它的联机帮助系统。
其界面如下:
总的来说,窗口和命令接口(包括工具条和菜单条)是构成界面的最主要组成部分。
通常有两种窗口:
文档窗口和可附着(docking)窗口。
文档窗口显示在文档窗口区,用于显示和编辑文档,其的大小和位置可以随其所处的DeveloperStudio窗口的改变而改变,可以最大化和最小化。
可附着窗口可以附着于应用程序窗口的边界,也可以浮在屏幕上的任何位置。
可附着窗口有:
工作区(workspace)窗口,输出(output)窗口,调试窗口(包括variable,watch,local等窗口)等。
文档窗口的位置、大小及是否可见和它所在的项目有关,docking窗口的位置、大小及是否可见则与项目进行的状态以及各种编辑和调试的操作有关。
各种窗口和各种工具条以及菜单构成了界面的布局。
一旦用户决定了一种界面布局,系统就会为一直为用户保持这种布局,直到用户下一次改变该布局为止。
获得帮助信息
大多数时候,你可以通过按F1得到上下文帮助。
如在编辑文件时按F1可以得到有关编辑的帮助,在编译连接错误信息上按F1可以得到关于该错误的帮助信息。
如果想系统地获得帮助,在VC5中可以单击工作区窗口的InfoView标签,从其中选择要想了解的内容。
要想查找关于某个话题的帮助,可以选择菜单Help|Search,在查询对话框中进行查找。
VC6中,可以通过选择菜单Help|Contents来启动MSDN查阅器,MSDN查阅器是一个功能强大的程序,可以方便地浏览、查找信息,要想知道具体如何使用MSDN查阅器,可以在MSDN查阅器中选菜单Help下的命令。
VisualC++的编辑器
DeveloperStudio包含一个功能强大的编辑器,可以编辑将被编译成Windows程序的VisualC++源文件。
这个编辑器有点象字处理器,但是没有字处理器具备的复杂的排版、文本格式等功能,它注重的是如何帮助程序员快速高效地编制程序。
它具有以下特点:
✓自动语法。
用高亮度和不同颜色的字来显示不同的语法成分,如注释、关键字和一般代码用不同的颜色显示
✓自动缩进。
帮助你排列源代码,使其可读性更强
✓参数帮助。
在编辑时用到预定义的windows函数时,可以自动为你显示函数参数
✓集成的关键字帮助。
能够使你快速得到任何关键字、MFC类或Windows函数的帮助信息(按F1即可)
✓拖放编辑。
能够用鼠标选择文本并自由拖动到任意位置
✓自动错误定位。
能自动将光标移动到有编译错误的源代码处。
当你打开一个源代码文件时,就可以利用编辑器对其进行编辑。
源代码文件在文档显示区显示,每个文件有独立的显示窗口。
如果你选择用其他编辑器编辑源文件,必须将它以纯文本的方式保存。
VC的编译器不能处理其中有特别格式字符的文件。
四、常用功能键及其意义
为了使程序员能够方便快捷地完成程序开发,开发环境提供了大量快捷方式来简化一些常用操作的步骤。
键盘操作直接、简单,而且非常方便,因而程序员非常喜欢采用键盘命令来控制操作。
下面是一些最常用的功能键,希望学员在实验中逐步掌握。
操作类型
功能键
对应菜单
含义
文件操作
Ctrl+N
File|New
创建新的文件、项目等
Ctrl+O
File|Open
打开项目、文件等
Ctrl+S
File|Save
保存当前文件
编辑操作
Ctrl+X
Edit|Cut
剪切
Ctrl+C
Edit|Copy
复制
Ctrl+V
Edit|Paste
粘贴
Ctrl+Z
Edit|Undo
撤消上一个操作
Ctrl+Y
Edit|Redo
重复上一个操作
Ctrl+A
Edit|SelectAll
全选
Del
Edit|Del
删除光标后面的一个字符
建立程序操作
Ctrl+F7
Build|Compilercurrentfile
编译当前源文件
Ctrl+F5
Build|Runexe
运行当前项目
F7
Build|Buildexe
建立可执行程序
F5
Build|StartDebugging
启动调试程序
调试
F5
Debug|Go
继续运行
F11
Debug|Stepinto
进入函数体内部
shift+F11
Debug|Stepout
从函数体内部运行出来
F10
Debug|Stepover
执行一行语句
F9
设置/清除断点
Ctrl+F10
Debug|Runtocursor
运行到光标所在位置
shift+F9
Debug|QuickWatch
快速查看变量或表达式的值
Shift+F5
Debug|Stopdebugging
停止调试
第二部分实验
注意事项:
(1)每次实验以前,需要详细阅读实验目的、实验要求和实验提示,以便能准确地理解实验要求,达到实验的目的。
有测试数据要求的,需要给出测试结果,有要求回答问题的,需要给出问题的回答。
每次实验都有几个题目,要求为每个题目创建不同的项目,以便于检查。
(2)有的实验前后有联系,需要先完成前面的实验再进行后面的实验,如类和继承的实验。
请务必按照先后顺序完成实验。
(3)辅导老师那儿有关于实验的详细解答,如果有疑问,可以请教辅导老师。
实验一类与结构
1、实验目的
·了解和使用VC++的集成开发环境。
·熟悉VC++集成开发环境的基本编辑命令及功能键,学会常规窗口操作。
熟悉常用功能菜单命令。
·学习完整的C++程序开发过程(编辑、编译、连接、调试、运行及查看结果).理解简单的C++程序结构。
·通过实验理解类与结构的区别,掌握类的定义,了解用户自定义数据类型。
·理解标准库函数,学习基本流输入输出(cout,cin)的用法。
·理解表达式的优先级、组合方式及语句及语句块。
2、实验内容
应用VC++6.0的编辑环境构造一个类Date,该类主要实现日期的基本操作,例如初始化(非构造函数)、求当前日期为星期几、当前年份是否为闰年、该日为该年第几天、输出等,具体说明如下:
该类拥有三个私有(或保护)成员变量year、month、day,分别代表日期中的年、月、日,成员函数有初始化函数、判断该年份是否为闰年函数、求当前日期为星期几函数、该日为该年第几天,结果输出函数等。
其中:
⏹判断某一年是否为闰年的算法:
该年份数字能被4整除但不能被100整除,或者能被4整除同时可被400整除,则为闰年
⏹求当前日期为星期几的算法:
(1)0001年1月1日为星期一,可以计算从该天到当前日期的天数,然后除7求余,如余1则为星期一
(2)if(month==1||month==2){year-=1;month+=12;}
return(day+1+2*month+3*(month+1)/5+year+(year/4)-year/100+year/400)%7;
⏹求该日为该年第几天:
可以用循环实现,注意闰年的情况。
实验二构造函数
1、实验目的
通过实验理解构造函数的概念与其特殊应用。
2、实验内容
应用VC++6.0的编辑环境构造一个类Triangle,该类主要实现三角形的基本操作,例如初始化(构造函数及构造函数的重载)、求三角形的周长、面积、判断该三角形是什么三角形(等边、等腰、直角、等边直角、一般三角形、非三角形)、输出等,具体说明如下:
classTriangle{
public:
Triangle(double,double,double);
Triangle(double,double);
Triangle(double);
Triangle();
doubleGetArea();
doubleGetPerimeter();
doubleShow();
private:
doublea,b,c;
};
实验三析构函数
1、实验目的
通过实验理解析构函数的概念与其特殊应用。
2、实验内容
应用VC++6.0的编辑环境构造一个类Student,该类主要实现学生的基本操作,该学生类包含学生姓名、学生学号、学生成绩(课程数目不定,其存储空间应动态申请),实现对该学生信息的初始化、求该学生的总成绩、平均成绩、最高分与最低分以及最后输出,具体说明如下:
classStudent{
public:
Student(char*n,char*s,intnum,double*s);
~Student();
doubleGetSum();
doubleGetAver();
doubleGetMax();
doubleGetMin();
voidShow();
private:
char*name;//studentname
char*stuno;//studentno
intscore_num;//scorenumber
double*score;//studentscore
};
实验四静态成员与友元
1、实验目的
(1)学习静态成员的使用,理解静态成员的特殊用途。
(2)学习友元函数及友元类,领会友元类的作用。
2、实验内容
应用VC++6.0的编辑环境构造一个类Stack,设计一个整数链表类,实现栈操作。
类中需有记录结点个数的数据成员(静态成员),要有判空操作。
编制应用程序,取100次随机数(<1000),如果取到的随机数比前一个随机数大的话,入栈,然后逐个取出(即出栈过程)求其和。
用堆分配方法逐个产生满足条件(递增有序)的结点,插入栈中,每当出栈时,要及时将结点删除,求和工作放在类定义外(友元)。
注意:
栈中最多会有100个元素,最少会有一个元素,这是由条件(递增有序)决定的。
具体说明如下:
structSNode{
intdata;
SNode*next;
};
classStack{
public:
Stack();
~Stack();
voidPush(inte);//insertadataintostack
intPop();//deleteadatafromstack
friendintGetSum(Stack&);//getsumofstack,friendfunction
//friendclassgetsum;//getsumofstack,friendclass,youcantryitusingfriendclass
staticintnum;//staticnumber
private:
SNode*head;
};
对栈的入栈过程与出栈过程说明如下:
(1)入栈,即向栈中添加一个元素,且该元素只能添加到当前链表最后一个数据元素之后,此时记录数组元素数据个数的变量应该进行++操作;
(2)出栈,即从链表中删除一个数据元素,且该元素只能是当前栈中最后的一个元素,此时记录数据元素个数的变量应该进行--操作,也就是说,入栈及出栈的操作标识实际上是由记录数组中数据元素个数的变量实现的。
(3)判空,即判断当前栈(即链表)是否为空,也就是判断记录数组中数据元素个数的变量是否为0。
rand()函数与srand()函数的使用说明:
rand/srand
Generatesapseudorandom(伪随机的)number.
intrand(void);
Routine
RequiredHeader
Compatibility
rand
ANSI,Win95,WinNT
voidsrand(unsignedintseed);
ReturnValue
randreturnsapseudorandomnumber,asdescribedabove.Thereisnoerrorreturn.
Remarks
Therandfunctionreturnsapseudorandomintegerintherange0toRAND_MAX.Usethesrandfunctiontoseedthepseudorandom-numbergeneratorbeforecallingrand.
Thesrandfunctionsetsthestartingpointforgeneratingaseriesofpseudorandomintegers.Toreinitializethegenerator,use1astheseedargument.Anyothervalueforseedsetsthegeneratortoarandomstartingpoint.randretrievesthepseudorando
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 实验 指导书 07081