Į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 _screen oldcap=.caption oldback=.backcolor
.backcolor=rgb(220,240,220)
.windowstate=2
.caption=”Sulaikitu vagonu apskaita”
endwith pusl=1
filtras=1
filtras1=””
rasti1=””
rasti2=””
saverec=0
naujas=0
pag=1
kiekvag1=0
kiekvag2=0
kiekvag3=0
i=1
public array rez(13,4)
store date() to fdata1
store date() to fdata2
SET DEFAULT TO c:sulvag set status bar off set delete on set date YMD
set century on set excl off set talk off open database sulvag excl clear screen do menu1.mpr read events close databases with _screen
.caption=oldcap
.backcolor=oldback endwith set 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=1
thisform.command6.enabled=.T.
thisform.command7.enabled=.T.
thisform.grid1.setfocus()
thisform.label3.caption=vagonai.koment thisform.refresh
Elemento Pageframe1.page2.activate kodas:
thisform.grid2.visible=.T.
thisform.grid1.visible=.F.
pusl=2
thisform.command6.enabled=.F.
thisform.command7.enabled=.F.
thisform.grid2.setfocus()
thisform.label3.caption=avagonai.koment thisform.refresh
Migtuko Pirmyn kodas:
if not eof()
skip
If eof()
go bottom endif endif thisform.refresh if pusl=1
thisform.grid1.setfocus else thisform.grid2.setfocus endif
Migtuko Atgal kodas:
if not bof()
skip -1
if bof()
go top endif endif thisform.refresh thisform.grid1.setfocus if pusl=1
thisform.grid1.setfocus else thisform.grid2.setfocus endif
Migtuko Pirmas kodas:
go top thisform.refresh thisform.grid1.setfocus if pusl=1
thisform.grid1.setfocus else thisform.grid2.setfocus endif
Migtuko Paskutinis kodas:
go bottom thisform.refresh thisform.grid1.setfocus if pusl=1
thisform.grid1.setfocus else thisform.grid2.setfocus endif
Migtuko Peržiura kodas:
if pusl=1
do form perziura else do form perziura1
endif
Migtuko Koreguoti kodas:
Naujas=0
if pusl=1
do form koregav else do form koregav1
endif thisform.refresh
Migtuko Rasti kodas:
do form paieska3
Migtuko Šalinti kodas:
do form salinti
Migtuko Naujas kodas:
Naujas=1
saverec=recno()
append blank do form koregav
Migtuko Išvyko kodas:
sele avagonai append blank do form isvyko thisform.refresh
Migtuko Baigti kodas:
thisform.release
2.4.2 Vagonai1
Form1.init kodas:
sele avagonai if pag=1
set filter to allt(sulaik)=filtras count all to kiekvag2
else 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 kiekvag2
endif count all to kiekvag1
thisform.label6.caption=str(kiekvag1)
go top sele vagonai if pag=1
set filter to allt(sulaik)=filtras else set filter to (vagonai.adata>=fdata1 and vagonai.adata<=fdata2)
endif count all to kiekvag3
thisform.label4.caption=str(kiekvag3)
thisform.label10.caption=str(kiekvag3+kiekvag2)
go top thisform.refresh
Elemento Pageframe1.page1.activate kodas:
thisform.grid2.visible=.F.
thisform.grid1.visible=.T.
pusl=1
thisform.grid1.setfocus()
thisform.label3.caption=vagonai.koment thisform.refresh
Elemento Pageframe1.page2.activate kodas:
thisform.grid2.visible=.T.
thisform.grid1.visible=.F.
pusl=2
thisform.grid2.setfocus()
thisform.label3.caption=avagonai.koment thisform.refresh
Migtuku kodai sutampa su formos vagonai.
2.4.3 Forma perziura
Migtuko Pirmyn kodas:
Sele vagonai if not eof()
skip
If eof()
go bottom endif endif thisform.refresh if pusl=1
thisform.grid1.setfocus else thisform.grid2.setfocus endif
Migtuko Atgal kodas:
Sele vagonai if not bof()
skip -1
if bof()
go top endif endif thisform.refresh thisform.grid1.setfocus if pusl=1
thisform.grid1.setfocus else thisform.grid2.setfocus endif
Migtuko Spauzdinti kodas:
report form reportas5.frx next 1 preview
2.4.4 Forma perziura1
Migtuko Pirmyn kodas:
Sele avagonai if not eof()
skip
If eof()
go bottom endif endif thisform.refresh if pusl=1
thisform.grid1.setfocus else thisform.grid2.setfocus endif
Migtuko Atgal kodas:
Sele avagonai if not bof()
skip -1
if bof()
go top endif endif thisform.refresh thisform.grid1.setfocus if pusl=1
thisform.grid1.setfocus else thisform.grid2.setfocus endif
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.release if naujas=1
goto saverec endif
2.4.6 Forma koregav1
Migtuko priimti kodas:
=TableUpdate()
thisform.release
Migtuko Atsisakyti kodas:
=TableRevert()
thisform.release if naujas=1
goto saverec endif
2.4.7 Forma isvyko
Migtuko Priimti kodas:
replace vagnr with vagonai.vagnr replace adata with vagonai.adata replace atime with vagonai.atime replace krov with vagonai.krov replace stot with vagonai.stot replace gav with vagonai.gav replace kel with vagonai.kel replace nuos with vagonai.nuos replace sulaik with vagonai.sulaik replace atrnr with vagonai.atrnr replace aform with vagonai.aform replace asast with vagonai.asast replace agal with vagonai.agal replace koment with vagonai.koment replace aktnr with vagonai.aktnr
=Tableupdate()
select vagonai delete next 1
thisform.release
Migtuko Atsisakyti kodas:
=Tablerevert()
select vagonai thisform.release
2.4.8 Forma laikot
Migtuko Rodyti kodas:
thisform.release pag=2
filtras1=”Nuo „+dtoc(fdata1)+” iki „+dtoc(fdata2)
do form vagonai1
Migtuko Atsisakyti kodas:
Thisform.release
2.4.9 Forma laikot1
Migtuko Rodyti kodas:
thisform.release filtras1=”Nuo „+dtoc(fdata1)+” iki „+dtoc(fdata2)
do case case bar()=1
sele vagonai set filter to adata>=fdata1 and adata<=fdata2
count to kiekvag1
sele 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 kiekvag2
count for (idata>=fdata1 and idata<=fdata2) to kiekvag3
sele sulprez go top i=1
scan store sulprez.sulpav to rez(i,1)
sele vagonai count for vagonai.sulaik=sulprez.sulkod to rez(i,2)
sele avagonai count 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 sulprez i=i+1
endscan sele avagonai set filter to sele vagonai set filter to report form reportas1 preview case bar()=2
report form reportas2 preview case bar()=3
report form reportas3 preview case bar()=4
report form reportas4 preview endcase
Migtuko Atsisakyti kodas:
Thisform.release
2.4.10 Forma Nor01
Migtuko Rasti kodas:
rasti2=””
do form paieska4
thisform.refresh thisform.grid1.setfocus()
2.4.11 Forma Nor04
Migtuko Rasti kodas:
rasti2=””
do form paieska4
thisform.refresh thisform.grid1.setfocus()
2.4.12 Forma Nor16
Migtuko Rasti kodas:
rasti2=””
do form paieska4
thisform.refresh thisform.grid1.setfocus()
2.4.13 Forma Nor58
Migtuko Rasti kodas:
rasti2=””
do form paieska4
thisform.refresh thisform.grid1.setfocus()
2.4.14 Forma sulprez
Migtuko Rasti kodas:
rasti2=””
do form paieska4
thisform.refresh thisform.grid1.setfocus()
2.4.15 Forma sulprez
Migtuko Toliau kodas:
thisform.release()
pag=1
do form vagonai1
2.4.15 Forma salinti
Migtuko Taip kodas:
delete next 1
thisform.release
=TableUpdate()
vagonai.refresh if pusl=1
vagonai.grid1.setfocus else vagonai.grid2.setfocus endif
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