实验五
- 格式:doc
- 大小:246.50 KB
- 文档页数:17
实验报告课程名称C++语言程序设计实验项目名称C++程序的结构实验时间(日期及节次)专业计算机科学技术学生所在学院计算机科学与技术年级2009 学号20094075 姓名杜赫指导教师任倩倩实验室名称4号教学楼软件机房实验成绩预习情况操作技术实验报告附加:综合创新能力实验综合成绩教师签字黑龙江大学教务处实验内容1.设计并定义一个交通工具类,并通过该类派生出新的类,编写程序定义这些类并测试它;2.完善实验五第4题的程序,具体要求如下:任务1:从people(人员)类派生出student(学生)类,添加属性:学校、学院、专业、班号、入学成绩,设计相应的成员函数(构造函数,拷贝构造函数,录入函数,显示函数)。
任务2:从people类派生出teacher(教师)类,添加属性:职务,部门,职称。
并设计相应的成员函数。
任务3: 从student类派生出graduate(研究生)类,添加属性:导师,研究方向。
并设计相应的成员函数。
任务4:从teacher和graduate(研究生)类派生出Assistant(助教)类,并设计相应的成员函数。
任务5:编写程序来测试这个类。
一、实验目的1.学习定义和使用类的继承关系、定义派生类;2.熟悉不同继承方式下对基类成员的访问控制。
二、实验环境Microsoft Visual C++ 6.0三、主要数据结构及算法描述#include <iostream>using namespace std;class traffic{public:void run1(){cout<<"1Run!!!"<<endl;}void stop1(){cout<<"1Stop!!!"<<endl;}};class Vehicle:public traffic{public:void run2(){cout<<"2Run!!!"<<endl;}void stop2(){cout<<"2Stop!!!"<<endl;}};class bicycle:public Vehicle{public:void run3(){cout<<"3Run!!!"<<endl;}void stop3(){cout<<"3Stop!!!"<<endl;}};void main(){traffic t0;Vehicle t1;bicycle t2;t0.run1();t0.stop1();cout<<"**************"<<endl;t1.run1();t1.run2();cout<<"*************"<<endl;t2.run3();t2.stop2();t2.run1();}2、//实验五.h#include <iostream.h>#include <iomanip.h>#include <string>using namespace std;class people{ public:people(){cout<<"people类构造函数被调用"<<endl;}; //people类构造函数;people(people &P); //peoplel类拷贝构造函数(内联函数);~people(){cout<<"people析构函数被调用"<<endl;}void setnum(char *);void setsex(char *); //录入函数void setbirthday(int a,int b,int c);void setid(char *);void setname(char *);char *Getname(){return name;}char *GetNumber(){return number;}char *GetSex(){return sex;} //显示函数;int Getyear(){return year;}int Getmonth(){return month;}int Getday(){return day;}char *GetId(){return id;}private:char number[10];char name[10];char sex[5];int year,month,day;char id[20];};class student:virtual public people{public:student(){cout<<"student构造函数被调用;"<<endl;}student(student &S);~student(){cout<<"student析构函数被调用;"<<endl;}void setschool(char *);void setcollege(char *);void setmajor(char *);void setclassnumber(char);void setscore(float a);char *Getschool(){return school;}char *Getcollege(){return college;}char *Getmajor(){return major;}char Getclassnumber(){return classnumber;}float Getscore(){return score;}private:char school[30];char college[30];char major[20];char classnumber;float score;};class teacher:virtual public people{public:teacher(){cout<<"teacher构造函数被调用:"<<endl;}teacher(teacher &T);~teacher(){cout<<"teacher析构函数被调用;"<<endl;} void setzhiwu(char *);void setbumen(char *);void setzhicheng(char *);char *Getzhiwu(){return zhiwu;}char *Getbumen(){return bumen;}char *Getzhicheng(){return zhicheng;}private:char zhiwu[20];char bumen[20];char zhicheng[20];};class graduate: public student{public:graduate(){cout<<"student构造函数被调用;"<<endl;};graduate(graduate &T);~graduate(){cout<<"graduate析构函数被调用;"<<endl;} void setdaoshi(char *);void setdierection(char *);char *Getdaoshi(){return daoshi;}char *Getdierection(){return dierection;}private:char daoshi[20];char dierection[30];};class assistant:public teacher,public graduate{public:assistant(){cout<<"assistant构造函数被调用"<<endl;} assistant(assistant &A);};//实验五.cpp#include "实验五.h"/*people::people(people &P){cout<<"people类拷贝构造函数被调用:"<<endl;strcpy(number,P.GetNumber());sex=P.GetSex();year=P.Getyear();month=P.Getmonth();day=P.Getday();strcpy(id,P.GetId());}*/void people::setnum(char *numbers){strcpy(number,numbers);}void people::setsex(char *sexs){strcpy(sex,sexs);}void people::setid(char *ids){strcpy(id,ids);}void people::setbirthday(int a,int b,int c) {year=a;month=b;day=c;}void people::setname(char *names){strcpy(name,names);}void student::setschool(char *schools){strcpy(school,schools);}void student::setcollege(char *colleges) {strcpy(college,colleges);} void student::setmajor(char *majors){strcpy(major,majors);}void student::setclassnumber(char classnumbers) {classnumber=classnumbers;}void student::setscore(float a){score=a;}void teacher::setzhiwu(char *zhiwus){strcpy(zhiwu,zhiwus);}void teacher::setbumen(char *bumens){strcpy(bumen,bumens);}void teacher::setzhicheng(char *zhichengs) {strcpy(zhicheng,zhichengs);}void graduate::setdaoshi(char *daoshis){strcpy(daoshi,daoshis);}void graduate::setdierection(char *dierections){strcpy(dierection,dierections);}//text.cpp#include "实验五.h"int main(){ int a,b,c;float scores;char sexs[5],classnumbers,ch1,ch2;char num[10],ids[20],schools[30],colleges[30];charmajors[20],zhiwus[20],bumens[20],zhichengs[20],daoshis[20],dierection s[30],names[10];student yuanyang;teacher yuanyang1;graduate yuanyang2;assistant yuanyang3;system("cls");cout<<"●●●●●●●●●●●●●●●●●●●●●●●●●●"<<endl; cout<<"●●●●●●●●●●●●●●●●●●●●●●●●●●"<<endl; cout<<"●●●●●●●●●●●●●●●●●●●●●●●●●●"<<endl; do{cout<<"请选择:"<<endl;cout<<"A(student学生)"<<endl;cout<<"B(teacher教师)"<<endl;cout<<"C(graduate研究生)"<<endl;cout<<"D(assistant助教)"<<endl;cin>>ch1;switch(ch1){ case 'A':{ cout<<"请输入个人信息:"<<endl;cout<<"请输入您的编号:";cin>>num;yuanyang.setnum(num);cout<<"请输入您的姓名:";cin>>names;yuanyang.setname(names);cout<<"请输入您的性别:";cin>>sexs;yuanyang.setsex(sexs);cout<<"请输入您的出生年月:";cin>>a>>b>>c;yuanyang.setbirthday(a,b,c);cout<<"请输入您的身份证号:";cin>>ids;yuanyang.setid(ids);cout<<"请输入您的学校名称:";cin>>schools;yuanyang.setschool(schools);cout<<"请输入您的学院名称:";cin>>colleges;yuanyang.setcollege(colleges);cout<<"请输入您的专业名称:";cin>>majors;yuanyang.setmajor(majors);cout<<"请输入您的班级号码:";cin>>classnumbers;yuanyang.setclassnumber(classnumbers);cout<<"请输入您的入学成绩:";cin>>scores;yuanyang.setscore(scores);system("cls");cout<<"您是一名学生,您的个人信息输出如下:"<<endl;cout<<"1、基本信息:"<<endl;cout<<endl;cout<<endl;cout<<"│──────│──────│──────│────────────│────────────│"<<endl;cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<"姓名"<<"│"<<setw(10)<<"性别"<<"│"<<setw(20)<<"出生年月"<<"│"<<setw(20)<<"身份证号"<<"│"<<endl;cout<<"│──────│──────│──────│────────────│────────────│"<<endl;cout<<"│"<<setw(10)<<yuanyang.GetNumber()<<"|"<<setw(10)<<yuanyang.Getname()< <"│"<<setw(10)<<yuanyang.GetSex()<<"│"<<setw(7)<<yuanyang.Getyear()<<setw(7)<<yuanyang.Getmonth()<<setw(6) <<yuanyang.Getday()<<"│"<<setw(20)<<yuanyang.GetId()<<"│"<<endl; cout<<"│──────│──────│──────│────────────│────────────│"<<endl;cout<<"2、新增信息:"<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<"|——————————|——————————|——————————|——|————|"<<endl;cout<<"|"<<setw(20)<<"学校"<<"|"<<setw(20)<<"学院"<<"|"<<setw(20)<<"专业"<<"|"<<setw(4)<<"班号"<<"|"<<setw(8)<<"入学成绩"<<"|"<<endl;cout<<"|——————————|——————————|——————————|——|————|"<<endl;cout<<"|"<<setw(20)<<yuanyang.Getschool()<<"|"<<setw(20)<<yuanyang.Ge tcollege()<<"|"<<setw(20)<<yuanyang.Getmajor()<<"|"<<setw(4)<<yuanyan g.Getclassnumber()<<"|"<<setw(8)<<yuanyang.Getscore()<<"|"<<endl;cout<<"|——————————|——————————|——————————|——|————|"<<endl;};break;case 'B':{cout<<"请输入个人信息:"<<endl;cout<<"请输入您的编号:";cin>>num;yuanyang1.setnum(num);cout<<"请输入您的姓名:";cin>>names;yuanyang1.setname(names);cout<<"请输入您的性别:";cin>>sexs;yuanyang1.setsex(sexs);cout<<"请输入您的出生年月:";cin>>a>>b>>c;yuanyang1.setbirthday(a,b,c);cout<<"请输入您的身份证号:";cin>>ids;yuanyang1.setid(ids);cout<<"请输入您的职务:";cin>>zhiwus;yuanyang1.setzhiwu(zhiwus);cout<<"请输入您的部门:";cin>>bumens;yuanyang1.setbumen(bumens);cout<<"请输入您的职称:";cin>>zhichengs;yuanyang1.setzhicheng(zhichengs);system("cls");cout<<"您是一名教师,您的个人信息输出如下:"<<endl;cout<<"1、基本信息:"<<endl;cout<<endl;cout<<endl;cout<<"|—————|—————|—————|——————————|——————————|"<<endl;cout<<"|"<<setw(10)<<"编号"<<"|"<<setw(10)<<"姓名"<<"|"<<setw(10)<<"性别"<<"|"<<setw(20)<<"出生年月"<<"|"<<setw(20)<<"身份证号"<<"|"<<endl;cout<<"|—————|—————|—————|——————————|——————————|"<<endl;cout<<"|"<<setw(10)<<yuanyang1.GetNumber()<<"|"<<setw(10)<<yuanyang1. Getname()<<"|"<<setw(10)<<yuanyang1.GetSex()<<"|"<<setw(7)<<yuanyang1 .Getyear()<<setw(7)<<yuanyang1.Getmonth()<<setw(6)<<yuanyang1.Getday( )<<"|"<<setw(20)<<yuanyang1.GetId()<<"|"<<endl;cout<<"|—————|—————|—————|——————————|——————————|"<<endl;cout<<"2、新增信息:"<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<"|——————————|——————————|——————————|"<<endl;cout<<"|"<<setw(20)<<"职务"<<"|"<<setw(20)<<"部门"<<"|"<<setw(20)<<"职称"<<"|"<<endl;cout<<"|——————————|——————————|——————————|"<<endl;cout<<"|"<<setw(20)<<yuanyang1.Getzhiwu()<<"|"<<setw(20)<<yuanyang1.G etbumen()<<"|"<<setw(20)<<yuanyang1.Getzhicheng()<<"|"<<endl;cout<<"|——————————|——————————|——————————|"<<endl;};break;case 'C':{cout<<"请输入个人信息:"<<endl;cout<<"请输入您的编号:";cin>>num;yuanyang2.setnum(num);cout<<"请输入您的姓名:";cin>>names;yuanyang2.setname(names);cout<<"请输入您的性别:";cin>>sexs;yuanyang2.setsex(sexs);cout<<"请输入您的出生年月:";cin>>a>>b>>c;yuanyang2.setbirthday(a,b,c);cout<<"请输入您的身份证号:";cin>>ids;yuanyang2.setid(ids);cout<<"请输入您的学校名称:";cin>>schools;yuanyang2.setschool(schools);cout<<"请输入您的学院名称:";cin>>colleges;yuanyang2.setcollege(colleges);cout<<"请输入您的专业名称:";cin>>majors;yuanyang2.setmajor(majors);cout<<"请输入您的班级号码:";cin>>classnumbers;yuanyang2.setclassnumber(classnumbers);cout<<"请输入您的入学成绩:";cin>>scores;yuanyang2.setscore(scores);cout<<"请输入您的导师姓名:";cin>>daoshis;yuanyang2.setdaoshi(daoshis);cout<<"请输入您的研究方向:";cin>>dierections;yuanyang2.setdierection(dierections);system("cls");cout<<"您是一名研究生,您的个人信息输出如下:"<<endl;cout<<"1、基本信息:"<<endl;cout<<endl;cout<<endl;cout<<"|—————|—————|—————|——————————|——————————|"<<endl;cout<<"|"<<setw(10)<<"编号"<<"|"<<setw(10)<<"姓名"<<"|"<<setw(10)<<"性别"<<"|"<<setw(20)<<"出生年月"<<"|"<<setw(20)<<"身份证号"<<"|"<<endl;cout<<"|—————|—————|—————|——————————|——————————|"<<endl;cout<<"|"<<setw(10)<<yuanyang2.GetNumber()<<"|"<<setw(10)<<yuanyang2. Getname()<<"|"<<setw(10)<<yuanyang2.GetSex()<<"|"<<setw(7)<<yuanyang2 .Getyear()<<setw(7)<<yuanyang2.Getmonth()<<setw(6)<<yuanyang2.Getday( )<<"|"<<setw(20)<<yuanyang2.GetId()<<"|"<<endl;cout<<"|—————|—————|—————|——————————|——————————|"<<endl;cout<<"2、新增信息:"<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<"|——————————|——————————|——————————|——|————|"<<endl;cout<<"|"<<setw(20)<<"学校"<<"|"<<setw(20)<<"学院"<<"|"<<setw(20)<<"专业"<<"|"<<setw(4)<<"班号"<<"|"<<setw(8)<<"入学成绩"<<"|"<<endl;cout<<"|——————————|——————————|——————————|——|————|"<<endl;cout<<"|"<<setw(20)<<yuanyang2.Getschool()<<"|"<<setw(20)<<yuanyang2. Getcollege()<<"|"<<setw(20)<<yuanyang2.Getmajor()<<"|"<<setw(4)<<yuan yang2.Getclassnumber()<<"|"<<setw(8)<<yuanyang2.Getscore()<<"|"<<endl ;cout<<"|——————————|——————————|——————————|——|————|"<<endl;cout<<"3、附加信息:"<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<"|—————|——————————|"<<endl;cout<<"|"<<setw(10)<<"导师"<<"|"<<setw(20)<<"研究方向"<<"|"<<endl;cout<<"|—————|——————————|"<<endl;cout<<"|"<<setw(10)<<yuanyang2.Getdaoshi()<<"|"<<setw(20)<<yuanyang2. Getdierection()<<"|"<<endl;cout<<"|—————|——————————|"<<endl;};break;case 'D':{cout<<"请输入个人信息:"<<endl;cout<<"请输入您的编号:";cin>>num;yuanyang3.setnum(num);cout<<"请输入您的姓名:";cin>>names;yuanyang3.setname(names);cout<<"请输入您的性别:";cin>>sexs;yuanyang3.setsex(sexs);cout<<"请输入您的出生年月:";cin>>a>>b>>c;yuanyang3.setbirthday(a,b,c);cout<<"请输入您的身份证号:";cin>>ids;yuanyang3.setid(ids);cout<<"请输入您的职务:";cin>>zhiwus;yuanyang3.setzhiwu(zhiwus);cout<<"请输入您的部门:";cin>>bumens;yuanyang3.setbumen(bumens);cout<<"请输入您的职称:";cin>>zhichengs;yuanyang3.setzhicheng(zhichengs);cout<<"请输入您的学校名称:";cin>>schools;yuanyang3.setschool(schools);cout<<"请输入您的学院名称:";cin>>colleges;yuanyang3.setcollege(colleges);cout<<"请输入您的专业名称:";cin>>majors;yuanyang3.setmajor(majors);cout<<"请输入您的班级号码:";cin>>classnumbers;yuanyang3.setclassnumber(classnumbers);cout<<"请输入您的入学成绩:";cin>>scores;yuanyang3.setscore(scores);cout<<"请输入您的导师姓名:";cin>>daoshis;yuanyang3.setdaoshi(daoshis);cout<<"请输入您的研究方向:";cin>>dierections;yuanyang3.setdierection(dierections);system("cls");cout<<"您是一名助教,您的个人信息输出如下:"<<endl;cout<<"1、基本信息:"<<endl;cout<<endl;cout<<endl;cout<<"|—————|—————|—————|——————————|——————————|"<<endl;cout<<"|"<<setw(10)<<"编号"<<"|"<<setw(10)<<"姓名"<<"|"<<setw(10)<<"性别"<<"|"<<setw(20)<<"出生年月"<<"|"<<setw(20)<<"身份证号"<<"|"<<endl;cout<<"|—————|—————|—————|——————————|——————————|"<<endl;cout<<"|"<<setw(10)<<yuanyang3.GetNumber()<<"|"<<setw(10)<<yuanyang3. Getname()<<"|"<<setw(10)<<yuanyang3.GetSex()<<"|"<<setw(7)<<yuanyang3 .Getyear()<<setw(7)<<yuanyang3.Getmonth()<<setw(6)<<yuanyang3.Getday( )<<"|"<<setw(20)<<yuanyang3.GetId()<<"|"<<endl;cout<<"|—————|—————|—————|——————————|——————————|"<<endl;cout<<"2、新增信息:"<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<"|——————————|——————————|——————————|"<<endl;cout<<"|"<<setw(20)<<"职务"<<"|"<<setw(20)<<"部门"<<"|"<<setw(20)<<"职称"<<"|"<<endl;cout<<"|——————————|——————————|——————————|"<<endl;cout<<"|"<<setw(20)<<yuanyang3.Getzhiwu()<<"|"<<setw(20)<<yuanyang3.Getbumen()<<"|"<<setw(20)<<yuanyang3.Getzhicheng()<<"|"<<endl;cout<<"|——————————|——————————|——————————|"<<endl;cout<<"3、附加信息1:"<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<"|——————————|——————————|——————————|——|————|"<<endl;cout<<"|"<<setw(20)<<"学校"<<"|"<<setw(20)<<"学院"<<"|"<<setw(20)<<"专业"<<"|"<<setw(4)<<"班号"<<"|"<<setw(8)<<"入学成绩"<<"|"<<endl;cout<<"|——————————|——————————|——————————|——|————|"<<endl;cout<<"|"<<setw(20)<<yuanyang3.Getschool()<<"|"<<setw(20)<<yuanyang3. Getcollege()<<"|"<<setw(20)<<yuanyang3.Getmajor()<<"|"<<setw(4)<<yuan yang3.Getclassnumber()<<"|"<<setw(8)<<yuanyang3.Getscore()<<"|"<<endl ;cout<<"|——————————|——————————|——————————|——|————|"<<endl;cout<<"3、附加信息2:"<<endl;cout<<endl;cout<<endl;cout<<endl;cout<<"|—————|——————————|"<<endl;cout<<"|"<<setw(10)<<"导师"<<"|"<<setw(20)<<"研究方向"<<"|"<<endl;cout<<"|—————|——————————|"<<endl;cout<<"|"<<setw(10)<<yuanyang3.Getdaoshi()<<"|"<<setw(20)<<yuanyang3. Getdierection()<<"|"<<endl;cout<<"|—————|——————————|"<<endl;};break;}cout<<"是否继续(是按y或Y键,否则按其它键):";cin>>ch2;}while(ch2=='y'||ch2=='Y');return 0;}四、实验结果(测试用例、实验结果)1、2、五、实验总结1、充分利用继承与派生能缩减很多代码,避免代码重用;2、通过本实验五,我初步掌握了怎样使自己的程序更加美观;评语:批改日期:____________。