programiranje v pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/maturitetna_seminarska... ·...

21
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

Upload: others

Post on 12-Sep-2019

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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

Page 2: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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

Page 3: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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

Page 4: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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

Page 5: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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

Page 6: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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

Page 7: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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.

Page 8: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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 [ ]

Page 9: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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

Page 10: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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.

Page 11: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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.

Page 12: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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.

Page 13: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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.

Page 14: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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.

Page 15: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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)

Page 16: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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.

Page 17: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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

Page 18: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

Jan Bitežnik Osebna redovalnica Informatika

18

Slika 3: Izpis ocen v redovalnici ob vnosu števila 2

Page 19: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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

Page 20: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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

Page 21: Programiranje v Pythonu - arnes.sissljskg2s/2017_18/biteznik_jan/Maturitetna_seminarska... · Python, s pomočjo orodja Tkinter pa sem ga še grafično oblikoval. Abstract In my project

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]