Beléptető rendszer (2024. május)
Kategória: python - emelt szint
Feladat leírása

Egy iskolában minden diáknak van egy tanulói kártyája, amelyet nemcsak a be- és kilépéskor
használnak, hanem ez helyettesíti a könyvtári olvasójegyet és a menzán az ebédjegyet is.
A rendszer adatbázisából statisztikai elemzés céljából lekérték az október 12-én rögzített
adatokat. A bedat.txt állomány a tanuló kódját, az esemény időpontját, valamint az esemény
kódját tartalmazza szóközzel elválasztva. Az esemény kódja a következő lehet:
1 belépés a főkapun át
2 kilépés a főkapun át
3 az ebéd kiadása a menzán
4 kölcsönzés a könyvtárban
Például:
…
KYPG 14:04 1
CIVX 14:04 2
XHTR 14:04 2
RYUI 14:04 3
SBUG 14:04 4
…
A fenti példában a 14:04-kor a KYPG kódú tanuló belépett az iskolába, ugyanabban
a percben a CIVX és az XHTR kódú tanuló éppen távozott, az RYUI kódú tanuló megkapta a
menzán az ebédet, míg az SBUG kódú tanuló könyvet kölcsönzött a könyvtárban. A tanulók
kódja négybetűs, az időpontok formátuma óó:pp.
Az iskolában a tanulók 07:00-tól 19:00-ig tartózkodhatnak. A tanulók napközben a főkapun
át többször be- vagy kiléphetnek, a könyvtárban többször kölcsönözhetnek, de a menzán
legfeljebb egyszer ebédelhetnek. A feladatok megoldása során kihasználhatja, hogy az adatok
időrendi sorrendben szerepelnek abban az esetben is, amikor azokat egy időponttal rögzítették.
A fájlban az első esemény egy belépés, az utolsó egy kilépés a főkapun.
Készítsen programot, amely az állomány adatait felhasználva az alábbi kérdésekre válaszol!
A program forráskódját mentse belepteto néven! A program megírásakor a felhasználó által
megadott adatok helyességét, érvényességét nem kell ellenőriznie, és feltételezheti, hogy
a rendelkezésre álló adatok a leírtaknak megfelelnek.
A képernyőre írást igénylő részfeladatok esetén – a mintához tartalmában hasonlóan – írja
ki a képernyőre a feladat sorszámát (például: 2. feladat), és utaljon a kiírt tartalomra is!
Ha a felhasználótól kér be adatot, jelenítse meg a képernyőn, hogy milyen értéket vár! Mindkét
esetben az ékezetmentes kiírás is elfogadott.
Részfeladatok
1. Olvassa be a bedat.txt állomány tartalmát, tárolja el az abban szereplő adatokat, és annak felhasználásával oldja meg a következő feladatokat! Feltételezheti, hogy az állomány legfeljebb 2000 adatsort tartalmaz
2. Határozza meg, hogy mikor lépett be az épületbe az első tanuló, és mikor távozott az utolsó! Az időpontokat a mintához hasonlóan jelenítse meg a képernyőn!
3. Készítsen listát a kesok.txt nevű állományba, amely megadja, hogy mely tanulók léptek be a nagykapun 07:50 után, de legkésőbb 08:15-kor! A fájlban a belépések a mintának megfelelően külön sorban szerepeljenek, az időpontot egy szóköz válassza el a tanuló azonosítójától! Ha egy tanuló ezalatt többször is belépett, minden belépése jelenjen meg a fájlban!
4. Határozza meg, hány tanuló ebédelt aznap a menzán! Írassa ki az eredményt a képernyőre a mintának megfelelően!
5. Szeretnénk tudni, hogy a könyvtári kölcsönzés vagy a menza a népszerűbb-e ezen a napon.
a) Határozza meg, hány tanuló kölcsönzött aznap a könyvtárban! Ha egy tanuló többször is kölcsönzött, akkor azt csak egyszer vegye figyelembe! Írassa ki az eredményt a képernyőre a mintának megfelelően!
b) A könyvtárosok szerint több tanuló kölcsönöz egy nap a könyvtárban, mint ahányan a menzán ebédelnek. Így volt-e ez ezen a napon is? A választ („Többen voltak, mint a menzán.” vagy „Nem voltak többen, mint a menzán.”) a mintának megfelelő formában írassa ki a képernyőre!
6. A portás reggel elfelejtette a hátsó kaput bezárni, ezért a 10:45-kor kezdődő szünetben néhány tanuló kiment a hátsó kijáraton át a szemközti pékségbe tízórait venni. A portás csak 10:50-kor zárta be a hátsó kaput, így 10:50 után a korábban a hátsó kapun át távozott tanulóknak a főbejáraton át kellett visszajönniük. Írassa ki a képernyőre egy-egy szóközzel elválasztva ezeknek a tanulóknak az azonosítóját! (A szünet 11:00-ig tartott, és feltételezheti, hogy azt megelőzően valamennyi érintett tanuló visszaért.) Vegye figyelembe, hogy a tanulók egy része aznap csak 11:00-ra jött iskolába, illetve szabályosan lépett ki!
7. Kérje be egy tanuló azonosítóját, és írassa ki a minta szerinti formátumban, hogy mennyi idő telt el az iskolába való első belépése és utolsó távozása között! Feltételezheti, hogy 19:00-ig minden tanuló elhagyta az iskolát. Ha aznap az adott azonosítójú tanuló nem járt az iskolában, akkor írassa ki az Ilyen azonosítójú tanuló aznap nem volt az iskolában. üzenetet!
8.