Designing a Smart Building Visitor Management System (VMS) using Object-Oriented Design (OOD) involves breaking down the system into modular components, focusing on interactions between objects, and organizing them efficiently to address user needs while maintaining system scalability. Below is an Object-Oriented Design for the system.
Key Objectives:
-
User Authentication: Ensure authorized visitors and employees are granted access.
-
Visitor Registration: Enable easy check-in for visitors.
-
Notification and Alerts: Notify employees of visitor arrivals.
-
Tracking and Reporting: Keep logs for security and audit purposes.
-
Real-time Monitoring: Monitor visitor movement within the building.
Core Objects and Their Responsibilities:
1. Visitor
-
Attributes:
-
visitor_id: Unique identifier for the visitor. -
name: Name of the visitor. -
company: Company/organization the visitor represents. -
email: Visitor’s email address. -
phone_number: Visitor’s phone number. -
check_in_time: Time when the visitor checks in. -
check_out_time: Time when the visitor checks out. -
host: Employee that invited the visitor. -
purpose: Purpose of the visit.
-
-
Methods:
-
check_in(): Registers the visitor’s check-in. -
check_out(): Registers the visitor’s check-out. -
update_info(): Update the visitor’s details (e.g., contact information, purpose). -
get_visitor_details(): Retrieve visitor details.
-
2. Employee (Host)
-
Attributes:
-
employee_id: Unique identifier for the employee. -
name: Name of the employee. -
email: Employee’s email address. -
phone_number: Employee’s phone number. -
department: Department of the employee. -
visitor_list: List of visitors hosted by the employee.
-
-
Methods:
-
invite_visitor(visitor: Visitor): Invite a visitor and assign them to the employee. -
receive_visitor_notification(visitor: Visitor): Receive notifications when the visitor arrives. -
track_visitor_activity(visitor: Visitor): Monitor the visitor’s movements within the building.
-
3. SecurityPersonnel
-
Attributes:
-
personnel_id: Unique identifier for the security personnel. -
name: Name of the personnel. -
location: Current security checkpoint location.
-
-
Methods:
-
verify_visitor(visitor: Visitor): Verify the visitor’s details. -
grant_access(visitor: Visitor): Grant physical access to the building. -
record_visitor_entry(visitor: Visitor): Log visitor entry to the system. -
alert_on_visitor_activity(visitor: Visitor): Get alerts on unusual or suspicious activities.
-
4. Kiosk
-
Attributes:
-
kiosk_id: Unique identifier for the kiosk. -
location: Location of the kiosk in the building (e.g., main entrance, lobby). -
visitor: Visitor currently interacting with the kiosk.
-
-
Methods:
-
register_visitor(visitor: Visitor): Visitor checks in by registering at the kiosk. -
verify_visitor_details(visitor: Visitor): Verify visitor information through ID scanning or manual input. -
print_badge(visitor: Visitor): Print a visitor badge with the visitor’s details. -
update_status(visitor: Visitor, status: String): Update the visitor’s check-in/check-out status.
-
5. Database
-
Attributes:
-
visitor_db: Stores all visitor data (e.g., visitor details, check-in/check-out times). -
employee_db: Stores employee data. -
visitor_log: Logs all visitor activities (check-in, check-out, movement, etc.). -
security_alerts: Stores alerts generated by security personnel.
-
-
Methods:
-
store_visitor_data(visitor: Visitor): Stores visitor registration data. -
update_visitor_log(visitor: Visitor, action: String): Log visitor actions like entry, exit, or location change. -
retrieve_visitor_data(visitor_id: String): Retrieve visitor information. -
generate_report(): Generate a security report based on visitor activities.
-
6. Notification System
-
Attributes:
-
notification_type: Type of notification (SMS, email, app alert). -
recipient: Recipient of the notification (e.g., host, security, visitor).
-
-
Methods:
-
send_notification(recipient: Employee, message: String): Send a notification to the host when their visitor arrives. -
send_security_alert(message: String): Send alerts to security personnel regarding visitor activities. -
send_exit_confirmation(visitor: Visitor): Notify security or host when a visitor checks out.
-
7. Access Control System
-
Attributes:
-
access_level: Defines the level of access granted to different visitors or employees. -
entry_gate: The specific entry point that the visitor needs to pass through.
-
-
Methods:
-
grant_access(visitor: Visitor): Verifies visitor credentials and grants access to the building or specific sections. -
track_visitor_movement(visitor: Visitor): Monitors the visitor’s movement through the building using sensors.
-
8. Visitor Badge
-
Attributes:
-
badge_id: Unique identifier for the badge. -
visitor: The visitor assigned to this badge. -
issued_time: Time when the badge was issued.
-
-
Methods:
-
assign_to_visitor(visitor: Visitor): Assign a badge to the visitor. -
generate_badge(visitor: Visitor): Create a digital or physical badge for the visitor. -
update_status(visitor: Visitor): Update the status on the badge when the visitor checks out or moves through different areas.
-
Interaction Diagram:
-
Visitor Registration:
-
The visitor arrives and interacts with the Kiosk.
-
The kiosk verifies the visitor’s identity and registers the visitor in the Database.
-
A Visitor Badge is issued and assigned to the visitor.
-
The Employee (Host) receives a Notification about the visitor’s arrival.
-
Security Personnel verify and grant access based on the visitor’s details.
-
-
Visitor Movement:
-
The Access Control System tracks the visitor’s movements throughout the building.
-
If the visitor accesses restricted areas, an alert is triggered for Security Personnel.
-
The Visitor Log in the Database keeps records of all movements.
-
-
Visitor Checkout:
-
The visitor checks out either at the Kiosk or through the Employee.
-
The Database updates the checkout time, and the Visitor Badge is deactivated.
-
The Host and Security Personnel are notified, and an exit log is generated.
-
Design Flow:
-
Check-In: Visitor arrives at the building → interacts with kiosk → provides identification → details are registered in the database → visitor badge is printed.
-
Access Control: Visitor enters the building → access is granted based on visitor details → movement is tracked in real-time.
-
Notifications: Host is notified upon visitor check-in → security personnel are notified if unusual activity occurs.
-
Check-Out: Visitor leaves → check-out is registered → visitor’s exit is logged → host and security are notified.
Class Relationships:
-
Visitor interacts with Employee and SecurityPersonnel.
-
Visitor uses Kiosk to register and receive a Visitor Badge.
-
SecurityPersonnel manages visitor verification and access through AccessControlSystem.
-
Database stores all records related to visitors, employees, and security alerts.
-
NotificationSystem informs stakeholders about the visitor’s status.
Conclusion:
This Object-Oriented Design ensures the Smart Building Visitor Management System is highly modular, maintainable, and scalable. Each object serves a specific responsibility, and their interactions are clear and structured, providing a seamless experience for visitors, employees, and security personnel.