(3)CStudent和CTeacher类有什么不同?
为什么要把CStudent中的数据成员student定义为public,若改为private会有什么不同?
(4)若将基类CPerson中的私有数据成员pName和pID变成:
char*pName;
char*pID;
则这个程序应如何修改?
实验6多态和须函数、运算符重载
实验内容
(1)程序EX_shape:
定义一个抽象类CShape,包含纯虚函数Area(用于计算面积)和SetData(用于重设形状大小),然后派生出三角形CTriangle类、矩形CRect类、圆CCircle类,分别求其面积。
最后定义一个CArea类,计算这几个形状的面积之和,各形状的数据通过CArea类构造函数或成员函数来设置,编写一个完整的程序。
(2)程序Ex_Complex:
定义一个复数类CComplex,通过重载运算符“*”和“/”,直接实现两个复数之间的乘除运算。
运算符“*”用成员函数实现重载,而运算符“/”用友元函数实现重载。
编写一个完整的程序(包括测实运算符的程序部分)。
提示:
两复数相乘的计算公式:
(a+bi)*(c+di)=(ac_bd)+(ad+bc)i,而两复数相除的计算公式为:
(a+bi)/(c+di)=(ac+bd)/(c*c+d*d)+(bc_ad)/(c*c+d*d)i。
实验准备和说明
在学习完第2章的“运算符重载”内容之后进行本次实验。
编写本次上机所需要的程序。
实验步骤
1.创建工作文件夹
2.输入并运行程序Ex_Shape.cpp
3.输入并运行程序Ex_Complex.cpp
4.退出VisualC++6.0
5.写出实验报告
思考与练习
(1)在程序Ex_Shape中,若基类CShape中没有纯虚函数SetData(),则编译肯定会有错误,这是为什么?
(2)用友元函数和成员函数运行运算符重载的区别是什么?
实验7输入/输出流库
实验内容
程序EX_fILE:
用文件来实现一个学生纪律的添加,查找等操作.
提示:
学生纪律用类CStudentRec表示,它的数据成员有;姓名,学号,3门课的成绩以及平均分,成员函数记录显示Print,记录键盘输入Input和数据校验Validate以及"<<"">>"运算符重载等。
文件操作用CStuFile类定义,成员函数有数据的添加Add,查找SEEK,显示List等。
实验准备和说明
(1)在学习完第2章内容之后进行本次实验.
(2)编写本次上机所需要的程序.
实验步骤
1.创建工作文件夹
2.创建控制台应用程序项目Ex_File
3.添加Ex_File.h文件
4.添加Ex_File.cpp文件,测实CStudentRec类
5.添加CStuFile类代码
6.添加CStuFile类的测实代码
7.退出VisualC++6.0
8.写出实验报告
思考与练习
若CStuFile类还能实现记录的修改,删除,排序功能(按平均分高低),则应该如何编程?
(提示:
对于删除来说,由于文件中的记录删除需要移动大量数据,因此为避免这种情况发生,删除时只需将文件中要删除的记录的标志成员chFlag变成'N'即可.)
实验8MFC基本应用程序的建立
实验内容
在一个默认的的单文档应用程序Ex_SDJ中通过映射计时器消息实现这样的功能:
无论在Ex_SDJ应用程序窗口的客户区中单击鼠标左键或右键,都会弹出“消息”对话框,显示鼠标左键或右键的单击次数。
使用调实器对上述程序的流程和鼠标单击次数进行调实。
实验准备和说明
在学习完第三章内容之后进行本次实验。
构思本次上机所需要的程序。
调实为本书新增的内容,要学会掌握其调实过程。
实验步骤
1.创建工作文件夹
2.创建单文档应用程序Ex_SDJ
3.添加数据成员
4.添加消息映射
5.设置断点
6.控制程序运行
7.查看和修改变量的值
8.退出VisualC++6.0
9.写出实验报告
思考与练习
若向一个类添加成员函数,则应如何进行?
在Ex_SDJ中,若再在CMainFrame类添加WM—LBUTTOMDOWN消息映射,并在映射函数添加弹出“消息”对话框的代码。
这样,就在CMainFrame类和CE_SDIView中都有该消息的映射函数,测实一下,看看在CMainFrame类的这个消息映射函数会不会执行?
为什么?
用调实器调实其结果。
实验9对话框和按钮控件
实验内容
设计一个对话框,用于问卷调查,针对上网话题提出一个问题:
“你每天上网的平均时间”,该问题的备选答案是“<1小时”、“<2小时”、“<3小时”和“>3小时”。
当回答问题后,单击“确定”按钮,弹出“上网问卷调查”对话框,显示用户选择的内容。
实验准备和说明
在学习完第四章“静态控件和按钮”内容之后进行本次实验。
复习“对话框的使用”和“控件的创建和使用方法”。
实验步骤
1.创建工作文件夹
2.创建单文档应用程序Ex_Research
3.设计“上网问卷调查”对话框
4.修改代码
5.编译运行并测试
6.写出实验报告
思考与练习
(1)在本实验中,当单击消息对话框的“确定”按钮后,对话框全部消失。
若要使“上网问卷调查”对话框一直显示,直到单击“”按钮,则应该如何设计和编程?
(提示:
可在对话框中另添加一个按钮控件,当单击该按钮后,弹出一个消息对话框,显示用户选择的内容)
(2)若向一个类添加成员函数,则应如何进行?
实验10编辑框、列表框和组合框
实验内容
设计一个学生成绩管理对话框应用程序Ex_Input,其运行结果如图T10.1所示,单击“添加”按钮后,学生成绩记录添加到列表框中,在列表框中单击写生成绩记录,则记录内容显示在左边的相关控件中,单击“删除”按钮,则删除该记录。
许说明的是,当列表框没有记录活没有选定的记录项,则“删除”按钮是灰显的。
实验准备和说明
在教程第四章讲授“组合框”后进行本次实验。
构思本次上机所需的程序。
实验步骤
1.创建工作文件夹
2.设计“学生成绩”对话框
3.添加CStudentRec类代码
4.添加控件变量及初始代码
5.完善代码
6.写出实验报告
思考与练习
若在Ex_Input中还需要对添加的学生成绩记录进行修改,即在列表框中选中某记录项时,单击“修改”按钮,修改当前记录。
则这样的功能应如何实现?
提示:
可先将原来的记录项删除,然后再添加。
如在Ex_Input中还需对添加的学生记录进行重复判断,即判断添加的记录的学生姓名是否与已添加的记录重名,若是,则不添加,并弹出相应的消息对话框。
则上述的代码应如何修改?
实验11进展条,滚动条和滑动条
实验内容
设计一个对话框应用程序Ex_Color,其运行结果如图T11.1所示。
操作滚动条,滑动条和进展条控件可以调整RGB颜色的三个颜色分量,R(红色分量),G(绿色分量)和B(蓝色分量),并根据用户指定的颜色填充控件。
实验准备和说明
在学习完第4章内容之后进行本次实验。
构思本次上机所需要的程序。
实验步骤
1.创建工作文件夹
2.设计对话框
3.添加成员函数Draw
4.添加初始化代码
5.完善代码
6.写出实验报告
思考与练习
在Ex_Color的基础上,若添加设置对话框的背景色的功能,则应如何添加代码?
实述当单击旋转按钮控件的向上箭头时,程序流程是怎样的?
实验12菜单、工具栏和状态栏
实验内容
创建一个单文档应用程序EX_SDI,开始运行时主框架窗口的大小为屏幕的1/4大小,并移动到屏幕的右上角。
当单击工具栏上的圆圈按钮,该按钮呈按下状态,此时在窗口的客户区的光标为一个圆圈,双击鼠标,状态栏上的显示“你在(X,Y)处双击鼠标”(X,Y为鼠标在客户区的位置)。
若再单击工具栏上的圆圈按钮,该按钮呈正常状态,光标变成原来的箭形,双击鼠标,状态栏上不再显示任何文本。
如图T12.1所示是单击圆圈按钮时的程序界面。
实验准备说和说明
(1)再教程第5章全部讲授后进行本次实验。
(2)构思本次上机所需要的程序。
实验步骤
1创建工作文件夹
2改变运行时窗口的大小和位置
3添加并设计一个工具按钮
4添加并设计一个光标
5工具按钮的更新
6更改应用程序光标
7添加状态栏窗格
8映射鼠标双击消息
9完善代码
10写出实验报告
思考与练习
(1)在上述程序基础上,添加一个菜单项,使其和工具栏按钮ID_TEST联动,运行后,按下工具按钮ID_TEST,看看菜单项有什么变化?
(2)添加并设计一个图标,然后更改Ex_SDI应用程序的图标。
实验13框架窗口、文档和实图
实验内容
创建一个基于CListView实图的单文档应用程序Ex_Student,通过对话框来输入一个学生纪录,记录包括学生的姓名、学号和3门成绩。
然后将记录内容保存到一个对象数组集合类对象中,最后通过对文档序列化将记录保存到一个文件中。
当添加记录或打开一个记录文件时,还会将数据显示在文档窗口(即视图)中。
如图T13.1所示为Ex_Student运行结果。
实验准备和说明
在教程第6章全部讲授后进行本实验。
参照教程内容,构思本次上机所需要的程序。
实验步骤
1.创建工作文件夹
2.添加用于学生记录输入的对话框
3.添加一个CStudent类并使该类可序列化
4.添加并处理菜单项
5.完善代码
6.最后修改代码
7.写出实验报告
思考与练习
(1)经过上述实验后,说说对类的序列化和文档序列化的理解。
(2)当选择“学生纪录”→“添加”菜单,添加一个学生纪录后,说说程序运行过程。
(3)若在Ex_Student中还需要对添加的学生成绩记录进行重复性判断,即判断添加的纪录的学生姓名是否与已添加的纪录重名,若是,则不添加,并弹出相应的消息对话框。
则上述的代码应如何修改?
(4)在“学生纪录”顶层菜单中添加一个“修改(&E)”子菜单,开始时,该子菜单时禁用的,若当在列表控件中选中某纪录项时,“修改(&E)”子菜单变成可用,选择该菜单命令,弹出对话框,显示当前纪录内容,修改后,单击对话框的“确定”按钮,修改当前纪录项,则这样的功能应如何实现?
实验14图形、问题和位图
实验内容
上机练习教程第七章的【例Ex_Draw】、【例Ex_Icon】和例【Ex_Cursr】。
实验准备和说明
在教程第七章全部讲授后进行本次实验。
参照教程内容,构思上机所需要的程序。
实验步骤
1创建工作文件夹
打开机算机,“D:
\VisualC++程序\Liming”文件夹中创建一个新文件夹“实验14”。
2上机练习【例Ex_Draw】
上机练习【例Ex_Draw】的具体步骤如下:
启动VisualC++6.0.
用MFCAppWizard创建一个默认的单文档应用程序Ex_Draw.在“新建”对话框中将项目文件夹定为到“D:
\VisualC++程序\LiMing\实验14”。
余下步骤按教材【例Ex_Draw】进行。
3上机练习【例Ex_Icon】
按教材【例Ex_Icon】步骤进行。
4上机练习【例Ex_Cursor】
按教材【例Ex_Crursor】步骤进行。
5写出实验报告
分析上述进行结果以及思考与练习,写出实验报告。
思考与练习
若将【例Ex_Draw】中的数据用图T14.1表示,则应如何编程?
实验15ODBC数据库编程
实验内容
对于大量数据处理,采用数据库更为安全、便捷。
例如,对于学生管理系统,常常需要处理学生的基本信息、课程成绩以及学生相关院系、专业情况等,这些信息用数据库表的形式来描述更为清晰。
本次实验按教程来练习MFCODBC数据库编程过程。
实验准备和说明
在教案第八章“MFCODBC应用编程”讲授后进行本次实验。
复习教程相关内容。
实验步骤
1.创建工作文件夹
2.创建数据库和数据表
3.创建ODBC数据源
4.在MFCAppWizard中选择数据源
5.设计浏览记录界面
6.查询记录
7.编辑记录
8.写出实验报告
思考与练习
若在表单中添加一个列表控制件用于显示score记录,则应该如何添加?
代码应如何修改?
实验16ADO数据库编程
实验内容
创建一个基于CListView视图的单文档应用程序Ex_ADO,主要完成下列任务或实现下列功能。
用Access创建一个数据库student.mdb,添加数据表student,如表T16.1所示。
表中上部分是数据表的记录内容,下部分是数据表的结构内容。
在主菜单中添加“学生信息(&S)”顶层菜单,在该菜单添加“添加学生(&U)”子菜单。
当选择“添加学生(&U)”子菜单后,出现“学生信息”对话框,单击“添加”按钮后,记录添加到student表中,并自动更新列表视图的列表项。
在列表视图的列表项中,单击鼠标右键,弹出“学生信息”对话框,如图T16.1所示。
单击“修改”按钮,student表中相关记录被修改,同时更新列表视图的列表项。
若当单击列表视图的列表头(标题头)时,使得列表视图按该列的内容对列表项进行从小到大的排序。
实验准备和说明
在教程第8章全部讲授后进行本次实验。
用ADO实现数据库表的添加和修改功能,构思本次上机所需要的程序。
实验步骤
1.创建工作文件夹
2.创建数据库和数据表
3.添加用于学生信息添加和修改的对话框
4.添加对ADO的支持及其他代码
5.学生信息记录的添加和修改
6.列表信息的排序
7.写出实验报告
思考与练习
若在Ex_ADO中还需要对学生信息记录进行删除和查询,则这样的功能应如何实现?