automatizuota duomenų bazė (ADB) skirta sulaikitu geležinkelio stotyje vagonu apskaitai

Įvadas

Diplominiame darbe suprojektuota universalios paskirties automatizuota duomenų bazė (ADB) skirta sulaikitu geležinkelio stotyje vagonu apskaitai. Pagrindiniai sukurtos ADB funkcijos ir uždaviniai: informacijos apie sulaikitus vagonus įvedimas, koregavimas, informacijos paieška, sulaikitu vagonu apskaitos vykdymas, ataskaitų suformavimas. Galima suformuoti ataskaitas už nurodytą laikotarpį. ADB suprojektuota duomenų bazių vadybos sistemos “Visual FoxPro” pagrindu. Duomenų bazės struktūra (architektūra) yra lanksti tolimesniam jos išplėtimui, kas perspektyvoje leis suprojektuoti bei įdegti naujus uždavinius bei funkscijas.

2.TECHNINĖ DALIS

Projektas yra sudarytas iš duomenų bazes sulvag, kuri sudaro septinios lentelės (vagonai, avagonai, nor01, nor04, nor16, nor58, sulprez), pagrindinės programos startas, menių faila menu1, eillės formų skirtų naujų duomenų įvedimui, koregavimui, paieškai, filtravimui ir ataskaitų.

2.1 DB bendros struktūros pagrindimas (lentelės, ryšiai tarp jų).

2.1.1 Lentelėję „Vagonai“ –saugomi sulaikitu vagonu, kurie dar neišvyko duomenys

Žemiau pateikiamos lentelės laukų charakteristikos:Vagnr – vagono numeris;Adata – atvykimo data;Alaik – atvykimo laikas;Krov – krovinio kodas;Stot – stoties kodas;Gav – gavejo kodas;Kel – geležinkelio kodas;Nuos – nuosavybės požymis;Sulaik – sulaikimo priežastis;Atrnr – traukinio su kurio atvyko vagonas numeris;Aform, asast, agal – traukinio su kurio atvyko vagonas indeksas;Koment – pastabos.

2.1.2 Lentelėję „Vagonai“ –saugomi sulaikitu vagonu, kurie jau išvyko duomenys

Žemiau pateikiamos lentelės laukų charakteristikos:Vagnr – vagono numeris;Adata – atvykimo data;Alaik – atvykimo laikas;Krov – krovinio kodas;Stot – stoties kodas;Gav – gavejo kodas;Kel – geležinkelio kodas;Nuos – nuosavybės požymis;Sulaik – sulaikimo priežastis;Atrnr – traukinio su kurio atvyko vagonas numeris;Aform, asast, agal – traukinio su kurio atvyko vagonas indeksas;Koment – pastabos;Idata – išvykimo data;Ilaik – išvykimo laikas;Itrnr – traukinio su kurio išvyko vagonas numeris;Iform, isast, igal – traukinio su kurio išvyko vagonas indeksas.

2.1.3 Lentele „Nor01“ – geležinkelių administracijų žinynas

Žemiau pateikiamos lentelės laukų charakteristikos:

Adm_kod – administracijos kodas;Adm_srus – sutrumpintas rusiškas pavadinimas;Adm_spav – sutrumpintas pavadinimas;Adm_rpav – rusiškas pavadinimas;Adm_srus – pavadinimas.

2.1.4 Lentele „Nor04“ – krovinių žinynas

Žemiau pateikiamos lentelės laukų charakteristikos:Nomer – krovinio kodas;Lietpav – pavadinimas.

2.1.5 Lentele „Nor16“ – stočių žinynas

Žemiau pateikiamos lentelės laukų charakteristikos:Nomer – stoties kodas;Lietpav – pavadinimas;Adm_kod – administracijos kodas;Kel_kod – kelio kodas.

2.1.6 Lentele „Nor58“ – nuosavybės požymių kodų žinynas

Žemiau pateikiamos lentelės laukų charakteristikos:Kod – nuosavybės požymio kodas;Lpav – pavadinimas.

2.1.7 Lentele „Nor58“ – sulaikimo priežasčių žinynas

Žemiau pateikiamos lentelės laukų charakteristikos:Sulkod – sulaikimo priežasties kodas;Sulpav – pavadinimas.

2.1.8 DB Suprojektuoti lentelių tarpusavio ryšiai.

Tarp lentelių nor01, nor04, nor16, nor58, sulvag ir lentelių vagonai, avagonai egzistuoja ryšys „vienas su daugeliu”.

2.2 Programos

Projekto sudetije yra viena progama – startas. Tai pagrindine programa. Programoje nustatomi FoxPro aplynkos parametrai, deklarojami kintameji, akivojamas meniu menu1, pradžioja atidaromą, o pabaigoje uždaroma duomenų bazė sulvag.

Programos kodas:

with _screenoldcap=.captionoldback=.backcolor.backcolor=rgb(220,240,220).windowstate=2.caption=”Sulaikitu vagonu apskaita”endwithpusl=1filtras=1filtras1=””rasti1=””rasti2=””saverec=0naujas=0pag=1kiekvag1=0kiekvag2=0kiekvag3=0i=1public array rez(13,4)store date() to fdata1store date() to fdata2SET DEFAULT TO c:sulvagset status bar offset delete onset date YMDset century onset excl offset talk offopen database sulvag exclclear screendo menu1.mprread eventsclose databaseswith _screen.caption=oldcap.backcolor=oldbackendwithset sysmenu to default

2.3 Meniu

Projekto sudetije yra vienas meniu – menu1.

Per meniu punktus priejnamos visos ekrano formos. Meniu sudaro penkii pagrindiniai punktai: Darbas, Paieška, Žinynai, Ataskaitos, Baigti.

2.3.1 Meniu punktas Darbas.Meniu punkta sudaro tris submeniu punktai

2.3.2 Meniu punktas Paieška.Meniu punkta sudaro du submeniu punktai

2.3.3 Meniu punktas Žinynai.Meniu punkta sudaro penki submeniu punktai

2.3.4 Meniu punktas Ataskaitos.Meniu punkta sudaro keturi submeniu punktai

2.3.5 Meniu punktas Baigti.Šis meniu punktas uždaro meniu.

2.4 Ekrano formos

2.4.1 Vagonai Pagrindine ekrano forma. Forma skirta informacijos įvedimui, koregavimui, paieškai, šalinimui lentelese vagonai ir avagonai.

Elemento Pageframe1.page1.activate kodas:

thisform.grid2.visible=.F.thisform.grid1.visible=.T.pusl=1thisform.command6.enabled=.T.thisform.command7.enabled=.T.thisform.grid1.setfocus()thisform.label3.caption=vagonai.komentthisform.refresh

Elemento Pageframe1.page2.activate kodas:

thisform.grid2.visible=.T.thisform.grid1.visible=.F.pusl=2thisform.command6.enabled=.F.thisform.command7.enabled=.F.thisform.grid2.setfocus()thisform.label3.caption=avagonai.komentthisform.refresh

Migtuko Pirmyn kodas:

if not eof()skipIf eof()go bottomendifendifthisform.refreshif pusl=1thisform.grid1.setfocuselsethisform.grid2.setfocusendif

Migtuko Atgal kodas:

if not bof()skip -1if bof()go topendifendifthisform.refreshthisform.grid1.setfocusif pusl=1thisform.grid1.setfocuselsethisform.grid2.setfocusendif

Migtuko Pirmas kodas:

go topthisform.refreshthisform.grid1.setfocusif pusl=1thisform.grid1.setfocuselsethisform.grid2.setfocusendif

Migtuko Paskutinis kodas:

go bottomthisform.refreshthisform.grid1.setfocusif pusl=1thisform.grid1.setfocuselsethisform.grid2.setfocusendif

Migtuko Peržiura kodas:

if pusl=1do form perziuraelsedo form perziura1endifMigtuko Koreguoti kodas:

Naujas=0if pusl=1do form koregavelsedo form koregav1endifthisform.refresh

Migtuko Rasti kodas:

do form paieska3

Migtuko Šalinti kodas:

do form salinti

Migtuko Naujas kodas:

Naujas=1saverec=recno()append blankdo form koregav

Migtuko Išvyko kodas:

sele avagonaiappend blankdo form isvykothisform.refresh

Migtuko Baigti kodas:

thisform.release

2.4.2 Vagonai1

Form1.init kodas:

sele avagonaiif pag=1set filter to allt(sulaik)=filtrascount all to kiekvag2elseset filter to ((avagonai.adata>=fdata1 and avagonai.adata<=fdata2) or (idata>=fdata1 and idata<=fdata2))count for (avagonai.adata>=fdata1 and avagonai.adata<=fdata2) to kiekvag2

endifcount all to kiekvag1thisform.label6.caption=str(kiekvag1)go topsele vagonaiif pag=1set filter to allt(sulaik)=filtraselseset filter to (vagonai.adata>=fdata1 and vagonai.adata<=fdata2)endifcount all to kiekvag3thisform.label4.caption=str(kiekvag3)thisform.label10.caption=str(kiekvag3+kiekvag2)go topthisform.refresh

Elemento Pageframe1.page1.activate kodas:

thisform.grid2.visible=.F.thisform.grid1.visible=.T.pusl=1thisform.grid1.setfocus()thisform.label3.caption=vagonai.komentthisform.refresh

Elemento Pageframe1.page2.activate kodas:

thisform.grid2.visible=.T.thisform.grid1.visible=.F.pusl=2thisform.grid2.setfocus()thisform.label3.caption=avagonai.komentthisform.refresh

Migtuku kodai sutampa su formos vagonai.

2.4.3 Forma perziura

Migtuko Pirmyn kodas:

Sele vagonaiif not eof()skipIf eof()go bottomendifendifthisform.refreshif pusl=1thisform.grid1.setfocuselsethisform.grid2.setfocusendif

Migtuko Atgal kodas:

Sele vagonaiif not bof()skip -1if bof()go topendifendifthisform.refreshthisform.grid1.setfocusif pusl=1thisform.grid1.setfocuselsethisform.grid2.setfocusendif

Migtuko Spauzdinti kodas:

report form reportas5.frx next 1 preview

2.4.4 Forma perziura1

Migtuko Pirmyn kodas:

Sele avagonaiif not eof()skipIf eof()go bottomendifendifthisform.refreshif pusl=1thisform.grid1.setfocuselsethisform.grid2.setfocusendif

Migtuko Atgal kodas:

Sele avagonaiif not bof()skip -1if bof()go topendifendifthisform.refreshthisform.grid1.setfocusif pusl=1thisform.grid1.setfocuselsethisform.grid2.setfocusendif

Migtuko Spauzdinti kodas:

report form reportas6.frx next 1 preview

2.4.5 Forma koregav

Migtuko priimti kodas:

=TableUpdate()thisform.release

Migtuko Atsisakiti kodas:

=TableRevert()thisform.releaseif naujas=1goto saverecendif

2.4.6 Forma koregav1

Migtuko priimti kodas:

=TableUpdate()thisform.release

Migtuko Atsisakyti kodas:

=TableRevert()thisform.releaseif naujas=1goto saverecendif

2.4.7 Forma isvyko

Migtuko Priimti kodas:

replace vagnr with vagonai.vagnrreplace adata with vagonai.adatareplace atime with vagonai.atime

replace krov with vagonai.krovreplace stot with vagonai.stotreplace gav with vagonai.gavreplace kel with vagonai.kelreplace nuos with vagonai.nuosreplace sulaik with vagonai.sulaikreplace atrnr with vagonai.atrnrreplace aform with vagonai.aformreplace asast with vagonai.asastreplace agal with vagonai.agalreplace koment with vagonai.komentreplace aktnr with vagonai.aktnr=Tableupdate()select vagonai delete next 1thisform.release

Migtuko Atsisakyti kodas:=Tablerevert()select vagonaithisform.release

2.4.8 Forma laikot

Migtuko Rodyti kodas:thisform.releasepag=2filtras1=”Nuo “+dtoc(fdata1)+” iki “+dtoc(fdata2)do form vagonai1

Migtuko Atsisakyti kodas:Thisform.release

2.4.9 Forma laikot1

Migtuko Rodyti kodas:thisform.releasefiltras1=”Nuo “+dtoc(fdata1)+” iki “+dtoc(fdata2)do casecase bar()=1sele vagonaiset filter to adata>=fdata1 and adata<=fdata2count to kiekvag1sele avagonai set filter to ((avagonai.adata>=fdata1 and avagonai.adata<=fdata2) or (idata>=fdata1 and idata<=fdata2))count for (avagonai.adata>=fdata1 and avagonai.adata<=fdata2) to kiekvag2count for (idata>=fdata1 and idata<=fdata2) to kiekvag3sele sulprezgo topi=1scanstore sulprez.sulpav to rez(i,1)sele vagonaicount for vagonai.sulaik=sulprez.sulkod to rez(i,2)sele avagonaicount for (avagonai.sulaik=sulprez.sulkod and (avagonai.adata>=fdata1 and avagonai.adata<=fdata2)) to rez(i,3)count for (avagonai.sulaik=sulprez.sulkod and (avagonai.idata>=fdata1 and avagonai.idata<=fdata2)) to rez(i,4)sele sulprezi=i+1endscansele avagonaiset filter tosele vagonaiset filter toreport form reportas1 previewcase bar()=2report form reportas2 previewcase bar()=3report form reportas3 previewcase bar()=4report form reportas4 previewendcase

Migtuko Atsisakyti kodas:Thisform.release

2.4.10 Forma Nor01

Migtuko Rasti kodas:rasti2=””do form paieska4thisform.refreshthisform.grid1.setfocus()

2.4.11 Forma Nor04

Migtuko Rasti kodas:

rasti2=””do form paieska4thisform.refreshthisform.grid1.setfocus()

2.4.12 Forma Nor16

Migtuko Rasti kodas:rasti2=””do form paieska4thisform.refreshthisform.grid1.setfocus()

2.4.13 Forma Nor58

Migtuko Rasti kodas:rasti2=””do form paieska4thisform.refreshthisform.grid1.setfocus()

2.4.14 Forma sulprez

Migtuko Rasti kodas:rasti2=””do form paieska4thisform.refreshthisform.grid1.setfocus()2.4.15 Forma sulprez

Migtuko Toliau kodas:

thisform.release()pag=1do form vagonai1

2.4.15 Forma salinti

Migtuko Taip kodas:

delete next 1thisform.release=TableUpdate()vagonai.refreshif pusl=1vagonai.grid1.setfocuselsevagonai.grid2.setfocusendif

2.5 Ataskaitos

2.5.1 Reportas1

2.5.2 Reportas2

2.5.3 Reportas3

2.5.4 Reportas4

2.5.5 Reportas5

2.5.6 Reportas6

3. ADB Valdymo struktūra

Projektas startoja iš FoxPro aplinkos palejdus sulvag.app arbe iš Windows aplynkos sulvag.exe.

3.1 Meniu punktas visi vagonai. Atidaroma forma Vagonai.

3.2 Paspaudus migtuka peržiura, kai pasirinktas puslapis Šio metu stotije atidaroma forma

3.3 Paspaudus migtuka koreguoti, kai pasirinktas puslapis Šio metu stotije atidaroma forma

3.4 Paspaudus migtuka paieška atidaroma forma

3.5 Paspaudus migtuka šalinti atidaroma forma

3.6 Paspaudus migtuka išvyko atidaroma forma

3.8 Paspaudus migtuka peržiura, kai pasirinktas puslapis Išvyko atidaroma forma

3.9 Paspaudus migtuka koreguoti, kai pasirinktas puslapis Išvyko atidaroma forma

3.10 Pasirinkus meniu punkta Pagal sulaikimo priežasti atidaroma forma

3.11 Paspaudus migtuka Toliau atidaroma forma Vagonai1

3.12 Pasirinkus meniu punkta Laikotarpis atidaroma forma

3.13Paspaudus migtuka Rodyti atidaroma forma Vagonai1

3.14 Pasirinkus meniu punktus Paieška ir Vagono atidaroma forma

3.15 Pasirinkus meniu punktus Paieška ir Akto atidaroma forma

3.16-20 Pasirinkus viena iš Žininai meniu punktu atidaromos formos