RPK - seminar

Aleš Slabe

STATISTIČNA OBDELAVA KONTROLE VSTOPA

Kazalo

Uvod

V okviru vaj predmeta računalniško podprto konstruiranje sem dobil nalogo v obliki seminarja. Zahteve te naloge so bile omogočanje različne vrste statističnih pregledov prehodov skozi vrata v laboratorij LECAD. Ta vrata se odpirajo na poseben način s pomočjo elektronskih ključev, lahko pa tudi s pomočjo ustrezne šifre oziroma računalnikov v laboratoriju. Vsi ti prehodi se zabeležijo v ustrezni datoteki. Iz te datoteke je potrebno zajeti vse potrebne podatke jih ustrezno obdelati in jih v izbranem načinu pregleda primerno prikazati. Možen je dnevni in mesečni pregled, rezultat pa mora biti v ustrezni HTML obliki, da jo strežnik lahko prikaže.

English Abstract

Purpose of this research project is to show different types of statistical review of the time being in the LECAD lab. This review can be made by registration of  crossing the door. This registration is possible because of the electronic keys that every users of the lab have and is written in the ASCII file.The special program reads data from this file, processes and represents them in HTML form (we can see it on the Internet).

Osnovni pincipi reševanja naloge

Oblika vhodnih podatkov

Vhodni podatki so v dveh oblikah, prvi so v ASCII datoteki - generira jo računalnik, ki časovno beleži  načine odpiranja vhodnih vrat v laboratorij. Vsebuje vse pomembne podatke za izračun časa, ki ga posamezni uporabnik prebije v laboratoriju. Spodaj je tudi prikazan majhen delček te datoteke in kot vidimo ima zabeležen datum in čas vstopa oziroma izstopa, ime uporabnika ključa ter seveda podatek ali je šlo za vhod ali izhod.

Ker pa se vrata ne odpirajo samo s ključkom ampak lahko tudi z odtipkanjem ustrezne kode na tipkovnico pri vratih ali pa s pomočjo računalnikov v notranjosti laboratorija, je potrebno napraviti ustrezno selekcijo med podatki. Pri tem pa so se še pojavljali problemi zaradi istočasnega prehoda skozi vrata dveh ali več oseb tako, da je računalnik javljal dva zaporedna vstopa brez vmesnega izhoda ali pa odhod osebe iz laboratorija, čeprav je po evidenci v datoteki naj sploh ne bi bilo notri. Te probleme sem rešil tako, da sem izbral najkrajši čas oziroma čas, ki ga je oseba sigurno prebila v laboratoriju.

Datoteka, ki vsebuje te podatke se imenuje Userinfo in njen majhen delček izgleda takole:

Apr 22 13:27:17 aphro lecadgated[2987]: Door opened.

Apr 22 13:27:28 aphro lecadgated[2987]: Key 0000002E767A (Leon KOS - 8): Entrance granted.

Apr 22 13:27:28 aphro lecadgated[2987]: Door opened.

Apr 22 13:49:52 aphro lecadgated[2987]: Key 0000004349B2 (Janez KREK - 8): Entrance granted.

Apr 22 13:49:52 aphro lecadgated[2987]: Door opened.

Apr 22 13:50:04 aphro lecadgated[2987]: Key 0000004349B2 (Janez KREK - 8): Leaving granted.

Apr 22 13:50:04 aphro lecadgated[2987]: Door opened.

Apr 22 13:50:16 aphro lecadgated[2987]: Key 0000004349B2 (Janez KREK - 8): Entrance granted.

Apr 22 13:50:16 aphro lecadgated[2987]: Door opened.

Apr 22 13:53:45 aphro lecadgated[2987]: Key 00000034C6CD (Roman ZAVBI - 8): Entrance granted.

Apr 22 13:53:45 aphro lecadgated[2987]: Door opened.

Apr 22 13:54:00 aphro lecadgated[2987]: Key 00000034C6CD (Roman ZAVBI - 8): Entrance granted.

Apr 22 13:54:00 aphro lecadgated[2987]: Door opened.

Apr 22 13:54:13 aphro lecadgated[2987]: Key 00000034C6CD (Roman ZAVBI - 8): Leaving granted.

Apr 22 13:54:13 aphro lecadgated[2987]: Door opened.

Druga oblika podatkov, ki jih potrebujemo za statistični izračun, pa je izbira vrste pregleda (izbiramo lahko med mesečnim in dnevnim) ter seveda mesec (pri mesečnem in dnevnem pregledu) in dan (samo pri dnevnem) za katerega nas zanima statistika.

Te podatke podamo s pomočjo html strani na kateri si izberemo s pomočjo radio gumbov vrsto pregleda, nato s pomočjo select seznama željeni mesec in po potrebi v text okno vpišemo še ustrezen dan. Ta stran izgleda takole:

-------------------------------------------------------------------------------------------------------------------------------

Statistični pregled vhoda

Z izbiro ustreznega datuma in pritiskom na gumb "Potrdi izbiro" se vam prikaže pregled

prehoda preko vrat laboratorija LECAD.


Dnevni pregled:

Mesečni pregled:

 

Izberite mesec: Vnesite dan:

samo pri dnevnem pregledu


 

Made by Aleš Slabe

--------------------------------------------------------------------------------------------------------------------------------

Način izdelave programa

Za izdelavo programa, ki bo prebral ustrezne vhodne podatke iz datoteke in okolja, jih ustrezno preračunal ter izpisal v html kodi, sem si izbral programski jezik C. Sam program pa na kratko lahko opišem takole: na začetku so vključene vse potrebne standardne knjižnice nakar definiram vsa imena spremenljivk. Nato program odpre datoteko USERINFO, ki vsebuje podatke o vstopih in izstopih, iz okolja mora vzeti QUERY_STRING, ki nam pove vrsto pregleda in datum, v okolje pa ga pošljemo s pomočjo HTML strani, iz tega stringa prebere vse potrebne podatke. Iz datoteke pa jemlje vsako vrstico posebej in jo vsako zase tudi obdela. Najprej pregleda ali je v njej beseda vhod (ENTRANCE) ali izhod (LEAVING) ali nič od tega (te vrstice spusti). Nato primerja datum dobljen iz html strani z datumom v vrstici in tako napravi novo selekcijo. Če se vse ujema si zabeleži čas, ga spremeni v sekunde in v primeru vhoda zapiše v ustrezno strukturo. V primeru izhoda pa v strukturi poišče tudi čas vhoda in ju odšteje med seboj, tako, da dobimo čas bivanja v laboratoriju. Seveda si pri vhodu mora v strukturo zapisati tudi ime uporabnika, ki ga pri izhodu poišče (to napravi s pomočjo primerjanja imen). V en del strukture pa si mora pripisati tudi skupni čas uporabnika v laboratoriju, ki mu v vsakem ustreznem primeru prišteje še razliko časov izhoda in vhoda.

Vse izhodne podatke (ime in priimek uporabnika, njegov čas gibanja v laboratoriju - številčno in grafično) pa mora program zapisati v HTML obliki. Grafično prikaže čas tako, da nariše skupnemu času sorazmerno dolgo črto, dolžina črte je definirana v ukazu width. Pri tem je potrebno upoštevati ali gre za mesečni ali dnevni pregled  (da ne prido do neprimerno dolgih črt), črto pa sem narisal v programu Coreldraw.

Pomembna pa je tudi ustrezna povezava med začetno html stranjo, programom za izračun željenih elementov in končno HTML stranjo. To napravimo s pomočjo CGI (Common Gateway Interface) programiranja. Bistvo vsega tega je v tem, da je HTML stran napisana tako, da vsebuje gumb SUBMIT (potrdi podatke), ki vse podatke, ki smo jih predhodno izbrali (vrsta prehoda in datum), pošlje v okolje v obliki spremenljiv okolja. Spremenljivke okolja so so tiste, ki so v določenem trenutku dosegljive vsem prisotnim programom. Hkrati s tem pa tudi zaženemo dani program. Vse te aktivnosti povzročimo z ukazom FORM in uporabom načina GET v HTML strani: (<FORM ACTION="ime_CGI_programa" METHOD="GET">...</FORM>).

Pri tem pa potrebujemo tudi WWW strežnik, odjemalec in strežnik komunicirata preko HTTP protokola. V naslednji fazi naš aplikacijski program (kot smo že povedali je napisan v programskem jeziku C) iz okolja preberi QUERY_STRING in iz njega izlušči pomembne podatke. Za vračanje podatkov od programa preko strežnika do uporabnika se mi je zdela najprimernejša možnost s pisanjem na standardi izhod. In sicer naš CGI program poskrbi za ustrezno pisanje izhodnih podatkov v HTML obliki. Ker WWW strežnik pošlje podatke nazaj k uporbniku preko HTTP protokola doda dokumentu še posebno glavo, za katero je pomembno, da vsebuje vrstico: "Content-type: text/html", ki jo napiše že CGI program;  ta vrstica brkljalniku pove, da mu pošiljamo tekstovno HTML datoteko - za to vrstico je obvezna ena prazna vrstica. V tem primeru dobimo izpis v obliki spletne strani.

Oblika izhodnih podatkov

Izhodni podatki se nam torej prikažejo kot nova spletna stran v obliki, ki smo jo podali v programu za izračun in seveda izpis podatkov. Izgleda pa tako, da nam na začetku pove za kateri datum velja pregled, nato vse tedanje prehodnike in njihov čas, ki so ga preživeli v laboratoriju, podan številčno in grafično, na koncu strani pa sledi še povezava na stran za izbiro podatkov za morebiten nov pregled. Sicer pa je spodaj tudi prikazan izgled te končne izhodne strani za datum 18. Julij.

--------------------------------------------------------------------------------------------------------------------------------

Statistični pregled vhoda

Pregled za datum: 18. Jul

Janez KREK 5h 3min

    crta.jpg (2025 bytes)

Joze TAVCAR 3h 35min

    crta.jpg (2025 bytes)

Tomaz KOLSEK 1h 8min

    crta.jpg (2025 bytes)

Janez VRHOVEC 5h 5min

    crta.jpg (2025 bytes)

Leon KOS 2h 37min

    crta.jpg (2025 bytes)

Joze DUHOVNIK 1h 0min

    crta.jpg (2025 bytes)

ZUPANCIC - 2h 29min

    crta.jpg (2025 bytes)

Snazilka - 0h 11min

    crta.jpg (2025 bytes)

Želite nov pregled DA.

--------------------------------------------------------------------------------------------------------------------------------

Zaključek

Dana naloga je lep primer kompleksne naloge, ki jo je potrebno izdelati od začetka do konca, tako izdelave forme za vnos podatkov, branje in nato obdelave teh podatkov in na konco še predstavitev rezultatov v ustrezni obliki. Prav zaredi tega je bila naloga precej zahtevna saj je zahtevala osvojitev znanja programiranja v C programskem jeziku, izdelavo ustreznih spletnih strani in CGI programiranja za povezavo teh dveh elementov. Pri vsej nalogi mi je še največje probleme delalo nezmožnost preizkusa povezave med spletno stranjo in CGI programom, ki je pogojena z ustreznim WWW serverjem, ki ga nisem imel na voljo. Vendar pa sem kljub temu v laboratoriju napravil ustrezen preizkus s pošiljenjem ustreznih podatkov v okolje. Preizkus pravilnega delovanja aplikacijskega programa pa sem testiral z nekajkratnim naključnim ročnim seštevanjem časa prisotnosti v laboratoriju in primerjavo s programskim izračunom, tudi tu se je pokazala pravilnost sestave programa.

Literatura

Žiga Turk: Programski jezik C, ZOTKS, Ljubljana 1986

Nedeljko Šolaja, Zvonimir Alaber: Programski jezik C, INFO, Zagreb 1992

Brian W.Kernighan, Dennis M. Ritchie: Programski jezik C, FER, Ljubljana 1991

Peter Hribar: HTML 4.0, Flamingo, Nova Gorica 1998

Getting Started with Microsoft FrontPage 98, Microsoft Corporation 1997

dr. Matjaž Debevc: CGI programiranje, FER, Ljubljana 1997

Vrnitev na začetek!