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, avvagonai, 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 jaau 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 meeniu 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 pu

unktas 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 re

eportas6.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 ko

odas:

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

Leave a Comment