Skip to content

edoardodepiccoli/qt-cpp-library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 Qt Library Management System

A comprehensive C++ library management application built with Qt, demonstrating advanced object-oriented programming concepts and design patterns.

📃 Project Report

See this link for a comprehensive and detailed project report

🎯 Overview

This application serves as a practical implementation of a library management system, showcasing:

  • Object-oriented programming principles
  • Polymorphism and inheritance patterns
  • Qt framework integration
  • MVC (Model-View-Controller) architecture
  • Visitor design pattern implementation

🧪 App Demo

Demo Video

🚀 Getting Started

🔨 Building the Application

  1. Run the build script:
./build.sh

💻 Running the Application

The application can be run in two modes:

  1. GUI Mode (default):
./build/bin/.../qt-library
  1. CLI Mode (for testing backend business logic):
./build/bin/.../qt-library --cli

The CLI mode provides a simple command-line interface to test the core functionality without the graphical user interface.

🏗️ Architecture

🧩 Core Components

The application follows a structured architecture with clear separation of concerns:

  • Models: Data structures and business logic
  • Views: User interface components
  • Controllers: Application flow and state management
  • Visitors: Implementation of the visitor pattern for type-specific operations
  • CLI: Command-line interface components
  • Database: Data persistence layer

🧭 Navigation Flow

The application's navigation flow is inspired by RESTful patterns commonly used in web applications (like Ruby On Rails web apps), adapted for a desktop GUI context:

Action View View Transition
List all items IndexView → IndexView
Show item ShowItemView IndexView → ShowItemView
New item form NewItemView IndexView → NewItemView
Edit item form EditItemView ShowItemView → EditItemView
Create item NewItemView NewItemView → IndexView
Update item EditItemView EditItemView → IndexItemView
Delete item ShowItemView ShowItemView → IndexView

This pattern provides a clear and intuitive way to navigate between different views while maintaining a consistent user experience.

✨ Features

  • Complete CRUD operations for library items
  • Dynamic form generation based on item type
  • Fuzzy search functionality
  • Type-safe item management
  • Modern Qt-based user interface

📊 Development Status

✅ Completed Features

  • New item creation with dynamic form generation
  • Item viewing and detailed information display
  • Item editing functionality
  • Delete operations
  • Search capabilities with fuzzy-like matching

🔧 Technical Details

The application leverages several key design patterns:

  • Visitor pattern for type-specific operations
  • MVC pattern for clean architecture
  • Signal-slot mechanism for Qt-based event handling
  • Smart pointer management for memory safety

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages