Tässä on Sqlite-kirjastolla tehty tehtavalista. Tietokantaan tallennetaan tehtävä, myöhästyminen ja tärkeysaste. Lisäksi poluksi tehdään kumulatiivinen myöhästymispalkit.
import datetime
from datetime import datetime
import sqlite3
import matplotlib.pyplot as plt
import numpy as np
from itertools import accumulate
from operator import add
#Otetaan yhteys tietokantaan
try:
conn = sqlite3.connect('aika.db')
except:
print("Ei onnistunut")
myohassaSumma = []
ajoissaSumma = []
jatko = 1
print("Anna vuosi")
vuosi = int(input())
print("Anna kuukausi")
kuukausi = int(input())
print("Anna kuukauden päivä")
paiva = int(input())
while (jatko == 1):
#Syötetään tehtävän nimi, tärkeysaste ja deadline.
#Katsotaan, sitten kuinka paljon tehtävä on myöhässä
nyt = datetime.now()
print("Syötä tehtävän nimi")
tehtava = input()
print("Onko tehtävä tärkeä 1) kyllä")
tarkea = int(input())
print("Anna tunti")
tunti = int(input())
print("Anna minuutti")
minuutti = int(input())
sitten = datetime(vuosi,kuukausi,paiva,tunti,minuutti,0);
erotus = (nyt-sitten).total_seconds()
myohassa = ""
tarkeys = ""
#Katsotaan, kuinka paljon tehtävä on myöhässä
tunnit = divmod(erotus,3600)[0]
if (erotus > 0):
myohassa = "Myöhässä"
ajoissaSumma.append(0)
myohassaSumma.append(tunnit*60+minuutit)
else:
minuutit = divmod(erotus,60)[0]-(abs(tunnit)+1)*60
myohassa = "Ajoissa"
tunnit += 1
tunnit = abs(tunnit)
myohassaSumma.append(0)
ajoissaSumma.append(tunnit*60+minuutit)
if (tarkeys == 1):
tarkeys = "Tärkeä"
else:
tarkea = "Ei tärkeä"
#Tallennetaan tietokantaan.
lista = []
lista.append(tehtava)
lista.append(tarkeys)
lista.append(myohassa)
lista.append(tunnit)
lista.append(minuutit)
conn.execute("INSERT INTO aika VALUES (?,?,?,?,?)",lista)
conn.commit()
print("Jatketaanko 1) Kyllä")
jatko = int(input())
#Piirretään kaaviot, joka kertoo kumulatiivisesti myöhästäymisen
summa1 = [abs(x) for x in ajoissaSumma]
summa2 = [abs(x) for x in myohassaSumma]
kumulatiivinenAjoissa = list(accumulate(summa1,add))
kumulatiivinenMyohassa = list(accumulate(summa2,add))
print(kumulatiivinenAjoissa)
print(kumulatiivinenMyohassa)
pituus = len(kumulatiivinenAjoissa)
X = np.arange(pituus)
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(X,kumulatiivinenAjoissa,color='g', width=0.25)
ax.bar(X+0.25,kumulatiivinenMyohassa,color='r', width=0.25)
plt.show()
conn.close() #Täytyy muistaa sulkea yhteys!Oletko muuten huomannut, että:
tulosTunti = int(tulos/60) tulosMinuutit = tulos%60
Sijasta voisit käyttää:
tunnit, minuutit = divmod(kokonaisminuutit, 60)
Minulla on sinulle parannusehdotus:
Käytä oikeita standardimuotoisia päivämääriä ja aikoja. Tallenna kuvaus ja aika Sqlite tietokantaan. Rakenna "päättymätön" lista "lennossa" tietokannasta hakemistasi tiedoista.
Ohjelma on muutettu nyt komentorivipohjaiseksi ja siihen on lisätty yhteys tietokantaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.