计算机与信息技术学院设计性实验报告
专业: 通信工程 年级/班级:通信工程1班 2011—2012学年第二学期 课程名称
Visual C++程序设计实验 指导教师 赵永进 本组成员 学号姓名
实验地点
计算机学院机房 实验时间
5月12日8:00-9:40;10:10-11:50; 5月19日8:00-9:40;10:10-11:50。
项目名称
人员类的设计与实现
实验类型
设计性
一、实验目的
1.定义人员类,包括数据成员:姓名、编号、性别和用于输入、输出的成员函数。在此基础上派生出学生类和教师类,并实现对学生和教师信息的输入、输出。 2.掌握类和对象的定义和使用方法。
3.掌握定义构造函数和析构函数、重载构造函数的方法。 4.掌握静态成员和常类型的用法。 5.掌握多重继承和派生类的方法。
6.能正确理解public,private和proteced 3种访问权限及继承方式的区别。 7.掌握在派生类中初始化基类成员的方法。 8.掌握程序多文件的组织方法等。 二、实验仪器或设备
电脑型号:方正 Founder PC 台式电脑
操作系统:Windows XP 专业版 32位 SP3 ( DirectX 9.0c ) 实验平台:Microsoft Visual C++6.0(SP6)
处理器 :AMD Athlon(速龙) II X2 255 双核 内 存 :1791 MB
主硬盘 :西数 WDC WD3200AAJS-22L7A0 ( 318 GB / 7200 转/分 ) 显 卡 :NVIDIA GeForce 6150SE nForce 430 ( 256 MB ) 显示器 :Topview(冠捷) LCDE980 FG981 ( 19.1 英寸 ) 网 卡 :瑞昱 PCIe GBE Family Controller
三、总体设计(设计原理、设计方案及流程等)
程序Ex_Class:定义一个人员类CPerson,包括数据成员:姓名、编号、性别和用于输入输出的成员函数。在此基础上派生出学生类CStudent(增加成绩)和教师类CTeacher(增加教龄),并实现对学生和对教师信息的输入、输出。编写一个完整的测试程序,并将Ex_Class所有的类定义保存在Ex_Class.h,将类的成员函数实现代码保存在Ex_Class.cpp中。
1,程序Ex_class:定义一个人员类CPerson,其中包括数据成员:姓名、编号、性别和用于输入、输出的成员函数,这些数据成员及成员函数都被定义成公有类型,以便被派生类的函数所调用。
2,在该头文件中,派生出学生类和教师类,并在各自派生类的程序中调用了基类的公有成员函数“输入和输出函数”。
3,在派生类Student中实现学生成绩的输入和输出,又定义了类CPerson中的一个对象student,通过该对象可以调用基类中的成员函数,从而实现结果的正确输出。还有私有数据成员:学生的成绩。与学生类相似,只是增加的私有数据成员是教师的教龄。
4,在学生各门成绩输出和老师教龄输出的具体函数另外写在头文件外,便于计算机识别,提高程序的可执行性。首先对各门成绩以数组的形式初始化为零,然后定义了InputScore函数以具体实现成绩输入的操作,再定义了Print函数,实现成绩输出的操作。同样对老师教龄的函数实现,其函数体中调用了头文件的Input函数,在Input函数的具体代码的实际操作外多了教龄的的输入,同时也定义了Print函数,并调用了头文件中的Output函数,实现姓名、编号、性别和教龄的对应输出。
5主函数实现对具体数值的赋值,并调用相应的函数实现。 程序流程图如下:
(公有成员)
公有成员函数 四、实验步骤(包括主要步骤、代码分析等) 1、创建工作文件夹
打开计算机,在目录“D:\\Visual C++程序\\李明亮”下再创建一个子文件夹“实验5”。 2、输入程序Ex_Class.h 启动Visual C++ 6.0。
单击标准工具栏上的“New Text File”按钮,在新打开的文档窗口中输入下列程序代码: #include
#include
public:
CPerson() { strcpy(pName,\ strcpy(pID,\ } CPerson(char*name,char*id,bool isman=1) {Input(name,id,isman);} void Input(char*name,char*id,bool isman) { setName(name); setID(id); setSex(isman); } void Output() { cout<<\姓名: \ cout<<\编号: \ char*str=bMan?\男\女\ cout<<\性别: \ } public: char*getName()const {return(char*)pName;} void setName(char*name) { int n=strlen(name); strncpy(pName,name,n); pName[n]='\\0'; } char*getID()const {return(char*)pID;} void setID(char*id) { int n=strlen(id); strncpy(pID,id,n); pID[n]='\\0'; } bool getSex(){return bMan;} void setSex(bool isman) {bMan=isman;} private:
char pName[20]; //姓名 char pID[20];//编号
bool bMan; //性别:0表示女,1表示男 };
class CStudent:public CPerson {
public:
CStudent(char*name,char*id,bool isman=1); ~CStudent(){}
void InputScore(double score1,double score2,double score3); void Print();
CPerson student; private:
double dbScore[3];//三门成绩 };
class CTeacher:public CPerson {
public:
CTeacher(char*name,char*id,bool isman=1,int years=10); ~CTeacher(){} void Print(); private:
int nTeachYears;//教龄 };
(3)单击标准工具栏的“save”按钮,弹出“保存为”文件对话框。将文件定位到“D:\\Visual C++程序\\李明亮\\实验5”,文件名为Ex_Class.h。 3、输入程序Ex_class.cpp (1)单击标准工具栏上的“New Test File”按钮,在新打开的文档窗口中输入下列程序代码: #include
#include\类CStudent实代码
CStudent::CStudent(char*name,char*id,bool isman) :student(name,id,isman) {
dbScore[0]=78; dbScore[1]=90; dbScore[2]=80; }
void CStudent::InputScore(double score1,double score2,double score3) {
dbScore[0]=score1; dbScore[1]=score2; dbScore[2]=score3; }
void CStudent::Print()
{
student.Output(); for(int i=0;i<3;i++)
cout<<\成绩\ }//类CTeacher实现代码
CTeacher::CTeacher(char*name,char*id,bool isman,int years) {
nTeachYears=years; Input(name,id,isman); }
void CTeacher::Print() {
Output();
cout<<\教龄: \ }
void main() {
CStudent stu(\李明亮\ cout<
cout<
stu.student.setName(\李明亮2\ stu.student.setSex(1); stu.InputScore(80,90,85); stu.Print();
CTeacher tea(\赵永进\ tea.setID(\ tea.Print(); } (2)单击标准工具栏的“save”按钮,弹出“保存为”文件对话框。将文件保存为Ex_Class.cpp。 (3)编译运行
(4)选择“工程”→“添加到工程”→“文件”菜单命令,在弹出的“插入文件到工程”对话框中,选定前面的文件Ex_class.h,单击“确定”按钮,此时的开发环境如图。
4、退出Visual C++6.0 结果分析与总结
代码输入时要耐心、细心。注意不能把“.”误输入为“,”,比如包含头文件时把
不能画蛇添足,比如double score1,double score2,double score3不能改为double score 1,double score 2,double score 3,不然都会报错的。 教师签名: