EmiliosRichards / File-Management-System

Object-Oriented Programming, Classes and Objects, Small database, File handling, Pytest
MIT License
0 stars 0 forks source link
classes database object-oriented-programming objects pytest

File Management System Project

Welcome! This document outlines the development of a File Management System designed to manage and organize digital files efficiently. If you’re ready to start using the system, find out how here.

Document Contents


Installation Guide for File Management System

Follow these steps to install and set up the File Management System on your computer:

Prerequisites

Before Installing, ensure you have the following software requirments:

Installing

Step 1: Clone the Repository

Start by cloning the repository from GitHub. Open your terminal or command prompt and run the following command:

git clone https://github.com/EmiliosRichards/File-Management-System

Step 2: Navigate to the Project Directory

Change to the project directory with:

cd File Management System

Step 3: Configure Logging and Other Settings

Navigate to the config directory:

cd config

Make necessary adjustments to the logging.conf file to suit your needs. This configuration file dictates how logging is handled in the application, such as the log level and file outputs.

Step 5: Run the Application

Return to the main project directory and run the application:

cd ..
python FileManagementSystem.py

Step 6: Testing the Installation

After installation, it’s a good idea to test basic functionalities to ensure everything is working as expected. Try listing files, creating a new file, or other basic operations.

Example Usage

Using the File Management System:

Troubleshooting

If you encounter issues during the installation:


Project Significance

What is a File Management System?

A File Management System (FMS) like Windows' File Explorer or macOS's Finder enables efficient management and organization of digital files. Such systems provide tools for creating, moving, renaming, and deleting files and folders through a user-friendly interface.

Why Create a FMS?

"You might wonder, 'Why create a custom FMS with options like File Explorer and Finder available?'" The answer lies in the unique learning opportunities and the ablity to surpass the limitations of traditional systems.

A custom-built FMS provides the following opportunities:

This project not only enhances technical skills but also surpasses the limitations of traditional file management systems, offering a tailored approach to file management.


Design Phase (Pre-build)

Project Overview

Project Statement and Scope: The goal of this project is to develop a custom built file management system with python, utilising object oriented programming techniques. This process will also invlove the implementation of File IO operations and exception handling.

Objective: The objective of this project is to apply the python concepts mentioned above to create a user friendly custom built file management system. This system will be designed to store, retrieve, and manage documents or records in the form of text files, acting as a simple database.

Philosophy of project: Start Small: Begin with core functionalities that are common to all operating systems, and gradually expand features and capabilities.

Tools and Libraries

Development Environment

Key Libraries

Functional Requirements

The File Management System must be able to:

Non-Functional Requirements

The File Management System should:

Design and Architecture

Basic Flow

A simplified representation of how the File Manager will work:

  1. Welcome message
  2. Display available actions and corresponding number.
  3. Accept a number as input.
  4. Prompt for any relevent additinal input.
  5. Perform action.

Constant: Cancel/ back + exit appliction functionality.

Design Flowchart

This covers the design phase of the project.


Building Process (Post-build)

Initial Setup and Configuration

This section of the documentation describes the preliminary steps involved in preparing the development environment and managing dependencies for the File Management System project. These initial configurations are crucial for ensuring that development proceeds smoothly and consistently across different setups.

Environment Setup

  1. Choosing an IDE:

    • The development environment of choice was Visual Studio Code, favored for its robust support and integration with Python and Git.
  2. Installing Python:

    • Used Conda to create a new environment, ensuring all project dependencies are encapsulated, minimizing interference with other projects. Conda provides a managed, secure environment that is easy to set up and replicate across different setups.

Version Control System

Command Line Tools

Dependency Management

  1. Creating a Virtual Environment:

    • A virtual environment was created using Conda to handle dependencies:
      conda create --name filemgmt python=3.8
      conda activate filemgmt
  2. Managing Dependencies with environment.yml:

    • Although this project solely relies on Python without external dependencies, an environment.yml file was prepared to standardize setup if needed in the future:
      name: filemgmt
      dependencies:
      - python=3.8
      - pip:
       - example-library==2.0  # Hypothetical library if needed

GitHub Project Planner

Utilized the Projects section of GitHub for planning and coordinating development.

Projects GitHub

Architecture Design

This section delves into the architectural choices and data handling strategies employed in the development of the File Management System. It outlines the design decisions that facilitate efficient file and directory management through a command-line interface.

System Architecture

Data Handling

Additional Features

This architecture ensures that the File Management System is not only functional but also robust and user-friendly, catering to the needs of advanced users who prefer a command-line environment for file management tasks.

Core Development Phases

The development of the File Management System was meticulously planned and executed in phases, each designed to incrementally build the system's capabilities while integrating the necessary learning and problem-solving along the way.

Phase 1: Basic File Operations and Class Structure

Phase 2: Advanced Features and System Integration

Phase 3: Final Touches and Testing

The development of the File Management System was accompanied by rigorous testing and revision, ensuring a robust and user-friendly product. Each phase was critical in shaping the system's architecture, providing a solid foundation for future enhancements and maintenance.


Testing and Quality Assurance

The testing strategy for the File Management System aimed to ensure basic functionality and stability through a combination of scripted tests and hands-on experimentation. The approach was designed to be pragmatic, focusing on the essential operations of the system within the scope of its intended use.

Scripted Testing

Informal User Testing

Testing Outcomes

This testing approach reflects a balance between thoroughness and practicality, appropriate for the system’s scale and complexity. It highlights areas where the system excels and acknowledges the potential for further enhancements in robustness and user interface design.

To view a test click on its name: File_Operations Copy File Success Copy File Conflicts Copy File Other

Mock Testing File Operations

Example of test


Lessons Learned

Reflecting on the development of the File Management System has provided invaluable insights into both technical skills and project management strategies. Here’s a breakdown of the key lessons learned:

Personal Growth

Technical Skills


Conclusion

This project was not just about building a functional file management system but also about personal and professional growth. The technical skills and project management insights gained have prepared me for future software development projects, emphasizing that the journey is just as important as the final product.

Future Work

The development of the File Management System has laid a robust foundation for further enhancements and related projects. Here are several directions for future development:

Enhancements to the File Management System

New Project Ideas

Research Opportunities

Contributions

Contributions are welcome! There are many ways you can contribute to this project:

Please adhere to the following steps for your contributions to be considered:

For more information on how to contribute, please read the Contributions.md guide in our repository.

Licence

This project is licensed under the MIT License - see the LICENSE file for details.

Contact Information

If you have any questions or comments about the project, or if you're interested in contributing, feel free to reach out:

References