CLS
LOCATE 12, 25: PRINT "Tmm a fejemet..."
hely = 1
DIM nev$(16)
DIM targy$(11)
DIM jegy(16, 11, 10)
DIM szin(16, 16)
DIM rovtargy$(11)

FOR i = 11 TO 14
KEY(i) ON
NEXT i

olvas:

OPEN "jegyek.dat" FOR INPUT AS #1
FOR i = 1 TO 16
FOR j = 1 TO 11
FOR k = 1 TO 10
INPUT #1, jegy(i, j, k)
NEXT k
NEXT j
NEXT i
CLOSE #1


nev$(1) = "Benis Attila"
nev$(2) = "Csernok Mria"
nev$(3) = "Egri Ilona"
nev$(4) = "Gl Rbert"
nev$(5) = "Hicsk Eszter"
nev$(6) = "Horvth Zsfia"
nev$(7) = "Horvth Zsolt"
nev$(8) = "Krsz Pter"
nev$(9) = "Kovcs Krisztina"
nev$(10) = "Lszl Istvn"
nev$(11) = "Maulis dm"
nev$(12) = "Molnr Csaba"
nev$(13) = "Nagy Mrk"
nev$(14) = "Nmeth Bence"
nev$(15) = "Sndor Gyula"
nev$(16) = "Urbn Mikls"

adatok:

ho$(1) = "Szeptember"
ho$(2) = "Oktber"
ho$(3) = "November"
ho$(4) = "December"
ho$(5) = "Janur"
ho$(6) = "Februr"
ho$(7) = "Mrcius"
ho$(8) = "prilis"
ho$(9) = "Mjus"
ho$(10) = "Jnius"

targy$(1) = "Algebra"
targy$(2) = "Analzis"
targy$(3) = "Ks.fiz."
targy$(4) = "Mat.kieg."
targy$(5) = "Vges matek"
targy$(6) = "Fizika labor"
targy$(7) = "Szm.tech."
targy$(8) = "Idegen nyelv"
targy$(9) = "Trs.tudomny"
targy$(10) = "Testnevels"
targy$(11) = "Msvalami"

rovtargy$(1) = "Alg"
rovtargy$(2) = "Ana"
rovtargy$(3) = "Ks"
rovtargy$(4) = "MKg"
rovtargy$(5) = "VMt"
rovtargy$(6) = "FLb"
rovtargy$(7) = "Szt"
rovtargy$(8) = "INy"
rovtargy$(9) = "Tsd"
rovtargy$(10) = "Tes"
rovtargy$(11) = "Ms"

cim$(1) = "Egy nebul viselt dolgai"
cim$(2) = "Egy tantrgy ltal okozott krok"
cim$(3) = "Egy hnap termse"
teto$(1) = "͵"
tabl$(1) = "                                         "
alja$(1) = ";"
teto$(2) = "͵"
tabl$(2) = "                                 "
alja$(2) = ";"

mirevagy:
CLS
LOCATE 2, 25: PRINT "Mire vagy kvncsi?"
LOCATE 20, 10: PRINT "<Esc> gomb most: ments, mshol: visszalps."
FOR i = 1 TO 3
IF i = 1 THEN COLOR 0, 7 ELSE COLOR 7, 0
GOSUB cimkiiras
NEXT i

hely = 1
dd: a$ = INKEY$
ON KEY(11) GOSUB fel0
ON KEY(14) GOSUB le0
IF a$ = CHR$(13) THEN kivantadat = hely: GOTO kifele
IF a$ = CHR$(27) THEN GOTO ir
GOTO dd
fel0:
regihely = hely: hely = hely - 1
IF hely = 0 THEN hely = 3
i = regihely: COLOR 7, 0: GOSUB cimkiiras
i = hely: COLOR 0, 7: GOSUB cimkiiras
RETURN

le0:
regihely = hely: hely = hely + 1
IF hely = 4 THEN hely = 1
i = regihely: COLOR 7, 0: GOSUB cimkiiras
i = hely: COLOR 0, 7: GOSUB cimkiiras
RETURN

cimkiiras:

LOCATE 3 * i + 4, 20: PRINT cim$(i)
RETURN

kifele:

COLOR 7, 0
SELECT CASE kivantadat
CASE IS = 1
   GOTO nev
CASE IS = 2
   GOTO targy
CASE IS = 3
   GOTO ho
END SELECT

nev:
CLS
FOR i = 1 TO 16: FOR j = 1 TO 10
szin(i, j) = 7
NEXT j: NEXT i
hely = 1
FOR i = 1 TO 16
GOSUB kiir1
NEXT i
i = hely: COLOR 0, 7: GOSUB kiir1
merre1:
a$ = INKEY$

ON KEY(11) GOSUB fel1
ON KEY(12) GOSUB balra1
ON KEY(13) GOSUB jobbra1
ON KEY(14) GOSUB le1
IF a$ = CHR$(13) THEN mitakarsz = hely: GOTO tablazat1
IF a$ = CHR$(27) THEN COLOR 7, 0: GOTO mirevagy
GOTO merre1
fel1:
regihely = hely: hely = hely - 1
IF hely = 0 THEN hely = 16
i = regihely: COLOR 7, 0: GOSUB kiir1
i = hely: COLOR 0, 7: GOSUB kiir1
RETURN

balra1:
regihely = hely: hely = hely - 8
IF hely < 1 THEN hely = hely + 16
i = regihely: COLOR 7, 0: GOSUB kiir1
i = hely: COLOR 0, 7: GOSUB kiir1
RETURN

jobbra1:
regihely = hely: hely = hely + 8
IF hely > 16 THEN hely = hely - 16
i = regihely: COLOR 7, 0: GOSUB kiir1
i = hely: COLOR 0, 7: GOSUB kiir1
RETURN

le1:
regihely = hely: hely = hely + 1
IF hely = 17 THEN hely = 1
i = regihely: COLOR 7, 0: GOSUB kiir1
i = hely: COLOR 0, 7: GOSUB kiir1
RETURN

GOTO merre1

kiir1:
LOCATE 2 * (i - INT((i - 1) / 8) * 8 - 1) + 3, INT((i - 1) / 8) * 30 + 15: PRINT nev$(i)
RETURN


targy:
FOR i = 1 TO 16: FOR j = 1 TO 10
szin(i, j) = 7
NEXT j: NEXT i
CLS
hely = 1
FOR i = 1 TO 11
GOSUB kiir2
NEXT i
i = hely: COLOR 0, 7: GOSUB kiir2
merre2:
a$ = INKEY$
ON KEY(11) GOSUB fel2
ON KEY(14) GOSUB le2
IF a$ = CHR$(13) THEN mitakarsz = hely: GOTO tablazat2
IF a$ = CHR$(27) THEN COLOR 7, 0: GOTO mirevagy
GOTO merre2
fel2:
regihely = hely: hely = hely - 1
IF hely = 0 THEN hely = 11
i = regihely: COLOR 7, 0: GOSUB kiir2
i = hely: COLOR 0, 7: GOSUB kiir2
RETURN

le2:
regihely = hely: hely = hely + 1
IF hely = 12 THEN hely = 1
i = regihely: COLOR 7, 0: GOSUB kiir2
i = hely: COLOR 0, 7: GOSUB kiir2
RETURN

GOTO merre2

kiir2:
LOCATE i + 3, 25: PRINT targy$(i)
RETURN


ho:
FOR i = 1 TO 16: FOR j = 1 TO 11
szin(i, j) = 7
NEXT j: NEXT i
CLS
hely = 1
FOR i = 1 TO 10
GOSUB kiir3
NEXT i
i = hely: COLOR 0, 7: GOSUB kiir3
merre3:
a$ = INKEY$
ON KEY(11) GOSUB fel3
ON KEY(14) GOSUB le3
IF a$ = CHR$(13) THEN mitakarsz = hely: GOTO tablazat3
IF a$ = CHR$(27) THEN COLOR 7, 0: GOTO mirevagy
GOTO merre3
fel3:
regihely = hely: hely = hely - 1
IF hely = 0 THEN hely = 10
i = regihely: COLOR 7, 0: GOSUB kiir3
i = hely: COLOR 0, 7: GOSUB kiir3
RETURN

le3:
regihely = hely: hely = hely + 1
IF hely = 11 THEN hely = 1
i = regihely: COLOR 7, 0: GOSUB kiir3
i = hely: COLOR 0, 7: GOSUB kiir3
RETURN

GOTO merre3

kiir3:
LOCATE i + 5, 30: PRINT ho$(i)
RETURN


tablazat1:
felulrol = 6: balrol = 5
COLOR 7, 0
CLS
LOCATE 1, 30: PRINT nev$(mitakarsz)
LOCATE 3, 18: PRINT ""
FOR j = 1 TO 10
LOCATE 3, 15 + 4 * j: PRINT LEFT$(ho$(j), 3); ""
NEXT j
LOCATE 3, 62: PRINT "tlag   "
LOCATE 4, 18: PRINT teto$(1)
FOR i = 1 TO 11
LOCATE i + 4, 1: PRINT targy$(i): LOCATE i + 4, 18: PRINT tabl$(1)
NEXT i
LOCATE 16, 18: PRINT alja$(1)
FOR i = 1 TO 11
FOR j = 1 TO 10
GOSUB jegykiiras1
szam = jegy(mitakarsz, i, j)
IF szam > 0 THEN osszeg = osszeg + szam: szamlalo = szamlalo + 1
NEXT j
IF szamlalo > 0 THEN GOSUB atlag1
osszeg = 0: szamlalo = 0
NEXT i

szerkesztes1:

COLOR 0, 7
i = 6: j = 5
GOSUB jegykiiras1
GOSUB targykiiras
GOSUB hokiiras


ee: a$ = INKEY$
u = VAL(a$)
IF u < 6 AND u > 0 AND u <> jegy(mitakarsz, felulrol, balrol) THEN GOTO atiras1

ON KEY(11) GOSUB fel4
ON KEY(12) GOSUB balra4
ON KEY(13) GOSUB jobbra4
ON KEY(14) GOSUB le4
IF a$ = CHR$(27) THEN COLOR 7, 0: GOTO nev
GOTO ee

fel4:

regifelul = felulrol
felulrol = felulrol - 1
IF felulrol = 0 THEN felulrol = 11

i = regifelul: j = balrol
COLOR 7, 0
lep1:
GOSUB targykiiras
COLOR szin(i, j) - 7 * megvan, megvan * 7

GOSUB jegykiiras1
IF megvan = 1 THEN megvan = 0: RETURN
i = felulrol
megvan = 1
COLOR 0, 7: GOTO lep1

balra4:

regibal = balrol
balrol = balrol - 1
IF balrol = 0 THEN balrol = 10

COLOR 7, 0
i = felulrol: j = regibal
lep2:
GOSUB hokiiras
COLOR szin(i, j) - 7 * megvan, megvan * 7
GOSUB jegykiiras1
IF megvan = 1 THEN megvan = 0: RETURN
j = balrol
megvan = 1
COLOR 0, 7: GOTO lep2

jobbra4:

regibal = balrol
balrol = balrol + 1
IF balrol = 11 THEN balrol = 1

COLOR 7, 0
i = felulrol: j = regibal
lep3:
GOSUB hokiiras
COLOR szin(i, j) - 7 * megvan, megvan * 7
GOSUB jegykiiras1
IF megvan = 1 THEN megvan = 0: RETURN
j = balrol
megvan = 1
COLOR 0, 7: GOTO lep3

le4:

regifelul = felulrol
felulrol = felulrol + 1
IF felulrol = 12 THEN felulrol = 1

COLOR 7, 0
i = regifelul: j = balrol
lep4:
GOSUB targykiiras
COLOR szin(i, j) - 7 * megvan, megvan * 7
GOSUB jegykiiras1
IF megvan = 1 THEN megvan = 0: RETURN
i = felulrol
megvan = 1
COLOR 0, 7: GOTO lep4

atiras1:
i = felulrol: j = balrol
jegy(mitakarsz, i, j) = u
COLOR 12, 7: GOSUB jegykiiras1
szin(i, j) = 12
FOR k = 1 TO 10
szam = jegy(mitakarsz, i, k)
osszeg = osszeg + szam
IF szam > 0 THEN szamlalo = szamlalo + 1
NEXT k
COLOR 7, 0: GOSUB atlag1
osszeg = 0: szamlalo = 0
GOTO ee

atlag1:
atlag = osszeg / szamlalo
y = INT(100 * atlag) / 100
IF atlag - y <= .005 THEN atlag = y ELSE atlag = y + .01

LOCATE i + 4, 60: PRINT atlag; "   "
RETURN


tablazat2:
felulrol = 8: balrol = 5
COLOR 7, 0
CLS
LOCATE 1, 35: PRINT targy$(mitakarsz)
LOCATE 3, 18: PRINT ""
FOR j = 1 TO 10
LOCATE 3, 15 + 4 * j: PRINT LEFT$(ho$(j), 3); ""
NEXT j
LOCATE 3, 62: PRINT "tlag   "
LOCATE 4, 18: PRINT teto$(1)
FOR i = 1 TO 16
LOCATE i + 4, 1: PRINT nev$(i): LOCATE i + 4, 18: PRINT tabl$(1)
NEXT i
LOCATE 21, 18: PRINT alja$(1)
FOR i = 1 TO 16
FOR j = 1 TO 10
GOSUB jegykiiras2
szam = jegy(i, mitakarsz, j)
IF szam > 0 THEN osszeg = osszeg + szam: szamlalo = szamlalo + 1
NEXT j
IF szamlalo > 0 THEN GOSUB atlag1
osszeg = 0: szamlalo = 0
NEXT i

szerkesztes2:

COLOR 0, 7
i = 8: j = 5
GOSUB jegykiiras2
GOSUB nevkiiras
GOSUB hokiiras


ff: a$ = INKEY$
u = VAL(a$)
IF u < 6 AND u > 0 AND u <> jegy(felulrol, mitakarsz, balrol) THEN GOTO atiras2

ON KEY(11) GOSUB fel5
ON KEY(12) GOSUB balra5
ON KEY(13) GOSUB jobbra5
ON KEY(14) GOSUB le5
IF a$ = CHR$(27) THEN COLOR 7, 0: GOTO targy
GOTO ff

fel5:

regifelul = felulrol
felulrol = felulrol - 1
IF felulrol = 0 THEN felulrol = 16

i = regifelul: j = balrol
COLOR 7, 0
lep5:
GOSUB nevkiiras
COLOR szin(i, j) - 7 * megvan, megvan * 7

GOSUB jegykiiras2
IF megvan = 1 THEN megvan = 0: RETURN
i = felulrol
megvan = 1
COLOR 0, 7: GOTO lep5

balra5:

regibal = balrol
balrol = balrol - 1
IF balrol = 0 THEN balrol = 10

COLOR 7, 0
i = felulrol: j = regibal
lep6:
GOSUB hokiiras
COLOR szin(i, j) - 7 * megvan, megvan * 7
GOSUB jegykiiras2
IF megvan = 1 THEN megvan = 0: RETURN
j = balrol
megvan = 1
COLOR 0, 7: GOTO lep6

jobbra5:

regibal = balrol
balrol = balrol + 1
IF balrol = 11 THEN balrol = 1

COLOR 7, 0
i = felulrol: j = regibal
lep7:
GOSUB hokiiras
COLOR szin(i, j) - 7 * megvan, megvan * 7
GOSUB jegykiiras2
IF megvan = 1 THEN megvan = 0: RETURN
j = balrol
megvan = 1
COLOR 0, 7: GOTO lep7

le5:

regifelul = felulrol
felulrol = felulrol + 1
IF felulrol = 17 THEN felulrol = 1

COLOR 7, 0
i = regifelul: j = balrol
lep8:
GOSUB nevkiiras
COLOR szin(i, j) - 7 * megvan, megvan * 7
GOSUB jegykiiras2
IF megvan = 1 THEN megvan = 0: RETURN
i = felulrol
megvan = 1
COLOR 0, 7: GOTO lep8

atiras2:
i = felulrol: j = balrol
jegy(i, mitakarsz, j) = u
COLOR 12, 7: GOSUB jegykiiras2
szin(i, j) = 12
FOR k = 1 TO 10
szam = jegy(i, mitakarsz, k)
osszeg = osszeg + szam
IF szam > 0 THEN szamlalo = szamlalo + 1
NEXT k
COLOR 7, 0: GOSUB atlag1
osszeg = 0: szamlalo = 0
GOTO ff

tablazat3:

felulrol = 8: balrol = 6
COLOR 7, 0
CLS
LOCATE 1, 30: PRINT ho$(mitakarsz)
LOCATE 3, 18: PRINT ""
FOR j = 1 TO 11
LOCATE 3, 4 * j + 14: PRINT ""
GOSUB rovtargykiiras
NEXT j
LOCATE 3, 62: PRINT ""
LOCATE 4, 18: PRINT teto$(2)
FOR i = 1 TO 16
LOCATE i + 4, 1: PRINT nev$(i): LOCATE i + 4, 18: PRINT tabl$(2)
NEXT i
LOCATE 21, 18: PRINT teto$(2)
LOCATE 22, 18: PRINT tabl$(2)
LOCATE 23, 18: PRINT alja$(2)
FOR j = 1 TO 11
FOR i = 1 TO 16
GOSUB jegykiiras3
szam = jegy(i, j, mitakarsz)
IF szam > 0 THEN osszeg = osszeg + szam: szamlalo = szamlalo + 1
NEXT i
IF szamlalo > 0 THEN GOSUB atlag3
osszeg = 0: szamlalo = 0
NEXT j
GOTO szerkesztes3

atlag3:
atlag = osszeg / szamlalo
y = INT(10 * atlag) / 10
IF atlag - y <= .05 THEN atlag = y ELSE atlag = y + .1
s$ = STR$(atlag)
atlag$ = RIGHT$(s$, LEN(s$) - 1)
IF INT(atlag) = atlag THEN atlag$ = " " + atlag$ + " "
LOCATE 22, 15 + 4 * j: PRINT atlag$
RETURN

szerkesztes3:

COLOR 0, 7
i = 8: j = 6
GOSUB jegykiiras3
GOSUB nevkiiras
GOSUB rovtargykiiras

gg: a$ = INKEY$
u = VAL(a$)
IF u < 6 AND u > 0 AND u <> jegy(felulrol, balrol, mitakarsz) THEN GOTO atiras3

ON KEY(11) GOSUB fel6
ON KEY(12) GOSUB balra6
ON KEY(13) GOSUB jobbra6
ON KEY(14) GOSUB le6
IF a$ = CHR$(27) THEN COLOR 7, 0: GOTO ho
GOTO gg

fel6:

regifelul = felulrol
felulrol = felulrol - 1
IF felulrol = 0 THEN felulrol = 16

i = regifelul: j = balrol
COLOR 7, 0
lep9:
GOSUB nevkiiras
COLOR szin(i, j) - 7 * megvan, megvan * 7

GOSUB jegykiiras3
IF megvan = 1 THEN megvan = 0: RETURN
i = felulrol
megvan = 1
COLOR 0, 7: GOTO lep9

balra6:

regibal = balrol
balrol = balrol - 1
IF balrol = 0 THEN balrol = 11

COLOR 7, 0
i = felulrol: j = regibal
lep10:
GOSUB rovtargykiiras
COLOR szin(i, j) - 7 * megvan, megvan * 7
GOSUB jegykiiras3
IF megvan = 1 THEN megvan = 0: RETURN
j = balrol
megvan = 1
COLOR 0, 7: GOTO lep10

jobbra6:

regibal = balrol
balrol = balrol + 1
IF balrol = 12 THEN balrol = 1

COLOR 7, 0
i = felulrol: j = regibal
lep11:
GOSUB rovtargykiiras
COLOR szin(i, j) - 7 * megvan, megvan * 7
GOSUB jegykiiras3
IF megvan = 1 THEN megvan = 0: RETURN
j = balrol
megvan = 1
COLOR 0, 7: GOTO lep11

le6:

regifelul = felulrol
felulrol = felulrol + 1
IF felulrol = 17 THEN felulrol = 1

COLOR 7, 0
i = regifelul: j = balrol
lep12:
GOSUB nevkiiras
COLOR szin(i, j) - 7 * megvan, megvan * 7
GOSUB jegykiiras3
IF megvan = 1 THEN megvan = 0: RETURN
i = felulrol
megvan = 1
COLOR 0, 7: GOTO lep12

atiras3:
i = felulrol: j = balrol
jegy(i, j, mitakarsz) = u
COLOR 12, 7: GOSUB jegykiiras3
szin(i, j) = 12
FOR k = 1 TO 16
szam = jegy(k, j, mitakarsz)
osszeg = osszeg + szam
IF szam > 0 THEN szamlalo = szamlalo + 1
NEXT k
COLOR 7, 0: GOSUB atlag3
osszeg = 0: szamlalo = 0
GOTO gg


jegykiiras1:
LOCATE i + 4, 4 * j + 16: PRINT RIGHT$(STR$(jegy(mitakarsz, i, j)), 1)
RETURN

jegykiiras2:
LOCATE i + 4, 4 * j + 16: PRINT RIGHT$(STR$(jegy(i, mitakarsz, j)), 1)
RETURN

jegykiiras3:
LOCATE i + 4, 4 * j + 16: PRINT RIGHT$(STR$(jegy(i, j, mitakarsz)), 1)
RETURN

nevkiiras:
LOCATE i + 4, 1: PRINT nev$(i)
RETURN

targykiiras:
LOCATE i + 4, 1: PRINT targy$(i)
RETURN

rovtargykiiras:
LOCATE 3, 15 + 4 * j: PRINT rovtargy$(j)
RETURN

hokiiras:
LOCATE 3, 15 + 4 * j: PRINT LEFT$(ho$(j), 3)
RETURN


ir:

OPEN "jegyek.dat" FOR OUTPUT AS #2
FOR i = 1 TO 16
FOR j = 1 TO 11
FOR k = 1 TO 10
WRITE #2, jegy(i, j, k)
NEXT k
NEXT j
NEXT i
CLOSE #2

FOR i = 11 TO 14
KEY(i) OFF
NEXT i

END

