public class TimeBook
1:
2: /**
3: Class for a one-week record of the time worked by
4: each employee. Uses a five-day week (Mon.-Fri.).
5: main has a sample application.
6: */
7: public class TimeBook
8: {
9: private int numberOfEmployees;
10: private int[][] hours;
11: //hours[i][j] has the hours for employee j on day i.
12: private int[] weekHours;
13: //weekHours[i] has the week’s hours worked for
14: //employee i+1.
15: private int[] dayHours;
16: //dayHours[i] has the total hours worked by all
17: //employees on day i. Monday is 0, Tuesday 1, etc.
18:
19: /**
20: Reads hours worked for each employee on each day of
21: the week into the two-dimensional array hours. (The method
22: for input is just a stub in this preliminary version.)
23: Computes the total weekly hours for each employee and
24: the total daily hours for all employees combined.
25: */
26: public static void main(String[] args)
27: {
28: TimeBook book = new TimeBook(3);
29: book.setHours( );
30: book.update( );
31: book.showTable( );
32: }
33:
34: public TimeBook(int theNumberOfEmployees)
35: {
36: numberOfEmployees = theNumberOfEmployees;
37: hours = new int[5][numberOfEmployees];
38: //the 5 is for the 5 days Monday through Friday.
39: weekHours = new int[numberOfEmployees];
40: dayHours = new int[5];
41: }
42:
43: public void setHours( ) //This is just a stub.
44: {
45: hours[0][0] = 8; hours[0][1] = 0; hours[0][2] = 9;
46: hours[1][0] = 8; hours[1][1] = 0; hours[1][2] = 9;
47: hours[2][0] = 8; hours[2][1] = 8; hours[2][2] = 8;
48: hours[3][0] = 8; hours[3][1] = 8; hours[3][2] = 4;
49: hours[4][0] = 8; hours[4][1] = 8; hours[4][2] = 8;
50: }
51:
52: public void update( )
53: {
54: computeWeekHours( );
55: computeDayHours( );
56: }
57:
58: private void computeWeekHours( )
59: {
60: int dayNumber, employeeNumber, sum;
61: for (employeeNumber = 1;
62: employeeNumber <= numberOfEmployees; employeeNumber++)
63: {//Process one employee:
64: sum = 0;
65: for(dayNumber = 0; dayNumber < 5; dayNumber++)
66: sum = sum + hours[dayNumber][employeeNumber - 1];
67: //sum contains the sum of all the hours worked
68: //in one week by employee with number employeeNumber.
69: weekHours[employeeNumber - 1] = sum;
70: }
71: }
72:
73: private void computeDayHours( )
74: {
75: int dayNumber, employeeNumber, sum;
76: for (dayNumber = 0; dayNumber < 5; dayNumber++)
77: {//Process one day (for all employees):
78: sum = 0;
79: for (employeeNumber = 1;
80: employeeNumber <= numberOfEmployees;
81: employeeNumber++)
82: sum = sum + hours[dayNumber][employeeNumber - 1];
83: //sum contains the sum of all hours worked by all
84: //employees on day dayNumber.
85: dayHours[dayNumber] = sum;
86: }
87: }
88:
89: public void showTable( )
90: {
91: int row, column;
92: System.out.print("Employee ");
93: for (column = 0; column < numberOfEmployees; column++)
94: System.out.print((column + 1) + " ");
95: System.out.println("Totals");
96: System.out.println( );
97: for (row = 0; row < 5; row++)
98: {
99: System.out.print(day(row) + " ");
100: for (column = 0; column < hours[row].length; column++)
101: System.out.print(hours[row][column] + " ");
102: System.out.println(dayHours[row]);
103: }
104: System.out.println( );
105: System.out.print("Total = ");
106: for (column = 0; column < numberOfEmployees; column++)
107: System.out.print(weekHours[column] + " ");
108: System.out.println( );
109: }
110:
111: //Converts 0 to "Monday", 1 to "Tuesday" etc.
112: //Blanks used to make all strings the same length.
113: private String day(int dayNumber)
114: {
115: String dayName = null;
116: switch (dayNumber)
117: {
118: case 0:
119: dayName = "Monday ";
120: break;
121: case 1:
122: dayName = "Tuesday ";
123: break;
124: case 2:
125: dayName = "Wednesday";
126: break;
127: case 3:
128: dayName = "Thursday ";
129: break;
130: case 4:
131: dayName = "Friday ";
132: break;
133: default:
134: System.out.println("Fatal Error.");
135: System.exit(0);
136: break;
137: }
138: return dayName;
139: }
140: }