package JPA610; //利用套件方式將類別打包
abstract class work { //建立抽象類別讓子類別可以繼承
 String wno;
 work(String s) {wno=s;} 
 abstract double monthPay();  //建立一個抽象月收入類別

// 建立一個SalaryWorker年薪制類別,繼承自work,並加入紅利變數
class SalaryWorker extends work {
 int mp;         //年薪
 int redp=0;    //紅利(預設為0,可供主管使用)
 //SalaryWorker類別包含2個建構子 :員工編號及年薪資 
 SalaryWorker(String s, int i) {super(s); mp=i;}
 //算出年薪制員工的月薪資
 double monthPay() {return (mp/12.0+redp);}
}//建立一個HourlyWorker時薪制類別,繼承自work
class HourlyWorker extends work {
 int hr, hp;   //初始化3個建構子:員工編號 ,時數及時薪
 HourlyWorker(String s, int i1, int i2) {
       super(s);    hr=i2;    hp=i1;
 }   //算出時薪制員工的月薪資
 double monthPay() {return hr*hp;}
} //建立一個Manager主管類別,繼承自SalaryWorker
class Manager extends SalaryWorker {
 Manager(String s, int i, int i1) {
      super(s,i);
      redp = i1;
 }//初始化3個建構子:員工編號,年薪,每月紅利
}

public class JPA610_1 {
   public static void main(String argv[]) {
        SalaryWorker sw1 = new SalaryWorker("96001",180000);
        System.out.println("SalaryWorker:" + sw1.monthPay());
        HourlyWorker hw1 = new HourlyWorker("96002", 100, 160);
        System.out.println("HourlyWorker:" + hw1.monthPay());
        Manager ma1 = new Manager("97001", 240000, 5000);
        System.out.println("Manager:" + ma1.monthPay());
    }
}

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

package JPA610;
abstract class work {
 String wno;
 work(String s) {wno=s;}
 abstract double monthPay();
 void ishight(work k) {
  if (monthPay()>k.monthPay())
    System.out.println(wno+"較高");
    else
     System.out.println(k.wno+"較高");
 }
 double monthTaxes() {return monthPay()*.15;}
}

public class JPA610_2 {
    public static void main(String argv[]) {       
        SalaryWorker sw1 = new SalaryWorker("96001",180000);
        System.out.println("SalaryWorker:" + sw1.monthPay());
        HourlyWorker hw1 = new HourlyWorker("96002", 100, 160);
        System.out.println("HourlyWorker:" + hw1.monthPay());
        Manager ma1 = new Manager("97001", 240000, 5000);
        System.out.println("Manager:" + ma1.monthPay());

        sw1.ishight(hw1);
        hw1.ishight(ma1);

        System.out.println("SalaryWorker稅額:" + sw1.monthTaxes());
        System.out.println("HourlyWorker稅額:" + hw1.monthTaxes());
        System.out.println("Manager稅額:" + ma1.monthTaxes());   
    }
}

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

package JPA610; //利用套件方式將類別打包
abstract class work { //建立抽象類別讓子類別可以繼承
 String wno;
 static int count=0;   //新增計算人數的變數
 static double tottax=0.0;   //應稅額加總變數

 work(String s) {wno=s; count++;} 
 abstract double monthPay();  //建立一個抽象月收入類別
 static double getAverageTax() {  //計算平均稅額
       return ((double)tottax/count);
 }
 void ishight(work k) {
      if (monthPay()>k.monthPay())
         System.out.println(wno+"較高");
  else
     System.out.println(k.wno+"較高");
 }   //計算每人每個月的應付稅額
           double monthTaxes() {
          double mt = monthPay()*.15;
       tottax += mt;
       return (mt);
           }

public class JPA610_3 {
   public static void main(String argv[]) {
        SalaryWorker sw1 = new SalaryWorker("96001",180000);
        System.out.println("SalaryWorker:" + sw1.monthPay());
        HourlyWorker hw1 = new HourlyWorker("96002", 100, 160);
        System.out.println("HourlyWorker:" + hw1.monthPay());
        Manager ma1 = new Manager("97001", 240000, 5000);
        System.out.println("Manager:" + ma1.monthPay());
        sw1.ishight(hw1);
        hw1.ishight(ma1);
        System.out.println("SalaryWorker稅額:" + sw1.monthTaxes());
        System.out.println("HourlyWorker稅額:" + hw1.monthTaxes());
        System.out.println("Manager稅額:" + ma1.monthTaxes());
        System.out.println("平均稅額:" + work.getAverageTax());
    }
}

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

package JPA610; //利用套件方式將類別打包
import java.util.HashMap;

abstract class work { //建立抽象類別讓子類別可以繼承
 String wno;
 static int count=0;   //新增計算人數的變數
 static double tottax=0.0;   //應稅額加總變數

 work(String s) {wno=s; count++;} 
 abstract double monthPay();  //建立一個抽象月收入類別
 static double getAverageTax() {  //計算平均稅額
       return ((double)tottax/count);
 }
 void ishight(work k) {
      if (monthPay()>k.monthPay())
         System.out.println(wno+"較高");
  else
     System.out.println(k.wno+"較高");
 }   //計算每人每個月的應付稅額
           double monthTaxes() {
          double mt = monthPay()*.15;
       tottax += mt;
       return (mt);
           }

class Management {     //建立一個管理?別
     HashMap worker;    //初始化建構子 HashMap
     Management() {worker=new HashMap();}
    
     //建立方法put可將物件放入HashMap
     void put(String s, work w) {
           worker.put(s,w);
     }
     //建立方法afterTax,可算出扣完稅後的實拿薪資
     double afterTax(String s){
           work wt=(work)worker.get(s);
            return wt.monthPay()-wt.monthTaxes();
     }
}

public class JPA610_4 {
   public static void main(String argv[]) {
        SalaryWorker sw1 = new SalaryWorker("96001",180000);
        System.out.println("SalaryWorker:" + sw1.monthPay());
        HourlyWorker hw1 = new HourlyWorker("96002", 100, 160);
        System.out.println("HourlyWorker:" + hw1.monthPay());
        Manager ma1 = new Manager("97001", 240000, 5000);
        System.out.println("Manager:" + ma1.monthPay());
        sw1.ishight(hw1);
        hw1.ishight(ma1);
        System.out.println("SalaryWorker稅額:" + sw1.monthTaxes());
        System.out.println("HourlyWorker稅額:" + hw1.monthTaxes());
        System.out.println("Manager稅額:" + ma1.monthTaxes());
        System.out.println("平均稅額:" + work.getAverageTax());
        Management m = new Management();
        m.put("96001", sw1);
        m.put("96002", hw1);
        m.put("97001", ma1);
        System.out.println("97001 的稅後薪資: " + m.afterTax("97001"));
    }
}

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

package JPA610; //利用套件方式將類別打包
import java.util.HashMap;
import java.util.Iterator;

abstract class work { //建立抽象類別讓子類別可以繼承
 String wno;
 static int count=0;   //新增計算人數的變數
 static double tottax=0.0;   //應稅額加總變數

 work(String s) {wno=s; count++;} 
 abstract double monthPay();  //建立一個抽象月收入類別
 static double getAverageTax() {  //計算平均稅額
       return ((double)tottax/count);
 }
 void ishight(work k) {
      if (monthPay()>k.monthPay())
         System.out.println(wno+"較高");
  else
     System.out.println(k.wno+"較高");
 }   //計算每人每個月的應付稅額
           double monthTaxes() {
          double mt = monthPay()*.15;
       tottax += mt;
       return (mt);
           }

class Management {     //建立一個管理別
  double total=0; 
     HashMap worker;    //初始化建構子 HashMap
     Management() {worker=new HashMap();}
    
     //建立方法put可將物件放入HashMap
     void put(String s, work w) {
           worker.put(s,w);
     }
     double afterTax(String s){
           work wt=(work)worker.get(s);
            return wt.monthPay()-wt.monthTaxes();
     }
     double totalSalary() throws limex {
      for (Iterator iterator=worker.values().iterator();iterator.hasNext();) {
             work www = (work)iterator.next();
             total = www.monthPay()+total;
             if (total > 50000)
    throw new limex(total);
   }
         return total;   
     }
}
    class limex extends Exception {  //建立類別limex並繼承Exception
      double dd;
      limex(double d) {dd=d;}
      double getAm() {return dd;}   //傳回員工總月薪的實際數字
 }
 
public class JPA610_5 {
   public static void main(String argv[]) {
        SalaryWorker sw1 = new SalaryWorker("96001",180000);
        System.out.println("SalaryWorker:" + sw1.monthPay());
        HourlyWorker hw1 = new HourlyWorker("96002", 100, 160);
        System.out.println("HourlyWorker:" + hw1.monthPay());
        Manager ma1 = new Manager("97001", 240000, 5000);
        System.out.println("Manager:" + ma1.monthPay());
        sw1.ishight(hw1);
        hw1.ishight(ma1);
        System.out.println("SalaryWorker稅額:" + sw1.monthTaxes());
        System.out.println("HourlyWorker稅額:" + hw1.monthTaxes());
        System.out.println("Manager稅額:" + ma1.monthTaxes());
        System.out.println("平均稅額:" + work.getAverageTax());
        Management m = new Management();
        m.put("96001", sw1);
        m.put("96002", hw1);
        m.put("97001", ma1);
        System.out.println("97001 的稅後薪資: " + m.afterTax("97001"));
       
        try {m.totalSalary();         
        } catch (limex e) {
         System.out.println("Total salary exceed limit:"+e.getAm());}

    }
}

arrow
arrow
    全站熱搜

    chungweis 發表在 痞客邦 留言(0) 人氣()