Home
Name Modified Size Downloads / Week Status
Totals: 3 Items   27.1 kB 1
0 orario_elettronico-6 2012-09-27 15 weekly downloads
1 orario_elettronico5 2008-07-20 1 weekly downloads
readme.txt 2012-09-27 27.1 kB 11 weekly downloads
ATTENZIONE! La versione 6.0 conteneva un banalissimo errore che impediva di modificare o creare le classi rendendo lo script inutilizzabile. . La cancello e sostituisco con la 6.1. Scusate! WARNING! A very stupid mistake made version 6.0 unusable. I delete version 6.0 and upload version 6.1. Sorry! ITALIAN (ENGLISH BELOW) ORARIO_ELETTRONICO 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 phpe 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. Questa versione è l'ultima: lavoro da anni a orario_elettronico e a questo punto ho altro da fare. L'applicazione non sarà più aggiornata. Per questa ragione ho anche eliminato le restrizioni per l'uso su piattaforme windows. Il programma funziona bene su linux, ma su windows (non capisco perchè) è lento e ci sono bug in alcune funzioni. Sconsiglio fortemente di usarlo su windows, benchè, tecnicamente, sia possibile farlo. ****** Storia dei cambiamenti ****** Cambiamenti nella versione 6.0 Ho introdotto la possibilità di differenziare il carico massimo di lavoro degli ionsegnanti nei giorni della settimana. Es: il prof xyz può fare al massimo 4 ore di lezione al giorno, ma il martedi e il giovedì può farne 5. Ho ulterirmente riscritto gli script per l'assegnazione automatica delle ore e l'eliminazione dei buchi. Adesso dovrebbero essere più veloci e soprattutto, nella maggior parte dei casi, dovrebbero capire se un'ora non può essere assegnata sulla base delle condizioni fissate e dovrebbero rinunciare in tempi ragionevoli Questa versione è l'ultima: lavoro da anni a orario_elettronico e a questo punto ho altro da fare. L'applicazione non sarà più aggiornata. Per questa ragione ho anche eliminato le restrizioni per l'uso su piattaforme windows. Il programma funziona bene su linux, ma su windows (non capisco perchè) è lento e ci sono bug in alcune funzioni. Sconsiglio fortemente di usarlo su windows, benchè, tecnicamente, sia possibile farlo. 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.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 versione3.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. 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. Qui sotto fornisco un link che vi permette di accedere alla pagina iniziale,a patto che il vostro host si chiami localhost e che la cartella del programma si chiami orario_elettronico e si trovi nella cartella root del server. Comunque l'indirizzo da fornire al browser sarà  qualcosa come : http://localhost/orario_elettronico/1_INIZIO_E_BUTTAMI.php cambiando, ovviamente il nome del server e il percorso della cartella. ENGLISH This program is born from the lack of a comfortable and flexible tool to compile a school timetable. There are a lot of commercial programs out there, but they are rather expensive and, when I started this program, I could not find any program working on linux, and I had no wish to launch windows, an O. S. which gets on my nerves, only in order to work at the timetable. In the meanwhile the open source community has been working also to programs to compile school timetables. Here you find a page with links_to_the_programs_I know. The outcome is this work, entirely written in phpand based on the database mysql; to use it you need these two programs, moreover you must install the server apache as the program works inside a browser. The pages are built on and optimized for Mozilla. This is the last version: orario_elettronico will no more be mantained. Limitations for the use on widows systems have been removed The program works fine on linux, is slow and buggy on windows. I discourage the use on windows systems ****** Change log ****** Changes in version 6.0 The scripts for the automatic allocation of hours and the removing of the blanks between the assigned hours are again rewritten from scratch. Now they should be faster and, in ost cases, undestand if it's impossible to satisfy a constraint and give up in a reasonable time This is the last version: orario_elettronico will no more be mantained. Limitations for the use on widows systems have been removed The program works fine on linux, is slow and buggy on windows. I discourage the use on windows systems Changes in version 5.0 The scripts for the automatic allocation of hours and the removing of the blanks between the assigned hours are rewritten from scratch. Now these functions work at progressively deeper levels (and are progressively slower): at 'level' 0 the script simply searches for a free hour of teachers and classes; when you go on, the script moves already allocated hours and tries to resolve conflicts: this may become very complicated and if it's impossible to satisfy some constraints the program will finish in a never ending loop. In my experience everything that can be done is done at level 4; in some very complicated case you may need level 5. The execution of the program may take a very long time: I suggest you to let it work over night. REQUIREMENTS: - a lot of memory: the script works in the RAM and at least 512 MB, or better 1 GB are required; - time: you must modify the file php.ini in order to increase the maximum execution time; follow the instructions inserted in the page for the automatic allocation of hours; you may also need to increase the timeout limit of your browser. WARNINGS: - While testing and debugging the program I have had several freezes of the x- server. In order to avoid it the script gives very few output messages. These freezes shouldn't happen any more, but be advised: you use the program at your own risk! - in order to avoid freezes, after level 2 the script will not give any output for long times, it will seem to sleep. There are two ways to stop the execution of the script: 1) press the button 'stop loading' of your browser, but the order will have effect only when the browser receives some input form the script (it may take a long time); 2) from a shell, as root, restart apache. In my gentoo distribution : /etc/ init.d/apache2 restart , in other distributions it will be different; in windows you'll find a button which gives this result, but a real man or woman does not press buttons! With version 5.0 you can assign more than one subject to the same teacher in the same class. Now you can lock some hours: the scripts will not move hours signed as locked. Remember: placeholders as 'lib' 'free' 'ext' '##' are locked as you insert them and must remain locked You can state that a subject may not be teached in the same class and day with another subject (we may not want very 'light' subjects to be teached in the same day) 'Control panel' is interely rewritten Changes in version 4.0 1) This version supports the automatical allocation of hours inside orario_elettronico via some php scripts. REQUIREMENTS: - a good amount of memory (512MB should be ok; works good with 1GB, rather slow with 256MB); - edit file php.ini as said in autoamtic allocation enter page. In order to use this option choose 'ADMINISTRATION'-->'AUTOMATIC ALLOCATION OF HOURS' 2) Much better statistic pages. From ''ADMINISTRATION'-->'CONTROL PANEL' you get an overview on the whole timetable and are noticed about errors. The manual allocation of hours had no changes. Changes in version 3.5 Import/export files updated to FET_-_Free_Evolutionary_Timetabling version 3.6.6 Changes in version 3.4 Minor changes in order to take advantage of the new constraint ConstraintTeachersNoMoreThanXHoursDaily in version 3.6.1 of FET - Free Evolutionary Timetabling Changes in version 3.3 and over Only for linux I have integrated the program with FET_-_Free_Evolutionary_Timetabling, a program for automatic allocation of hours created by Liviu Lalescu. You can export basic data from orario_elettronico into fet, let it allocate hours and import the results into orario_elettronico for manual work. Just select option 'ALLOCATE HOURS WITH FET" from menu "ADMINISTRATION" and follow the instructions Changes in version 3.0 and over This version works on both windows and linux systems and lets you choose between italian and english. Added option to duplicate database 'on the fly''. Added colors for better readability. Changes in version 2.0 and over ATTENTION!! This version introduces the management of special rooms: when you create a class you can define for each teacher in which classroom he will work. When you will assign working hours to teachers, if the classroom is already busy, you will be allowed to keep working (in my school two classes share the same gymnasium), but you will become an alert and see a table containing the state of all special rooms used by the class. I've written a script which updates databases created with older versions of orario_elettronico. As you update the database, a classroom with the same name of the class (1a, 1b ecc) will be assigned to each teacher working in every class. It will be your care to use the link 'modify a class' to insert special rooms. Changes in version 1.0 and over ATTENTION!! In this version the structure of tables is changed, now data are better organized and queries a little faster. This means that if you use a database created with an older version of orario_elettronico the program will not be able to find some fields and you will get error messages. From page 'manage database' you can gain access to a script (option '8)Update an old database') which will automatically update old databases in order to be used with this version of orario_elettronico. I have often used this option and it works, anyway I strongly suggest you to make a backup of the old database with option '6) Export - import a database' before updating. I have also added some options to the page 'manage database', now you can delete an old database without using the command line. Changes in version 0.2 and over This version changes many things: you will no more need to create a folder for each database (from one folder you can choose on which database you want to work), you can also choose whether to access the database as administrator or as guest (only consultation). The first steps are therefore changed too: the first thing you must do after unpacking the program and moving the folder in the root directory of the http server (on linux it depends on the choices you made installing apache, on windows normally c:\Programs\Apache Group\Apache\htdocs), is launch from the sever the page "1_START_AND_DELETE_ME.php" . Here you must insert name and password of the root mysql user, necessary for the first access. Normally should be OK the option I offer: user 'root' and no password. Then you MUST choose a name and password for the user provided with administrator rights (the form offers 'admin' with password to be MANDATORY defined: from the login form users will be unable to enter the program without a password, in order to avoid that users access the program as root in systems where the root user has no password) and for the guest (the form offers 'guest', 'guest' and it can be OK) You Must also choose the name for the first database created with orario_elettronico: from the login page the user can access only databases whose name contains the string defined in file includes/connect.php (YOU MAY EDIT IT AS YOU LIKE). I chose the string 'orar', therefore only databases containing this string may be accessed and if no such database exists the user won't be able to enter the program. Further databases will be created inside the program and you will no more need the file "1_START_AND_DELETE_ME.php". I strongly suggest to throw it away or, at least, move it to a folder inaccessible from the server: it is the only file which allows the root user to access the mysql server without a password. Finally you must choose the highest number of hours and teachers for class (refer to the class which has the maximum number of hours and the one with the maximum number of teachers; this defines the size of the tables). I say it again: once the users are defined and the first database created you need no more this file, throw it away. The administrator will be able to access the first database, add classes, modify them and create new databases from the program. Security should be granted by the fact that name and pass of the user accessing the program aren't written in any file, but stored in cookies which expire at the end of each session and newly created at each login. The following link allows you to enter the page 1_START_AND_DELETE_ME,on condition that your host is named 'localhost' and the folder containing the program is named 'orario_elettronico' and is located in the root directory of the server. Anyway the address you must type in the browser will be something like: http://localhost/orario_elettronico/1_START_AND_DELETE_ME.php changing, of course, the server name and the path to the folder.
Source: readme.txt, updated 2012-09-27