C++课内实验报告.docx

上传人:b****6 文档编号:8688122 上传时间:2023-02-01 格式:DOCX 页数:9 大小:1.05MB
下载 相关 举报
C++课内实验报告.docx_第1页
第1页 / 共9页
C++课内实验报告.docx_第2页
第2页 / 共9页
C++课内实验报告.docx_第3页
第3页 / 共9页
C++课内实验报告.docx_第4页
第4页 / 共9页
C++课内实验报告.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

C++课内实验报告.docx

《C++课内实验报告.docx》由会员分享,可在线阅读,更多相关《C++课内实验报告.docx(9页珍藏版)》请在冰豆网上搜索。

C++课内实验报告.docx

C++课内实验报告

《C++》课内实验报告

学生姓名:

刘世江

2011309010219

及学号:

学院:

理学院

班级:

信计112

课程名称:

C++

实验题目:

用ClassWizard设计类

指导教师

姓名及职称:

朱振菊实验师

方向实验师

 

2013年05月28日

 

一、实验题目:

用ClassWizard设计类

二、实验目的:

1.熟悉VisualC++6.0集成开发环境.

2.熟悉ClassWizard各选项卡的内容及使用方法。

3.学习使用ClassWizard设计新类,增加新的成员。

三、实验内容:

1.将书中例题9.13程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time和Date类中将display声明为友元函数。

在主函数中调用display函数,display函数分别引用Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。

请给出源程序、简单注释以及运行结果。

源程序和注释:

#include//引用头文件及命名空间

classDate;//对Date类的提前引用声明

classTime//定义Time类

{

public:

//声明共用部分

Time(int,int,int);//公用成员函数原型声明

friendvoiddisplay(Date&,Time&);//定义dispay为类Time的友元函数

private:

//声明私有部分

inthour;

intminute;

intsec;

};

classDate//定义Date类

{

public:

//声明共用部分

Date(int,int,int);//公用成员函数原型声明

friendvoiddisplay(Date&,Time&);//定义dispay为类Date的友元函数

private:

//声明共用部分

intmonth;

intday;

intyear;

};

Time:

:

Time(inth,intm,ints)//定义类Time的构造函数

{

hour=h;

minute=m;

sec=s;

}

voiddisplay(Date&d,Time&t)//定义display函数

{

cout<

cout<

"<

"<

}

Date:

:

Date(intm,intd,inty)//定义类Date的构造函数

{

month=m;

day=d;

year=y;

}

intmain()//定义主函数

{

Timet1(10,13,56);//定义并初始化Time型的类t1

Dated1(12,25,2004);//定义并初始化Date型的类d1

display(d1,t1);//调用函数display输出时间和日期

return0;//返回一个值

}

运行结果见实验结果图1。

2.熟悉ClassWizard应用程序的启动

首先利用AppWizard应用程序按照如下步骤来创建应用程序的文件:

1)从文件(File)菜单上选择“新建(New)”命令来激活AppWizard应用程序;

2)敲入如shiyan03作为工程名,并将该工程创建在自己的目录下;

3)用鼠标选择MFCAppWizard(exe)项,按下OK按钮;

4)按默认设置选择Finish按钮。

VisualC++6.0启动后ClassWizard在主菜单中是不可见的,它必须在打开一个工程后,才在“视图(View)”菜单中出现。

可以从集成开发环境中启动ClassWizard:

首先打开上面创建的工程shiyan03.dsw,下拉“视图(View)”菜单,然后选择“建立类向导(ClassWizard)”(或者按快捷键CtrlW),此时会弹出MFCClassWizard对话框。

该对话框包含以下选项卡:

1)MessageMaps选项卡;2)MemberVariables选项卡;3)Automation选项卡;4)ActiveXEvents选项卡;5)ClassInfo选项卡。

弹出每个选项卡,截图并查找资料对每个选项卡内容的功能进行说明。

往视图类中加入成员函数

下面我们加进成员函数来实现以下功能,在视图窗口中跟踪鼠标的当前位置,并且在视图的左上角处显示出鼠标的坐标值。

这一特性需要用成员函数OnMouseMove来控制Windows消息WM_MOUSEMOVE。

激活ClassWizard应用程序,选中MessageMaps选项卡,并从Classname框中选择类Cshiyan03View。

现在再从ObjectIDs列表中选择Cshiyan03View,此时Message列表框显示出能够被视图类Cshiyan03View控制的所有消息。

从Message列表框中选择消息WM_MOUSEMOVE,此时AddFunction按钮变亮,单击AddFunction按钮,使名字OnMouseMoveON_WM_MOUSEMOVE出现在MemberFunctions列表框中。

单击确定(OK)按钮完成设定。

按要求修改成员函数OnMouseMove的代码。

选择ClassView选项卡,单击Cshiyan03View左边的“+”号;双击OnMouseMove(UINTnFlags,CPointpoint)。

加入如下代码:

charbuff[10];

CClientDCdc(this);

sprintf(buff,"[%03d,%03d]",point.x,point.y);

dc.TextOut(20,20,buff,strlen(buff));

同时去掉代码:

CView:

:

OnMouseMove(nFlags,point);

单击“组建(Build)”进行编辑,再选择“执行(Execute)”后运行,抓图显示你的运行结果。

四、实验结果:

图1第1题运行结果

MessageMaps选项卡:

它是ClassWizard对话框中最重要的选项卡,主要完成创建新类、添加、删除消息处理函数等任务。

该选项卡中包含了两个下拉列表框:

Project下拉列表框和Classname下拉列表框;三个列表框:

ObjectIDs列表框、Message列表框和Memberfunctions列表框;一个文本信息框;四个工具按钮。

Project下拉列表框:

该下拉列表框用于选择当前操作的项目。

当当前打开的工作区中包含多个项目文件时,用户可以从这个下拉列表框中选择将要操作的项目文件。

对于单项目工作区来说,其默认值就是项目文件。

Classname下拉列表框:

该下拉列表框用于选择当前要操作的类。

当用户在Classname下拉列表框中选中了某个类之后,ObjectIDs窗口中的内容将会发生相应的变化。

ObjectIDs列表框:

该列表框用于显示当前选定类中能够产生消息的对象的ID值。

这些对象包括菜单选项、工具栏按钮选项、对话框以及各种控件等。

通常ObjectIDs列表框中所包含的第一个对象就是当前类名。

Message列表框:

Message列表框中列出了对应于ObjectIDs列表框中所选中的当前项可以处理的消息以及可被重写的MFC虚函数。

当ObjectIDs列表框中选定当前类名时,Message列表框前部分显示的是当前类所能覆盖的虚拟函数,后部分显示的是能够处理的消息。

如ObjectIDs列表框中选定其它对象,则Message列表框显示的就是当前项可以处理的消息。

Memberfunctions列表框:

Memberfunctions列表框中列出了在Classname下拉列表框中所选中的当前类包含的所有成员函数。

其中用字母“V”标出的是MFC虚函数,用字母“W”标出的是Windows消息处理函数。

文本信息框:

在Project下拉列表框的下方有一个文本信息框,用于显示当前选中类的源文件,包括.h文件和.cpp文件。

该文本信息框中显示的内容会随着选定类的变化而变化。

AddClass按钮:

该按钮用于向当前的Project中添加一个新类,新类可以是自己创建,也可以是从已有的文件中选取。

AddFunction按钮:

该按钮用于向当前选定类中为当前选定的消息添加一个消息处理函数。

其中类是在Classname下拉列表框中选定的类;而当前消息则是在Message列表框中选定的消息。

AddFunction按钮平时是灰化禁止的,只有当用户在Message列表框中选中某个特定的消息之后,该按钮才能正常显示,即此时才能使用。

DeleteFunction按钮:

该按钮用于在当前选定的类中删除已有的成员函数。

DeleteFunction按钮平时是灰化禁止的,只有当用户在Memberfunctions列表框中选中某个消息处理函数之后,才能选择该按钮。

EditCode按钮:

单击该按钮将打开编辑窗口,并将光标位置自动跳到当前选定的成员函数的源代码处。

图2MessageMaps选项卡

MemberVariables选项卡:

该选项卡主要用于添加与对话框中的控件相关联的成员变量,以便程序能利用这些成员变量与对话框中的控件进行数据交换。

该选项卡与MessageMaps选项卡一样,也包含Project下拉列表框和Classname下拉列表框,分别用于选定用户操作的当前项目和当前类;AddClass按钮用于向当前项目中添加一个新类;一个文本信息框,用于显示当前选中类的源文件。

此外,MemberVariables选项卡中还包含另一个列表框以及另外四个工具按钮。

列表框中共有3列数据,分别为:

ControlIDs:

该项显示了当前选定类中能够映射成员变量的控件的ID值。

所谓能映射成员变量的控件,就是可以使用类中的成员变量来代表某个控件,当控件发生改变时,该成员变量的值也发生相应变化。

Type:

该项表示成员变量的类型。

Member:

该项表示成员变量的名字。

注意:

并不是所有的类都有这些信息,只有在选择了对话框类、有格式视图类或记录视图类时才能显示出这些信息。

AddVariable按钮:

该按钮用于为当前选定的控件添加一个成员变量。

DeleteVariable按钮:

该按钮用于删除一个现有的成员变量。

该按钮平时是灰化禁止的,只有当用户在ControlIDs列表框中选中某个成员变量以后,才能选择该按钮执行删除工作。

UpdateColumns按钮:

该按钮用于选定一个数据源,只在记录集合类中才可以使用。

BindAll按钮:

只适用于记录集合类,单击此按钮将把所有未绑定的记录集里的数据成员绑定到数据源的一个表中相应的列上。

在默认情况下,MFCAppWizard和ClassWizard将绑定所有的列,所以很少需要使用数据绑定。

如果通过删除相关的数据成员将一些或所有列取消绑定,那么在这之后还可以重新绑定它们。

图3MemberVariables选项卡

Automation选项卡:

该选项卡允许用户加入方法或属性以增强Automation功能。

图4Automation选项卡

ActiveXEvents选项卡:

该选项卡允许用户加入事件以支持ActiveX控件。

图5ActiveXEvents选项卡

ClassInfo选项卡:

该选项卡用于显示和设置当前选定类中的一些重要信息。

图6ClassInfo选项卡

图7第2题运行结果

五、实验思考及体会:

本次实验我基本了解了一些C++开发的方法,巩固了关于友元函数和友元类的课堂知识,了解到了C语言和C++的一些新的不同点。

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

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1