计算机与信息技术学院设计性实验报告专业:通信工程年级/班级:通信工程1班2011—2012学年第二学期课程名称VisualC++程序设计实验指导教师赵永进本组成员学号姓名实验地点计算机学院机房实验时间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和proteced3种访问权限及继承方式的区别。7.掌握在派生类中初始化基类成员的方法。8.掌握程序多文件的组织方法等。二、实验仪器或设备电脑型号:方正FounderPC台式电脑操作系统:WindowsXP专业版32位SP3(DirectX9.0c)实验平台:MicrosoftVisualC++6.0(SP6)处理器:AMDAthlon(速龙)IIX2255双核内存:1791MB主硬盘:西数WDCWD3200AAJS-22L7A0(318GB/7200转/分)显卡:NVIDIAGeForce6150SEnForce430(256MB)显示器:Topview(冠捷)LCDE980FG981(19.1英寸)网卡:瑞昱PCIeGBEFamilyController三、总体设计(设计原理、设计方案及流程等)程序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:\VisualC++程序\李明亮”下再创建一个子文件夹“实验5”。2、输入程序Ex_Class.h(1)启动VisualC++6.0。(2)单击标准工具栏上的“NewTextFile”按钮,在新打开的文档窗口中输入下列程序代码:#includeiostream.h#includestring.hclassCPerson{public:CPerson(){strcpy(pName,);strcpy(pID,);}CPerson(char*name,char*id,boolisman=1){Input(name,id,isman);}voidInput(char*name,char*id,boolisman){setName(name);setID(id);setSex(isman);}voidOutput(){cout姓名:pNameendl;cout编号:pIDendl;char*str=bMan?男:女;cout性别:strendl;}public:char*getName()const{return(char*)pName;}voidsetName(char*name){intn=strlen(name);strncpy(pName,name,n);pName[n]='\0';}char*getID()const{return(char*)pID;}voidsetID(char*id){intn=strlen(id);strncpy(pID,id,n);pID[n]='\0';}boolgetSex(){returnbMan;}voidsetSex(boolisman){bMan=isman;}private:charpName[20];//姓名charpID[20];//编号boolbMan;//性别:0表示女,1表示男};classCStudent:publicCPerson{public:CStudent(char*name,char*id,boolisman=1);~CStudent(){}voidInputScore(doublescore1,doublescore2,doublescore3);voidPrint();CPersonstudent;private:doubledbScore[3];//三门成绩};classCTeacher:publicCPerson{public:CTeacher(char*name,char*id,boolisman=1,intyears=10);~CTeacher(){}voidPrint();private:intnTeachYears;//教龄};(3)单击标准工具栏的“save”按钮,弹出“保存为”文件对话框。将文件定位到“D:\VisualC++程序\李明亮\实验5”,文件名为Ex_Class.h。3、输入程序Ex_class.cpp(1)单击标准工具栏上的“NewTestFile”按钮,在新打开的文档窗口中输入下列程序代码:#includeiostream.h#includeEx_Class.h//类CStudent实代码CStudent::CStudent(char*name,char*id,boolisman):student(name,id,isman){dbScore[0]=78;dbScore[1]=90;dbScore[2]=80;}voidCStudent::InputScore(doublescore1,doublescore2,doublescore3){dbScore[0]=score1;dbScore[1]=score2;dbScore[2]=score3;}voidCStudent::Print(){student.Output();for(inti=0;i3;i++)cout成绩i+1:dbScore[i]endl;}//类CTeacher实现代码CTeacher::CTeacher(char*name,char*id,boolisman,intyears){nTeachYears=years;Input(name,id,isman);}voidCTeacher::Print(){Output();cout教龄:nTeachYearsendl;}voidmain(){CStudentstu(李明亮,1108224020);coutstu.getName()endl;coutstu.student.getName()endl;stu.Print();stu.student.setName(李明亮2);stu.student.setSex(1);stu.InputScore(80,90,85);stu.Print();CTeachertea(赵永进,123456);tea.setID(654321);tea.Print();}(2)单击标准工具栏的“save”按钮,弹出“保存为”文件对话框。将文件保存为Ex_Class.cpp。(3)编译运行(4)选择“工程”→“添加到工程”→“文件”菜单命令,在弹出的“插入文件到工程”对话框中,选定前面的文件Ex_class.h,单击“确定”按钮,此时的开发环境如图。4、退出VisualC++6.0五、结果分析与总结1、代码输入时要耐心、细心。注意不能把“.”误输入为“,”,比如包含头文件时把string.h输入为string,h这样一般很难辨别,这样的错误都很难查找。2、不能画蛇添足,比如doublescore1,doublescore2,doublescore3不能改为doublescore1,doublescore2,doublescore3,不然都会报错的。教师签名:年月日