OOP final Project Report
Digital
Transformation
Name     : Rutendo Gandi
Language : Python
Date     : 8 November 2024
Introduction
The Digital Transformation Management System (DTMS) is a console-based management system designed
to facilitate the management of users, contracts, and projects for an organization. The system supports
user-friendly operations for adding and searching users, creating and approving contracts, managing
project statuses, viewing all entries, and generating reports. This system is ideal for an organization aiming
to streamline and digitize its contract and project management processes.
OOP Design & Principles (25%)
User Class with Role Subclasses:
    ●   File: models/user.py
    ●   Implemented the User class as an abstract base for roles like Manager and Researcher.
    ●   Used inheritance to derive role-specific classes and polymorphism for functions that vary by role
    ●   Created the models file contains Python classes that likely correspond to the entities in the
        system:
    ●   File: exceptions/user.py
    ●   invalid_user_permission_exception.py: Defines custom exceptions related to user permissions,
        e.g., raising an error when a user tries to access data they don't have permission for.
                                                                                                                 1
●   File: exceptions/user.py
●   invalid_user_permission_exception.py: Defines custom exceptions related to user permissions,
    e.g., raising an error when a user tries to access data they don't have permission for.
●   File workflow_automation_service.py: Likely manages the automation of workflows within the
    system, such as generating reports, sending notifications, or updating records automatically based
    on certain triggers or rules.
●   project_report_generator.py: This file likely handles the generation of reports related to projects,
    perhaps aggregating data and presenting it in a readable format (like PDF or Excel) for users or
    managers.
●   main.py : This is typically the entry point of the application. When the program runs, this file is
    executed first. It likely sets up the environment, initializes important components, and starts the
    execution flow.
                                                                                                           2
●    controllers.py Controllers manage the application's interaction between the user and the models.
     Each file here likely handles specific business logic:
●    mock_data.py - This file contains mock data for users, contracts, and projects, which is used for
     testing and demo purposes. The data includes a list of users with names , contracts, and projects.
●    Mock Data: The mock data for users, contracts, and projects is now stored in mock_data.py.
     When the system starts, it imports these mock datasets to simulate a real-world database.
●    Generate Report: A new menu option 11 generates a report based on the current mock data. The
     report includes:
         ○   Total number of users, contracts, and projects.
         ○   A list of contracts pending approval and those already signed.
●    Menu Updates: The main menu has a new Generate Report option, which, when selected, runs
     the generate_report function and outputs a simple report to the console.
1.   Mock Data Initialization: On running the program, mock data for users, contracts, and projects is
     loaded from the mock_data.py file.
2. User Actions: The user can interact with the system by selecting options to add users, contracts, or
     projects. They can also approve or sign contracts and update project statuses.
3.   Report Generation: The Generate Report option provides a summary of the system's current
     state, including counts and lists of pending/approved contracts and completed projects.
                                                                                                          3
File structure
                 4
       Potential Impact and Applications
By adopting a DTMS, organizations can transition away from manual record-keeping and embrace digital
management, leading to:
   ●   Increased Efficiency: Centralized management of users, contracts, and projects in a single
       interface reduces administrative time.
   ●   Enhanced Accountability: Approval and signature features help track the status of contracts and
       projects, adding a layer of transparency.
   ●   Better Decision-Making: The report generation feature allows managers to monitor data trends,
       enabling more strategic decision-making.