Progetto gestore automatizzato esercizi palestra

Lorenzo Pontellini
abstract

Richieste del Committente

Tramite questo progetto si vuole rendere automatica la prenotazione all'interno di una palestra opportunamente gestita degli esercizi per i quali occorre l'uso di una macchina.

Come prima cosa l'utente deve essere iscritto a questo servizio e deve essere dotato di un dispositivo che supporti la specifica applicazione di gestione fornita dal gestore della palestra. L'applicazione dovrà essere munita di interfaccia per effettuare, previa registrazione e creazione di un account, il log-in dell'utente con username e password fornite.

A questo punto potrà visionare la propria scheda di esercizi e iniziare con la propria sequenza, avrà la possibilità di prenotare la macchina che dovrà utilizzare in modo da rendere noto ad altri utenti presenti che in quel momento è lui stesso ad utilizzare la macchina.

Agli altri utilizzatori della palestra, utenti a loro volta registrati, questa informazione verrà resa nota grazie ad uno schermo in cui verrà visualizzata e costantemente aggiornata la situazione di ogni macchinario.

Nel caso in cui un utente, dovesse usufruire di un macchinario che in quel momento risulta occupato, il programma in automatico gli fornirà l'esercio seguente all'interno della propria scheda, questo per rendere più veloce il cambio di esercizio e non perdere tempo a fare inutili code.

Descrizione

L'obiettivo di questo progetto è di riuscire ad avere una gestione più ordinata del susseguirsi delle operazioni di spostamento in palestra evitando di trovarsi a dovere utilizzare il proprio tempo a fare file per controllare che l'attrezzo da usare sia libero piuttosto che a godersi la propria giornata di scarico.

Per questo motivo l'accesso a questo servizio è riservato ai possessori di telefoni adatti a utilizzare l'applicazione fornita in corredo.

Le possibilità di estensione per quanto riguarda questa applicazioni sono numerose:

Si potrà pensare di adattare il programma per renderlo in grado di poterlo utilizzare anche su devices che non possiedono la tecnlogia Android potrà in un futuro essere direttamente la palestra a fornire ai propri utenti un mezzo in grado di svolgere queste operazioni di prenotazione permettendo quindi a tutti di accedere alla palestra.

Potrà infine essere utile sviluppare l'applicazione con una parte nascosta agli utenti che sia di possibile utilità solo per gli amministratori di sistema i quali potranno registrare in un database opportuno anche i pagamenti degli abbonamenti mensili dei vari utenti della palestra.

Il progetto per come strutturato è adattabile a palestre molto frequentate e di una dimensione tale da rendere conveniente attrezzare una palestra ad essere gestita secondo questa logica.

Analisi dei Requisiti

Da quanto riferito dal committente i termini che risultano di maggiore interesse sono:

Termine Descrizione
MACCHINA/ATTREZZO:Strumento situato in palestra utile per svoglere esercizi, nel caso si tratti di attrezzo possone esserne disponibili in vario numero in palestra, mentre nel caso di macchina ce n'e solamente una.
SCHEDA ESERCIZI:Insieme di esercizi assegnati ad ogni utente della palestra al suo interno si trovano informazioni sul numero di ripetizioni per ogni singolo esercizio e il numero totale di esercizi da svolgere per completare l'allenamento
UTENTE:Elemento esterno al sistema che utilizza le varie macchine e/o attrezzi presenti nella palestra
INTERFACCIA:Parte di una applicazione in grado di fornire la possibilita a chi la utilizza di interagire con la macchina stessa o con il programma
INTERFACCIA PER EFFETTUARE LOGIN:Interfaccia che serve per autentcare l'utente per accedere ai contenuti della propria scheda esercizi e informazioni riguardanti l'utente
NOME UTENTE/PASSWORD:Credenziali fornite dalla palestra utili per usufruire dei servizi forniti dalla stessa, poter consultare la propria scheda e prenotare l'uso degli attrezzi
PRENOTARE LA MACCHINA:Avviso reso pubblico tramite interfaccia web che indica l'intenzione da parte di un utente presente in palestra di voler utilizzare di li a breve una determinata macchina
SCELTA PROSSIMO ESERCIZIO IN SEQUENZA:Azione svolta dal programma per smartphone tramite la quale viene scelto il prossimo esercizio della scheda esercizi dell'utente la cui macchina non risulta occupata

Modello del dominio

In questa sezione sono stati modellati i concetti riguardanti i vincoli e le idee imposte dal committente, tramite il grafico qui sotto vengono evidenziate le relazioni trovate.

dominio.jpg

Questo diagramma è a scopo informativo per il committente, nella futura implementazione dell'applicazione non è detto che tutte le parti qui esposte vengano realizzate effettivamente come qui sono presentate.

Componenti del sistema e tecnologie utilizzate

Il progetto in questione si compone di due diverse parti:
  • Una parte server a disposizione di tutti gli utenti della palestra. Utile per monitorare lo stato delle macchine real time fornendo anche altre utili informazioni (data, ora, numero complessivo di utenti loggati, numero di macchine occupate...), potrà essere realizzata come web server in aggiornamento realtime;
  • Un programma in grado di essere installato su dispositivo compatibile tipo Android tramite la quale l'utente si logga e prenota il prossimo esercizio in sequenza che puo eseguire. Come detto prima in caso di piu utenti che abbiano lo stesso esercizio, il programma in automatico fornisce il giusto macchiario che risulta libero in quel momento. Oltre a questo l'utente potra tramite apposito tasto chiedere l'aiuto di un istruttore libero in quel momento nel caso avesse necessità.

    Più nel dettaglio possiamo dire:

  • Web server: un server web è uno strumento in grado di fornire servizi agli utenti che hanno delle caratteristiche tali da poterne richiedere. Nel caso del progetto in questione un server web viene realizzato come insieme di pagine web dinamiche realizzate tramite tecnologia php (acronimo ricorsivo di "PHP: Hypertext Preprocessor") questa tecnlogia viene scelta in quanto è open source quindi largamente utilizzata per la creazione di pagine web dinamiche, è un linguaggio di scripting interpretato, è utilizzato principalmente per sviluppare applicazioni web lato server ma può essere usato anche per scrivere script a riga di comando o applicazioni standalone con interfaccia grafica. L'elaborazione di codice PHP sul server produce codice HTML da inviare al browser dell'utente che ne fa richiesta.
  • Applicazione Android: anche in questo caso la scelta della tecnlogia realizzativa è stata fatta in base alle esigenze, in quanto Android essendo un sistema operativo open source anchesso permette il facile sviluppo di applicazioni piu o meno complicate mettendo a disposizione documentazione e parti di codice gia implementata
  • Database: in questo progett, come in tutti quelli in cui è presente, la presenza di un database è essenziale in quanto vengono mantenute al suo interno tutte le informazioni utili riguardanti gli utenti, le loro credenziali di accesso, le loro schede di esercizi, e l'insieme di macchinari presenti all'interno della palestra. La tecnlogia che viene utilizzata è MySql.

Casi d'uso

Dall'analisi di quanto richiesto sono stati individuati i più importanti casi d'uso qui sotto rappresentati



UseCases.jpg

Descrizione dettagliata dei casi d'uso

Campo Descrizione
Nome:UC1 - Login
Descrizione:L'utente accede all'applicazione tramite apposite credenziali
Attori:Utente
Precondizioni:L'utente non deve essere già loggato nel sistema
Scenario Principale:L'utente può, scegliere l'operazione da eseguire

Campo Descrizione
Nome:UC2 - Visualizza informazioni del profilo
Descrizione:L'utente visualizza le informazioni che lo riguardano
Attori:Utente
Precondizioni:L'utente deve essere loggato nel sistema
Scenario Principale:In questa schermata l'utente ha a disposizione le informazioni che lo rigurdano

Campo Descrizione
Nome:UC3 - Modifica scheda degli esercizi
Descrizione:l'utente in questa condizione può richiedere di inserire e/o rimuovere esercizi all'interno della sua scheda esercizi
Attori:Utente
Precondizioni:L'Utente deve essere loggato nel sistema e deve essergli stata associata un numero di scheda esercizi
Scenario Principale:L'utente controlla gli esercizi che sono presenti nella sua sua scheda può decidere di rimuoverli, oppure può decidere di aggiungerne dei nuovi prendendoli da quelli disponibili nel database degli esercizi della palestra

Campo Descrizione
Nome:UC4 - Visualizzazione informazioni riguardanti la palestra
Descrizione:Sarà visualizzato il sito della palestra
Attori:Utente
Precondizioni:L'utente deve essere loggato
Scenario Principale:All'interno del sito si potranno trovare informazioni riguardanti gli utenti presenti in palestra e loggati nel sistema, orario, macchine disponibili

Campo Descrizione
Nome:UC5 - Inizio scheda esercizi
Descrizione:All'utente viene proposto il primo esercizio da svolgere presente nella sua scheda
Attori:Utente
Precondizioni:L'utente deve essere loggato nel sistema, deve avere associato il numero della propria scheda esercizi, la macchina (nel caso si tratti di esercizio con macchinario)che deve utilizzare non deve essere già impegnata da altri
Scenario Principale:All'utente viene proposto oltre all'esercizio anche una piccola descrizione sul modo di svolgerlo, e quante volte ripetere tale esercizio

Campo Descrizione
Nome:UC6 - Prenotazione esercizio
Descrizione:L'utente può scegliere un altro esercizio a lui proposto in quanto quello che avrebbe dovuto svolgere risulta occupato
Attori:Utente e il sistema server
Precondizioni:L'utente deve essere loggato nel sistema, deve avere associato un numero identificativo della scheda esercizi, l'esercizio che deve svolgere avrebbe dovuto svolgere risultare occupato
Scenario Principale:Il sistema fa notare all'utente che il prossimo esercizio è occupato quindi controlla all'interno della scheda esercizi la prima occorrenza che non risulta occupata

Campo Descrizione
Nome:UC7 - Logout
Descrizione:L'utente esce dal sistema
Attori:Utente
Precondizioni:L'utente deve essere loggato nel sistema
Scenario Principale:L'utente conclude la propria sessione di allenamento

Osservazioni

Per quanto riguarda l'analisi dei casi d'uso le operazioni prese in esame vengono tutte svolte tramite terminare telefonico questo potrebbe fare pensare che sia effettivamente lui a dover svolgere tutte le operazioni di gestione dei dati analisi dell'utilizzo delle macchine, invece in questo caso gli viene riservato un compito "secondario" in quanto su deve occupare solo della comunicazione con il server che sarà poi lui a gestire i dati ed elaborarli e quindi rispedire indietro le risposte.

Per quanto riguarda la comunicazione tra queste due parti verrà discussa più avanti, questa era solo una nota per spiegare il perchè l'attenzione è stata portata a quelle operazioni.

Informazioni su Android

In questa sezione vengono fornite informazioni generali riguardo Andorid.

Cos'è Android

Android è uno stack di strumenti e librerie per la realizzazione di applicazioni mobili, esso ha la principale caratteristica di essere open:
  • utilizza il kernel di linux;
  • le stesse API utilizzate per la sua creazione sono le stesse che vengono utilizzate per la creazione di programmi;
  • il codice risulta essere open-source (la licenza scelta è la Open Source Apache License 2.0) permette così ai diversi vendor di costruire su Android le proprie estensioni anche proprietarie senza legami che potrebbero limitarne l'utilizzo.

Un po di storia riguardo Android

Android nasce dall'esigenza di fornire una piattaforma aperta e per quanto possibile standard per la realizzazione di applicazioni mobili. Google non ha costruito da zero Android: ha acquisito nel 2005 la Android Inc.

Android e Java

Android fornisce un SDK in grado di sviluppare le applicazioni, ma invece di creare un nuovo linguaggio per gli sviluppatori interessati a produrre applicazioni per questa piattaforma, utilizza JAVA. Uno degli obbiettivi di Android è la possibilità di creare applicazioni mobili in grado di interagire con l'utente in modo efficacie. E' indispensabile che le applicazioni, in eseguzione sul terminale, vengano eseguite nel modo migliore dal punto di vista dell'utente e della modalità di interazione con il dispositivo, data la natura open questa caratteristica sarà lasciata alla conoscenza dello sviluppatore. A differenza invece di altri casi in cui le applicazioni prima di essere messe in commercio vengono controllate per evitare che il mal funzionamento di esse possa interrompere una caratteristica basilare del telefono come ad esempio una chiamata nel caso sia necessaria più memoria.

Android non eseguendo bytecode Java non ha bisogno di una JVM, per ottimizzare l'utilizzo delle risorse Google ha adottato una propria VM che prende il nome di Dalvik, essa esegue codice contenuto all'interno del file di estensione .dex ottenuti a loro volta, in fase di building, a partire dal file .class di bytecode java.

Componenti e risorse

Un progetto Android si compone di diversi tipi di oggetti che vengono sviluppati, di un insieme di risorse e di un file chiamato AndroidManifest.xml il quale funge da file di configurazione, nel dettaglio viene proposta una spiegazione di due componenti importanti per l'applicazione: l'Activity e l'Intent.

Activity

La responsabilità di questi componenti è di descrivere le diverse schermate dell'applicazione e, attraverso la composizione delle View, gestire le azioni dell'utente. La piattaforma organizza le attività secondo una struttura a Stack dove l'attività in cima è sempre quella attività in un particolare momento. La visualizzazione di una nuova schermata, corrispondente all'avvio di una nuova Activity, porta in cima allo Stack quella nuova, mettendo in pausa le altre. il sistema dovrà fare in modo che tutte queste operazioni siano invisibili all'utente.

Intent

Quando una applicazione ha necessità di di eseguire una particolare operazione non farà altro che creare una Intent richiedendo l'utilizzo di una particolare risorsa in grado di poterla utilizzare. Un Intent quindi dovrà quindi essere caratterizzato da informazioni relative all'operazione da eseguire e da un meccanismo per l'identificazione del tipo di dato su cui eseguirla. La scelta della attività da eseguire avviene a runtime, per cui sarà possibili riutilizzare componenti di altre applicazioni e sostituire quelli correnti con altri personalizzati.

Utilizzo della rete

Data la natura dell'applicazione da realizzare occorre informarsi anche riguardo l'interazione di Android con la rete. Android, vista la sua natura open, utilizza le API relative all'HttpClient di Apache. L'invio di richieste GET ad esempio avviene con la semplice dichiarazione del Client il quale non fa altro che eseguire l'operazione execute che andrà ridefinita all'interno del programma. I parametri passati saranno il tipo di richiesta che si vuole svolgere e il riferimento a chi si occupa di gestire la risposta.

Cosi facendo vengono gestite le richieste di GET e POST, mediante la ridefinizione di metodi già presenti.

Architettura del sistema

L'architettura del sistema dove e come sono organizzati i componenti in un sistema distribuito . Per la realizzazione di questa applicazione è stato scelto un'approccio client-server di tipo Three-Tiered. Come già spiegato la comunicazione utilizza come mezzo trasmissivo la rete. Il Client che viene rappresentato dall'applicazione Android scambia messaggi con il server il quale gestirà il tipo della richiesta del client in maniera opportuna e risponderà con i dati che servono all'applicazione, codificati in modo da poter essere scambiati in rete, il client come operazione dovrà solamente decodificare questi dati e permetterne la visualizzazione all'utente in maniera corretta.

In questo modo una futura estensione del sistema, in fase di sviluppo, potrebbe essere quella di aggiungere anche una applicazione per una segretaria per archiviare le entrate e le uscite della palestra effettuando così un bilancio annuale della ditta, può risiedere all'interno dello schema. Risultando anch'essa distribuita e lavorando sul database presente nell'Enterprise Server.

Da questo possiamo capire che il maggiore carico di lavoro lo avrà il server il quale permetterà anche l'interfacciamento con il data-base, tutto questo per rendere massima la reattività dell'applicazione da parte dell'utente.

ArchitetturaSistema.jpg

Come si vede dallo schema proposto anche il carico di lavoro nel server viene suddiviso in tre parti:

  1. PHP Mobile Control
  2. PHP Server Control
  3. Comunicator

    Ognuno di questi componenti sopra citati ha il proprio ambito di lavoro, così da suddivedere nel modo più razionale le operazioni che verranno svolte dal server.

Il sistema

Da quanto analizzato fino ad ora possiamo subito notare che in questa applicazione il web ha una importanza fondamentale, in quanto i messaggi che vengono scambiati sfruttano proprio questo mezzo.

Pattern Model View Control

Si è voluto fare riferimento a questo pattern in quanto l'applicazione nasce e funziona secondo la separazione dei compiti dettata da questo pattern:
  • Model: Fornisce i metodi per accedere ai dati utili all'applicazione;
  • View: Visualizza i dati contenuti nel model e si occupa dell'interazione con gli utenti;
  • Control: Riceve i comandi dell'utente attraverso il view, li attua modificando lo stato di altri componenti, e permette l'interazione di tutte le parti che costituiscono il sistema.



    diagrammapackage.jpg


    Questo pattern viene sfruttato nella realizzazione dell'applicazione per smartphone Android in quanto le potenzialità dei dispositivi, pur essendo sempre in aumento, sono sempre minori rispetto ad un computer quindi utilizzando una tecnica in cui vengono suddivisi i compiti, mirando a rendere reattivo l'interfacciamento con si potrà dare una sensazione all'utente di maggiore fluidità anche se le operazioni possono richiedere uno sfruttamento maggiore di risorse.

Gestione dei dati

Per il funzionamento del sistema, occorre che le informazioni relative ai esercizi della palestra, degli utenti e in futuro dei dirigenti della palestra debbano essere salvate all'interno di un database accedibile dagli utenti tramite terminale, e da postazioni di computer fisse per la normale gestione o manutenzione dei dati.

Per quanto riguarda il database occorre che in caso di guasto che porta alla perdita di dati, il contenuto venga replicato all'interno di un altro database di appoggio in modo da consentire il continuo utilizzo all'utente e fare in modo che il lavoro non venga perso.

Per evitare anche di rimanere con dati vecchi in caso di guasto, ogni giorno dopo la giornata lavorativa il contenuto del database originale deve essere replicato in quello di appoggio.

Il modello del sistema è stato modellato come si vede in figura sotto tramite modello Entity-Relationship.

Modello Entity-Relationship dei dati ModelloERDataBase.jpg

In fase di progettazione del database è stata apportata la seguente modifica:
  • Eliminazione della gerarchia;
  • Modifica di tabelle con vincoli di chiave;

    La gerarchia presente, è stata sostituita da due relazioni tra le stesse entità con cardinalità 1 a 1 cosi da preservare le funzionalità

    La tabella persona ha acquisito l'attributo Nome Utente dalla tabella Account; La tabella scheda esercizi possiede in chiave oltre il riferimento all'id della scheda esercizi anche il riferimento al Nome Esercizio dalla tabella Esercizi e l'Id di riferimento dell'utente; La relazione usa macchinario è diventata una tabella con in chiave gli attributi di Ora e Data e NomeUtente e NomeEsercizio.

Analisi e progettazione dell'applicazione per smartphone Android

Con le informazioni fino a qui raccolte è stato creato il seguente schema che identifica i componenti del sistema che sono stati realizzati e i metodi che verranno realizzati da chi scriverà il codice dell'applicazione.

deviceapplication.jpg

Osservazioni

Da quanto visto sopra nella presentazione del sistema Android la classe VirtualGymActivity è la classe principale del programma quella che viene creata all'avvio una Activity. L'operazione che subito dopo occorre fare è il login, verrà mostrata quindi una schermata dove inserire le credenziali fornite dai gestori della palestra, se queste risulteranno corrette si aprirà un'altra schermata in cui vi saranno tutte le opzioni permesse all'utente. Queste operazioni verranno spiegate nei successivi punti.

La cosa sulla quale vorrei porre l'attenzione è che all'avvio dell'applicazione vengono create anche dei manager: LoginManager, ParseManager, e QueryManager. Mentre il LoginManager come dice il nome ha il compito di gestire le operazioni di login (controllo dei parametri, controllo dell'esistenza dell'utente, avvio della nuova Activity,...) e la sua vita termina quando l'utente si è autenticato, gli altri due componenti vengono passati come componenti tra una activity e l'altra.

Nello specifico il ParseManager possiede dei metodi per convertire gli oggetti a lui passati nel formato JSON, utilizzato per la trasmissione sulla rete, oltre a questo decodifica lo stesso formato in un altro consono alla visualizzazione sul dispay del cellulare dell'utente.

Il QueryManager invece è quel componente che si interfaccia con le pagine php inviando i parametri e ricevendo la risposta.

Operazione di login nell'applicazione

La prima operazione che viene svolta dall'applicazione dopo l'avvio è l'autenticazione dei dati. Per chiarire meglio viene inserito questo schema delle interazioni tra i componenti.

LoginInteraction.jpg

Schermata di scelta dell'operazione

Dopo la fase di autenticazione, in caso venga eseguita con esito positivo, l'utente ha la possibilità tramite questa schermata di scegliere l'operazione che vuole svolgere. Da questa schermata è anche possibile effettuare il logout dall'applicazione. A seconda dell'operazione che viene selezionata dall'utente questa pagina crea un gestore per quell'operazione che si traduce in una sub-activity alla quale come detto prima vengono passati gli "strumenti" per eseguire le operazioni.

OptionPageInteraction.jpg

Operazione modifica scheda esercizi

In questa pagina l'utente può inserire nuovi esercizi all'interno della propria scheda esercizi oppure eliminare quelli che non gli interessano più.

ModifyExerciseCardInteraction.jpg

Osservazioni

Per mantenere la consistenza dei dati, in fase di implementazione, l'ascoltatore della activity è stato scorporato dalla stessa classe. Facendo cosi alla pressione di uno dei due tasti, che permette di aggiungere o rimuovere un esercizio, io dati vengono ricaricati nel menù a tendina che contiene gli esercizi dell'utente. Nel caso invece il metodo fosse stato interno, per effettuare l'aggiornamento si sarebbe dovuta chiudere la pagina e ricaricarla nuovamente, riselezionando quell'opzione.

Operazione visualizzazione informazioni del profilo utente

In questa pagina sono visualizzate le principali informazioni riguardo all'utente.

ViewInfoProfileInteraction.jpg

Operazione inizio scheda esercizi

A questa pagina l'utente accede nel caso voglia iniziare a svolgere gli esercizi presenti all'interno della propria scheda esercizi, nel caso l'esercizio sia occupato il sistema permetterà all'utente di visualizzare il primo esercizio libero della propria scheda.

StartExerciseCardInteraction.jpg

Operazione visualizzazione pagina web palestra

Questa operazione è la visualizzazione del sito della palestra per vedere la situazione in tempo reale. In questo caso l'operazione svolta è il semplice avvio del programma browser web del telefono al quale viene passato l'url della palestra.

ViewGymState.jpg

Analisi e progettazione server-side

Occorre porre attenzione alla progettazione del server per limitare il numero di accessi al database in modo da non rallentare la rete e rendere la user experience sempre apprezzabile, questo significa ridurre allo stretto necessario le query che l'applicazione client deve rivolgere alla parte server costituita da delle pagine php le quali accederanno al database e invieranno la risposta.

All'interno della cartella progetto i file sono organizzati in questo modo:

  • index.html => E' la pagina principale del sito della palestra nella quale vengono visualizzate oltre all'orario e la data delle informazioni riguardanti il nome degli utenti in palestra, gli esercizi funzionanti e chi in questo momento sta utilizzando un determinato macchinario;

    Associato a questa pagina vi è un foglio di stile css per rendere più gradevole il sito, e un file chiamato script.js all'interno del quale vengono raccolti degli script eseguiti in linguaggio javascript per mantenere aggiornata in maniera quasi istantanea la pagina controllando gli accessi degli utenti e visualizzandoli sulla pagina web;

  • informationProfile => In questa pagina vengono gestite le richieste fatte dagli utenti per visualizzare le proprie informazioni;
  • EditExerciseCard, ExerciseCard => Questi due file hanno il compito di aggiornare la scheda dell'utente quando esso richiede di aggiungere o togliere un determinato esercizio;
  • checkUser => Ha il compito di controllare l'esistenza dell'utente e la correttezza della password inserita per poter accedere a tutte le operazioni;
  • StartExerciseCard => Questo risulta essere il file in cui vengono eseguite il maggior numero di query e magari quello che con un aggiornamento futuro dell'applicazione dovrà subire i maggiori cambiamenti.

    La strategia utilizzata per la prenotazione della macchina e la riduzione delle code di attesa è la seguente:

  • Viene come prima cosa selezionato il primo esercizio dalla scheda dell'utente;
  • Viene controllato se quell'esercizio risulta essere in uso o meno:
  • Se risulta essere in uso si controlla se può essere prenotato, nel quale caso viene data la possibilità all'utente di prenotarlo e viene suggerito il primo esercizio libero presente nella scheda del'utente considerando anche gli esercizi che non prevedono l'uso di macchinari. Ricordandosi che solo un utente può prenotare un esercizio, se risulta essere già prenotato viene semplicemente suggerito il prossimo.
  • Se non risulta essere in uso anche in questo caso controllo se è prenotato e nel caso non sia prenotato restituisco l'esercizio in questione, altrimenti anche in questo caso, essendo prenotato, ne restituisco un altro senza dare la possibilità all'utente di prenotarne altri.

    Così procede l'algoritmo fino a che non vengono svolti tutti gli esercizi presenti nella scheda. Al momento del cambio di esercizio però la cosa che viene fatta è di controllare gli esercizi che l'utente ha saltato, dando priorità a quelli prenotati e facendo nuovamente i controlli descritti ai punti precedenti, in modo da riuscire a gestire un tempo di attesa non troppo alto.

Features di futura implementazione

In questa prima versione dell'applicazione, gli utenti non saranno in grado di modificare le proprie informazioni del profilo, ma potranno solamente visualizzare attraverso l'apposita pagina, solo i proprietari della palestra che dovranno registrate un nuovo utente potranno modificare quelle già presenti.

Sarà anche essere utile realizzare una parte, all'interno del sito web della palestra, dove gli utenti potranno registrarsi iniziando una nuova scheda di esercizi o modificando quella a loro assegnata rimanendo a casa.

Si potrà poi prevedere di gestire le informazioni relative a tutte le schede che un utente ha cambiato nel corso del suo allenamento, raccogliendo quali sono stati gli esercizi fatti, i progressi per ognuno di essi (aumento del carico di lavoro, aumento delle ripetizioni, aumento delle serie,...).

Mantenere uno storico degli accessi alla palestra su un campo che potrà essere variabile (giornaliero, settimanale, mensile, annuale).

Realizzare un programma contabile per una eventuale segretaria in modo da tenere traccia di tutti gli utenti che utilizzano la palestra, per la gestione di turni oppure come banco informazioni per i neo iscritti ai corsi.

Facendo varie prove si è notato che non sempre l'algoritmo ideato per diminuire le attese funziona sempre, una migliore soluzione potrebbe essere quella di aggiungere una tabella all'interno del database che tenga traccia proprio dell'utente che ha prenotato il macchinario così da gestire una coda di prenotazioni e decidere di fare svolgere l'esercizio al primo utente che ha prenotato l'esercizio.

Conclusioni

Il progetto svolto risulta concluso, funzionante con tutte le features richieste presenti e operative. Alcune parti possono essere migliorate parzialmente per rendere l'applicazione ancora più reattiva ed efficace altre, magari mancanti, potranno essere implementate in futuro se si vorrà continuare con lo sviluppo di questa applicazione.