diff options
-rw-r--r-- | 9618-42-mj-2023/Employees.txt | 28 | ||||
-rw-r--r-- | 9618-42-mj-2023/HoursWeek1.txt | 16 | ||||
-rw-r--r-- | 9618-42-mj-2023/Question2_J2023.py | 34 | ||||
-rw-r--r-- | 9618-42-mj-2023/Question3_J2023.py | 86 |
4 files changed, 164 insertions, 0 deletions
diff --git a/9618-42-mj-2023/Employees.txt b/9618-42-mj-2023/Employees.txt new file mode 100644 index 0000000..056dfa1 --- /dev/null +++ b/9618-42-mj-2023/Employees.txt @@ -0,0 +1,28 @@ +15.22 +12452 +Junior Developer +17.80 +21548 +Web Developer +22.50 +02586 +5.25 +Interface Manager +12.50 +65912 +Assistant Tester +33.49 +42004 +2.00 +Team Leader +10.57 +82610 +Intern +21.58 +51947 +10.50 +Junior Testing Manager +31.59 +51847 +7.5 +System analyst
\ No newline at end of file diff --git a/9618-42-mj-2023/HoursWeek1.txt b/9618-42-mj-2023/HoursWeek1.txt new file mode 100644 index 0000000..b9ce020 --- /dev/null +++ b/9618-42-mj-2023/HoursWeek1.txt @@ -0,0 +1,16 @@ +21548 +50.0 +12452 +48.0 +51947 +51 +82610 +47.5 +02586 +28.5 +65912 +38.0 +42004 +22.5 +51847 +10.0
\ No newline at end of file diff --git a/9618-42-mj-2023/Question2_J2023.py b/9618-42-mj-2023/Question2_J2023.py index 5b82e6a..e560150 100644 --- a/9618-42-mj-2023/Question2_J2023.py +++ b/9618-42-mj-2023/Question2_J2023.py @@ -23,7 +23,41 @@ def Enqueue(NewRecord): Tail += 1 else: Tail = 0 + print(f"DEBUG Num={NumberOfItems}, Head={Head}, Tail={Tail}") return 1 +#2d +def Dequeue(): + global NumberOfItems, Head, Tail, CircularQueue + if NumberOfItems <= 0: + return SaleData(-1, "") + item = CircularQueue[Head] + NumberOfItems -= 1 + if Head >= len(CircularQueue) - 1: + Head = 0 + else: + Head += 1 + print(f"DEBUG Num={NumberOfItems}, Head={Head}, Tail={Tail}") + return item +#2e +def EnterRecord(sale_id: str, quantity: int): + successfulness = Enqueue(SaleData(quantity, sale_id)) + if successfulness == 1: + print("Stored") + elif successfulness == -1: + print("Full") +#2fi +IDs = ["ADF", "OOP", "BXW", "XXZ", "HQR", "LLP"] +Quantities = [10, 1, 5, 22, 6, 3] +for i in range(6): + EnterRecord(IDs[i], Quantities[i]) +item = Dequeue() +if item.Quantity == -1: # null item + print("Error: Circular queue is empty") +else: + print(f"ID={item.ID}, Quantity={item.Quantity}") +EnterRecord("LLP", 3) +for item in CircularQueue: + print(f"{item.ID} {item.Quantity}") # while True: # Enqueue(SaleData(int(input("qty: ")), input("id: "))) # if not input("c: "): diff --git a/9618-42-mj-2023/Question3_J2023.py b/9618-42-mj-2023/Question3_J2023.py new file mode 100644 index 0000000..c43feff --- /dev/null +++ b/9618-42-mj-2023/Question3_J2023.py @@ -0,0 +1,86 @@ +#3ai +class Employee: + def __init__(self, HourlyPay, EmployeeNumber, JobTitle): + self.__HourlyPay: float = HourlyPay # Real number + self.__EmployeeNumber: str = EmployeeNumber # String + self.__JobTitle: str = JobTitle # String + self.__PayYear2022: list[float] = [0.0 for i in range(52)] # list of real numbers + #3aii + def GetEmployeeNumber(self): + return self.__EmployeeNumber + #3aiii + def SetPay(self, WeekNumber: int, NumberOfHoursWorked: int): + WeekPay = NumberOfHoursWorked * self.__HourlyPay + # index to WeekNumber - 1 because 52nd week would be 51st element, etc. + self.__PayYear2022[WeekNumber - 1] = WeekPay + #3aiv + def GetTotalPay(self): + RunningTotal = 0 + for pay in self.__PayYear2022: + RunningTotal += pay + return RunningTotal +#3bi +class Manager(Employee): + def __init__(self, BonusValue, HourlyPay, EmployeeNumber, JobTitle): + Employee.__init__(self, HourlyPay, EmployeeNumber, JobTitle) + self.__BonusValue: float = BonusValue # Real + #3bii + def SetPay(self, WeekNumber: int, NumberOfHoursWorked: float): + super().SetPay(WeekNumber, NumberOfHoursWorked * self.__BonusValue / 100) +#3c +EMPLOYEE_FILENAME = "Employees.txt" +global EmployeeArray +EmployeeArray = [None for i in range(8)] +with open(EMPLOYEE_FILENAME, 'r') as file: + trimmed_lines: list[str] = [ + line.strip() + for line in file.readlines() + ] + file.close() + i = 0 + count = 0 + while i < len(trimmed_lines): + #print(f"[{i}] looking at:\n[{i}] {trimmed_lines[i]}\n[{i+1}] {trimmed_lines[i+1]}\n[{i+2}] {trimmed_lines[i+2]}\n[{i+3}] {trimmed_lines[i+3]}") + HourlyPay = float(trimmed_lines[i]) + EmployeeNumber = trimmed_lines[i+1] + EmployeeObject = None + #print(f"Check: {trimmed_lines[i+2]}") + try: + float(trimmed_lines[i+2]) + # is manager + # increment by one more because Managers need one more line + BonusValue = float(trimmed_lines[i+2]) + JobTitle = trimmed_lines[i+3] + EmployeeObject = Manager(BonusValue, HourlyPay, EmployeeNumber, JobTitle) + i += 1 + #print(f"next line: {trimmed_lines[i]}") + except ValueError: + JobTitle = trimmed_lines[i+2] + EmployeeObject = Employee(HourlyPay, EmployeeNumber, JobTitle) + EmployeeArray[count] = EmployeeObject + count += 1 + i += 3 +#3d +def EnterHours(): + HOURS_WEEK_FILE = "HoursWeek1.txt" + with open(HOURS_WEEK_FILE, 'r') as file: + lines = [raw_str.strip() for raw_str in file.readlines()] + file.close() + i = 0 + while i < len(lines): + employeeNumber = lines[i] + employeeWorkedHours = float(lines[i+1]) + #print(employeeNumber) + j = 0 + for person in EmployeeArray: + #print(person) + if person.GetEmployeeNumber() == employeeNumber: + #print("Yes") + person.SetPay(1, employeeWorkedHours) + i += 2 +#3ei +EnterHours() +for person in EmployeeArray: + print(f"EmployeeNumber={person.GetEmployeeNumber()}, TotalPay={person.GetTotalPay()}") +#for i in EmployeeArray: +# print(i) |