当前位置:文档之家› 西安石油大学大二(上)C++面向对象程序设计课件第11章 对话框及常用控件

西安石油大学大二(上)C++面向对象程序设计课件第11章 对话框及常用控件

西安石油大学大二(上)C++面向对象程序设计课件第11章 对话框及常用控件
西安石油大学大二(上)C++面向对象程序设计课件第11章 对话框及常用控件

第11章对话框及常用控件

对话框在Windows程序中是用户和Windows程序交互的主要途径。对话框操作简单方便,既可以是最简单的消息框,也可以是复杂的数据输入表单等。控件是一种特殊的子窗口,通常用户是具体通过对话框中的各种控件来和Windows程序交互的。

本章主要内容包括:对话框的创建、使用和销毁,模式对话框和无模式对话框的概念,对话框数据交换和验证机制,MFC通用对话框类、常用控件使用方法以及MFC 简单数据类型使用方法。

11.1对话框的创建与使用

对话框是一个能接收消息的窗口,用户可以移动、缩放和关闭对话框。在一个对话框中通常可以包含许多称为控件的元素,例如:静态文本、编辑框、按钮、列表框、组合框、树形视图、以及进度指示器等。MFC对这些控件进行了封装,同时提供对话框数据交换和校验机制,用来实现控件数据的初始化,以及从控件中获取用户的输入数据。

MFC中的CDialog类封装了Windows对话框的基本功能,是所有对话框的基类。CDialog类是CWnd类的派生类,该类的定义在“afxwin.h”文件中。

11.1.1对话框的创建

创建和使用一个对话框的步骤一般包括:

(1)创建对话框资源;

(2)设置对话框及控件属性;

(3)创建对话框派生类;

(4)为控件添加成员变量;

(5)为控件添加消息处理函数;

(6)在程序中创建对话框派生类的对象;

(7)调用DoModal或Create显示对话框。

【例11.1】创建一个SDI类型的工程CompArea,要求添加菜单“计算”及其菜单项“三角形面积”,并为该菜单项添加函数体为空的命令消息处理函数。

操作步骤为:

①打开Visual C++集成开发环境,单击File|New菜单项,打开New对话框。

②在New对话框中选择Projects标签,输入工程名为“CompArea”,本例的保存路径为“E\Samples”,单击“OK”按钮。

③在“MFC AppWizard-step 1”对话框中选择“Single document”,其余步骤中均使用默认选项,生成一个SDI工程。

④在工作区中选择ResourceView标签,展开Menu项,在IDR_MAINFRAME 上双击鼠标左键启动菜单资源编辑器。

⑤用鼠标将顶层菜单最右边的虚方框拖至“查看”和“帮助”之间。在虚方框上双击鼠标左键,弹出Menu Item Properties对话框,在General标签的Caption编辑框中输入菜单标题:计算(&C),其中“&”的作用是使其后的字符加上下划线,从而可以让用户用键盘来选择菜单。Pop-up检查框默认选中,表明新加的菜单可以有其弹出的子菜单。如图11.1所示。

图11.1 添加新菜单

⑥将Menu Item Properties对话框左上角的“图钉”状按钮按下,使该对话框保持可见。用鼠标左键单击“计算”菜单下的虚方框,在新显示的Menu Item Properties 对话框中设置要添加的菜单项的属性。如图11.2所示,设置ID为“ID_COMPUTER_TRIANGLE”,设置Caption为“三角形面积”。

图11.2 添加菜单项“三角形面积”及设置属性

⑦在工具栏单击存盘图标(或者按Ctrl+S键)将资源文件ComputerArea.rc存盘,关闭菜单项属性窗口以及菜单编辑器窗口。

⑧选择View|ClassWizard…菜单项,弹出MFC ClassWizard对话框,选择Message Maps标签,在Class name组合框中选择视图类CCompAreaView,在Object IDs列表

框中选择ID_COMPUTER_TRIANGLE,在Messages列表框中的COMMAND上双击鼠标左键,弹出Add Member Function对话框。如图11.3所示。

图11.3 添加菜单消息处理函数

⑨采用默认函数名OnComputerTriangle,单击OK按钮关闭Add Member Function 对话框,返回MFC ClassWizard对话框,在Member functions列表框中可见新添加的成员函数OnComputerTriangle。

⑩在Member functions列表框中的OnComputerTriangle函数名上双击,编译器自动关闭MFC ClassWizard对话框,并在客户区打开CompAreaView.cpp文件,定位至OnComputerTriangle函数,此时该函数体为空。

?至此就完成了添加菜单“计算”及其菜单项“三角形面积”,并为该菜单项添加了函数体为空的命令消息处理函数OnComputerTriangle。执行CompArea工程,可以测试“三角形面积”菜单命令。

【例11.2】为例11.1中的CompArea工程添加如图11.4所示的对话框资源,并进行对话框消息映射。

图11.4 计算三角形面积对话框

操作步骤为:

①打开例11.1中的CompArea工程文件。操作方法参见例10.3。

②在CompArea工程的工作区中选择ResourceView标签,在Dialog条目上单击鼠标右键,在弹出的快捷菜单中选择“Insert Dialog”菜单命令。

③这时在Dialog条目下会增加一个标识号为IDD_DIALOG1的条目,同时在客户区显示该对话框资源,如图11.5所示。

说明:如果在CompArea resources条目后出现一个*号,表明当前资源还未保存,最好要及时保存。

图11.5 新建对话框资源

④在对话框资源上单击鼠标右键,在弹出的菜单中选择“Properties”菜单命令,弹出Dialog Properties对话框,如图11.6所示。

图11.6 设置对话框属性

⑤将对话框资源的ID设置为“IDD_AREA”,Caption设置为“计算三角形面积”。关闭Dialog Properties对话框。

⑥选中Ok和Cancel按钮,按键盘上的Delete键完成删除,再为对话框添加如表11.1所示的控件,并设置相应属性。

表11.1 对话框控件属性

具体方法为:在Control 工具栏中选择控件类型,用鼠标左键拖至对话框中适当位置后松开鼠标(或者用鼠标左键选中后再在对话框中单击)。然后在控件上用鼠标右击打开属性对话框,按照表11.1设置相应属性。最后,利用Dialog 工具栏对各个控件进行如图11.7所示的布局。

图11.7 对话框资源

注意:对IDC_AREA 编辑框,还要在属性对话框的Style 标签中选中“Read-only ”检查框,使其不可编辑。可使用Dialog 工具栏最左边的Test 按钮测试对话框效果。(如果看不到所需工具栏,可在菜单栏和工具栏的空白处右击鼠标,在弹出的快捷菜单中进行选择。)

将所需控件在对话框中添加完成后,也即资源创建完毕。此时需要创建一个CDialog 类的派生类与该资源关联,下面的步骤7到步骤9完成此项工作。

⑦ 在对话框资源上双击鼠标左键(或者单击鼠标右键,在弹出的菜单中选择ClassWizard …菜单项,或者选择View|ClassWizard …菜单项),会弹出MFC ClassWizard 对话框,并紧接着弹出Adding a Class 对话框,如图11.8所示。

图11.8 Adding a Class对话框

⑧在Adding a Class对话框确认默认选项Create a new class,单击OK按钮,弹

出New Class对话框,如图11.9所示。

图11.9 New class对话框

⑨在Name编辑框中输入“CMyDlg”,其余设置取默认值,单击OK按钮。此

时自动生成该类的头文件和源文件分别为“MyDlg.h”和“MyDlg.cpp”。

⑩此时在MFC ClassWizard对话框的Projects项和Class name项中默认值都为

CMyDlg。选择Member Variables标签,在Control IDs列表框中选中IDC_SIDE1,单

击Add Variable…按钮,弹出Add Member Variable对话框,如图11.10所示。

图11.10 Add Member Variable对话框

?为IDC_SIDE1控件设置成员变量名为m_fSide1,在Category组合框中选择“Value”类型,在Variable type组合框中选择“float”数据类型,单击OK按钮。此时会在Member Variables标签下部出现对该成员变量设置取值范围,当用户进行输入数据时系统会自动进行数据的有效性验证,若不满足条件会进行提示。

?同样方法按照表11.2为其余编辑框控件设置相应的成员变量。

表11.2 编辑框控件的成员变量属性

此时,系统自动在CMyDlg类的构造函数中对这4个成员变量进行初始化,初始化数值均为0.0。

?选择Message Maps标签,为两个按钮添加消息处理函数。在Object IDs列表框中选中“IDC_TRIANGLE_AREA”,在Messages列表框中选中“BN_CLICKED”,

单击“Add Function…”按钮,弹出Add Member Function对话框,如图11.11所示。

图11.11 为“计算”按钮添加消息处理函数

?使用默认成员函数名OnTriangleArea,单击OK按钮。

?在Object IDs列表框中选择“IDC_RESET”,以同样方法为“重置”按钮添加消息处理函数OnReset。单击OK按钮关闭MFC ClassWizard对话框。

?在工作区选择ClassView标签,展开CMyDlg类,双击“OnTriangleArea ()”,编译器自动在客户区打开MyDlg.cpp文件,并且定位到CMyDlg:: OnTriangleArea ()函数的开头处。在该函数中增加以下代码:

void CMyDlg::OnTriangleArea()

{ //TODO: Add your control notification handler code here UpdateData();

if(m_fSide1+m_fSide2>m_fSide3 && m_fSide1+m_fSide3>m_fSide2

&& m_fSide3+m_fSide2>m_fSide1) //判断能否构成三角形

{

float s = (m_fSide1 + m_fSide2 + m_fSide3)/2;

m_dArea = sqrt(s * (s-m_fSide1) * (s-m_fSide2) * (s-m_fSide3)); //计算三角形面积

CString str;

str.Format("%.2f", m_dArea); //保留两位小数

m_dArea = atof(str); //使用atof函数将字符串转换为符点数

UpdateData(FALSE); //更新对话框中的数据

}

else

{

AfxMessageBox("无法构成三角形,请重新输入!");

}

}

?以同样方法为CMyDlg::OnReset()函数增加代码如下:

void CMyDlg::OnReset()

{ //TODO: Add your control notification handler code here m_fSide1 = 0;

m_fSide2 = 0;

m_fSide3 = 0;

m_dArea = 0;

UpdateData(FALSE); //更新对话框中的数据

}

?在MyDlg.cpp文件开头部分添加下面的包含语句:

#include

?执行CompArea工程,测试程序运行效果。

至此,与对话框资源相关的类及成员已经创建完成,下面就可以通过该对话框类的对象显示和使用对话框了。

11.1.2对话框的使用

对话框分为模式对话框和无模式对话框两种。从用户的观点看,模式对话框显示时,用户不能在同一个应用程序的其他地方做其他操作,直到该对话框关闭。通常使用的对话框大部分是模式对话框,例如文件“打开/另存为”对话框;无模式对话框显示时,用户可以操作其他界面对象,例如主窗口、菜单、工具栏等,以及常用的Word 应用程序中的“查找和替换”对话框、“符号”对话框等都是无模式对话框。当需要创建一个对话框时,必须确定该对话框是模式对话框还是无模式对话框,二者的显示方法是不同的。

在程序中创建对话框对象后,可以调用DoModal函数或ShowWindow函数显示对话框。而在对话框显示之前,系统会调用虚函数CDialog:: OnInitDialog对对话框进行初始化。因此,这个函数通常会在派生类中被扩充继承,用户可以加入一些自己的初始化工作。在CDialog:: OnInitDialog函数中会执行CWnd::UpdateData(FALSE)函数,完成用对话框成员变量的值去初始化对话框。当用户向对话框控件输入数据后,必须调用UpdateData()函数将控件中的数据传递给相应的成员变量。

(1)模式对话框

模式对话框是最常使用的对话框。当模式对话框打开时,将建立自己的消息循环,使得用户只能与该对话框进行交互,其他的用户界面对象接收不到输入信息,也不会做出任何响应。

模式对话框的显示是通过调用CDialog::DoModal函数实现的,当对话框关闭后该函数才返回,该函数原型为:

virtual int DoModal ();

返回值为IDOK时表示用户单击了OK按钮,此时系统先调用该按钮消息处理函数OnOK,然后DoModal函数才返回;返回值为IDCANCEL时表示用户单击了对话框窗口的关闭按钮或者Cancel按钮,此时系统先调用该按钮消息处理函数OnCancel,然后DoModal函数才返回。

通常有两种对话框对象创建方式:一种是在视图类头文件中创建为成员变量。另一种是在视图类的成员函数中临时创建。

【例11.3】为例11.2的CompArea工程的菜单命令“计算|三角形面积”添加处理代码,使例11.2中创建的对话框作为模式对话框进行显示,获取用户输入的三个边长并计算三角形面积后输出。

操作步骤为:

①在工作区选择ClassView标签,展开CCompAreaView类,双击成员函数OnComputerTriangle(),编译器自动在客户区打开“CompAreaView.cpp”文件,并定位到CCompAreaView::OnComputerTriangle()函数开头处。

②为OnComputerTriangle()函数添加代码如下:

void CCompAreaView::OnComputerTriangle()

{ //TODO: Add your command handler code here

CMyDialog mydlg; //创建对话框对象

mydlg.DoModal(); //显示模式对话框

}

③在CompAreaView.cpp文件开头部分添加下面的包含语句:

#include "MyDlg.h"

④编译,链接和运行程序,测试“计算|三角形面积”菜单项功能及模式对话框的效果。如图11.12所示。

图11.12 CompArea工程执行结果

这个例子中,对话框对象mydlg的生存周期仅限于成员函数CCompAreaView::OnComputerTriangle中。当该函数结束时,系统将自动调用CMyDlg

类的析构函数删除mydlg对象。

(2)无模式对话框

当无模式对话框打开时,将和应用程序共用一个消息循环,此时用户既可以和该对话框进行交互,也可以选择其它用户界面后和其他对象进行交互。无模式对话框需要调用CDialog::Create函数动态创建,如果对话框资源具有Visiable风格,则对话框可立即显示出来,否则需要调用CWnd::ShowWindow(SW_SHOW)函数来显示该对话框,当对话框显示后Create函数立即返回。

在CDialog类定义中,Create函数原型为:

BOOL Create(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL);

BOOL Create(UINT nIDTemplate, CWnd* pParentWnd = NULL);

参数:

?lpszTemplateName为以NULL结束的字符串,表示对话框资源名。

?nIDTemplate为对话框资源ID号。

?pParentWnd为指向对话框所属父窗口对象指针,缺省值为NULL,表示对话框对象的父窗口设置为主程序窗口。

返回值:若对话框创建和初始化成功,则返回非0值,否则返回0。

【例11.4】为例11.3中的CompArea工程添加一个无模式对话框类型的输出信息对话框,如图11.13所示,当用户在计算三角形面积时用来显示每次的计算信息。

图11.13 输出信息对话框

操作步骤:

①在Visual C++中打开“CompArea.dsw”文件,使用对话框资源编辑器添加对话框资源(方法同例11.2的步骤2至步骤4),设置ID为“IDD_OUTPUTINFO”,设置Caption为“输出信息”。

②删除OK按钮和Cancel按钮。

③添加一个列表框控件,ID为“IDC_INFOLIST”,在属性对话框的Style标签中选择Horizontal scroll、V ertical scroll,不选Sort,其余使用默认设置。

④在对话框资源上双击鼠标左键(或者单击鼠标右键,在弹出的菜单中选择ClassWizard…),会弹出MFC ClassWizard对话框,并紧接着弹出Adding a Class对话框,如图11.8所示。

⑤在Adding a Class对话框确认默认选项Create a new class,单击OK按钮,弹

出New Class对话框,如图11.14所示。在Name编辑框中输入“CInfoDialog”,基类为CDialog,其余设置取默认值,单击OK按钮。系统自动生成头文件和源文件为“InfoDialog.h”和“InfoDialog.cpp”。

图11.14 New class对话框

⑥在MFC ClassWizard对话框中,选择Member Variables标签,为对话框中的列表框控件在CInfoDialog类中添加相关联的成员变量m_OutputInfo,在Category组合框中选择“Control”类型,在Variable type组合框中选择“CListBox”类型,如图11.15所示。

图11.15 添加ListBox控件成员变量

⑦单击Add Member Variable对话框的OK按钮,再单击MFC ClassWizard对话框的OK按钮。

当用户在“计算三角形面积”对话框中单击“计算”按钮时,应该显示“输出信

息”对话框,并在列表框中显示计算信息。因此需要在“计算”按钮的消息处理函数CMyDlg::OnTriangleArea()中添加代码实现具体功能。

⑧在工作区中选择ClassView标签,在CMyDlg条目上双击打开“MyDlg.h”文件,在开头部分添加包含语句:

#include "InfoDialog.h"

在类的定义中添加成员变量:

public:

CInfoDialog * m_pInfodlg; //定义输出信息对话框对象指针

⑨展开CMyDlg类,双击构造函数,编译器自动在客户区打开“MyDlg.cpp”文件,并定位到CMyDlg::CMyDlg()函数开头处。添加代码如下:

m_pInfodlg = NULL; //初始化输出信息对话框对象指针

⑩编辑析构函数CMyDlg::~CMyDlg(),添加代码如下:

CMyDialog::~CMyDialog()

{

if(m_pInfodlg != NULL)

{

delete m_pInfodlg; //释放输出信息对话框对象指针

}

}

?编辑CMyDlg::OnTriangleArea()函数,添加代码如下:

void CMyDlg::OnTriangleArea()

{ //TODO: Add your control notification handler code here if(m_pInfodlg == NULL)

{

m_pInfodlg = new CInfoDialog; //使用new运算符申请对话框对象

m_pInfodlg->Create(IDD_OUTPUTINFO, NULL); //创建无模式对话框}

m_pInfodlg->ShowWindow(SW_SHOW); //显示无模式对话框

//设置列表框水平滚动宽度为1000像素

m_pInfodlg->m_OutputInfo.SetHorizontalExtent(1000);

UpdateData(TRUE); //将控件中的数据传递给相应的变量

if(m_fSide1+m_fSide2>m_fSide3 && m_fSide1+m_fSide3>m_fSide2 && m_fSide3+m_fSide2>m_fSide1) //判断能否构成三角形

{

float s = (m_fSide1 + m_fSide2 + m_fSide3)/2;

m_dArea = sqrt(s * (s-m_fSide1) * (s-m_fSide2) * (s-m_fSide3)); //计算三角形面积

CString temp;

temp.Format("%.2f", m_dArea); //保留两位小数

m_dArea = atof(temp); //使用atof函数将字符串转换为符点数

UpdateData(FALSE); //在控件中显示计算结果

CString strInfo;

strInfo.Format("第一条边:%f, 第二条边:%f,第三条边:%f, 面积:%f", m_fSide1, m_fSide2, m_fSide3, m_dArea); //格式化计算信息

//向模式对话框中添加计算信息

m_pInfodlg->m_OutputInfo.AddString(strInfo);

}

else

{

m_pInfodlg->m_OutputInfo.AddString("无法构成三角形,重输");

}

}

?编译,链接和运行程序,测试菜单“计算|三角形面积”的功能及无模式对话框的运行效果。一次运行的测试情况如图11.16所示。

图11.16 CompArea工程执行结果

11.1.3对话框的销毁

当向工程中插入对话框资源时,会默认包含一个OK按钮和一个Cancel按钮。当为该对话框资源创建新类时通常会从基类CDialog派生。在CDialog类定义中有:protected:

virtual void OnOK();

virtual void OnCancel();

当单击OK按钮关闭对话框时,系统会执行CDialog::OnOK函数。当单击Cancel 按钮或对话框关闭按钮时,系统会执行CDialog::OnCancel函数。如果用户在对话框派生类中对这两个函数进行了重载,则先调用派生类中的OnOK函数(或者OnCancel 函数),再调用基类CDialog中的OnOK函数(或者OnCancel函数)。

这两个函数的定义如下:

void CDialog::OnOK()

{

if (!UpdateData(TRUE))

{

TRACE0("UpdateData failed during dialog termination.\n");

//the UpdateData routine will set focus to correct item

return;

}

EndDialog(IDOK);

}

void CDialog::OnCancel()

{

EndDialog(IDCANCEL);

}

显然这两个函数都是调用EndDialog函数来关闭对话框,在CDialog类中EndDialog 函数原型为:

void EndDialog(int nResult);

当单击OK按钮关闭对话框时,参数nResult值为IDOK,当单击Cancel按钮或对话框关闭按钮来关闭对话框时,参数nResult值为IDCANCEL。实际上,EndDialog函数不会立即关闭对话框,它只是设置一个标志,指示当前函数处理结束后立即关闭对话框。

(1)模式对话框的销毁

模式对话框的显示是通过调用DoModal函数实现的,当对话框关闭后该函数才返回。当用户关闭对话框后模式对话框就已经被销毁了,但只要对话框对象还存在,还可以使用DoModal来创建一个新的模式对话框。若对话框对象是在视图类的成员函数中临时创建,则当该函数执行结束时,模式对话框的析构函数将被调用。若对话框对象是在视图类头文件中创建为成员变量,则当视图关闭时先调用视图类的析构函数,再调用模式对话框类的析构函数。

(2)无模式对话框的销毁

无模式对话框通常由父视图或框架窗口(应用程序的主框架窗口或文档框架窗口)创建和拥有。当无模式对话框指针作为父窗口类成员变量时,如果用户关闭无模式对

话框时,对话框并没有被销毁,此时只要无模式对话框指针还存在,还可以调用ShowWindow函数来显示该对话框。当无模式对话框的父窗口关闭时,系统会自动调用父窗口的析构函数,因此必须在该析构函数中使用delete运算符释放无模式对话框指针(参见例11.4步骤10中的语句delete m_pInfodlg;)。

当在主窗口命令消息处理函数中动态创建局部无模式对话框指针时,显然不能在该函数结束时使用delete运算符释放无模式对话框指针。因为此时若释放无模式对话框指针则对话框窗口同时被销毁。在这种情况下,可以在模式对话框关闭时销毁自己,具体方法为:首先,在模式对话框类中,对OnCancel函数进行重载,调用DestroyWindow()强制销毁窗口。然后,使用ClassWizard工具,在模式对话框类中映射WM_DESTROY消息,在消息处理函数中使用语句delete this删除自身对象(参见例11.5的步骤15)。

【例11.5】为CompArea工程添加一个无模式对话框,用来显示当前日期和星期,如图11.17所示,测试无模式对话框的创建和销毁。

图11.17 当前日期对话框

操作步骤为:

①在Visual C++中打开“CompArea.dsw”文件。

②使用对话框资源编辑器添加对话框资源。在对话框上用鼠标右击,在弹出的快捷菜单中选择“Properties”菜单项打开Dialog Properties对话框,设置ID为“IDD_SHOWDATE”,设置Caption为“当前日期”。

③删除OK按钮和Cancel按钮。

④添加一个编辑框控件,ID为“IDC_DATE”,在属性对话框的Style标签中选择Read-only,其余使用默认设置。

⑤创建该对话框资源的对话框类CShowDate,基类为CDialog(方法同例11.2的步骤6)。系统自动生成头文件“ShowDate.h”和源文件“ShowDate.cpp”。

⑥在MFC ClassWizard对话框中,选择Member Variables标签,为CShowDate 类添加编辑框控件成员变量,变量名为m_strDate,在Category组合框中选择“Value”类型,在Variable type组合框中选择“CString”类型。

⑦在工作区中选择ResourceView,展开Menu项,双击IDR_MAINFRAME,使用菜单资源编辑器添加菜单“当前日期”,如图11.18所示。

图11.18 添加菜单“当前日期”

⑧在MFC ClassWizard中,为CCompAreaView类添加菜单IDD_SHOWDATE 的消息处理函数,如图11.19所示。

图11.19 添加菜单消息处理函数

⑨单击Add Member Variable对话框的OK按钮,再单击MFC ClassWizard对话框的OK按钮。

⑩在工作区中选择ClassView标签,展开CCompAreaView类,双击OnShowdate 函数,编译器自动在客户区打开“CompAreaView.cpp”文件,并定位到CCompAreaView::OnShowdate()函数开头处。添加代码如下:

void CCompAreaView::OnShowdate()

{

//TODO: Add your command handler code here

CShowDate *pShowdate;

pShowdate = new CShowDate; //使用new运算符创建显示日期对话框对象

if(NULL == pShowdate) //创建对话框对象失败

{

AfxMessageBox("Failed.");

return;

}

else //创建对话框对象成功

{

pShowdate->Create(IDD_SHOWDATE); //创建无模式对话框

pShowdate->ShowWindow(SW_SHOW); //显示无模式对话框

}

CTime time; //创建CTime类对象

time = CTime::GetCurrentTime(); //获取当前日期

CString str = time.Format("%Y-%m-%d-%A"); //格式化日期

pShowdate->m_strDate = str;

pShowdate->UpdateData(FALSE); //更新显示日期对话框}

?在“CompAreaView.cpp”文件开头部分添加包含语句:

#include "ShowDate.h"

?打开ShowDate.h文件,在CShowDate类定义中声明虚函数:

void OnCancel();

?打开ShowDate.cpp文件,添加函数定义:

void CShowDate::OnCancel() //重载OnCancel函数

{

DestroyWindow(); //销毁窗口

}

?打开MFC ClassWizard对话框,为CShowDate类添加WM_DESTROY消息的响应函数OnDestroy,如图11.20所示。

图11.20 向CShowDate类添加消息响应函数

?在Member functions列表框中双击OnDestroy条目,编译器在客户区自动打开

“ShowDate.cpp”文件,并定位到OnDestroy函数开头处,添加代码如下:void CShowDate::OnDestroy()

{

CDialog::OnDestroy();

delete this;

}

?编译,链接和运行程序,测试菜单“当前日期”的功能及无模式对话框的运行效果。

在创建该无模式对话框时,默认父窗口为应用程序主窗口,所以当打开无模式对话框后,既可使用模式对话框的关闭按钮进行关闭,也可在关闭应用程序主窗口的同时进行关闭。当单击主窗口关闭按钮时,系统要关闭所有文档,销毁所有窗口,退出程序,因此会向无模式对话框窗口发送WM_DESTROY消息,执行delete this;语句强行删除无模式对话框对象,从而销毁对话框窗口。

11.1.4对话框数据交换和验证机制

在上面的例子中,存在两个很重要的过程,一个是用户向对话框的编辑框控件输入数据后由按钮消息处理函数处理数据,另一个是处理后的数据显示到对话框的编辑框控件中。即在对话框控件和对话框类的成员变量之间存在着一个数据交换的过程。那么,这个过程是如何实现的呢?

1. CDataExchange类

对话框数据交换(Dialog Data Exchange,简称DDX)和对话框数据验证(Dialog Data Validation,简称DDV)是Visual C++用来实现对话框操作的重要机制。MFC为了简化这些操作,提供了CDataExchange类来支持对话框的数据交换和验证过程。CDataExchange类没有基类。

(1)成员变量

public:

BOOL m_bSaveAndValidate;

CWnd* m_pDlgWnd;

当m_bSaveAndValidate 值为TRUE 时,表示将数据从对话框控件传递到对话框类成员变量;反之,则表示将数据从成员变量传递到对话框控件。m_pDlgWnd通常为指向包含控件的对话框的指针。

(2)主要成员函数

1)构造函数

CDataExchange(CWnd* pDlgWnd, BOOL bSaveAndValidate);

?参数pDlgWnd为包含控件的对话框的指针。

?参数bSaveAndValidate值为布尔值,为DDX和DDV设置方向。

2)HWND PrepareCtrl(int nIDC) 函数

?功能:框架调用这个成员函数为DDX和DDV准备指定控件。

?参数nIDC为非编辑控件ID。

?返回值:为所有非编辑控件的窗口句柄,类型为HWND,

3)HWND PrepareEditCtrl(int nIDC) 函数

?功能:框架调用这个成员函数为DDX和DDV准备指定编辑控件。

?参数nIDC为编辑控件的ID。

?返回值:为编辑控件的窗口句柄,类型为HWND。

2. 对话框数据交换和验证机制的实现过程

以例11.3为例,对话框数据交换和验证机制的实现包括如下过程:

(1)当新建对话框类CDialog的派生类CMyDlg时,系统在CMyDlg类中对虚函数CWnd::DoDataExchange进行了重载。代码如下所示:

void CMyDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

//{{AFX_DATA_MAP(CMyDlg)

// NOTE: the ClassWizard will add DDX and DDV calls here

//}}AFX_DATA_MAP

}

说明:

ClassWizard工具将在此实现对话框数据交换和验证机制。注释中的

//{{AFX_DATA_MAP(CMyDlg) 和//}}AFX_DATA_MAP表示在此之间的代码是由系统自动生成,用来进行数据映射。程序中其它在//{{AFX_...和//}}AFX_...之间的代码同此理,用户不必修改。

(2)当在MFC ClassWizard对话框中为对话框中的控件添加成员变量并设置变量的取值范围后(如图11.21所示),系统会在类的定义中声明成员变量,并在构造函数中用默认值对成员变量进行初始化。

《面向对象程序设计C 》期末试卷及标准答案

《面向对象程序设计C++》期末考试试卷(B) 一、单项选择题(每小题2分,共40分) 1、关于C++与C语言关系的描述中,()是错误的。 A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的 C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的 2、已知:int m=10; 下列表示引用的方法中,()是正确的。 A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m; 3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*'); 下面函数调用中,不合法的是()。 A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*'); 4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是()。 A.函数的返回值类型B.参数的类型C.函数名称D.参数个数 5、下列有关C++类的说法中,不正确的是()。 A.类是一种用户自定义的数据类型 B.只有类中的成员函数或类的友元函数才能存取类中的私有成员 C.在类中,如果不做特别说明,所有成员的访问权限均为私有的 D.在类中,如果不做特别说明,所有成员的访问权限均为公用的 6、已知X类,则当程序执行到语句X array[3];时,调用了()次构造函数。 A.0 B.1 C.2 D.3 7、有关析构函数的说法,不正确的是()。 A.析构函数有且仅有一个 B.析构函数和构造函数一样可以有形参 C.析构函数的功能是在系统释放对象之前作一些内存清理工作 D.析构函数无任何函数类型

c面向对象程序设计试题和答案(经典题目)

一、填空题(每空1分,共14分) 1、观看以下程序: class point{ public: void show() {cout<<”point”<

(A)指针(B)引用(C)枚举(D)结构 3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。 (A)share (B)public (C)private (D)protected 4、关于构造函数,下列说法不正确的是()。 (A)构造函数名字和类名相同 (B)构造函数在创建对象时自动执行 (C)构造函数无任何函数返回类型 (D)构造函数有且只有一个 5、派生类可以访问其基类的()。 (A)公有成员(B)保护成员 (C)私有派生(D)公有和保护成员 6、下列关于运算符重载的描述中,错误的是()。 (A)运算符重载不可以改变操作数的个数 (B)运算符重载不可以改变运算符的功能 (C)运算符重载不可以改变结合方向 (D)运算符重载不可以改变运算优先级 7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是() (A)面向过程(B)面向对象(C)安全性(D)复用性 8、对于类中定义的成员,其隐含访问权限为()。 A.public B.protected C.private D.static 9、下面有关重载函数的说法中正确的是() (A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同; (C)重载函数必须有不同的形参列表(D)重载函数名可以不同; 10、有如下的对类“CSample”的说明,其中()是错误的。 class CSample { A.int a=23; B.CSample(); public: C.CSample(int val); D.~ CSample(); 11、在int a=3,int *p=&a;中,*p的值是( ) A.变量a的地址值 B.无意义 C.变量p的地址值 D.3 12、每个类()构造函数。 (A)只能有一个(B)只可有公有的

什么是面向对象程序设计

1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。

西安石油大学

西安石油大学 2017 本科专业人才培养方案 专业名称测控技术与仪器 专业代码080301 院(部、系) 名称电子工程学院

测控技术与仪器 Measuring & Control Technology and Instrument 专业代码:080301 一、培养目标 本专业培养具备基本理论、知识和应用能力,能够在石油及相关领域从事测控仪器装备设计开发、制造、技术服务和经营管理等工作,具有创新意识的高素质复合型工程技术人才。毕业后经过五年左右的工程实践,具备: 1、综合运用多学科知识进行测量、分析、控制和解决石油及相关领域测控工程问题的能力,完成测控仪器装备的设计开发、制造和技术服务; 2、良好人文素养、社会责任感和工程伦理道德; 3、在职场中能以个人、成员或领导的角色,恪尽职守、交流合作或协调组织,有效发挥自身和团队作用; 4、创新意识和自主学习能力,以适应职业或行业发展需求。 二、毕业要求 以下毕业要求中的复杂工程问题均指石油及相关测控领域中的复杂工程问题。 1. 工程知识:具备数学、自然科学、工程基础、专业基础和专业知识,并能够应用于解决复杂工程问题。 2. 问题分析:能够应用数学、自然科学和工程科学的基本原理,识别、表达、并通过文献研究分析复杂工程问题,以获得有效结论。 3.设计/开发解决方案:能够设计针对复杂工程问题的解决方案,设计满足特定需求的系统、单元(子系统),并能够在系统设计环节中体现创新意识,考虑社会、健康、安全、法律、文化以及环境等因素。 4. 研究:能够基于科学原理并采用科学方法对复杂工程问题进行研究,包括设计实验、分析与解释数据、并通过信息综合得到合理有效的结论。 5. 使用现代工具:能够针对复杂工程问题,开发、选择与使用恰当的技术、资源、现代工程工具和信息技术工具,包括对复杂工程问题的预测与模拟,并能够理解其局限性。 6.工程与社会:能够基于石油测控及相关领域的背景知识进行合理分析,评价专业工程实践和复杂工程问题解决方案对社会、健康、安全、法律以及文化的影响,并理解应承担的责任。 7.环境和可持续发展:理解环境保护和社会可持续发展的内涵和意义,能够考虑和评价石油项目对环境保护、社会可持续发展的影响。 8. 职业规范:具有人文社会科学素养、社会责任感,能够在工程实践中理解并遵守石油及其相关

《面向对象程序设计》答案

实验一熟悉VC++IDE开发环境 一、实验目的 1、熟悉VC++6.0集成开发环境,熟练掌握VC++6.0项目工作区、各种编辑器、菜单栏和工具栏的使用。 2、掌握如何编辑、编译、连接和运行一个C++程序。 3、通过运行简单的C++程序,初步了解C++源程序的结构和特点。 二、实验要求 1、分析下列程序运行的结果。 程序一: #include int add(int x,int y=8); void main() { int x=4; cout< void main() { int *p,i; i=5; p=&i; i=*p+10; cout<<"i="< void main(void) { int i=10; int &r=i; r++; cout<<"i="< void func(); int n=1; void main() { static int a; int b= -9; cout <<"a:"<

那件事让我很欣慰

那件事让我如此欣慰 程家集学区中心学校孔德强 有一天突然接到一个从江苏打来的长途电话,“是孔老师吗?”“是我,你是哪一位?”“我终于找到你了,我是你的学生李艳,这几年我托人找你的电话号码没有找到,今年春节我回老家问了李文才找到你的号码,我好想你,孔老师记不记得我了?”“还有点印象,是和李飞一届的吧?”“是的,那时你对我们真好,有一次食堂没有做饭,你让我们到你家吃师母包的笼包子,到现在我还记得呢。孔老师以后有时间我们会去看你的-----再见!”电话挂了,说着讲着应有好几年了,李艳不提我还真有点淡忘了。 那是2005年的事了,我带初一(一)班的班主任,每天上晚自习到八点二十,近处的学生都回家,远处的学生寄宿在学校的寝室里。我班远处的学生有十多个,有一天食堂的老板宋凤祥不知什么原因没有做饭,学生有饭票也吃不上饭。得知这件事后,我就跑回家跟爱人讲了这事,开始爱人还有点迟疑,(三人之家的饭锅咋招待这些孩子,我心里也明白。)但她毕竟是一位贤惠的人,欣然答应了。爱人说:“今天我剁了一盆肉馅,准备包笼包子吃,那我再多和些面,等一会你叫他们都过来。”包子蒸好了,我赶紧来到教室找到住校的十多个孩子,叫他们去我家吃点,不能饿着。开始学生可能感觉不好意思,坐在座位上没有动。当时我以班主任的身份命令他们站起,必须跟我走,学生不敢不听,十多个学生每人吃几个,喝点茶,饿不着,老师心里好受些。大冷的天,吃不着饭老师心里怎能好受?作为教师不是

光教会孩子知识,还要教会孩子做人的道理。教会孩子关心他人,帮助他人优良传统,身教胜于言教,学生能看到平时老师怎么做的,他们也会学着去做。记得有一次下大雨,路较滑,我班谭克虎腿有点残疾,走路不太方便,我刚跑到教室讲起这件事,就有好多学生争着要护送谭克虎回到所住的地方。还有一次,班级座位已排好,从县城转回来一位学生,当时后面还有座位,他就坐在了后边,课后这位学生找到了我说他眼睛有点近视坐在后面看不清。上课时我把张哲(这位新生)眼睛近视的情况还没讲完,坐在的二排的杨鹏站了起来说:“让他坐在我这吧。”说着收拾好书包去了张哲的位置。课后我找到了杨鹏,他说:“坐在哪都一样。”多懂事的孩子呀! 爱的力量是相互的。你付出多少就会得到多少回报,那一届学生还不错,李飞考上了安徽大学,孙朋考上了西安石油大学,王朝贵现在在蒙城及利辛搞电缆线安装等。李艳在电话还讲了不少其他同学的情况,就连她自己现在开了个手机店生意也不错。学生在社会上有所作为,这不就是老师所希望的吗?

西安石油大学就业分析

油气储运专业就业形势 综合西南石油大学和中国石油大学(北京,华东)反馈的信息,结合我们学校的情况简单说说吧, 不对的,不认可的,希望大家提出来。 一 目前各个石油大学( 华东,北京,西南)预计的就业形势都是不甚理想,他们负责就业指导的老师讲解的很透彻,也比较直观。大的形势从2008年开始中石油的3年裁员计划2009,2010,2011这三年裁员8万,也就是直接影响到06 07 08三个年级,至于09级应该还会受到影响。其中一条途径就是通过减少招 聘来实现裁员。 引自中石油内部“未来销售公司要精简人员,届时地区公司撤消。省公司下设立片区(8-15站一个片区),片区设2名领导(副科级,要会开车),省公司机关不超过50人的编制。加油站方面,一旦加油站管理系统铺开使用,计量员只能转岗,核算员由其他岗位兼任。,由中石油集团控股的北京某销售公司,旗下管理1个油库13个加油站,机关工作人员就有80多人,每人年薪都在5万元以上。而在广州中石油与BP的合资公司,这13个加油站最多设1个片区经理、1个副经理,年薪5万-8万元。”---加油站的裁员计划,首先受到冲击的专业就是油气储运,储运是销售的大头,我们学院储运每年有接近15%的同学面向销售系统,占了石油系统就业人数的四分之一多。 从09年的就业情况就反应出来,去年和06级的同学聊,储运从双选开始好像就不太理想,我统计了一下去年我们学校储运去三大石油的大概是60%多,西南石油应该有80%,近4年的数字我们学校储运从07年开始,每年以7%的水准下滑,石油工程也出现下滑约每年4%,趋势相比于储运比较缓慢,但也很明显,东部油田辽河,华北,吉林在产量不能上升的基础上,已解决子弟为优先主导。西部油田和我 们学校的合作有限。 虽然很多学校储运都说自己不太好,对比西南石油和中国石油华东和北京,我觉得他们三个学校还是比较理想的,还有貌似中国石油大学华东和北京的储运每个年级保研,考研的人也不少,他们每年毕业生要比我们少,华东今年可能不到200人,而我们学校接近300,这一点学校应该反思。 我们学校储运面向的单位比较窄,一些运营公司在我们学校基本不投放指标或者很少(ps西气东输,北油调控,中亚管道,川气东送,东南亚管道不投放。3个lng项目部,西部管道和管道公司,工程建设集团,管道局给的也很少,目前管道局应该是只解决子弟了。新上马的大炼化项目也很少管道公司今年有山东地区和兰郑长的投产,可能今年会有一些指标。(ps去年的就业情况我们不少储运的学生去了石化企业,就是某某化工公司,但是储运去化工厂的发展潜力是有限的,甚至是比较局限,但是去炼化版快的也占了我们去三大石油人数的四分之一,我们学校总不能一个石化公司要一,两个储运的,这样把就业解决了,不过对于储运的学生去化工厂长远发展肯定是不如过控和化工),这方面还是需要,学校去努力做工作,10个往年不来的单位,如果都能投放2个指标,就可以解决很多问题。 记得04年家兄进中国石油大学时,据传说是用人单位进宿舍找学生,一个学生能有好几个选择,有的还可以带上女朋友,但是慢慢的形势就变了,要求也越来越高,正是对应了那句话“物极必反,盛极必衰”。现在研究生似乎也不能签一个带一个了。这种变化每年都体现的非常明显。 中石油目前处于缩减招聘出三进一,也就是离开三个人,进去一个人。中石化基本持平,中海油本科需求较少(后面会有西南石油的反馈信息)结合我们学校的情况,可能本科想去海油的难度加大,中石油东部油田招聘数量有限,而西南油气田,塔里木,克拉玛依与我们学校的合作关系并不深入,克拉玛依的子弟不少。这方面比之西南石油大学差距明显,感兴趣的同学可以对比一下西部几个油田在我们学校和西南石油大学招聘数量的对比数据。同时也请想去海油的同学再认真了解一下本科是属于中海油某某

面向对象程序设计C自学考试课程复习题

(07837)《面向对象程序设计C++》复习题 一、单选题 1.对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( D ) A. 公有类型 B. 私有类型 C. 保护类型 D. 友元类型 2.下列关于多态性的描述,错误的是( C ) A. C++语言的多态性分为编译时的多态性和运行时的多态性 B. 编译时的多态性可通过函数重载实现 C. 运行时的多态性可通过模板和虚函数实现 D. 实现运行时多态性的机制称为动态绑定 3.在C++语言中,数据封装要解决的问题是( D ) A. 数据的规范化 B. 便于数据转换 C. 避免数据丢失 D. 防止不同模块之间数据的非法访问 4.使用private修饰的成员变量,以下说法正确的是( A ) A. 只能由本类中的函数使用,不能被外面的程序所访问。 B. 可以由本类中的函数使用,也可以被外面的程序所访问。 C. 只能由本类和派生类中的函数使用。 D. 可以在主函数中使用。 5.对类的构造函数和析构函数描述正确的是( A ) A. 构造函数可以重载,析构函数不能重载 B. 构造函数不能重载,析构函数可以重载 C. 构造函数可以重载,析构函数也可以重载 D. 构造函数不能重载,析构函数也不能重载 6.下面对静态数据成员的描述中,正确的是( A ) A. 静态数据成员是类的所有对象共享的数据 B. 类的每个对象都有自己的静态数据成员 C. 类的不同对象有不同的静态数据成员值 D. 静态数据成员不能通过类的对象调用 7.在VC++语言类体系中,不能被派生类继承的有( B ) A. 转换函数 B. 构造函数 C. 虚函数 D. 静态成员函数 8.下面关于句柄正确的说法是( A ) A. 句柄是一个标识Windows资源和设备等对象的变量。 B. 句柄是用户程序自定义的数据类型。 C. 用户程序使用句柄时不需要定义。 D. 句柄仅仅是一个抽象的概念,程序中不能使用句柄。 9.下面关于动态链接库正确的说法是( B ) A. 动态链接库提供的函数,在编译阶段能够连接到应用程序中。 B. 动态链接库提供的函数,在运行阶段能够连接到应用程序中。 C. 动态链接库本身不能单独设计、编译和调试。 D. 动态链接库的使用使得程序缺乏灵活性。 10.下面关于MFC应用程序中InitInstance函数正确的说法是( D ) A. 该函数由用户定义。

面向对象程序设计(答案)

学号:姓名: 第三章面向对象程序设计作业 一、判断题 1、一个Java源程序可有多个类,但只仅有一个public类,而且程序名与public类名相同。对 2、如果类A和类B在同一个包中,则除了私有成员外,类A可以访问类B中所有的成员。对 3、接口中的成员变量全部为常量,方法为抽象方法。对 4、抽象类可以有构造方法,可以直接实例化。错 5、对static方法的调用可以不需要类实例。对 6、包含抽象方法的类一定是抽象类。对 7、方法中的形参可以和方法所属类的属性同名。对 8、接口无构造器,不能有实例,也不能定义常量。错 9、类的实例对象的生命周括实例对象的创建、使用、废弃、垃圾的回收。对 10、Java应用程序的入口main方法只有一种定义法。对 二、选择题 1、下列答案正确的是(A ) A) 在同一个Java源文件中可以包含多个类,只能有一个被声明为public B) 在同一个Java源文件中只能包含一个类,并被声明为public C) 在同一个Java源文件中可以包含多个类,都可以被声明为public D) 在同一个Java源文件中可以包含多个类,只能有一个被声明为default 2、Java实现动态多态性是通过( B )实现的。 A) 重载B) 覆盖 C) 接口D) 抽象类 3、下列哪一个是正确的方法重载描述( A ) A) 重载方法的参数类型必须不同 B) 重载方法的参数名称必须不同 C) 返回值类型必须不同 D) 修饰词必须不同 4、final关键字不可以用来修饰( D ) A) 类B) 成员方法 C) 域D) 接口 5、接口的所有成员方法都具有( B )属性 A) private, final B) public, abstract C) static, protected D) static 6、Java的封装性是通过(A )实现的 A) 访问控制B) 设计内部类 C) 静态域和静态方法D) 包 7、下列接口或类不属于.*包的是( D ) A) Collection B)Vector C) Map D) Integer 8、下述哪一组方法,是一个类中方法重载的正确写法( A ) A) int addValue( int a, int b ){return a+b;}

西安石油大学文件

西安石油大学文件 西石大〔2004〕114号 西安石油大学关于做好 2004年新生入学工作的安排意见 各院、系、部、办、处、馆、中心,工会,团委,后勤服务集团:今年我校入学新生近3200人,迎新工作任务很重。安全、顺利地迎接新生入校学习、生活,是对各部门工作质量和管理水平的一次检验。搞好军训和入学教育工作,对于稳定教学秩序,提高教育质量,培养良好校风和学风,起着至关重要的基础作用。全校上下必须高度重视,加强领导,齐心协力做好工作。为确保今年迎新工作顺利进行,现将有关事项安排如下: 一、组织机构 学校决定成立新生入学工作领导小组,领导小组由以下人员组成:组长:屈展

副组长:王建利 成员:王长才曹庆年高惠临武世铎刘予东肖文俊李方尤坤生李广富夏伟 汉泽西覃彪雷东生张木吴伟 康印安苟金虎侯琦肖忠祥邹红育 袁玎蔡建文贾振安朱银全郭岗彦 张荣军 新生入学工作由领导小组统筹安排,并设立协调办公室,负责整个迎新组织督促检查工作。同时设立接待组、入学教育组、宣传组、咨询组、场地准备组和安全保卫组等办事机构,具体负责有关工作。 1、协调办公室 组长:王长才 成员:刘予东武世铎曹庆年张华强夏伟 2、接待组 组长:张华强 副组长:何铖 成员:雷东生鱼孝民种恒利高建磊王正民各院系派2—3人参加 3、军训及入学教育组 组长:刘予东 副组长:夏伟雷西合 成员:廖敏徐学利李富荣

4、宣传组 组长:武世铎 副组长:覃彪 成员:刘谋芳阮秀琴李国武贾莉娜 5、咨询组 组长:刘予东 副组长:王宏卫闫大维 成员:各院、系党总支副书记 6、场地准备组 组长:尤坤生 副组长:肖文俊李方李广富 7、安全保卫组 组长:夏伟 副组长:楚海泉 成员:由保卫处自定 二、工作任务与分工 1、接待组负责新生接站和安排住宿工作。9月6日、7日在火车站广场设立接待站(9月5日14:00前到位,7日20:00撤离)。接待组要组织好车辆,保证新生及家长安全、顺利抵达学校。 迎新期间,各单位联合办公(办公地点设在南区综合楼北面广场),统一办理新生注册、收取学杂费等入学手续。各单位提前做好准备工作,张贴有关通知。新生体检在校医院进行,时间为9月5日—8日,

《C面向对象程序设计》谭浩强版复习总结

第一章C++ 基础 endl 换行并刷新输出流 setw(n) 设置字段位数为n hex,oct,dec 十六进制,八进制,十进制表示 setfill 定义填充字符 setprecision 定义浮点数的精度 left,right 左对齐,右对齐 showpoint 强制显示小数点以及全部尾部0 C++通过给常量命名的方式定义常量: const<数据类型名><常量名>=<表达式> 用const定义的标识符常量时,一定要对其初始化。在说明时进行初始化是对这种常量置值的唯一方法,不能用赋值运算符对这种常量进行赋值。 函数声明的一般形式为 函数类型函数名(参数表) 函数模板的定义 template 函数定义 例子:template T max(T a,T b){ return(a>b)? a:b; } 定义函数模板时可以使用多个类型参数,每个类型参数前面只需加上关键字typename或class,用逗号分隔: template

例子:template T1 max(T1 a,T2 b){ return (a>b) ? a : (T1)b; } 有默认参数的函数:实参与形参的结合是从左至右进行的,因此指定默认值的参数必须放在形参列表中的最右端 引用 定义对变量起另外一个名字(别名alias),这个名字称为该变量的引用。 <类型> &<引用变量名> = <原变量名>; 其中原变量名必须是一个已定义过的变量。如: int max ; int &refmax=max; refmax并没有重新在内存中开辟单元,只是引用max的单元。max与refmax在内存中占用同一地址,即同一地址两个名字。 对引用类型的变量,说明以下几点: 1、引用在定义的时候要初始化 2、对引用的操作就是对被引用的变量的操作。 3、引用类型变量的初始化值不能是一个常数。 4、一旦引用被声明,它就不能再指向其它的变量。 5、对引用的初始化,可以用一个变量名,也可以用另一个引用。 6、引用同变量一样有地址,可以对其地址进行操作,即将其地址赋给一指针。 当&m的前面有类型符时(如int &m),它必然是对引用的声明;如果前面无类型符(如cout<<&m),则是取变量的地址。 7、对常量(用const声明)的引用使用如下方式: int i=5; const int &a=i;

c+面向对象程序设计试题和答案题目

系名___ ___ ___ ___ 班级___ ___ ___ ___姓名___ ___ ___ ___学号___ ___ ___ ___ 密 封 线 内 不 答 题 一、填空题(每空1分,共14分) 1、观看以下程序: class point{ public: void show() {cout<<”point”<

面向对象程序设计课后答案(完整版)

第二章2-4 #include using namespace std; Add(int a,int b); int main() { int x,y,sum; cout<<"please input x and y:"; cin>>x>>y; sum = add(x,y); cout < using namespace std; int main() {

int *p,*init; int countp=0; int countn=0; p = new int[20]; init = p; for(int i=0;i<20;i++) { cin>>*p; p++; } p = p-20; for( i=0;i<20;i++) { if(*p>0) countp++; if(*p<0) countn++; cout<<*p<<" "; p++; } cout<<"正数有:"< //#include using namespace std; void checkagescore(string name,int age) { if (name == "exit") throw name; if(age<0||age>50) throw age;

西安石油大学石油工业概论试题库

第一章、绪论 一、基本概念 1.石油 答:石油是储藏在地下岩石空隙内的不可再生的天然矿产资源,主要是以气相、液相烃类为主的、并含有少量非烃类物质的混合物,具有可燃性。(P1 ) 2.石油的基本性质(主要化学成分、常温常压下状态、密度、粘度、凝固点、闪点、燃点、自然点、溶解性、原油中的有害物质) 3.天然气(成分、比重) 答:主要以气体形式存在的石油叫天然气。天然气的主要化学成分是气态烃,以甲烷为主,其中还有少量的C2~C5烷烃成分及非烃气体。 4.天然气水合物 答:甲烷与水在低温和高压环境下相互作用可形成一种冰样的水合物,称为天然气水合物,亦称可燃冰。 5.液化天然气(LNG) 6.天然气分类(气藏气、油藏气、凝析气藏气、干气、湿气、酸气、净气) 按照矿藏特点可分为气藏气、油藏气、凝析气藏气。按烃类的组成可分为干气、湿气、酸气、净气 7.石油工业 答:通常说的石油工业指的是从事石油和天然气的勘探、开发、储存和运输的生产部门。(P5 ) 8.对外依存度 对外依存度是各国广泛采用的一个衡量一国经济对国外依赖程度的指标 9.储采比 储采比又称回采率或回采比。是指年末剩余储量除以当年产量得出剩余储量按当前生产水平尚可开采的年数 10.油气当量 二、问答题 1.石油工业的行业特点。 高风险、高投入、周期长、技术密集的行业。 2. 请画出石油行业产业链结构图。P4 3. 世界石油工业的迅速兴起是在哪个国家,第一口现代石油井的名称是什么? 世界石油工业的迅速兴起是美国. 第一口现代石油井的名称是德雷克井 4. 一般认为中国石油工业的开端是指的那个油田?产量最高的油田?行业精神代表和人物? 答:一般认为中国的石油工业应以1939 年甘肃玉门老君庙油田的发现和开发作为开端 大庆精神铁人精神王进喜 5. 中国原油资源集中分布在哪八大盆地? 渤海湾、松辽、塔里木、鄂尔多斯、准噶尔、珠江口、柴达木和东海陆架八大盆地 6. 中国天然气资源集中分布在哪九大盆地? 塔里木、四川、鄂尔多斯、东海陆架、柴达木、松辽、莺歌海、琼东南和渤海湾九大盆地7. 中国能源发展的基本原则有哪些? 能源安全原则、能源可持续利用原则、能源与环保协调原则。 8. 中国可行的能源供应路线是什么?阐述其具体原因。 固体燃料----- 多元化能源---- 可再生能源为主新型能源供应路线

C面向对象程序设计教程第版陈维兴林小茶课后习题答案及解析

C++面向对象程序设计教程课后题答案 1.1 什么是面向对象程序设计? 面向对象程序设计是一种新的程序设计范型.这种范型的主要特征是: 程序=对象+消息 面向对象程序的基本元素是对象。 主要结构特点是: 第一,程序一般由类的定义和类的使用两部分组成; 第二,程序中的一切操作都是通过向对象发送消息来实现的。 1.2 什么是对象?什么是类?对象与类之间的关系是什么? 对象是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。 类就是具有相同的数据和相同的操作的一组对象的集合,也就是说,类是对具有相同数据结构和相同操作的一类对象的描述。 类和对象之间的关系是抽象和具体的关系。类是多个对象进行综合抽象的结果,一个对象是类的一个实例。 1.3 现实世界中的对象有哪些特征?请举例说明。 现实世界中的对象具有以下特征: 1) 每一个对象必须有一个名字以区别于其他对象; 2) 用属性来描述对象的某些特征; 3) 有一组操作,每组操作决定对象的一种行为;

4) 对象的行为可以分为两类:一类是作用于自身的行为,另一类是作用于其他对象的行为。 例如一个教师是一个对象。每个教师对象有自己的名字来和别的教师区别。教师具有编号,姓名,年龄,职称,专业等属性。教师拥有走路,吃饭,授课等行为操作。走路,吃饭是作用于自身的行为,授课是作用于其他对象的行为。 1.4 什么是消息?消息具有什么性质? 一个对象向另一个对象发出的请求成为“消息”。 消息具有以下3个性质: 1) 同一个对象可以接收不同形式的多个消息,做出不同的相应; 2) 相同形式的消息可以传递给不同的对象,所做出的响应可以是不同的; 3) 对消息的响应并不是必须的,对象可以响应消息,也可以不响应。 1.5 什么是抽象和封装?请举例说明。 抽象是将有关事物的共性归纳、集中的过程。 例如:把所有具有大学生学籍的人归为一类,成为“大学生”,这就是一个抽象。 封装是指把数据和实现操作的代码集中起来放在对象内部,并尽可能隐藏对象的内部细节。 例如:每一台洗衣机都有出厂日期、机器编号等属性,也有启动、暂停、选择等操作。人们在使用洗衣机的时候只需要按下对应的按钮,而不用关心具体的内部实现。这就是封装。 1.6 什么是继承?请举例说明。 继承就是允许派生类使用基类的数据和操作,同时,派生类还可以增加新的操作和数据。

面向对象程序设计笔记

undeclared identifier “未声明的标识符” (1) 十进制整数:在一个整型常量后面加一个字母 l 或 L,则认为是 long int 型常量? (2) 八进制整数?在常数的开头加一个数字 0,就表示这是以八进制数形 式表示的常数? (3)十六进制整数?在常数的开头加一个数字0和一个英文字母X(或x), 就表示这是以十六进制数形式表示的常数? 2. 浮点数的表示方法 如果在实数的数字之后加字母 F 或f,表示此数为单精度浮点数,如1234F,-43f,占 4 个字节?如果加字母 L 或 l,表示此数为长双精度数(long double), 在Visual C++ 6.0 中占 8 个字节. (2) 指数形式(即浮点形式):用字母 e 表示其后的数是以 10 为底的幂,如 e12 表示 1012? 1.普通的字符常量:用单撇号括起来的一个字符就是字符型常量如′a′,′ #′,′%′,′D′都是合法的字符常量,在内存中占一个字节?“cout<<′\n′; ”将输出一个换行,其作用与“cout<

西安石油大学石油工业概论

西安石油大学石油工业概论 第一部分(包括绪论、地质、勘探章节) 一、名词解释 1.石油 答:石油是储藏在地下岩石空隙内的不可再生的天然矿产资源,主要是以气相、液相烃类为主的、并含有少量非烃类物质的混合物,具有可燃性。(P1) 2.天然气 答:主要以气体形式存在的石油叫天然气。(P1) 3.石油的凝固点 答:原油在温度降低到某点时,由于油中溶解的蜡结晶析出,原油粘度增大,失去了流动能力,这时的温度叫凝固点或凝点。(P2) 4.天然气水合物 答:甲烷与水在低温和高压环境下相互作用可形成一种冰样的水合物,称为天然气水合物,亦称可燃冰。(P4) 5.石油工业 答:通常说的石油工业指的是从事石油和天然气的勘探、开发、储存和运输的生产部门。(P5) 6.岩浆岩 答:岩浆岩是由岩浆冷凝而成的岩石。(P21) 7.变质岩 答:变质岩是原来的岩石在外界条件(温度、压力等)作用下变质而形成的新岩石。(P21)8.沉积岩 答:沉积岩就是原来的母岩(岩浆岩、变质岩和沉积岩)遭受风化剥蚀,经搬运、沉积和成岩作用而形成的岩石。(P21) 9.生、储、盖组合 答:是指生油岩(烃源岩)、储集岩和盖层在空间上的搭配形式。(P34) 10.有效圈闭 答:在油气运移前形成、并处在油气运移通道上的圈闭,叫油气的有效圈闭。(P37)11.石油勘探 答:就是为了寻找和查明油气资源,而利用各种手段了解地下的地质状况,认识生油、储油、油气运移、聚集、保存等条件,综合评价含油气远景,确定油气聚集的有利地区,找到储集油气的圈闭,并探明油气田面积,搞清油气层情况和产出能力的过程。(P41) 12.地质储量 答:是指在钻探发现油气后,根据已发现油气藏(田)的资料估算求得的已发现油气藏(田)中原始储藏的油气总量,并被换算到地面标准条件(20℃,0.101兆帕)下的数量。(P43)13.探明储量 答:是指在油气藏评价阶段,经评估钻探证实油气藏(田)可提供开采并能获得经济效益后,估算求得的、确定性很大的地质储量,其相对误差不超过2%。(P43) 14.控制储量 答:是指在圈闭预探阶段预探井获得工业油(气)流,并经过初步钻探认为可提供开采后,估算求得的、确定性较大的的地质储量,其相对误差不超过50%。(P43) 15.预测储量

相关主题
文本预览
相关文档 最新文档