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

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages