programiranje v pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/maturitetna_seminarska... ·...
TRANSCRIPT
Zavod svetega Stanislava
Škofijska klasična gimnazija
Programiranje v Pythonu
Osebna redovalnica
Maturitetna seminarska naloga iz Informatike
Kandidat: Jan Bitežnik
Mentorica: Helena Starc Grlj
Tržič, april 2018
Jan Bitežnik Osebna redovalnica Informatika
2
Povzetek
V svoji maturitetni seminarski nalogi sem napisal program, s katerim lahko vsak
učenec, dijak ali študent pomaga pri beleženju ocen. Program je pravzaprav
elektronska redovalnica, ki ponuja možnost vnosa ocen in ogleda redovalnice, pri
čemer uporabniku pri slednjem poda še povprečno oceno pri posameznem predmetu
in skupno povprečno oceno. Končni izdelek je bil napisan v programskem jeziku
Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval.
Abstract
In my project work, I wrote a program that helps each student with usual everyday
problem – keeping his own gradebook. The program is in fact an electronic gradebook
that offers the possibility of entering the grades and viewing the gradebook in which,
besides viewing the grades, also gives the user an average grade for each subject and
a total average grade. The final product was written in the Python programming
language, but I also graphically designed it using the Tkinter tool.
Ključne besede
Programiranje, Python, Tkinter, šola, redovalnica
Jan Bitežnik Osebna redovalnica Informatika
3
Kazalo
Povzetek ..................................................................................................................... 2
Abstract ...................................................................................................................... 2
Ključne besede ........................................................................................................... 2
Kazalo......................................................................................................................... 3
Stvarno kazalo ............................................................................................................ 4
1 Uvod ..................................................................................................................... 5
2 Teoretični del naloge ............................................................................................ 6
2.1 Prvi del elektronske redovalnice .................................................................... 6
2.2 Drugi del elektronske redovalnice.................................................................. 6
2.3 Tretji del elektronske redovalnice .................................................................. 7
2.4 Diagram poteka ............................................................................................. 8
2.5 Uporabljeni programi ................................................................................... 11
3 Praktični del naloge ............................................................................................ 12
3.1 Posnetki zaslona med delovanjem programa .............................................. 17
4 Sklep .................................................................................................................. 19
4.1 Možne izboljšave ......................................................................................... 19
4.2 Časovna analiza dela .................................................................................. 20
5 Viri in literatura ................................................................................................... 21
Kazalo tabel
Tabela 1: Uporabljena strojna in programska oprema ................................................ 5
Tabela 2: Predviden izgled izpisa programa za elektronsko redovalnico za dijaka
(oziroma dijakinjo) drugega letnika ............................................................................. 6
Tabela 3: Predstavitev programa s priloženimi komentarji ....................................... 12
Kazalo slik
Slika 1: Izbirni meni, ki se prikaže ob zagonu programa ........................................... 17
Slika 2: Prikaz vmesnika za vnos ocen ob vnosu števila 1 ....................................... 17
Slika 4: Izpis ocen v redovalnici ob vnosu števila 2 .................................................. 18
Kazalo grafov
Graf 1: Časovna porazdelitev dela maturitetne seminarske naloge .......................... 20
Jan Bitežnik Osebna redovalnica Informatika
4
Stvarno kazalo
ocena, 5, 6, 12 Programiranje, 1, 2 programski jezik, 11 Python, 2, 5, 12 računalniku, 5
redovalnica, 1, 2, 5, 6, 7, 17 šola, 2, 5 tabela, 6, 12 Tkinter, 2, 5, 17 vnos, 6, 12, 16, 17
Jan Bitežnik Osebna redovalnica Informatika
5
1 Uvod
Ljudje vsak dan stremimo k temu, da si olajšamo kakšno dejavnost, ki jo opravljamo
redno in nam vzame veliko časa. Eden izmed načinov, da si kaj olajšamo, je zagotovo
pisanje programa na računalniku.
Za svojo dejavnost, ki sem jo želel olajšati, kolikor mi je znanje programiranja
dovoljevalo, sem si izbral beleženje ocen. Tako sem se odločil narediti program za
elektronsko osebno redovalnico. Ker sem v programiranju še začetnik, bo redovalnica
zelo preprosta – ponujala bo možnost vnosa ocen in ogleda redovalnice, v kateri bo
izračunana še povprečna ocena pri posameznem predmetu in skupna povprečna
ocena.
Preprosta redovalnica hkrati pomeni še ogromno možnosti za izboljšave. Da jih ne bom
navajal dvakrat, sem jih podrobneje obravnaval v sklepu. Zagotovo pa je cilj, če mi bo
znanje programiranja dovoljevalo, nekoč sedanji izdelek nadgraditi, vključiti možne
izboljšave in ga ponuditi učencem, dijakom ali študentom.
Ti so tudi ciljna skupina. Šola je neizogiben del našega in njihovega vsakdana, v njen
sestavni del pa spadajo tudi ocene, ki so – na žalost – tudi edina stvar, ki dandanes v
šoli šteje. A prepirov glede (ne)pomembnosti znanja v šolah je že dovolj, zato se bom
ob sprijaznjenju, da se ocenam pač ne da izogniti, osredotočil na reševanje problema,
s katerim se sreča vsak izmed navedene ciljne skupine, če mu šola (in z njo znanje)
pomeni vsaj nekaj.
Problem je torej čas, ki ga učenec/dijak/študent porabi z vpisovanjem ocen in še
pomembneje – kasnejšim računanjem povprečja. Vnos ocene zahteva nekaj časa, ki
ga zaenkrat vendarle še ne moremo prihraniti, lahko pa ga pri računanju povprečne
ocene in predvidene končne ocene. Program bo tako uporabniku (ob sprotnem
vnašanju ocen) sposoben ponuditi ogled ocen, skupaj z izračunano povprečno in
končno oceno.
Ker sem zaenkrat seznanjen zgolj s programskih jezikom Python, ga bom uporabil za
svoj končni izdelek. Da pa redovalnica oziroma celotna izdelava ne bo tako preprosta,
sem se odločil svoj program še grafično oblikovati z orodjem Tkinter.
Tabela 1: Uporabljena strojna in programska oprema
Strojna oprema Programska oprema
Intel Core i5-7200U Windows 10 Home
RAM 8 GB DDR4 Python 3.6.4
NVIDIA GeForce 940MX
SSD 256 GB + HDD 1024 GB
Jan Bitežnik Osebna redovalnica Informatika
6
2 Teoretični del naloge
Prava redovalnica izgleda kot tabela, v kateri so zapisani predmeti, zraven pa ocene.
Elektronski redovalnici sem se odločil dodati še povprečne ocene. Tako bo elektronska
redovalnica zgrajena iz treh delov.
2.1 Prvi del elektronske redovalnice
Če uporabnik izbere prvo možnost, ga bo program najprej vprašal po želenem številu
ocen, ki bi jih želel vnesti. Nato ga bo vprašal po predmetu, h kateremu bi dodal oceno
in po oceni tolikokrat, kolikor je znašal prejšnji vnos (želeno število ocen, ki bi jih želel
vnesti). Število predmetov je omejeno, prilagojeno pa za predmetnik Škofijske klasične
gimnazije. Vsak predmet je identificiran s tremi črkami (na primer: matematika – mat).
Celoten seznam predmetov je dostopen spodaj. Če torej uporabnik najprej vnese 'mat',
nato pa '4', se bo v seznam 'mat' vpisala ocena 4.
Predmetov, ki bodo vključeni v redovalnici, so: vera in kultura, slovenščina,
matematika, angleščina, latinščina s klasično kulturo, nemščina, francoščina,
španščina, ruščina, zgodovina, šport, umetnostna zgodovina, informatika, geografija,
biologija, kemija, fizika, psihologija, filozofija, glasbena umetnost, projektna naloga in
grščina.
2.2 Drugi del elektronske redovalnice
V primeru izbire druge možnosti se bo uporabniku izpisala redovalnica. Primer za
dijaka (oziroma dijakinjo) drugega letnika na koncu šolskega leta brez grščine, drugi
tuji jezik pa je francoščina:
Tabela 2: Predviden izgled izpisa programa za elektronsko redovalnico za dijaka (oziroma dijakinjo) drugega letnika
PREDMET OCENE POVPREČJE
Vera in kultura 5 4 5 5 4.75
Slovenščina 3 5 4 5 4 3 4.00
Matematika 3 3 4 2 3 2 3 4 3.00
Angleščina 5 5 4 4 5 3 4 4.29
Latinščina s klasično kulturo
2 2 3 4 3 2.80
Nemščina / /
Francoščina 3 4 3 4 3.50
Španščina / /
Ruščina / /
Zgodovina 5 5 4 5 4.75
Šport 5 5 5 5 5.00
Umetnostna zgodovina 3 2 3 2.67
Informatika / /
Geografija 5 4 3 3 3 3.60
Jan Bitežnik Osebna redovalnica Informatika
7
Biologija 3 3 2 2 3 3 2.67
Kemija 5 3 5 5 4.50
Fizika 5 2 2 2 5 3.20
Psihologija / /
Filozofija / /
Glasbena umetnost / /
Projektna naloga 5 5 5 5.00
Grščina / /
SKUPAJ 3.84
2.3 Tretji del elektronske redovalnice
V primeru izbire tretje možnosti pa se elektronska redovalnica zapre.
Jan Bitežnik Osebna redovalnica Informatika
8
2.4 Diagram poteka
Za lažje razumevanje si lahko ogledate še diagram poteka.
START
vik [ ]
slo [ ]
fra [ ]
nem [ ]
lat [ ]
ang [ ]
mat [ ]
fra [ ]
inf [ ]
uzg [ ]
spo [ ]
zgo [ ]
rus [ ]
spa [ ]
fiz [ ]
kem [ ]
bio [ ]
geo [ ]
Jan Bitežnik Osebna redovalnica Informatika
9
DA
ocena 0
predmet 0
skup [ ]
izpiši ''1. Vnesi oceno.''
izpiši ''2. Oglej si redovalnico.''
izpiši ''3. Zapusti redovalnico.''
izpiši ''Vnesi izbiro: ''
beri izbira
izbira=1 izbira=2
prn [ ]
gla [ ]
fil [ ]
psi [ ]
grs [ ]
NE izbira=3
NE
NE
izpiši ''Zapuščam redovalnico.''
vnos 0
izpiši ''Koliko ocen bi želeli vnesti?''
DA DA
izbira 0
dpredmetn 0
skuppovp 0
Jan Bitežnik Osebna redovalnica Informatika
10
izpiši »Skupaj«
izpiši skuppovp
izpiši »Predmet n«
…
DA
DA NE vnos=0
izpiši ''Vpišite oceno: ''
STOP beri vnos
dpredmet1=dolžina(predmet1)
dpredmet2=dolžina(predmet2)
dpredmet1=0 NE
povppredmet1=vsota(pred
met1)/dpredmet1
izpiši ''Vpišite predmet: ''
vnos vnos - 1
predmet.dodaj(ocena)
beri predmet
beri ocena
povppredmet1 dodaj skup
skuppovp=vsota(skup)/dolzina(skup)
izpiši »Povprečna ocena
izpiši predmetn
izpiši »Predmeti«
izpiši povppredmetn
izpiši »Ocene«
Oznaki »Predmet n« ali predmet n nadomeščata
posamezen predmet. Tako bi se pri koraku izpiši
»Predmet n« izpisalo 22 različnih predmetov, npr.
vera in kultura, ki je prva po vrsti. Predmet n sem
uporabil zgolj zato, da sem skrajšal celoten diagram
poteka. Enako velja pri računanju povprečja, kjer je s
tropičjem nakazano, da bi se enak postopek moral
ponoviti še 21-krat.
Jan Bitežnik Osebna redovalnica Informatika
11
2.5 Uporabljeni programi
Pri izdelavi maturitetne seminarske naloge sem uporabljal programski jezik Python.
Kot zanimivost lahko povem, da je ime dobil po televizijski komični nadaljevanki Leteči
cirkus Montyja Pythona.
Primeren je predvsem za računalniško analitiko in razvijanje internetnih aplikacij.
Uporablja več tipov podatkov, med njimi so nizi (»strings«), števila (med njimi cela
»integers« in decimalna »float«), seznami (»lists«) in slovarji (»dictionaries«).
Omogoča celo vrsto reševanja problemov, vendar je najbolj primeren za začetnike, saj
obstajajo že naprednejši programski jeziki.
Mnogo modulov uporabniku omogoča tudi grafično oblikovanje programa z izdelavo
grafičnega uporabniškega vmesnika (t. i. GUI). Pri delu sem izbral Tkinter, ker je
preprost za izdelavo. Uporabnik najprej definira t. i. platno (»canvas«), na katerem
lahko ustvari še posamezne elemente, kot so besedilo, poligon, pravokotnik, črto, …
Nato se z ukazom p.pack() ta slika tudi izriše, z mainloop() pa ostane na zaslonu,
dokler uporabnik ne zapre okna. Možen je tudi samodejen izhod iz programa po
določenem času.
Jan Bitežnik Osebna redovalnica Informatika
12
3 Praktični del naloge
Svoj program bom zapisal v programskem jeziku Python. Uporabniku program sprva
prikaže meni s tremi možnostmi. Prva je vnos ocene, druga ogled redovalnice, tretja
pa izhod iz redovalnice. Uporabnik možnost izbere z vnosom zaporedne številke (za
prvo možnost je to '1').
Tabela 3: Predstavitev programa s priloženimi komentarji
from tkinter import* Program najprej uvozi modul za grafično oblikovanje Tkinter.
redovalnica={"vik":[], "slo":[], "mat":[], "ang":[], "lat":[], "nem":[], "fra":[], "spa":[], "rus":[], "zgo":[], "spo":[], "uzg":[], "inf":[], "geo":[], "bio":[], "kem":[], "fiz":[], "psi":[],"fil":[],"gla":[], "prn":[], "grs":[]}
Nato sem ustvaril slovar z imenom 'redovalnica', ki vsebuje sezname. Vsak je zaznamovan z imenom tistega predmeta, čigar ocene se bodo zapisovale tja.
redovalnicafile=open("redovalnica.txt","r") Sledi ustvarjanje besedilne datoteke, kamor se bodo ocene shranjevale.
vse=redovalnicafile.readlines() Program prebere besedilno datoteko in shranjene ocene v tej datoteki prenese v slovar.
for i in range(len(vse)): for j in range(5,len(vse[i])-1,2): redovalnica[vse[i][:3]].append(int(vse[i][j]))
S for zanko se sprehodimo čez besedilno datoteko. Začnemo na petem mestu, ker prejšnja mesta zasedajo ime predmeta, dvopičje in presledek. Nato zaradi presledkov ocene beremo kot vsak drugi znak. Vse ocene so dodane v slovar – 'redovalnico'.
redovalnicafile.close() Pred nadaljevanjem je potrebno besedilno datoteko zapreti.
izbira="1" Ta del je potreben, da lahko program preide naslednji pogoj.
while izbira!="3" and izbira!="": print("Menu") print("Pozdravljen v svoji redovalnici!") print("1. Dodaj svojo oceno.") print("2. Oglej si svojo redovalnico.") print("3. Zapusti redovalnico.") izbira=input()
Dokler izbira ni 3 (v tem primeru se namreč redovalnica zapre) oziroma izbira ni prazna, se uporabniku prikaže meni s funkcijami redovalnice. Uporabnik izbiro izrazi z vnosom ene izmed prvih treh številk, pri čemer prva omogoča dodajanje ocene, druga ogled redovalnice, tretja pa izhod iz redovalnice.
if izbira=="1": Če je vnos enak številki 1, program nadaljuje na možnost vnosa ocene:
redovalnicafile=open("redovalnica.txt","w") Najprej odpre besedilno datoteko. stevilo=int(input("Koliko ocen bi želeli vnesti?")) for x in range(stevilo):
Najprej uporabnik vnese število ocen, ki bi jih želel vpisati.
Jan Bitežnik Osebna redovalnica Informatika
13
predmet=input("Vnesite predmet: ") ocena=int(input("Vnesite svojo oceno: ")) if predmet in redovalnica and ocena<=5: redovalnica[predmet].append(ocena) else: print ("Vašega predmeta ni v registru ali pa ste vnesli napačno oceno.")
Tolikokrat program uporabniku ponudi možnost, da vpiše predmet in oceno, ki mu pripada. Če je predmet ustrezen in ocena ni večja od 5, se ocena doda v redovalnico, v nasprotnem primeru uporabnik dobi opozorilo, da predmeta ni v registru oziroma je vnesel napačno oceno.
for i in redovalnica: redovalnicafile.write(i+": ") if len(redovalnica[i])==0: redovalnicafile.write("\n") else: for j in range(len(redovalnica[i])): redovalnicafile.write(str(redovalnica[i][j])+" ") redovalnicafile.write("\n") redovalnicafile.close()
Program nato prej pridobljene ocene zapiše v besedilno datoteko, tako da se sprehodi čez slovar in v kolikor predmetu ni dodana ocena, zgolj preide v novo vrstico, drugače pa oceno doda, skupaj s presledkom.
if izbira=="2": Če je vnos enak številki 2, program uporabniku prikaže redovalnico:
for c in redovalnica: for g in redovalnica[c]: try: g=int(g) except ValueError: continue
Najprej je potrebno izračunati povprečne ocene, zato se sprehodi čez ocene v predmetih v redovalnici in vsakega spremeni v celo število – integer. V kolikor je predmet prazen, program zgolj nadaljuje.
skup=[] izpis=[] for predmet in redovalnica: stev=len(redovalnica[predmet]) if stev!=0: vsota=sum(redovalnica[predmet]) povp=vsota/stev skup.append(povp) izpis.append(round(povp,2)) else: izpis.append("/")
Pri vsakem predmetu v redovalnici se najprej prešteje število ocen in sešteje vse ocene. Slednji rezultat delimo s prvim in ga zaokrožimo na dve decimalni mesti. Hkrati ga dodamo še v skupno tabelo povprečnih ocen, da bomo lahko izračunali še skupno povprečno oceno. V kolikor predmet nima ocen, se na koncu v redovalnici izpiše zgolj ''/''.
skupstev=len(skup) skupskup=sum(skup) try:
Enak postopek kot pri posameznih predmetih program ponovi še pri računanju skupne povprečne ocene.
Jan Bitežnik Osebna redovalnica Informatika
14
skuppovp=skupskup/skupstev except ZeroDivisionError: skuppovp=0 skuppovp=round(skuppovp,2)
p=Canvas(height=912,width=1620,bg="black") Program nato še izriše celotno redovalnico v dejanski tabeli. Tukaj naj opozorim, da sem se z grafičnim vmesnikom Tkinter odločil oblikovati zgolj ta del programa. Najprej definiramo celotno površino, t.i. canvas.
p.create_rectangle(0,0,540,38,fill="white") p.create_text(270,19,text="PREDMETI") p.create_rectangle(541,0,1080,38,fill="white") p.create_text(810,19,text="OCENE") p.create_rectangle(1081,0,1620,38,fill="white") p.create_text(1350,19,text="POVPREČJE")
Naslednji del so posamezni pravokotniki, vsak je ena celica tabele. Glava so naslovi stolpcov, v prvem stolpcu so navedeni predmeti (naslov »Predmeti«), v drugem so prikazane ocene (naslov »Ocene«), v tretjem pa povprečne ocene (naslov »Povprečje«).
p.create_rectangle(0,39,540,76,fill="white") p.create_text(270,57,text="Vera in kultura") p.create_rectangle(541,39,1080,76,fill="white") p.create_text(810,57,text=vik) p.create_rectangle(1081,39,1620,76,fill="white") p.create_text(1350,57,text=vikpovp) p.create_rectangle(0,77,540,114,fill="white") p.create_text(270,95,text="Slovenščina") p.create_rectangle(541,77,1080,114,fill="white") p.create_text(810,95,text=slo) p.create_rectangle(1081,77,1620,114,fill="white") p.create_text(1350,95,text=slopovp) p.create_rectangle(0,115,540,152,fill="white") p.create_text(270,133,text="Matematika") p.create_rectangle(541,115,1080,152,fill="white") p.create_text(810,133,text=mat) p.create_rectangle(1081,115,1620,152,fill="white") p.create_text(1350,133,text=matpovp) p.create_rectangle(0,153,540,190,fill="white") p.create_text(270,171,text="Angleščina") p.create_rectangle(541,153,1080,190,fill="white") p.create_text(810,171,text=ang) p.create_rectangle(1081,153,1620,190,fill="white") p.create_text(1350,171,text=angpovp) p.create_rectangle(0,191,540,228,fill="white") p.create_text(270,209,text="Latinščina") p.create_rectangle(541,191,1080,228,fill="white") p.create_text(810,209,text=lat) p.create_rectangle(1081,191,1620,228,fill="white") p.create_text(1350,209,text=latpovp) p.create_rectangle(0,229,540,266,fill="white") p.create_text(270,247,text="Nemščina")
Poleg zgornjih treh definiramo še 66 celic za predmete. Redovalnica ima ves čas enoten izgled, v kateri so vsi predmeti iz predmetnika ŠKG. Če pri posameznem predmetu ni ocen, se v stolpcu z ocenami izpiše »/«, v stolpcu s povprečno oceno pa 0.
Jan Bitežnik Osebna redovalnica Informatika
15
p.create_rectangle(541,229,1080,266,fill="white") p.create_text(810,247,text=nem) p.create_rectangle(1081,229,1620,266,fill="white") p.create_text(1350,247,text=nempovp) p.create_rectangle(0,267,540,304,fill="white") p.create_text(270,285,text="Francoščina") p.create_rectangle(541,267,1080,304,fill="white") p.create_text(810,285,text=fra) p.create_rectangle(1081,267,1620,304,fill="white") p.create_text(1350,285,text=frapovp) p.create_rectangle(0,305,540,342,fill="white") p.create_text(270,323,text="Španščina") p.create_rectangle(541,305,1080,342,fill="white") p.create_text(810,323,text=spa) p.create_rectangle(1081,305,1620,342,fill="white") p.create_text(1350,323,text=spapovp) p.create_rectangle(0,343,540,380,fill="white") p.create_text(270,361,text="Ruščina") p.create_rectangle(541,343,1080,380,fill="white") p.create_text(810,361,text=rus) p.create_rectangle(1081,343,1620,380,fill="white") p.create_text(1350,361,text=ruspovp) p.create_rectangle(0,381,540,418,fill="white") p.create_text(270,399,text="Zgodovina") p.create_rectangle(541,381,1080,418,fill="white") p.create_text(810,399,text=zgo) p.create_rectangle(1081,381,1620,418,fill="white") p.create_text(1350,399,text=zgopovp) p.create_rectangle(0,419,540,456,fill="white") p.create_text(270,437,text="Športna vzgoja") p.create_rectangle(541,419,1080,456,fill="white") p.create_text(810,437,text=spo) p.create_rectangle(1081,419,1620,456,fill="white") p.create_text(1350,437,text=spopovp) p.create_rectangle(0,457,540,494,fill="white") p.create_text(270,475,text="Umetnostna zgodovina") p.create_rectangle(541,457,1080,494,fill="white") p.create_text(810,475,text=uzg) p.create_rectangle(1081,457,1620,494,fill="white") p.create_text(1350,475,text=uzgpovp) p.create_rectangle(0,495,540,532,fill="white") p.create_text(270,513,text="Informatika") p.create_rectangle(541,495,1080,532,fill="white") p.create_text(810,513,text=inf) p.create_rectangle(1081,495,1620,532,fill="white") p.create_text(1350,513,text=infpovp) p.create_rectangle(0,533,540,570,fill="white") p.create_text(270,551,text="Geografija") p.create_rectangle(541,533,1080,570,fill="white") p.create_text(810,551,text=geo) p.create_rectangle(1081,533,1620,570,fill="white") p.create_text(1350,551,text=geopovp) p.create_rectangle(0,571,540,608,fill="white") p.create_text(270,589,text="Biologija") p.create_rectangle(541,571,1080,608,fill="white") p.create_text(810,589,text=bio)
Jan Bitežnik Osebna redovalnica Informatika
16
p.create_rectangle(1081,571,1620,608,fill="white") p.create_text(1350,589,text=biopovp) p.create_rectangle(0,609,540,646,fill="white") p.create_text(270,627,text="Kemija") p.create_rectangle(541,609,1080,646,fill="white") p.create_text(810,627,text=kem) p.create_rectangle(1081,609,1620,646,fill="white") p.create_text(1350,627,text=kempovp p.create_rectangle(0,647,540,684,fill="white") p.create_text(270,665,text="Fizika") p.create_rectangle(541,647,1080,684,fill="white") p.create_text(810,665,text=fiz) p.create_rectangle(1081,647,1620,684,fill="white") p.create_text(1350,665,text=fizpovp) p.create_rectangle(0,685,540,722,fill="white") p.create_text(270,703,text="Psihologija") p.create_rectangle(541,685,1080,722,fill="white") p.create_text(810,703,text=psi) p.create_rectangle(1081,685,1620,722,fill="white") p.create_text(1350,703,text=psipovp) p.create_rectangle(0,723,540,760,fill="white") p.create_text(270,741,text="Filozofija") p.create_rectangle(541,723,1080,760,fill="white") p.create_text(810,741,text=fil) p.create_rectangle(1081,723,1620,760,fill="white") p.create_text(1350,741,text=filpovp) p.create_rectangle(0,761,540,798,fill="white") p.create_text(270,779,text="Glasba") p.create_rectangle(541,761,1080,798,fill="white") p.create_text(810,779,text=gla) p.create_rectangle(1081,761,1620,798,fill="white") p.create_text(1350,779,text=glapovp) p.create_rectangle(0,799,540,836,fill="white") p.create_text(270,817,text="Projektna naloga") p.create_rectangle(541,799,1080,836,fill="white") p.create_text(810,817,text=prn) p.create_rectangle(1081,799,1620,836,fill="white") p.create_text(1350,817,text=prnpovp) p.create_rectangle(0,837,540,874,fill="white") p.create_text(270,855,text="Grščina") p.create_rectangle(541,837,1080,874,fill="white") p.create_text(810,855,text=grs) p.create_rectangle(1081,837,1620,874,fill="white") p.create_text(1350,855,text=grspovp)
p.create_rectangle(0,875,540,912,fill="white") p.create_text(270,893,text="SKUPAJ") p.create_rectangle(1081,875,1620,912,fill="white") p.create_text(1350,893,text=skuppovp)
V zadnji vrstici sledita še dve celici, v katerih je zapisana skupna povprečna ocena. Ena celica nosi zgolj naslov, torej »Skupaj«, v drugi pa je zapisana povprečna ocena. Srednje celice v tej vrstici ne potrebujemo, ker so vse povprečne ocene že zapisane v stolpcu s povprečnimi ocenami.
p.pack() mainloop()
Tu programu ukažemo, da to tabelo izriše.
Jan Bitežnik Osebna redovalnica Informatika
17
if izbira==3: print("Zapuščam redovalnico...") exit()
Tretji del programa uporabniku omogoča izhod. Če torej vnese številko 3, se program ustavi, izpiše pa se sporočilo »Zapuščam redovalnico…«.
3.1 Posnetki zaslona med delovanjem programa
Slika 1: Izbirni meni, ki se prikaže ob zagonu programa
Slika 2: Prikaz vmesnika za vnos ocen ob vnosu števila 1
Jan Bitežnik Osebna redovalnica Informatika
18
Slika 3: Izpis ocen v redovalnici ob vnosu števila 2
Jan Bitežnik Osebna redovalnica Informatika
19
4 Sklep
Svojo nalogo osebno ocenjujem kot uspešno, saj sem nično znanje programiranja kar
močno nadgradil. Spoznal sem se z osnovnimi funkcijami, zgradbo programa,
povezavi z besedilnimi datotekami oziroma branjem in zapisovanjem v besedilne
datoteke, modulom Tkinter… Sam menim, da se sedaj že lahko spopadem tudi z
nekaterimi težjimi programi, prav tako lahko lažje nadgrajujem znanje in koncept
programiranja uporabim tudi v vsakdanjem življenju. Ogromno je seveda še stvari, ki
bi se jih lahko naučil, a bi za to potreboval zgolj osredotočenost na programiranje, brez
ostalih šolskih zadev, zato sem z narejenim zadovoljen.
4.1 Možne izboljšave
Naloga ponuja še obilo možnost za nadgradnjo oziroma izboljšavo. Dotaknil sem bom
tistih, ki se mi zdijo najbolj primerne za uporabo v elektronski redovalnici.
Najprej so tu dodatne funkcije. Prva je izbris ocene. Kot že ime pove, bi lahko v
program dodal še možnost izbrisa ocene, ki bi deloval na enak način kot vnos. Sedaj
mora uporabnik namreč sam odpreti besedilno datoteko, kamor se shranjujejo
vnesene ocene, s tem pa tvega tudi možnost, da bi zmotil pravilno delovanje programa.
Druga je možnost vnosa novih in izbris obstoječih predmetov. Elektronska redovalnica
je trenutno namreč prilagojena predmetniku Škofijske klasične gimnazije. Hkrati je
končen izris redovalnice konstanten in vključuje vse predmete navedenega
predmetnika. S to funkcijo bi si uporabnik sam prilagajal predmete, tako bi bila
redovalnica uporabna tudi na ostalih šolah.
Nadgradnja druge nadgradnje pa je samodejen izpis predmetnikov. V programu bi
lahko definiral, kateri predmeti spadajo v kateri letnik in tako bi uporabnik z vnosom
zaporedne številke letnika že imel pripravljen nabor predmetov, ki jih potrebuje. Še
vedno bi bil problem pri četrtem letniku, kjer imajo vsi dijaki različne predmete zaradi
priprav na maturo.
Naslednja možnost je komentar k povprečnemu uspehu. Lahko bi prej pripravil
posamezna merila za določeno povprečno oceno (prva je že sam učni uspeh), ki bi se
uporabniku izpisala ob skupni povprečni oceni.
V redovalnici bi lahko dodal tudi možnost vpisa ocene v posamezno polletje, hkrati bi
se lahko računalo tudi povprečje posameznega polletja.
Celoten program bi lahko oblikoval z orodjem Tkinter in tako uporabniku omogočil
boljšo uporabniško izkušnjo. Sedaj sem predvsem zaradi pomanjkanja znanja in časa
z orodjem Tkinter oblikoval zgolj sam izpis redovalnice, z nadgradnjo pa bi lahko
uporabnik s klikom na gumb, namesto z vnosom številke, zaznamoval svojo izbiro.
Zadnja nadgradnja je bolj tehnične narave, saj se dotika samega pisanja programa in
je sam pravzaprav ne razumem zelo dobro. Priporočili so mi jo bolj izkušeni programerji
Jan Bitežnik Osebna redovalnica Informatika
20
in sicer, da bi lahko program napisal krajše in tako estetsko bolj privlačno. Tudi za
slednjo se nisem odločil zaradi pomanjkanja znanja in časa.
4.2 Časovna analiza dela
Za svojo maturitetno seminarsko nalogo sem porabil kar nekaj časa, predvsem na
račun svojega neznanja programiranja na začetku. Delo bi lahko razdelil v tri sklope;
prvi je bil učenje programiranja in načrtovanje programa, drugi je bil dejansko pisanje,
zadnji pa popravljanje programa. Predvsem prvi mi je vzel največ časa, najmanj pa
drugi. Spodnji graf prikazuje časovno porazdelitev dela maturitetne seminarske naloge
v urah. Prvi del mi je vzel približno 29 ur (v povprečju en mesec po eno uro na dan),
drugi 6 ur, zadnji pa še 13 ur.
Graf 1: Časovna porazdelitev dela maturitetne seminarske naloge
Časovna porazdelitev dela maturitetne seminarske naloge
Prvi del Drugi del Tretji del
Jan Bitežnik Osebna redovalnica Informatika
21
5 Viri in literatura
- StackOverflow (online) [Dostopno na:
https://stackoverflow.com/questions/tagged/python] (Dostopano dne 13. 1.
2018)
- PythonTM (online) [Dostopno na: https://www.python.org/] (Dostopano dne
13. 1. 2018)
- Codecademy (online) Dostopano na: https://www.codecademy.com/]
(Dostopano dne 27. 12. 2017)
- Moduli (predavanja pri pouku informatika v šolskem letu 2017/2018 na
Škofijski klasični gimnaziji) [Dostopno na spletni učilnici ŠKG, pripravila
Sonja Buhvald, Gimnazija Ravne, 2016/2017; popravki Helena Starc Grlj]