Introducció

En aquest mòdul final, aplicaràs tots els coneixements adquirits al llarg del curs per desenvolupar un projecte complet en C++. Aquest projecte servirà com a demostració pràctica de les teves habilitats i coneixements en programació, i et proporcionarà una experiència valuosa en la resolució de problemes reals.

Objectius del Projecte

Els objectius principals d'aquest projecte són:

  1. Aplicar Conceptes Bàsics i Avançats de C++: Utilitzaràs tot el que has après, des de la sintaxi bàsica fins a temes avançats com la programació orientada a objectes i la gestió de memòria.
  2. Desenvolupar Habilitats de Resolució de Problemes: Afrontaràs problemes reals i aprendràs a trobar solucions eficients.
  3. Treballar amb un Cicle de Desenvolupament de Programari: Passaràs per totes les fases del desenvolupament de programari, incloent la planificació, implementació, proves i depuració.
  4. Millorar les Habilitats de Documentació i Presentació: Aprendràs a documentar el teu codi i a presentar el teu projecte de manera professional.

Descripció del Projecte

Tema del Projecte

El tema del projecte serà la creació d'una aplicació de gestió de biblioteca. Aquesta aplicació permetrà als usuaris gestionar llibres, membres i préstecs. Les funcionalitats bàsiques inclouran:

  • Gestió de Llibres: Afegir, eliminar, actualitzar i cercar llibres.
  • Gestió de Membres: Afegir, eliminar, actualitzar i cercar membres.
  • Gestió de Préstecs: Registrar préstecs de llibres i devolucions.

Requisits del Projecte

  1. Interfície d'Usuari: L'aplicació ha de tenir una interfície d'usuari basada en consola que sigui fàcil d'utilitzar.
  2. Estructura de Dades: Utilitzar estructures de dades adequades per emmagatzemar informació sobre llibres, membres i préstecs.
  3. Funcionalitats:
    • Afegir, eliminar, actualitzar i cercar llibres.
    • Afegir, eliminar, actualitzar i cercar membres.
    • Registrar préstecs i devolucions de llibres.
  4. Persistència de Dades: Les dades han de ser persistents, és a dir, han de ser emmagatzemades en fitxers i carregades quan l'aplicació s'inicia.
  5. Gestió d'Errors: L'aplicació ha de gestionar errors de manera adequada, com ara la introducció de dades incorrectes o la realització d'operacions no vàlides.

Estructura del Codi

El projecte ha d'estar organitzat de manera clara i modular. Es recomana seguir una estructura de carpetes com la següent:

/projecte-biblioteca
|-- /src
|   |-- main.cpp
|   |-- llibre.cpp
|   |-- membre.cpp
|   |-- prestec.cpp
|   |-- ...
|-- /include
|   |-- llibre.h
|   |-- membre.h
|   |-- prestec.h
|   |-- ...
|-- /data
|   |-- llibres.txt
|   |-- membres.txt
|   |-- prestecs.txt
|-- README.md
|-- Makefile

Exemples de Codi

A continuació es mostren alguns exemples de codi per començar:

Definició de la Classe Llibre

// llibre.h
#ifndef LLIBRE_H
#define LLIBRE_H

#include <string>

class Llibre {
private:
    int id;
    std::string titol;
    std::string autor;
    bool disponible;

public:
    Llibre(int id, std::string titol, std::string autor);
    int getId() const;
    std::string getTitol() const;
    std::string getAutor() const;
    bool isDisponible() const;
    void setDisponible(bool disponible);
};

#endif // LLIBRE_H
// llibre.cpp
#include "llibre.h"

Llibre::Llibre(int id, std::string titol, std::string autor)
    : id(id), titol(titol), autor(autor), disponible(true) {}

int Llibre::getId() const {
    return id;
}

std::string Llibre::getTitol() const {
    return titol;
}

std::string Llibre::getAutor() const {
    return autor;
}

bool Llibre::isDisponible() const {
    return disponible;
}

void Llibre::setDisponible(bool disponible) {
    this->disponible = disponible;
}

Exercici Pràctic

Exercici: Implementa la classe Membre seguint l'exemple de la classe Llibre. La classe Membre ha de tenir els següents atributs: id, nom, cognom i actiu. També ha de tenir els mètodes necessaris per accedir i modificar aquests atributs.

Solució:

// membre.h
#ifndef MEMBRE_H
#define MEMBRE_H

#include <string>

class Membre {
private:
    int id;
    std::string nom;
    std::string cognom;
    bool actiu;

public:
    Membre(int id, std::string nom, std::string cognom);
    int getId() const;
    std::string getNom() const;
    std::string getCognom() const;
    bool isActiu() const;
    void setActiu(bool actiu);
};

#endif // MEMBRE_H
// membre.cpp
#include "membre.h"

Membre::Membre(int id, std::string nom, std::string cognom)
    : id(id), nom(nom), cognom(cognom), actiu(true) {}

int Membre::getId() const {
    return id;
}

std::string Membre::getNom() const {
    return nom;
}

std::string Membre::getCognom() const {
    return cognom;
}

bool Membre::isActiu() const {
    return actiu;
}

void Membre::setActiu(bool actiu) {
    this->actiu = actiu;
}

Conclusió

Aquest projecte final és una oportunitat per demostrar tot el que has après durant el curs. Assegura't de planificar bé el teu treball, escriure codi net i ben documentat, i provar exhaustivament la teva aplicació. En el següent tema, parlarem sobre la planificació del projecte per ajudar-te a començar amb bon peu.

© Copyright 2024. Tots els drets reservats