summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhongheng Liu on Homelab <z.liu@outlook.com.gr>2025-03-20 10:08:54 +0200
committerZhongheng Liu on Homelab <z.liu@outlook.com.gr>2025-03-20 10:08:54 +0200
commitfcfea7c9884e42fa55d2802b0a3d32298b4ee5f1 (patch)
treec21daf7dd1ccd40ee454dd0877c16fcd8ae11927
parent1a0962fd2ee91a479424cb6e81514176570b4def (diff)
downloadcs-y13-fcfea7c9884e42fa55d2802b0a3d32298b4ee5f1.tar.gz
cs-y13-fcfea7c9884e42fa55d2802b0a3d32298b4ee5f1.tar.bz2
cs-y13-fcfea7c9884e42fa55d2802b0a3d32298b4ee5f1.zip
question 2 and 3
-rw-r--r--9618-42-mj-2023/Employees.txt28
-rw-r--r--9618-42-mj-2023/HoursWeek1.txt16
-rw-r--r--9618-42-mj-2023/Question2_J2023.py34
-rw-r--r--9618-42-mj-2023/Question3_J2023.py86
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)