Online Gépjármű Regisztrációs Rendszer
Transcript of Online Gépjármű Regisztrációs Rendszer
Miskolc 2018
Miskolci Egyetem
Gépészmérnöki és Informatikai Kar
Online gépjármű regisztrációs rendszer
Szakdolgozat
Készítette:
Kökény József
3458 Tiszakeszi, Petőfi utca 16/B.
Online Gépjármű Regisztrációs Rendszer
I
Tartalomjegyzék Köszönetnyilvánítás ............................................................................................... 1
1. Bevezetés ........................................................................................................... 2
Cég bemutatás ............................................................................................. 3
A szakdolgozat készítéséhez rendelkezésemre álló technikák .......................... 5
Asztali számítógép paraméterei ................................................................... 5
Server paraméterei ...................................................................................... 5
Használt programok ..................................................................................... 5
Elsajátított szakmai ismeretek ...................................................................... 5
Fejlesztési lehetőségek elemzése ...................................................................... 6
Kész szoftver vásárlása ............................................................................... 6
Hátrányai ............................................................................................... 6
Külső céggel közösen történő fejlesztés ...................................................... 6
Hátrányai ............................................................................................... 6
Saját fejlesztésű szoftver készítése ............................................................. 6
Hátránya ................................................................................................ 7
A megfelelő fejlesztési lehetőség kiválasztása ................................................... 7
A fejlesztés lépései: ..................................................................................... 7
A saját fejlesztésű programom célja: ............................................................ 7
Alkalmazás típusok elemzése ............................................................................ 8
Mobilalkalmazások ....................................................................................... 8
Előnye .................................................................................................... 8
Hátránya ................................................................................................ 8
Vastag kliens alkalmazások ......................................................................... 8
Előnye .................................................................................................... 8
Hátránya ................................................................................................ 8
Szolgáltatási alkalmazások .......................................................................... 8
Előnye .................................................................................................... 9
Hátránya ................................................................................................ 9
Webes alkalmazások ................................................................................... 9
Előnye .................................................................................................... 9
Hátránya ................................................................................................ 9
A megfelelő alkalmazási lehetőség kiválasztása........................................ 10
Programozási nyelvek elemzése ...................................................................... 11
JAVA .......................................................................................................... 11
Online Gépjármű Regisztrációs Rendszer
II
Előnye .................................................................................................. 11
Hátránya .............................................................................................. 11
PHP ............................................................................................................ 12
Előnyei ................................................................................................. 12
Hátránya .............................................................................................. 13
C# .............................................................................................................. 13
Előnye .................................................................................................. 14
Hátránya .............................................................................................. 14
A megfelelő programozási nyelv kiválasztása ............................................ 14
A munkám során használt fontosabb alkalmazások ......................................... 15
SQL Server Management Studio (SSMS) .................................................. 15
Microsoft Visual Studio ............................................................................... 15
Felhasználók .................................................................................................... 16
Adminisztrátor ............................................................................................ 16
Feladata ............................................................................................... 16
A Jelenlegi rendszer hátrányai ............................................................. 16
Az új rendszer előnyei: ......................................................................... 17
Az adminisztrátor felhasználói dokumentáció: ..................................... 18
Fuvarszervező ............................................................................................ 19
Általános feladatai ................................................................................ 19
A Jelenlegi rendszer hátrányai ............................................................. 19
Az új rendszer előnye .......................................................................... 19
Fuvarszervező felhasználó dokumentáció ........................................... 20
Irodai asszisztens ....................................................................................... 22
Feladatai .............................................................................................. 22
A jelenlegi rendszer hibái ..................................................................... 22
Az új rendszer előnyei .......................................................................... 22
Irodai asszisztens felhasználói dokumentáció ..................................... 22
Gépjárműfogadó ........................................................................................ 24
Feladatai .............................................................................................. 24
A jelenlegi rendszer hibái ..................................................................... 24
Az új rendszer előnyei .......................................................................... 24
Gépjárműfogadó felhasználói dokumentáció ....................................... 24
Adatbázis tervezés ........................................................................................... 27
Adatbázis szerkezetének leírása ................................................................ 27
Online Gépjármű Regisztrációs Rendszer
III
Relációs modellek ...................................................................................... 27
LSP (Logistik Service Partner) relációs modellek ................................ 27
PageNames relációs modellek ............................................................ 28
SGHU (Starter Generators Hungary) diagram ..................................... 29
Adattáblák .................................................................................................. 29
USERS tábla ........................................................................................ 30
SGHUorder tábla ................................................................................. 31
PDFiles tábla ....................................................................................... 34
MilkRunMovement tábla ...................................................................... 34
LSP (Logistik Service Partner) tábla .................................................... 36
TPageNames tábla: ............................................................................. 37
Az alkalmazás felépítése ................................................................................ 37
Osztálydiagram ........................................................................................ 38
Fontosabb osztályok: ............................................................................... 39
A szoftver fontosabb funkcióinak bemutatása .......................................... 41
Új felhasználó ........................................................................................... 41
A hozzáférések kezelése ......................................................................... 42
Levél készítés .......................................................................................... 43
Fájlok feltöltése ........................................................................................ 45
Régió, nyelv beállítása ............................................................................. 46
Validálás .................................................................................................. 46
Riportok .................................................................................................. 47
Interaktív weblap .................................................................................... 49
Szoftvertesztelés ............................................................................................ 50
Statikus teszt ............................................................................................ 50
Felülvizsgálat ..................................................................................... 50
Statikus elemzés ................................................................................ 50
Dinamikus tesztelés ................................................................................. 53
Egységtesztek.................................................................................... 53
Felhasználói felület tesztelése ........................................................... 53
Meglévő rendszerekkel való tesztelés ............................................... 55
Fejlesztési lehetőségek .................................................................................. 56
Összegzés ...................................................................................................... 57
Summary ........................................................................................................ 58
Hivatkozások .................................................................................................. 59
Online Gépjármű Regisztrációs Rendszer
IV
Ábrajegyzék .................................................................................................... 60
Táblázatok jegyzéke ....................................................................................... 61
Online Gépjármű Regisztrációs Rendszer
1
Köszönetnyilvánítás
Ezúton szeretnék köszönetet mondani konzulenseimnek Smid Lászlónak és
Csizmadia Lillának, tanáraimnak, munkatársaimnak, családomnak, hogy lehetővé
tették és türelemmel segítették szakdolgozatom elkészítését.
Online Gépjármű Regisztrációs Rendszer
2
1. Bevezetés
2012 nyarától a Miskolci Robert Bosch logisztikai területen
szoftverfejlesztőként dolgoztam, majd 2018. január elsejétől (jelenleg is) a Starters
E-components Generators Automotive Kft-nél dolgozom.
Szakdolgozatom témájául egy olyan számítógépi program megírását
választottam, ami nagymértékben megkönnyíti a fogadóhelyen belépő - előre
tervezett - gépjárművek nyilvántartását, regisztrálását, valamint a portai
eseménynaplók kezelését, dokumentálását. A beléptetések és kiléptetések pontos
időponttal, a dokumentálást végző adataival együtt tárolódnak el. A rögzítendő
adatok a programban meghatározhatók, melyek a program jellemzőit alkotják. A
rendszer hálózatos és önálló változatban is üzemeltethető. Akár több különböző
belépési pontra alkalmazható. A be- és kilépés bármelyik fogadóhelyről kezelhető,
vagyis az egyik helyen belépett gépjármű a másik belépési helyen is távozhat
(hálózatos változat esetén). A kezelés rendkívül egyszerű, nem igényel
számítástechnikai ismereteket, használata 1-2 órán belül elsajátítható.
A jelenlegi nyilvántartási rendszer vizsgálata:
Jelenleg az adatok tárolására több Excel adattábla és Access adatbázis
szolgál.
A rendszer hibái:
- a táblázatok sérülékenyek,
- bonyolult, manuális a használata,
- lassú és pontatlan,
- felhasználói jogosultság megszerzése nélkül is szerkeszthetők az adatok,
- heterogén rendszerek sokasága,
- nem megoldott az adatok archiválása.
Online Gépjármű Regisztrációs Rendszer
3
Cég bemutatás
A Robert Bosch Energy and Body Systems Kft-t
2003 nyarán alapították. A cég első számú beszállítója
számos autógyárnak. A leggyorsabban fejlődő gyárak egyike a világon. A cég
Miskolcon gyártott, autóipari alkatrészeket szállít – többek között
klímaberendezéseket, villamos motorokat – jelentős autóipari cégeknek (AUDI,
BMW, MERCEDES), Európa összes országába, valamint Ausztráliába és az
Egyesült Államokba. Legújabb generációs termékei, például a fékrásegítő motor,
illetve a menet stabilizátor a hibrid és elektromos meghajtású járművek
nélkülözhetetlen alkatrészei. Az autóipari termékek mellett a gyár kiemelkedő
terméke az eBike meghajtás is, egy rendkívül fejlett és intelligens erőrásegítés-
rendszert alkalmazó motoregység, amely gyártásáért és technológiájáért is magyar
szakemberek felelnek. [1]
A Bosch csoport indítómotorokat és generátorokat
gyártó, nagy múltú részlege a Starters & Gernerators,
2018.01.01-től független társaságként működik
Magyarországon Starters E-Components Generators Automotive Hungary Kft.
néven. Globálisan a cégcsoport SEG Automotive Hungary Kft -ként lesz ismert. Az
új név az indítómotorok és generátorok fejlesztése és gyártása terén szerzett több
mint egy évszázados tapasztalatra és a jövőbe mutató e-mobilitási megoldásokra
egyaránt utal. Sikeres működését a társaság a Zhengzhou Coal Mining Machinery
Group Co. Ltd., mint új tulajdonos és egy befektetési csoport irányítása alatt folytatja
tovább tevékenységeit
Zhengzhou Coal Mining Machinery Group Co. Ltd: ZMJ-egy kínai cég, melyet
1958-ban alapítottak. A kínai piacon több mint 45%-os részesedéssel rendelkezik
és a vevői közé tartoznak a legnagyobb kínai szén feldolgozásával foglalkozó
cégek, mint pl.: China like Shenhua Coal, Datong Coal, Shanxi Coal, Huainan Coal,
Jincheng Coal mines, etc.
Az ASIMCO felvásárlásával, amely egy jelentős kínai autóipari beszállító, a ZMJ
egy második pillérként számol piaci tevékenysége során. SEG Automotive
megvásárlásával egy következő jelentős lépést tett annak irányába, hogy
nemzetközi szerepet töltsön be ebben a szektorban. A csoport 22 nemzetközi
leányvállalatból, raktározó cégből és holdingból áll.
Online Gépjármű Regisztrációs Rendszer
4
Fő termékei:
- öntött és kovácsolt termékek,
- általános gépek és felszerelések,
- nagy teherbírású bányászati gépek és berendezések,
- hidraulikus és pneumatikus alkatrészek.
Elsődleges piacai:
- Kelet-Európa,
- Délkelet-Ázsia.
Központ: Zhengzhou, Henan tartomány
Starters E-components Generators Automotive:
Világszerte 16 telephellyel rendelkezik (1. ábra), melyek összesen több mint 8000
embert foglalkoztatnak.
1. ábra - Telephelyek
A folyamatos fejlődés eredményeképpen, mára több ezer munkavállaló dolgozik
azon, hogy a Miskolcon előállított autóelektromossági alkatrészek a legjobb
minőségben és a leghatékonyabb módon jussanak el a felhasználókhoz.
Munkám során az alábbi feladatokat láttam el: riportok készítése, programfejlesztés
és karbantartása, adatbázis fejlesztés és karbantartás, elemzések, kimutatások és
prezentációk önálló elkészítése, adatok elemzése, értelmezése és rendezése,
adminisztrációs feladatok ellátása. [2]
Online Gépjármű Regisztrációs Rendszer
5
A szakdolgozat készítéséhez rendelkezésemre álló technikák
A következőkben ismertetem a dolgozat készítéshez használt hardveres és
szoftveres megoldásokat, valamint az általam elsajátított és szakmai ismereteket.
Asztali számítógép paraméterei
Típus: Lenovo ThinkCentre M900 Small Form Factor
CPU: Intel (R) Core(TM) i5-6500 CPU @ 3.20Ghz
RAM: 8GB
Operációs rendszer: Microsoft Windows 10 Enterprise
Server paraméterei
CPU: Intel (R) Xeon (R) CPU E5-2620 v3 @ 2.50GHz
RAM: 4GB
Operációs rendszer: Windows Server 2012 R2 Standard
Használt programok
Microsoft SQL Server Management Studio 17
Microsoft Visual Studio Professional 2017
Notepad++
Microsoft Access 2016, Excel 2016, Outlook 2016, Visio 2016
Elsajátított szakmai ismeretek
C; C#; SQL; HTML; CSS; VBA, JavaScript, Java alapszinten
UNIX/Linux ismeretek
SAP felhasználói szintű ismeretek
Microsoft Word; Outlook; PowerPoint; Visual Studio
Microsoft Excel, Access magas szintű ismerete
SQL Serverismeretek
ASP.NET, MVC
XML, WPF, WCF
Windows server alapismeretek (IIS)
Online Gépjármű Regisztrációs Rendszer
6
Fejlesztési lehetőségek elemzése
A fejezet taglalja a fejlesztési lehetőségeket, bemutatja az egyes elképzelések
előnyeit és hátrányait, meghatározásra kerül a fejlesztés további iránya.
Kész szoftver vásárlása
Ma már rengeteg ún. "dobozos" termék áll a jövőbeni felhasználók
rendelkezésére. A leggyorsabb megoldás, ha kiválasztjuk az igényeinkhez
legközelebb álló terméket, ami telepítés és betanulás után azonnal használható.
Hátrányai
Mivel a szoftver nem kifejezetten az igényeinkre szabottan készült, csak
azokhoz a legközelebb álló, ezért nem képes kezelni a helyi sajátosságokat, nem
tud megfelelően alkalmazkodni a felhasználók igényeihez. A készen vásárolt
termék, egy általános rendszert akar részben vagy egészben a felhasználóra
erőltetni. Nehezen vagy egyáltalán nem módosítható. Nehezen oldható meg a
szervízelése.
Külső céggel közösen történő fejlesztés
Megbízhatósági szempontból a legmegfelelőbb megoldást egy nagy szakmai
háttérrel rendelkező szoftverfejlesztő céggel közösen fejlesztett szoftver jelentheti.
Az így készülő szoftver pontos és gyors, maximálisan figyelembe veszi a helyi
sajátosságokat, alkalmazkodik a felhasználók igényeihez.
Hátrányai
Magas fejlesztési költségek, bonyolultabb az utólagos módosítás, a
szoftverkarbantartás plusz költség. Az adott szakterület jellegzetességeit és
megszorításait meg kell értetni a külső céggel.
Saját fejlesztésű szoftver készítése
Saját fejlesztésű szoftver készítésének előnyei:
- maximálisan figyelembe veszi a helyi sajátosságokat,
- alkalmazkodik a felhasználók igényeihez,
- több lépcsőben fejleszthető,
- biztosított a gyors szervízelés,
- saját erőforrásból megoldható,
- tervszerűen tovább fejleszthető,
- nem kerülnek cégspecifikus információk harmadik fél birtokába.
Online Gépjármű Regisztrációs Rendszer
7
Hátránya
Hosszú elkészülési idő.
A megfelelő fejlesztési lehetőség kiválasztása
A megoldási alternatívák vizsgálata után a saját fejlesztésű szoftver elkészítése
bizonyult a legmegfelelőbb megoldásnak. Ennek fő okait, a cég sajátosságaiból
adódó, árufuvarozással kapcsolatos speciális nyilvántartási igények, illetve a
szoftver továbbfejlesztésének és karbantartásának hosszú távú
megvalósíthatósága képezték. A szoftver a felmerülő felhasználói igényeknek
megfelelően fejleszthető.
A fejlesztés lépései:
- alapanyagok tervezett beérkezése külső beszállítóktól,
- az állandó körforgásban lévő, gyártásközi (Milkrun) fuvarok nyilvántartása,
- a termeléssel közvetlenül nem összefüggésbe hozható gépjárművek
mozgásának nyomon követése.
A saját fejlesztésű programom célja:
• a papír formátum lecserélése egy webes felületre,
• manuális feladatok automatizálása,
• a beléptetési folyamatok felgyorsítása,
• az OTD (On Time Delivery) mérés lehetővé tétele,
• Ipar 4.0 elképzeléseknek megfelelő rendszer kialakítása.
Online Gépjármű Regisztrációs Rendszer
8
Alkalmazás típusok elemzése
A fejezet összefoglalja a különböző alkalmazási fejlesztés lehetőségeit előnyit
hátrányait.
Mobilalkalmazások
Az ilyen típusú alkalmazások vékony kliens vagy vastag kliens
alkalmazásokként fejleszthetők. A vastag kliens mobilalkalmazások támogatják az
offline vagy alkalmanként online munkameneteket. A webes vagy vékony kliens
alkalmazások csak az online munkameneteket támogatják. A mobil alkalmazások
megtervezésekor az eszközforrások korlátozottak. [3]
Előnye
Támogatja a kézi eszközöket,
egyszerű a használat,
könnyű, hordozható az eszköz.
Hátránya
Beviteli és navigálási korlátozások,
korlátozott megjelenítési terület.
Vastag kliens alkalmazások
Az ilyen jellegű alkalmazások általában önálló alkalmazásokként vannak
kifejlesztve, grafikus felhasználói felülettel, amely adatokat jelenít meg több
vezérlővel.
Előnye
Képes kihasználni az ügyfél erőforrásokat,
jobb reagáló képesség, változatosabb felhasználói felület,
dinamikusabb jobb válaszidő.
Hátránya
Telepítési komplexitás,
verzió frissítési probléma,
Platform specifikus.
Szolgáltatási alkalmazások
A szolgáltatások megosztják a megosztott üzleti funkciókat és lehetővé teszik
az ügyfelek számára, hogy hozzáférjenek egy helyi vagy egy távoli rendszerből. A
Online Gépjármű Regisztrációs Rendszer
9
szolgáltatás műveletei az XML sémákon alapuló üzeneteket használnak, amelyek
egy csatornán áthaladnak. Az ilyen típusú alkalmazás célja az ügyfél és a kiszolgáló
közötti laza kapcsolódás elérése.
Előnye
Az ügyfél és a kiszolgáló között lazán kapcsolt kapcsolatok,
különböző és nem kapcsolódó alkalmazások felhasználhatók,
az interoperabilitás támogatása.
Hátránya
Nincs felhasználói felület,
a hálózati kapcsolattól függ.
Webes alkalmazások
Az ilyen típusú alkalmazások általában az online munkamenetet támogatják és
számos operációs rendszeren és platformon futó különböző böngészőket
támogathatnak.
Előnye
Széleskörű elérés és szabályokon alapuló felhasználói felület több
platformon,
könnyű telepítés és verziókezelés.
Hátránya
Folyamatos hálózati kapcsolat szükséges,
nehéz a vastag felhasználói felületet biztosítani.
Online Gépjármű Regisztrációs Rendszer
10
A megfelelő alkalmazási lehetőség kiválasztása
A megoldási alternatívák vizsgálata után a webes alkalmazás bizonyult a
legmegfelelőbb megoldásnak. Ennek okai a cég sajátosságaiból adódnak:
sok különböző eszköz,
nem igényel telepítést,
a szoftver továbbfejlesztése és karbantartása egyszerűbb,
a hálózat a teljes telephelyen ki van építve.
Online Gépjármű Regisztrációs Rendszer
11
Programozási nyelvek elemzése
A fejezet taglalja a legelterjedtebb programozási nyelvek előnyeit és hátrányait.
JAVA
A Java általános célú objektum orientált programozási nyelv. A Java-
alkalmazások általában bájtkódba vannak fordítva, amelyek bármilyen Java virtuális
gépen (JVM) futtathatók a számítógépes architektúrától függetlenül. A Java az egyik
legnépszerűbb programozási nyelv. A Java-t eredetileg a Sun Microsystems
fejlesztette ki. A nyelv nagyrészt a C és a C++ szintaxisából származik. [4]
Pl.:
Előnye
A Java magasabb szintű funkcionalitást és hordozhatóságot kínál, mivel az egyik
platformon írt programok az asztali számítógépeken, mobileszközökön és
beágyazott rendszereken futhatnak.
Ingyenes, egyszerű, objektum-orientált.
Érett nyelv, ezért stabilabb és kiszámíthatóbb, a Java Class Library lehetővé
teszi a platformok közötti fejlesztést.
Nagyon népszerű a vállalati, beágyazott és hálózati szinten, a Java nagy aktív
felhasználói közösséggel és támogatással rendelkezik.
A C és C++ programmal ellentétben a Java programokat a platformtól
függetlenül állítják ellő a bájtkód nyelvet, amely lehetővé teszi, hogy ugyanazt a
programot futtassa bármely olyan gépen, amelyen a JVM telepítve van.
Hatékony fejlesztői eszközökkel rendelkezik, mint például az Eclipse SDK és a
NetBeans, amelyek hibakeresési képességgel rendelkeznek és integrált
fejlesztési környezetet kínálnak.
Növekvő nyelvi sokszínűség és kompatibilitás.
Viszonylag zökkenőmentes kompatibilitás az egyik verzióról a másikra.
Hátránya
A Java nyelv viszonylag lassabb és több memóriaterületet igényel, mint a
többi natív programozási nyelv, például a C és a C++.
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
Online Gépjármű Regisztrációs Rendszer
12
Hiányzik a többszörös öröklődést, ami több objektum orientált nyelv hatékony
tulajdonsága.
JVM szükséges a futtatásukhoz.
PHP
A PHP egy kiszolgáló oldali szkriptnyelv, amelyet web fejlesztéshez
terveztek, de általános célú programozási nyelvként is használják. A PHP kódot
közvetlenül a HTML-kódba ágyazható A nyelv szintaxisa nagyon hasonlít a C/C++,
Java, JavaScript vagy Perl nyelvekhez. A kódot a web szerver PHP
feldolgozómodulja értelmezi, ezzel dinamikus weboldalakat hozva létre. Rasmus
Lerdorf 1995-ben indította útjára. [5] [6]
Pl.:
Előnyei
Ez a kiszolgáló oldali parancs fájlnyelv rendkívül könnyen megtanulható,
összehasonlítva más nyelvekkel. ha valaki például ismeri a C vagy Perl
szintaxisát, akkor könnyen és gyorsan megtanulhatja a PHP-t, mindez
köszönhető az egyszerűen érthető szintaxisnak.
Más nyelveknek hosszú scriptekre van szükségük, a PHP ugyanazt a munkát
elvégezheti néhány sornyi kóddal továbbá, ha változtatni szeretne, egyszerűen
szerkesztheti.
Nyílt forráskódú, ingyenes, nem kell drága szoftvereket vásárolnia hozzá,
webhelyét a minimális költséggel fejlesztik ki.
Mivel a PHP-t nagyszámú ember használja, nagy közösség jön létre, nem kell
aggódnia, ha valahol elakad, könnyen kap segítséget.
Platform független: akár Windows, MacOS, Linux vagy UNIX; támogatja az
összes főbb böngészőt.
PHP támogatja az összes fontos web szervert is, legyen az Apache vagy a
Microsoft IIS. Támogatja a Netscape és a személyes web szervert is, saját
memóriát használ, így a kiszolgáló terhelése és a betöltési idő automatikusan
csökken, ami a gyorsabb feldolgozási sebességhez vezet, csökkenti a fejlesztési
időt, amikor a webes alkalmazásokra, mint az eCommerce vagy a CRM.
Weboldalak és webes alkalmazások fejlesztésének egyik legbiztosabb módja,
mivel védelmi réteget kapott a vírusok és a fenyegetések ellen.
<?php echo '<p>Hello World</p>'; ?>
Online Gépjármű Regisztrációs Rendszer
13
Több mint két évtizede használják, több millió ember, a képességeit
bizonyítottan tesztelték, így a legtöbb fejlesztő bízik benne.
Hátránya
Nyílt forrású, így minden ember láthatja a forráskódot, ha vannak hibák a
forráskódban, akkor az emberek felhasználhatják a PHP gyengeségeit.
Nem alkalmazható nagy alkalmazásokhoz: nehéz karbantartani, mivel nem
moduláris.
Gyenge típus, az implicit konverzió meglepheti a gondatlan programozókat,
és váratlan hibákat okozhat.
A visszafelé kompatibilitás gyakran sérül, új verziókon nem mindig fut,
hibamentesen a régire irt kód
C#
A C# egy elegáns és típus biztos objektum-orientált programozási nyelv, amely
lehetővé teszi a fejlesztők számára, hogy különböző biztonságos és robusztus
alkalmazásokat készítsenek, amelyek a .NET-keretrendszeren futnak. A C
segítségével létrehozhat Windows ügyfélalkalmazásokat, XML web
szolgáltatásokat, elosztott összetevőket, ügyfél-kiszolgáló alkalmazásokat,
adatbázis-alkalmazásokat és még sok mást. A Visual C# fejlett kódszerkesztőt,
kényelmes kezelőfelület-tervezőket, integrált hibakeresőt és számos más eszközt
biztosít a C# nyelv és a .NET-keretrendszer alapján történő alkalmazások
fejlesztéséhez. A legújabb verzió a C# 7.2, amely 2017-ben jelent meg a Visual
Studio 2017 verziójával együtt. [7]
Pl.:
using System; namespace HelloWorld { class Hello { static void Main() { Console.WriteLine("Hello World!"); } } }
Online Gépjármű Regisztrációs Rendszer
14
Előnye
A C# egy .NET nyelv, támogatja a nyelv interoperabilitását, azaz hozzáférhet
bármelyik .NET kompatibilis nyelven írt kódhoz és örökölheti az ezeken a
nyelveken írt osztályokat is.
Lehetővé teszi több nyelv, például a C++, a Java vagy a Visual Basic használatát
és számos különböző nyelvű fordítóprogramot tartalmaz, amely egy platform
specifikus kódot (azaz Microsoft vagy Windows) állít elő.
Kihasználja a .NET-keretrendszer előnyeit.
A C# erősen típusos, ezért biztosítja a feldolgozás során a memóriában tárolt
adatok értelmének megőrzését, és megnehezíti vagy kizárja az adatok téves
értelmezését, tárolását és feldolgozását.
Objektum orientált, még az egyszerű adattípusok is objektumként vannak
kezelve pl.: az egy int- típushoz kapcsolódó módszerek könnyebben lehet
használni.
Egyszerűsített szintaxis, a C# megkísérli egyszerűsíteni a szintaxist, hogy
következetesebb és logikusabb legyen, miközben eltávolítja a C++ összetett
jellemzőit.
A C# a memóriakezelési problémákat is elveszi a fejlesztőtől a .NET
szemétgyűjtési rendszere segítségével, a már nem használt objektumokat a
szemétgyűjtő automatikusan felszabadítja.
Hátránya
A C# kevésbé rugalmas, mint a C++. A C# nagymértékben függ a .NET
keretrendszertől bármit, ami nem található meg a .NET keretrendszerben,
nehéz lesz végrehajtani.
Költséges a C# nem nyílt forráskódú.
A megfelelő programozási nyelv kiválasztása
A megoldási alternatívák vizsgálata után a C# bizonyult a legmegfelelőbb
megoldásnak. Ennek okai a cég sajátosságaiból adódnak:
a cégnél a preferált nyelv a c#,
a kapcsolódó rendszerek .NET platformra épülnek,
nagyobb támogatás,
korszerűbb és modernebb nyelv.
Online Gépjármű Regisztrációs Rendszer
15
A munkám során használt fontosabb alkalmazások
Ez a pont tartalmazza a fontosabb alkalmazásokat, amelyeket munkám során
használtam.
SQL Server Management Studio (SSMS)
Az SQL Server Management Studio (SSMS)
egy olyan szoftveralkalmazás, amelyet a Microsoft
SQL Server összes összetevőjének konfigurálásához,
kezeléséhez és felügyeletéhez használunk. Az eszköz
mind scriptszerkesztőket, mind pedig grafikus
eszközöket tartalmaz, amelyek a kiszolgáló objektumokkal és jellemzővel
foglalkoznak. [8]
A program nagy segítséget nyújtott a bonyolult és összetett táblák és
lekérdezések kezelésében, több adatbázis egyszerű és gyors átlátásában. A
programnak van egy saját Transact-SQL hibakeresője, ami a Transact-SQL kód
hibáinak feltárásában és működésük megértésében segített.
Microsoft Visual Studio
A Microsoft Visual Studio egy integrált fejlesztői
környezet (IDE) a Microsofttól. Számítógépes
programokat, weboldalakat, web alkalmazásokat, web
szolgáltatásokat és mobilalkalmazásokat fejleszt. A Visual Studio Microsoft
szoftverfejlesztési platformokat, például Windows API-t, Windows Forms-ot,
Windows Presentation Foundation-t, Windows Store-t és Microsoft Silverlight-et
használ. [9]
A munkám során web fejlesztés volt a meghatározó. A WEB fejlesztéshez
ASP.NET keretrendszert használtam. A program sokat segített mind a Front end és
a Back end fejlesztésében. Könnyen kezelhető grafikus, jól felépített program, ami
jól kezeli a különböző kiegészítőket, referenciákat (.dll).
Ezek közül kiemelnék néhányat:
AjaxControlToolkit.dll: ez segített a különböző AJAX kontrolok
használatában pl.: naptárak vagy fájl feltöltés,
ThoughtWorks. QRCode.dll: ezt használtam a QR-kód generálásban,
TinyMCE: HT7ML szövegszerkesztő, aminek segítségével a felhasználók
nem csak Plain text formátumban tudnak leveleket írni,
Online Gépjármű Regisztrációs Rendszer
16
ResXManager: a nyelvi fájlokat tette átláthatóbbá, kezelhetővé.
Felhasználók
Ebben fejezetben bemutatom, hogy milyen felhasználók szerepelnek a
programban. Jelenleg milyen rendszereket használnak, az új program miben segít
a mindennapi munkájuk során. A fejezetben a program működésének bemutatása
is leírásra kerül. A rendszer tervezett funkcionális működését, a rendszer
viselkedését és a környezetével való kapcsolatait használati eset (use case)
diagram segítségével írom le. A fejezetek végén egy felhasználói dokumentáció
szerepel.
Adminisztrátor
Feladata
A rendszer karbantartása. A felhasználók munkájának segítése, felhasználó
kezelés, esetleges informatikai támogatás.
A Jelenlegi rendszer hátrányai
Az adminisztrátor több különböző rendszert, programot kezel, átláthatatlan a
rendszer struktúrája, felépítése, a programok nincsenek szinkronban. Az
adminisztrátori feladatok nincsenek konkrétan meghatározva.
Online Gépjármű Regisztrációs Rendszer
17
Az új rendszer előnyei:
Az adminisztrátor feladatai egyértelműek, a rendszer karbantartása
egyszerűbb, átláthatóbb. Feladatait a 2. ábra mutatja.
2. ábra - Adminisztrátor diagramja
Online Gépjármű Regisztrációs Rendszer
18
Az adminisztrátor felhasználói dokumentáció:
A programban neki kell elsőnek belépni, Felhasználónév: „Admin” Jelszó:
„789_321fyk7b” ha ez megtörtént, a felületen következőkhöz van hozzáférése (3.
ábra):
3. ábra - Adminisztrátor felület
A Levelezés Beállításoknál alapestben a következő van beállítva (4. ábra), ezt tudja
módosítani, amit a tesztelés gombbal tesztelhet.
4. ábra - Levelezési beállítások
Felhasználói beállításokban a felhasználók számára a belépéshez szükséges
felhasználói nevek, jelszavak és az ezekhez tartozó jogosultságok kezelése.
Az adatbázis beállításoknál alapesetben a következő van beállítva (5. ábra).
Lehetőségünk van módosítani az Adatbázis Kapcsolatot, ha új adatbázist
használunk szükséges az adatbázis létrehozása, ezt a felületen tehetjük meg vagy
pedig a script.sql fájl lefuttatásával. Speciális estekben lehetséges beállítani egy
másodlagos adatbázis tesztelés céljából. A program automatikusan a teszt
adatbázisra kapcsolódik, ha felhasznál „tesztuser” vagy „tesztfelhasznalo”. Az
adatbázis kapcsolatokat a teszt gombbal tesztelheti.
5. ábra - Adatbázis beállítás
Online Gépjármű Regisztrációs Rendszer
19
Fuvarszervező
Általános feladatai
A fuvarok leszervezése, nyilvántartása, útvonalak tervezése, kommunikáció a
beszállítókkal.
A Jelenlegi rendszer hátrányai
A fuvarok nyilvántartása egy Microsoft Access programban történik, a program
sérülékeny, nehezen karbantartható, nem megbízható és egyszerre csak egy
felhasználó használhatja, ezzel lassítja a napi folyamatokat. A fuvarozók értékelése
kivitelezhetetlen.
Az új rendszer előnye
Egy központi rendszert használ, fuvarok átláthatóbb, egyszerűbb
nyilvántartása, egyszerre több felhasználó is dolgozhat a rendszerben. Feladatait a
6. ábra mutatja.
6. ábra - A fuvarszervező diagramja
Online Gépjármű Regisztrációs Rendszer
20
Fuvarszervező felhasználó dokumentáció
Fuvarok készítése a saját SGH (Starter Generators Hungary) űrlapon történik
(7. ábra). Itt a fuvarra jellemző adatok és a küldendő levél adatainak kitöltése
történik. A felületet egyszerre több felhasználó is használhatja, nem zavarják
egymás munkáját. A fuvarozó kiválasztása után a szállítmányozói adatok
automatikusan kitöltődnek. Ha a fuvarozó adatokat módosítjuk, a rendszer
automatikusan érzékeli és a módosításokat menti az adatbázisban. A legördülő
listák tartalmát bővíthetjük, ha az „* Egyéb *” lehetőséget választjuk, ilyenkor tudjuk
plusz adatokkal bővíteni a legördülő listát. Miután a mezők megfelelően kitöltése
megtörtént a mentés gombra kattintva, az adatok rögzítésre kerülnek.
7. ábra - A szállítás megrendelőlapja
A program automatikusan egyedi azonosító számot generál (QR kódot + QR
kód azonosítót), ami az egyes szállítmányok megkülönböztethetőségét biztosítja. A
program által készítésre kerül az aktuális fuvar adatait tartalmazó e-mail. A
felhasználónak lehetősége van továbbítás előtt az e-mail adatait ellenőrizni és
szükség esetén módosítani. A fuvarozó részére küldött e-mail kinyomtatásával
létrehoz egy azonosító lapot, mely tartalmazza a szállítmány adatait és ez lesz a
fuvar „igazolványa”. Feladatuk továbbá az adatok karbantartása: a
Online Gépjármű Regisztrációs Rendszer
21
fuvarszervezőknek lehetősége van az adattáblák módosítására, az adattáblák a
menüben navigálva érhetőek el, ilyen táblák pl az LSP (Logistik Service Partner),
SGH (Starter Generators Hungary).
o Az LSP (Logistik Service Partner) tábla a fuvarozó adatait
tartalmazza. A kiválasztás után egy felrúgó ablakban tudjuk
módosítani a hozzá tartozó adatokat. Ilyenek az elérhetőség,
telefonszám, kapcsolattartók. Ha új adatot akarunk felvinni
szintén a jel megnyomásával lehetséges.
A fuvarszervezőknek is van lehetőségük a riportok készítéséhez hasonlóan, mint
az adminisztrátoroknak.
Online Gépjármű Regisztrációs Rendszer
22
Irodai asszisztens
Feladatai
A fuvarszervezők munkájának előkészítése, kiegészítő munkák ellátása,
számlaellenőrzés, riportok készítése, fuvarozókkal kapcsolattartás.
A jelenlegi rendszer hibái
Nincs felhasználó kezelés, adatokat tudnak módosítani, illetve törölni
véglegesen a rendszerben. Nem lehetséges az On Time Delivery felül vizsgálata.
Az új rendszer előnyei
Egy központi rendszer, egységes adatokat használnak, a fuvar adatait nem
tudjak módosítani, több felhasználó, több feladatkörben tudja segíteni a
fuvarszervezők munkáját.
Irodai asszisztens felhasználói dokumentáció
A meglévő fuvarok kiegészítése és fuvarszervezés rögzítése során vannak
adatok, amelyek csak utólag állnak rendelkezésre, ezeknek az adatoknak az
utólagos rögzítése az irodai asszisztens (Adminisztrátor) feladata (pl.: tervezett
érkezés időpontja).
Egyik fő feladatuk a riportkészítés (9. ábra), amely két nagy részre bontható:
az alapanyag beérkezésével kapcsolatos szervezett fuvarok riportjai,
az állandó körforgásban lévő, gyártásközi fuvarok riportálása. Feladatit a
8. ábra mutatja.
8. ábra - Irodai asszisztens diagramja
Online Gépjármű Regisztrációs Rendszer
23
A riportok fajtái pl. mozgási riportok, időriport, időablak alapú riport vagy pedig teljes
listákat lehet készíteni.
9. ábra - Riport készítése
Mozgási riportok: A különböző gépjárművek mozgását lehet rögzíteni,
ilyenkor a riport tartalmazza, hogy hol történt az érkezés, illetve a
távozás, milyen árut mozgatott, az áruhoz milyen egyedi azonosítók
kapcsolódnak.
Időriport: Hasonló, mint a százalékos riport csak itt nem százalékban,
hanem percben mérünk, a várt érkezéshez képest mennyivel érkezett
hamarabb vagy később a szállítmányozó. Az időriportoknál fontos
szerepe van a színeknek.
o abban az esetben, ha a rendelés törlésre került, citromsárga
színnel jelöltem,
o világoskék színt kapott az a sor, ahol a tervezett érkezés még
nincs kitöltve,
o zölddel jelöltem azt a sort, ahol a tervezett érkezéshez képest
az eltérés +- 15 perc,
o piros színt az a sor kapott, ahol, a tervezett érkezéshez képest
az eltérés több, mint +- 15 perc.
Időablak alapú riport: Ez csak az időablakkal rendelkező fuvarokra
használjuk. Ez a riport egy tervezett időablakhoz viszonyítja az
érkezéseket és távozásokat. A riport tartalmazza az időablak szerinti-
illetve a valós érkezéseket.
Online Gépjármű Regisztrációs Rendszer
24
Egyéb riportok: A program adattábláit lehet riportálni, pl.: LSP (Logistik
Service Partner) tábla
A riportok könnyebb prezentáláshoz lehetőségünk van az adatok exportálásra Excel
formátumban, legtöbb helyen ez az ikon jelzi:
A riport készítésnél lehetséges az adatokra szűrni pl.: dátumra vagy fuvarozóra.
Gépjárműfogadó
Feladatai
A tehergépjárművek beléptetése a telephelyre, adminisztratív munkák.
A jelenlegi rendszer hibái
Az adtok tárolása Microsoft Excelben vagy papíralapon történik, ezért lassú és
pontatlan a regisztrálás. Nincs felhasználó kezelés, adatokat tudnak módosítani,
illetve törölni korlátozások nélkül. Nem lehetséges az On Time Delivery
megvalósítás.
Az új rendszer előnyei
Egységes adatokat használnak, a fuvarokat nem tudjak módosítani, több
felhasználói kör. Feladatait a 10. ábra mutatja.
10. ábra - Gépjárműfogadó diagramja
Gépjárműfogadó felhasználói dokumentáció
Az alapanyag beérkezésénél és az állandó körforgásban lévő, gyártásközi
fuvarok kezelése hasonlóan történik. A szállításokat az egyedi azonosítószámok
alapján lehet megkülönböztetni.
1. A szállítmány megérkezik az érkeztető helyre, a gépjárművezető az áru
érkeztetőnek átadja az azonosító lapot, amely tartalmazza fuvarszervező által
előzetesen generált és e-mail-ben elküldött azonosító adatokat, a QR kódot +
Online Gépjármű Regisztrációs Rendszer
25
QR kód azonosítót. Ezeket a lapokat minden be- és kilépéskor használni kell a
következő módon. A QR-kódot tartalmazó lap (11. ábra), a beszkennelés után a
sofőrnél marad.
11. ábra - Azonosító lap
2. A porta szolgálat egy tagja az azonosító lapon szereplő kódot a
rendelkezésre álló QR kód leolvasóval beolvassa, ha ez nem sikerül, akkor
a kód felett szereplő azonosítót írja be a sárga mezőbe. A beazonosítás
során a program önműködően kitölti a mezők egy részét, a hiányzó mezőket
manuálisan pótolni kell (12. ábra).
12. ábra - Portai felhasználói felület
3. Az „Adatok Felvétele” gombra rákattintva befejeződik a folyamat.
Online Gépjármű Regisztrációs Rendszer
26
4. Sikeres adatok felvétele után egy üzenetablak jelenik meg (13. ábra).
13. ábra - Üzenetablak
Az „OK” gomb megnyomása utána a rendszerbe rögzíteni lehet az újabb adatokat.
Online Gépjármű Regisztrációs Rendszer
27
Adatbázis tervezés
Adatbázis szerkezetének leírása
Az adatok összegyűjtése és rendszerezése után, az adatkezelés
megvalósítására a megfelelő megoldást egy jól átgondolt, a szükséges adattábla
kapcsolatokkal rendelkező adatbázis létrehozása jelenti. Az adatbázisnak
biztosítania kell az egységes adattárolást és adatkezelést továbbá a gyors, pontos
és megfelelően ellenőrzött információáramlást. Két fajta nyelvet használok
adatbázis kezelésére:
XML (Extensible Markup Language, Kiterjeszthető Jelölő Nyelv): a W3C által
ajánlott általános célú leíró nyelv, speciális célú leíró nyelvek létrehozására. előnye,
hogy ha egy szövegszerkesztővel (például Notepad vagy Microsoft Word) nyitjuk
meg, akkor írható, értelmezhető és manipulálható. Felhasználása programban több
helyen történik legfontosabb a web.xml fájl és a nyelvi fájlok (.Resx) tárolása. [10]
SQL,(Structured Query Language strukturált
lekérdezőnyelv) relációsadatbázis-kezelők lekérdezési nyelve. Felhasználása
programban több helyen történik a legfontosabb az adatok hosszú távú tárolása.
Relációs modellek
Az adatbázis szerkezetét a táblák, oszlopok, kulcsok kapcsolatát a következő
grafikus diagramok mutatják be.
LSP (Logistik Service Partner) relációs modellek
14. ábra - LSP diagram
Szerepe:
A fuvarozók adatainak tárolása, a város és ország táblát újra felhasználom (14.
ábra).
Online Gépjármű Regisztrációs Rendszer
28
PageNames relációs modellek
15. ábra - PageNames diagram
Szerepe:
A dinamikus menühöz tárolja az adatokat. A város és ország táblát újra
felhasználom (15. ábra).
Online Gépjármű Regisztrációs Rendszer
29
SGHU (Starter Generators Hungary) diagram
16. ábra - SGHU (Starter Generators Hungary) diagramja
Szerepe:
A rendelésekhez tárolja az adatokat. A város és ország táblát újra felhasználom (16.
ábra).
Adattáblák
Az adattáblákat az adminisztrátor tudja létre hozni, módosítani. Néhány
fontosabb tábla, ami program működéséhez nélkülözhetetlen:
Online Gépjármű Regisztrációs Rendszer
30
USERS tábla
Modell
Nézet:
PRIMARY KEY Name Data Type Allow Nulls
Yes UserId int False
Username nvarchar(20) True
Password nvarchar(20) True
Email nvarchar(60) True
CreatedDate smalldatetime True
LastLoginDate smalldatetime True
Signature text True
Nev varchar(50) True
CegID int True
torolve bit True
PasswordChange bit False
HomePage int True
T-SQL: CREATE TABLE [dbo].[Users] (
[UserId] INT IDENTITY (1, 1) NOT NULL,
[Username] NVARCHAR (20) NULL,
[Password] NVARCHAR (20) NULL,
[Email] NVARCHAR (60) NULL,
[CreatedDate] SMALLDATETIME NULL,
[LastLoginDate] SMALLDATETIME NULL,
[Signature] TEXT NULL,
[Nev] VARCHAR (50) NULL,
[CegID] INT NULL,
[torolve] BIT NULL,
[PasswordChange] BIT NOT NULL,
[HomePage] INT NULL,
[active] BIT CONSTRAINT [DF_Users_active] DEFAULT
((0)) NOT NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED ([UserId]
ASC)););
1. táblázat - USERS tábla
Online Gépjármű Regisztrációs Rendszer
31
Szerepe:
A felhasználói adatok tárolás fontos, mert ennek a táblának a segítségével
tudjuk megoldani a felhasználók kezelését (1. tábla).
Fontosabb mezők:
[Signature]: a felhasználók aláírását tartalmazza az automatikusan
generált levelekhez.
[PasswordChange]: ebben a mezőben tárolom a jelszócsere
engedélyét, mert nem minden felhasználónak engedélyezett a csere.
[HomePage]: ez fog automatikusan megjelenni belépéskor.
SGHUorder tábla
Modell
Nézet:
PRIMARY
KEY
Name Data Type Allow
Nulls
Default
OrderID int False
ProfitCenter int True
Info text True
StartDate date True
Person nchar(40) True
Computer nchar(10) True
Nyomonkovetesi nchar(10) True
Konyvelesi numeric(14,0) True
SzamlazottAr decimal(10,4) True
Szamlaszam nchar(20) True
Olepdf nchar(10) True
Igenylo nchar(50) True
TrackingNumber varchar(25) True
Honnan int True
Hova int True
Plannedpickup date True
Actualpickup date True
Plannedarrival datetime True
Actualarrival datetime True
Comment varchar(50) True
Online Gépjármű Regisztrációs Rendszer
32
Forwarder int True
Service varchar(50) True
Subject varchar(50) True
ColorID int False ((1))
Deleted bit False ((0))
Arrived bit True ((0))
QRCodeID varchar(50) True
TrailerNumber varchar(25) True
receptionID int True
szalitolevelCMR varchar(50) True
kártyaszám varchar(50) True
plombaszam varchar(50) True
kiszallitas bit True
T-SQL: CREATE TABLE [dbo].[SGHUOrder] (
[OrderID] INT IDENTITY (1, 1) NOT NULL,
[ProfitCenter] INT NULL,
[Info] TEXT NULL,
[StartDate] DATE NULL,
[Person] NCHAR (40) NULL,
[Computer] NCHAR (10) NULL,
[Nyomonkovetesi] NCHAR (10) NULL,
[Konyvelesi] NUMERIC (14) NULL,
[SzamlazottAr] DECIMAL (10, 4) NULL,
[Szamlaszam] NCHAR (20) NULL,
[Olepdf] NCHAR (10) NULL,
[Igenylo] NCHAR (50) NULL,
[TrackingNumber] VARCHAR (25) NULL,
[Honnan] INT NULL,
[Hova] INT NULL,
[Plannedpickup] DATE NULL,
[Actualpickup] DATE NULL,
[Plannedarrival] DATETIME NULL,
[Actualarrival] DATETIME NULL,
Online Gépjármű Regisztrációs Rendszer
33
[Comment] VARCHAR (50) NULL,
[Forwarder] INT NULL,
[Service] VARCHAR (50) NULL,
[Subject] VARCHAR (50) NULL,
[ColorID] INT CONSTRAINT [DF_SGHUOrder_Color]
DEFAULT ((1)) NOT NULL,
[Deleted] BIT CONSTRAINT
[DF_SGHUOrder_Deleted] DEFAULT ((0)) NOT NULL,
[Arrived] BIT CONSTRAINT [DF_SGHUOrder_Arrived]
DEFAULT ((0)) NULL,
[QRCodeID] VARCHAR (50) NULL,
[TrailerNumber] VARCHAR (25) NULL,
[receptionID] INT NULL,
[szalitolevelCMR] VARCHAR (50) NULL,
[kártyaszám] VARCHAR (50) NULL,
[plombaszam] VARCHAR (50) NULL,
[kiszallitas] BIT NULL,
CONSTRAINT [PK_SGHUOrder] PRIMARY KEY CLUSTERED
([OrderID] ASC));
2. táblázat - SGHUorder tábla
Szerepe:
A fuvarszervezők által létrehozott fuvarok tárolása (2. tábla).
Fontosabb mezők: [3]
[OrderID]: az azonosító az alapanyag beérkezésével kapcsolatos
szervezett fuvarok azonosítja, fontos, hogy egy szám csak egyszer
szerepeljen.
[Olepdf]: az azonosító tárolja a csatolt fájlokat.
[Deleted]: fontos, hogy ebből a táblából semmit nem törlünk, hogy
későbbiekben vissza tudjuk álltani, ezért csak szimbolikus a törlés,
ezt egy mezőben jelezzük, hogy törölve lett.
[QRCodeID]: minden fuvarnak lesz egy azonosítója, amit az érkeztető
helyen olvasnak be egy QR kód olvasóval fontos, hogy nem lehet
Online Gépjármű Regisztrációs Rendszer
34
használni az OrderID, mivel az a csak egy szám így félő, hogy
azonosító nem a valós fuvarhoz tartozik, ezért minden fuvarnak egy
véletlen számot generálunk, ami biztosan azonosítja a fuvart.
PDFiles tábla
Modell
Nézet:
PRIMARY KEY Name Data Type Allow Nulls Default
Yes ID int False
name varchar(50) True
type varchar(50) True
data varbinary(MAX) True
T-SQL: CREATE TABLE [dbo].[PDFiles] (
[ID] INT IDENTITY (1, 1) NOT NULL,
[name] VARCHAR (50) NULL,
[type] VARCHAR (50) NULL,
[data] VARBINARY (MAX) NULL,
CONSTRAINT [PK_PDFiles] PRIMARY KEY CLUSTERED ([ID]
ASC));
3. táblázat - PDFiles tábla
Szerepe:
A fájlok tárolása az adatbázisban. Egyik tárolási mód, ami hasznos akkor, ha
hosszabb időre kell tárolni a fájlokat. Másik tárolási mód egy publikus mappa a
felhasználóknak, a publikus mappa hozzáférést jól kell meghatározni (3. tábla).
Fontosabb mezők:
[data]: itt az adatokat bináris formátumban tárolom.
MilkRunMovement tábla
Modell
Nézet:
PRIMARY KEY Name Data Type Allow Nulls Default
Yes ID int False
name varchar(50) True
type varchar(50) True
data varbinary(MAX) True
Online Gépjármű Regisztrációs Rendszer
35
T-SQL: CREATE TABLE [dbo].[MilkRunMovement] (
[ID] INT IDENTITY (1, 1) NOT NULL,
[TrackingNumberID] INT NOT NULL,
[InDate] DATETIME NULL,
[OutDate] DATETIME NULL,
[receptionID] INT NULL,
[commentIN] VARCHAR (50) NULL,
[InPalette] INT NULL,
[OutPalette] INT NULL,
[befele] BIT NULL,
[szalitolevelCMR] VARCHAR (200) NULL,
[kártyaszám] VARCHAR (50) NULL,
[plombaszam] VARCHAR (50) NULL,
[kiszallitas] BIT NULL,
[commentOUT] VARCHAR (50) NULL,
[EgyediAzonositIn] VARCHAR (50) NULL,
[EgyediAzonositOut] VARCHAR (50) NULL,
CONSTRAINT [PK_MilkRunMovement] PRIMARY KEY
CLUSTERED ([ID] ASC)
4. táblázat - MilkRunMovement tábla
Szerepe:
Az állandó körforgásban lévő kamionok rögzítése, itt fontos, hogy nem csak
befelé jönnek a kamionok, hanem kifelé is mennek, ezért bizonyos mezők csak
távozás után lesznek kitöltve (4. tábla).
Fontosabb mezők:
[InDate]: érkezés dátuma
[OutDate]: távozás dátuma, mindig a legutolsó beérkezési dátumhoz
tárolom el.
Online Gépjármű Regisztrációs Rendszer
36
LSP (Logistik Service Partner) tábla
Modell
Nézet:
PRIMARY KEY Name Data Type Allow Nulls Default
ID int False
Name varchar(50) False
Email varchar(150) True
CC varchar(150) True
PostCode int True
City int True
Adress varchar(50) True
Country smallint True
Fax decimal(11,0) True
T-SQL: CREATE TABLE [dbo].[LSP] (
[ID] INT IDENTITY (1, 1) NOT NULL,
[Name] VARCHAR (50) NOT NULL,
[Email] VARCHAR (150) NULL,
[CC] VARCHAR (150) NULL,
[PostCode] INT NULL,
[City] INT NULL,
[Adress] VARCHAR (50) NULL,
[Country] SMALLINT NULL,
[Fax] DECIMAL (11) NULL,
CONSTRAINT [PK_LSP] PRIMARY KEY CLUSTERED ([ID] ASC,
[Name] ASC),
CONSTRAINT [FK_LSP_City] FOREIGN KEY ([City])
REFERENCES [dbo].[City] ([ID]),
CONSTRAINT [FK_LSP_country] FOREIGN KEY ([Country])
REFERENCES [dbo].[country] ([id]));
5. táblázat - LSP tábla
Szerepe:
A fuvarozok adatainak tárolása (5. tábla).
Fontosabb mezők:
[Email]: ezt a címet használják a fuvarszervezők a levél kiküldésénél.
Online Gépjármű Regisztrációs Rendszer
37
TPageNames tábla:
Modell
Nézet:
PRIMARY KEY Name Data Type Allow Nulls Default
True MenuId int False
PageName varchar(50) True
Name varchar(50) True
ParentmenuId int True
Title varchar(100) True
Description varchar(100) True
Url varchar(100) True
T-
SQL:
CREATE TABLE [dbo].[TPageNames] (
[MenuId] INT IDENTITY (1, 1) NOT NULL,
[PageName] VARCHAR (50) NULL,
[Name] VARCHAR (50) NULL,
[ParentmenuId] INT NULL,
[Title] VARCHAR (100) NULL,
[Description] VARCHAR (100) NULL,
[Url] VARCHAR (100) NULL,
CONSTRAINT [PK_TPageNames] PRIMARY KEY CLUSTERED
([MenuId] ASC));
6. táblázat - TPageNames tábla
Szerepe:
A dinamikus menühöz tárolja az adatokat (6. tábla).
Fontosabb mezők:
[menu_id]: egy egyedi inkrementális azonosító.
[ParentmenuId]: gyerek ParentmenuId szerepe, hogy a megfelelő
szülő alatt jelenjen meg a menü.
Az alkalmazás felépítése
A következő részben az alkalmazás egyes funkcióinak az implementációját
mutatom be forráskódok segítségével. Két nagyobb részre osztom, az első
részben az osztály diagramokat mutatom, be a második rész pedig a program
fejlesztői dokumentációját tartalmazza a program konkrét megvalósítását.
Online Gépjármű Regisztrációs Rendszer
38
Osztálydiagram
Az osztálydiagramok az alkalmazás strukturális szerkezetét mutatják be, hogy
milyen osztályok vannak és azok milyen adattagokból, metódusokból állnak. Az
osztályokat és a közöttük levő viszonyokat is ábrázolja (17. ábra).
17. ábra - Osztálydiagram
Online Gépjármű Regisztrációs Rendszer
39
Fontosabb osztályok:
Functions: Ez az osztály tartalmazza a fontosabb metódusokat, így a kódokat
újra tudtam használni. A metódusok paramétereinek a leírásához a <param>
tagoz használtam (18. ábra).
. 18. ábra - Functions osztály
BasePage: Az összes honlap ebből az osztályból származik. A másik fontos
pont a honlapok hozzáférése. Amennyiben felhasználó birtokába kerül egy
honlap elérhetősége, amihez nincs hozzáférése, a megnyitás előtt ellenőrzi
a program az adatbázisban, hogy rendelkezik e hozzáférési jogosultsággal,
ha nem, a szoftver hibaüzenet formájában tájékoztatja a felhasználót. Ezt
egy BasePage nevezetű osztállyal oldottam meg, ahol az ellenőrzés történik
(19. ábra).
19. ábra - BasePage osztály
Online Gépjármű Regisztrációs Rendszer
40
Base classes: Az összes osztály ebből az egy osztályból származik.
Segítséget nyújt más osztályok létrehozásához, amelyek újra
felhasználhatják az alap osztályból örökölt kódot. Fontosabb
metódusok:ToString (18. ábra).
20. ábra - Base osztály
Online Gépjármű Regisztrációs Rendszer
41
A szoftver fontosabb funkcióinak bemutatása
A következő fejezetben az általam készített fontosabb funkciók részleteit
taglalom. Ezen kívül a rendszer több más funkciót is tartalmaz.
Új felhasználó
A bejelentkezéshez az ASP.NET
saját beépített bejelentkező felületét
használtam (21. ábra). Belépés előtt
a felhasználót regisztrálni kell a
rendszerben. Ezt kétféleképpen lehet
megoldani, vagy az adminisztrátor
rögzíti manuálisan vagy a
felhasználó egy külön honlapra
navigál, ahol regisztrálhat saját felhasználói név és jelszó megadásával, ezután
kiválaszthatja, milyen szerepkörhöz kér hozzáférést.
A felhasználók beillesztésre egy tárolt eljárást használok [Insert_User] (22. ábra).
21. ábra - Bejelentkezés
22. ábra - A felhasználók beillesztésének folyamatábrája
Online Gépjármű Regisztrációs Rendszer
42
Az eljárás felhasználói adatok, (felhasználónév, a jelszó és az e-mail cím)
beillesztésére szolgál. Az eljárás ellenőrzi, hogy a felhasználó létezik vagy a
megadott felhasználónév alapján vagy a megadott e-mail cím alapján, ha létezik
akkor, a negatív 1 értékkel tér vissza ha érvényesek az adatok, akkor a rekord
beillesztésre kerül és az automatikusan generált UserId értéket adja vissza.
Ennek az eljárásnak köszönhetően megoldjuk az SQL injection
sérülékenység problémáját, így az olyan karakterek, amelynek az SQL nyelvben
speciális szerepe van (pl. aposztróf, idézőjel), az újonnan előállt SQL utasítás nem
fog mást csinálni csak azt, amire eredetileg használni akartam.
Sikeres regisztráció után egy aktiválási kód generálodig a Guid NewGuid
eljárás segítségivel, ami beillesztésre kerül a UserActivation táblába. Ezután egy
levelet küld a felhasználó e-mail címére, amely tartalmazza az aktiválási oldal URL-
jével generált aktiválási kódot. az URL QueryString-ben. A megadott felhasználónév
és e-mail cím érvényesítéséhez, felhasználónak rá kell kattintani az aktiválási linkre,
így az e-mail cím ellenőrzésre kerül. Ha az aktiváló kód érvényes a fiókja
aktiválódig, majd automatikusan a bejelentkező felületre irányítja át a rendszer.
Közben az adminisztrátor is kap egy levelet az új felhasználóról, majd az
adminisztrátor ellenőrzi, hogy helyesek-e az adatok és engedélyezi a kért
hozzáférést.
A hozzáférések kezelése
Több helyen is szükséges a felhasználó szintek megfelelő kezelése.
Az egyik ilyen elem a menü, ami az aktuális felhasználó jogosultságának
megfelelő menüelemeket jeleníti meg, amelyek segítségével az adott felhasználói
tevékenység maradéktalanul elvégezhető. A programban - mivel a statikus menü
erre a célra nem felel meg - úgy döntöttem, hogy olyan kódot alkalmazok, amely
dinamikusan jeleníti meg a menüt az oldalon és adatbázis alapú. ASP.NET beépített
menüjét használtam, mivel egyszerű a használata és könnyen módosítható. A
Master oldalon található a menü ezért minden betöltésnél ujjá építem.
A másik fontos pont a honlapok hozzáférése. Ha a felhasználó birtokába
kerül egy honlap elérhetősége, amihez nincs hozzáférése, a megnyitás előtt
ellenőrzi a program az adatbázisban, hogy rendelkezik e hozzáférési
jogosultsággal, ha nem, a szoftver hibaüzenet formájában tájékoztatja a
felhasználót. Ezt egy BasePage nevezetű osztállyal oldottam meg, ahol az
Online Gépjármű Regisztrációs Rendszer
43
ellenőrzés történik, az ellenőrizni kívánt honlapok ennek az osztálynak a
„gyermeke”. A BasePage pedig a System.Web.UI.Page „gyermeke” így a honlap a
továbbiakban is működik.
A harmadik fontos hely, ahol a felhasználók ellenőrzésre kerülnek az a
tesztelés. Az éles rendszerben, ha szükséges a tesztelés az éles adatbázist nem
lehet módosítani, ezért egy tükör adatbázist használok a teszteléshez. Speciális
felhasználók vannak a rendszerbe, akik csak a teszt adatbázishoz férnek hozzá.
Az adatbázis kapcsolódásokhoz mindig using parancsot használom így elérhető,
hogy az objektum használat után felszabaduljon.
A felhasználó nevet User.Identity.Name segítségével kapom vissza.
Levél készítés
A levélkészítés két fajtáját használom:
Automata levél: ez a legtöbb helyen használt levél, amit a rendszer
automatikusan generál és küld. Általában felhasználó létrehozásnál és hiba
kezelésnél használom. Hibakezelésnél a catch ágba kerül a levélküldés, ilyenkor a
levél tartalmazza hibapontos leírását, dátumot ezzel könnyebbé téve a hiba
kezelését.
Manuális levél: a fuvarszervezők generálják. Ez bonyolultabb, mivel a
felhasználók küldés előtt szeretnék látni a levelet - nem csak a weblapon - az általuk
használt Microsoft Outlook programban is, mint egy új levél.
A megvalósításhoz a fuvarszervezőknek a program kompatibilitását
szűkíteni kellett, mivel a levelező program kliens oldali, ezért csak is kliens oldalt
futó programba tudtam megírni (Mail.JS) a választás JavaScript lett. az Outlook-ot
egyedül az ActiveXObject("Outlook.Application") tudja kezelni, ez a kiegészítő csak
az Internet Explorerben található. Így a fuvarkészítésénél kötelező az IE használat.
A levél készítés részletesebben: Miután a felhasználók kitöltöttek az űrlapot és az
adatok lementése megtörtént, a levél több elemét is a C# generálja, ezek közül
fontosabb a levél teste, ami egy HTML szöveg, ehhez egy külön webes
szövegszerkesztőt használok. A levél másik fontos eleme egy kép, ami tartalmazza
a QR kódot. A QR kód a következőképpen épül fel: az eleje az „SGHU”, ami a fuvar
típusát mutatja, a következő számsor az ID, ezután pedig 4 karakteres
using (SqlConnection con = new SqlConnection(Functions.ConnectionString(User.Identity.Name)))
{…}
Online Gépjármű Regisztrációs Rendszer
44
véletlenszerűen generált 4 karaktert tartalmaz. Ez azért szükséges, hogy biztosan
csak a program által generált QR kód ellenőrzése után léphessen be a szállítmány
az üzem területére.
Abban az esetben, ha a fuvarozó rendkívüli esemény következtében a képet nem
tudja a beléptetés helyére eljuttatni, akkor az egyedi azonosító szám segítségével
a beléptetés végrehajtható, amit a kép alá beégetek. A kód előállítás a következő
program sort használom:
A végeredmény hasonló módon néz ki (23. ábra).
23. ábra - SGHU QR kód minta
A levél elemeit összefűzőm és egy szöveges változóban tárolom, amit tömb
paramétereként adok át a JavaScript függvényének. A következő féleképpen:
string QRCodeID = "SGHU" + orderid + RandomString(9 - orderid.Length);
string script = "window.onload = function(){call_me(" + parameters + ")};"; this.Page.ClientScript.RegisterStartupScript(GetType(), "call_me", script, true);
Online Gépjármű Regisztrációs Rendszer
45
Fájlok feltöltése
A fájlok feltöltéséhez az AjaxFileUpload vezérlőt használtam. Ezzel csak
tárolom a fájlokat egy mappában, miután a mentés megtörtént. A program a
feltöltött fájlokat átalakítja bináris adattá, majd ezt feltöltöm egy adatbázisba.
Itt az e.FileName, feltöltött fájl neve. A folderPath pedig felhasználóként eltérő
mappa szerveren a létrehozása a következő féle képen történik:
Itt a HostingEnvironment.MapPath parancsot használtam, mivel a teljes elérési
útvonalat nem ismertem, hogy mappák eltérők legyenek, ezért a felhasználó
neveket használtam.
A program indulásánál meg kell nézni, hogy a mappa létezik-e, ha igen törölni kell,
majd egy újat létrehozni. Abban az esetben, ha a törlés hibára fut, a mappát üressé
kell tenni, illetve ha a mappa nem létezett egy újat kell létrehozni.
public string folderPath = HostingEnvironment.MapPath("~//Files//" +
HttpContext.Current.User.Identity.Name.ToString().Trim().ToLower() + @"//");
string filePathoriginal = folderPath + e.FileName; AjaxFileUpload1.SaveAs(filePathoriginal);
if (Directory.Exists(folderPath)) { System.IO.Directory.CreateDirectory(folderPath); try {
System.IO.Directory.Delete(folderPath, true); System.IO.Directory.CreateDirectory(folderPath);
} catch (Exception) {
System.IO.DirectoryInfo di = new DirectoryInfo(folderPath); foreach (DirectoryInfo dir in di.GetDirectories()) {
dir.Delete(true); }
} } else { Directory.CreateDirectory(folderPath);
}
Online Gépjármű Regisztrációs Rendszer
46
Régió, nyelv beállítása
A riportálásra használt honlapoknak többnyelvűnek kell lenniük. Alapesetben
a honlap nyelve magyar, majd a felhasználó az előre beprogramozott nyelvek közül
kiválaszthatja a számára megfelelő nyelvet. A honlap ehhez a sütit használja, a
tároláshoz a sütik élettartalmát maximumra vettem. A nyelv módosításához pedig a
Global fájt használom. A statikus szöveg mezőket dinamikus formában kell
megjeleníteni mindig az adott nyelven.
A kliens oldali kódban ezt két fajta módon oldottam meg:
Amikor csak az XML fájlban eltárolt szövegre volt szükségünk akkor ezt a
kódot használtam:
Szövegkiegészítésnél a kód a következő:
A szerver oldalon így értem el a nyelvi fájlokat:
Amikor nyelvet váltok kultúrát is kell váltanom, itt figyelni kell pl.: hogy a dátum
formátum más lesz.
Validálás
A programom egyik alapvetően fontos része a validálás, a felhasználók által
megadott minden adat rögzítése előtt a program ellenőrzi a rögzítendő adatok adat
formátumának helyességét, amennyiben a program számára nem értelmezhető
adatot talál, a szoftver hibaüzenet formájában tájékoztatja a felhasználót a nem
megfelelő adatról. Egyéb esetben az adatok rögzítésre kerülnek.
A következő a RegularExpressionValidator az ASP.Net beépítette ellenőrző
része. Itt egy álltam írta REGEX kóddal ellenőrzi le a bevitt adatott, ha helyes, akkor
a rendszer engedi az eseményt lefutni pl.:
Üres mező vizsgálata:
Text="<%$Resources:Resource, all%>"
<%= Resources.Resource.mr + ":"%>
Resources.Resource.finishedproduct;
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="TextBoxPotkocsiRendszam" ErrorMessage="A Vontató rendszáma nem
lehet üres" ValidationGroup="First">Nem lehet üres</asp:RequiredFieldValidator>
Online Gépjármű Regisztrációs Rendszer
47
A rendszám vizsgálata:
A paletta szám vizsgálata:
Riportok
A programom fő funkciója a riportok készítése, adatok megjelenítése. Néhol
elég csak egy szám megjelenítése, néhol bonyolult összetett táblákat kell
megjeleníteni és szűrni, majd ezeket importálni Excelben. Ezt a következő féle
képen oldottam meg:
Először ki kell választani az importálni kívánt GridView, miután ez meg történt
le kell tiltani a lapozást, mivel csak az aktuális oldal látható, majd a megfelelő név
és formátum beállítása következik.
Az adatok megjelenítésének a másik fontos része a szűrő, így csökkenteni lehet a
letöltött fájl méretét. Két fajta szűrő van:
A legegyszerűbb, amikor egy lehetőségre tudok rászűrni.
<asp:RegularExpressionValidator ID="RegularExpressionValidator16" runat="server"
ControlToValidate="TextBoxPotkocsiRendszam" ErrorMessage="A rendszám nem
megfelelő. Csak szöveg vagy szám lehet pl.: ABC123" ValidationExpression="^[a-zA-
Z0-9]+$" ValidationGroup="First" Height="16px" ></asp:RegularExpressionValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"
CssClass="hibaoszlop" ControlToValidate="TextBoxPaletta" ErrorMessage="Csak szám
lehet!" ValidationExpression="^[0-9]+$"></asp:RegularExpressionValidator>
protected void ImageButtonExcel_Click(object sender, ImageClickEventArgs e) {
GridView gr = null; string name = ""; if (GridView2.Visible == true) { gr = GridView2; name = "MilkRunMovement"; } if (GridViewMilk.Visible == true) { gr = GridViewMilk; name = "MilkRunMovement"; } if (GridViewPercent.Visible == true) { gr = GridViewPercent; name = "MilkRunMovement"; } if (gr != null) { Response.Clear(); Response.Buffer = true;
Response.AddHeader("content-disposition","attachment;filename="+ name + ".xlsx"); Response.Charset = ""; Response.ContentType = "application/vnd.ms-excel"; StringWriter sw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(sw); gr.AllowPaging = false; gr.RenderControl(hw); HttpContext.Current.Response.Charset = "utf-8"; HttpContext.Current.Response.ContentEncoding=System.Text.Encoding.GetEncoding("windows-250"); string style = @"<style> .textmode { mso-number-format:\@; } </style>"; Response.Write(style); Response.Output.Write(sw.ToString()); Response.Flush(); Response.End(); }
}
Online Gépjármű Regisztrációs Rendszer
48
A másik, pedig amikor lehetséges a többszörös szűrés is. Itt meg kell
jegyezni mire voltunk már rászűrve.
Megvalósítás kétféleképpen csináltam:
Az egyszerűbb, amikor az SQL kódot módosítom a szűrök segítségével.
A másik FilterExpression itt erre egy külön függvényt írtam:
Először megadjuk paraméterben, hogy melyik oszlopra akarunk szűrni, milyen
szűrést akarunk elvégezni és mi az értéke. A függvény megvizsgálja, hogy a
paraméterek érvényesek e, ezután megvizsgálja, hogy a táblára volt e szűrve, ha
igen, a meglévő szűrőket bővíti. A kódba sütiket használok mind szűrni kívánt
értékre tárolásra, mind a szűrő értékére.
A fenti kódot a következő féle képen tudjuk meghívni:
protected void SQLFilterExpr(string mezo, string op, string ertek) {
if (!String.IsNullOrEmpty(ertek) && ertek != "%%") {
if (String.IsNullOrEmpty(MILK.FilterExpression.ToString())) {
MILK.FilterExpression = mezo + " " + op + " '" + ertek + "'"; } else {
if (Session["filterMR"].ToString().Contains(mezo) && !String.IsNullOrEmpty(ertek)) { MILK.FilterExpression = Session["filter"].ToString(); } else { MILK.FilterExpression += " AND " + mezo + " " + op + " '" + ertek + "'"; }
} Session["filterMR"] = MILK.FilterExpression.ToString(); } else {
Session["filterMR"] = ""; MILK.FilterExpression = "";
} }
SQLFilterExpr("[LabelMRKör]", "=", Session["HeaderMRKör"].ToString());
Online Gépjármű Regisztrációs Rendszer
49
A riportok készítésnél fontos a vizualizáció a színezés ezt általában RowDataBound
végeztem el:
Interaktív weblap
A weblapok egyik nagy hibája, hogy ha esemény történik, a honlap újra
töltődik. A felhasználók szeretik úgy használni a honlapot, mint egy alkalmazást. Az
ASP.NET UpdatePanelt vezérlő lehetővé teszi, hogy úgy használjak a webes
alkalmazást, mint egy vastag kliens alkalmazást. Az UpdatePanel vezérlők
használatával frissítheti az oldal egyes részeit, nem pedig a teljes oldalt.
protected void GridViewMilk_RowDataBound(object sender, GridViewRowEventArgs e) {
if (e.Row.RowType == DataControlRowType.DataRow) {
Label LabelPercElteres = e.Row.FindControl("LabelPercElteres") as Label; if (!string.IsNullOrEmpty(LabelPercElteres.Text.ToString().Trim())) {
if (int.Parse(LabelPercElteres.Text.ToString().Trim()) > 90) {
e.Row.BackColor = System.Drawing.Color.FromName("Red"); }
} for (int i = 0; i < e.Row.Cells.Count; i++) {
e.Row.Cells[i].Attributes.Add("style", "white-space: nowrap;"); }
} }
<asp:UpdatePanel runat="server"> <ContentTemplate>
<div style="display: inline-block"> <asp:CheckBoxList ID="CheckBoxListTopMenu" runat="server" AutoPostBack="true" OnSelectedIndexChanged="CheckBoxListUsers_SelectedIndexChanged" DataSourceID="SqlDataSourceMenuTop" DataTextField="Name" DataValueField="MenuId"></asp:CheckBoxList>
</div> <div style="display: inline-block">
<asp:CheckBoxList ID="CheckBoxListMenu" runat="server" CssClass="oval" BorderStyle="Solid" BorderColor="Red" EnableTheming="True"></asp:CheckBoxList>
</div> </ContentTemplate>
</asp:UpdatePanel>
Online Gépjármű Regisztrációs Rendszer
50
Szoftvertesztelés
A fejezet összefoglalja a programomban alkalmazott különböző tesztelési
módszereket, folyamatokat. A fejezet két nagyobb tesztelési technikai részre
bontható, a statikus - és a dinamikus teszt részekre. [11]
Statikus teszt
Statikus tesztelési technikák a szoftver forráskódját vizsgálják fordítási időben.
Ide tartozik a dokumentáció felülvizsgálata is.
Felülvizsgálat
A kód, illetve a dokumentáció, vagy ezek együttes manuális átnézését jelenti.
A dokumentáció tesztelése az egyik legfontosabb szakasz, itt értjük meg és
definiáljuk, hogy a rendszernek milyen szolgáltatásokat kell biztosítania. Egyáltalán
megéri-e a programot lefejleszteni. Kritikus szakasz: az itt vétett hibák nagy
problémákhoz vezethetnek a rendszertervezés későbbi szakaszában és az
implementációban. A programom felhasználói követelményét több, a területen
jártas szakember elemezte, nézte át. A potenciális felhasználókkal folyamatosan
kommunikáltam.
Az elkészült nagyobb modulokat, pl. osztályokat, a vezető fejlesztő, valamint
egy tapasztalt programozó ellenőrizte.
Statikus elemzés
A statikus elemzés, ahol szoftverrel nézetjük át automatikusan a forráskódot.
A felülvizsgálat fehérdobozos teszt, mivel szükséges hozzá a forráskód. A munkám
során a Visual Studio beépített elemzőjét használtam (24. ábra).
24. ábra - Error List
A fordító kétféle anomáliát mutat: hibák (Errors) és figyelmeztetések (Warnings).
Online Gépjármű Regisztrációs Rendszer
51
A hiba (Errors) olyan állapot, amely megakadályozza a végleges program
létrehozását. A végrehajtható fájlok nem érhetők el, amíg az összes hibát nem
sikerült kijavítani. A leggyakoribb hibák pl.:
Elírjuk a változók nevét
o Oka: Emberi tévesztés a c# kisbetű-nagybetű érzékeny (case sensitivity)
o Tünetek:
Piros aláhúzás:
Ha a View / Error List menüponttal megjelenítjük az Error List
ablakot:
25. ábra - CS0103 hiba
A kódkiegészítés nem ajánlja fel a változó nevét és az utána leütött
pontra sem jelenik meg metódus lista.
o Elkerülhető, ha használjuk a kódkiegészítőt.
Le nem zárt blokkok
o Oka: A C alapú nyelvek blokkos felépítésűek, a blokkokat a { és } jelek
határolják.
o Tünetek:
Piros aláhúzás:
Online Gépjármű Regisztrációs Rendszer
52
Megjelenik az Error List ablakban:
26. ábra - CS1513 hiba
o Elkerülhető függőleges segédvonalak segítségével, így átláthatóbb lesz
a kód.
A figyelmeztetések (Warnings) olyan üzenetek, amelyeket a fordító a
"különleges" helyzetekről mutat be, amelyekben észlelt egy anomáliát, de
feltételezhető, hogy a fordítás folytatódik. pl.:
Egy változónak értéket adunk, de ezután nem használjuk:
o Kód:
o Hibaüzenet:
27. ábra - CS0219 hiba
Amikor egy változó deklarálva van, de nem használjuk:
o Kód:
o Hibaüzenet:
28. ábra - CS0168 hiba
Online Gépjármű Regisztrációs Rendszer
53
Dinamikus tesztelés
Az előző fejezetben áttekintettük a statikus tesztelési technikákat. Ezek a
módszerek nem igénylik a tesztelendő rendszer futtatását, sőt bizonyos esetekben
még a forráskód meglétét sem.
A dinamikus tesztelési technikák viszont a tesztelendő rendszer futtatását igénylik.
Ebben a fejezetben a dinamikus tesztek tervezési kérdéseivel foglalkozok.
A dinamikus tesztelési technika elsősorban komponens teszt, azon belül is főleg az
unit-teszt (egységteszt) fázis eszköze. [11]
Egységtesztek
Egy szoftvernél fontos szerepet kap a végeredmény tesztelése, hogy a
megrendelőt ne érje csalódás. Az egységtesztek segítségével metódusokat lehet
tesztelni. A tesztek segítségével olyan hibákra is fény derülhet, melyekre nem is
számítottunk. Letesztelhetjük azt is, hogy a metódus tényleg úgy működik-e, amire
tervezve lett. A tesztek a fejlesztés során is nagy segítséget nyújtanak, mivel ha
változik a metódus felépítése, akkor egy gombnyomással tudomást vehetünk arról,
hogy a megadott metódusok megfelelő módon működnek. A teszteléshez a
Microsoft.VisualStudio.TestTools.UnitTesting névteret használtam.pl.:
Felhasználói felület tesztelése
Az UI tesztelés az egyik legegyszerűbb módszer, a felhasználói felület
tesztelése automatizáltan; magában foglalja azt, hogy ha bizonyos területekre, vagy
[TestMethod] public FunctionTest() {
Functions testFunction = new Functions(); Assert.IsNotNull(testFunction); Assert.IsInstanceOfType(testFunction, typeof(Functions));
} [TestMethod] public void Eql_Obj_Test_Null() {
Functions target = new Functions(); object inobject = null; bool expected = false; bool actual = target.Equals(inobject); Assert.AreEqual(expected, actual);
} [TestMethod] public void Eql_Test_Null() {
string expectedResult = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|DB\Database.mdf;Integrated Security=True"; string actualResult = Functions.ConnectionString("Admin"); Assert.AreEqual<string>(expectedResult, actualResult);
}
Online Gépjármű Regisztrációs Rendszer
54
vezérlőkre kattintunk az adott oldalon, akkor az, hogy fog kinézni, vagy mi lesz az
értéke, a kompatibilitás megfelelő-e; illetve a felhasználónak egyértelmű-e, mit hol
talál és az jól használható-e. [12]
A szakdolgozatomban a bejelentkezés tesztelését
mutatom be. A módosításokhoz több teszt készült. A
teszteléshez Selenium eszközcsomagot használtam.
A Selenium, Black Box jellegű integrációs felületi
tesztek készítésére ad lehetőséget, ami annyit jelent,
hogy az alkalmazás egészét teszteljük anélkül, hogy
ismernénk annak belső működését. A tesztesetek
felvétele a Selenium IDE Firefox plugin segítségével történik, amely automatikusan
rögzíti a böngészőben végrehajtott műveleteket. A Selenium parancsokat
tartalmazó szkript többek között java forrásként is exportálható, amit némi
refaktorálás és adatforrás bekötés után, eltérő környezettekben is használható
tesztekké alakíthatunk! A tesztet 3 böngészőn végeztem el itt látható a különböző
eredmények. Az oldalsósáv alapján, az Edge végrehajtása gyorsabb, mint a Firefox
vagy Chrome:
29. ábra - Test Explorer
Online Gépjármű Regisztrációs Rendszer
55
A teszthez tartozó kód:
Vizsgálati eset létrehozása az Edge Browser számára:
Meglévő rendszerekkel való tesztelés
Az egyik legegyszerűbb tesztelési mód, ha a meglévő rendszerrel együtt
futtatjuk az új rendszert. Ha mindkét rendszer ugyanazt az eredményt adja, akkor
a tesztelés valószínűleg nem talált hibát.
o Hátránya: Erőforrás igényes, egyszerre két rendszer fut.
o Előnye: A rendszer felhasználói tesztelik a programot valós adatokkal
feltöltve.
[TestClass] public class OGRRUsingEdgeBrowser { private WebDriverWait wait; private string url = "http://mc0vm011.sg.lan/www/SGHU_LOG-T/Login.aspx"; private string edgeDriverLocation = @"C:\SeleniumEdgeDriver"; [TestMethod] public void OGRR_Using_EdgeBrowser() { using (EdgeDriver driver = new EdgeDriver(edgeDriverLocation)) { try { driver.Manage().Window.Maximize(); driver.Navigate().GoToUrl(url); driver.FindElement(By.Id("ContentPlaceHolder1_Login1_UserName")).SendKeys("Admin"); driver.FindElement(By.Id("ContentPlaceHolder1_Login1_Password")).SendKeys("789_321fyk7b"); driver.FindElement(By.Id("ContentPlaceHolder1_Login1_LoginButton")).Click(); wait = new WebDriverWait(driver, new System.TimeSpan(0, 0, 5)); driver.Close(); driver.Dispose(); } catch (System.Exception) { ITakesScreenshot screenshotDriver = driver as ITakesScreenshot; Screenshot screenshot = screenshotDriver.GetScreenshot(); screenshot.SaveAsFile(Environment.CurrentDirectory, ScreenshotImageFormat.Png); throw; } } } }
Online Gépjármű Regisztrációs Rendszer
56
Fejlesztési lehetőségek
A szoftver jelenlegi verziója több szempontból is tovább fejleszthető.
A program egy belső rendszeren lett fejlesztve, így nem merült fel igényként,
hogy cégen kívülről is hozzáférjenek. Ha ez megvalósulna a beszállítónak
lehetősége lenne, egy korlátozott felületen saját magának újra nyomtani a QR-kód
azonosítót vagy a beérkezési ponton egy mobileszköz segítségével megjeleníteni a
megfelelő azonosítót. Ehhez a programot egy mobil felületre kell optimizálni. Az
összes felületen lehetségessé kell tenni a nyelv választást. Az „admin” felületen egy
új funkció létrehozása szükséges, amely lehetővé teszi az új nyelvek felvételét vagy
a már meglévő nyelvek szókészletének módosítását.
Az állandó fuvaroknál a QR-kód azonosító helyett egy RTLS vagy RFID
technológián alapuló azonosítást is lehetne használni, ami gyorsíthatja és
egyszerűsítheti a beléptetési folyamatot. Ezzel a módszerrel a rámpán töltött idő is
mérhetővé válik, pontosítva a kihasználtság mutatót. Ezek a fejlesztések lehetővé
teszik az adatszolgáltatást az automata könyvelés számára, amellyel jelentős
költéség illetve erőforrás megtakarítás eredményezhető.
A fejlesztés következő lépéseként a raktárban egy külön felületen
megjeleníthető vizuálisan a következő gépjármű várható beérkezés ideje, illetve a
szállítmány részletes adatai (anyagnév, anyagkód, mennyiség, tárhely típusa,
veszélyességi jelző). A raktár a szállítmány beérkezése előtt kellőképpen fel tud,
készülni az áru fogadására.
A programban használt riportálási funkcióik a későbbiek folyamán
automatizálásra kerülnek (napi, heti, havi riport). A generálás után az előre
meghatározott címzett listára a riportok kiküldésre kerülnek.
A további fejlesztések eredményeként a program összeköthető az EKÁER
(Elektronikus Közúti Áruforgalom Ellenőrző Rendszer) rendszerrel, ezáltal az
EKÁER számok nyomon követése, ellenőrzése is megvalósulhat.
Online Gépjármű Regisztrációs Rendszer
57
Összegzés
Szakdolgozatom témája az Online Gépjármű Regisztrációs Rendszer
bevezetése volt Starters E-Components Generators Automotive Hungary Kft -nél.
Dolgozatom elején bemutattam a céget, ahol 2012 óta dolgozom.
Ismertettem a feladatot, kitűzött célokat, illetve az ehhez kapcsolódó
követelményeket, elvárásokat.
A következő pontokban összehasonlítottam a különböző fejlesztési
eljárásokat irodalomkutatásom alatt szerzett ismeretek alapján.
Ezt követően részletesen ismertettem az általam elkészített programot,
fejlesztéseket, ezen belül részletesem kitértem pl. különböző felhasználókra és a
program lehetséges megvalósítására.
Az elkészített alkalmazás a tesztelés során a megfelelő eredményeket kapta,
megfelel a feladat specifikációban meghatározott alkalmazásnak. A szoftver
működésével kapcsolatos tapasztalok az alábbiakban összegezhetők. A szoftver
funkcionális működése, kialakítása, a különböző jogosultságokkal felruházott
felhasználói szerepkörök létrehozása megfelel az előzetes elképzeléseknek.
Biztosított az egységes és megfelelően ellenőrzött adatkezelés. Az egyes
felhasználói tevékenységekhez hozzárendelt adatkezelési és funkcionális
szabályozás lehetővé teszi, hogy a felhasználók csak a jogosultságuknak megfelelő
adatokhoz férjenek hozzá (mind olvasás, mind írás), illetve csak a jogosultságuknak
megfelelő tevékenységeket végezhessék. A napi feladatok végrehajtása során a
szoftver várhatóan megfelelő informatikai támogatást nyújt.
Egy teljesen önállóan működő programot sikerült elkészítenem, amelyet
jelenleg is eredményesen használnak.
Online Gépjármű Regisztrációs Rendszer
58
Summary
I chose Starters E-Components Generators Automotive Hungary Kft’s launch of
its Online Vehicle Registration System as the topic for my thesis.
I started off by introducing the company, where I’ve worked since 2013. I
proceed by describing the task at hand together with all the goals, and requirements.
In the following parts I compared various development methods based on
criteria gleaned from researching available literature.
I then proceeded to review and introduce my proposed program and
improvements, paying particular attention to different users and possible
implementation.
The application produced satisfactory results during the testing phase, satisfying
all specified parameters. Findings regarding the software are summarised below.
The software’s functionality, structure and creation of user roles with different levels
of authority satisfies all previously set parameters. A uniform and adequately
controlled system for handling data is in place. Data handling protocols assigned
individually to particular user actions makes it possible that users can only access
data and perform actions corresponding to their levels of authorization. The software
is expected to provide adequate support in carrying out day to day tasks.
I managed to make a wholly self-sufficient piece of program that is
successfully used even today.
Online Gépjármű Regisztrációs Rendszer
59
Hivatkozások
[1] Bosch. [Online]. Available: https://www.bosch.hu/.
[2] SEGA, „seg-automotive,” [Online]. Available: http://www.seg-automotive.hu/.
[3] Microsoft, „Choosing an Application Type,” 1 Október 2009. [Online]. Available:
https://msdn.microsoft.com/en-us/library/ee658104.aspx.
[4] N. D. G. Judit, Nyékyné Dr. Gaizler Judit (szerk.) - Java 2 útikalauz
programozóknak 5.0 I-II, Budapest: ELTE TTK Hallgatói Alapítvány, 2009.
[5] Pixelstech, „What are advantages and disadvantages of PHP?,” 15 6 2012.
[Online]. Available: http://www.pixelstech.net/topic/25-What-are-advantages-
and-disadvantages-of-PHP.
[6] „eliteinfoworld,” [Online]. Available: https://www.eliteinfoworld.com/blog/top-
10-benefits-using-php-web-development/.
[7] R. István, C# programozás lépésről lépésre, Budapest: Jedlik Oktatási Stúdió
Kft., 2012.
[8] S. Steve, „SQL Server Management Studio (SSMS),” 02 Február 2017.
[Online]. Available: https://docs.microsoft.com/en-us/sql/ssms/sql-server-
management-studio-ssms?view=sql-server-2017.
[9] Wikipedia, „Microsoft Visual Studio,” 3 Május 2018. [Online]. Available:
https://en.wikipedia.org/wiki/Microsoft_Visual_Studio.
[10] N. Bradley, Az XML-kézikönyv, Szak Kiadó, 2000.
[11] F. Lajos, D. K. László, K. Zoltán és D. K. Gábor, Szoftvertesztelés, 2011.
[12] E. S. Zsanett, „versenycica,” 05 08 2012. [Online]. Available:
https://versenycica.wordpress.com/2012/08/05/ui-tesztek-irasa/.
[13] D. S. József és K. Katalin, Az UML nyelv használata, 2006.
[14] w3schools, „SQL Tutorial,” [Online]. Available:
https://www.w3schools.com/sql/.
Online Gépjármű Regisztrációs Rendszer
60
Ábrajegyzék
1. ábra - Telephelyek ............................................................................................ 4
2. ábra - Adminisztrátor diagramja ................................................................... 17
3. ábra - Adminisztrátor felület .......................................................................... 18
4. ábra - Levelezési beállítások ......................................................................... 18
5. ábra - Adatbázis beállítás .............................................................................. 18
6. ábra - A fuvarszervező diagramja ................................................................. 19
7. ábra - A szállítás megrendelőlapja ................................................................ 20
8. ábra - Irodai asszisztens diagramja .............................................................. 22
9. ábra - Riport készítése ................................................................................... 23
10. ábra - Gépjárműfogadó diagramja .............................................................. 24
11. ábra - Azonosító lap ..................................................................................... 25
12. ábra - Portai felhasználói felület ................................................................. 25
13. ábra - Üzenetablak ........................................................................................ 26
14. ábra - LSP diagram ....................................................................................... 27
15. ábra - PageNames diagram ......................................................................... 28
16. ábra - SGHU (Starter Generators Hungary) diagramja .............................. 29
17. ábra - Osztálydiagram .................................................................................. 38
18. ábra - Functions osztály .............................................................................. 39
19. ábra - BasePage osztály .............................................................................. 39
20. ábra - Base osztály ....................................................................................... 40
21. ábra - Bejelentkezés ..................................................................................... 41
22. ábra - A felhasználók beillesztésének folyamatábrája .............................. 41
23. ábra - SGHU QR kód minta .......................................................................... 44
24. ábra - Error List ............................................................................................ 50
25. ábra - CS0103 hiba ....................................................................................... 51
26. ábra - CS1513 hiba ....................................................................................... 52
27. ábra - CS0219 hiba ....................................................................................... 52
28. ábra - CS0168 hiba ....................................................................................... 52
29. ábra - Test Explorer ...................................................................................... 54
Online Gépjármű Regisztrációs Rendszer
61
Táblázatok jegyzéke
1. táblázat - USERS tábla ................................................................................... 30
2. táblázat - SGHUorder tábla ............................................................................ 33
3. táblázat - PDFiles tábla .................................................................................. 34
4. táblázat - MilkRunMovement tábla ................................................................ 35
5. táblázat - LSP tábla ........................................................................................ 36
6. táblázat - TPageNames tábla ......................................................................... 37