您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 天津理工大学Java实验二实验报告
计算机科学与工程系天津理工大学计算机科学与工程学院实验报告2016至2017学年第一学期课程名称Java语言程序设计学号学生姓名年级专业教学班号实验地点实验时间2017年11月20日第5节至第6节主讲教师董玉涛辅导教师董玉涛计算机科学与工程系2实验(二)实验名称工资管理软件设计软件环境Windows8.1,JavaSE9,JDK8,Eclipse硬件环境PC机实验目的1.熟悉Java程序结构,学习掌握抽象类的概念和方法。2.掌握接口的概念和实现方式,理解抽象类和接口的区别。3.整理上机步骤,总结经验和体会。实验内容(应包括实验题目、实验要求、实验任务等)序号No.姓名name地址address电话phone职务title社会安全号socialSN基本工资payRate1Sam123MainLine555-0469manager123-45-6789$2423.072Peter456OffLine555-0101employee987-65-4321$1246.153Mary789OffRocker555-0690employee010-20-3040$1169.234Cliff678FifthAve.555-0000hourly958-47-3625$10.555Al987SudsAve.555-8374volunteer无$0.006Gus321OffLine555-7282volunteer无$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计算机科学与工程系3类型的数组中。每个类都有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多谢!-----------------------------------------计算机科学与工程系4实验过程与实验结果(可包括实验实施的步骤、算法描述、流程、结论等)一、实验步骤与算法描述:根据实验需求,首先定义一个员工基类,描述姓名、地址、电话、职务、社会安全号、基本工资属性;定义一个工资计算方法。抽象类StaffMember定义过程如下,应包含以下的内容(具体方法的实现见附录中的源代码):publicabstractclassStaffMember{protectedintNo;//序号protectedStringname;//姓名protectedStringaddress;//地址protectedStringphone;//电话protectedStringtitle;//职务protectedStringsocialSN;//社会安全号protecteddoublepayRate;//基本工资publicStaffMember(intNo,Stringname,Stringaddress,Stringphone,StringsocialSN,doublepayRate)publicintgetNo()publicvoidsetNo(intno)publicStringgetName()publicvoidsetName(Stringname)计算机科学与工程系5publicStringgetAddress()publicvoidsetAddress(Stringaddress)publicStringgetPhone()publicvoidsetPhone(Stringphone)publicStringgetTitle()publicvoidsetTitle(Stringtitle)publicStringgetSocialSN()publicvoidsetSocialSN(StringsocialSN)publicdoublegetPayRate()publicvoidsetPayRate(doublepayRate)//支付金额publicabstractdoublepay();//toString方法publicStringtoString()}然后分别让经理、合同工、小时工、义工继承员工基类,每个人重写自己的工资计算方法。最后按照要求输出即可,具体实例化过程见附录源代码。二、实验结果:三、实验分析总结本次实验中,主要练习编译了跟抽象类有关的相关程序。其中主要包括已知抽象方法编写抽象类、抽象类抽象方法实现多态性、通过定义多个子类来实现对类的继承。通过本次实验,基本掌握了实现多态的方法,也练习了抽象类和抽象方法的定义和使用。以后也还需要多加练习,能更加熟悉。同时,编写程序中遇到问题再所难免,应耐心探究其中的原因,从出现问题的地方起,并联系前后程序,仔细推敲,逐个排查。直到最终搞清为止。计算机科学与工程系6附录(源程序清单)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;}计算机科学与工程系7publicStringgetAddress(){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;}计算机科学与工程系8publicvoidsetPayRate(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;}@Overridepublicdoublepay(){returnthis.getPayRate()+this.awardBonus();}publicdoubleawardBonus(){计算机科学与工程系9returnthis.bonus;}}classEmployeeextendsStaffMember{publicEmployee(intNo,Stringname,Stringaddress,Stringphone,StringsocialSN,doublepayRate){super(No,name,address,phone,socialSN,payRate);}@Overridepublicdoublepay(){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;}@Overr
本文标题:天津理工大学Java实验二实验报告
链接地址:https://www.777doc.com/doc-5396979 .html