-
Notifications
You must be signed in to change notification settings - Fork 0
/
18conference_booking.py
57 lines (39 loc) · 2.03 KB
/
18conference_booking.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# 18. Create a conference room booking system with classes for
# rooms, reservations, & users. Include methods for checking room
# availability, booking time slots, and sending notifications.
class Employee:
def __init__(self, employee_id, name):
self.employee_id, self.name, self.projects = employee_id, name, []
def log_hours(self, project, hours):
project.add_time_entry(TimeEntry(hours))
def generate_timesheet(self):
timesheet = f"Timesheet for {self.name} (Employee ID: {self.employee_id}):\n"
timesheet += "\n".join(project.generate_project_timesheet() for project in self.projects)
return timesheet
def calculate_overtime(self):
total_hours = sum(project.calculate_total_hours() for project in self.projects)
regular_hours, overtime_hours = min(total_hours, 40), max(0, total_hours - 40)
return regular_hours, overtime_hours
class Project:
def __init__(self, project_id, name):
self.project_id, self.name, self.time_entries = project_id, name, []
def add_time_entry(self, entry):
self.time_entries.append(entry)
def generate_project_timesheet(self):
return f"\nProject: {self.name} (Project ID: {self.project_id})\n" + "".join(entry.generate_time_entry() for entry in self.time_entries)
def calculate_total_hours(self):
return sum(entry.hours for entry in self.time_entries)
class TimeEntry:
def __init__(self, hours):
self.hours = hours
def generate_time_entry(self):
return f" Hours: {self.hours}\n"
employee = Employee(input("Enter your Employee ID: "), input("Enter your name: "))
projects = [Project("P001", "Project Alpha"), Project("P002", "Project Beta")]
employee.projects.extend(projects)
for project in projects:
hours = float(input(f"Enter hours worked on {project.name}: "))
employee.log_hours(project, hours)
print(employee.generate_timesheet())
regular, overtime = employee.calculate_overtime()
print(f"\nTotal Regular Hours: {regular}\nTotal Overtime Hours: {overtime}")