C语言试验指导
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言试验指导
Visual C++程序设
计
学生实验指导书
长江大学计算机科学与技术学院
计算机应用与技术系
刘波涛
2012年8月
目录
试验1:类与对象的设计与实现 (3)
试验2:继承与多态性 (4)
实验3:MFC的消息和命令实验 (6)
实验4:设备环境与屏幕绘图实验 (6)
实验5:对话框实验 (9)
实验6:通用控件实验 (11)
试验1:类与对象的设计与实现
一、试验目的
1、学习类的申明与使用,掌握类和对象的申明及使用;
2、复习具有不同访问属性的类成员的访问方式
3、学会利用VC++平台的Debug观察类构造函数、析构函数、成员函数的执行顺序
4、学习多文件结构在C++中的使用
二、试验任务(要求用C++语言实现)
1、运行下列函数:
#include
class A
{
protected: A(){cout<<"A Constructor"<<endl;}< p="">
};
class B:public A
{public: B(){ cout<<"B Constructor"<<="">
};
void main()
{ B b1;
// A a;
}
观察结果,说明原因。
如果删掉注释符“//”,结果如何,为什么?
2、申明一个CPU类,包含等级(rank)、频率(frequence)、电压(V oltage)等属性,
有2个共有成员函数:run(),stop()。
其中,rank为枚举类型CPU_Rank,申明为enum CPU_Rank{P1=1, P2, P3, P4, P5, P6, P7},frequence的单位为MHZ的整型数,Voltage为浮点型的电压值。
观察构造函数及析构函数的调用顺序。
3、申明一个简单的Computer类,有数据成员芯片(Cpu)、内存(Ram)、光驱(Cdrom)
等等。
有两个共有成员:run(),stop()。
Cpu为CPU类的一个对象,Ram为RAM类的一个对象,Cdrom为CDROM类的一个对象。
申明并实现这个类,要求每种类的申明及定义放入头文件中,而实现部分放入CPP中。
4、设计一个用于人事管理的People类,考虑到通用性,这里只抽象出所有人员所具有
的属性:编号(number)、性别(sex)、生日(birthday)、身份证(id)等等。
其中birthday申明为一个“日期”内嵌子对象。
成员函数实现对人员信息的录入和显示。
要求编写构造函数、析构函数、拷贝构造函数。
试验2:继承与多态性
一、试验目的
1、练习申明和使用类的继承关系
2、练习不同继承方式下基类成员的访问控制
3、利用虚函数实现多态性
4、学习掌握运算符重载
二、试验任务(要求用C++语言实现)
1、申明一个基类animal,包含私有整型成员变量age,构造其派生类dog,在dog的成
员函数SetAge(int a)中直接对age赋值,看看情况如何?将age 改成共有成员,情况又如何?
2、申明一个基类BaseClass,有整型成员Number,构造其派生类DerivedClass,两个类
都要求显示给出构造函数及析构函数。
观察他们的构造函数及析构函数的执行顺序,程序中要求能够将执行顺序显示出来。
3、申明一个Point类,有坐标x、y两成员变量,对Point类重载自加运算符(++)、自减
(--)运算符,实现对坐标值的改变。
4、定义一个图形类为抽象类,其具有求对象的面积和周长等基本功能:Area(),Perim(),
在此基础上派生出圆形、三角形和矩形,分别求出它们的周长和面积。
5、输入以下程序:
#include
class A
{
private: int a;
protected: int b;
public:
int c;
int Get() { return a; }
void Set(int x) { a=x; }
// virtual void fnuc() {}
void OutPutAddr()
{
// cout<<"ObjectA的虚函数表头指针是:"<<this<<endl;< p="">
cout<<"成员a的地址是"<<&this->a<<endl;< p="">
cout<<"成员b的地址是"<<&this->b<<endl;< p="">
cout<<"成员c的地址是"<<&this->c<<endl;< p="">
}
};
class B: public A
{
public: int d;
};
void main(void)
{ A ObjectA;
B ObjectB;
ObjectB.Set(1);
cout<<"通过继承过来的成员函数获取继承父类的私有成员a:"<<objectb.get()<<endl;< p="">
cout<<"sizeof(int)="<<sizeof(int)<<endl;< p="">
cout<<"sizeof(ObjectA)="<<sizeof(objecta)<<endl;< p=""> cout<<"sizeof(ObjectB)="<<sizeof(objectb)<<endl;< p=""> ObjectB.OutPutAddr();
cout<<"成员d的地址是"<<&ObjectB.d<<endl;< p="">
}
1)、解释输出结果,即为什么是这样的结果,要求一行一行的解释。
2)、将上述代码中两行注释符“//”删掉,再运行,同1)一样解释输出结果。
实验3:设备环境与屏幕绘图实验
一、试验目的
1、掌握CPoint、CRect的用法。
2、掌握CDC中常用成员函数的用法。
3、掌握画笔、画刷的用法。
二、试验任务
1、设计下图1所示界面,要求:
1)程序运行时,在视图上画一条线、一个矩形和一个椭圆。
2)程序运行后,可以用鼠标拖动在视图上矩形。
图1 程序运行界面
按如下步骤进行:
1)、打开VC++编程环境。
2)、新建工程,选择应用程序类型。
3)、添加代码实现图形的绘制。
4)、定义鼠标的消息处理函数并添加代码:
5)、保存工程并编译运行该程序。
2、讨论Windows环境下的绘图操作的基本步骤。
3、分析图形设备对象的一般使用步骤。
实验4:消息和命令实验
一、试验目的
1、掌握菜单与加速键编程方法。
2、掌握菜单命令消息和更新命令用户界面消息处理函数的添加方法。
3、掌握快捷菜单的调用方法。
4、掌握工具栏中按钮的命令消息及更新命令用户界面消息处理函数的添加方法。
5、掌握状态栏数组的结构。
二、试验任务
1、编程实现下面界面,要求:
1)点击“菜单1”和“菜单2”分别为所选菜单打上选中标记。
2)在视图中移动鼠标时,将鼠标x、y坐标显示在状态栏的第一个窗格上,将当前系统时间显示在状态栏第二个窗格上。
3)在视图中单击右键显示上下文菜单。
图2 程序运行界面
按如下步骤进行:
1)、打开VC++编程环境。
2)、新建工程。
3)、选择应用程序类型。
4)、利用菜单资源编辑器为主菜单IDR_MAINFRAME添加一列新菜单“测试菜单”,其包含“菜单1”和“菜单2”两个子菜单,它们的ID号分别为ID_TEST1和ID_TEST2。
5)、利用工具栏资源编辑器为工具栏添加两个按钮ID_TEST1和ID_TEST2。
6)、为子菜单“菜单1”和“菜单2”分别定义其命令消息处理函数和更新命令用户界面消息处理函数并添加代码。
7)、修改状态栏数组为:
static UINT indicators[] =
{
ID_SEPARATOR,
ID_SEPARATOR,
ID_INDICATOR_NUM,
ID_INDICATOR_SCRL,
};
8)、添加鼠标移动消息处理函数并添加代码。
9)、定义WM_CONTEXTMEN消息处理函数并添加代码。
10)、保存工程并编译运行该程序。
2、讨论菜单类CMenu中常用成员函数的使用方法。
3、讨论快捷菜单的使用方法。
4、讨论更新命令用户界面消息处理函数的实现机制。
实验5:对话框与菜单资源实验
一、试验目的
1、掌握模态对话框的调用方法。
2、掌握字体对话框和颜色对话框的使用方法。
3、掌握菜单资源的使用方法。
二、试验任务
1、设计下图3所示界面,要求:
1)程序运行时在视图中显示字符串。
2)点击子菜单“模态对话框”时,将显示一模态对话框。
3)点击子菜单“字体对话框”时,调用字体对话框为视图中显示的文字设置字体。
4)点击子菜单“颜色对话框”时,调用颜色对话框为视图中显示的文字设置颜色。
图3 程序运行界面
按如下步骤进行:
1)、打开VC++编程环境。
2)、新建工程,启动应用程序向导。
3)、选择MFC Appwizard(EXE)选项,输入工程名字及工程存储
路径。
4)、选择应用程序类型。
5)、其余的步骤均采用默认设置。
6)、最后点击OK按钮完成AppWizard。
7)、为框架程序中视图类的OnDraw(CDC *pDC)函数添加代码输出字符串。
8)、添加新对话框资源并建立与之关联的类。
9)、为子菜单“模态对话框”、“字体对话框”和“颜色对话框”分别添加其命令消
息处理函数并添加代码。
10)、保存工程并编译运行该程序。
2、分析模态对话框和非模态对话框的异同。
3、总结属性对话框的实现方法。
4、分析通用对话框的一般使用步骤。
实验6:通用控件实验
一、试验目的
1、掌握按钮控件的用法。
2、掌握编辑框、组合框、列表框控件的用法。
3、掌握滚动条、滑动条、进度条、旋转按钮控件的用法。
二、试验任务
1、设计下图4所示界面,要求:
1)单击“窗口类”按钮会弹出下图5所示界面。
在图5中点击“显示”或“隐藏”
按钮会使“测试文字”控件显示或隐藏,点击“激活”或“变灰”按钮会使“测试文字”控件激活或变灰。
2)单击“按钮控件”按钮会弹出下图6所示界面。
在图6中,选中复选框“time”
则在其下的编辑框中显示当前时间,单击“确定”按钮要能够判断哪个单选按钮被选中。
3)单击“列表框”按钮会弹出下图7所示界面。
在图7中点击按
钮“插入”、“删除”
或“清空”则添加新字符串、删除当前选中的字符串或清空列表框所有内容。
4)单击“滚动条”按钮会弹出下图8所示界面。
在图8中拖动滚动条控件上滑块移动时,会将滚动条当前位置显示在其上的编辑框中。
图4 程序界面
图5 窗口类运行界面
图6 按钮控件运行界面
图7 列表框运行界面
图8 滚动条运行界面
按如下步骤进行:
1)、打开VC++编程环境。
2)、新建工程,启动应用程序向导。
3)、选择MFC Appwizard(EXE)选项,输入工程名字及工程存储路径。
4)、选择应用程序类型。
5)、其余的步骤均采用默认设置。
6)、最后点击OK按钮完成AppWizard。
7)、为当前工程插入4个新对话框资源并分别建立与之关联的类。
8)、为各个对话框中所有的按钮定义BN_CLICKED消息处理函数并添加代码。
9)、为图7所示对话框添加其WM_INITDIALOG消息处理函数并添加代码。
10)、为图8所示对话框添加其WM_HSCROLL消息处理函数并添加代码。
11)、保存工程并编译运行该程序。
2、分析总结下压按钮、单选按钮和复选按钮的异同点。
3、分析列表框与组合框控件使用方法的异同点。
4、总结滚动条、滑动条、进度条与旋转按钮控件使用方法的异同点。
实验7:通讯薄设计与实现一、试验目的
综合应用前述基本知识设计一个小型应用程序。
二、试验任务
</endl;<>
</sizeof(objectb)<<endl;<>
</sizeof(objecta)<<endl;<>
</sizeof(int)<<endl;<>
</objectb.get()<<endl;<>
</endl;<>
</endl;<>
</endl;<>
</this<<endl;<> </endl;}<>。