}
2.实现客户机(CLIENT)类。
声明字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。
在头文件client.h中声明类和实现类,在文件client.cpp中测试这个类,观察相应的成员变量取值的变化情况。
实验五数组、指针与字符串
一、实验目的
1.学习使用数组数据对象;
2.学习字符串数据的组织和处理;
3.学习标准C++库的使用;
4.掌握指针的使用方法;
5.练习通过debug观察指针的内容及其所指的对象的内容;
6.练习通过动态内存分配实现动态数组,并体会指针在其中的作用;
7.分别使用字符数组和标准C++库练习处理字符串的方法。
二、实验任务
1.编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。
2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。
3.编程实现两字符串的连接。
要求使用字符数组保存字符串,不要使用系统函数。
4.使用string类声明字符串对象,重新实现上一小题。
5.声明一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。
display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。
6.声明包含5个元素的对象数组,每个元素都是Employee类型的对象。
实验六类与对象
一、实验目的
1.掌握类的声明和使用。
2.掌握类的声明和对象的声明。
3.复习具有不同访问属性的成员的访问方式。
4.观察构造函数和析构函数的执行过程。
5.学习类的组合使用方法。
二、实验任务
1.声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,其中,rank为字符型,其值可以为P1、P2等;frequency为单位是MHz的整型数;voltage为浮点型的电压值。
公有成员函数包括:
GetRank()、GetFrequency()、GetVoltage()用来获取等级、频率、电压的值;SetRank、SetFrequency、SetVoltage用来设置等级、频率、电压的值;run、stop中run里面要求输出“CPU开始运行!
”;stop里面要求输出“CPU停止运行!
”。
构造函数里面需要输出“构造一个CPU”,析构函数里面需要输出“析构一个CPU”。
观察构造函数和析构函数的调用顺序。
实验七类的组合
一、实验目的
1.掌握类的声明和使用。
2.掌握类的声明和对象的声明。
3.复习具有不同访问属性的成员的访问方式。
4.观察构造函数和析构函数的执行过程。
5.使用VC++的debug调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。
二、实验任务
1.使用VC++的debug调试功能观察实验四中构造函数、析构函数、成员函数的执行顺序。
使用stepinto追溯到函数,在函数内部用stepover单步执行,观察执行的顺序。
2.声明一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,有两个公有成员函数run、stop。
cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。
实验八继承与派生
一、实验目的
1.学习声明和使用类的继承关系,声明派生类;
2.熟悉不同继承方式下对基类成员的访问控制;
3.学习利用虚基类解决二义性问题。
二、实验任务
1.声明一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(intn)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?
编程试试看。
2.声明一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。
自行车(bicycle)类有高度(hight)属性,汽车(motorcar)类有座位数(seatnum)属性。
实验九多态性
一、实验目的
1.掌握运算符重载的方法。
2.学习使用虚函数实现动态多态性。
二、实验任务
1.声明一个车(vehicle)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop等成员函数。
观察虚函数的作用。
实验十常用控件
(1)
实验目的和要求
(1)创建一个默认的对话框应用程序Ex_Ctrls,如图2.1所示。
(2)设计一个如图2.2所示的“课程信息”对话框。
图2.1Ex_Ctrls对话框图2.2“课程信息”对话框
(3)实现功能:
单击图2.1中的“课程信息”按钮,弹出“学生基本信息”对话框,单击“添加”按钮,对话框内容显示在图2.1中的列表框中。
实验准备和说明
(1)具备知识:
静态控件、按钮、编辑框、旋转按钮控件、列表框和组合框控件。
(2)创建本次实验工作文件夹“…\VisualC++程序\实验\实验2”。
实验内容和步骤
1.启动VisualC++6.0
打开计算机,启动VisualC++6.0系统。
2.创建一个默认的对话框应用程序Ex_Ctrls
①选择“文件”→“新建”菜单,在弹出的“新建”对话框中选择“工程”页面,选择MFCAppWizard(exe),在工程框中输入Ex_Ctrls,并将工程文件夹定位到“…\VisualC++程序\实验\实验2”。
②单击“确定”按钮,在出现的Step1对话框中选择“基本对话(框)”应用程序类型,单击“完成”按钮。
③在对话框编辑器中,单击对话框工具栏上的切换网格按钮
,显示对话框网格,将对话框标题改为“使用控件”。
④调整对话框的大小,删除对话框中间的“TODO:
在这里设置对话控制。
”静态文本控件和“确定”按钮控件,将“取消”按钮标题改为“退出”,并移至对话框的下方。
⑤向对话框中添加组框(Group)控件,标题设为“添加”,然后调整其大小和位置。
⑥添加一个按钮,标题设为“课程信息”,ID设为IDC_BUTTON_COURSE。
添加一个列表框,取其默认ID号,去掉Sort风格属性。
3.添加并设计“课程信息”对话框
①按Ctrl+R快捷键,弹出“插入资源”对话框,在资源类型列表中选择Dialog,单击“新建”按钮。
②将该对话框资源的ID设为IDD_COURSE,标题设为“课程信息”,字体设为“宋体,9号”。
③将OK和Cancel按钮的标题改为“添加”和“取消”。
④打开对话框网格,参看图2.2的控件布局,为对话框添加如表2.1所示的一些控件。
表2.1课程信息对话框添加的控件
添加的控件
ID号
标题
其他属性
编辑框(课程号)
IDC_EDIT_COURSENO
——
默认
编辑框(课程名称)
IDC_EDIT_COURSENAME
——
默认
组合框(所属专业)
IDC_COMBO_SPECIAL
——
默认
组合框(课程类型)
IDC_COMBO_TYPE
——
默认
编辑框(开课学期)
IDC_EDIT_OPEN
——
默认
旋转按钮
IDC_SPIN1
——
Autobuddy、Setbuddyinteger、Right对齐,其余默认
编辑框(课时数)
IDC_EDIT_COURSEHOURS
——
默认
编辑框(学分)
IDC_EDIT_CREDIT
——
默认
⑤右击添加的课程类型的组合框控件,从弹出的快捷菜单中选择“属性”命令,将其属性对话框切换到Data页面,直接输入内容,输入一行后按Ctrl+Return键添加另一行。
结果如图2.3所示。
图2.3课程类型组合框内容输入
⑥按Ctrl+W快捷键或双击对话框资源模板的空白处,为IDD_COURSE创建一个对话框CCourseDlg。
打开ClassWizard的MemberVariables页面,看Classname是否是CCourseDlg,选中所需的控件ID号,双击鼠标。
依次为表2.2控件增加成员变量。
表2.2控件变量
控件ID号
变量类别
变量类型
变量名
范围和大小
IDC_EDIT_COURSENO
Value
CString
m_strNO
IDC_EDIT_COURSENAME
Value
CString
m_strName
IDC_COMBO_SPECIAL
Value
CString
m_strSpecial
IDC_COMBO_SPECIAL
Control
CComboBox
m_comboSpecial
——
IDC_COMBO_TYPE
Value
CString
m_strType
IDC_EDIT_OPEN
Value
BYTE
m_nOpen
IDC_SPIN1
Control
CSpinButtonCtrl
m_spinOpen
——
IDC_EDIT_COURSEHOURS
Value
int
m_nHours
IDC_EDIT_CREDIT
Value
float
m_fCredit
4.添加CCourseDlg类代码
①用MFCClassWizard为CCourseDlg类添加WM_INITDIALOG消息映射,并添加下列初始化代码:
BOOLCCourseDlg:
:
OnInitDialog()
{
CDialog:
:
OnInitDialog();
m_spinOpen.SetRange(1,8);
m_nHours=60;
m_fCredit=2.0;
m_nOpen=1;
m_strType="专修";
//