《面向对象Windows编程技术》实验指导书 信息.docx
- 文档编号:23826001
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:34
- 大小:363.98KB
《面向对象Windows编程技术》实验指导书 信息.docx
《《面向对象Windows编程技术》实验指导书 信息.docx》由会员分享,可在线阅读,更多相关《《面向对象Windows编程技术》实验指导书 信息.docx(34页珍藏版)》请在冰豆网上搜索。
《面向对象Windows编程技术》实验指导书信息
Windows程序设计实验指导书
(第二版)
彭永康杨利华
信息工程学院
2008-09-10
目录
第一章VC开发环境简介3
1.1熟悉VisualC++实验环境3
1.2VC++6.0的使用——控制台应用4
1.3Windows应用10
1.4编写简单的计算程序15
第二章实验内容安排18
第三章实验要求、评分标准19
第四章实验内容20
实验一C/C++程序初步20
实验二 面向对象编程实践22
实验三MFC控件编程实践24
实验四文件的操作26
实验五MFC综合编程29
第一章VC开发环境简介
本章将简要介绍VisualC++开发环境的一些知识,并尝试实现一个简单的DOS程序和Windows程序。
通过本次实验,你可以了解用VisualC++开发C++应用程序的过程。
1.1熟悉VisualC++实验环境
[步骤]
(1)启动DeveloperStudio,看看初始化界面由哪些部分组成
(2)查看各菜单项,看看都有哪些子菜单和命令
(3)将鼠标放置于各工具条图标上,系统会自动显示该图标代表的命令含义,了解一下都有哪些命令。
(4)在任意工具条上单击鼠标右键,弹出式菜单上将显示所有可用的工具条,选择其中没有对号(√)的项,看看有什么效果,再选择有对号的项,又有什么效果?
(5)将鼠标移动到任意工具条上,将鼠标放到图标间隙,按下鼠标左键不放,移动鼠标到屏幕中间,有什么现象发生?
再将它拖回到原来位置,有什么现象发生?
(6)将鼠标移动到左边的工作区窗口,按下鼠标左键不放,移动鼠标到屏幕中间,有什么现象发生?
再将它拖回到原来位置,有什么现象发生?
(7)将鼠标移动到下边的输出窗口,按鼠标右键,弹出一个菜单,选择其中的菜单项"Hide",结果如何?
要重新显示该窗口,选择菜单View|Output,窗口是不是又显示出来了?
(8)学习使用帮助系统。
如果你用的是VisualC++5.0,则在工作区窗口的InfoView中选择你感兴趣的内容,双击它,在文档区显示具体的帮助信息。
如果你用的是VisualC++6.0,选择菜单Help|Contents,启动MSDN联机帮助系统,学习使用该帮助系统。
联机帮助系统是一个相对独立的程序,它和DeveloperStudio是两个程序,但是它的启动和停止都受DeveloperStudio影响。
MSDN联机帮助系统运行的前提条件是DeveloperStudio在运行。
(9)选File|Exit退出DeveloperStudio。
1.2VC++6.0的使用——控制台应用
1.新建一个项目。
单击File,弹出图1如下:
图1
点击New后弹出如下对话框:
图2
在图2中的Projects标签下选择Win32ConsoleApplication,在右边的Projectname输入框中输入你的项目名称(此例中我们把项目名称取为FirsPro)
,在
中通过点击
可以选择项目的保存位置。
注意要选中单选按钮
,然后点击下面的
,弹出如下对话框:
图3
点击
按钮,再在随后弹出的对话框中点击“OK”按钮就建好了一个新项目了。
2.在项目中添加c++源文件。
点击如图4中的
,展现项目的文件视图。
图4
点击菜单
中的File,在弹出的菜单中点击New,弹出图2,在图2中,选择File标签
图5
在图5中选择c++SourceFile,在输入框
中输入c++源文件的文件名(此例中源文件取名为ComplexNum),注意不要加文件名后缀,点击
后就建好了一个c++源文件。
结果如图6所示:
图6
在图6中的右侧就可以输入代码了。
如图7:
完成代码的输入后点击图7中右上方
中的
进行对源代码的编译,如果没有错误,就点击
生成可执行文件,最后点击
运行该程序。
[常用编辑命令]
虽然许多编辑命令可以通过菜单和工具栏实现,但大量的编辑命令都可以通过键盘实现。
以下命令通常用键盘实现:
*撤消前一次操作。
当你进行了一次错误的操作时,可以通过敲击键盘上的Ctrl+Z完成;
*重复前一次操作。
通过敲击Ctrl+Y实现
*剪切一行。
用Ctrl+L来删除一行并将它放到剪切板中
*剪切。
将选中的文本删除并将它放到剪切板中,用Ctrl+X实现
*复制。
将选中的文本复制到剪切板中,用Ctrl+C实现
*粘贴。
将剪切板中的内容放到编辑器中文本的当前位置处(由光标指示),用Ctrl+V实现
1.3Windows应用
用AppWizard建立一个MFCWindows应用,在窗口中输出"Hello,World!
"
术语:
AppWizard是一个工具,利用该工具,你可以创建一个建立在MFC基础上的窗口应用程序框架,然后在这个框架中加上自己的应用逻辑。
你可以选择所创建的应用类型,最常用的是多文档应用(就象你用的字编辑器MicrosoftWord一样,可以同时打开多个文档窗口的应用)、单文档应用(类似于Windows提供的notepad,一次只能打开一个文档)和对话框应用(类似于Windows的时钟程序)。
[步骤]
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显示一个关于该项目的摘要,列出这些类和你所选择的特征。
如图所示:
(7)单击OK(完成)
,系统自动产生helloMFC所需要的文件。
2)浏览helloMFC项目
当你用MFCAppWizard创建了helloMFC项目后,这个项目的工作区窗口将会打开,(如下图):
其中ClassView显示工作区中所有项目的类及类的成员;ResourceView显示项目中包含的资源文件;FileView显示项目中的各种文件资源。
你可以先选择FileView看一下AppWizard为你创建了哪些文件,然后选择ClassView看一下定义了哪些类。
ClassView中还可以看到一个Globals文件夹,单击它前面的加号,可以看到,有一个预定义的全局变量theApp,这是你的Windows应用程序类的对象。
3)编译连接运行
按F7或者选择菜单Build|BuildhelloMFC.exe或
,编译连接得到可执行程序,再按Ctrl+F5、
或者选择Build|ExecutehelloMFC.exe运行该程序。
程序的结果如下:
4)用MFC处理输出
现在是你来修改程序的时候了。
我们希望在程序中间的窗口上显示一行文字“Hello,World"。
如何修改呢?
(1)在工作区窗口中选择ClassView标签,单击helloMFCclasses前面的加号(如果已经变成减号则不做此操作)
(2)单击类CHelloMFCView类前面的加号
(3)双击OnDraw()函数,在右边的文档将显示窗口显示文件helloMFCView的内容,并且自动将光标定位到函数OnDraw()处。
(4)修改OnDraw函数的定义,在最后一行加一句:
pDC->TextOut(50,50,"Hello,World");
(5)按Ctrl+s或者选菜单File|Save来保存所作的修改
5)编译连接并运行
重新编译连接该项目,运行程序,你可以用Ctrl+F5直接运行程序,系统将询问你是否重新编译该项目,回答“是(Yes)”,如果有编译错误,仔细检查你加的一句话,是否有错。
当编译连接通过后,系统会自动运行该程序。
结果与上面有什么不同?
经过上述修改后,程序可以输出一行文字“Hello,World"。
这是你实现的第一个Windows程序!
是不是很简单?
!
不要担心有很多不懂的地方,后面的实验中你会慢慢理解。
现在你应该会觉得:
哦,原来Windows程序的开发这么简单!
1.4编写简单的计算程序
输入圆的半径,计算圆的周长和面积并输出。
[测试数据]
输入:
2
输出:
Theperimeterofthecircle:
12.5664
Theareaofthecircle:
12.5664
输入:
10
输出:
Theperimeterofthecircle:
62.8318
Theareaofthecircle:
314.159
[步骤]
1)创建一个控制台项目
选择菜单File|New,在Projects标签下选择Windows32ConsoleApplication,输入项目名称“circle",然后按OK
2)在项目中增加一个文件
选择菜单File|New,在Files标签下选择C/C++SourceFile,输入文件名称“circle",然后按OK
3)在文件中输入以下内容
//该程序让用户输入圆的半径Radius,输出圆的周长Perimeter和面积Area
#include
#include
constdoublePI=3.14159;//定义一个常量PI
intmain(){
intradius;
doubleperimeter,area;
cout<<"Pleaseinputtheradius:
";
cin>>radius;
perimeter=2*PI*radius;//周长=2πR
area=PI*power(radius,2);//面积=πR2
cout<<"Theperimeterofthecircle:
"< cout<<"Theareaofthecircle: "< return0; } 注: power(radius,2)表示求radius的平方,power(x,y)是系统预定义的函数,该函数计算x的y次方。 该函数的原型在文件math.h中说明。 4)编译、连接并运行程序 如果你输入的程序有误,用下面的方法定位并修改错误。 直到编译连接通过。 运行程序,测试数据。 [编译和连接错误定位] *开发环境下方的输出窗口(Output)显示编译和连接过程中出现的错误,错误信息包括: 错误出现的文件名、行号、错误代码。 *如果不懂错误消息,将光标移动到该错误信息,按F1,就可以显示该错误的帮助信息。 *在output窗口,双击错误或者选择该错误再按ENTER键,系统自动将光标移动到发生错误的源程序行,你然后就可以改正错误。 *F4键可以选择并定位下一个错误 [思考问题] (1)程序中为什么要将头文件math.h包含进来? (2)建立控制台应用程序的通用步骤是怎样的? 第二章实验内容安排 课程名称: 面向对象WINDOWS编程技术 课程总学时: 50 实验总学时: 30 面向专业(层次): 信息与计算科学 应开实验项目数: 5个 应开实验时间: 第3学期 实验类别: 专业 本门课程实验目的与要求: 1、掌握面向对象程序设计分析方法,并应用于编程实践。 2、学会设计并调试WINDOWS应用程序,进一步提高开发能力。 3、掌握WINDOWS应用程序设计的基本方法。 本课程实验项目一览表 序 号 实验项目名称 实验学时 目的与要求 实 验 要求 实 验 类 型 每 组 人 数 备注 1 C++应用程序初步 2 了解C++程序设计方法及VC编程环境 必修 验证 1 2 面向对象编程实践 10 掌握类归纳与设计、类的继承与派生、多态等原理及在程序设计中应用 必修 验证 1 3 MFC控件编程实践 12 掌握MFC程序设计方法、MFC控件应用(标准控件、公共控件、文档/视等) 必修 验证 1 4 文件操作 2 掌握MFC文件串行化操作方法 必修 验证 1 5 MFC综合编程 4 设计开发一个基于MFC的小应用程序 必修 综合 1 大纲制定日期: 2004/8大纲执笔人: 彭永康大纲审定人: 章义来 第三章实验要求、评分标准 1.实验前必备做课前预习,准备好预习报告,独立完成实验。 2.实验过程中遵守实验室的各项规章制作,不得在实验过程中玩游戏,从事与本实验无关的内容。 3.课后认真总结,写出实验报告,及时上交教师批阅。 4.不得随意更改实验时间,在安排时间不上实验算旷课处理,整个实验过程中旷课时间占实验总学时40%以上时,该同学的实验成绩作降级处理。 5.实验报告不上交教师批阅的,该同学的平时成绩将作降级处理。 6.实验报告上交率不足70%以上的,考查课该同学最终成绩不得超过中,不足65%不得超过及格,低于65%为不及格;考试课则该同学平时成绩不超过12分。 第四章实验内容 实验一C/C++程序初步 目的: 1.了解简单C++程序的构成; 2.掌握cin,cout等流式输入输出设备的用法; 3.了解掌握函数重载的实现及原理。 实验内容: 1.应用cin,cout实现“Hello,World! ”程序的C++版本。 2.应用函数重载技术实现对整数、浮点数、长整数求绝对值的C++程序。 实验要求: 1.每位同学在实验前认真做好实验准备,阅读VC操作的介绍,对操作VC进行编程的步骤及方法先期进行了解; 2.在实验中出现的错误,先自己进行认真的程序检查,力争自己找出错误并掌握C++中改正错误的方法。 3.在实验结束后,对实验的结果进行整理,并写出一份实验报告,及时上交老师。 参考程序: #include voidmain(){ cout<<”Hello,World! ”< } 思考题: 1.‘\n’字符与endl的作用是否相同,上述程序中的cout<<”Hello,World! ”< Cout<<”Hello,World! \n”; 2.函数重载的原则是什么? 实验二 面向对象编程实践 实验目的: 1.掌握类的抽象与封装,对象的概念及在VC下定义类的方法。 2.类中成员的继承与类的派生实现。 3.掌握从现有类派生出新类的方法及VC下的具体操作。 4.了解在派生类、基类的成员的继承原则。 5.了解基类成员在派生类中的访问控制方式。 6.了解掌握静态多态与动态多态的原理及区别及程序实现方法。 7.了解掌握模板的定义方式及应用。 8.掌握重载的原理与实现方法。 实验内容 本实验内容共分为类的抽象与封装、类的继承及派生、重载、模板等四个实验阶段,共10个实验学时,可按3、2、2、3学时分配方案进行分配。 1.设计实现一类CPerson,拥有姓名、性别、地址、联系电话、Email等数据成员,拥有带参数的构造函数CPerson: : CPerson(…),实现对上述数据成员赋初值;拥有一成员函数Output,实现将姓名、性别、地址、联系电话、Email制表输出。 现有10个人的信息,编程实现输入每人的信息,最后将所有人的信息列表输出。 2.以1题中的CPerson为基类,派生出Teacher、Student两个类,并在它们中增加专业字段,并重载CPerson类中的Output方法,实现在输出1中信息的同时,输出每个人的专业;在学生类中再增设教师ID字段,指出其班主任,最后实现一方法pringClass,按指定的班主任ID打印出该班的学生名单。 3.设计实现一个复数类,对+、-、×、/四种运算符进行重载,实现对复数进行+、—、*、/四种运算。 4.应用模板实现求任意数值的绝对值的C++函数,并验证它。 [思考问题] a)构造函数与析构函数的作用如何? 如何定义它们? b)什么是静态类成员? 在类中为什么只能声明静态类成员的名称,而类中不为静态类成员分配空间? c)父类中具有不同访问属性的成员如何被子类继承? 子类中可不可以有跟父类同名的成员函数? d)简述函数重载的规则。 e)模板的作用是什么? 重载技术与模板有什么异同? 实验三MFC控件编程实践 [实验目的] 1.了解MFC应用程序的构成及向导实现。 2.掌握MFC中的DOC/VIEW结构类型的应用程序的构成及不同的类的作用。 3.掌握MFC中键盘、鼠标事件处理及编程规则;掌握菜单、按钮和工具条的资源编辑及在MFC应用程序中创建它们的方法。 4.掌握MFC中基于对话框及标准控件的UI设计及VC程序实现,重点掌握静态控件、文本框、列表框、组合框、进度条等控件的编程技能。 5.掌握MFC中基于公共控件的UI设计开发方法。 [实验内容] 本次实验项目的实验内容主要是对引导学生掌握MFC程序设计过程中涉及的各项内容,实验内容可分为doc/view及消息处理,对话框设、按钮、文本框及静态文本框,列表框与组合框,进度条与时钟,树视及列表视控件等五个不同小项目来完成,教师可根据需要选择三到四个不同的实验子项目来完成本次实验。 1.根据教材中有关文本/视的教程,练习掌握Doc/View应用程序的开发步骤及过程。 2.对话设计。 (设计实现一个对话框,实现如下功能: 对话上有一文本框(多行显示模式),三个按钮(打开、存储、退出),可实现通过单击“打开”按钮,将一文本文件中的文字信息导入文本框中显示,我们可以对文本框中的文本信息进行编辑,单击“存储”后将数据存入当前目录下的newData.txt文件中(类型为文本类型)) 3.菜单点菜程序设计。 本程序基于对话框开发设计,对话上有一组合框(用于显示菜谱分类),两列表框,一个列表框显示当前分类下的菜的名称各价格,在用户选中(可单选也可多选),单选时双击菜名即可实现点菜操作,多选时,在客户选择相应的菜名后,单击“点菜”按钮,即将客户选中的菜名全部复制到另一列表框中,同时显示客户所选菜的菜金总额。 4.电子时钟。 应用MFC中的OnTimer事件设计实现一电子时钟,时钟以HH: MM: SS.nn方式显示,其中“nn”表示的是百分之一秒计量,同时在本对话框中设计一进度条,进度条中的进度显示的是百分之一秒度量的统计数值,当进度条到达99时,表明计时满1秒。 5.应用树视、列表视实现3中的点菜程序设计开发。 [思考题] 1.doc/view框架下,如何实现对键盘、鼠标事件处理? 2.如何根据需要定制菜单、工具条、状态栏? 3.如何实现文本数据的导入与存储? 4.如何改变文本框中的文字的字型信息? 5.面向对象技术如何应用于MFC编程? 举例说明之。 实验四文件的操作 [实验目的] 1.一步掌握建立、编译、连接与调试Windows应用程序的方法,掌握用MFC中的类CArchive来进行文件串行化操作的方法; 2.学习使用VC6.0环境的基本命令和功能键; 3.学习使用MFC开发程序的方法; [实验内容] 通过键盘输入文字数据,通过doc/view中的串行化机制实现文本数据的自动存取。 [实验步骤] 1、启动VC6.0,新建一个单文档工程,并将该工程取名为TEXT; 2、在资源中增加位图资源,资源名为: IDB_BITMAP1; 3、在视图类中增加消息响应函数OnCreate,用该函数来在视图窗口中创建光标,同时,在该函数中得到字体的特征,函数代码如下: intCTextView: : OnCreate(LPCREATESTRUCTlpCreateStruct) { if(CView: : OnCreate(lpCreateStruct)==-1) return-1; //TODO: Addyourspecializedcreationcodehere //得到系统字体的属性 CClientDCdc(this); TEXTMETRICtm; dc.GetTextMetrics(&tm); //创建光标 bitmap.LoadBitmap(IDB_BITMAP1); CreateCaret(&bitmap); ShowCaret(); return0; } 4、在CtextView类中添加公有成员变量: CStringm_strLine,该变量的作用用于保存键盘所输入的字符,同时添加公用成员变量intm_nWidth和CPointm_ptOrigin; 5、CtextView类中响应鼠标左键按下事件OnLButtonDown,该函数的主要作用确定光标的位置,代码如下: 6、CtextView类中添加字符响应函数OnChar,在该函数中把输入的字符串按格式保存到字符变量m_strLine中,代码如下: voidCTextView: : OnLButtonDown(UINTnFlags,CPointpoint) { //TODO: Addyourmessagehandlercodehereand/orcalldefault SetCaretPos(point); m_strLine.Empty(); m_ptOrigin=point; CView: : OnLButtonDown(nFlags,point); } voidCTextView: : OnChar(UINTnChar,UINTnRepCnt,UINTnFlags) { //TODO: Addyourmessagehandlercodehereand/orcalldefault CClientDCdc(this); CFontfont; font.CreatePointFont(150,"宋体",NULL); CFont*pOldFont=dc.SelectObject(&font); TEXTMETRICtm; dc.GetTextMetrics(&tm); if(0x0d==nChar) { m_strLine.Empty(); m_ptOrigin.y+=tm.tmHeight; } elseif(0x08==nChar) { COLORREFcl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象Windows编程技术 面向对象Windows编程技术实验指导书 信息 面向 对象 Windows 编程 技术 实验 指导书