文档视界 最新最全的文档下载
当前位置:文档视界 › Windows程序设计实验指导书(完整)

Windows程序设计实验指导书(完整)

Windows程序设计实验指导书(完整)
Windows程序设计实验指导书(完整)

《Windows程序设计》实验指导书

2009-3-1

目录

实验一:VC++6.0开发环境熟悉 (1)

实验二:API对话框应用程序设计 (3)

实验三:API菜单使用 (6)

实验四、API绘图程序 (12)

实验五、MFC程序设计 (17)

实验六:MFC对话框程序设计:计算器 (19)

实验七:MFC文档(SDI)应用:绘图程序 (21)

综合性设计实验 (22)

实验一:VC++6.0开发环境熟悉

一、实验目的

熟悉Visual C++ 6.0开发环境,掌握VC6中建立、维护、运行工程项目的方法,掌握VC6中调试的方法。

二、实验内容

熟悉Visual C++ 6.0开发环境,如AppWizard、ClassWizard、工具栏、编译、运行普通的C++应用程序等,并能编写一个简单C++应用程序。熟悉调试过程。

三、实验要求

1、按下图建立一个C++程序,实现菜单选择,可以实现两个整数的加减。

要求:

[1]、建立工程;

[2]、程序调试通过;

[3]、菜单和功能用一个类来实现。

2、制作一个简单的公司职员的管理程序,这个程序要求涉及到类、结构、函数的基本使用。同时,这个程序涉及到了对Visual Stuido集成开发环境的使用,有关这方面的详细内容,请参阅本书的第二单元“Visual C++编程基础”。

[1]、新建项目。

使用Visual C++的应用程序向导生成一个控制台应用程序Demo。项目类型选择“Win32Console Application”,在向导的第一步中将程序类型设置成“A"Hello, World!" application”。

[2]、添加职员信息类。

在集成开发环境的中选择Insert|New Class菜单进入添加类的对话框,将新增的类名设置成workmate。之后,分别修改workmate类的定义及实现文件。

[3]、使用职员信息类。

四、思考题

1、如何实现两个复数的加减?

附:一些小窍门

1) 有时候,你可能在编译的时候,计算机突然非法关机了(可能某人不小心碰了电源或你的内存不稳定等原因)。当你重启机器后打开刚才的项目,重新进行编译,发现VC会崩掉。你或许以为你的VC编译器坏了,其实不然(你试试编译其它项目,还是好的!),你只要将项目的.ncb、.opt、.aps、.clw文件以及Debug、Release目录下的所有文件都删掉,然后重新编译就行了。

2) 如果你想与别人共享你的源代码项目,但是把整个项目做拷贝又太大。你完全可以删掉以下文件:.dsw、.ncb、.opt、.aps、.clw、. plg文件以及Debug、Release目录下的所有文件。

3) 当你的Workspace中包含多个Project的时候,你可能不能直观地、一眼看出来哪个是当前项目。可以如下设置:Tools->Options->Format,然后在Category中选择Workspace window,改变其默认的字体(比如设成Fixedsys)就行了。

4) 如何给已有的Project改名字?将该Project关掉。然后以文本格式打开.dsp文件,替换原来的Project名字即可。

5) VC6对类成员的智能提示功能很有用,但有时候会失灵。你可以先关掉项目,将.clw和.ncb删掉,然后重新打开项目,点击菜单项View->ClassWizard,在弹出的对话框中按一下“Add All”按钮;重新Rebuild All。应该可以解决问题。

实验二:API对话框应用程序设计

一、实验目的

掌握VC6中建立API程序的方法。

二、实验内容

练习手工生成API Windows应用程序框架,以及利用VC的应用程序生成模版AppWizard来生成API程序框架。

三、实验要求

按下图建立一个API程序。

要求:

[1]、手工生成应用程序;

[2]、使用AppWizard自动生成。

四、实验步骤

(一)使用AppWizard自动生成:

1.在“File”菜单中选择“New”,将新建的类型设置成“Projects”。同时将项目类型设置成“Win32Application”。

2.在应用程序向导的第二步中选择“A typical "Hello World!" application。”

3.使用F5快捷键编译程序。

经过以上三个最简单的步骤,一个“Hello,World”程序便制作完毕。此时可以查看在该项目所在的文件夹下,生成了哪些文件,并应了解这些文件的具体用法(二)手工生成应用程序:

1.在“File”菜单中选择“New”,将新建的类型设置成“Projects”。同时将项目类型设置成“Win32Application”。

2.在应用程序向导的第二步中选择“Empty application。”

3.在“New”选择“C++Source”,按照课本上实例3-1的内容输入程序,。

4.使用F5快捷键编译程序

经过以上三个最简单的步骤,一个“Hello,World”程序便制作完毕。此时可以查看在该项目所在的文件夹下,生成了哪些文件,并应了解这些文件的具体用法

参考代码:

#include

#include

LRESULT CALLBACK WinSunProc(

HWND hwnd, // handle to window

UINT uMsg, // message identifier

WPARAM wParam, // first message parameter

LPARAM lParam // second message parameter

);

int WINAPI WinMain(

HINSTANCE hInstance, // handle to current instance

HINSTANCE hPrevInstance, // handle to previous instance

LPSTR lpCmdLine, // command line

int nCmdShow // show state

)

{ WNDCLASS wndcls;

wndcls.cbClsExtra=0;

wndcls.cbWndExtra=0;

wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);

wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);

wndcls.hIcon=LoadIcon(NULL,IDI_ERROR);

wndcls.hInstance=hInstance;

wndcls.lpfnWndProc=WinSunProc;

wndcls.lpszClassName="Computer2009";

wndcls.lpszMenuName=NULL;

wndcls.style=CS_HREDRAW | CS_VREDRAW;

RegisterClass(&wndcls);

HWND hwnd;

hwnd=CreateWindow("Computer2009","桂林电子科技大学应用科技学院",WS_OVERLAPPEDWINDOW,0,0,600,400,NULL,NULL,hInstance,NULL);

ShowWindow(hwnd,SW_SHOWNORMAL);

UpdateWindow(hwnd);

MSG msg;

while(GetMessage(&msg,NULL,0,0))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return 0;

}

LRESULT CALLBACK WinSunProc(

HWND hwnd, // handle to window

UINT uMsg, // message identifier

WPARAM wParam, // first message parameter

LPARAM lParam // second message parameter

)

{ switch(uMsg)

{

case WM_CHAR:

char szChar[20];

sprintf(szChar,"char is %d",wParam);

MessageBox(hwnd,szChar,"weixin",0);

break;

case WM_LBUTTONDOWN:

MessageBox(hwnd,"mouse clicked","weixin",0);

HDC hdc;

hdc=GetDC(hwnd);

TextOut(hdc,0,50,"Widows程序设计实验",strlen("Widows程序设计实验"));

ReleaseDC(hwnd,hdc);

break;

case WM_PAINT:

HDC hDC;

PAINTSTRUCT ps;

hDC=BeginPaint(hwnd,&ps);

TextOut(hDC,0,0," 程序设计实验",strlen("程序设计实验"));

EndPaint(hwnd,&ps);

break;

case WM_CLOSE:

if(IDYES==MessageBox(hwnd,"是否真的结束?","Compuer",MB_YESNO))

{

DestroyWindow(hwnd);

}

break;

case WM_DESTROY:

PostQuitMessage(0);

break;

default:

return DefWindowProc(hwnd,uMsg,wParam,lParam);

}

return 0;

}

}

五、思考题

1、Window程序和控制台程序有什么区别?

2、如何添加事件处理?

实验三:API菜单使用

一、实验目的

掌握VC6中菜单的创建和使用。

二、实验内容

菜单的创建有三种方法:1,在WINDOWCLASS中指定菜单资源的标识符;2,在CreateWindowEx函数参数中指定菜单句柄;3,先用LoadMenu函数载入菜单资源,再用SetMenu函数把菜单加载到应用程序的菜单栏。

菜单的操作包含:向已存在菜单添加新的菜单项,删除菜单中的某一项,使菜单项呈现被选中状态,使菜单项无效,创建浮动式菜单,向Windows系统菜单中添加,删除选项等等。

三、实验要求

按下图建立一个创建菜单应用的程序框架。

要求:

1、创建弹出式菜单

2、显示相关信息

3、向已有菜单中插入新项

4、删除菜单中的选项

5、设置菜单项为选中标志

6、设置菜单项为单选标志

7、向系统菜单中插入新项

四、实验步骤

[1]、新建项目。

使用Visual C++的应用程序向导生成一个应用程序MenuDemo。项目类型选择“Win32Application”,在向导的第一步中将程序类型设置成“A simple Win32

application”。

[2]、编写实现菜单使用的代码。

参考代码:

#define WIN32_LEAN_AND_MEAN

#include "stdafx.h"

#include "resource.h"

#define ID_NEWITEM 1013 //定义新菜单项的标识符

#define ID_NEWSYSITEM 60441 //定义新系统菜单项标识符

LRESULT CALLBACK MainProc(HWND,UINT,WPARAM,LPARAM);

BOOL WINAPI DoDispPopupMenu(HWND,int,int); //创建弹出式菜单

VOID WINAPI DoDispMessage(int); //显示相关信息

VOID WINAPI DoInsertMenuItem(void); //向已有菜单中插入新项

VOID WINAPI DoDeleteMenuItem(void); //删除菜单中的选项

VOID WINAPI DoCheckMenuItem(void); //设置菜单项为选中标志

VOID WINAPI DoCheckRadio(void); //设置菜单项为单选标志

VOID WINAPI DoInsertSysMenu(void); //向系统菜单中插入新项

char szAppName[]="MenuDemo";

HINSTANCE hIns;

HWND hMainWnd;

BOOL isInsert; //插入菜单标志

BOOL isCheck; //选中标志

int idRadio=2; //单选标志

int APIENTRY WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow)

{MSG msg;

HWND hWnd;

WNDCLASSEX wc;

wc.cbClsExtra =0;

wc.cbSize =sizeof(WNDCLASSEX);

wc.cbWndExtra =0;

wc.hbrBackground =(HBRUSH)GetStockObject(WHITE_BRUSH);

wc.hCursor =LoadCursor(NULL,IDC_ARROW);

wc.hIcon =LoadIcon(NULL,IDI_APPLICATION);

wc.hIconSm =0;

wc.hInstance =hInstance;

wc.lpfnWndProc =(WNDPROC)MainProc;

wc.lpszClassName =szAppName;

wc.lpszMenuName =MAKEINTRESOURCE(IDR_MENU1);

wc.style =CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS | CS_OWNDC;

ReGISterClassEx(&wc);

hWnd=CreateWindowEx(0,szAppName,szAppName,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,

NULL,NULL,hInstance,NULL);

hMainWnd=hWnd;

hIns=hInstance;

DoInsertSysMenu();//在此处向系统菜单中插入菜单项

ShowWindow(hWnd,nCmdShow);

UpdateWindow(hWnd);

while(GetMessage(&msg,NULL,0,0))

{ TranslateMessage(&msg);

DispatchMessage(&msg);

} return msg.wParam;

}

LRESULT CALLBACK MainProc(HWND hWnd,UINT message,

WPARAM wParam,LPARAM lParam)

{HDC hdc;

PAINTSTRUCT ps;

switch(message)

{case WM_CREATE:

return 0;

case WM_PAINT:

hdc=BeginPaint(hWnd,&ps);

EndPaint(hWnd,&ps); //do drawing

return 0;

case WM_RBUTTONDOWN: //鼠标在窗口中右键被按下时,弹出浮动式菜单if(DoDispPopupMenu(hWnd,LOWORD(lParam),HIWORD(lParam)))

return 0; //函数调用成功

else

break; //函数调用失败

case WM_COMMAND:

switch(LOWORD(wParam))

{ case ID_INSERT:

if(isInsert==0)

{ DoInsertMenuItem();//插入新的菜单项

DoDispMessage(4); //显示相关信息

}break;

case ID_NEWITEM:

DoDispMessage(3); break;

case ID_DELETE:

if(isInsert!=0)

{ DoDeleteMenuItem();//删除菜单项

DoDispMessage(5);

}break;

case IDEXIT:

PostQuitMessage(0); break;

case ID_CHECK: //在菜单选项前打钩

DoCheckMenuItem(); break;

case ID_RADIO1: //在菜单选项前做一圆形标志,表明此项被选中,清除旧的标志idRadio=2;

DoCheckRadio(); break;

case ID_RADIO2: //同上

idRadio=3;

DoCheckRadio(); break;

case ID_RADIO3: //同上

idRadio=4;

DoCheckRadio(); break;

case ID_FLOAT1: //浮动菜单的选项被选中时的处理

DoDispMessage(0); break;

case ID_FLOAT2: //同上

DoDispMessage(1); break;

case ID_FLOAT3: //同上

DoDispMessage(2); break;

}

return 0;

case WM_CLOSE:

PostQuitMessage(0);

return 0;

}

return DefWindowProc(hWnd,message,wParam,lParam);

}

VOID WINAPI DoDispMessage(int id)

{ HDC hdc; //在菜单事件发生时,输出相应的字符串

char *mess[]={"Command Floating Menuitem 1 ",

"Command Floating Menuitem 2 ",

"Command Floating Menuitem 3 ",

"Command New Menu Item ",

"New Item Have Been Inserted ",

"New Item Have Been Deleted "};

InvalidateRect(hMainWnd,NULL,FALSE);

hdc=GetDC(hMainWnd);

TextOut(hdc,0,0,mess[id],strlen(mess[id]));

ReleaseDC(hMainWnd,hdc);

}

VOID WINAPI DoInsertMenuItem()

{ HMENU hMenu; / /插入菜单项

HMENU hPopupMenu;

MENUITEMINFO info;

info.cbSize=sizeof(MENUITEMINFO); //每一个新插入的菜单项都必须填写MENUITEMINFO结构

info.fMask =MFT_STRING | MIIM_DATA | MIIM_ID | MIIM_TYPE;

info.fType =MFT_STRING;

info.fState =0;

info.wID =ID_NEWITEM;

info.hSubMenu =NULL;

info.hbmpChecked =NULL;

info.hbmpUnchecked =NULL;

info.dwItemData =ID_NEWITEM;

info.dwTypeData ="New Item";

https://www.docsj.com/doc/f313926008.html,h =8;

hMenu=GetMenu(hMainWnd); //获得已存在菜单的句柄

hPopupMenu=GetSubMenu(hMenu,0); //获得子菜单的句柄

InsertMenuItem(hPopupMenu,1,TRUE,&info); //插入菜单项

isInsert=1; //置插入标志为1

}

VOID WINAPI DoDeleteMenuItem()

{ HMENU hMenu; //删除菜单项

HMENU hPopupMenu;

hMenu=GetMenu(hMainWnd);

hPopupMenu=GetSubMenu(hMenu,0);

RemoveMenu(hPopupMenu,ID_NEWITEM,MF_BYCOMMAND);

isInsert=0;

}

VOID WINAPI DoCheckMenuItem()

{//此函数先判断菜单项是否被打钩,若没有,则做打钩标记,若已有,则删除打钩标记 HMENU hMenu;

HMENU hPopupMenu;

hMenu=GetMenu(hMainWnd);

hPopupMenu=GetSubMenu(hMenu,1);

if(isCheck)

{ CheckMenuItem(hPopupMenu,0,MF_BYPOSITION | MF_UNCHECKED);

isCheck=0;

}else

{ CheckMenuItem(hPopupMenu,0,MF_BYPOSITION | MF_CHECKED);

isCheck=1;

}}

VOID WINAPI DoCheckRadio()

{HMENU hMenu;

HMENU hPopupMenu;

hMenu=GetMenu(hMainWnd);

hPopupMenu=GetSubMenu(hMenu,1);

CheckMenuRadioItem(hPopupMenu,2,4,idRadio,MF_BYPOSITION);

}

VOID WINAPI DoInsertSysMenu()

{ HMENU hSysMenu; //在系统菜单中插入菜单项

MENUITEMINFO info;

hSysMenu=GetSystemMenu(hMainWnd,FALSE); //获得系统菜单的句柄

info.cbSize =sizeof(MENUITEMINFO);

info.fMask =MFT_STRING | MIIM_DATA | MIIM_ID | MIIM_TYPE;

info.fType =MFT_STRING;

info.fState =MFS_DEFAULT;

info.wID =ID_NEWSYSITEM;

info.hSubMenu =NULL;

info.hbmpChecked =NULL;

info.hbmpUnchecked =NULL;

info.dwItemData =15;

info.dwTypeData ="New system Item";

https://www.docsj.com/doc/f313926008.html,h =15;

InsertMenuItem(hSysMenu,6,TRUE,&info);

}

资源文件中有以下定义

IDR_MENU1 MENU DISCARDABLE

BEGIN

POPUP "Menu&1"

BEGIN

MENUITEM "InsertItem\t[I]", ID_INSERT

MENUITEM "DeleteItem\t[D]", ID_DELETE

MENUITEM "&Exit\tAlt+F4", IDEXIT

END

POPUP "Menu&2"

BEGIN

MENUITEM "CheckText", ID_CHECK

MENUITEM SEPARATOR

MENUITEM "Radio1", ID_RADIO1

MENUITEM "Radio2", ID_RADIO2

MENUITEM "Radio3", ID_RADIO3

MENUITEM SEPARATOR

MENUITEM "About", ID_ABOUT END

END

IDR_MENU2 MENU DISCARDABLE

BEGIN

POPUP "Test"

BEGIN

MENUITEM "Floating Menu Item1", ID_FLOAT1, MENUBREAK

MENUITEM "Floating Menu Item2", ID_FLOAT2

MENUITEM "Floating Menu Item3", ID_FLOAT3 END

END

实验四、API绘图程序

一、实验目的

掌握使用API进行画图的程序设计。

二、实验内容

利用API进行画图的程序设计,创建程序框架。在消息处理函数中定义指向设备描述表的句柄,能够编写程序完成各种图形绘制的方法。

三、实验要求

完成绘图程序

四、实验步骤(参考代码)

[1]、新建项目。

使用Visual C++的应用程序向导生成一个应用程序PHOTOMenuDemo。

项目类型选择“Win32Application”,在向导的第一步中将程序类型设置成“A Empty Project

[2]、程序代码:

#include

#include

#include

long WINAPI WndProc(HWND hWnd,,UINT iMessage, UINT wParam, LONG lParam ); BOOL InitWindows( HINSTANCE hInstance, int nCmdShow );

BOOL InitWindowsClass(HINSTANCE hInstance);

HWND hWndMain;

int WINAPI WinMain( HINSTANCE hInstance, //当前实例句柄

HINSTANCE hPrevInstance, //前一个实例句柄

LPSTR lpCmdLine, //命令行字符

int nCmdShow ) //窗口显示方式

{

MSG msg;

if(!InitWindowsClass(hInstance)) //创建主窗口

return FALSE;

if ( !InitWindows( hInstance, nCmdShow ) )

return FALSE;:

while (GetMessage(&msg, 0, 0, 0)) //进入消息循环,从该应用程序的消息队列中检取消息,送到消息处理过程,当检取到WM_QUIT消息时,退出消息循环。

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

return msg.wParam; //程序结束

}

long WINAPI WndProc( /消息处理函数

HWND hWnd,

UINT iMessage,

UINT wParam,

LONG lParam

)

{ HDC hDC;//定义指向设备描述表的句柄

HBRUSH hBrush;

HPEN hPen;

PAINTSTRUCT PtStr;//定义指向包含指向绘图信息的结构体

switch(iMessage)

{ case WM_PAINT:

hDC=BeginPaint(hWnd,&PtStr);

SetMapMode(hDC,MM_ANISOTROPIC);//设置影射模式此处要注意

hPen=(HPEN)GetStockObject(BLACK_PEN);

hBrush=(HBRUSH)GetStockObject(DKGRAY_BRUSH);

SelectObject(hDC,hBrush);

SelectObject(hDC,hPen);

RoundRect(hDC,50,120,100,200,15,15);

hBrush=(HBRUSH)GetStockObject(LTGRAY_BRUSH);

SelectObject(hDC,hBrush);

Ellipse(hDC,150,50,200,150);//////////t椭圆/////////

EndPaint(hWnd,&PtStr);//////////结束绘图///////////

return 0;

case WM_DESTROY:

PostQuitMessage(0);

return 0;

default:

return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

}

BOOL InitWindows( HINSTANCE hInstance, int nCmdShow ) //创建窗口

{

HWND hWnd; //窗口句柄

hWnd=CreateWindow("WinFill","填充示例图形",WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,0,CW_USEDEFAULT,0,NULL,NULL,hInstance,NULL);

if(!hWnd)

return FALSE;

hWndMain=hWnd;

ShowWindow(hWnd,nCmdShow);

UpdateWindow(hWnd);

return TRUE;

}

BOOL InitWindowsClass(HINSTANCE hInstance) //定义窗口类结构

{

WNDCLASS wc;

wc.cbClsExtra =0;

wc.cbWndExtra = 0;

wc.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));

wc.hCursor = LoadCursor( NULL, IDC_ARROW );

wc.hIcon = LoadIcon( NULL, "END");

wc.hInstance = hInstance;

wc.lpszMenuName = NULL;

wc.lpfnWndProc=WndProc;

wc.lpszClassName = "Winfill";

wc.lpszMenuName=NULL;

wc.style=0;

return RegisterClass(&wc);

}

五、常用绘图函数

AbortPath 抛弃选入指定设备场景中的所有路径。也取消目前正在进行的任何路径的创建工作AngleArc 用一个连接弧画一条线

Arc 画一个圆弧

BeginPath 启动一个路径分支

CancelDC 取消另一个线程里的长时间绘图操作

Chord 画一个弦

CloseEnhMetaFile 关闭指定的增强型图元文件设备场景,并将新建的图元文件返回一个句柄CloseFigure 描绘到一个路径时,关闭当前打开的图形

CloseMetaFile 关闭指定的图元文件设备场景,并向新建的图元文件返回一个句柄CopyEnhMetaFile 制作指定增强型图元文件的一个副本(拷贝)

CopyMetaFile 制作指定(标准)图元文件的一个副本

CreateBrushIndirect 在一个LOGBRUSH数据结构的基础上创建一个刷子CreateDIBPatternBrush 用一幅与设备无关的位图创建一个刷子,以便指定刷子样式(图案)CreateEnhMetaFile 创建一个增强型的图元文件设备场景

CreateHatchBrush 创建带有阴影图案的一个刷子

CreateMetaFile 创建一个图元文件设备场景

CreatePatternBrush 用指定了刷子图案的一幅位图创建一个刷子

CreatePen 用指定的样式、宽度和颜色创建一个画笔

CreatePenIndirect 根据指定的LOGPEN结构创建一个画笔

CreateSolidBrush 用纯色创建一个刷子

DeleteEnhMetaFile 删除指定的增强型图元文件

DeleteMetaFile 删除指定的图元文件

DeleteObject 删除GDI对象,对象使用的所有系统资源都会被释放

DrawEdge 用指定的样式描绘一个矩形的边框

DrawEscape 换码(Escape)函数将数据直接发至显示设备驱动程序DrawFocusRect 画一个焦点矩形

DrawFrameControl 描绘一个标准控件

DrawState 为一幅图象或绘图操作应用各式各样的效果

Ellipse 描绘一个椭圆,由指定的矩形围绕

EndPath 停止定义一个路径

EnumEnhMetaFile 针对一个增强型图元文件,列举其中单独的图元文件记录EnumMetaFile 为一个标准的windows图元文件枚举单独的图元文件记录EnumObjects 枚举可随同指定设备场景使用的画笔和刷子

ExtCreatePen 创建一个扩展画笔(装饰或几何)

ExtFloodFill 在指定的设备场景里,用当前选择的刷子填充一个区域FillPath 关闭路径中任何打开的图形,并用当前刷子填充

FillRect 用指定的刷子填充一个矩形

FlattenPath 将一个路径中的所有曲线都转换成线段

FloodFill 用当前选定的刷子在指定的设备场景中填充一个区域FrameRect 用指定的刷子围绕一个矩形画一个边框

GdiComment 为指定的增强型图元文件设备场景添加一条注释信息GdiFlush 执行任何未决的绘图操作

GdiGetBatchLimit 判断有多少个GDI绘图命令位于队列中GdiSetBatchLimit 指定有多少个GDI绘图命令能够进入队列GetArcDirection 画圆弧的时候,判断当前采用的绘图方向

GetBkColor 取得指定设备场景当前的背景颜色

GetBkMode 针对指定的设备场景,取得当前的背景填充模式GetBrushOrgEx 判断指定设备场景中当前选定刷子起点GetCurrentObject 获得指定类型的当前选定对象

GetCurrentPositionEx 在指定的设备场景中取得当前的画笔位置GetEnhMetaFile 取得磁盘文件中包含的一个增强型图元文件的图元文件句柄GetEnhMetaFileBits 将指定的增强型图元文件复制到一个内存缓冲区里GetEnhMetaFileDescription 返回对一个增强型图元文件的说明GetEnhMetaFileHeader 取得增强型图元文件的图元文件头GetEnhMetaFilePaletteEntries 取得增强型图元文件的全部或部分调色板GetMetaFile 取得包含在一个磁盘文件中的图元文件的图元文件句柄GetMetaFileBitsEx 将指定的图元文件复制到一个内存缓冲区GetMiterLimit 取得设备场景的斜率限制(Miter)设置

GetNearestColor 根据设备的显示能力,取得与指定颜色最接近的一种纯色GetObjectAPI 取得对指定对象进行说明的一个结构

GetObjectType 判断由指定句柄引用的GDI对象的类型

GetPath 取得对当前路径进行定义的一系列数据

GetPixel 在指定的设备场景中取得一个像素的RGB值

GetPolyFillMode 针对指定的设备场景,获得多边形填充模式

GetROP2 针对指定的设备场景,取得当前的绘图模式

GetStockObject 取得一个固有对象(Stock)

GetSysColorBrush 为任何一种标准系统颜色取得一个刷子

GetWinMetaFileBits 通过在一个缓冲区中填充用于标准图元文件的数据,将一个增强型图元文件转换成标准windows图元文件

InvertRect 通过反转每个像素的值,从而反转一个设备场景中指定的矩形

LineDDA 枚举指定线段中的所有点

LineTo 用当前画笔画一条线,从当前位置连到一个指定的点

MoveToEx 为指定的设备场景指定一个新的当前画笔位置

PaintDesk 在指定的设备场景中描绘桌面墙纸图案

PathToRegion 将当前选定的路径转换到一个区域里

Pie 画一个饼图

PlayEnhMetaFile 在指定的设备场景中画一个增强型图元文件

PlayEnhMetaFileRecord 回放单独一条增强型图元文件记录

PlayMetaFile 在指定的设备场景中回放一个图元文件

PlayMetaFileRecord 回放来自图元文件的单条记录

PolyBezier 描绘一条或多条贝塞尔(Bezier)曲线

PolyDraw 描绘一条复杂的曲线,由线段及贝塞尔曲线组成

Polygon 描绘一个多边形

Polyline 用当前画笔描绘一系列线段

PolyPolygon 用当前选定画笔描绘两个或多个多边形

PolyPolyline 用当前选定画笔描绘两个或多个多边形

Rectangle 用当前选定的画笔描绘矩形,并用当前选定的刷子填充

RoundRect 用当前选定的画笔画一个圆角矩形,并用当前选定的刷子在其中填充SelectClipPath 将设备场景当前的路径合并到剪切区域里

SelectObject 为当前设备场景选择图形对象

SetArcDirection 设置圆弧的描绘方向

SetBkColor 为指定的设备场景设置背景颜色

SetBkMode 指定阴影刷子、虚线画笔以及字符中的空隙的填充方式

SetBrushOrgEx 为指定的设备场景设置当前选定刷子的起点

SetEnhMetaFileBits 用指定内存缓冲区内包含的数据创建一个增强型图元文件SetMetaFileBitsEx 用包含在指定内存缓冲区内的数据结构创建一个图元文件

SetMiterLimit 设置设备场景当前的斜率限制

SetPixel 在指定的设备场景中设置一个像素的RGB值

SetPixelV 在指定的设备场景中设置一个像素的RGB值

SetPolyFillMode 设置多边形的填充模式

SetROP2 设置指定设备场景的绘图模式。与vb的DrawMode属性完全一致SetWinMetaFileBits 将一个标准Windows图元文件转换成增强型图元文件StrokeAndFillPath 针对指定的设备场景,关闭路径上打开的所有区域

StrokePath 用当前画笔描绘一个路径的轮廓。打开的图形不会被这个函数关闭UnrealizeObject 将一个刷子对象选入设备场景之前,如刷子的起点准备用SetBrushOrgEx修改,则必须先调用本函数

WidenPath 根据选定画笔的宽度,重新定义当前选定的路径

实验五、MFC程序设计

五、实验目的

掌握VC6中建立MFC程序的方法。

六、实验内容

利用AppWizard生成三种不同的MFC程序(单文档、多文档和对话框)框架,练习设置不同的参数来改变程序的外观。

七、实验要求

按下图建立不同的MFC程序框架。

1、单文档,要求视图类型采用CEditView;

2、多文档,要求视图类型采用CEditView;

3、对话框,要求

a)对话框改为可改变大小;

b)加上最小化、最大化的按钮;

c)中间的文字改为“hello World!”。

思考题

1.MFC的三种程序模版主要区别在哪里?

2.如何自动添加事件处理?如何手工添加?

类向导不允许增加用户自定义消息,所以你必须手工输入。输入后,类向导就可以像处理其他消息一样处理你自定义的消息了。下面是增加自定义消息的步骤:第一步:定义消息。开发应用程序时,Microsoft推荐用户自定义消息至少是WM_USER+100,因为很多新控件也要使用WM_USER消息。

第二步:实现消息处理函数。该函数使用WPRAM和LPARAM参数并返回LPESULT。

第三步:在类的头文件的AFX_MSG块中说明消息处理函数。

第四步:在用户类的消息块中,使用ON_MESSAGE宏指令将消息映射到消息处理函数中。

电脑DIY实验指导书

电脑DIY实验指导书 《电脑DIY》实验指导书 实验一了解计算机的组成3-13 一、实验目的 1、观察计算机系统的组成; 2、通过观察了解计算机系统中各个部件的连接方法; 3、了解各部件在系统中的作用。 二、实验前的准备工作 认真阅读本实验内容,准备打开主机箱的工具并按要求准备做好记录。 三、实验指导 在实验过程中要注意观察,并做好观察记录。 四、实验内容 1、观察系统外部设备的连接状况,记录各外设的名称、型号和与主机连接点情况; 2、在教师的指导下将外设去掉,用准备好的工具将主机箱打开; 3、观察主机的结构,记录主机箱内包含的部件的名称、规格等,如图所示:

电脑DIY 实验指导书 4、了解各部件的作用,看清楚部件的安装位置; 5、将主机箱安装好,并把外设连接好; 6、整理好使用过的用品,实验结束。 五、实验报告要求 1、将在实验过程中观察到的部件或设备按顺序记录在实验报告单上; 2、将你认为没有看明白的部分写出来。 这一次实验认识了计算机的组成,了解了cpu 、主板、内存的分类,认识了主板的南北桥芯片的作用和位置,知道了在以后购买时候应当注意的内容,知道如何选择硬件。了解了各个部位的主要硬件指标。

电脑DIY实验指导书 实验二计算机硬件的组装3-24 一、实验目的 1、在识别各个部件和板卡的基础上,将它们组装在一起; 2、通过对计算机系统的组装,进一步熟悉各部件的功能; 3、掌握安装和拆卸计算机部件的方法与注意事项。 二、实验前的准备工作 准备好必要的工具,认真阅读各部件的使用说明书,并按要求准备做好记录。 三、实验指导 在实验过程中要按安装步骤进行安装,找准各部件的安装位置,注意在拆装的过程中要用力均匀,防止损坏设备。 四、实验内容 1、按要求做好准备工作; 2、可将主板放置在绝缘泡沫板上; 3、将CPU、内存条和CPU风扇等安装在主板上; 4、将主板装入主机箱,拧紧主板的固定螺丝; 5、把电源固定在机箱的相应位置,并接好主板电源线; 6、安装显卡、声卡等内置板卡,并设置好主板跳线; 7、安装好硬盘、软驱和光驱等部件; 8、检查并确认安装正确无误; 9、连接好显示器、键盘和鼠标后可开机试验; 10、能正常启动后,请关机、断电并按相反顺序将各部件拆卸开放回原来位置。

测试技术实验指导书及实验报告2006级用汇总

矿压测试技术实验指导书 学号: 班级: 姓名: 安徽理工大学 能源与安全学院采矿工程实验室

实验一常用矿山压力仪器原理及使用方法 第一部分观测岩层移动的部分仪器 ☆深基点钻孔多点位移计 一、结构简介 深基点钻孔多点位移计是监测巷道在掘进和受采动影响的整个服务期间,围岩内部变形随时间变化情况的一种仪器。 深基点钻孔多点位移包括孔内固定装置、孔中连接钢丝绳、孔口测读装置组成。每套位移计内有5~6个测点。其结构及其安装如图1所示。 二、安装方法 1.在巷道两帮及顶板各钻出φ32的钻孔。 2.将带有连接钢丝绳的孔内固定装置,由远及近分别用安装圆管将其推至所要求的深度。(每个钻孔布置5~6个测点,分别为;6m、5m、4m、3m、2m、lm或12m、10m、8m、6m、4m、2m)。 3.将孔口测读装置,用水泥药圈或木条固定在孔口。 4。拉紧每个测点的钢丝绳,将孔口测读装置上的测尺推至l00mm左右的位置后,由螺丝将钢丝绳与测尺固定在一起。 三、测试方法 安装后先读出每个测点的初读数,以后每次读得的数值与初读数之差,即为测点的位移值。当读数将到零刻度时,松开螺丝,使测尺再回到l00mm左右的位置,重新读出初读数。 ☆顶板离层指示仪 一、结构简介: 顶板离层指示仪是监测顶板锚杆范围内及锚固范围外离层值大小的一种监测仪器,在顶板钻孔中布置两个测点,一个在围岩深部稳定处,一个在锚杆端部围岩中。离层值就是围岩中两测点之间以及锚杆端部围岩与巷道顶板表面间的相对位移值。顶板离层指示仪由孔内固定装置、测量钢丝绳及孔口显示装置组成如图1所示。

二、安装方法: 1.在巷道顶板钻出φ32的钻孔,孔深由要求而定。 2.将带有长钢丝绳的孔内固定装置用安装杆推到所要求的位置;抽出安装杆后再将带有短钢丝绳的孔内固定装置推到所要求的位置。 3.将孔口显示装置用木条固定在孔口(在显示装置与钻孔间要留有钢丝绳运动的间隙)。 4.将钢丝绳拉紧后,用螺丝将其分别与孔口显示装置中的圆管相连接,且使其显示读数超过零刻度线。 三、测读方法: 孔口测读装置上所显示的颜色,反映出顶板离层的范围及所处状态,显示数值表示顶板的离层量。☆DY—82型顶板动态仪 一、用途 DY-82型顶板动态仪是一种机械式高灵敏位移计。用于监测顶底板移近量、移近速度,进行采场“初次来压”和“周期来压”的预报,探测超前支撑压力高 峰位置,监测顶板活动及其它相对位移的测量。 二、技术特征 (1)灵敏度(mm) 0.01 (2)精度(%) 粗读±1,微读±2.5 (3)量程(mm) 0~200 (4)使用高度(mm) 1000~3000 三、原理、结构 其结构和安装见图。仪器的核心部件是齿条6、指针8 以及与指针相连的齿轮、微读数刻线盘9、齿条下端带有读 数横刻线的游标和粗读数刻度管11。 当动态仪安装在顶底板之间时,依靠压力弹簧7产生的 弹力而站立。安好后记下读数(初读数)并由手表读出时间。 粗读数由游标10的横刻线在刻度管11上的位置读出,每小 格2毫米,每大格(标有“1”、“22'’等)为10毫米,微读数 由指针8在刻线盘9的位置读出,每小格为0.01毫米(共200 小格,对应2毫米)。粗读数加微读数即为此时刻的读数。当 顶底板移近时,通过压杆3压缩压力弹簧7,推动齿条6下 移,带动齿轮,齿轮带动指针8顺时针方向旋转,顶底板每 移近0.01毫米,指针转过1小格;同时齿条下端游标随齿条 下移,读数增大。后次读数减去前次读数,即为这段时间内的顶底板移近量。除以经过的时间,即得

实验指导书 实验二_SolidWorks建模1

实验二 SolidWorks 草绘特征和放置特征操作(一) 一、 实验目的 1. 掌握基本零件建模的一般步骤和方法 2. 掌握SolidWorks 草绘特征:拉伸凸台、拉伸切除、旋转凸台、旋转切除、扫描、 放样的操作方法。 3. 掌握放置(应用)特征:钻孔特征、倒角特征、圆角特征、抽壳特征、拔模斜度特 征、筋的操作方法 二、 实验内容 完成下列下列零件造型 三、 实验步骤 1. 连接件设计 完成如图 1 (1) (2) 2 所示。 图 1连接件 图 2草图 (3) 单击【拉伸凸台/ 框内选择【两侧对称】选项,在【深度】文本框内输入“54mm ”,单击【确定】按钮,如图 3所示。 图 3 “拉伸”特征 (4) 120°”,然后 在第二参考中选择图形的一条下边线。单击【确定】按钮,建立新基准面,如

错误!未找到引用源。所示。 (5) 1,选择“反转法线” 1,单选择 4所示。 图4草图 图4建立基准面 底面边线

(6) 单击【拉伸凸台/ 列表框内选择【给定深度】选项,在【深度】文本框内输入“12mm”,单击【确定】按钮,如图5所示。 图5“拉伸”特征 (7)选取基体上表面,单击【草图绘制】进入草图绘制,使用中心线工具在 上表面的中心位置绘制直线,注意不要捕捉到表面边线,如图6所示。 图 6 中心线 (8) 内输入“8mm”,在图形区域选择中心线,在属性管理器中选中【添加尺寸】、【选择链】、【双向】和【顶端加盖】复选框,选中【圆弧】单选按钮,单击【确定】按钮,标注尺寸,完成草图,如图7所示。 运用“等距实体”绘制草图 (8) -拉伸】属性管理器,在【终止条件】下拉 列表框内选择【完全贯穿】选项,单击【确定】按钮,如图8所示。

《计算机硬件技术基础》实验答案程序

实验一:简单程序设计实验 (1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 在 NUM2 中的 16 位无符号数相除,结果存放在 NUM3 和 NUM4 中。 程序流程图略。 参考源程序: DATA SEGMENT NUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ? NUM4 DW ? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA ;数据段寄存器初始化 MOV DS,AX MOV AX, WORD PTR NUM1 MOV DX, WORD PTR NUM1+2 DIV NUM2 MOV NUM3,AX MOV NUM4,DX MOV AH,4CH ;正常返回DOS 系统 INT 21H CODE ENDS END START (2)编写一个拆字程序。要求将存放在 ARY 单元的 2 位十六进制数 X 1X 2 拆为 X 1 和 X 2 两 部分,并以 0X 1 和 0X 2 的形式分别存入 ARY+1 和 ARY+2 单元中。 程序流程图略。 参考源程序: DATA SEGMENT ARY DB 2AH,?,? DATA ENDS CODE SEGMENT ASSUME DS:DATA, CS:CODE START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET ARY ;取ARY 的偏移地址 MOV AL,[SI] ;取16进制数至AL

MOV BL,AL AND AL,0F0H ;取16进制数的高四位,即X1 SHR AL,4 MOV [SI+1],AL ;存0X1 MOV AL,BL AND AL,0FH ;取16进制数的低四位,即X2 MOV [SI+2],AL ;存0X2 MOV AH,4CH INT 21H CODE ENDS END START

硬件基础实验指导书与答案

《计算机硬件基础》课程实验指导书 辽宁工程技术大学软件学院 2017年5月

目录 64位操作系统下使用MASM (3) 实验上机操作范例 (5) 实验一CPU结构 (15) 实验二指令格式 (22) //实验三循环程序设计 (25) 实验四综合程序设计(一) (32) 实验五综合程序设计(二) (36) 实验六高级汇编技术 (42)

64位操作系统下使用MASM 1.安装DOSBox。双击DOSBox0.74-win32-installer.exe。 2.运行DOSBox。双击桌面的DOSBox快捷方式,如图1所示。 图1 运行DOSBOX虚拟机 3.将MASM文件夹里的全部文件拷贝到一个目录下,比如d:\masm下,然后将这个目录挂载为DOSBox的一个盘符下,挂载命令为Mount c d:\masm 。然后切换到挂载的c盘,如图2所示。

图2 挂载masm文件夹3.编译汇编源程序,如图3所示。 图3 汇编源程序4.连接和运行源程序,如图4所示。 图4连接和运行源程序

实验上机操作范例 【范例】完成具有如下功能的分段函数 1 X>0 Y = 0 X=0 -1 X<0 其中:X存放在内存单元中,Y为结果单元。【问题分析】根据题意画出程序流程图,如图1所示。 图1 分段函数的程序流程图 根据程序流程图编写如下程序 DSEG SEGMENT X DW ? Y DW ? DSEG ENDS CSEG SEGMENT ASSUME CS: CSEG, DS: DSEG

START:MOV AX, DSEG MOV DS, AX LEA SI, X MOV AX, [SI] AND AX, AX JNS LP1 MOV Y, 0FFH ; X<0 JMP END1 LP1: JNZ LP2 MOV Y, 00H JMP END1 LP2: MOV Y, 01H END1: MOV AH, 4CH INT 21H CSEG ENDS END START 汇编语言程序的开发分为以下4个部分:编辑(生成.asm文件)—→汇编(生成.obj文件)—→连接(生成.exe文件)—→调试。 下面介绍汇编语言源程序从编辑到生成一个可执行文件(.exe文件)的过程。利用Microsoft公司提供的MASM6.15版本的工具包(包括MASM.EXE、LINK.EXE、ML.EXE、DEBUG32.EXE等),如图2所示。

混凝土结构实验指导书及实验报告(学生用)

土木工程学院 《混凝土结构设计基本原理》实验指导书 及实验报告 适用专业:土木工程周淼 编 班级::学 号: 理工大学 2018 年9 月

实验一钢筋混凝土梁受弯性能试验 一、实验目的 1.了解适筋梁的受力过程和破坏特征; 2.验证钢筋混凝土受弯构件正截面强度理论和计算公式; 3.掌握钢筋混凝土受弯构件的实验方法及荷载、应变、挠度、裂缝宽度等数据的测试技术 和有关仪器的使用方法; 4.培养学生对钢筋混凝土基本构件的初步实验分析能力。 二、基本原理当梁中纵向受力钢筋的配筋率适中时,梁正截面受弯破坏过程表现为典型的三个阶段:第一阶段——弹性阶段(I阶段):当荷载较小时,混凝土梁如同两种弹性材料组成的组合梁,梁截面的应力呈线性分布,卸载后几乎无残余变形。当梁受拉区混凝土的最大拉应力达到混凝土的抗拉强度,且最大的混凝土拉应变超过混凝土的极限受拉应变时,在纯弯段某一薄弱截面出现首条垂直裂缝。梁开裂标志着第一阶段的结束。此时,梁纯弯段截面承担的弯矩M cr称为开裂弯矩。第二阶段——带裂缝工作阶段(II阶段):梁开裂后,裂缝处混凝土退出工作,钢筋应力急增,且通过粘结力向未开裂的混凝土传递拉应力,使得梁中继续出现拉裂缝。压区混凝土中压应力也由线性分布转化为非线性分布。当受拉钢筋屈服时标志着第二阶段的结束。此时梁纯弯段截面承担的弯矩M y称为屈服弯矩。第三阶段——破坏阶段(III阶段):钢筋屈服后,在很小的荷载增量下,梁会产生很大的变形。裂缝的高度和宽度进一步发展,中和轴不断上移,压区混凝土应力分布曲线渐趋丰满。当受压区混凝土的最大压应变达到混凝土的极限压应变时,压区混凝土压碎,梁正截面受弯破坏。此时,梁承担的弯矩M u 称为极限弯矩。适筋梁的破坏始于纵筋屈服,终于混凝土压碎。整个过程要经历相当大的变形,破坏前有明显的预兆。这种破坏称为适筋破坏,属于延性破坏。 三、试验装置

计算机硬件技术基础实验

计算机硬件技术基础实验 姓名:高广战 专业:09计算机 学号:_____09838033____

安徽农业大学经济技术学院 实验一:计算机运行过程演示 计算机硬件: 计算机硬件系统的基本组成(五大部件):运算器、控制器、存储器、输入设备和输出设备。运算器和控制器统称中央处理器(CPU)。 存储器分成内存储器和外存储器两大类。 CPU、内存储器和连接输入输出设备的接口统称为主机。微机的主机集成在主机板上。 外存储器、输入设备和输出设备统称为外部设备。 计算机运行过程: 第一步:当我们按下电源开关时,电源就开始向主板和其它设备供电,此时电压还不稳定,主板控制芯片组会向CPU发出并保持一个RESET(重置)信号,让CPU初始化。 加电自检,加电自检的主要任务是检测系统中的一些关键设备是否存在和能否正常工作,如内存和显卡等。 第二步:显卡初始化。查找完所有其它设备的BIOS之后,系统BIOS将显示它自己的启动画面 第三步:接着系统BIOS将检测CPU的类型和工作频率,接下来系统BIOS开始测试主机所有的内存容量 第四步:内存测试通过之后,系统BIOS将开始检测系统中安装的一些标准硬件设备,这些设备包括:硬盘、CD-ROM、软驱、串行接口和并行接口等连接的设备 第五步:标准设备检测完毕后,系统BIOS内部的支持即插即用的代码将开始检测和配置系统中安装的即插即用设备 第六步:到这一步为止,所有硬件都已经检测配置完毕了,系统BIOS会重新清屏并在屏幕上方显示出一个系统配置列表,其中概略地列出了系统中安装的各种标准硬件设备,以及它们使用的资源和一些相关工作参数。 第七步:按下来系统BIOS将更新ESCD(Extended System Configuration Data,扩展系统配置数据)。 第八步:ESCD数据更新完毕后,系统BIOS的启动代码将进行它的最后一项工作,即根据用户指定的启动顺序从软盘、硬盘或光驱启动。

计算机组成原理实验指导书

计算机组成原理 实验报告 学号: 姓名: 提交日期: 成绩: 计算机组成原理实验报告 Computer Organization Lab Reports ______________________________________________________________________________ 班级: ____ 姓名:____学号:_____ 实验日期:____

一.实验目的 1. 熟悉Dais-CMX16+达爱思教仪的各部分功能和使用方法。 2. 掌握十六位机字与字节运算的数据传输格式,验证运算功能发生器及进位控制的组合功能。了解运算器的工作原理。 3. 完成算术、逻辑、移位运算实验,熟悉ALU运算控制位的运用。 ______________________________________________________________________________二.实验环境 Dais-CMX16+达爱思教仪 ______________________________________________________________________________三.实验原理 实验中所用的运算器数据通路如图1-1所示。ALU运算器由CPLD描述。运算器的输出经过2片74LS245三态门与数据总线相连,2个运算寄存器AX、BX的数据输入端分别由4个74LS574锁存器锁存,锁存器的输入端与数据总线相连,准双向I/O输入输出端口用来给出参与运算的数据,经2片74LS245三态门与数据总线相连。 图1-1 运算器数据通路 图1-1中,AXW、BXW在“搭接态”由实验连接对应的二进制开关控制,“0”有效,通过【单拍】按钮产生的负脉冲把总线上的数据打入,实现AXW、BXW写入操作。 表1-1 ALU运算器编码表 算术运算逻辑运算 M M13 M12 M11 功能M M13 M12 M11 功能 M S2 S1 S0 M S2 S1 S0 0 0 0 0 A+B+C 1 0 0 0 读B 0 0 0 1 A—B —C 1 0 0 1 非A 0 0 1 0 RLC 1 0 1 0 A-1

土工实验指导书及实验报告

土工实验指导书及实验报告编写毕守一 安徽水利水电职业技术学院 二OO九年五月

目录 实验一试样制备 实验二含水率试验 实验三密度试验 实验四液限和塑限试验 实验五颗粒分析试验 实验六固结试验 实验七直接剪切试验 实验八击实试验 土工试验复习题

实验一试样制备 一、概述 试样的制备是获得正确的试验成果的前提,为保证试验成果的可靠性以及试验数据的可比性,应具备一个统一的试样制备方法和程序。 试样的制备可分为原状土的试样制备和扰动土的试样制备。对于原状土的试样制备主要包括土样的开启、描述、切取等程序;而扰动土的制备程序则主要包括风干、碾散、过筛、分样和贮存等预备程序以及击实等制备程序,这些程序步骤的正确与否,都会直接影响到试验成果的可靠性,因此,试样的制备是土工试验工作的首要质量要素。 二、仪器设备 试样制备所需的主要仪器设备,包括: (1)孔径0.5mm、2mm和5mm的细筛; (2)孔径0.075mm的洗筛; (3)称量10kg、最小分度值5g的台秤; (4)称量5000g、最小分度值1g和称量200g、最小分度值0.01g的天平;

(5)不锈钢环刀(内径61.8mm、高20mm;内径79.8mm、高20mm或内径61.8mm、高40mm); (6)击样器:包括活塞、导筒和环刀; (7)其他:切土刀、钢丝锯、碎土工具、烘箱、保湿器、喷水设备、凡士林等。 三、试样制备 (一)原状土试样的制备步骤 1、将土样筒按标明的上下方向放置,剥去蜡封和胶带,开启土样筒取土样。 2、检查土样结构,若土样已扰动,则不应作为制备力学性质试验的试样。 3、根据试验要求确定环刀尺寸,并在环刀内壁涂一薄层凡士林,然后刃口向下放在土样上,将环刀垂直下压,同时用切土刀沿环刀外侧切削土样,边压边削直至土样高出环刀,制样时不得扰动土样。 4、采用钢丝锯或切土刀平整环刀两端土样,然后擦净环刀外壁,称环刀和土的总质量。 5、切削试样时,应对土样的层次、气味、颜色、夹杂物、裂缝和均匀性进行描述。 6、从切削的余土中取代表性试样,供测定含水率以及颗粒分析、界限含水率等试验之用。

R语言实验指导书(二)

R语言实验指导书(二) 2016年10月27日

实验三创建和使用R语言数据集 一、实验目的: 1.了解R语言中的数据结构。 2.熟练掌握他们的创建方法,和函数中一些参数的使用。 3.对创建的数据结构进行,排序、查找、删除等简单的操作。 二、实验内容: 1.向量的创建及因子的创建和查看 有一份来自澳大利亚所有州和行政区的20个税务会计师的信息样本 1 以及他们各自所在地的州名。州名为:tas, sa, qld, nsw, nsw, nt, wa, wa, qld, vic, nsw, vic, qld, qld, sa, tas, sa, nt, wa, vic。 1)将这些州名以字符串的形式保存在state当中。 2)创建一个为这个向量创建一个因子statef。 3)使用levels函数查看因子的水平。 2.矩阵与数组。

i.创建一个4*5的数组如图,创建一个索引矩阵如图,用这个索引矩 阵访问数组,观察结果。 3.将之前的state,数组,矩阵合在一起创建一个长度为3的列表。

4.创建一个数据框如图。 5.将这个数据框按照mpg列进行排序。 6.访问数据框中drat列值为3.90的数据。

三、实验要求 要求学生熟练掌握向量、矩阵、数据框、列表、因子的创建和使用。

实验四数据的导入导出 一、实验目的 1.熟练掌握从一些包中读取数据。 2.熟练掌握csv文件的导入。 3.创建一个数据框,并导出为csv格式。 二、实验内容 1.创建一个csv文件(内容自定),并用readtable函数导入该文件。 2.查看R语言自带的数据集airquality(纽约1973年5-9月每日空气质 量)。 3.列出airquality的前十列,并将这前十列保存到air中。 4.查看airquality中列的对象类型。 5.查看airquality数据集中各成分的名称 6.将air这个数据框导出为csv格式文件。(write.table (x, file ="", sep ="", https://www.docsj.com/doc/f313926008.html,s =TRUE, https://www.docsj.com/doc/f313926008.html,s =TRUE, quote =TRUE)) 三、实验要求 要求学生掌握从包中读取数据,导入csv文件的数据,并学会将文件导出。

计算机硬件实验指导书模板

第一部分EL实验系统的结构 EL-l微机实验教学系统由功能实验板、可选的CPU板、二块小面包板三部分构成, 可安装在45*30*10cm的实验箱内。总框图如下: 面包板: 1)通用面包板 2)金属圆孔组成的通用实验板 CPU板: 1)8086 PC总线板 2)8086 CPU板 3)8051 CPU板 4)8098 CPU板 5)80C198 CPU板 功能实验板: 由若干相对独立的功能接口电路组成, 它们是: D/A电路、A/D电路、发光二极管电路、开关量输入电路、RAM/ROM电路、简单I/O电路、8253可编程定时器/计数器电路、8255并行接口电路、总线驱动电路、8279接口电路、单脉冲发生器、LED显示电路、键盘电路、复位电路、8250串行接口电路。 ( 一) 功能实验板结构

1、输出显示电路 1)数码显示电路。 该电路由6位共阴极数码管, 3片75452, 2片74SL07组成, 74LS07为段驱动器, 相应输入插孔为CZ4。75452为位驱动器, 相应输入插控为CZ3(LD1, LD2, LD3, LD4, LD5, LD6)。 2)LED灯显示电路。 该电路由2片74LS04, 12只发光二极管( 红、绿、黄各4只) 组成。12只二极管相应的输人插孔为CZ2(LI1, LI2, LI3, LI4, LI5, LI6, LI7, LI8, LI9, LI10, LIl1, LIl2) 2、信号发生电路 1)开关量输入电路: 该电路由8只开关组成, 每只开关有两个位置, 一个位置代表高电平, 一个位置代表低电平。该电路的输出插孔为CZl(Kl, K2, K3, K4, K5, K6, K7, K8)。 2)时钟输入电路: 该电路由1片74LSl6l组成: ·当CPU为PC总线时, 输入时钟为AT总线的CLK, ·当CPU为805l、8098、80C198时, CLK的输入时钟为晶振频率, ·当CPU为8086时, CLK是2MHz。 输出时钟为该CLK的2分频(CLK0), 4分频(CLKI), 8分频(CLK2), 16分频(CLK3), 相应输出插孔CZ47(CLK0, CLKl, CLK2,

CAD上机实验指导书及实验报告

北京邮电大学世纪学院 实验、实习、课程设计报告撰写格式与要求 (试行) 一、实验报告格式要求 1、有实验教学手册,按手册要求填写,若无则采用统一实验报告封面。 2、报告一律用钢笔书写或打印,打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 3、统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。 4、实验报告中的实验原始记录,须经实验指导教师签字或登记。 二、实习报告、课程设计报告格式要求 1、采用统一的封面。 2、根据教学大纲的要求手写或打印,手写一律用钢笔书写,统一采用国家标准所规定的单位与符号,要求文字书写工整,不得潦草;作图规范,不得随手勾画。打印要求用A4纸;页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。 三、报告内容要求 1、实验报告内容包括:实验目的、实验原理、实验仪器设备、实验操作过程、原始数据、实验结果分析、实验心得等方面内容。 2、实习报告内容包括:实习题目、实习任务与要求、实习具体实施情况(附上图表、原始数据等)、实习个人总结等内容。 3、课程设计报告或说明书内容包括:课程设计任务与要求、总体方案、方案设计与分析、所需仪器设备与元器件、设计实现与调试、收获体会、参考资料等方面内容。 北京邮电大学世纪学院 教务处 2009-8

实验报告 课程名称计算机绘图(CAD) 实验项目AutoCAD二维绘图实验 专业班级 姓名学号 指导教师实验成绩 2016年11月日

实验指导书实验二_SolidWorks建模1

实验二SolidWorks草绘特征和放置特征操作(一) 一、实验目的 1.掌握基本零件建模的一般步骤和方法 2.掌握SolidWorks草绘特征:拉伸凸台、拉伸切除、旋转凸台、旋转切除、扫描、放样的操 作方法。 3.掌握放置(应用)特征:钻孔特征、倒角特征、圆角特征、抽壳特征、拔模斜度特征、筋的 操作方法 二、实验内容 完成下列下列零件造型 三、实验步骤 1. 连接件设计 完成如图1所示模型。 (1)单击【新建】按钮一1,新建一个零件文件。 (2)选取前视基准面,单击【草图绘制】按钮一I,进入草图绘制,绘制草图,如图2 所示。 图1连接件图2草图 ⑶ 单击【拉伸凸台/基体】按钮,出现【拉伸】属性管理器,在【方向】下拉列表 框内选择【两侧对称】选项,在【深度】文本框内输入" 54mm ”,单击【确定】 按钮,如图3所示。 (4)单击【基准面】按钮一1,出现【基准面】属性管理器,其中第一参考选择图形下底面, 然后单击【两面夹角】按钮日,在【角度】文本框内输入"120°,然后在第二参考中选择 图形的一条下边线。单击【确定】按钮¥,,建立新基准面,如

错误!未找到引用源。所示。 图4建立基准面 (5) 在设计树中右击基准面 1选择“反转法线” 卜,然后再单击基准 面 1单选择 【草图绘制】按钮 ,进入草图绘制,单击【正视于】按钮 ,绘制草图,如图 4所示。 边线 底面 图4草图

(6) 单击【拉伸凸台/基体】按钮 ,出现【拉伸】属性管理 器,在【终止条件】下拉 列表框内选择【给定深度】选项,在【深度】文本框内输入“ 12mm ”,单击【确 定】按钮1 如图5所示。 (7) 选取基体上表面,单击【草图绘制】 按钮_1,进入草图绘制,使用中心线工具 上表面的中心位置绘制直线,注意不要捕捉到表面边线,如图 6所示。 图6中心线 (8) 单击【等距实体】按钮丄,出现【等距实体】属性管理器,在【等距距离】文本框 内输入 “8mm ”,在图形区域选择中心线, 在属性管理器中选中 【添加尺寸】、【选 择链】、【双向】和【顶端加盖】复选框,选中【圆弧】单选按钮,单击【确定】 按钮 ,标注尺寸,完成草图,如图 7所示。 律黑 __________________ 严 玄[B 总 -召 厂[.砲 r 韦歼左眛編◎也 17比自口 R an (A ) 广 Efetfi- 图_7运用“等距实体”绘制草图 (8)单击【拉伸切除】按钮 □,出现【切除-拉伸】属性管理器,在【终止条件】下拉 列表框内选择【完全贯穿】选项,单击【确定】按钮 ,如图8所示。 图5 “拉伸”特征

计算机硬件的组装实验报告

计算机硬件的组装实验 报告 TYYGROUP system office room 【TYYUA16H-TYY-TYYYUA8Q8-

计算机硬件的组装 实验时间:3月30日晚6:00-9:00 学号:姓名: 一、实验目的 1.加深对理论知识的理解,提高实际动手能力; 2.了解计算机的主要部件,理解各部件的功能,了解微型机的各项技术指标和参数。 3.能掌握现代计算机组成结构、内部部件的连接和装机步骤 4.能够熟练掌握计算机的基本组装技巧。 二、实验内容 1、了解计算机主要器件、外部设备的种类和发展情况; 2、掌握计算机主要器件、外部设备的主要性能指标; 3、知道如何选购计算机的主要器件和外部设备; 4、根据了解的知识,动手实践组装一台微型计算机系统; 5、了解并掌握计算机系统的调试、维护方法。 三、实验步骤 (一)计算机主要器件及外部设备 1、计算机系统硬件组成:微处理器、主板、内存、外存储器、输入系统设备、显示系统设备、机箱与电源。 2、计算机的结构构成和功能 ⑴.主板:主板是一块方形的电路板,在其上面分布着众多电 子元件和各种设备的插槽等。

⑵.主板的插座:主板上的插座主要是指主板上的CPU插座和电源插座。 ⑶. 主板的插槽 ⑷. 主板的芯片组:主板的芯片组是整个主板的核心,主板上各个部件的运行都是通过主板芯片组来控制的。 ⑸.CPU:CPU由控制器和运算器这两个主要部件组成。控制器是整个计算机系统的指挥中心。控制器的指挥控制下,运算器、存储器和输入/输出设备等部件协同工作,构成了一台完整的通用计算机。运算器是计算机中用于实现数据加工处理等功能的部件,它接受控制器的命令,负责完成对操作数据的加工处理任务,其核心部件是算术逻辑单元。 ⑹.内存:内存主要由内存颗粒、PCB电路板、金手指等部分组成。内存的作用是和CPU进行数据交换的,用于直接提供CPU要处理的数据,同时内存容量有限,它需要不断的从外存调入当前操作需要的数据以备CPU使用。 3.计算机的拆装 工具︰螺丝刀 ⑴.拆卸部件操作步骤: 关闭电源,用螺丝刀拆下螺丝,拆卸机 箱。观察主机各部件的连接线(电源和信号线),各部件的固定位置和方式(固定点、螺钉类型),并登记。拆除电源和信号线、板卡、内存、硬盘和软驱。(不要拆除CPU、风扇、主板) ⑵.安装计算机部件的操作步骤:

计算机组成原理实验指导书

计算机组成原理实验指导书适用TD-CMA实验设备

实验一基本运算器实验 一、实验原理 运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A和暂存器B,三个部件同时接受来自A和B的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如ARM),各部件对操作数进行何种运算由控制信号S3 0 CN来决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为ALU的输出。如果是影响进位的运算,还将置进位标志FC,在运算结果输出前,置ALU零标志。ALU中所有模块集成在一片CPLD中。 逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对这两个部件不再赘述。移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-1-2所示。图中显示的是一个4X4的矩阵(系统中是一个8X8的矩阵)。每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即: (1) 对于逻辑左移或逻辑右移功能,将一条对角线的开关导通,这将所有的输入位与所使用的输出分别相连,而没有同任何输入相连的则输出连接0。 (2) 对于循环右移功能,右移对角线同互补的左移对角线一起激活。例如,在4位矩阵中使用‘右1’和‘左3’对角线来实现右循环1位。 (3) 对于未连接的输出位,移位时使用符号扩展或是0填充,具体由相应的指令控制。使用另外的逻辑进行移位总量译码和符号判别。 原理如图1-1-1所示

图1-1-1 运算器原理图 运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A和暂存器B,三个部件同时接受来自A和B的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如ARM),各部件对操作数进行何种运算由控制信号S3 0 决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为ALU的输出。如果是算术运算,还将置进位标志FC,在运算结果输出前,置ALU零标志。ALU中所有模块集成在一片CPLD(MAXII EPM240)中。 逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对这两个部件不再赘述。移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-1-2所示。图中显示的是一个4X4的矩阵(系统中是一个8X8的矩阵)。每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即:

《流体力学》课程实验(上机)指导书及实验报告格式

《流体力学》课程实验指导书袁守利编 汽车工程学院 2005年9月

前言 1.实验总体目标、任务与要求 1)学生在学习了《流体力学》基本理论的基础上,通过伯努利方程实验、动量方程实 验,实现对基本理论的验证。 2)通过实验,使学生对水柱(水银柱)、U型压差计、毕托管、孔板流量计、文丘里流量计等流体力学常用的测压、测流量装置的结构、原理和使用有基本认识。 2.适用专业 热能与动力工程 3.先修课程 《流体力学》相关章节。 4.实验项目与学时分配 5. 实验改革与特色 根据实验内容和现有实验条件,在实验过程中,采取学生自己动手和教师演示相结合的方法,力求达到较好的实验效果。

实验一伯努利方程实验 1.观察流体流经实验管段时的能量转化关系,了解特定截面上的总水头、测压管水头、压强水头、速度水头和位置水头间的关系,从而加深对伯努利方程的理解和认识。 2.掌握各种水头的测试方法和压强的测试方法。 3.掌握流量、流速的测量方法,了解毕托管测速的原理。 二、实验条件 伯努利方程实验仪 三、实验原理 1.实验装置: 图一伯努利方程实验台 1.水箱及潜水泵 2.上水管 3.电源 4.溢流管 5.整流栅 6.溢流板 7.定压水箱 8.实验 细管9. 实验粗管10.测压管11.调节阀12.接水箱13.量杯14回水管15.实验桌 2.工作原理 定压水箱7靠溢流来维持其恒定的水位,在水箱下部装接水平放置的实验细管8,水经实验细管以恒定流流出,并通过调节阀11调节其出水流量。通过布置在实验管四个截面上的四组测压孔及测压管,可以测量到相应截面上的各种水头的大小,从而可以分析管路中恒定流动的各种能量形式、大小及相互转化关系。各个测量截面上的一组测压管都相当于一组毕托管,所以也可以用来测管中某点的流速。 电测流量装置由回水箱、计量水箱和电测流量装置(由浮子、光栅计量尺和光电子

计算机组成原理实验指导书

计算机组成原理 实 验 指 导 书 软件学院 2015.9

实验报告要求 一、该实验为计算机组成原理课程的仿真训练项目,包括实验1-5,每个实验6分,共30分,计入最终考核成绩。 二、每人每个实验写一份实验报告。要求在熟悉仿真软件和相关理论知识的基础上,按照实验步骤,认真观察实验结果数据,做好记录或截图,并对结果进行分析,最后总结实验中遇到的问题和解决方法,写出实验心得体会。 三、每个实验应在相对应的理论知识讲授完毕后进行,实验完成后以答辩形式组织考核打分。实验报告需要同时上交电子版和A4纸打印版,封面参考附件。

附件 计算机组成原理 实验报告 学院(系): 专业: 班级: 学号: 姓名: 年月日

实验1 Cache模拟器的实现 一.实验目的 (1)加深对Cache的基本概念、基本组织结构以及基本工作原理的理解。 (2)掌握Cache容量、相联度、块大小对Cache性能的影响。 (3)掌握降低Cache不命中率的各种方法以及这些方法对提高Cache性能的好处。 (4)理解LRU与随机法的基本思想以及它们对Cache性能的影响。 二、实验内容和步骤 1、启动CacheSim。 2、根据课本上的相关知识,进一步熟悉Cache的概念和工作机制。 3、依次输入以下参数:Cache容量、块容量、映射方式、替换策略和写策略。 4、读取cache-traces.zip中的trace文件。 5、运行程序,观察cache的访问次数、读/写次数、平均命中率、读/写命中率。思考:1、Cache的命中率与其容量大小有何关系? 2、Cache块大小对不命中率有何影响? 3、替换算法和相联度大小对不命中率有何影响? 三.实验结果分析 四.实验心得

电磁场实验指导书及实验报告

CENTRAL SOUTH UNIVERSITY 题目利用Matlab模拟点电荷电场的分布姓名xxxx 学号xxxxxxxxxx 班级电气xxxx班 任课老师xxxx 实验日期2010-10

电磁场理论 实验一 ——利用Matlab 模拟点电荷电场的分布 一.实验目的: 1.熟悉单个点电荷及一对点电荷的电场分布情况; 2.学会使用Matlab 进行数值计算,并绘出相应的图形; 二.实验原理: 根据库伦定律:在真空中,两个静止点电荷之间的作用力与这两个电荷的电量乘积成正比,与它们之间距离的平方成反比,作用力的方向在两个电荷的连线上,两电荷同号为斥力,异号为吸力,它们之间的力F 满足: R R Q Q k F ? 212 = (式1) 由电场强度E 的定义可知: R R kQ E ? 2 = (式2) 对于点电荷,根据场论基础中的定义,有势场E 的势函数为 R kQ U = (式3) 而 U E -?= (式4) 在Matlab 中,由以上公式算出各点的电势U ,电场强度E 后,可以用Matlab 自带的库函数绘出相应电荷的电场分布情况。 三.实验内容: 1. 单个点电荷 点电荷的平面电力线和等势线 真空中点电荷的场强大小是E=kq /r^2 ,其中k 为静电力恒量, q 为电量, r 为点电荷到场点P(x,y)的距离。电场呈球对称分布, 取电量q> 0, 电力线是以电荷为起点的射线簇。以无穷远处为零势点, 点电荷的电势为U=kq /r,当U 取

常数时, 此式就是等势面方程.等势面是以电荷为中心以r 为半径的球面。 平面电力线的画法 在平面上, 电力线是等角分布的射线簇, 用MATLAB 画射线簇很简单。取射线的半径为( 都取国际制单位) r0=, 不同的角度用向量表示( 单位为弧度) th=linspace(0,2*pi,13)。射线簇的终点的直角坐标为: [x,y]=pol2cart(th,r0)。插入x 的起始坐标x=[x; *x].同样插入y 的起始坐标, y=[y; *y], x 和y 都是二维数组, 每一列是一条射线的起始和终止坐标。用二维画线命令plot(x,y)就画出所有电力线。 平面等势线的画法 在过电荷的截面上, 等势线就是以电荷为中心的圆簇, 用MATLAB 画等势 线更加简单。静电力常量为k=9e9, 电量可取为q=1e- 9; 最大的等势线的半径应该比射线的半径小一点 r0=。其电势为u0=k8q /r0。如果从外到里取7 条等势线, 最里面的等势线的电势是最外面的3 倍, 那么各条线的电势用向量表示为: u=linspace(1,3,7)*u0。从- r0 到r0 取偶数个点, 例如100 个点, 使最中心点的坐标绕过0, 各点的坐标可用向量表示: x=linspace(- r0,r0,100), 在直角坐标系中可形成网格坐标: [X,Y]=meshgrid(x)。各点到原点的距离为: r=sqrt(X.^2+Y.^2), 在乘方时, 乘方号前面要加点, 表示对变量中的元素进行乘方计算。各点的电势为U=k8q. /r, 在进行除法运算时, 除号前面也要加点, 同样表示对变量中的元素进行除法运算。用等高线命令即可画出等势线 contour(X,Y,U,u), 在画等势线后一般会把电力线擦除, 在画等势线之前插入如下命令hold on 就行了。平面电力线和等势线如图1, 其中插入了标题等等。越靠近点电荷的中心, 电势越高, 电场强度越大, 电力线和等势线也越密。

《面向对象程序设计》实验指导书(实验二)

实验二类与对象㈡——对象初始化、对象数据与指针 一、实验目的 1.理解构造函数、析构函数的意义及作用,掌握构造函数、析构函数的定义及调用时间,熟悉构造函数的种类; 2.理解this指针及使用方法,熟悉对象数组、对象指针、对象引用的定义及使用方法,熟悉对象作为函数参数的使用方法; 3.熟悉类与对象的应用及编程。 二、实验学时 课内实验:2课时课外练习:2课时 三本实验涉及的新知识 ㈠构造函数与析构函数 在C++中,提供了两个特殊的成员函数,即构造函数和析构函数。 构造函数用于对象的初始化,即在定义一个类对象时,计算机在给对象分配相应的存储单元的同时,为对象的数据成员赋初值。 析构执行的是与构造函数相反的操作,用于撤销对象的同时释放对象所占用的内存空间。 1.构造函数 ⑴构造函数的定义 格式: 类名(形参表) { 构造函数体} ⑵构造函数的调用 构造函数的调用是在定义对象时调用的。 格式:类名对象名(实参表); 类名对象名=构造函数名(实参表); ⑶说明 ①构造函数必须与类同名。 ②构造函数没有返回值,但不能在构造函数前加void类型符(其他没有返回值的成员函数必须加类型符void)。 ③在实际应用中,在定义类时通常应定义一至多个构造函数(重载),以对各数据成员进行初始化;如果不给出构造函数,系统将自定义一个构造函数。 ④构造函数可以可以带参数,也可不带任何参数(称无参构选函数),还可以使用缺省参数。 ⑤不能象普通成员函数一样单独调用。 2.析构函数 ⑴析构函数的定义 格式: ~类名(void) { 析构函数体} ⑵析构函数的调用 析构函数是在撤销对象时自动调用的。 ⑶说明

相关文档
相关文档 最新文档