实验4面向对象程序设计指导

上传人:zhu****ng 文档编号:164202933 上传时间:2022-10-24 格式:DOC 页数:6 大小:45KB
返回 下载 相关 举报
实验4面向对象程序设计指导_第1页
第1页 / 共6页
实验4面向对象程序设计指导_第2页
第2页 / 共6页
实验4面向对象程序设计指导_第3页
第3页 / 共6页
点击查看更多>>
资源描述
实验4 面向对象的程序设计-类与对象(2学时)一、实验目的1 掌握C+类的概念和基本组成,学会设计类,掌握类对象的声明和使用方法;2 熟悉各种成员函数包括构造函数、析构函数、内嵌函数的定义与使用;3 掌握静态数据成员的使用。二、实验内容及步骤(一)验证实验程序 1定义一个描述学生通讯录的类,数据成员包括:姓名、学校、电话号码和邮编;成员函数包括:输出各个数据成员的值,分别设置和获取各个数据成员的值。分析:由于姓名、学校和电话号码的数据长度是可变的,可使用动态的数据结构。邮编的长度是固定的,可定义一个字符数组来存放邮编。将数据成员均定义为私有的。用一个成员函数输出所有的成员数据,用四个成员函数分别设置姓名、单位、电话号码和邮编,再用四个成员函数分别获取姓名、单位、电话号码和邮编。主函数完成简单的测试工作。参考程序如下:#include #include class COMMUchar *pName;/姓名,数据成员为私有的 char *pSchool;/单位 char *pNum;/电话号码char Box10;/邮编public:void Print(void)/输出数据成员cout姓名:pNamet;cout单位:pSchoolt;cout电话号码:pNumt;cout邮编:Boxn;void Init(char *,char *,char *,char *);void FreeSpace(void);/释放数据成员占用的空间void SetName(char *name)if(pName ) delete pName;/释放存储空间pName = new charstrlen(name)+1;/申请存储空间strcpy(pName,name);void SetScool(char *unit)/置学校名称if( pSchool ) delete pSchool;pSchool = new charstrlen(unit)+1;strcpy(pSchool,unit);void SetNum(char *num)/置电话号码if( pNum ) delete pNum;pNum = new charstrlen(num)+1;strcpy(pNum,num);void SetBox(char *mailnum)/置邮编strcpy(Box,mailnum);char *GetName(void)/取姓名 return pName; char *GetScool(void )/取学校 return pSchool; char *GetNum(void)/取电话号码 return pNum; char *GetBox(void)/取邮编 return Box; ;void COMMU:Init(char *name,char *unit,char *num,char *b)/完成初始化pName = new char strlen(name)+1;strcpy(pName,name);pSchool = new char strlen(unit)+1;strcpy(pSchool,unit);pNum = new char strlen(num)+1;strcpy(pNum,num);strcpy(Box,b);void COMMU:FreeSpace()if(pName) delete pName;if(pSchool) delete pSchool;if(pNum) delete pNum;void main( ) COMMU c1,c2;c1.Init(于元,河海大学,025-85595638,210024);c2.Init(王海,南京理工大学,025-85432455,210015);c1.Print();c2.Print();c1.SetName(王国安);coutc1.GetName()n;c1.SetScool(南京理工大学);coutc1.GetScool()n;c1.SetNum(025-88755635);coutc1.GetNum()n;c1.SetBox(210090);coutc1.GetBox()n;c1.Print();c1.FreeSpace();c2.FreeSpace();思考:l用以下数据测试程序的正确性:名字改为“李明明”,并输出;学校改为“北京理工大学”并输出;电话改为“01055667878”,并输出;邮编改为“150035”并输出。l 将成员函数的权限改为私有的,观察现象。l将类改为结构体,重新执行程序,输出成员数据。l增加数据成员:邮件地址,手机号码,并将电话号码分为住宅电话和办公电话。2设计一个管理图书的简单程序,描述一本书的信息包括:书号,书名,出版社和作者等。提供的基本功能包括:可连续将新书存入文件“book.dat”中,新书信息加入到文件的尾部;也可以根据输入的书名进行查找;把文件“book.dat”中同书名的所有书显示出来。分析:可以把描述一本书的信息定义为一个Book类,它包含必要的成员函数。把加入的新书总是加入到文件尾部,所以,以增补方式打开输出文件。从文件中查找书时,总是从文件开始位置查找,以读方式打开文件。用一个循环语句实现可连续地将新书加入文件或从文件中查找指定的书名。由于是以一个Book类的实例进行文件输入输出的,所以,这文件的类型应该是二进制文件。简化的参考程序如下:#include #include #include class Booklong int num;/书号char bookname40;/书名char publicname40;/出版社char name20;/作者public:Book() num=0; bookname0 =0;publicname0 =0; name0 =0;char * Getbookname(void) return bookname ;long Getnum(void ) return num;void Setdata(long , char *,char *,char *);void Show(void );Book(long , char *,char *,char *);void Book:Setdata(long nu , char *bn,char *p,char *n)num = nu; strcpy(bookname,bn);strcpy(publicname,p); strcpy(name,n);void Book:Show(void )cout书号:numt书名:booknamet;cout出版社:publicnamet作者:namen;Book:Book(long nu, char * bp,char *p,char *n)Setdata(nu , bp, p, n); void main(void)Book b1,b2;long nu;char bn40;/书名char pn40;/出版社char na20;/作者ifstream file1;ofstream file3;char flag = y;while( flag=y |flag=Y) /由flag控制循环couttt 1: 按书名查找一本书!n;couttt 2: 加入一本新书!n;coutf;switch(f)case 1:coutbn;file1.open(book.dat,ios:in | ios:binary);/按读方式打开文件while(!file1.eof()int n;file1.read(char *)&b1,sizeof(Book);n=file1.gcount();if(n=sizeof(Book)if(strcmp(b1.Getbookname(),bn)=0)/显示书的信息b1.Show();file1.close();break;case 2:coutnu;coutbn;coutpn;coutna;b1.Setdata(nu,bn,pn,na);file3.open(book.dat,ios:app|ios:binary);/增补方式打开文件file3.write(char*)&b1,sizeof(b1);file3.close();break;default: flag = n;思考:修改程序增加l 按出版社、作者从文件中查找书名;l 输出同一出版社出版的所有书名;l 按列表的格式输出文件中的所有书名等功能。3. 改正以下程序中的错误,并分析错误原因。提示:该程序中point类的构造函数定义不正确, 在main()中对数据成员的访问不正确。要求修改程序后,在主函数中创建一个对象并初始化为坐标(5,5),然后输出这个点的X,Y坐标。 (二)完成实验项目1. 声明一个Circle类,有1) 数据成员Radius(半径)2) 成员函数GetArea()计算圆的面积3) 构造函数Circle(float radius)进行初始化4) 析构函数在主函数中创建一个Circle类的对象进行测试(输入一个数值,作为Circle类对象的半径,调用该对象的GetArea()求以该数值为半径的圆的面积)。2. 声明一个tree类,有1) 数据成员ages(树龄)2) 成员函数grow(int years)对ages加上years3) 成员函数age()显示对象的数据成员ages的值4) 构造函数tree(int n=0)进行初始化5) 析构函数在主函数中创建一个tree类的对象进行测试(创建一个树龄为18的对象,调用age()显示树龄,之后调用grow(4),生长4年,再显示树龄)。3. 人员信息管理系统:以一个小型公司的人员管理为例,说明类及成员函数的设计。提示:1) 类的设计:某小型公司,需要存储雇员的编号、级别、月薪,并显示全部信息。根据这些需求,设计一个类employee,在该类中,包括的数据成员有:编号(int individualEmpNo)级别(int grade)月薪(float accumPay)成员函数有:设置编号(void setEmpNo(int steps)):编号顺序加1(利用静态变量实现)提取编号(void getEmpNo)晋升级别(void promote(int increment)):提升的级别由参数指定提取级别(int getGrade)设置月薪(void SetAccumPay(float pa):提取月薪(float GetAccumPay)构造函数(用于设置数据成员编号、级别和月薪初值)析构函数2) 整个程序分为两个独立的文档:employee.h(包含类的定义和类的实现)和employee.cpp(主函数文件)3) 在主函数main()中创建employee类的两个对象,对它们设计编号、级别和月薪,并输出每个雇员的基本信息。三、课后作业1.撰写实验报告
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑工程


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!