Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Emploi du temps Ven 16 Mar 2012 - 1:34 | |
| Pour élèvres, parents d'élèves ou enseignants: voilà un petit outil de gestion des emplois du temps convivial, souple et facile à adapter aux cas particuliers. Quelques notions de base: - un emploi du temps est une grille de 6 colonnes (jours de la semaine de lundi à samedi) et de 15 lignes correspondant à des "cours" ou "activités". - chaque emploi du temps fait partie d'une "catégorie". La liste des catégories est memorisée dans un fichier ini. Au démarrage, une seule catégorie est définie et elle s'appelle "<defaut>". Une catégorie est composée d'un nom (libellé) et d'une liste d'heures de début d'activité. Le nom et les heures de début sont librement modifiables. On peut créer autant de catégories que nécessaire/ - un emploi du temps est présenté dans un GRID. La ligne fixe contient les noms des jours de la semaine, et la colonne fixe contient les heures de début d'activité de la catégorie. On peut créer autant d'emploi du temps que nécessaire. Ils sont déposés séparément, dans un fichier texte *.TXT. - le fichier INI contenant les catégories est déposé dans le répertoire de l'exécutable du programme. Si on l'exécute à partir de l'éditeur, ce sera dans le répertoire C:\temp\. - les cellules d'un emploi du temps contiennent du texte simple - un nom de cours, un numéro de salle de classe, un nom, etc. Voici le code: - Code:
-
label labels : gosub labels gosub variables gosub form0 gosub menu gosub GUI gosub initialisations end
labels: label variables, form0, menu, GUI, initialisations, close_options label new_plan, opn_plan, svg_plan, svx_plan, sortir, options label raz_tout, aide, apropos, cls_plan, effacer, gerer_menu label get_segment, click_grid, close_saisie, val_options, click_categ label changer_categorie, click_grille, ajouter_categorie, close_apropos return variables: dim no%, parent_1%, parent_2% dim nom_plan$, nom_categorie$, no_open%, no_save%, no_options% dim flag_plan_present%, flag_plan_modif%, no_modif%, no_val_options% dim no_obj_si_present%(10), no_obj_si_modif%(10), origine% dim n_obj_si_present%, n_obj_si_modif%, no_cat_combo%, no_grille% dim nom_rep$, nom_ini$, no_apropos%, no_aide% dim n_categ%, nom_categ$(50), heure_categ$(50,15) dim i%, j%, k%, s$, is%, seg$, x%, y%, lig%, col% dim nl$ : nl$ = chr$(13)+chr$(10) dim version$ : version$ = "V01.00" dim creation$ : creation$ = "9 Mars 2012" dim categ_defaut$ categ_defaut$ = "<défaut>,8h30,9h30,10h30,11h30, ,13h00,14h00,15h00,16h00,17h00,18h00,19h00,*"
return form0: ' full_space 0 width 0,850 : height 0,570 caption 0,"Emploi du temps - <nouveau>" return
menu: no% = no% + 1 : main_menu no% : parent_1% = no% no% = no% + 1 : sub_menu no% : parent no%,parent_1% parent_2% = no% : caption no%,"Fichiers" no% = no% + 1 : sub_menu no% : parent no%,parent_2% caption no%,"Nouveau" : on_click no%,new_plan no% = no% + 1 : sub_menu no% : parent no%,parent_2% caption no%,"Ouvrir..." : on_click no%,opn_plan no% = no% + 1 : sub_menu no% : parent no%,parent_2% : inactive no% caption no%,"Enregistrer" : on_click no%,svg_plan n_obj_si_present% = n_obj_si_present% + 1 no_obj_si_present%(n_obj_si_present%) = no% no% = no% + 1 : sub_menu no% : parent no%,parent_2% : inactive no% caption no%,"Enregistrer sous.." : on_click no%,svx_plan n_obj_si_present% = n_obj_si_present% + 1 no_obj_si_present%(n_obj_si_present%) = no% no% = no% + 1 : sub_menu no% : parent no%,parent_2% : inactive no% caption no%,"Fermer" : on_click no%,cls_plan n_obj_si_present% = n_obj_si_present% + 1 no_obj_si_present%(n_obj_si_present%) = no% no% = no% + 1 : sub_menu no% : parent no%,parent_2% caption no%,"------------------" no% = no% + 1 : sub_menu no% : parent no%,parent_2% caption no%,"Sortir" : on_click no%,sortir
no% = no% + 1 : sub_menu no% : parent no%,parent_1% parent_2% = no% : caption no%,"Edition" no% = no% + 1 : sub_menu no% : parent no%,parent_2% caption no%,"Effacer" : on_click no%, raz_tout : inactive no% n_obj_si_present% = n_obj_si_present% + 1 no_obj_si_present%(n_obj_si_present%) = no% no% = no% + 1 : sub_menu no% : parent no%,parent_2% caption no%,"------------------" no% = no% + 1 : sub_menu no% : parent no%,parent_2% caption no%,"Options" : on_click no%, options no% = no% + 1 : sub_menu no% : parent no%,parent_2% : inactive no% no_val_options% = no% caption no%,"Valider les options" : on_click no%, val_options
no% = no% + 1 : sub_menu no% : parent no%,parent_1% parent_2% = no% : caption no%,"Aide" no% = no% + 1 : sub_menu no% : parent no%,parent_2% caption no%,"Aide" : on_click no%, aide no% = no% + 1 : sub_menu no% : parent no%,parent_2% caption no%,"A-propos" : on_click no%, apropos
return GUI: no% = no% + 1 : open_dialog no% : no_open% = no% filter no%,"Fichier emploi du temps|*.txt" no% = no% + 1 : save_dialog no% : no_save% = no% filter no%,"Fichier emploi du temps|*.txt" no% = no% + 1 : alpha no% : top no%,10 : left no%,10 caption no%,"Catégorie:" no% = no% + 1 : combo no% : top no%,10 : left no%,70 : width no%,150 : no_cat_combo% = no% : on_click no%,click_categ no% = no% + 1 : grid no% : no_grille% = no% top no%, 60 : left no%,40 : grid_row no%,16 : grid_column no%,8 grid_column_width no%,100 grid_one_column_width no%,1,43 width no%,755 : height no%,405 : on_click no%,click_grille
no% = no% + 1 : form no% : hide no% : no_options% = no% : parent_1% = no% caption no%,"Emploi du temps : catégories" top no%, 30 : left no%,30 : height no%,screen_y-60 : width no%,screen_x-60 on_close no%,close_options no% = no% + 1 : grid no% : parent no%,parent_1% : top no%,10 : left no%,10 grid_row no%,51 : grid_column no%,17 width no%,width(no_options%)-60 : height no%,height(no_options%)-60 grid_one_column_width no%,1,30 : grid_one_column_width no%,2,130 on_click no%, click_grid grid_write no%,1,1,"No." grid_write no%,1,2,"Catégorie" for i%=1 to 15 grid_write no%,1,i%+2,"T. "+str$(i%) next i% no% = no% + 1 : form no% : hide no% : no_modif% = no% : parent_1% = no% caption no%,"Emploi du temps : saisie" top no%, 200 : left no%,200 : height no%,100 : width no%,250 on_close no%,close_saisie no% = no% + 1 : edit no% : parent no%,parent_1% top no%,20 : left no%,20 : width no%,130
no% = no% + 1 : form no% : hide no% : no_apropos% = no% : parent_1% = no% caption no%,"Emploi du temps : A-propos" top no%, 200 : left no%,200 : height no%,150 : width no%,250 on_close no%,close_apropos no% = no% + 1 : alpha no% : parent no%,parent_1% top no%,20 : left no%,20 s$ = "Emploi du temps "+nl$ s$ = s$ + "Version: "+version$+nl$ s$ = s$ + "Date: "+creation$+nl$ s$ = s$ + "Auteur: Klaus"+nl$ caption no%,s$
no% = no% + 1 : form no% : hide no% : no_aide% = no% : parent_1% = no% caption no%,"Emploi du temps : Aide" top no%, 200 : left no%,200 : height no%,400 : width no%,400 on_close no%,close_apropos no% = no% + 1 : alpha no% : parent no%,parent_1% top no%,20 : left no%,20 s$ = "Mode d'emploi"+nl$+nl$ s$ = s$ + "Pour chaque mode d'emploi, choisissez une catégorie."+nl$ s$ = s$ + "Le menu Options permet de configurer les catéhories."+nl$+nl$ s$ = s$ + "Chaque cellule d'un mode d'emploi du temps ou d'une"+nl$ s$ = s$ + "catégorie peut être modifiée en cliquant dans la cellule."+nl$ s$ = s$ + "On saisit l'information dans la fenêtre qui s'ouvre,"+nl$ s$ = s$ + "et on termine en fermant la fenêtre par la croix."+nl$+nl$ s$ = s$ + "Les valeurs sont immédiatement mises à jour en mémoire."+nl$ s$ = s$ + "Les catégories sont validées par le menu Valider les options"+nl$ s$ = s$ + "et les emplois du temps par le menu Enregistrer ou le"+nl$ s$ = s$ + "menu Enregistrer sous..."+nl$+nl$ s$ = s$ + "Les catégories sont déposées dans un fichier EmploiDuTemps.ini"+nl$ s$ = s$ + "et les emplois du temps dans un fichier *.TXT."+nl$ caption no%,s$
return initialisations: s$ = param_value$(0) nom_rep$ = file_extract_path$(s$) if instr(lower$(s$),"\temp\")>0 then nom_rep$ = "C:\temp\" nom_ini$ = nom_rep$ + "EmploiDuTemps.ini" dir_dialog no_open%,nom_rep$ dir_dialog no_save%,nom_rep$ if dir_exists(nom_rep$)=0 then dir_make nom_rep$ if file_exists(nom_ini$)=0 file_open_write 1,nom_ini$ file_writeln 1,"; créé le "+date$+" à "+time$+" heures" file_writeln 1,categ_defaut$ file_close 1 end_if file_open_read 1,nom_ini$ file_readln 1,s$ while file_eof(1)=0 gosub ajouter_categorie end_while file_close 1 text no_cat_combo%,item_read$(no_cat_combo%,1) grid_write no_grille%,1,1,"Tranche" grid_write no_grille%,1,2,"Lundi" grid_write no_grille%,1,3,"Mardi" grid_write no_grille%,1,4,"Mercredi" grid_write no_grille%,1,5,"Jeudi" grid_write no_grille%,1,6,"Vendredi" grid_write no_grille%,1,7,"Samedi" grid_write no_grille%,1,8,"Dimanche" lig% = 1 gosub changer_categorie return get_segment: if right$(s$,1)<>"," then s$ = s$ + "," is% = instr(s$,",") seg$ = left$(s$,is%-1) s$ = mid$(s$,is%+1,len(s$)) return ajouter_categorie: file_readln 1,s$ n_categ% = n_categ% + 1 gosub get_segment nom_categ$(n_categ%) = seg$ item_add no_cat_combo%,seg$ grid_write no_options%+1,n_categ%+1,1,str$(n_categ%) grid_write no_options%+1,n_categ%+1,2,seg$ gosub get_segment i% = 0 while seg$<>"*" i% = i% + 1 heure_categ$(n_categ%,i%) = seg$ grid_write no_options%+1,n_categ%+1,i%+2,seg$ gosub get_segment end_while return new_plan: cls_plan: if flag_plan_present%=1 gosub effacer flag_plan_present% = 0 flag_plan_modif% = 0 end_if flag_plan_present% = 1 caption 0,"Emploi du temps - <nouveau>" nom_plan$ = "" gosub gerer_menu return
opn_plan: s$ = file_name$(no_open%) if s$="_" then return gosub effacer flag_plan_present% = 1 gosub gerer_menu nom_plan$ = s$ caption 0,"Emploi du temps - " + file_extract_name$(nom_plan$) file_open_read 1,nom_plan$ file_readln 1,s$ if left$(s$,18)<>"Emploi du temps - " message "Ce fichier ne contient pas en emploi du tems valide !" file_close 1 return end_if file_readln 1,s$ if left$(s$,11)<>"Catégorie: " message "Ce fichier ne contient pas en emploi du tems valide !" file_close 1 return end_if s$ = mid$(s$,12,len(s$)) nom_categorie$ = s$ text no_cat_combo%,nom_categorie$ j% = 0 for i%=1 to n_categ% if nom_categ$(i%)=nom_categorie$ j% = i% exit_for end_if next i% if j%=0 gosub ajouter_categorie j% = n_categ% end_if file_readln 1,s$ for k%=1 to 15 file_readln 1,s$ for j%=1 to 8 gosub get_segment grid_write no_grille%,k%+1,j%,seg$ next j% next k% file_close 1 return
svg_plan: if nom_plan$="" message "Aucun nom de fichier connu pour ce plan" return end_if if file_exists(nom_plan$)=1 if message_confirmation_yes_no("Ce fichier existe déjà."+nl$+"Voulez-vous le remplacer ?")<>1 then return end_if file_open_write 1,nom_plan$ file_writeln 1,"Emploi du temps - "+nom_plan$+" créé le "+date$+" à "+time$+" heures" file_writeln 1,"Catégorie: "+text$(no_cat_combo%) j% = 16 while trim$(grid_read$(no_grille%,j%,1))="" j% = j% - 1 if j%=1 then exit_while end_while if j%>1 s$ = ",*" while j%>1 s$ = "," + trim$(grid_read$(no_grille%,j%,1))+s$ j% = j% - 1 end_while end_if s$ = text$(no_cat_combo%) + s$ file_writeln 1,s$ file_writeln 1,"Lignes:" for i%=1 to 15 s$ = "" for j%=1 to 8 s$ = s$ + trim$(grid_read$(no_grille%,i%+1,j%))+"," next j% file_writeln 1,s$+"*" next i% file_close 1 return
svx_plan: s$ = file_name$(no_save%) if s$="_" then return if instr(right$(s$,5),".")=0 then s$ = s$ + ".txt" nom_plan$ = s$ caption 0,"Emploi du temps - " + file_extract_name$(nom_plan$) gosub svg_plan return sortir: terminate raz_tout: for i%=2 to 16 for j%=2 to 8 grid_write no_grille%,i%,j%,"" next j% next i% return aide: show no_aide% to_foreground no_aide% return
apropos: inactive 0 show no_apropos% return close_apropos: hide no_apropos% active 0 to_foreground 0 return effacer: flag_plan_present% = 0 flag_plan_modif% = 0 gosub gerer_menu return
gerer_menu: if flag_plan_present%=1 if n_obj_si_present% >0 for i%=1 to n_obj_si_present% active no_obj_si_present%(i%) next i% end_if else if n_obj_si_present% >0 for i%=1 to n_obj_si_present% inactive no_obj_si_present%(i%) next i% end_if end_if if flag_plan_modif%=1 if n_obj_si_modif% >0 for i%=1 to n_obj_si_modif% active no_obj_si_modif%(i%) next i% end_if else if n_obj_si_modif% >0 for i%=1 to n_obj_si_modif% inactive no_obj_si_modif%(i%) next i% end_if end_if return options: inactive 0 : show no_options% return
close_options: hide no_options% active 0 to_foreground 0 return
click_grid: origine% = no_options% x% = mouse_x_left_down(no_options%+1) y% = mouse_y_left_down(no_options%+1) col% = grid_x_to_column(no_options%+1,x%) lig% = grid_y_to_row(no_options%+1,y%) if lig%>n_categ%+2 then return if col%=2 caption no_modif%,"Nom de la catégorie" text no_modif%+1,grid_read$(no_options%+1,lig%,col%) else caption no_modif%,"Début de la tranche" text no_modif%+1,grid_read$(no_options%+1,lig%,col%) end_if inactive no_options% show no_modif% return click_grille: origine% = 0 x% = mouse_x_left_down(no_grille%) y% = mouse_y_left_down(no_grille%) col% = grid_x_to_column(no_grille%,x%) lig% = grid_y_to_row(no_grille%,y%) if trim$(grid_read$(no_grille%,lig%,1))="" then return text no_modif%+1,grid_read$(no_grille%,lig%,col%) caption no_modif%,"Activité" inactive 0 show no_modif% return close_saisie: s$ = text$(no_modif%+1) grid_write no_options%+1,lig%,col%,s$ if origine%=0 grid_write no_grille%,lig%,col%,s$ flag_plan_modif% = 1 flag_plan_present% = 1 gosub gerer_menu hide no_modif% active 0 to_foreground 0 return end_if grid_write no_options%+1,lig%,col%,s$ if n_categ%<lig%-1 then n_categ% = lig% - 1 if col%=2 nom_categ$(lig%-1) = s$ if (lig%-1)<=n_categ% item_delete no_cat_combo%,lig%-1 item_insert no_cat_combo%,lig%-1,s$ if item_index(no_cat_combo%)=lig%-1 then text no_cat_combo%,s$ end_if else heure_categ$(lig%-1,col%-2) = s$ if trim$(nom_categ$(lig%-1))="" nom_categ$(lig%-1) = "<nouveau>" grid_write no_options%+1,lig%,2,nom_categ$(lig%-1) grid_write no_options%+1,lig%,1,str$(lig%-1) end_if end_if if lig%-1=n_categ% if count(no_cat_combo%)<n_categ% item_add no_cat_combo%,nom_categ$(lig%-1) end_if end_if hide no_modif% active no_options% to_foreground no_options% active no_val_options% return val_options: file_open_write 1,nom_ini$ file_writeln 1,"; créé le "+date$+" à "+time$+" heures" for i%=1 to n_categ% j% = 15 while trim$(heure_categ$(i%,j%))="" j% = j% - 1 if j%=0 then exit_while end_while if j%>0 s$ = ",*" while j%>0 s$ = "," + heure_categ$(i%,j%)+s$ j% = j% - 1 end_while end_if s$ = nom_categ$(i%) + s$ file_writeln 1,s$ next i% file_close 1 inactive no_val_options% return click_categ: lig% = item_index(no_cat_combo%) gosub changer_categorie return
changer_categorie: nom_categorie$ = text$(no_cat_combo%) for i%=1 to 15 grid_write no_grille%,i%+1,1,heure_categ$(lig%,i%) next i% return | |
|