天津理工大学Java实验二实验报告.docx

上传人:b****5 文档编号:8267042 上传时间:2023-01-30 格式:DOCX 页数:14 大小:245.43KB
下载 相关 举报
天津理工大学Java实验二实验报告.docx_第1页
第1页 / 共14页
天津理工大学Java实验二实验报告.docx_第2页
第2页 / 共14页
天津理工大学Java实验二实验报告.docx_第3页
第3页 / 共14页
天津理工大学Java实验二实验报告.docx_第4页
第4页 / 共14页
天津理工大学Java实验二实验报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

天津理工大学Java实验二实验报告.docx

《天津理工大学Java实验二实验报告.docx》由会员分享,可在线阅读,更多相关《天津理工大学Java实验二实验报告.docx(14页珍藏版)》请在冰豆网上搜索。

天津理工大学Java实验二实验报告.docx

天津理工大学Java实验二实验报告

天津理工大学

计算机科学与工程学院

 

实验报告

 

2016至2017学年第一学期

 

课程名称

Java语言程序设计

学号

学生姓名

年级

专业

教学班号

实验地点

实验时间

2017年11月20日第5节至第6节

主讲教师

董玉涛

辅导教师

董玉涛

 

实验

(二)

实验名称

工资管理软件设计

软件环境

Windows8.1,JavaSE9,JDK8,Eclipse

硬件环境

PC机

实验目的

1.熟悉Java程序结构,学习掌握抽象类的概念和方法。

2.掌握接口的概念和实现方式,理解抽象类和接口的区别。

3.整理上机步骤,总结经验和体会。

实验内容(应包括实验题目、实验要求、实验任务等)

序号

No.

姓名

name

地址

address

电话

phone

职务

title

社会安全号

socialSN

基本工资

payRate

1

Sam

123MainLine

555-0469

manager

123-45-6789

$2423.07

2

Peter

456OffLine

555-0101

employee

987-65-4321

$1246.15

3

Mary

789OffRocker

555-0690

employee

010-20-3040

$1169.23

4

Cliff

678FifthAve.

555-0000

hourly

958-47-3625

$10.55

5

Al

987SudsAve.

555-8374

volunteer

$0.00

6

Gus

321OffLine

555-7282

volunteer

$0.00

其中,Sam是经理,每月除得到基本工资外,还获得$500.00的红利;Peter和Mary是合同工,每月拿基本工资;Cliff是小时工,他的每月的工资额=基本工资×工作小时数,他的工作小时数为每月40小时;而Al和Gus是义工,不拿工资。

图1反应了上述情况。

StaffMember是抽象类,有一个抽象方法pay。

Manager类中的bonus代表红利;awardBonus方法用来增加红利。

Hourly类中的hoursWorked代表一个月工作的小时数;addHours方法用来增加小时数。

Staff类中的main方法用来驱动整个程序的运行;payDetail方法用来显示所有人的详细信息;构造方法用来初始化上述6个人,并将他们存储在staffMember类型的数组中。

每个类都有toString方法,用来返回该类的详细信息。

要求你按照此图的继承关系定义每一个类,并最终显示所有人的详细信息。

显示结果如下:

姓名:

Sam

地址:

123MainLine

电话:

555-0469

社会安全号:

123-45-6789

工资:

$2923.07

-----------------------------------------

姓名:

Peter

地址:

456OffLine

电话:

555-0101

社会安全号:

987-65-4321

工资:

$1246.15

-----------------------------------------

姓名:

Mary

地址:

789OffRocker

电话:

555-0690

社会安全号:

010-20-3040

工资:

$1169.23

-----------------------------------------

姓名:

Cliff

地址:

678FifthAve.

电话:

555-0000

社会安全号:

958-47-3625

工作小时数:

40

工资:

$422.00

-----------------------------------------

姓名:

Al

地址:

987SudsAve.

电话:

555-8374

多谢!

-----------------------------------------

姓名:

Gus

地址:

321OffLine

电话:

555-7282

多谢!

-----------------------------------------

实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)

一、实验步骤与算法描述:

根据实验需求,首先定义一个员工基类,描述姓名、地址、电话、职务、社会安全号、基本工资属性;定义一个工资计算方法。

抽象类StaffMember定义过程如下,应包含以下的内容(具体方法的实现见附录中的源代码):

publicabstractclassStaffMember

{

protectedintNo;//序号

protectedStringname;//姓名

protectedStringaddress;//地址

protectedStringphone;//电话

protectedStringtitle;//职务

protectedStringsocialSN;//社会安全号

protecteddoublepayRate;//基本工资

publicStaffMember(intNo,Stringname,Stringaddress,Stringphone,StringsocialSN,doublepayRate)

publicintgetNo()

publicvoidsetNo(intno)

publicStringgetName()

publicvoidsetName(Stringname)

publicStringgetAddress()

publicvoidsetAddress(Stringaddress)

publicStringgetPhone()

publicvoidsetPhone(Stringphone)

publicStringgetTitle()

publicvoidsetTitle(Stringtitle)

publicStringgetSocialSN()

publicvoidsetSocialSN(StringsocialSN)

publicdoublegetPayRate()

publicvoidsetPayRate(doublepayRate)

//支付金额

publicabstractdoublepay();

//toString方法

publicStringtoString()

}

然后分别让经理、合同工、小时工、义工继承员工基类,每个人重写自己的工资计算方法。

最后按照要求输出即可,具体实例化过程见附录源代码。

二、实验结果:

三、实验分析总结

本次实验中,主要练习编译了跟抽象类有关的相关程序。

其中主要包括已知抽象方法编写抽象类、抽象类抽象方法实现多态性、通过定义多个子类来实现对类的继承。

通过本次实验,基本掌握了实现多态的方法,也练习了抽象类和抽象方法的定义和使用。

以后也还需要多加练习,能更加熟悉。

同时,编写程序中遇到问题再所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推敲,逐个排查。

直到最终搞清为止。

 

附录(源程序清单)

packageex2;

publicabstractclassStaffMember

{

protectedintNo;

protectedStringname;

protectedStringaddress;

protectedStringphone;

protectedStringtitle;

protectedStringsocialSN;

protecteddoublepayRate;

publicStaffMember(intNo,Stringname,Stringaddress,Stringphone,StringsocialSN,doublepayRate)

{

this.No=No;

this.name=name;

this.address=address;

this.phone=phone;

this.socialSN=socialSN;

this.payRate=payRate;

}

publicintgetNo()

{

returnNo;

}

publicvoidsetNo(intno)

{

No=no;

}

publicStringgetName()

{

returnname;

}

publicvoidsetName(Stringname)

{

this.name=name;

}

publicStringgetAddress()

{

returnaddress;

}

publicvoidsetAddress(Stringaddress)

{

this.address=address;

}

publicStringgetPhone()

{

returnphone;

}

publicvoidsetPhone(Stringphone)

{

this.phone=phone;

}

publicStringgetTitle()

{

returntitle;

}

publicvoidsetTitle(Stringtitle)

{

this.title=title;

}

publicStringgetSocialSN()

{

returnsocialSN;

}

publicvoidsetSocialSN(StringsocialSN)

{

this.socialSN=socialSN;

}

publicdoublegetPayRate()

{

returnpayRate;

}

publicvoidsetPayRate(doublepayRate)

{

this.payRate=payRate;

}

publicabstractdoublepay();

publicStringtoString()

{

returnthis.No+""+this.name+""+this.address+""+this.phone+""+this.socialSN+"$"+this.pay();

}

publicstaticvoidmain(String[]args)

{

Staffs=newStaff();

s.payDetail();

}

}

classManagerextendsStaffMember

{

publicManager(intNo,Stringname,Stringaddress,Stringphone,StringsocialSN,doublepayRate,doublebonus)

{

super(No,name,address,phone,socialSN,payRate);

this.bonus=bonus;

}

privatedoublebonus;

publicdoublegetBonus()

{

returnbonus;

}

publicvoidsetBonus(doublebonus)

{

this.bonus=bonus;

}

@Override

publicdoublepay()

{

returnthis.getPayRate()+this.awardBonus();

}

publicdoubleawardBonus()

{

returnthis.bonus;

}

}

classEmployeeextendsStaffMember

{

publicEmployee(intNo,Stringname,Stringaddress,Stringphone,StringsocialSN,doublepayRate)

{

super(No,name,address,phone,socialSN,payRate);

}

@Override

publicdoublepay()

{

returnthis.getPayRate();

}

}

classHourlyextendsStaffMember

{

publicHourly(intNo,Stringname,Stringaddress,Stringphone,StringsocialSN,doublepayRate,inthoursWorked)

{

super(No,name,address,phone,socialSN,payRate);

this.hoursWorked=hoursWorked;

}

privateinthoursWorked;

publicintgetHoursWorked()

{

returnhoursWorked;

}

publicvoidsetHoursWorked(inthoursWorked)

{

this.hoursWorked=hoursWorked;

}

@Override

publicdoublepay()

{

returnthis.getPayRate()*this.getHoursWorked();

}

publicvoidaddHours(inthours)

{

this.setHoursWorked(this.getHoursWorked()+hours);

}

publicStringtoString()

{

returnthis.No+""+this.name+""+this.address+""+this.phone+""+""+this.socialSN+"工作时长:

"+this.hoursWorked+"工资:

$"+this.pay();

}

}

classVolunteerextendsStaffMember

{

publicVolunteer(intNo,Stringname,Stringaddress,Stringphone,StringsocialSN,doublepayRate)

{

super(No,name,address,phone,socialSN,payRate);

}

@Override

publicdoublepay()

{

return0.00;

}

publicStringtoString()

{

returnthis.No+""+this.name+""+this.address+""+this.phone+""+this.socialSN+this.payRate;

}

}

classStaff

{

privateStaffMember[]members=newStaffMember[6];

publicStaff()

{

StaffMembermanager=newManager(1,"姓名:

Sam","地址:

123MainLine",

"电话:

555-0469","社会安全号:

123-45-6789",2923.07,500.00);

StaffMemberemployee1=newEmployee(2,"姓名:

Peter","地址:

456OffLine",

"电话:

555-0101","社会安全号:

987-65-4321",1246.15);

StaffMemberemployee2=newEmployee(3,"姓名:

Mary","地址:

789OffRocker","电话:

555-0690","社会安全号:

010-20-3040",1169.23);

StaffMemberhourly=newHourly(4,"姓名:

Cliff","地址:

678FifthAve",

"电话:

555-0000","社会安全号:

958-47-3625",10.55,40);

StaffMembervolunteer1=newVolunteer(5,"姓名:

Al","地址:

987SudsAve",

"电话:

555-8374","多谢!

",0.00);

StaffMembervolunteer2=newVolunteer(6,"姓名:

Gus","地址:

321OffLine",

"电话:

555-7282","多谢!

",0.00);

members[0]=manager;

members[1]=employee1;

members[2]=employee2;

members[3]=hourly;

members[4]=volunteer1;

members[5]=volunteer2;

}

publicvoidpayDetail()

{

for(inti=0;i

{

System.out.println(members[i]);

System.out.println("---------------------------------------------------");

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1