Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'qui evidenzia, con un messaggio l'anno che è stato digitato
MsgBox("Sto per creare il Calendario del " & Anno & " dare OK")
'Algoritmo per stabilire la data della Pasqua============================================
For N = 1 To 12
If N = 1 Then Mesi(N) = "Gennaio"
If N = 2 Then Mesi(N) = "Febbraio"
If N = 3 Then Mesi(N) = "Marzo"
If N = 4 Then Mesi(N) = "Aprile"
If N = 5 Then Mesi(N) = "Maggio"
If N = 6 Then Mesi(N) = "Giugno"
If N = 7 Then Mesi(N) = "Luglio"
If N = 8 Then Mesi(N) = "Agosto"
If N = 9 Then Mesi(N) = "Settembre"
If N = 10 Then Mesi(N) = "Ottobre"
If N = 11 Then Mesi(N) = "Novembre"
If N = 12 Then Mesi(N) = "Dicembre"
Next N
Z = Int(Anno / 19) '=105-102-102
A = Anno - Z * 19 '=13-12-14 'ANNO/19 A=resto
B = Int(Anno / 100) '=20-19-19 'ANNO/100 B=quoziente C=resto
C = Anno - B * 100 '=8-50-52
D = Int(B / 4) '=5-4-4 'B/4 Dquoziente E1=resto
E1 = B - D * 4 '=0-3-3
F = Int((B + 8) / 25) '=1-1-1 '(B+8)/25 F=quoziente -il resto non si utilizza
G = Int((B - F + 1) / 3) '=6-6-6 '(B-F+1)/3 G -il resto non si utilizza
Z = Int((19 * A) + B - D - G + 15) '=271-252-290 19A+B-D-G+15/30 - H-resto
Z1 = Int(Z / 30) '=9-8-9
H = (Z - Z1 * 30) '=1-12-20(19)
I = Int(C / 4) '=2-12-13 'C/4 I=quoziente K=resto
K = (C - I * 4) '=0-2-0
Z = 32 + (2 * E1) + (2 * I) - H - K '=35-48-42(43)
Z1 = Int(Z / 7) '=5-6-6 '(32+2E1+2I-H-K)/7 -il quoziente non si utilizza L=il resto
L = Z - (Z1 * 7) '=0-6-0(1)
M = A + 11 * H + 22 * L '=24-276-234(245) '(A+11H+22L)/451 =M -il resto non si utilizza
M = Int(M / 451) '=0-0-0
Z = H + L - 7 * M + 114 '=115-132-134(134)'H+L-7M+114/31 N=quoziente (Mese della Pasqua)P=resto(+1=giorno della Pasqua)
N = Int(Z / 31) '=3-4-4 Mese della Pasqua
P = (Z - N * 31) + 1 '23-9-10'giorno della Pasqua
''N=numero del mese P+1=giorno del mese in cui cade la Pasqua
GiornoDiPasqua = Str(P) + " " + Mesi(N)
'Fine algoritmo per stabilire la data della Pasqua============================================
'assegna i valori a Mesi e ad ogni Mese la quantità relativa di Giorni
For I = 1 To 12
If I = 1 Then Mesi(I) = "Gennaio" : Giorni(I) = 31
If I = 2 Then Mesi(I) = "Febbraio" : Giorni(I) = 28
If I = 3 Then Mesi(I) = "Marzo" : Giorni(I) = 31
If I = 4 Then Mesi(I) = "Aprile" : Giorni(I) = 30
If I = 5 Then Mesi(I) = "Maggio" : Giorni(I) = 31
If I = 6 Then Mesi(I) = "Giugno" : Giorni(I) = 30
If I = 7 Then Mesi(I) = "Luglio" : Giorni(I) = 31
If I = 8 Then Mesi(I) = "Agosto" : Giorni(I) = 31
If I = 9 Then Mesi(I) = "Settembre" : Giorni(I) = 30
If I = 10 Then Mesi(I) = "Ottobre" : Giorni(I) = 31
If I = 11 Then Mesi(I) = "Novembre" : Giorni(I) = 30
If I = 12 Then Mesi(I) = "Dicembre" : Giorni(I) = 31
Next I
'Memoriza in t(I) i nomi dei giorni del settimana
For I = 1 To 7
If I = 1 Then t(I) = "Sabato"
If I = 2 Then t(I) = "Domenica"
If I = 3 Then t(I) = "Lunedì"
If I = 4 Then t(I) = "Martedì"
If I = 5 Then t(I) = "Mercoledì"
If I = 6 Then t(I) = "Giovedì"
If I = 7 Then t(I) = "Venerdì"
Next I
'Memoriza in TotaleGiorni(Y) il totale dei giorni trascorsi fino alla fine di ogni mese
For Y = 1 To 12
If Y = 1 Then TotaleGiorni(Y) = 31
If Y = 2 Then TotaleGiorni(Y) = 59
If Y = 3 Then TotaleGiorni(Y) = 90
If Y = 4 Then TotaleGiorni(Y) = 120
If Y = 5 Then TotaleGiorni(Y) = 151
If Y = 6 Then TotaleGiorni(Y) = 181
If Y = 7 Then TotaleGiorni(Y) = 212
If Y = 8 Then TotaleGiorni(Y) = 243
If Y = 9 Then TotaleGiorni(Y) = 273
If Y = 10 Then TotaleGiorni(Y) = 304
If Y = 11 Then TotaleGiorni(Y) = 334
If Y = 12 Then TotaleGiorni(Y) = 365
Next Y
'Cerca in che giorno della settimana cadeva il 1° Ottobre dell'Anno precedente
' Nemorizza nelle vaiabili g, m, ed Anno,
'rispettivamente il giorno, il mese e l'Anno del'anno precedente
G = 1
M = 10
Anno = Anno
'X= sarà uguale all'anno digitato
X = Anno
'Y sarà il numero del mese precdente a quello digitato
Y = M - 1
'Aggiunge ai giorni trascorsi fino al mese precedente, i giorni del mese digitato
GiorniTrascorsi = TotaleGiorni(Y) + G
'============================================================================
'Stabilisce se l'anno da costruire è bisestile
If Int(X / 4 * 4 = X) And M >= 2 Then
GiorniTrascorsi = GiorniTrascorsi + 1
End If
'============================================================================
A = Anno - 1
q = Int(A / 4)
B = Int(A / 100)
D = Int(A / 400)
X = Anno
X = X + q
X = X - B
X = X + D
X = X + GiorniTrascorsi
A = Int(X / 7)
A = A * 7
X = X - A - 1
'Fine ricerca in che giorno della settimana cadeva il 1° Ottobre dell'Anno precedente
'_____________________________________________________________________________________
'Qui registra gli ultimi 3 mesi dell'anno precedente
Anno = Val(Anno - 1)
'Crea il percorso per arrivare alla Directory
'che chiamerà con il nome dell'anno del quale formare il calendario
Dim Percorso As String = "C:\" & Anno
Y = X '(giorno della sttimana del 1° Ottobre dell'Anno Precedente
'Crea la stringa “Mese”
For I = 10 To 12
Mese = Mesi(I)
'Crea la stringa “Giorno”
For X = 1 To Giorni(I)
'Crea la stringa “Giorno della settimana”
Day = t(Y)
'Nome che darà alle cartelle che conterranno i file .txt
'e che scriverà all'interno dello stesso file .txt
Giorno = Str(X) + " " + Mese
'Crea il percorso che deve fare per creare le cartelle e sottocartelle
'ognuna con il proprio nome
Dim PercorsoFile As String = ""
PercorsoFile = "C:\" & Anno & "\" & Mese & " \" & Giorno
System.IO.Directory.CreateDirectory(PercorsoFile)
'È possibile utilizzare Metodo My.Computer.FileSystem.WriteAllText per scrivere del testo all'interno dei file.
'Se il file specificato non esiste, viene creato automaticamente.
My.Computer.FileSystem.WriteAllText(PercorsoFile & "\" & Giorno & ".txt", Giorno, True)
If Mese = "Novembre" And X = 1 Then Stringa = "Tutti i Santi: Festivo"
If Mese = "Dicembre" And X = 8 Then Stringa = "Immacolata Concezione: Festivo"
If Mese = "Dicembre" And X = 25 Then Stringa = "Nascita del Signore: Festivo"
If Mese = "Dicembre" And X = 26 Then Stringa = "Santo Stefano: Festivo"
If Day = "Domenica" Then Stringa = "Festivo"
'È possibile utilizzare Metodo My.Computer.FileSystem.WriteAllText per scrivere del testo all'interno dei file.
'Se il file specificato non esiste, viene creato automaticamente.
My.Computer.FileSystem.WriteAllText(PercorsoFile & "\" & Giorno & ".txt", " " + Day + Chr(13), True)
If Stringa = "" Then GoTo Salta1
My.Computer.FileSystem.WriteAllText(PercorsoFile & "\" & Giorno & ".txt", Stringa + Chr(13), True)
Salta1:
Y = Y + 1
If Y = 8 Then Y = 1
Stringa = ""
Next X
Next I
'_________________________________________________________________________________________________________
Anno = Anno + 1
'Crea il percorso per arrivare alla Directory
'che chiamerà con il nome dell'anno del quale formare il calendario
'Dim Percorso As String = "C:\" & Anno
'Crea la stringa “Mese”
For I = 1 To 12
Mese = Mesi(I)
'Crea la stringa “Giorno”
For X = 1 To Giorni(I)
'Crea la stringa “Giorno della settimana”
'Nome che darà alle cartelle che conterranno i file .txt
'e che scriverà all'interno dello stesso file .txt
'Crea il percorso che deve fare per creare le cartelle e sottocartelle
'ognuna con il proprio nome
Day = " " + t(Y)
Giorno = Str(X) + " " + Mese
Dim PercorsoFile As String = ""
PercorsoFile = "C:\" & Anno & "\" & Mese & "\" & Giorno
System.IO.Directory.CreateDirectory(PercorsoFile)
Giorno = Str(X) + " " + Mese
'È possibile utilizzare Metodo My.Computer.FileSystem.WriteAllText per scrivere del testo all'interno dei file.
'Se il file specificato non esiste, viene creato automaticamente.
My.Computer.FileSystem.WriteAllText(PercorsoFile & "\" & Giorno & ".txt", Giorno, True)
If I = MeseDiInizioFerie And X >= PartenzaFerie Then Stringa = "Chiuso per Ferie"
If I = MeseDiFineFerie And X <= TermineFerie Then Stringa = "Chiuso per Ferie"
If Mese = "Gennaio" And X = 1 Then Stringa = "Maria, Madre di Dio: Festivo"
If Mese = "Gennaio" And X = 6 Then Stringa = "Epifania di Nostro Signore: Festivo"
If Mese = Mesi(N) And X = P Then Stringa = "Pasqua di Resurrezione: Festivo"
If Mese = Mesi(N) And X = P + 1 Then Stringa = "Lunedì dell'Angelo (Pasquetta): Festivo"
If Mese = "Maggio" And X = 1 Then Stringa = "San Giuseppe artigiano/Festa del Lavoro: Festivo"
If Mese = "Giugno" And X = 2 Then Stringa = "Festa della Repubblica: Festivo"
If Mese = "Giugno" And X = 29 Then Stringa = "SS. Pietro e Paolo: Festivo"
If Mese = "Agosto" And X = 15 Then Stringa = Stringa + Chr(13) + "Assunzione della Santa Vergine: Festivo"
If Mese = "Novembre" And X = 1 Then Stringa = "Tutti i Santi: Festivo"
If Mese = "Dicembre" And X = 8 Then Stringa = "Immacolata Concezione: Festivo"
If Mese = "Dicembre" And X = 25 Then Stringa = "Nascita del Signore: Festivo"
If Mese = "Dicembre" And X = 26 Then Stringa = "Santo Stefano: Festivo"
If Day = "Domenica" Then Stringa = "Festivo"
'È possibile utilizzare Metodo My.Computer.FileSystem.WriteAllText per scrivere del testo all'interno dei file.
'Se il file specificato non esiste, viene creato automaticamente.
My.Computer.FileSystem.WriteAllText(PercorsoFile & "\" & Giorno & ".txt", " " + Day + Chr(13), True)
If Stringa = "" Then GoTo Salta2
My.Computer.FileSystem.WriteAllText(PercorsoFile & "\" & Giorno & ".txt", Stringa + Chr(13), True)
Salta2:
Y = Y + 1
If Y = 8 Then Y = 1
Stringa = ""
Next X
Next I
Me.Close()
End Sub