还剩20页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
C++面向对象程序设计课程实验教学大纲
一、学时数学时
二、授课对象计算机科学与技术专业(本科)
三、内容提要1.本实验内容作为C++面向对象程序设计理论联系实际,培养增强学生动手能力2.实验内容主要包括在VISUALC++环境下调试C++程序,熟悉C++语言特点
四、考试方式实验报告及成绩
五、教材及参考书1.C++程序设计语言教程(语言基础)麦中凡编著北京航空航天大学出版社,1995年7月第一版2.面向对象程序设计高级教程陈奇编著高等教育出版社
2001.63.C++编程思想(美)BruceEckel著机械工业出版社
2000.7
六、实验内容安排实验
一、VisualC++集成编程环境的使用
一、 实验目的与要求使学生了解Visualc++
6.0集成编程环境(VCIDE)及其基本功能,初步学会应用Visualc++
6.0集成编程环境进行c++程序的编辑、编译、连接、调试、运行本实验为验证性实验
二、 实验内容
1. Visualc++
6.0的启动;
2. Visualc++
6.0集成编程环境的组成及基本功能;
3. 程序的编辑、编译、语法错误的排除、连接、调试、运行
三、实验时数4学时
四、相关内容Visualc++
6.0集成编程环境的使用方法简介
(1)Visualc++
6.0集成编程环境的功能非常强大,我们仅要求学生了解其中的几项基本功能,包括
(1)C++sourcefile的处理
(2)调试器Debugger的使用
(3)用MFCAppWizard(Exe创建应用项目本实验先简单介绍C++sourcefile的编辑、编译、连接、调试、运行其它功能将在后继实验中陆续介绍1.上机方法和步骤1)1)启动VisualC++,启动方法见图1-1 图1-1通过程序菜单启动VisualC++2)创建一个新的C++SourceFile(见图1-2)在VC的主窗口中打开“文件”菜单,单击“New”命令选项,进入“New”对话框,选择该对话框的“File”页,在该页的File功能列表中双击“C++Source”项,则进入到程序文件编辑窗中 图1-2选择“C++Source”功能3)编辑C++SourceFile进入“程序文件编辑“窗中(见图1-3),即可用Windows提供的文本编辑的一般方法编辑程序,所谓一般方法包括文字或文字块的输入、修改,文字或文字块的删除、复制、粘贴等图1-3VC的程序编辑器 4)保存C++文件程序编辑完毕(或者程序部分编辑完成),可以执行文件保存命令(Save或SaveAs)以保存文件,“SaveAs“命令所对应的对话框如图1-4所示,源程序文件(C++SourceFile)的扩展名为cpp图1-4“SaveAs”对话框 5)源程序文件的编译执行“Build”菜单上“Compile”命令,即可对已打开的源程序文件进行编译,编译结果(含出错信息)显示在主窗口下部的“编译结果信息”输出框中(图1-5的红框部分)图1-5编译结果信息输出 6)如果程序有语法错,可参照“输出窗中给出的提示进行修改,然后重复5)—6),直至出错提示全部消除,生成目标文件(*.obj)以及其他相关文件7)生成可执行文件(程序的链接)执行“Build”菜单上“Build”命令,即可对已生成的的目标文件进行链接,生成可执行文件(*.exe),Build结果(含出错信息)显示在主窗口下部的输出框中(图1-6的红框部分)图1-6链接结果信息输出 8)程序的执行执行“Build”菜单上“Excute”命令,即可执行步骤7)所生成的可执行文件,并显示如图1-7所示的Dos窗口图1-7执行C++Source程序所显示的窗口2.注意事项
(1)应建立专用的文件夹来保存源程序文件并且要记住该文件夹的准确路径
(2)程序如有语法错误,编译程序会以语句行为单位在输出框中给出详细的出错信息,只要双击输出框中的某条出错信息,光标即自动定位到包含该错误的语句行上(编辑窗中)
(3)一个语法错误可能导致出现多个相关语法成分出现语法错误,排除主要的语法错误后,相关的语法错误则同时自行排除 实验
二、C++的基本i/o流控制
一、实验目的与要求本实验为证性实验,旨在使学生加深对i/o流及i/o操作的理解,学会运用i/o流类提供的基本操作符和各种格式控制符实现程序中的简单的输入、输出处理
二、实验内容1.编制简单的程序,对插入运算符往输出流(cout和clog)中输出各种数据的功能进行验证(输出项必须包括常量、变量、函数调用和表达式等)2.编制简单的程序,对提取运算符从输入流(cin)中提取键盘键入的字符串,并转换成各种数据赋予指定变量的功能进行验证(输入项必须包括各种类型的变量)3.常用的格式控制符的功能和输出格式验证,包括设置浮点数格式、设置输出域宽、设置填充字符、设置和输出16进制数据等,可以自行编制程序也可以利用教材和讲义中的对应的程序实例进行验证
三、实验时数4学时
四、相关内容、i/o流的常用格式控制符控制符作用Dec10进制输出格式Hex16进制输出格式Oct8进制输出格式Setfillc设置填充字符为c(c表示任意字符)Setprecisionn设置浮点数的数字位数Setw设置输出域宽为n(n个字符)Setiosflagsios:fiexde设置固定的浮点表示格式Setiosflagsios:scientific设置指数表示格式Setiosflagsios::left设置左对齐Setiosflagsios::right设置右对齐Setiosflagsios::skipws忽略前导空白Setiosflagsios::uppercase设置16进制数大写输出(A-F)Setiosflagsios::lowercase设置16进制数小写输出(a-f) 实验
三、语句与简单的程序设计
一、实验目的与要求使学生加深对C++各种语句的语法、语义及语用环境的理解,初步学会综合运用各种基本数据类型各种语句(if语句、switch语句、各种循环语句等),编写含有选择结构、重复结构的c++程序初步掌握程序的调试方法
二、实验时数4学时
三、实验内容本实验与课堂教学中的程序结构、if语句、switch语句、循环语句等三个阶段同步进行,包括以下三个实验1.编写计算生日是星期几的程序 程序功能输入生日的日期(年、月、日),输出星期几 测试数据请分别输入三个同学的饿生日日期进行验证2.编写“乘法口诀”表的程序 程序功能在屏幕上输出以下二种格式的乘法口诀表乘法口诀表
(1)*1234567891123456789224681012141618336912151821242744812162024283236551015202530354045661218243036424854771421283542495663881624324048566472991827364554637281乘法口诀表
(2)*12345678911 224 3369 4481216 5510152025 661218243036 77142128354249 8816243240485664 991827364554637281 3.编写程序用字符组成各种图案 程序功能在屏幕上输出以字符组成的三角形(金字塔)和梯形(可参照图3-1和图3-2所示的图例)**************************************************************************图3-1用“*”组成的三角形 #################################################################图3-2用“#”组成的梯形 要求组成图形的字符和图形的行数通过键盘输入 测试数据请分别输入三组数据进行测试实验
四、函数、程序结构、递归程序设计
一、实验目的与要求使学生掌握函数声明、函数调用的语法,学会应用c++的各类系统函数,学会编写多文件结构的程序,了解递归程序的运行机制和运行过程
二、实验时数4学时
三、实验内容本实验与课堂教学中的函数、程序结构等教学内容同步进行,包括以下二个实验1.“hanno”塔问题中盘子的移动过程可视化 程序功能实现模拟“hanno”塔问题的递归函数及其调用,显示递归函数的调用和执行情况,显示盘子的模拟移动情况,例如当盘子数为3时,对应的显示序列为A-CA-BC-BA-CB-AB-CA-C 测试数据输入不同的盘子数,观察程序的执行情况2.简单的表格框线自动生成程序 程序功能提示输入行数、列数、列宽以及表格标题等参数,根据用户输入的上述参数在屏幕上显示对应的表格框线 具体要求
(1)
(1) 将各主要功能设计函数,分别编写成多函数的程序和包含多个源程序文件的多文件结构程序
(1)
(2) 独立完成程序设计、调试和测试
(1)
(3) 提交实验报告(设计报告)实验报告的主要内容包括实验目的,程序功能分析,算法(流程图),源程序,若干组测试数据和测试结果等 实验
五、数组、结构、指针的综合应用
一、实验目的与要求使学生进一步理解数组、结构、指针这些构造数据类型的概念、用途,熟悉上述各种数据类型定义的语法,学会应用数组、结构、指针等构造数据类型编写数据处理序
二、实验时数4学时
三、实验内容本实验与课堂教学中的数组、结构、指针等教学内容同步进行,强调三者的综合应用,包括以下二个实验1.字符串的输入与排序 程序功能输入n行文本(字符串),将它们排序后逐行输出 具体要求1)1)n行文本的保存可以分别采用以下方法
(1)用二维字符数组来保存所输入的字符串
(2)用一维字符指针数组来保存字符串首地址的程序,对两种保存和表示方法进行比较比较1)2)排序方法自选1)3)对程序功能进行分解,每一个子功能,例如输入、排序、输出等,请用函数实现1)4)提交实验报告(设计报告)实验报告的主要内容包括实验目的,程序功能分析,算法(流程图),源程序,若干组测试数据和测试结果等2.用链表实现学生花名册管理 程序功能
(1)
(1) 创建一个包含n个学生结点的链表(n值自定),动态构成学生花名册,学生数据包括学号、姓名、性别、专业、宿舍号
(1)
(2) 对所创建的学生花名册(链表)按学号的增序方式排序(调整结点位置)
(1)
(3) 按学号在链表中查询,并输出查询结果 具体要求提交实验报告(设计报告)实验报告的主要内容包括实验目的,程序功能分析,算法(流程图),源程序,若干组测试数据和测试结果等实验
六、面向对象程序设计基础
一、实验目的与要求使学生掌握类的概念和语法;了解面向对象程序设计的方法和特点;学会应用c++的文件流类进行文件操作,包括创建、打开文件,读文件,写文件等
二、实验时数4学时
三、实验内容本实验与课堂教学中的类与数据抽象,文件等章节同步进行,包括以下二个实验1.日期类的设计 日期类的基本属性请自行描述 日期类的功能(行为)
(1)
(1) 设置日期
(2)能按dd/mm/yyyy、yyyy-mm-dd、yyyy.mmdd等多种格式显示日期
(3)输出对当前日期加上一天后的日期
(4)输入日期,显示该日是星期几 具体要求
(1)
(1) 用所设计的类定义日期对象,并进行测试
(1)
(2) 提交实验报告(设计报告)2.文件的基本操作 程序功能读取t
1.txt文件,并将所读到的各行在行首加上行号后,逐行输出到t
2.txt文件中t
1.txt文件t
2.txt文件 要求
(1) 按上述所给功能设计程序,并进行测试;
(2) 将只能处理t
1.txt文件,改为能处理任意的文本文件,源文件名和目标文件名通过键盘输入,对改进的程序提供若干组数据进行测试
(3) 提交实验报告实验
七、VC项目设计(用MFCAppWizard创建应用项目)
一、实验目的与要求使学生熟悉用AppWizard创建应用项目的基本操作,了解VC应用程序的结构和特点,了解VC控件的应用
二、实验时数4学时
三、实验内容
1.实验1.用MFCAppWizard(Exe创建应用程序框架(窗口) 要求创建多文档界面的应用程序框架并在客户区显示“欢迎进入本系统!”(如图7-1所示) 图7-1多文档界面的应用程序窗口 操作步骤1)创建一个项目
(1) 打开“文件“菜单”,单击“New”命令选项,弹出“new”对话框;
(2) 单击“new”对话框的“projects”页标签,进入“projects”页
(3) 在该页的右侧输入项目名,项目文件夹名等,然后单击“OK”按纽,进入MFCAppWizard2)指定应用项目的类型并选择语言(向导步骤1)项目类型包括单文本(Singledocument),多文本(Multipledocuments)以及对话框(Dialogbased)等图7-2MFCAppWizard步骤1 3)选择数据库支持方式(向导步骤2)图7-3MFCAppWizard步骤2 4)选择复合文档支持方式(向导步骤3)图7-4MFCAppWizard步骤3 5)指定窗口特征及工具条的风格等(向导步骤4)图7-5MFCAppWizard步骤4 6)指定项目风格等(向导步骤5)图7-6MFCAppWizard步骤5 7)列出新项目的框架规格说明信息(向导步骤6)单击“OK”按纽后,向导将自动创建项目,并进入编辑状态图7-7MFCAppWizard提示信息8)项目的编辑我们可以在vc的集成编程环境中,对组成项目的各个类进行编辑,使项目得以完善(参见图7-8)下面以在项目的主窗口中显示文字在一操作为例,给出编辑方法
(1)单击ProjiectView窗口中的ClassView标签,进入ClassView,该页显示了组成项目的所有的类;
(2)展开其中的cp1View节点(打开cp1View类);
(3)双击该类的onDraw()成员函数,在代码编辑窗中显示该函数的代码;
(4)在代码编辑窗中修改该函数的代码,在该函数的ASSERT_VALIDpDoc行下面输入以下行//TRACEThiswasprintedduringdebugging\n;pDC-TextOut2020欢迎进入本系统!;图7-8项目编辑窗(源程序) 9)建造项目(Build)以生成可执行文件 10)运行应用程序,观察程序运行效果
2.实验2.创建口令对话框对话框是实现人机交互的重要工具,VisualC++的对话框类似于VB或Delphi的form,对话框和各种控件的结合使用,可以建立形形色色的功能十分强大的应用程序窗口界面,这就是所谓的对话框编程技术应用程序中需要各种各样的对话框,例如消息对话框、口令对话框、进度条对话框,属性页对话框,表单对话框以及各种通用对话框(文件对话框、字体对话框、颜色对话框等)从执行方式又可将对话框分为模态和非模态两大类,模态对话框执行期间独占系统资源,只有在关闭之后,才可以执行程序的其它部分;非模态对话框执行期间,允许程序的其它部分同时执行 要求创建一个多文档工程项目,在该项目中添加一个口令对话框(图7-9),以防止非法用户侵入图7-9口令对话框 实现步骤1.建立多文档应用程序框架(工程)操作过程略2.编辑对话框资源
(1)在IDE的工作区中选择ResourceView标签,可以在该标签页中查阅、编辑项目的各种资源;
(2)选择Dialog条目,单击鼠标右键,弹出快捷菜单,执行InsertDialog命令,此时在Dialog条目下自动增加一个标识号(id)为IDD_DIALOG1的条目,同时在客户区中显示对话框资源的框架
(3)移动鼠标到对话框资源上,单击鼠标右键,在弹出的快捷菜单上执行“Properties”命令,弹出“DialogProperties”对话框
(4)利用“DialogProperties”对话框进行对话框属性、风格等的设置a.将默认的对话框资源标识号IDD_DIALOG1改为IDD_PASSWORD_DIALOG;b.将对话框的标题改为口令
(5)调整对话框上各个控件的布局并编辑各个控件的属性a.利用鼠标拖动操作将两个按纽控件移动到对话框的底部b.在“PushButtonProperties”对话框的“General”标签页中将两个按纽的Caption属性分别改为确认和取消(在选中的按纽上单击右键并所弹出的快捷菜单上执行“Properties”命令即可进入该对话框)
(6)在对话框资源上增加新的控件需要增加的控件有显示“请输入口令”的StaticText控件,对口令内容作简要说明的StaticText控件,口令输入框—EditBox控件增加控件的操作 在Control工具栏中对应的控件上单击左键,表示选中该控件; 在对话框的对应位置上拖动鼠标以确定控件放置位置和控件大小; 修改StaticText控件的Caption属性值,例如改为请输入口令; 将作为口令输入框的EditBox控件的ID标识改为IDC_PASSWORD_EDIT,并在Styles标签中选中Password属性,以将输入风格设置为口令风格(用*代替所输入的字符)注意进入控件属性对话框的“ExtendedStyles“标签页,可以进一步设置控件的风格,例如对StaticTextClientedge、Staticedge和Modalframe等属性,达到如下图所示的效果
(7)执行Layout菜单上的TabOrder命令以调整对话框上各个控件的激活顺序调整时只须按需要的顺序单击对话框上的各个控件即可,控件左上角所显示的数字即表示激活顺序
(8)单击“Dialog工具栏(在IDE窗口的下方)中的Test按纽进行对话框效果测试3.创建对话框类并添加代码1)创建对话框类cPasswordDialog操作步骤如下
(1)在对话框资源上单击右键,在弹出的快捷菜单上选择并执行“ClassWizard”命令(也可直接View|ClassWizard)弹出“MFCClassWizard”对话框,并紧接着弹出“AddingClass”对话框(仅当系统检测到有新建的对话框资源、菜单资源等,并且该资源尚未与相应的类建立关联,系统就会自动弹出时“AddingClass”对话框询问是否建立新类)
(2)在“AddingClass”对话框中直接单击“OK”按钮(确认默认选择Createanewclass),进入“NewClass”对话框,在New编辑框中输入类名cPasswordDialog,其它设置均为默认值单击“OK”按钮后进入“MFCClassWizard”对话框(该对话框中Projects项的值为Diaolg、Classname项的值为cPasswordDialog均无须改变)
(3)进入“MFCClassWizard”对话框的“MemberVariablee”标签页,选中ControlIDs框中的IDC_PASSWORD_EDIT条目,单击“AddVariable”按钮,弹出“AddVariable”对话框
(4)在“AddVariable”对话框中添加cPasswordDialog类的数据成员m_Password,并将该成员与Editbox控件(用作口令输入框)建立关联,该变量用来保存用户输入的口令,所以数据类型int
(5)单击“OK”按钮,返回“MFCClassWizard”对话框,在“MemberVariablee”标签页下部新增的Minimumvalue、和Maximunvalue两个项目中分别设置口令的最小值
(0)和最大值
(9999),单击“OK”按钮至此,cPasswordDialog类创建完毕,一旦创建了该类的对象后,就可以使用口令对话框了2)添加代码该段代码用来创建口令对话框对象并处理用户的各种交互(例如单击“确认”按钮或“取消”按钮,输入正确的口令或输入不正确的口令,对话框对象所必须进行的处理)由于口令输入和验证一般都程序开始时执行,也即该对话框必须在程序窗口出现之前就提前出现,所以必须在应用程序类(CDialogApp)的InitInstance函数中添加完成上述处理的代码BOOLCDialogApp::InitInstance{……pMainFrame-UpdateWindow;cPasswordDialogcDlg;//声明CPasswordDialog类的一个对象ifcDlg.DoModal==IDOK//用户按下确认按钮{ifcDlg.m_Password!=1925//口令为整数1925{//如果口令不对,则显示出错信息,然后程序结束AfxMessageBox口令错误,确定后将退出程序;returnFALSE;}}else//如果按下取消按钮,程序也将结束returnFALSE;returnTRUE;}具体操作步骤如下
(1)(1)在工作区的ClassView标签中选中Dialog|CDiaologApp|InitInstance函数并双击左键,客户区中显示InitInstance函数的代码;
(1)(2)在InitInstance函数中增加新的代码;
(1)(3)在文件Dialog.cpp的头部加入下面的命令行#include“cPasswordDialog.h”可以直接打开Dialog.cpp文件进行添加,也可以双击Globals中的TheApp,即可打开Dialog.cpp文件4.编译、链接Dialog项目(BuildDialog)5.运行Dialog项目
四、相前内容消息对话框简介1.消息对话框的作用消息对话框用来向用户显示一些询问和选择、警告和错误提示等信息,也可以在程序调试时,显示变量的值消息对话框上的主要控件欲显示的信息内容(字符串)、图标、按纽2.创建消息对话框的函数通过调用AfxMessageBox()函数或MessageBox()函数都可以创建消息对话框例如函数AfxMessageBox您确实要取消吗?MB_ICONQUESTION+MB_YESNO+MB_DEFBUTTON2被调用后,将显示如下的对话框CDialogApp::InitInstance函数加入该对话框的显示和处理后的代码如下BOOLCDialogApp::InitInstance{……pMainFrame-UpdateWindow;cPasswordDialogcDlg;//声明CPasswordDialog类的一个对象while1{ifcDlg.DoModal==IDOK//用户按下确认按钮{ifcDlg.m_Password!=1925//口令为整数1925{//如果口令不对,则显示出错信息,然后程序结束AfxMessageBox口令错误,确定后将退出程序;returnFALSE;}elsebreak;}else//如果按下取消按钮,程序也将结束{ifAfxMessageBox您确实要取消吗?MB_ICONQUESTION+MB_YESNO+MB_DEFBUTTON2==IDYESreturnFALSE;}}returnTRUE;}3.AfxMessageBox函数简介1)原型int_cdeclAfxMessageBoxunsignedshort*//指向显示信息字符串的指针(可以直接给出字符串常量)unsignedint//消息对话框风格unsignedint)消息对话框风格是指其上的图标类型和按钮类型的组合各种图标类型和按钮类型都用整型符号常量表示,可以使用加法运算符(+)或位或运算符(|)实现组合例如MB_ICONQUESTION+MB_YESNO+MB_DEFBUTTON22)图标类型3)按钮类型 4)函数返回值如下表所示返回值意义IDABORT放弃(Abort按钮被点击)IDCANCEL取消(Cancel按钮被点击)IDIGNORE忽略(Ignorel按钮被点击)IDNO否(No按钮被点击)IDYES是(Yes按钮被点击)IDRETRY重试(Retry按钮被点击)IDOK确认(Ok按钮被点击) aaaaaaaaaaaaaabbbbbbbbbbbbbccccccccccccccccccdddddddddeeeeeeeeeeeeeeee1:aaaaaaaaaaaaaa2:bbbbbbbbbbbbb3:cccccccccccccccccc4:ddddddddd5:eeeeeeeeeeeeeeee。