THERE IS AN ENGLISH VERSION OF ORARIO_ELETTRONICO
View this introduction in english


Ho pubblicato la versione 5.0 di orario_elettronico,
Attenzione! In questa versione ci sono molti cambiamenti, vi consiglio di dare un'occhiata alla documentazione anche se già  conoscete il programma.
Le maggiori novità sono:
  • possibilità di assegnare più materie allo stesso insegnante nella stessa classe
  • possibilità di bloccare le ore
  • lo script per l'assegnazione automatica delle ore e quello per l'eliminazione dei buchi sono completamente riscritti
  • possibilità di stabilire che alcune materie non possono essere assegnate nella stessa giornata

  • La compatibilità, su sistemi linux,e con FET - Free Evolutionary Timetabling, un programma per l'assegnazione automatica delle ore creato da Liviu Lalescu è andata perduta perchè negli anni i programmi hanno percorso strade divergenti; gli script per l'assegnazione automatica delle ore dentro orario_elettronico sembrano funzionare, comunque vi consiglio di visitare FET - Free Evolutionary Timetabling e provarlo.
    Per essere informati sul rilascio di nuove versioni tornate spesso a questa pagina o, meglio, iscrivetevi alla mailing list alla pagina di orario_elettronico sul sito sourceforge.
    E' possibile provare orario elettronico.
    Cliccando sul link qui di fianco accedete a una pagina dove sono impostate 4 classi, potete assegnare le ore agli insegnanti, spostarle e fare tutto quello che prevede l'assegnazione manuale delle ore .
    Non potrete, invece, creare nuove classi o usare l'assegnazione automatica delle ore (per evitare un eccessivo uso della cpu sul sever)'.

    Provate la demo!

    ORARIO_ELETTRONICO v. 5

    Questo programma nasce dal bisogno di uno strumento comodo e flessibile per compilare l'orario scolastico.

    Esistono programmi commerciali, ma quando ho cominciato questo lavoro avevano il difetto, oltre a essere piuttosto costosi, di non funzionare su linux e io non avevo nessuna voglia di aprire windows, un sistema operativo che mi innervosisce, solo per lavorare al'orario.

    Nel frattempo la comunità  open source ha lavorato anche a programmi per la compilazione dell'orario scolastico e sono nati altri programmi a volte simili, a volte molto diversi da questo. Ho inserito una pagina di link ai programmi di cui sono a conoscenza.

    Il risultato è questo lavoro, scritto interamente in php e basato sul database mysql; per poterlo usare avete bisogno di questi due programmi, dovete inoltre installare il server apache in quanto il programma gira interamente in un browser, un po' come accade nelle pagine di commercio elettronico.
    Le pagine sono state costruite, e ottimizzate, per Mozilla o Netscape6, ma le ho testate e ho visto che funzionano bene anche con Internet Explorer

    Una volta superate le difficoltà  di installazione e configurazione di queste applicazioni, il programma è (a mio parere :-) estremamente semplice. Nelle pagine successive troverete le istruzioni per installare le applicazioni necessarie e per utilizzare il programma sotto linux o, cosa che ho fatto a malincuore ma il programma mi piace e volevo metterlo a disposizione degli utenti 'normali', sotto windows.

    Non c'è nulla di particolarmente complicato, tuttavia almeno gli utenti windows devono scaricare php , mysql e apache da internet (questi programmi sono invece normalmente parte delle distribuzioni linux) e bisogna compiere alcune semplici operazioni di configurazione.
    Prima di mettervi al lavoro forse vorrete vedere alcune immagini di come funziona 'orario elettronico'. L'inserimento dei dati è semplicissimo: per ogni classe bisogna inserire il nome, la materia e il numero di ore di ogni insegnante.
    Potete vedere un'immagine della schermata di inserimento dati.

    A questo punto verranno automaticamente create: una pagina web per la classe e una per ognuno degli insegnanti interessati. Ogni pagina contiene una tabella principale dotata di menu a comparsa che già  contengono le opzioni disponibili per la classe (nomi degli insegnanti) o per l'insegnante (classi in cui può essere impegnato).
    Inoltre, e questa è la cosa più importante, ogni pagina contiene le tabelle (non interattive) di tutti gli insegnanti coinvolti nella classe o di tutte le classi in cui l'insegnate è impegnato. Scegliendo una voce del menu a comparsa vengono automaticamente aggiornati i database e la pagina ricompare con i dati aggiornati. Le tabelle degli insegnanti contengono inoltre l'indicazione di quante ore il professore deve ancora svolgere nella classe.
    Potete vedere un'immagine della pagina con un menu a comparsa aperto, come vedete le opzioni disponibili corrispondono agli insegnanti della classe.

    Con la versione 4.0 ho inserito alcuni script in php per la compilazione automatica dell'orario, non sono stati molto sperimentati ma i primi test hanno dato risultati decisamente buoni. Adesso orario_elettronico permette l'assegnazione automatica delle ore tanto su linux quanto su windows senza più dover ricorrere a un programma esterno.

    A questo punto, se vi pare interessante, potete andare alla pagina di linux o di windows oppure consultare le FAQ per istruzioni più dettagliate.
    E' possibile scaricare una versione completa per sistemi operativi linux; per windows invece è disponibile una versione dimostrativa, nel senso che ho inserito nel codice alcune righe che ne limitano le funzioni a solo otto classi. Questa scelta è dovuta a antipatia per il sistema operativo e al fatto che sto considerando la possibilità  di chiedere un modesto pagamento per il programma completo.
    Comunque i dati inseriti nella versione demo possono essere recuperati ove si passi alla versione completa. D'altra parte il programma è interamente scritto in php e se qualcuno vuole cimentarsi a togliere i blocchi, beh ... buona fortuna!
    Per il momento, dato che il programma non è stato ancora completamente testato, chi volesse ottenere la versione completa per windows può scrivermi a alessandro.brunelli@poste.it per prendere accordi.

    Buon lavoro.

    scarica orario_elettronico Visita la mia home page
    per altro materiale
    mail me SourceForge.net Logo


    Storia dei cambiamenti

    Cambiamenti nella versione 5.0

  • Ho completamente riscritto gli script per l'assegnazione automatica delle ore e l'eliminazione dei buchi. Adesso queste funzioni lavorano a livelli di sempre maggiore profondità (e l'esecuzione richiede via via più tempo): a un primo livello il programma si limita a cercare di assegnare a un insegnante un'ora di lezione dove siano liberi sia la classe sia l'insegnate, a un livello successivo cercherà di liberare l'insegnante e la classe spostando le ore già assegnate: qui cominciano le complicazioni: se l'ora assegnata è una doppietta il programma cercherà di ricostruirla in un'altra giornata; se l'ora di destinazione confligge con qualche condizione (separazione dei giorni, compresenza con altre materie, numero di ore che l'insegnate può lavorare nella stessa giornata) cercherà di risolvere il conflitto; a un livello ancora successivo cercherà di spostare l'insegnante in un'ora già eventualmente impegnata, dunque si tratterà di spostare un'altra classe e un altro insegnante e di risolvere gli eventuali conflitti e così via (virtualmente all'infinito). Nella mia esperienza tutte le ore che posono essere assegnate vengono collocate già al livello 4, qualche volta può essere necessario procedere al livello 5. Il programma può richiedere molto tempo (io consiglio di impostare le classi e di lasciarlo lavorare durante la notte) e se avete inserito qualche condizione che non può essere soddisfatta il programma - se non ci sono bug - continuerà a girare a livelli sempre più profondi senza mai violare le condizioni da voi poste.
    REQUISITI:
    - molta memoria: il programma di assegnazione automatica lavora interamente nella memoria ram e credo che per un lavoro proficuo siano necessaria almeno 512 MB di memoria, meglio 1GB o più;
    - tempo: è necessario modificare i file php.ini per aumentare il tempo disponibile per l'esecuzione; seguite le indicazioni persenti nella pagina di assegnazione automatica delle ore; può essere necessario modificare anche le impostazione del browser per aumentare generosamente il tempo di timeout.
    AVVERTENZE:
    - ho limitato quanto più possibile i messaggi del programma in fase di assegnazione delle ore: mentre lavoravo a scrivere questi script chiedevo molti output per trovare gli errori ma ho spesso avuto dei crash dell'x-server. Non dovrebbe più accadere, ma usate questo programma a vostro rischio!
    - proprio per evitare rischi di congelamento il programma, dopo il livello 2, resterà per parecchio tempo silenzioso, senza stampare messaggi e senza che il browser riceva alcun input. Ho inserito dei contatori che vi mostrano quanto tempo passa durante l'esecuzione di ogni fase dell'assegnazione, ma una volta partiti si fermeranno solo quando l'operazione è finita. Per fermare l'esecuzione del programma avete dunque due metodi:
    1) premere il pulsante stop del browser, ma l'azione avrà effetto solo quando il browser riceve un nuovo input (possono passare molti minuti, anche delle ore);
    2) da una shell, come root (è scomodo, ma non conosco altre soluzioni) riavviare apache. Nella mia distribuzione gentoo : /etc/init.d/apache2 restart , in altre distribuzioni il comando può essere diverso; in windows ci sarà qualche bottone che produce questo risultato, ma un vero uomo o una vera donna non schiacciano bottoni!

  • Con questa versione è possibile assegnare più materie allo stesso insegnante nella stessa classe (es.: storia e filosofia, latino e greco ecc.) La funzione dovrebbe essere utile per stabilire meglio la distribuzione delle ore nei giorni della settimana, specialmente se si assegnano automaticamente le ore.
    Esempio: nella vecchia versione a un insegnante che insegnasse 4 ore di latino e 3 di greco nella stessa classe si poteva solo assegnare la materia latino (o greco) per un totale di 7 ore e chiedere la programma di non dare più di due ore nella stessa giornata: poteva così accadere che il programma assegnasse 2 ore il lunedì, 2 il martedì, 2 il mercoledì e una il giovedì senza contravvenire alle nostre richieste. Adesso potete attribuire 4 ore di latino, chiedendo di non assegnare più di un'ora nella stessa giornata (ed eventualmente di lasciare un giorno vuoto tra una lezione e l'altra, ma per un monte di 4 ore la condizione è piuttosto pesante) e 3 ore di greco, chiedendo di non assegnare più di un'ora nella stessa giornata e di lasciare un giorno vuoto tra almeno una lezione e un'altra (qui la richiesta ha decisamente senso.) Per quanto riguarda le 'doppiette', in questo caso durante la creazione della classe indicherete che volete 2 ore consecutive di latino (e eventualmente anche di greco: il programma cercherà la materia, tra quelle assegante allo stesso insegnante, per cui è richiesto il maggior numero di ore consecutive, dunque è ininfluente che mettiate 2 ore consecutive a latino, a greco o entrambe le materie): nell'assegnazione automatica la doppietta verrà costruita assegnando in almeno una giornata, prima dell'intervallo, due ore consecutive: una di latino e una di greco

  • Adesso è possibile bloccare alcune ore: durante l'assegnazione manuale il programma si rifiuterà di sostituire o eliminare un'ora bloccata e un pop-up vi chiederà di sbloccarla prima di spostarla; l'assegnazione automatica non toccherà le ore che voi abbiate deciso di bloccare. Attenzione: i 'segnaposto' (lib o free - per il giorno libero - ext - per le ore in cui l'insegnante è impegnato in altro istituto- D - per le ore a disposizione - ## - per le ore da non utilizzare per l'insegnante o la classe) vengono automaticamente bloccati dal programma al momento dell'asssegnazione e devono essere bloccati se li sbloccate badate a sostituirli con una classe - nella pagina dell'insegnante - o un insegnante - nella pagina della classe - o un'ora vuota. In caso contrario ricordatevi di tornare a bloccarli

  • Al momento della creazione o modifica delle classi è possibile stabilire che una materia non sia assegnata nello stesso giorno di un'altra materia. Questa funzione dovrebbe servire per evitare di dare a una classe giornate troppo leggere o troppo pesanti. Esempio: nella scuola in cui mi sono di recente trasferito vige la regola di non assegnare nello stesso giorno e alla stessa classe educazione fisica e religione: materie di solito considerate leggere che è meglio distribuire in diversi giorni della settimana

  • La pagina 'quadro di controllo' è completamente riscritta, e lo sono anche le pagine di statistiche che non ho eliminato. La lettura è più laboriosa che nella versione precedente, ma con l'opzione 'più materie per insegnante' era inevitabile

  • Cambiamenti nella versione 4.2

    Aggiornati alla versione 3.12.24 di FET - Free Evolutionary Timetabling i file per esportare e importare i dati

    Cambiamenti nella versione 4.1

    Inserita la legenda nella pagine riassuntiva delle doppiette.
    Aggiornato l'indirizzo email dell'autore.

    Cambiamenti nella versione 4.0

    1) Questa versione introduce l'assegnazione automatica delle ore all'interno di orario_elettronico mediante una serie di script in linguaggio php.
    REQUISITI:
    - una buona quantità di memoria (per lavorare bene credo siano necessari 512 MB: funziona, ma lentamente, con 256 MB, va bene con 1 GB)
    - modificare adeguatamente il file php.ini (seguite le istruzioni nella pagina di accesso all'assegnazione automatica)
    per accedere a questa nuova funzione scegliete l'opzione 'amministrazione e gestione' --> 'ASSEGNAZIONE AUTOMATICA DELLE ORE' e seguite le istruzioni.

    2) Sono molto migliorate le pagine dedicate alle statistiche; in particolare la pagina 'amministrazione e gestione' --> 'QUADRO DI CONTROLLO' vi dà una visione generale di tutte le caratteristiche (ed eventuali errori) dell'orario che avete compilato.

    - Le funzioni di assegnazione manuale delle ore non hanno subito alcuna modifica.

    Cambiamenti nella versione 3.5

    Aggiornati alla versione 3.6.6 di FET - Free Evolutionary Timetabling i file per esportare e importare i dati

    Cambiamenti nella versione 3.4

    cambiamenti minori per consentire l'uso della nuova restrizione ConstraintTeachersNoMoreThanXHoursDaily nella versione 3.6.1 di FET - Free Evolutionary Timetabling

    Cambiamenti nella versione 3.3 e superiori

    Solo per linux

    Ho integrato il programma con FET - Free Evolutionary Timetabling, un programma per l'assegnazione automatica delle ore creato da Liviu Lalescu. Potete esportare la struttura dall'orario in fet, fare elaborare le ore dal programma e importare i risultati in orario_elettronico per lavorarci a mano.
    Scegliete l'opzione 'ASSEGNA LE ORE CON FET' dal menu 'amministrazione e gestione' e seguite le istruzioni.

    Ho anche aggiunto la pagina 'controlla ore disponibili/necessarie': dopo aver assegnato ai professori ore e giorni liberi e segnato nelle classi le ore da non utilizzare potete controlare che la somma di ore disponibili da parte degli insegnanti sia sufficiente per il fabbisogno della scuola

    Cambiamenti nella versione 3.0 e superiori

    Versione multilingua e multisistema, lavora sia su linux che su windows, all'ingresso si sceglie tra italiano e inglese.
    Aggiunta un'opzione per duplicare al volo il database su cui si lavora.
    Aggiunta una pagina per vedere le ore fatte da ogni insegnante in ogni classe.
    Aggiunti colori per una migliore leggibilità.

    Cambiamenti nella versione 2.0 e superiori

    ATTENZIONE!! Questa versione introduce la gestione delle aule speciali: al momento della creazione della classe potrete indicare per ogni insegnante in quale aula è impegnato: quando assegnerete le ore, se l'aula è già  impegnata, potrete comunque andare avanti (nella mia scuola due classi condividono la stessa palestra), ma riceverete un messaggio di avviso e avrete a disposizione una tabella con la situazione delle aule speciali impiegate da ogni classe.
    Avete a disposizione uno script per aggiornare database creati con vecchie versioni di orario elettronico. Al momento dell'aggiornamento a tutti gli insegnanti di ogni classe verrà  assegnata un'aula con il nome della classe, sta a voi andare a 'modifica una classe' e inserire le aule speciali.

    Cambiamenti nella versione 1.0 e superiori

    ATTENZIONE!! Con questa versione ho modificato la struttura delle tabelle, adesso i dati sono meglio organizzati e le ricerche leggermente più veloci.
    Questo vuol dire che se usate un database creato con una vecchia versione di orario_elettronico il programma non troverà  alcuni campi e riceverete messaggi di errore. Dalla pagina amministra potete accedere (opzione "8)Aggiorna un vecchio database") a uno script che aggiornerà  automaticamente i vecchi database per essere usati con questa versione di orario_elettronico. L'operazione è stata da me più volte eseguita e funziona, tuttavia è comunque consigliabile fare prima un backup del database con l'opzione 6) Esporta - importa un database
    Ho inoltre aggiunto alcune opzioni alla pagina amministra, adesso potete cancellare un database che non vi interessa più senza usare la linea di comando di mysql.

    CAMBIAMENTI NELLA VERSIONE 0.2 e superiori

    Questa versione cambia molte cose: non dovete più creare una cartella per ogni database (da un'unica cartella avrete l'opzione di scegliere su quale database lavorare) e potete accedere al database con un account da amministratore o con uno da ospite per la sola consultazione.
    Cambiano dunque anche i primi passi: la prima cosa da fare, dopo avere spostato questa cartella nella directory root del server (su linux dipende dalle scelte che avete fatto all'installazione di apache, su windows normalmente c:\Programmi\Apache Group\Apache\htdocs) e averla rinominata "orario_elettronico", è aprire dal server apache la pagina "1_INIZIO_E_BUTTAMI.php". Qui dovrete definire il nome e la password dell'utente root di mysql, necessario per il primo accesso. Nel 99% dei casi dovrebbe andare bene l'opzione offerta nel form: utente "root" e nesuna password.
    Dovrete poi indicare il nome e la password dell'utente dotato dei diritti di amministratore (il form offre "admin" con password DA DEFINIRE OBBLIGATORIAMENTE, il normale form di login impedisce di accedere senza password proprio per evitare che gli ospiti possano accedere come root nei sistemi dove l'utente root non ha password) e dell'ospite (il form offre "ospite", "ospite" e può andare bene).
    Dovete poi indicare il nome del primo database di orario_elettronico: nel form di login l'utente potrà  accedere solo ai database il cui nome contiene una certa stringa definita nel file includes/connect.php. Io ho scelto la stringa 'orar', dunque saranno disponibili i database contenenti tale espressione e se non ne esistono l'utente sarà  incapace di accedere al programma. Gli ulteriori database potranno essere creati all'interno del programma senza più tornare a questo file 1_INIZIO_E_BUTTAMI, anzi vi consiglio di buttarlo o spostarlo in una cartella inaccessibile al server: è l'unico file da cui un utente può accedere al database come root senza password. Dovrete infine indicare il numero massimo di ore e di insegnanti della classe che ha più ore o più materie.
    Ripeto, definiti gli utenti e creato il primo database accessibile questa pagina non serve più, buttatela via, l'utente amministratore potrà  accedere al database creato, inserire le classi, modificarle e creare database all'interno del programma. La sicurezza dovrebbe (non sono un esperto di sicurezza) essere garantito dal fatto che il nome utente e la password non vengono scritti in nessun file ma sono definiti da cookies che scadono alla fine di ogni seduta e sono rinnovati ad ogni login.