fork download
  1. import java.util.Iterator;
  2. import java.util.LinkedList;
  3. import java.util.Queue;
  4.  
  5. public class Main
  6. {
  7.  
  8. public static void main(String[] args)
  9. {
  10. EmployeeList emp = new EmployeeList();
  11. /*emp.enqueue(new SalesManager("Gee", 1000));
  12.   emp.enqueue(new SalesManager("Gal", 1000));
  13.   emp.enqueue(new SalesManager("Gem", 1000));*/
  14. emp.enqueue(new SalesPerson("John", 0.03));
  15. emp.enqueue(new SalesPerson("Joan", 0.04));
  16. emp.enqueue(new SalesPerson("Jack", 0.02));
  17. /*emp.enqueue(new Manager("Fred", 10000));
  18.   emp.enqueue(new Manager("Frank", 5000));
  19.   emp.enqueue(new Manager("Florence", 3000));
  20.   emp.enqueue(new Programmer("Linda", 7));
  21.   emp.enqueue(new Programmer("Larry", 5));
  22.   emp.enqueue(new Programmer("Lewis", 3));*/
  23.  
  24. /*emp.setHours("Linda", 35);
  25.   emp.setHours("Larry", 23);
  26.   emp.setHours("Lewis", 3);*/
  27. emp.setSales("John", 12000);
  28. emp.setSales("Joan", 10000);
  29. emp.setSales("Jack", 5000);
  30. /*emp.setSales("Gee", 4000);
  31.   emp.setSales("Gal", 3000);
  32.   emp.setSales("Gem", 2000);
  33.   emp.setSalary("Gee", 1000);
  34.   emp.setSalary("Gal", 2000);
  35.   emp.setSalary("Gem", 3000);*/
  36. emp.display();
  37. }
  38. }
  39.  
  40.  
  41.  
  42.  
  43. class EmployeeList
  44. {
  45. Queue<Employee> empList = new LinkedList<Employee>();
  46.  
  47. Employee find(String nm)
  48. {
  49. Iterator<Employee> it = empList.iterator();
  50. while(it.hasNext())
  51. {
  52.  
  53. Employee em = (Employee)it.next();
  54. em.display();
  55. System.out.println(nm + " is " + em.name + " really? " + nm.equals(em.name));
  56. if(em.name.equals(nm))
  57. {
  58. return em;
  59. }
  60. }
  61. return null;
  62. }
  63.  
  64. double payroll()
  65. {
  66. double payroll = 0.0;
  67. Iterator<Employee> it = empList.iterator();
  68. while(it.hasNext())
  69. {
  70. Employee em = (Employee)it.next();
  71. payroll += em.computePay();
  72. }
  73. return payroll;
  74. }
  75.  
  76. void display()
  77. {
  78. Iterator<Employee> it = empList.iterator();
  79. while(it.hasNext())
  80. {
  81. Employee em = (Employee)it.next();
  82. em.display();
  83. }
  84. System.out.println("\nPayroll: " + payroll());
  85. }
  86.  
  87. void enqueue(Employee e)
  88. {
  89. empList.add(e);
  90. }
  91.  
  92. void setHours(String nm, int hrs)
  93. {
  94. Employee em = find(nm);
  95. /*if(em == null)
  96.   return;*/
  97. em.setHours(hrs);
  98. }
  99.  
  100. void setSalary(String nm, float salary)
  101. {
  102. Employee em = find(nm);
  103. /*if(em == null)
  104.   return;*/
  105. em.setSalary(salary);
  106. }
  107.  
  108. void setSales(String nm, double sales)
  109. {
  110. System.out.println(nm + " " + sales);
  111. Employee em = find(nm);
  112. /*if(em == null)
  113.   return;*/
  114. em.setSales(sales);
  115. }
  116. }
  117.  
  118. abstract class Employee
  119. {
  120. String name;
  121.  
  122. Employee() {}
  123. Employee (String nm) { name = nm; }
  124. abstract double computePay();
  125. void display () {}
  126. void setHours(double hrs) {}
  127. void setSales(double sales) {}
  128. void setSalary(double salary) { System.out.println("NO!"); }
  129. }
  130.  
  131. class WageEmployee extends Employee
  132. {
  133. double rate;
  134. double hours;
  135.  
  136. WageEmployee(String name)
  137. {
  138. this.name = name;
  139.  
  140. }
  141. WageEmployee(String name, double rate)
  142. {
  143. this.name = name;
  144.  
  145. this.rate = rate;
  146. }
  147.  
  148. double computePay()
  149. {
  150. return rate * hours;
  151. }
  152.  
  153. void setHours(double hrs)
  154. {
  155. hours = hrs;
  156. System.out.println("Set Hours to: " + hours);
  157. }
  158.  
  159. void display ()
  160. {
  161. System.out.println("Name: " + name + " Hours: " + hours + " Rate: " + rate);
  162. }
  163. }
  164.  
  165. class SalesPerson extends WageEmployee
  166. {
  167. double comission;
  168. double salesMade;
  169.  
  170. SalesPerson(String name, double commision)
  171. {
  172. super(name);
  173. this.comission = commision;
  174. }
  175.  
  176. double computePay()
  177. {
  178. return comission * salesMade;
  179. }
  180.  
  181. void setSales(double sales)
  182. {
  183. salesMade = sales;
  184. System.out.println("Set sales to: " + salesMade);
  185. }
  186.  
  187. void display ()
  188. {
  189. System.out.println("Name: " + name + " Commision: " + comission + " Sales: " + salesMade);
  190. }
  191. }
Success #stdin #stdout 0.03s 245632KB
stdin
Standard input is empty
stdout
John 12000.0
Name: John Commision: 0.03 Sales: 0.0
John is John really? true
Set sales to: 12000.0
Joan 10000.0
Name: John Commision: 0.03 Sales: 12000.0
Joan is John really? false
Name: Joan Commision: 0.04 Sales: 0.0
Joan is Joan really? true
Set sales to: 10000.0
Jack 5000.0
Name: John Commision: 0.03 Sales: 12000.0
Jack is John really? false
Name: Joan Commision: 0.04 Sales: 10000.0
Jack is Joan really? false
Name: Jack Commision: 0.02 Sales: 0.0
Jack is Jack really? true
Set sales to: 5000.0
Name: John Commision: 0.03 Sales: 12000.0
Name: Joan Commision: 0.04 Sales: 10000.0
Name: Jack Commision: 0.02 Sales: 5000.0

Payroll: 860.0