《C++面向对象程序设计》实验指导书程细柱.docx

上传人:b****1 文档编号:10412844 上传时间:2023-05-25 格式:DOCX 页数:31 大小:208.95KB
下载 相关 举报
《C++面向对象程序设计》实验指导书程细柱.docx_第1页
第1页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第2页
第2页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第3页
第3页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第4页
第4页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第5页
第5页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第6页
第6页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第7页
第7页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第8页
第8页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第9页
第9页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第10页
第10页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第11页
第11页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第12页
第12页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第13页
第13页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第14页
第14页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第15页
第15页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第16页
第16页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第17页
第17页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第18页
第18页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第19页
第19页 / 共31页
《C++面向对象程序设计》实验指导书程细柱.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

《C++面向对象程序设计》实验指导书程细柱.docx

《《C++面向对象程序设计》实验指导书程细柱.docx》由会员分享,可在线阅读,更多相关《《C++面向对象程序设计》实验指导书程细柱.docx(31页珍藏版)》请在冰点文库上搜索。

《C++面向对象程序设计》实验指导书程细柱.docx

《C++面向对象程序设计》实验指导书程细柱

 

《C++面向对象程序设计》实验指导书

 

主讲:

程细柱

韶关学院计算机科学技术学院

2010-3-1

目录

实验一VisualC++开发环境及C++程序的上机过程3

实验二选择和循环结构程序设计8

实验三类的定义和使用11

实验四类的继承和派生14

实验五多态性程序设计15

实验六运算符重载和类模板17

实验七文件操作18

实验八利用AppWizard向导生成Windows应用程序20

实验九消息处理24

实验十文档/视图结构28

实验十一对话框设计30

实验一VisualC++开发环境及C++程序的上机过程

一、实验目的

1、了解和使用VC集成开发环境;

2、熟悉VC环境的基本命令和功能键;

3、熟悉常用的功能菜单命令;

4、学习使用VC++环境的帮助;

5、学习完整的C++程序开发过程;

6、理解简单的C++程序结构

二、实验内容

使用VisualC++6.0集成环境来编辑、编译并运行下面简单C++程序:

1.#include

voidmain()

{

cout<<"ThisisaC++program.\n";

}

2.#include

intmax(int,int);//声明自定义函数

voidmain()//主函数

{

inta,b,c;

cout<<"inputtwonumber:

\n";

cin>>a>>b;

c=max(a,b);//调用max函数,将得到的值赋给C

cout<<"max="<

}

intmax(intx,inty)//定义max函数,函数值为整型,形式参数x,y为整型

{

intz;//max函数中的声明部分,定义本函数中用到的变量z为整型

if(x>y)z=x;

elsez=y;

return(z);//将z的值返回,通过max带回调用处

}

三、实验步骤

VisualC++6.0启动后的用户界面选择菜单“开始/程序/MicrosoftVisualStudio6.0/MicrosoftVisualC++6.0”,得到VisualC++6.0启动后的用户界面,如图1-1所示。

图1-1VisualC++6.0用户界面

1、创建新工程

(1)单击菜单“文件/新建”,显示“新建”对话框,如图1-2所示。

(2)在此对话框的列表栏中,选择“Win32ConsoleApplication”(Win32控制台应用程序”)。

在“工程”栏中输入一个工程名,如“实验一”,在位置文本框中选择工程所在的路径,如图中所示H:

\C++实验\实验一,单击“确定”按钮。

图1-2“新建”对话框

(3)在“Win32ConsolApplication-Step1of1”对话框中选择Anemptyproject单选项。

然后单击“Finish”按钮,如图1-3所示。

图1-3“Win32ConsolApplication-Step1of1”对话框

(4)在“新建工程信息”对话框中单击“确认”按钮,完成工程创建过程。

2、创建C++源程序文件

(1)编辑C++源程序:

编辑C++源程序时,选择“文件”菜单项,出现一个下拉式菜单,再选择该菜单中的“新建”选项(热键为Ctrl+N),打开“新建”窗口,如图1-4所示:

图1-4“新建”窗口

(2)选择“文件”,在它的下拉列表框中选择“C++SourceFile”,如图1-4所示,再按击“确定”,出现编辑屏幕,如图1-5所示:

图1-5“C++”源程序编辑

(3)在“C++源程序编辑”窗口下编辑C++源程序。

在编辑窗口键入C++源程序。

如图1-6所示,键入如下源程序:

图1-6编辑C++源程序

3.编译连接和运行源程序

(1)选择菜单项“编译”,出现“编译”的下拉菜单,在该下拉式菜单中选择“编译eg1-1.cpp”菜单项,这时系统开始对当前的源程序进行编译,在编译过程中,将所发现的错误显示在屏幕下方的“编译”窗口中。

所显示的错误信息中指出该错误所在行号和该错误的性质。

用户可根据这些错误信息进行修改。

上述程序的“编译”窗口,如图1-7所示:

图1-7“编辑”窗口

(2)编译无错误后,可进行连接生成可执行文件(.exe),这时选择“编译”下拉菜单中的“构件eg1-1.exe”选项。

“编译”窗口出现如图1-8所示的信息说明编译连接成功,并生成以源文件名为名字的可执行文件(eg1-1.exe)。

图1-8编译连接信息

(3)执行可执行文件的方法是选择“编译”菜单项中“执行eg1-1.exe”选项。

这时,运行该可执行文件,并将结果显示在另外一个显示执行文件输出结果的窗口中,如图1-9所示:

图1-9运行C++程序结果

4.关闭打开工作区、打开工作区

单击菜单“文件/关闭工作区”,关闭工作区。

单击菜单“文件/打开工作区”,在强出的对话框中选定“H:

\C++实验\实验一\实验一.dsw”,单击“打开”按钮,则可打开工作区,对已建立的工程文件进行修改。

5.根据实验步骤1-4,建立、编译并运行实验程序2。

四、实验要求

1. 复习教材有关内容。

2. 掌握C++控制台程序的开发、调试步骤。

3. 完成实验报告。

实验二选择和循环结构程序设计

一、实验目的

1.熟练if和switch选择结构、while和for循环结构及实现循环的方法。

2.掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。

二、知识要点

C++语句可以分为以下5类:

(1)表达式语句:

由一个表达式构成一个语句,最典型的是,由赋值表达式

构成一个赋值语句。

例:

a=5;

(2)声明语句:

一个名字在使用之前必须先声明,以便建立名字与程序实体

之间的映射关系。

按声明的程序实体结构对象声明语句可以分为:

声明

变量;声明函数;声明对象。

按产生不产生程序实体,声明语句可分为

定义性与引用性两种。

(3)空语句:

只有一个分号的语句称为空语句。

主要用于语法上要求有一条语句但

实际没有任何操作可执行的场合。

(4)块语句:

也称为复合语句或分程序,是括在一对花括号之间的语句序列。

在语法上它相当于一条语句,只是在花括号外不再写分号。

块语句主要

在两种情形下使用:

语法要求一条语句,但又难以只用一条简单语句表

达的情形;形成局部化的封装体。

(5)流程控制语句

①条件语句:

if()~else~

②循环语句:

for()~

③循环语句:

while()~

④循环语句:

do~while()

⑤结束本次循环语句:

continue

⑥终止执行switch或循环语句:

break

⑦多分支选择语句:

switch(){case1;case2…;default;}

⑧从函数返回语句:

return

三、实验内容及步骤

1.输入并运行下列程序并分析其功能。

main(){

intt,a,b,c,d;

cout<<“请输入四个数:

”;

cin>>a>>b>>c>>d;

cout<<“\n排序结果如下:

”;

if(a>b){t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;}

if(a>d){t=a;a=d;d=t;}

if(b>c){t=b;b=c;c=t;}

if(b>d){t=b;b=d;d=t;}

if(c>d){t=c;c=d;d=t;}

cout<

}

2.设计程序找出1~100间的质数,显示出来。

用for或while或do-while

循环语句实现。

3.下面程序统计字符数组c中0、1、2及其他字符出现的次数,分别存放

在变量i0、i1、i2中,统计结束后输出它们的值。

要求:

分析出现结果

的原因,如何修改使结果正确。

#include

#include

voidmain(){

charc[]=”0123456789001112222”

inti0=0,i1=0,i2=0,i3=0;

for(inti=0;i<19;i++)

switch(c[i]){

case’0’:

i0++;

case’1’:

i1++;

case’2’:

i2++;

default:

i3++;

}

cout<<”i0=”<

cout<<”i1=”<

cout<<”i2=”<

cout<<”i3=”<

getch();

}

实验三类的定义和使用

一、实验目的

1、理解面向对象程序设计方法的基本原理及主要特点——抽象、封装、继承和多态。

2、理解类和对象的概念以及如何利用类来解决具体问题。

二、实验内容

1、掌握面向对象的程序设计思想

2、掌握类的定义。

3、掌握对象的声明和引用。

4、掌握具有不同访问属性的成员的访问方式

5、观察构造函数和析构函数的执行过程。

三、实验步骤

构造函数和析构函数的执行

#include

classscore{

public:

score(intx,inty){

sc1=x;

sc2=y;

cout<<"constructingscore:

"<

}

~score(){

cout<<"destructingscore:

"<

}

protected:

intsc1;

intsc2;

};

classstudent{

public:

student(intid):

score(88,99){

noid=id;

cout<<"constructingastudent,id:

"<

}

~student(){

cout<<"destructingastudent:

"<

}

private:

intnoid;

};

voidmain(){

students1(333);

cout<<"backinmain"<

}

编译、连接并运行程序

四、实验要求

1、写出程序,并调试程序,要给出测试数据和实验结果。

2、整理上机步骤,总结经验和体会。

3、完成实验报告和上交程序。

实验四类的继承和派生

一、实验目的

1、理解继承的含义,掌握派生类的定义方法和实现;

2、理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;

3、理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员;

4、理解虚函数在类的继承层次中的作用,虚函数的引入对程序运行时的影响,能够对使用虚函数的简单程序写出程序结果。

二、实验内容

1.掌握继承和派生的概念,派生类的定义方法。

2.熟悉继承的不同方式对基类成员的访问控制

3.掌握多重继承的概念、定义方法、多重继承派生类构造函数的执行顺序。

先执行所有基类的构造函数(顺序按照定义派生类时指定的各基关顺序)再执行对象成员所在类的构造函数(顺序按照它们在类中的声明顺序)最后执行派生类构造函数体中的内容。

 

三、实验步骤

1、派生类构造函数和析构函数的执行

classPerson

{

charm_strName[10];

intm_nAge;

public:

Person(char*name,intage)

{

strcpy(m_strName,name);

m_nAge=age;

cout<<"constructorofperson"<

}

~Person(){cout<<"deconstrutorofperson"<

};

classEmployee:

publicPerson

{

charm_strDept[20];

PersonWang;

public:

Employee(char*name,intage,char*dept,char*name1,intage1)

:

Person(name,age),Wang(name1,age1)

{

strcpy(m_strDept,dept);

cout<<"constructorofEmployee"<

}

~Employee(){cout<<"deconstrucorofEmployee"<

编译、连接并运行程序

四、实验要求

1.写出程序,并调试程序,要给出测试数据和实验结果。

2.整理上机步骤,总结经验和体会。

3.完成实验报告和上交程序。

实验五多态性程序设计

一.实验目的

1、理解多态性的基本概念;

2、掌握虚函数和纯虚函数的概念;

3、了解抽象类的概念。

二.实验内容

1、理解多态性的基本思想。

2、学习使用虚函数实现动态多态性。

三、实验步骤

多态性编程实例

#include

classchuzhong

{

public:

chuzhong(doublex,doubley):

x1(x),y1(y){}

virtualdoublesum()

{

doublescore;

score=x1+y1;

returnscore;

}

protected:

doublex1,y1;

};

classgaozhong:

publicchuzhong

{

public:

gaozhong(doublex,doubley,doublez):

chuzhong(x,y),z1(z){}

virtualdoublesum()

{

doublescore;

score=x1+y1+z1;

returnscore;

}

protected:

doublez1;

};

voidfn(chuzhong&chu)

{

cout<

}

voidmain()

{

chuzhongcz(85.5,95.5);

gaozhonggz(75.5,78.5,80.5);

fn(cz);

fn(gz);

}

编译、连接并运行程序

四.实验要求

1.写出程序,并调试程序,要给出测试数据和实验结果。

2.整理上机步骤,总结经验和体会。

3.完成实验报告和上交程序。

 

实验六运算符重载和类模板

一、实验目的

1.掌握C++中运算符重载的机制和运算符重载的方式;

2.掌握类型转换的方式、内存的动态分配;

3.掌握类模板的定义,掌握类模板的实例化。

二、知识要点

1.运算符重载

成员函数方式:

单目(返回类型类名∷operator单目运算符())

双目(返回类型类名∷operator双目运算符(类名&引用))

下标运算符重载:

类型类名∷operator[](下标类型形参)

{

函数体

}

提取符重载:

预定义插入符

ostream&ostream∷operator<<(type&obj);

预定义提取符

istream&istream∷operator>>(type&obj);

运算符重载规则:

(1)不可以重载非C++的运算符;

(2)运算符重载可以采用成员函数方式或友元方式;

(3)被重载的运算符必须保持预定义的的优先级与结合性;

(4)应尽量使重载的运算符语义自然、好理解;

(5)注意各运算符之间的联系。

2.类模板:

template

class类名

{…};

(1)每一个类模板的成员函数的外部定义,都与一般函数模板的定义一

样,必须以类型形参开始,此外还应加以函数返回值类型、类范围、函数名、

形参序列,类名后面必须加上类型形参。

(2)类模板是类的抽象类型,它的实例化是生成一个具体的类。

三、实验内容及步骤

1.分析教程“函数模板”中的例子,自行设计一个简单的类模板。

2.分析教程“运算符重载”中的例子,自行设计一个简单的重载运算符。

3.指出下面程序中的错误,改正并运行。

#include

classPoint{

private:

intx1,x2;

public:

Point(intx,inty){x1=x;x2=y;}

intx_cord(){returnx1;}

inty_cord(){returnx2;}

}

main()

{

Pointdata(5,6);

cout<

cout<

Pointmore_data[20];

}

 

实验七文件操作

一、实验目的

1.掌握基本的输入输出操作及格式;

2.用C++预定义的文件I/O类进行文件输入输出。

二、知识要点

文件操作:

打开文件、读写文件、关闭文件。

低层次I/O机制:

intcreat()、intopen()、intclose()、intread()、intwrite()

高层次I/O机制:

字符I/O函数getchar()、字符串I/O函数gets()、格式化I/O函数printf()

流类库:

streambuf类、ios类、ostream类、istream类、iostream类

三、实验内容及步骤

1.使用I/O流以文本方式建立一个文件test1.txt,写入字符“已成功写入!

#include

voidmain()

{ofstreamfile1(“test1.txt”);

file1<<”已成功写入!

”;

file1.close();

}

模仿以上程序,编制一段源程序,使用I/O流以文本方式打开test1.txt,

读出内容并显示出来。

2.设字符串string=”123456789”,用串I/O的方法编程逐个读取这个

串的每个数,直到读完为止,并在屏幕上输出。

#include

#include

voidmain()

{

intn;

charstring[]="123456789";

istrstreams(string);

while(!

s.eof()){

s>>n;

cout<

}

cout<

}

 

实验八利用AppWizard向导生成Windows应用程序

一、实验目的

学习利用Appwizard向导开发Windows应用程序的过程。

二、实验内容

术语:

AppWizard是一个工具,利用该工具,你可以创建一个建立在MFC基础上的窗口应用程序框架,然后在这个框架中加上自己的应用逻辑。

你可以选择所创建的应用类型,最常用的是多文档应用(就象你用的字编辑器MicrosoftWord一样,可以同时打开多个文档窗口的应用)、单文档应用(类似于Windows提供的notepad,一次只能打开一个文档)和对话框应用(类似于Windows的时钟程序)。

1、用AppWizard建立一个单文档应用程序,在窗口中输出”Hello,World!

2、用AppWizard建立一个对话框应用程序,在对话框上摆放相应控件。

程序结果如下图:

三、实验步骤

1、创建一个新项目

利用DeveloperStudio的AppWizard创建一个新的项目,步骤如下:

1.选择菜单File|New,系统将显示New对话框

2.选择Projects标签,在显示的项目类型中选择MFCAppWizard(exe)

3.在右边的ProjectName编辑框中输入项目名称,如“helloMFC”,然后按OK

4.MFCAppWizard将分几步询问你有关要建立的新项目的配置。

第一个对话框问你是创建哪种类型的应用(单文档、多文档还是对话框类型),选择创建单文档应用“Singledocument”,然后按Next按钮

5.翻过后面的五个页面(按Next),每个页面可以让你改变项目的不同选项,这个例子暂时不设置这些选项。

6.最后一个MFCAppWizard屏幕告诉你AppWizard为你自动产生的类。

单击Finish键,AppWizard显示一个关于该项目的摘要,列出这些类和你所选择的特征。

如图所示:

图5-1最后一个MFCAppWizard屏幕

7.单击OK,系统自动产生helloMFC所需要的文件。

2、浏览helloMFC项目

当你用MFCAppWizard创建了helloMFC项目后,这个项目的工作区窗口将会打开,工作区窗口(如下图):

图5-2打开helloMFC项目后的工作区窗口

你可以先选择FileView看一下AppWizard为你创建了哪些文件,然后选择ClassView看一下定义了哪些类。

ClassView中还可以看到一个Globals文件夹,单击它前面的加号,可以看到,有一个预定义的全局变量theApp,这是你的Windows应用程序类的对象。

3、编译连接运行

按F7或者选择菜单Build|BuildhelloMFC.exe,编译连接得到可执行程序,再按Ctrl+F5或者选择Build|ExecutehelloMFC.exe运行该程序。

程序的结果如下:

图5-3编译连接运行的结果

4、用MFC处理输出

现在修改程序。

要在程序中间的窗口上显示一行文字“Hello,World”,步骤如下:

1、在工作区窗口中选择ClassView标签,单击helloMFCclasses前面的加号(如果已经变成减号则不做此操作)

1、单击类CHelloMFCView类前面的加号

1、双击OnDraw()函数,在右边的文档将显示窗口显示文件helloMFCView的内容,并且自动将光标定位到函数OnDraw()处。

1、修改OnDraw函数的定义,在最后一行加一句:

pDC->TextOut(50,50,"Hello,World");

1、按Ctrl+s或者选菜单File|Save来保存所作的修改

5、编译连接并运

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2