实验二 类和对象的使用_参考答案
实验二类和对象的使用
班级:学号:姓名:成绩:
一.实验目的
1.掌握类和对象的概念、定义和使用方法。
2.掌握不同特性对象成员的访问方法。
二.使用的设备和仪器
计算机+Windows XP +Visual C++6.0
三.实验内容及要求
1.定义一个Book类,在该类定义中包括以下数据成员和成员函数:
数据成员:bookname(书名)、price(价格)、number(存书数量)
成员函数:set()输入图书信息;display()显示图书的情况;borrow()将存书数量减1,并显示当前存书数量;restore()将存书数量加1,并显示当前存书数量。
在主函数中,要求创建某一图书对象,并对该图书进行简单的显示、借阅和归还等管理。
2.定义一个中国好声音歌手类。其中,包括每个歌手的名字、年龄、来自哪个省份、所唱的曲目等。可以实现报名、显示、修改等功能。
3.定义一个时间类,实现课堂中第五节中的例2.2。
数据成员:时、分、秒
成员函数:输入时间、设置时间、按12小时制显示时间、按24小时制显示时间、增加1小时、减少1小时等功能。
4.定义一个学生类Student,要求如下:
(1)数据成员包括学号、姓名、数学成绩、英语成绩和C++成绩;要求对所输入的成绩的合法性进行判断。
成员函数包括:设置学生的信息函数;输入学生的信息函数;输出学生的信息函数;
计算学生平均成绩的函数。
(2)添加新的数据成员:出生年月日;实现多个学生信息的添加、成绩的修改(一次只能修改一科成绩)等功能。要求单独定义一个日期类,并对所输入的出生年月日的合法性进行判断。
(3)设计一个菜单函数。
******************************************************************
* *
* 1.添加 2.设置 3.显示 4.修改成绩 5.计算平均分0.退出*
* *
****************************************************************** 请输入相应编号:
四.实验步骤
编写程序+编译+连接+运行+分析结果
五.实验总结
1.编写的程序源代码
2.实验中遇到的问题及解决方法
3.收获
参考答案:
1、
#include
#include
#include
using namespace std;
class Book
{
private:
string bookname; //书名
double price; //价格
int number; //数量
public:
void input(); //输入书籍信息
void display(); //输出书籍信息
void borrow(); //借书
void restore(); //还书
};
void Book::input()//输入书籍信息
{
cout<<"请输入书名、价格、数量:"< cin>>bookname>>price; while(1) { if(price<0) { cout<<"价格输入有误,请重新输入!"; cin>>price; } else break; } cin>>number; while(1) { if(number<0) { cout<<"数量输入有误,请重新输入!"; cin>>number; } else break; } } void Book::display()//输出书籍信息 { cout< cout< cout< cout< } void Book::borrow()//借书 { if(number<=0) cout<<"本书库存为0,借阅失败!"< else { number--; cout<<"借阅成功,请及时归还!"< display(); } } void Book::restore()//还书 { number++; cout<<"归还成功!"< display(); } //************************************************************** void Menu(Book &e)//菜单 { system("cls"); int ch; do { cout<<"************************************************8888888*****"< cout<<"* *"< cout<<"* 1.添加 2.显示 3.借书 4.还书0.退出*"< cout<<"* *"< cout<<"*************************************************8888888****"< cout<<"请输入相应编号:"; cin>>ch; switch(ch) { case 1: e.input(); break; case 2: e.display(); break; case 3: e.borrow(); break; case 4: e.restore(); break; case 0: return; default: cout<<"数据输入不合法,请重新输入!"< } system("pause"); system("cls"); }while(ch!=0); cout<<"\n欢迎您下次再使用本系统!"< } int main() { Book b; Menu(b); return 0; } 2、 #include #include #include using namespace std; class Singer { private: string name; //歌手名 int age; //年龄 string province; //省份 string song; //曲目 public: void input(); //报名 void display(); //浏览 void modify(); //修改歌手相关信息 }; void Singer::input()//报名 { cout<<"请输入歌手名、年龄、省份和所选曲目:"< cin>>name>>age; while(1) { if(age<0||age>70) { cout<<"年龄输入有误,请重新输入!"; cin>>age; } else break; } cin>>province>>song; } void Singer::display()//浏览 { cout< cout< cout< cout< cout< } void Singer::modify()//修改歌手信息,具体修改项用菜单项进行选择 { int ch,ch2; do { cout<<"************************************************************"< cout<<"* *"< cout<<"* 请选择需要修改的项:*"< cout<<"* *"< cout<<"* 1.姓名 2.年龄 3.省份 4.曲目0.退出*"< cout<<"* *"< cout<<"************************************************************"< cout<<"请输入相应编号:"; cin>>ch; switch(ch) { case 1: cout<<"请输入新的歌手名:"; cin>>name; break; case 2: cout<<"请输入新年龄:"; cin>>age; break; case 3: cout<<"请输入新的省份:"; cin>>province; break; case 4: cout<<"请输入新的曲目:"; cin>>song; break; case 0: return; default: cout<<"数据输入不合法,请重新输入!"< } system("pause"); system("cls"); }while(ch!=0); } //************************************************************************* void Menu(Singer &e)//菜单 { system("cls"); int ch,ch2; do { cout<<"*****************************************************"< cout<<"* *"< cout<<"* 1.报名 2.浏览 3.修改0.退出*"< cout<<"* *"< cout<<"*****************************************************"< cout<<"请输入相应编号:"; cin>>ch; switch(ch) { case 1: e.input(); break; case 2: e.display(); break; case 3: e.modify(); break; case 0: return; default: cout<<"数据输入不合法,请重新输入!"< } system("pause"); system("cls"); }while(ch!=0); cout<<"\n欢迎您下次再使用本系统!"< } int main() { Singer b; Menu(b); return 0; } 3、 #include #include #include using namespace std; class Time { private: int hour; //时 int minute; //分 int second; //秒 public: void input(); //输入时间 void set(int,int,int); //设置时间 void display_12(); //12小时制显示时间 void display_24(); //24小时制显示时间,默认方式void add_hour(); //增加一个小时 void sub_hour(); //减少一个小时 }; void Time::input()//输入时间 { cout<<"请输入时、分、秒(采取24小时制):"< cin>>hour; while(1) { if(hour<0||hour>23) { cout<<"时间输入有误,请重新输入!"; cin>>hour; } else break; } cin>>minute; while(1) { if(minute<0||minute>59) { cout<<"分钟输入有误,请重新输入!"; cin>>minute; } else break; } cin>>second; while(1) { if(second<0||second>59) { cout<<"秒输入有误,请重新输入!"; cin>>second; } else break; } } void Time::set(int h,int m,int s)//设置时间 { hour=h; minute=m; second=s; } void Time::display_12()//12小时制显示时间 { cout< cout< cout< cout< } void Time::display_24()//24小时制显示时间,默认方式 { cout< cout< cout< cout< } void Time::add_hour()//增加一个小时 { hour++; if(hour==24) hour=0; } void Time::sub_hour()//减少一个小时 { hour--; if(hour==-1) hour=23; } //************************************************ void display_menu(Time &e)//选择显示形式的菜单 { int ch,ch2; do { cout<<"*************************************************"< cout<<"* *"< cout<<"* 1.十二小时制 2.二十四小时制0.退出*"< cout<<"* *"< cout<<"*************************************************"< cout<<"请输入相应编号:"; cin>>ch; switch(ch) { case 1: e.display_12(); break; case 2: e.display_24(); break; case 0: return; default: cout<<"数据输入不合法,请重新输入!"< } system("pause"); system("cls"); }while(ch!=0); } //************************************************ void Menu(Time &e)//菜单 { system("cls"); int ch,ch2; do { cout<<"******************************************************************** ***"< cout<<"* *"< cout<<"* 1.输入 2.设置 3.浏览 4.增加一小时 5.减少一小时0.退出*"< cout<<"* *"< cout<<"******************************************************************** ***"< cout<<"请输入相应编号:"; cin>>ch; switch(ch) { case 1: e.input(); break; case 2: cout<<"设定时间为0:0:0"< break; case 3: display_menu(e); break; case 4: e.add_hour(); break; case 5: e.sub_hour(); break; case 0: return; default: cout<<"数据输入不合法,请重新输入!"< } system("pause"); system("cls"); }while(ch!=0); cout<<"\n欢迎您下次再使用本系统!"< } int main() { Time b; Menu(b); return 0; } 4、 #include using namespace std; #include #include const int N=8; //定义日期类 class Date { private: int CYear; int CMonth; int CDay; public: void set_Date(int y,int m,int d); void Print_Date(); int IsValid_CMonth(); int IsValid_CDay(); void Input_Date(); }; void Date::set_Date(int y,int m,int d) { CYear=y; CMonth=m; CDay=d; } void Date::Print_Date()//输出 { cout< int Date::IsValid_CMonth() // 返回0,表示有错误;返回1,表示正确;{ if(CMonth<1||CMonth>12) { cout<<"输入的月份信息有误,请重新输入!"< return 0; } else return 1; } int Date::IsValid_CDay() // 返回0,表示有错误;返回1,表示正确;{ switch(CMonth) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: if(CDay>31||CDay<1) { cout<<"输入的日期信息有误,请重新输入!"< return 0; } break; case 4: case 6: case 9: case 11: if(CDay>30||CDay<1) { cout<<"输入的日期信息有误,请重新输入!"< return 0; } break; case 2: if((CYear%400==0)||(CYear%4==0)&&(CYear%100!=0)) { if(CDay>29||CDay<1) { cout<<"输入的日期信息有误,请重新输入!"< return 0; } } else { if(CDay>28||CDay<1) { cout<<"输入的日期信息有误,请重新输入!"< return 0; } } break; } return 1; } void Date::Input_Date()//输入 { cout<<"请输入出生日期:"< cout<<"年:"; cin>>CYear; while(1) { cout<<"月:"; cin>>CMonth; if(IsValid_CMonth()==1) break; } while(1) { cout<<"日:"; cin>>CDay; if(IsValid_CDay()==1) break; } //********************************************** //定义员工类 class Student { private: string Num; //学号 string Name; //姓名 Date Birthday; //生日 double Math; //数学成绩 double CPlusPlus; //C++成绩 double English; //英语成绩 public: string get_Num(); //获取学号 string get_Name(); //获取姓名 void Input_Student(); //输入学生信息 void Set_Student(string,string,int,int,int,double,double,double); //设置学生信息void Print_Student(); //显示学生信息 double Average_Score(); //求三科的平均成绩 void Modify_Score(double,int);//修改成绩,一次只能改一科成绩 int IsScoreValid(int n); //判断成绩是否合法,0-100之间。 }; string Student::get_Num()//获取学号 { return Num; } string Student::get_Name()//获取姓名 { return Name; } void Student::Input_Student()//输入学生信息 { cout<<"学号:"; cin>>Num; cout<<"姓名:"; cin>>Name; Birthday.Input_Date(); while(1) cout<<"数学成绩:"; cin>>Math; if(IsScoreValid(Math)==1) break; } while(1) { cout<<"C++成绩:"; cin>>CPlusPlus; if(IsScoreValid(CPlusPlus)==1) break; } while(1) { cout<<"英语成绩:"; cin>>English; if(IsScoreValid(English)==1) break; } } void Student::Set_Student(string nu,string na,int y,int mo,int d,double m,double c,double e)//设置学生信息 { Num=nu; Name=na; Birthday.set_Date(y,mo,d); Math=m; CPlusPlus=c; English=e; } void Student::Print_Student()//输出学生信息 { cout< cout< cout< Birthday.Print_Date(); cout< cout< cout< cout< } double Student::Average_Score()//计算平均成绩 { return (Math+CPlusPlus+English)/3; } void Student::Modify_Score(double score,int n)//修改成绩 //修改成绩,一次只能改一科成绩 //其中,参数n代表科目,1表示数学、2表示C++、3表示英语 { if(IsScoreValid(score)==0) { cout<<"设置失败!"< return ; } if(n==1) Math=score; else if(n==2) CPlusPlus=score; else if(n==3) English=score; cout<<"设置成功!"< } int Student::IsScoreValid(int n) //判断成绩是否合法,0-100之间。 { if(n<0||n>100) { cout<<"成绩不合法!"< return 0; } else return 1; } //********************************************************** void Menu(Student e)//菜单 { system("cls"); int ch,ch2; double score; do { cout<<"******************************************************************"< cout<<"* *"< cout<<"* 1.添加 2.设置 3.显示 4.修改成绩 5.计算平均分0.退出*"< cout<<"* *"< cout<<"******************************************************************"< cout<<"请输入相应编号:"; cin>>ch; switch(ch) { case 1: e.Input_Student(); break; case 2: cout<<"将学生信息重置为:王一、101、1998/4/5、80、80、80"< e.Set_Student("101","王一",1998,4,5,80,80,80); break; case 3: e.Print_Student(); break; case 4: do { cout< cout<<"1.数学 2.C++ 3.英语0.退出"< cout<<"请选择:"; cin>>ch2; if(ch2==1) { cout<<"请输入新的数学成绩:"; cin>>score; e.Modify_Score(score,1); } else if(ch2==2) { cout<<"请输入新的C++成绩:"; cin>>score; e.Modify_Score(score,2); } else if(ch2==3) { cout<<"请输入新的英语成绩:"; cin>>score; e.Modify_Score(score,3); } else if(ch2==0) break; else cout<<"输入不合法,请重新输入!"< }while(ch2!=0); break; case 5: cout< cout< cout< cout< break; case 0: return; break; default: cout<<"数据输入不合法,请重新输入!"< } system("pause"); system("cls"); }while(ch!=0); cout<<"\n欢迎您下次再使用本系统!"< } int main() { Student e; Menu(e); return 0; } 实验5:Java类与对象 一、实验目的 (1)使用类来封装对象的属性和功能; (2)掌握Java类的定义。 (3)java对象的使用 二、实验任务 (1)按要求编写一个Java程序。 (2)按要求完善一个Java程序,编译、运行这个程序,并写出运行结果。 三、实验内容 1.编写一个Java程序片断,以定义一个表示学生的类Student。这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”、“获得年龄”。 2.为类Student增加一个方法public String toString( ),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。编写一个Java Application程序,创建Student类的对象,并验证新增加的功能。 class Student{ long studentID; int classID; String name; String sex; int age; public Student(long studentID,int classID,String name,String sex,int age){ this.studentID=studentID; this.classID=classID; https://www.360docs.net/doc/374267544.html,=name; this.sex=sex; this.age=age; } public long getStudentID(){ return studentID; } public int getClassID(){ 福建师范大学实验报告 课程:C++ 实验名称:类和对象二第 1页共 5页 系别:实验日期年月日 专业班级:组别_____________ 实验报告日期年月日 姓名:学号:报告退发 ( 订正、重做 ) 同组人_________________________________ 教师审批签字 一、实验题目:实验九类和对象(二) 二、实验环境: 三、实验目的 (1)进一步加深对类和对象的理解。 (2)掌握类的构造函数和折购函数的概念和使用方法。 (3)掌握对对象数组,对象的指针及其使用方法。 (4)掌握友元的概念和使用。 (5)了解类模板的使用方法。 四、实验内容 (1)有以下程序: 1、阅读此程序,分析其执行过程,然后上机运行,对比输出结果。 2、修改上面的程序,增加一个fun函数,改写main函数,在main函数中调用fun函数,在fun函数中使用对象的引用(Student&)作为形参。 (2)商店销售某一商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售 时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受9.8折优惠。现已知当天3个销售员销售情况为: 销售员号(num)销售件数(quantity)销售单价(price)101 5 23.5 102 12 24.56 103 100 21.5 请编程序,计算出当日此商品的总销售款sum以及每件商品的平均售价。要求用静态数据成员和静态成员函数。 (3)有以下程序: 请读者分析和运行此程序,注意友元函数Time::display的作用。将程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。 修改后上机调试和运行。 实验3 类和对象的创建与使用 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第1,3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 public class AccountOperation { public static void main(String [] args) { Account account1=new Account("650101","柳眉","天河学院",800.00); Account account2=new Account("650102","郑杰","天河学院",200.00); account1.transfer(account1,account2,300.0); account1.deposit(300.5); account1.withdraw(200); account1.withdraw(300); account1.query(); System.out.println(account1.toString()); //System.out.println(https://www.360docs.net/doc/374267544.html,); error!! } } class Account { private String account; private String name; private String address; private double balance; 实验一:类和对象 【实验目的】 1.理解对象和类,掌握类的定义及如何创建一个对象; 2.掌握构造方法的运用; 3.掌握方法的定义和参数传递; 4. 掌握类的继承机制。 【实验准备】 一、复习配套教材相关章节的内容; 二、预习本次实验; 【实验内容】 1.编写一个程序,显示水果的定购行情。定义一个带有参数的构造方法,这些参数用于存放产品名,数量和价格。在主程序中输出三种不同的水果。package avage; public class text { String name; int agr; double page; public text(){ } public text(String name,int agr,double page){ https://www.360docs.net/doc/374267544.html,=name; this.agr=agr; this.page=page; } public void evagre(){ System.out.println("水果名为:"+https://www.360docs.net/doc/374267544.html,); System.out.println("水果数量:"+this.agr); System.out.println("水果单价:"+this.page); } } public class text1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub text s=new text(); https://www.360docs.net/doc/374267544.html,="苹果"; s.agr =10; s.page=1.0; s.evagre(); text c=new text(); https://www.360docs.net/doc/374267544.html,="香蕉"; s.agr =10; s.page=1.0; s.evagre(); text d=new text(); https://www.360docs.net/doc/374267544.html,="橘子"; s.agr =10; s.page=1.0; s.evagre(); 2. 编写一个学生类,封装学生的学号、姓名、成绩等信息。再编写一个主类, 实验2 类和对象(一) 1、实验目的 (1)掌握声明类的方法,类和类的成员的的概念以及定义对象的方法。 (2)初步掌握用类和对象编制基于对象的程序。 (3)学习检查和调试基于对象的程序。 2、实验内容 (1)有以下程序: #include 实验报告_实验3 类与对象(学生学号_姓 名) 一、实验目的 1.熟悉类的组成,掌握类的声明方法; 2.理解构造方法的作用,并掌握构造方法的定义; 3.熟练使用访问器和设置器实现信息隐藏和封装; 4.熟悉一般方法、构造方法的重载; 5.能够正确地区分静态变量与实例变量、静态方法与实例方法的不同,掌握静态变量和静态方法的使用;6.掌握对象的创建、引用和使用及向方法传递参数的方式; 7.掌握this关键字的使用以及对象数组的创建和访问; 8.掌握Java包的创建、包成员的各种访问方式; 9.掌握一维数组:声明,创建,初始化,数组元素的访问; 10.掌握多维数组的概念:二维数组的声明,初始化,元素的访问。 二、实验内容与步骤 1.请回答下列问题: (1)Cirecle类定义了几个属性?它们的类型、访问权限各为什么? 答:两个PI,floatl类型,静态私有权限 Radius,float;类型,私有权限 (2)类中的“PI”的值可以在程序的方法中更改吗? 答:不可以,因为PI为静态变量 (3)Cirecle类定义了几个方法?它们的访问权限怎样? 答:四个,getRadius(),setRadius(float radius),getPerimeter(),getArea()都是公有权限 2.写出Rectangle类的程序代码: class Rectangle { private float width; private float length; public float getWidth( ) //获取矩形宽度 {return width;} public float getLength( ) //获取矩形长度 {return length;} public float getPerimeter( ) //获取矩形周长 {return 2*(width+length);} public float getArea( ) //获取矩形面积 {return (width*length);} public void setWidth(float w) //设置矩形宽度 {width=w;} public void setLength(float l) //设置矩形长度 {length=l;} } 3.回答下列问题: (1)该程序中有几个类?主类是什么?如果将这两个类放在一个文件中,源程序文件名应是什么?答:两个类:Circle、CircleTest;主类是CircleTest;源程序文件名是CircleTest。 实验报告_实验5类与类关系与抽象类(学生 学号_姓名) 一、实验目的 1.理解继承的概念,掌握子类的创建方法; 2.熟悉成员变量的隐藏和方法覆盖; 3.掌握使用super访问被隐藏、覆盖的基类变量与方法; 4.理解继承的层次结构,熟悉构造方法的执行顺序; 5.理解访问修饰符的作用,熟悉访问修饰符对子类继承性的影响; 6.熟悉子类对象向上转型的实现方法和Object类的基本用法; 7.理解多态种类、意义、实现条件及基本应用; 8.理解内部类的作用、种类、实现方法及注意事项; 9.理解类与类之间的关系,了解单例模式的实现机理; 10.理解抽象类、抽象方法概念,熟悉它们的声明、使用。 二、实验内容与步骤 1.(基础题)根据题意及注释补充所缺少代码,然后运行程序 public Student(){} public Student(String sno, String sname, int age) { this.sname=sname; this.sno=sno; this.age=age; } public String getSno() { return sno; } public void setSno(String sno) { this.sno = sno; } public String getSname() { return sname; } public void setSname(String sname) { this.sname= sname; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } (1): class CollegeStudent extends Student (2): getSno() (3): getSname() (4): getAge() (5): major (6): student.setAge(26) (7): student.setSname("Jack") (8): cstudent.setSname("Jerry") (9): cstudent.setSno("1840700101") (10): cstudent.setAge(23) (11): cstudent.setMajor("物联网工程") 回答相关问题: (1)程序中有多少个类,哪个是主类?哪个是基类?哪个是子类? (2)程序中子类继承了基类哪些成员?基类对象如何给成员赋初值?子类对象又是如何给成员赋值? (3)是否可以不定义Student类的无参构造器? 2.(基础题)分析、运行以下程序,并回答相关问题: (1)分析程序,找出有问题的代码,请问出错原因是什么? 实验一类和对象 Visual C++ 6.0集成开发环境的使用: Visual C++系列产品是微软公司推出的一款优秀的C++集成开发环境,其产品定位为Windows 95/98、NT、2000 系列Win32 系统程序开发,由于其良好的界面和可操作性,被广泛应用。由于2000 年以后,微软全面转向.NET 平台,Visual C++6.0 成为支持标准C/C++规范的最后版本。 1.启动 安装完系统后,可以选择如下两种方式启动 1) 点击Windows “开始”菜单,选择“程序”菜单下“Microsoft Visual Studio 6.0”子菜单下的快捷方式Microsoft Visual C++ 6.0 启动Visual C++ 6.0。 2) 点击Windows “开始”菜单,选择“运行”,输入msdev,即可启动。启动后的界面如下: 图 1 启动界面 2.建立工程 选择“File”菜单下的“New”菜单项或直接按Ctrl+N,启动新建向导,如图2 所示: 图 2 新建向导 选择在“Projects”属性页选择Win32 Console Application,在Project Name 中输入项目名称demo,在Location 中选择项目文件,如图2 中c:\test\demo,项目所有文件将保存在此文件。输入完毕,单击确定按钮,进入下一界面如图3: 图 3 项目类型向导 在图 3 所示界面中选择a simple application,然后点击Finish 按钮,系统显示图4 所示界面。如果想退回上一步可以选择“Back”按钮。 图 4 项目信息 在图 4 中选择OK 按钮,系统完成项目的创建,并保存项目相关的信息。项目的目录结构如图5 所示。 1) Demo.dsw 是项目工作区文件,双击此文件,即可打开此项目; 2) Demo.dsp 为项目文件; 3) demo.cpp 是项目中的一个源程序;stdafx.h 和stdafx.cpp 为自动创建的源程序,一般不用修改。 图 5 目录结构 实验04 类与对象(6学时) (第4章类与对象) 一、实验目的 二、实验任务 4_1 声明一个CPU类。 包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。观察构造函数和析构函数的调用顺序。 4_2 声明一个简单的Computer类。 有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 4_3 声明一个表示时间的结构体。 可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。 4_4(习题4-10)设计一个用于人事管理的People(人员)类。 考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。其中“出生日期”声明为一个“日期”类内嵌子对象。用成员函数实现人员信息的录入和显示。要求包括:构造函数和析构函数、内联成员函数、组合。 三、实验步骤 1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。 首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。程序名:。(程序见步骤2) ★程序的运行结果: 2.(示例)调试程序文件。 使用调试功能观察程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。参考程序如下: 操作)调试操作步骤如下: (1)单击“调试 | 逐语句”命令,系统进行单步执行状态,程序开始运行,一个DOS 窗口出现,此时Visual Studio中光标停在main()函数的入口处。 类和对象 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 2、两游戏角色决斗。(选做) 角色1交手次数+1,生命值-1,经验值+2;角色2交手次数+1,生命值-2,经验值+3。经验值每增加50时,生命值+1;生命值<0判为负。生命值初始为1000,经验值初始为0。给定二个不同的角色,判定交手的胜负关系。 提示: step1:建立角色类,给出相应的成员,并能以生命值、经验值初始化角色对象。 step2:建立fight方法,接收二个角色类型的参数,返回胜者。 step3:初始化二角色,调用fight方法。 3、根据分数录取学生。 设计一个学校类,其中包含成员变量line(录取分数线)和对该变量值进行设置和获取的方法。 编写一个学生类,它的成员变量有考生的name(姓名)、id(考号)、total(综合成绩)、sports(体育成绩)。它还有获取学生的综合成绩和体育成绩的方法。 编写一个录取类,它的一个方法用于判断学生是否符合录取条件。其中录取条件为:综合成绩在录取分数线之上,或体育成绩在96以上并且综合成绩大于300。在该类的main()方法中,建立若干个学生对象,对符合录取条件的学生,输出其信息及“被录取”。 四、实验记录与分析(可自拟或选择) 1、重载的构造方法具有不同个数或不同类型的参数,编译器就可以根据这一点判断出用new 关键字产生对象时,该调用哪个构造方法了。 2、每个对象拥有各自的实例成员变量,而所有对象共享一个类成员变量。 3、实例成员变量通过对象引用,类成员变量通过类或对象名访问。实验5 类和对象1答案
C++实验报告 类和对象(2)
实验3 类和对象
实验:类和对象1
实验2 类和对象(一)
实验报告_实验3 类与对象
实验报告_实验5 类与类关系与抽象类(学生学号_姓名)
实验一 类和对象
C++语言程序设计实验答案_类与对象
实验5 类和对象
C++实验二类与对象(附答案)