实验二-类和对象---参考答案.doc
实验二 类和对象(参考答案)班级: 学号: 姓名: 成绩: 一 实验目的1理解面向对象程序设计的基本思想;2掌握类和对象的概念、定义和使用方法。3掌握不同特性对象成员的访问方法。二 使用的设备和仪器计算机+Windows XP +Visual C+6.0三 实验内容及要求1、 定义一个表示长方体类Cuboid,数据成员包括length(长)、width(宽)、height(高),成员函数包括长方体的输入、输出、计算体积和表面积等。在主函数中,定义3个长方体的对象,并调用成员函数完成其功能。2、 定义一个学生类Student,数据成员包括学号、姓名、数学成绩、英语成绩和C+成绩,成员函数包括:输入学生的信息函数;输出学生的信息函数;设置学生的信息函数;计算学生的平均成绩的函数。在main函数中调用以上函数实现相应功能。3、 定义一个图书类Book,在该类中包括以下数据成员和成员函数:数据成员:id(书号)、bookname(书名)、price(价格)、total(总存书数量)、number(当前剩余图书数量)成员函数:Input()图书信息输入;Output()图书信息输出;Borrow()借阅图书,并显示当前剩余图书数量;Restore()归还图书,并显示当前剩余图书数量。在主函数中,要求创建某种图书对象,并对该图书进行简单的输入、输出、借阅和归还管理。选择题:4、 根据以下要求类的编写。1)定义一个日期类Date,数据成员包括年、月、日,成员函数包括:Input()日期信息输入;Output()日期信息输出;Set()设置日期信息2)在第2题Student类中增加一个出生日期成员,使用Date类来定义。然后修改相应的成员函数,并增加一个成员函数GetAge,用来计算并返回学生的年龄。在主函数中定义对象,测试以上功能。四 实验步骤1、 程序代码:#include <iostream>using namespace std;class Cuboidpublic:void Input();void Show();float Volume();float Area();private:float length;float width;float height;void Cuboid:Input() cout<<"please input length,width,height:"cin>>length>>width>>height;void Cuboid:Show() cout<<"length="<<length<<" width="<<width<<" height="<<height<<endl;float Cuboid:Volume() return(length*width*height);float Cuboid:Area()return (length*width+length*height+height*width)*2;int main()Cuboid Cuboid1,Cuboid2;Cuboid1.Input();cout<<"Cuboid1 Information:"<<endl;Cuboid1.Show();cout<<"Volmue="<<Cuboid1.Volume()<<endl;cout<<"Area="<<Cuboid1.Area()<<endl;cout<<endl;Cuboid2.Input();cout<<"Cuboid2 Information:"<<endl;Cuboid2.Show();cout<<"Volmue="<<Cuboid2.Volume()<<endl;cout<<"Area="<<Cuboid2.Area()<<endl;cout<<endl;return 0;运行结果:2、 程序代码:/student.h 学生信息的头文件#include <iostream>#include<string>using namespace std;class Studentpublic:void Input_Stu(); /输入学生信息函数void Show_Stu(); /输出学生信息函数void Set(int n,string nm,double m,double e,double c); /设置学生信息函数double Ave_Stu(); /计算并返回学生平均成绩函数private:int num;string name;double math,english,cprogram;/student.cpp 学生信息的源文件#include"student.h"void Student:Input_Stu()cout<<"请输入学生的学号、姓名、数学、英语、C+的成绩:"<<endl;cin>>num>>name>>math>>english>>cprogram;void Student:Show_Stu()cout<<"*Student Info*"<<endl;cout<<"num="<<num<<endl;cout<<"name="<<name<<endl;cout<<"math="<<math<<endl;cout<<"english="<<english<<endl;cout<<"cprogram="<<cprogram<<endl;void Student:Set(int n,string nm,double m,double e,double c)num=n;name=nm; math=m;english=e;cprogram=c;double Student:Ave_Stu()return (math+english+cprogram)/3;/main.cpp 主函数所对应的源文件#include"student.h"int main()Student s1;s1.Input_Stu ();s1.Show_Stu ();cout<<"Average Score="<<s1.Ave_Stu ()<<endl;cout<<endl;s1.Set(2001,"Tom",70,80,90);s1.Show_Stu ();cout<<endl<<"Average Score="<<s1.Ave_Stu ()<<endl;cout<<endl;return 0;运行结果:3、 程序代码:#include<iostream>#include<string>using namespace std;class Bookpublic:void Input(); /图书信息输入;void Output(); /图书信息输出;void Borrow(); /借阅图书,并显示当前剩余图书数量;void Restore(); /归还图书,并显示当前剩余图书数量。void ShowNumber(); /显示剩余图书数量private:int id;string bookname;double price;int total;int number;void Book:Input ()while(1)cout<<"请输入图书编号、名称、价格、总数量:"<<endl;cin>>id>>bookname>>price>>total;if(price<0 | total <0)cout<<"价格或总数量不合法,请重新输入图书信息!"<<endl;elsenumber=total;break;void Book:Output ()cout<<"编号:"<<id<<endl;cout<<"名称:"<<bookname<<endl;cout<<"价格:"<<price<<endl;cout<<"总数量:"<<total<<endl;cout<<"剩余数量:"<<number<<endl;void Book:ShowNumber ()cout<<"剩余数量:"<<number<<endl;void Book:Borrow ()if(number=0)cout<<"图书剩余数量为0!请下次再来借阅。"<<endl;elsenumber-;cout<<"成功借阅出一本图书!"<<endl;ShowNumber();void Book:Restore ()number+;cout<<"成功归还回一本图书!"<<endl;ShowNumber();int main()Book bk1;bk1.Input ();bk1.Output ();cout<<endl;bk1.Borrow ();bk1.Borrow ();cout<<endl;bk1.Restore ();cout<<endl;bk1.Output ();cout<<endl;return 0;运行结果:4、 程序代码:#include <iostream>#include <string>#include <iomanip>using namespace std;const int NOWYEAR=2015; /当前年份/*Date类*class Dateprivate:int year,month,day;public:void Input();void Set(int,int,int); void Show();int GetYear();void Date:Input()cin>>year>>month>>day;void Date:Set(int y,int m,int d)year=y; month=m; day=d;void Date:Show()cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;int Date:GetYear () /定义公有成员函数,获取私有成员的值return year;/*Student类*class Studentpublic:void Input(); /输入学生信息函数void Show(); /输出学生信息函数void Set(int n,string nm,double m,double e,double c,int yy,int mm,int dd); /设置学生信息函数double Ave_Stu(); /计算并返回学生平均成绩函数int GetAge(); /计算并返回学生年龄private:int num;string name;double math,english,cprogram;Date birthday; /出生日期;void Student:Input()cout<<"请输入学生的学号、姓名、数学、英语、C+的成绩:"<<endl;cin>>num>>name>>math>>english>>cprogram;cout<<"请输入出生日期(年、月、日):"<<endl;birthday.Input ();void Student:Show()cout<<"*Student Info*"<<endl;cout<<"num="<<num<<endl;cout<<"name="<<name<<endl;cout<<"math="<<math<<endl;cout<<"english="<<english<<endl;cout<<"cprogram="<<cprogram<<endl;cout<<"birthday=" birthday.Show ();void Student:Set(int n,string nm,double m,double e,double c,int yy,int mm,int dd)num=n;name=nm; math=m;english=e;cprogram=c;birthday.Set(yy,mm,dd);double Student:Ave_Stu()return (math+english+cprogram)/3;int Student:GetAge()return NOWYEAR-birthday.GetYear()+1;int main()Student stu;stu.Input();stu.Show();cout<<endl<<"课程平均成绩为:"<<stu.Ave_Stu()<<endl;cout<<"该学生的年龄为:"<<stu.GetAge()<<endl; return 0;运行结果:五 实验总结1、 实验中遇到的问题及解决方法2、个人收获和体会