Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Scheduling con JAVA

    Ciao a tutti, avrei bisogno di un aiuto: devo creare un programma Java che pianifichi l'attività di una scuola di volo. Ovvero ho delle risorse quali Aerei, istruttori e alunni e devo pianificare le attività in base alla disponibilità di aerei e istruttori, incastrando i vari orari delle varie lezioni in modo da ottimizzare l'intera giornata. Come posso improntare l'algoritmo?
    Grazie
    Ciao a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    ha poco a che vedere con java, nel senso che, ok, lo realizzerai in java. Qui ti serve avere le idee chiare su che cosa bisogna fare:

    - database, tabelle e relazioni
    - classi apposite che ricalchino i record (oggetti) che vai a creare
    - GUI (vuoi un'applicazione stand-alone? vuoi un sito web/web service?)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Si, infatti, ovviamente sto già creando i db, in java infatti dovrei realizzare le classi che leggono da questi db e l'algoritmo che pianifichi poi lo scheduling.

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Allora per cominciare hai a disposizione una ottima pillola di LeleFT su java e database (è tra i link in rilievo nella pagina principale del sotto-forum "java" in cui ti trovi). Per quanto riguarda lo scheduling vero e proprio si tratta solo di scrivere le query appropriate.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Si, grazie, sto leggendo la pillola di LeleFT che di sicuro mi sarà di aiuto. Vediamo se riesco a improntare il tutto.

  6. #6
    Ciao sto provando a trovare la soluzione corretta. Ho già creato il db da dove caricare le varie tabelle che sono : lezioni, allievi, istruttori, aerei, aule, corsi, allieviLezioni (che indica le lezioni che ogni allievo deve seguire) e istruttoriLezioni (che indice le lezioni che un istruttore deve insegnare).
    I vincoli sono i seguenti:
    - ogni allievo segue un solo corso
    - ogni allievo deve seguire tutte le lezioni
    - ogni lezione sarà di tipo aereo o aula, nel primo caso verrà seguita da un allievo per volta(il quale utilizzerà l'aereo), nel secondo caso verrà seguita da tutti gli allievi contemporaneamente.
    - ogni lezione fa parte di un solo corso
    - ogni istruttore può insegnare in un solo corso
    - ogni istruttore può insegnare più lezioni, indipendentemente dal fatto che essa sia in aula o in aereo

    La tabella delle lezioni comprende un tipo che indica se aereo o aula, e la durata di ogni lezione.
    Questo è importante perchè devo sistemare tutte le lezioni per tutti gli allievi, incastrandole in base alla loro durata. Se la lezione è di tipo aereo dovrò programmare tante lezioni quanti sono gli allievi, se è di tipo aula ne programmerò una sola che sarà seguita da tutti gli allievi in contemportanea.

  7. #7
    Io ho caricato le tabelle dal db in vari ArrayList con la seguente istruzione:
    List<ArrayList> lezioni = db.eseguiQuery("SELECT * FROM Lezioni");
    ovviamente così per tutte le tabelle.
    Ho già creato una classe Database.java che mi permette di connettermi e disconnettermi dal db, aggiungere query, aggiornarle ecc...
    Ho creato inoltre, per il calcolo della disponibilità delle risorse, 3 classi:
    Calendario.java con all'interno un ArrayList comprendente i vari giorni della settimana.
    Giorno.java con all'interno un ArrayList comprendente tutte le fasce orarie di ciascun giorno e inoltre comprende i metodi per verificare che un'aula e/o un aereo e/o un istruttore e/o un allievo sia già stati scelti.
    Ora.java con all'interno i metodi get e set per restituirmi, data, tipo(aereo/aula), id dell'aereo o aula, id istruttore e id allievo, ovvero tutti i dati per quella lezione che si sta selezionando.
    Se vuoi te li posto queste classi.

    Ora il mio problema è creare quest'algoritmo per inserirli all'interno del calendario, cioè scorrere tutte le lezioni, inserirle man mano in base alla loro durata e creare quindi l'orario definitivo della settimana. Spero mi puoi aiutare e spero di essere stato chiaro! Grazie in anticipo.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    cioè devo scriverti le query di inserimento?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Ti spiego cosa ho fatto io, perchè mi sono bloccato nel punto cruciale, ovvero l'algoritmo per creare l'orario.
    Allora le tabelle sono fatte con MySql tramite XAMPP. L'algoritmo deve fare esattamente questo, cioè per ogni lezione si vede se è di tipo aula (e in tal caso si assegnano tutti gli allievi nella stessa lezione contemporaneamente) o se è di tipo aereo (e in tal caso si assegnano tutti gli allievi per quella lezione separatamente) e si inserisce la lezione all'interno dell'orario.
    Inizio con il codice per la creazione dei metodi che mi controllano la disponibilità delle risorse:
    Calendario.java è :
    public class Calendario {
    ArrayList<Giorno> Giornaliero;
    public Calendario(){
    Giornaliero = new ArrayList<Giorno>();
    }
    public void InsertGiorno(Giorno giorno){
    Giornaliero.add(giorno);
    }
    public boolean DeleteGiorno(Giorno giorno){
    return Giornaliero.remove(giorno);
    }
    public Giorno getGiorno(int i){
    return Giornaliero.get(i);
    }
    }

  10. #10
    Giorno.java è :
    public class Giorno {
    ArrayList<Ora> Orario;
    public Giorno(){
    Orario = new ArrayList<Ora>();
    }
    public void InsertOra(Ora ora){
    Orario.add(ora);
    }
    public boolean DeleteOra(Ora ora){
    return Orario.remove(ora);
    }
    public boolean ContainsAula(int id_aula){
    for(int i=0; i<Orario.size(); i++){
    if(Orario.get(i).getAula() == id_aula)
    return true;
    }
    return false;
    }
    public boolean ContainsAereo(int id_aereo){
    for(int i=0; i<Orario.size(); i++){
    if(Orario.get(i).getAereo() == id_aereo)
    return true;
    }
    return false;
    }
    public boolean ContainsIstruttore(int id_istruttore){
    for(int i=0; i<Orario.size(); i++){
    if(Orario.get(i).getIstruttore() == id_istruttore)
    return true;
    }
    return false;
    }
    public boolean ContainsAllievo(int id_allievo){
    for(int i=0; i<Orario.size(); i++){
    if(Orario.get(i).getAllievo() == id_allievo)
    return true;
    }
    return false;
    }
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.