2013年2月8日 星期五

TQC+ JAVA 606 薪資計算

TQC+ JAVA6 試題總覽:LINK
Github 備份:LINK

/* TQC+ JAVA6 - 606_1 */
//建立一個抽象屬性
abstract class teacher{
String name;
double rate;
double totalHours;
double salary;
//建構子初始化名字、時薪、總時數
teacher(String s, double d,double ds){
name =s;
rate = d;
totalHours =ds;
}
abstract double salary();
}
//建立兼任老師類別
class PartTimeTeacher extends teacher{
PartTimeTeacher(String s,double d,double ds){
super(s,d,ds);
}
//實作薪水方法
public double salary(){
return totalHours * rate;
}
}
//建立專任老師類別
class FullTimeTeacher extends teacher{
FullTimeTeacher(String s,double d,double ds){
super(s,d,ds);
}
//實作薪水方法
public double salary(){
return 9*rate+((totalHours-9) * rate*0.8);
}
}
public class JPA06_1 {
public static void main(String argv[]) {
//建立兼任、專任老師的物件
PartTimeTeacher p1 = new PartTimeTeacher("John",400,2);
PartTimeTeacher p2 = new PartTimeTeacher("Mary",300,4);
FullTimeTeacher f1 = new FullTimeTeacher("Peter",400,9);
FullTimeTeacher f2 = new FullTimeTeacher("Paul",300,12);
FullTimeTeacher f3 = new FullTimeTeacher("Eric",350,15);
//透過方法得到薪水值
System.out.println("John-PartTime : " + p1.salary());
System.out.println("Mary-PartTime : " + p2.salary());
System.out.println("Peter-FulLTime : " + f1.salary());
System.out.println("Paul-FulLTime : " + f2.salary());
System.out.println("Eric-FulLTime : " + f3.salary());
}
}
/* TQC+ JAVA6 - 606_2 */
abstract class teacher{
String name;
double rate;
double totalHours;
double salary;
teacher(String s, double d,double ds){
name =s;
rate = d;
totalHours =ds;
}
abstract double salary();
//增加一個扣稅後的薪資總額方法
double afterTaxIns(){
return salary()-salary()*0.1-100;//扣100元為健保費
}
}
class PartTimeTeacher extends teacher{
PartTimeTeacher(String s,double d,double ds){
super(s,d,ds);
}
public double salary(){
return totalHours * rate;
}
}
class FullTimeTeacher extends teacher{
FullTimeTeacher(String s,double d,double ds){
super(s,d,ds);
}
public double salary(){
return 9*rate+((totalHours-9) * rate*0.8);
}
}
//新增行政主管,繼承專任教師
class Manager extends FullTimeTeacher{
int rank;
//建構子,初始化名字、時薪、總時數、階級
Manager(String s,double d,double ds,int i){
super(s,d,ds);
rank=i;
}
//實作薪資方法(複寫FullTimeTeacher.salary())
public double salary(){
return super.salary()+rank*500;
}
double getTotalSalary(){
return salary();
}
}
public class JPA06_2 {
public static void main(String argv[]) {
PartTimeTeacher p1 = new PartTimeTeacher("John",400,2);
PartTimeTeacher p2 = new PartTimeTeacher("Mary",300,4);
FullTimeTeacher f1 = new FullTimeTeacher("Peter",400,9);
FullTimeTeacher f2 = new FullTimeTeacher("Paul",300,12);
FullTimeTeacher f3 = new FullTimeTeacher("Eric",350,15);
System.out.println("John-afterTaxIns:" + p1.afterTaxIns());
System.out.println("Mary-afterTaxIns:" + p2.afterTaxIns());
System.out.println("Peter-afterTaxIns:" + f1.afterTaxIns());
System.out.println("Paul-afterTaxIns:" + f2.afterTaxIns());
System.out.println("Eric-afterTaxIns:" + f3.afterTaxIns());
//建立行政主管物件
Manager am1 = new Manager("Fang", 500, 12, 3);
System.out.println("Fang-Manager:" + am1.getTotalSalary());
System.out.println("Fang-afterTaxIns:" + am1.afterTaxIns());
}
}
/* TQC+ JAVA6 - 606_3 */
abstract class teacher{
String name;
double rate;
double totalHours;
double salary;
teacher(String s, double d,double ds){
name =s;
rate = d;
totalHours =ds;
}
abstract double salary();
double afterTaxIns(){
return salary()-salary()*0.1-100;
}
//建立一個比較薪水高低的方法
void compare(teacher tt){
//使用tt.name指外部傳進來比較的名字
if(tt.salary()>salary())
System.out.printf("%s is higher than %s\n", tt.name,name);
else
System.out.printf("%s is higher than %s\n", name,tt.name);
}
}
class PartTimeTeacher extends teacher{
PartTimeTeacher(String s,double d,double ds){
super(s,d,ds);
}
public double salary(){
return totalHours * rate;
}
}
class FullTimeTeacher extends teacher{
FullTimeTeacher(String s,double d,double ds){
super(s,d,ds);
}
public double salary(){
return 9*rate+((totalHours-9) * rate*0.8);
}
}
class Manager extends FullTimeTeacher{
int rank;
Manager(String s,double d,double ds,int i){
super(s,d,ds);rank=i;
}
public double salary(){
return super.salary()+rank*500;
}
double getTotalSalary(){
return afterTaxIns();
}
}
public class JPA06_3 {
public static void main(String argv[]) {
PartTimeTeacher p1 = new PartTimeTeacher("John",400,2);
PartTimeTeacher p2 = new PartTimeTeacher("Mary",300,4);
FullTimeTeacher f1 = new FullTimeTeacher("Peter",400,9);
FullTimeTeacher f2 = new FullTimeTeacher("Paul",300,12);
FullTimeTeacher f3 = new FullTimeTeacher("Eric",350,15);
Manager am1 = new Manager("Fang", 500, 12, 3);
//(物件)am1與(物件)f3誰的薪水高
am1.compare(f3);
p1.compare(f3);
}
}
/* TQC+ JAVA6 - 606_4 */
import java.util.HashMap;
import java.util.Iterator;
abstract class teacher{
String name;
double rate;
double totalHours;
double salary;
teacher(String s, double d,double ds){
name =s;
rate = d;
totalHours =ds;
}
abstract double salary();
double afterTaxIns(){
return salary()-salary()*0.1-100;
}
void compare(teacher tt){
if(tt.salary()>salary())
System.out.printf("%s is higher than %s\n", tt.name,name);
else
System.out.printf("%s is higher than %s\n", name,tt.name);
}
}
class PartTimeTeacher extends teacher{
PartTimeTeacher(String s,double d,double ds){
super(s,d,ds);
}
public double salary(){
return totalHours * rate;
}
}
class FullTimeTeacher extends teacher{
FullTimeTeacher(String s,double d,double ds){
super(s,d,ds);
}
public double salary(){
return 9*rate+((totalHours-9) * rate*0.8);
}
}
class Manager extends FullTimeTeacher{
int rank;
Manager(String s,double d,double ds,int i){
super(s,d,ds);
rank=i;
}
public double salary(){
return super.salary()+rank*500;
}
double getTotalSalary(){
return afterTaxIns();
}
}
//建立老師資料庫的類別
class TeacherDB{
HashMap tea;
//建構子初始化為HashMap物件
TeacherDB(){
tea = new HashMap();
}
//建立一個儲存資料的方法
void store(String s ,teacher t){
tea.put(s, t);
}
//建立一個方法取得所有老師加總薪水
double totalOfAll(){
double d=0;
for(Iterator iterator = tea.values().iterator();iterator.hasNext();){
teacher tt = (teacher)iterator.next();
d = d+tt.afterTaxIns();
}
return d;
}
}
public class JPA06_4 {
public static void main(String argv[]) {
PartTimeTeacher p1 = new PartTimeTeacher("John",400,2);
PartTimeTeacher p2 = new PartTimeTeacher("Mary",300,4);
FullTimeTeacher f1 = new FullTimeTeacher("Peter",400,9);
FullTimeTeacher f2 = new FullTimeTeacher("Paul",300,12);
FullTimeTeacher f3 = new FullTimeTeacher("Eric",350,15);
Manager am1 = new Manager("Fang", 500, 12, 3);
//建立一個老師資料庫的物件,並且逐一存入HashMap中
TeacherDB school = new TeacherDB();
school.store("John", p1);
school.store("Mary", p2);
school.store("Peter", f1);
school.store("Paul", f2);
school.store("Eric", f3);
school.store("Fang", am1);
System.out.println("Total salary: " + school.totalOfAll());
}
}
/* TQC+ JAVA6 - 606_5 */
import java.util.HashMap;
import java.util.Iterator;
abstract class teacher{
String name;
double rate;
double totalHours;
double salary;
teacher(String s, double d,double ds){
name =s;
rate = d;
totalHours =ds;
}
abstract double salary();
double afterTaxIns(){
return salary()-salary()*0.1-100;
}
void compare(teacher tt){
if(tt.salary()>salary())
System.out.printf("%s is higher than %s\n", tt.name,name);
else
System.out.printf("%s is higher than %s\n", name,tt.name);
}
}
class PartTimeTeacher extends teacher{
PartTimeTeacher(String s,double d,double ds){
super(s,d,ds);
}
public double salary(){
return totalHours * rate;
}
}
class FullTimeTeacher extends teacher{
FullTimeTeacher(String s,double d,double ds){
super(s,d,ds);
}
public double salary(){
return 9*rate+((totalHours-9) * rate*0.8);
}
}
class Manager extends FullTimeTeacher{
int rank;
Manager(String s,double d,double ds,int i){
super(s,d,ds);
rank=i;
}
public double salary(){
return super.salary()+rank*500;
}
double getTotalSalary(){
return afterTaxIns();
}
}
class TeacherDB{
HashMap tea;
TeacherDB(){
tea = new HashMap();
}
void printAllTeacher(){
for(Iterator iterator = tea.values().iterator();iterator.hasNext();){
try{
teacher tt = (teacher)iterator.next();
//建立判斷方法,當小於1500元,則丟出錯誤訊息
if(tt.salary()<1500)
throw new lessecpt(tt.name,tt.salary());
else
System.out.println(tt.name+" "+tt.salary());
}catch(lessecpt e) {
//System.out.println(e.getMessage());
}
}
}
void store(String s ,teacher t){
tea.put(s, t);
}
double totalOfAll(){
double d=0;
for(Iterator iterator = tea.values().iterator();iterator.hasNext();){
teacher tt = (teacher)iterator.next();
d = d+tt.afterTaxIns();
}
return d;
}
//建立Exception的類別
class lessecpt extends Exception{
//建構子初始化姓名和薪資
lessecpt(String s,double d){
System.out.println("**"+s+" "+d);
}
}
}
public class JPA06_5 {
public static void main(String argv[]) {
PartTimeTeacher p1 = new PartTimeTeacher("John",400,2);
PartTimeTeacher p2 = new PartTimeTeacher("Mary",300,4);
FullTimeTeacher f1 = new FullTimeTeacher("Peter",400,9);
FullTimeTeacher f2 = new FullTimeTeacher("Paul",300,12);
FullTimeTeacher f3 = new FullTimeTeacher("Eric",350,15);
TeacherDB school = new TeacherDB();
school.store("John", p1);
school.store("Mary", p2);
school.store("Peter", f1);
school.store("Paul", f2);
school.store("Eric", f3);
school.printAllTeacher();
}
}


TQC+ JAVA6 試題總覽:LINK
Github 備份:LINK

本篇教學的程式碼皆由筆者編輯,歡迎轉貼本教學,但請全文轉貼,謝啦~

2 則留言:

  1. 這一題結果會跑出:
    Paul 3420.0
    **Mary 1200.0
    null
    Eric 4830.0
    Peter 3600.0
    **John 800.0
    null
    多出2個null,請問要如何修改?

    回覆刪除
  2. 在printAllTeacher()這個function的catch(lessecpt e)中,
    將System.out.println(e.getMessage());註解掉
    變成
    //System.out.println(e.getMessage());
    即可~

    回覆刪除