ADMINISTRACINIAI TEISĖS PAZEIDIMAI, NAMŲ DARBAS, kursinis darbas

ĮVADAS

Šio darbo tema yra “ADMINISTRACINĖS TEISĖS PAŽEIDIMAI”.Šio darbo tikslas išmokti dirbti su ACCESS programa.Šiame darbe rasite visą pagrindinę informaciją apie ACCESS programa, kompiuterinę duomenų bazę, access duomenų bazės objektus, lenteles ir ryšius tarp jų,lentelių laukų tipus, lentelių ryšius ir jų tipus, taip pat rasite DB projektavimo patarimus, formų parametrus ir ataskaitas.
Access programa yra labai patogi sudaryti lenteles, formas, užklausas, ataskaitas. Tai labai paranki programa dirbti visose srityse kur reikia sudaryti lenteles su visokiais duomenimis, pvz; ji labai gerai padeda policijoje, kadangi su šia programa galima suskirstyti ir atrūšiuoti įvairiausius nusikaltimus, ar pažeidėjus, taip pat visus padarytus nusikaltimus, apie kuriuos pamatysite šiame darbe kaip ir kokiomis formomis jie yra suskirstyti.
Čia taip pat rasite ir galėsite susipažinti su šio darbo užduotimis, nuoseklią darbo eiga ir galutines tų padarytų užduočių lenteles.
Šio darbo tikslas pateikti administracinės teisės pažeidimų straipsnius, pažeidėjus, padarytus pažeidimus.Visa tai pateikti lentelėse, formose, sudaryti užklausas.Pabaigoje pateikti visų šių lentelėse įvestų duomenų galutinę ataskaitą.

ACCESS

Microsoft Access – dar viena programa, įeinanti į paketą Microsoft Office. Ji yra skirta mažos bei vidutinės galios duomenų bazėms (DB) kurti ir vaidyti, todėl paplitusi tarp paprastų vartotojų. Microsoft Access populiarumą lėmė dar ir tai, kad šios sistemos duomenų bazės vienu metu gali būti pasiekiamos keletui vartotojų. Duomenų valdymas yra patogus ir lengvai išmokstamas. Daugelį veiksmų padeda atlikti specialiai tam sukurtos programėlės — vedliai kurie sudėtingą procesą išskaido į keletą nesunkiai suprantamų žingsnelių. Access duomenų paieškos mechanizmas yra pažangus ir greitas, internete yra nemažai puslapių, kurie naudoja būtent šia programa sukurtas duomenų bazes. Nors jos yra ne tokios greitos ir patvarios, kaip Oracle, ar SQL Server valdomos duomenų bazės, tačiau gerokai pigesnės. Kalbant apie kainą, Access yra neabejotinai brangesnis už nemokamas atviro kodo duomenų bazių sistemas, tokias kaip MySQL (ji labiausiai paplitusi Unhc tipo operacinėse sistemose) arba PostgreSQL, tačiau vartotojo patogumo atžvilgiu Access yra viena iš geriausių DB programų Windows aplinkoje.
2.1.    KAS YRA KOMPIUTERINĖ DUOMENŲ BAZĖ
Paprastai šnekant, kompiuterinė (ar elektroninė) duomenų bazė (DB) tai elektroninių tam tikru būdu sugrupuotų duomenų sąrašas. Jei duomenys nėra elektroninio pavidalo, pvz., ligonių kortelės poliklinikoje (dar tik dvidešimt pirmojo amžiaus pradžia), tai duomenų bazė nevadinama kompiuterine. Elektroninis pavidalas gali būti labai įvairus: DB gali būti įrašyta į magnetinį diskelį ar diską, kompaktinį diską ar DVD, gali tik kurį laiką egzistuoti RAM atmintyje arba radijo bangų pavidalu. Duomenys nebus vadinami duomenų baze, jei jie nebus tam tikru būdu sugrupuoti ar apibūdinti. Pvz., DB negalime pavadinti į vieną rinkmeną surinktų pažymių nenurodant pavardžių, egzamino pavadinimų ar datų. Iš tokio sąrašo negautume jokios naudos. DB paprastai tėra tik struktūrizuotų duomenų rinkiniai. Tikrai naudingomis jos tampa tada, kai atsiranda tam tikra programinė įranga, leidžianti patogiai tuos duomenis įvesti, jų ieškoti, juos keisti ar naikinti. Tokia įranga kartu su DB vadinama duomenų bazių valdymo sistema (DBVS). Microsoft Access yra gana paplitusi DBVS.
2.2.    ACCESS DUOMENŲ BAZĖS OBJEKTAI
Microsoft Access duomenų bazės laikomos rinkmenose, kurių prievardis yra MDB (Microsoft Data Base). Viena duomenų bazė gali būti sudaryta tiek iš vienos MDB rinkmenos, tiek iš kelių susijusių rinkmenų. Į smulkesnes rinkmenas DB paprastai skaidoma tada, kai norima grynus duomenis atskirti nuo programinės dalies, skirtos tiems duomenims valdyti. Programinė dalis gali būti laikoma vienoje MDB rinkmenoje, o visi duomenys – kitoje rinkmenoje (ar keliose). Tada, pasikeitus programinės įrangos versijai, nebūtina keisti duomenų rinkmenų. Access&s vienu metu gali būti atidaręs tik vieną MDB rinkmeną (tačiau susietų MDB rinkmenų duomenis gali pasiekti).
2.3.    LENTELĖS IR JŲ RYŠIAI
Access duomenų bazėje visi duomenys laikomi lentelėse. Paprastai stengiamasi kiekvienoje atskiroje lentelėje surašyti tik vieno konkretaus tipo duomenis, pvz., informaciją apie automobilius – į vieną lentelę, apie autoservisus – į kitą, o jų bendrus duomenis (koks automobilis taisomas kokiame servise) nurodyti dar kitoje lentelėje. Lentelės pateiktame pavyzdyje yra tarpusavyje susijusios. Jų sąsajas nusako tam tikros taisyklės – vadinamieji ryšiai. Tokios DB, kuriose gali būti nurodomi ryšiai tarp lentelių, vadinamos sąryšinėmis DB (nuo žodžio relation – ryšys). Sąryšinėse DB galima išvengti duomenų dubliavimo, dėl to sumažėja tiek DB dydis, tiek neteisingų duomenų kiekis. Pvz., jeigu paprastoje, nesąryšinėje DB vienoje lentelėje kiekvienas įrašas (t.y. eilutė) pateikia informaciją apie pirkėją ir jo konkretų pirkinį parduotuvėje, tai kiekvieną sykį, kai pirkėjas vėl kažką nuperka, turi būti įvesta jo pavardė bei vardas. Maža to, kad kelis kartus be reikalo įvedama ta pati informacija, tai dar kiekvieną kartą gali būti padaryta klaida pavardėje.
2.4.    LENTELIŲ LAUKŲ TIPAI
Kiekvienas bet kurios lentelės laukas visada yra tam tikro vieno apibrėžto duomenų tipo – taip Access&s žino, ką su duomenimis galima daryti, kaip juos greičiau rasti ar kompaktiškiau sutalpinti duomenų bazėje. Galimi duomenų tipai yra šie:
•    Text (Tekstinis) duomenų tipas gali talpinti iki 255 simbolių ilgio tekstą, kurį gali sudaryti raidės, skaičiai bei kitokie ženklai.
•    Memo (Atmintinė) – tai tokio paties duomenų tipo laukas, kaip ir tekstinis, bet jis talpina gerokai daugiau duomenų – iki 65535 raidžių ar skaičių.
2.5.    LENTELIŲ RYŠIAI IR JŲ TIPAI
Tarpusavy lentelės susiejamos nurodant atitinkamus laukus skirtingose lentelėse. Laukų pavadinimai gali skirtis, tačiau duomenų tipai privalo būti identiški. Susietuose laukuose įvedami duomenys taip pat turėtų būti vienodi. Iš esmės tai reiškia, kad susieti laukai dubliuoja informaciją – vienos lentelės lauko duomuo atitinka susietos lentelės susieto lauko duomenį. Šis dubliavimas yra mažiausia blogybė. Kitokios struktūros DB dubliavimas išaugtų daug daugiau kartų.
2.6.    DB PROJEKTAVIMO PATARIMAI
Ne duomenų įvedimas, o gera DB struktūra DB kūrimo procese yra pats sunkiausias etapas. Kitaip tariant, svarbiausia sukurti tinkamas lenteles bei jų tarpusavio ryšius. Nėra universalaus algoritmo, kuris nurodytų, kaip geriausia sukurti duomenų bazę. Bet DB kūrimas taip pat nėra ir grynasis menas – egzistuoja tam tikros bendros taisyklės.
Pirmiausia, kuriant DB reikia išsiaiškinti, apie kokius konkrečius objektus bus renkami duomenys. Tada kiekvienam objektui sukuriama lentelė, o kiekvienam faktui apie objektą- lentelės laukas. Pvz., jei turite firmą, kuri stato ir parduoda gyvenamuosius namus ir norite sukurti savo produkcijos DB, tai tokioje DB turėtų būti surašyti klientai (viena lentelė), namai (jų adresai ir pardavimo kainos – kita lentelė), konstrukcinės medžiagos (trečia lentelė), firmos, iš kurių pirktos medžiagos ir t.t. Svarbu, kad toje pačioje lentelėje nebūtų dubliuojami duomenys. parduodantys skirtingomis kainomis. Norint įvesti tas kainas, kelis kartus teks įvesti ir tos medžiagos pavadinimą.
Gana svarbus žingsnis kuriant lenteles – tiksliai nustatyti kiekvieno lauko duomenų tipą bei nuspręsti, kuris laukas duotoje lentelėje bus raktažodis. Pvz., sudarinėjant firmų lentelę raktažodis laukas gali būti firmos kodas, tuo tarpu statybinėms
2.7.    FORMŲ PARAMETRAI
Kiekviena forma ir kiekvienas formos objektas turi gausybę parametrų (savybių), nusakančiųjų vaizdą, ryšį su duomenimis ar reakciją į pelės bei klaviatūros paspaudimus. Formos parametrus galima pamatyti atvertus formą redagavimo režime ir dukart spragtelėjus pilką foną šalia jos. Atsivers kelių skilčių parametrų langas (204 pav.). Kiekvienoje lango skiltyje išskirta tam tikra parametrų grupė, tačiau skiltis Ali (Visi) atverčia išsamų visų parametrų sąrašą. Keletas naudingų parametrų:
Didelė formos parametrų dalis prasideda žodžiu On. Tai parametrai, leidžiantys nustatyti, kaip forma reaguos į vieną ar kitą įvykį, pvz., On Close (Uždarant) parametras leidžia parinkti funkciją arba makrokomandą, kurią forma vykdys jos uždarymo metu. Šioje vietoje prasideda programavimas Visual Basic kalba. Šią temą jums teks išsiaiškinti patiems.
2.8.    ATASKAITOS
Lentelės reikalingos duomenims laikyti, užklausos skirtos lentelių duomenims filtruoti, formos patobulina jų įvedimą ir vaizdavimą, o ataskaitos skirtos duomenims grupuoti ir paruošti spausdinti. IŠ esmės ataskaita niekuo nesiskiria nuo eilinės formos, tik turi keletą savybių, pritaikytų spausdinimui. Kai kurias formas yra prasminga sukurti rankiniu būdu, o ataskaitas verta kurti naudojantis vedliais – nereikia rūpintis dizainu, daugelį sudėtingų operacijų vedliai atlieka automatiškai

UŽDUOČIŲ APRAŠYMAS
Užduotis:
1. SUDARYTI LENTELES:
Darbo eiga:
Nuėjau į TABLES → Create table in design view ir suvedžiau visus reikalingus duomenis kurie turi būti lentelėje kad galėčiau sudaryti ryšius kurie leistų susieti duomenis , kad galėčiau tolia dirbti su šia programa. Sudariau ATPK straispnių lentelę.
Nuėjau į TABLES → Create table in design view ir suvedžiau reikalingus duomenis kad galėčiau sudaryti Padarytų pažeidimų lentelę.
Nuėjau į TABLES → Create table in design view ir suvedžiau reikalingus duomenis kad galėčiau sudaryti Pažeidėjų lentelę.
Tada nuėjau TOOLS → Relationships ir sudariau ryšius, kurie padėjo atlikti skaičiavimus ir sudaryti ataskaitas su kelių lentelių duomenimis, buvo kuriamos tuščiomis lentelėmis, o jau po to suvedžiau duomenis į lenteles.
1.lentelė
ATPK straipsniai
Eiles numeris    Straipsnio numeris    Straipsnio pavadinimas
1    50    Tyčinis turto sužalojimas
2    107    Neteisetas aguonu auginimas
3    110    Gyvunu isigyjimo ir laikymo taisykliu pazeidimas
4    128    Vairavimas neturint teises vairuoti
5    129    Vairavimas apsvaigus
6    130    Pasitraukimas is eismo ivykio
7    164    Prekybos alkoholiniais gerimais pazeidimas
8    175    Etilo alkoholio neteisetas gaminimas ir laikymas
9    176    Neteisetas alkoholiniu gerimu pardavimas
10    177    Neteisetas manines degtines varymas
11    178    Alkoholiniu gerimu gerimas viesoje vietoje
12    180    Alkoholio nupirkimas nepilnameciui
13    181    Rukymas draudziamoje vietoje
14    183    Prekyba tabako gaminiais
15    184    Tabako nupirkimas nepilnameciui
16    185    Melagingas tarnybu iskvietimas
17    187    Pasipriesinimas policijos pareigunui
18    188    Pareigunu reikalavimu nevykdymas
19    189    Melagingu parodymu teikimas
20    190    Susirinkimu tvarkos pazeidimas

2. lentelė
Padaryti pažeidimai
Asmens kodas    Straipsnio numeris    Pazeidimas    Pazeidimo ivykdymo data    Nuobaudos uz padaryta pazeidima
365032323    164    Prekybos alkoholiniais gerimais pazeidimas    2000.12.25    4010
365032323    176    Neteisetas alkoholiniu gerimu pardavimas    2001.01.23    4500
365040212    130    Pasitraukimas is eismo ivykio    2002.06.24    850
365040212    187    Pasipriesinimas policijos pareigunui    2001.05.25    100
365042445    128    Vairavimas neturint teises vairuoti    1999.02.25    3000
369011252    50    Tycinis turto suzalojimas    1978.12.14    8000
369011252    176    Neteisetas alkoholiniu gerimu pardavimas    1978.03.03    4500
375120412    181    Rukymas draudziamoje vietoje    1989.05.26    100
378031124    107    Neteisetas aguonu auginimas    2001.08.29    10000
379051245    183    Prekyba tabako gaminiais    1985.03.26    2000
379051245    184    Tabako nupirkimas nepilnameciui    2003.09.15    250
380030265    175    Etilo alkoholio neteisetas gaminimas ir laikymas    2003.03.25    5000
380092145    185    Melagingas tarnybu iskvietimas    2003.05.02    50
381052223    180    Alkoholio nupirkimas nepilnameciui    1999.05.25    150
382050326    181    Rukymas draudziamoje vietoje    1999.06.23    100
382112958    187    Pasipriesinimas policijos pareigunui    2002.05.21    100
382112958    188    Pareigunu reikalavimu nevykdymas    2003.06.11    100
475060242    190    Melagingu parodymu teikimas    1998.09.02    2500
478090925    110    Gyvunu isigyjimo ir laikymo taisykliu pazeidimas    2004.12.12    150
480020506    50    Tycinis turto suzalojimas    1999.06.12    8000

3. lentelė
Pažeidėjai
Asmens kodas    Vardas    Pavarde    Gyvenamoji vieta
359112415    Mantas    Kuleckas    Mickeviciaus 132,Vilnius
365032323    Adomas    Mikelionis    Merkines 25-58,Druskininkai
365040212    Romas    Dambrauskas    Kestucio 15-45, Kaunas
365042445    Juozas    Kraunelis    Merkines 127-58, Druskininkai
369011252    Gediminas    Ausrys    M.K.Ciurlionio 125-65, Alytus
374121512    Donatas    Bruzas    Nemencines 52-23, Panevezys
375082545    Jonas    Gudelis    Gardino 15-58, Kaunas
375120412    Jonas    Jonaitis    Gardino 35-26, Kaunas
378031124    Marius    Naujalis    Merkines 25-69, Druskininkai
378100562    Tomas    Vainauskas    Ateities 12-452, Palanga
379051245    Eugenijus    Svaigauskas    Grybų127-45, Merkine
380030265    Giedrius    Goborovas    Dzukų 32, Siauliai
380092145    Nerijus    Matulionis    Gerosios vilties 125-85, Vilnius
381052223    Austumas    Aleksandravicius    Kanto 12-10, Kaunas
382050326    Daukantas    Jankauskas    Kestucio 42-56, Kaunas
382112958    Martynas    Aleksandravicius    Gedimino 12-64, Vilnius
475060242    Asta    Jonaitiene    Gardino 35-26, Kaunas
478090925    Nijole    Kazloviene    Svitrigailos 36-69, Kėdainiai
479020424    Deimante    Pauliukoniene    Vaidilutes 46, Vilnius
480020506    Irmante    Ciurlionyte    Laisvės 78-36, Kaunas

Ryšiai

1 pav.
2. SUDARYTI UŽKLAUSAS:
Darbo eiga:
•    Pirmoji užklausa buvo atrūšiuoti Pažeidėjus padariusius nusikaltimus nuo 1999/06/01 iki 1999/06/31. Nuėjau į Queries → Create query in  Design view, su ADD išsikėliau visas reikalingas lenteles, kurių reikėjo atrūšiavimui, Criteria parašiau Between 1999/06/01 and 1999/06/31 ir paspaudžiau !
4. lentelė.
Atranka pagal mėnesį
Pazeidimas    Straipsnio numeris    Pazeidimo ivykdymo data    Vardas    Pavarde    Gyvenamoji vieta
Tycinis turto suzalojimas    50    1999.06.12    Irmante    Ciurlionyte    Laisves 78-36, Kaunas
Rukymas draudziamoje vietoje    181    1999.06.23    Daukantas    Jankauskas    Kestucio 42-56, Kaunas

•    Antroji užklausa buvo atrūšiuoti pažeidėjus padariusius pažeidimus, kurie gyvena tik Kaune. Nuėjau į Queries → Create query in  Design view, su ADD išsikėliau visas reikalingas lenteles, kurių reikėjo atrūšiavimui, Criteria parašiau*Kaunas ir paspaudžiau !
5. lentelė
Atranka pagal Kauną
Pazeidimas    Pazeidimo ivykdymo data    Straipsnio numeris    Vardas    Pavarde    Gyvenamoji vieta
Rukymas draudziamoje vietoje    1989.05.26    181    Jonas    Jonaitis    Gardino 35-26, Kaunas
Melagingu parodymu teikimas    1998.09.02    190    Asta    Jonaitiene    Gardino 35-26, Kaunas
Alkoholio nupirkimas nepilnameciui    1999.05.25    180    Austumas    Aleksandravicius    Kanto 12-10, Kaunas
Pasitraukimas is eismo ivykio    2002.06.24    130    Romas    Dambrauskas    Kestucio 15-45, Kaunas
Pasipriesinimas policijos pareigunui    2001.05.25    187    Romas    Dambrauskas    Kestucio 15-45, Kaunas
Rukymas draudziamoje vietoje    1999.06.23    181    Daukantas    Jankauskas    Kestucio 42-56, Kaunas
Tycinis turto suzalojimas    1999.06.12    50    Irmante    Ciurlionyte    Laisves 78-36, Kaunas

•    Trečioji užklausa buvo padaryti papildoma lentelę su , kurioje būtų atrūšiuotos kiek ir kokių nuobaudų ya padaręs kiekvienas pažeidėjas. Nuėjau į Queries → Create query by using wizard, su ADD išsikėliau visas reikalingas lenteles, kurios reikalingos kad parodytų tuos visus pažeidėjus ir nuobaudas, tada spaudžiau visur Next ir pavadinau papildoma. Tiap pat lentelėje nustačiau Group by , kad suskaičiuotų nuobaudų kiekį., paspaudžiau !

6. lentelė
Papildoma
Pavarde    Total Of Nuobaudos uz padaryta pazeidima    50    107    110    128    130    164    175    176    180    181    183    184    185    187    188    190
Aleksandravicius    3                                    1                    1    1
Ausrys    2    1                            1
Ciurlionyte    1    1
Dambrauskas    2                    1                                    1
Goborovas    1                            1
Jankauskas    1                                        1
Jonaitiene    1                                                                1
Jonaitis    1                                        1
Kazloviene    1            1
Kraunelis    1                1
Matulionis    1                                                    1
Mikelionis    2                        1        1
Naujalis    1        1
Svaigauskas    2                                            1    1

•    Ketvirtoji užklausa buvo atrūšiuoti kiek pažeidimų yra padaręs kiekvienas pažeidėjas. Nuėjau į Queries → Create queryin Design view, su ADD išsikėliau visas reikalingas lenteles, kurios reikalingos kad parodytų tuos visus pažeidimų kiekį, o tam reikėjo sekančiame stulpelyje dar parašyti “ kiekis:”ir kur yra parašyta TOTAL nustatyti Expression ir paspausti !.Štai koks gavosi rezultatas:
7. lentelė.
Pažeidimų kiekis
Pavardė    Kiekis
Aleksandravicius    1
Aleksandravicius    2
Ausrys    2
Ciurlionyte    1
Dambrauskas    2
Goborovas    1
Jankauskas    1
Jonaitiene    1
Jonaitis    1
Kazloviene    1
Kraunelis    1
Matulionis    1
Mikelionis    2
Naujalis    1
Svaigauskas    2

3. SUDARYTI FORMAS:
Darbo eiga:
•    Penktoji užduotis sudaryti ATPK pažeidimų lentelės. Nuėjau į FORMS → Create from by using wizard, sukėliau reikalingus duomenis, paspaudžiau NEXT , nusistačiau Columnar ir Next, tada pasirinkau lentelės formą ir paspaudžiau Next, užsivadinau ATPKStraipsniai ir FINISH.
ATPK straipsniai

2. pav.
•    Šeštoji užduotis buvo sudaryti formas Pažeidėjų lentelės. Nuėjau į FORMS → Create from by using wizard, sukėliau reikalingus duomenis, paspaudžiau NEXT , nusistačiau Columnar ir Next , tada pasirinkau lentelės formą ir paspaudžiau Next, užsivadinau Pažeidėjai ir FINISH.

Pažeidėjai

3.pav.
•    Septintoji užduotis buvo sudaryti formas Padaryti pažeidimai lentelė ir ją dar papildyti naujomis dviem lentelėmis: “Pažeidėjai “ ir “ATPK straipsnai:. Nuėjau į FORMS → Create from by using wizard, sukėliau reikalingus duomenis, paspaudžiau NEXT , nusistačiau Columnar ir Next , tada pasirinkau lentelės formą ir paspaudžiau Next, užsivadinau Padaryti pažeidėjai ir FINISH. Tada paspaudžiau Design view ir įrankių juostoje susiradau įrankį List Box ir papildžiau Padarytų pažeidimų lentelę dviem naujomis lentelėmis.
Padaryti pažeidimai

4. pav.

3.  SUDARYTI ATASKAITAS:
Darbo eiga:
•    Nuėjau į REPORTS → Create report by using wizard, tada susikėliau reikalingas lenteles pagal kurias dariau ataskaitą, Next, pasirinkau ataskaitos rūšį ir FINISH

Ataskaita pagal kiekį ir nuobaudas.

5. pav.

IŠVADA

Galutinėje išvadoje norėčiau pasakyti , jog su ACCESS programa nėra labai sunku dirbti. ACCESS programa yra labai paranki atlikti ir sudaryti duomenų bazės projektavimą, taip pat galima sudaryti lentelės modelio sukūrimą, ryšius tarp lentelių, o taip pat lengvai užpildomos duomenų bazės duomenimis.
Darydama šį darbą išmokau dirbti ir apdoroti informaciją su ACCESS programa, kuri reikalinga visur: dirbant namie, mokykloje ar firmoje.Access programa padeda sudaryti reikalingas ir įvairių rūšių lenteles, taip pat sudaryti tam tikras formas, sudaryti užklausas, parengti tam tikras ataskaitas.

LITERATŪROS SĄRAŠAS:
1.) Antanas Vidžiūnas, Rita Marčiulinienė “Access xp taikomųjų duomenų bazių projektavimo pagrindai”
2.) http://www.speros.lt/go/715/dar_vienas_informatikos_iva.html

PROGRAMAVIMAS C++ KURSINIS DARBAS MOKYKLOS DUOMENŲ BAZĖS ADMINISTRAVIMAS

Užduotis:

Sugalvojau tokią užduotį: mokykloje kaupiama informacija – mokinio pavardė, vardas, dalykas, klasė ir vidurkis. Programa turi veikti taip, kad būtų galimybė atlikti duomenų peržiūrą, paiešką pagal pavardę, būtų galima redaguoti saugomus ir įvestus duomenis, būtų galima pateikti nepažangių mokinių sąrašą, kurių vidurkis būtų mažesnis už 5, taip pat programa turi leisti papildyti saugomus duomenis naujais duomenimis, turi turėti galimybę pašalinti pasirinktą mokinį iš duomenų bazės, bei atlikti duomenų rikiavimą pagal pavardę.

Užduoties analizė:

Susigalvotai užduočiai susidariau tokią analizę, kurioje mąsčiau, kokius kintamuosius, ciklus, funkcijas naudosiu. Iš užduoties jau aiškiai matyti, kad lengviausia ir patogiausia bus naudoti klases. Tad sudarysiu vieną klase kurią pavadinsiu Mokinys. Šią klasę aprašys tokie kintamieji: pavardė, vardas, dalykas, klase, vidurkis. Visi šie kintamieji bus public tipo, kad  juos mes galėtumėme naudoti už klasės ribų. Pavardė, vardas, dalykas bus char tipo kintamieji, nes juos sudarys simbolių kratinys. Kintamasis klasė bus int tipo, nes tai skaičius, o vidurkis float tipo, nes vidurki imsime su kableliu. Duomenų peržiūrai, redagavimui, trynimui ir kitiems veiksmams sudarysime funkcijas, kurias inkapsuliuosime  į klasę Mokinys. Funkcijos bus void tipo jei mes neperduosime jokios reikšmės ir int tipo jei mums reiks perduoti reikšmes. Duomenų tvarkymui naudosime dinaminius masyvus.

Užduoties išsikelti uždaviniai:

Prieš pradedant realizuoti užduotį sau išsikėliau tokius klausimus:
•    Kelias klases tikslinga naudoti.
•    Klasės kintamųjų apsirašymas
•    Kelias funkcijas tikslinga ir patogiausia naudoti
•    Ką kiekviena funkcija atliks
•    Funkcijos kintamųjų apsirašymas, įvedimas.
•    Funkcijų parinkimas ir pritaikymas veiksmams atlikti.
•    Kaip nuskaityti duomenis nuo struktūrizuoto failo
•    Kaip suformuoti išvedimo masyvą
•    Kiek reikšmių jame spausdinti.
•    Kaip duomenis ir visos programos realizavimą pateikti vartotojui
•    Kaip atlikti duomenų paiešką pagal pavardę
•    Kaip redaguoti duomenis, kad naujus patalpintų i senų duomenų vietą
•    Kaip rasti visus mokinius kurių vidurkis <5
•    Kaip papildyti duomenų masyvą
•    Kaip ištrinti reikiamus duomenis
•    Kaip atlikti rikiavimą
•    Kaip rasti elementu kieki

Algoritmas:
1.    Bibliotekų aprašai.
2.    Header failas su klasės ir funkcijų deklaracijomis
3.    f-ja duomenų dydžiui nustatyti
4.    f-ja duomenų nuskaitymui iš failo.
5.    f-ja duomenų parodymui ekrane.
6.    f-ja duomenų redagavimui
7.    f-ja nepažangiems mokiniams rasti
8.    f-ja naujų duomenų iterpimui
9.    f-ja duomenu trynimui
10.    f-ja duomenu paieškai pagal pavardę
11.    f-ja duomenų rikiavimui pagal pavardę
12.    f-ja parodanti meniu – galimu veiksmų ir komandų sarašą
13.    pagrindinė f-ja
Testavimo rezultatai:
Duomenų peržiūra:

Duomenų paieška:
Duomenų redagavimas:

Nepažangių mokinių radimas:

Duomenų papildymas:

Duomenų trynimas:

Duomenų rikiavimas:

Programos kodas:

Klase.h

//—————————————————————————

#pragma hdrstop

//—————————————————————————

#pragma argsused
const char CDuom[]=”Duomenys.txt”;
class Mokinys{
public:  char dalykas[15];
char vardas[10];
char pavarde[15];
int klase;
float vidurkis;
int Dydis();
void Duomenys();
void Rasti(Mokinys*);
void Redaguoti(Mokinys*);
void Spausdinti(Mokinys*);
void Nepazangus();
void Iterpti();
void Trinti(Mokinys*);
void Rikiuoti(Mokinys*);
void Meniu();
};
Mokinys *A;
int N;
//—————————————————————————

Unit1.cpp

//========================Bibliotekos=============================
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fstream.h>
#include <Klase.h>

//===================Funkcija nustatanti duomenu failo dydi==============
int Mokinys :: Dydis(){

FILE *FD; char *R;
R = new char[80];
FD = fopen(CDuom, “r”);
if(FD == NULL){
cout<<“Duomenu failas nesurastas”;
}
N = 0;
while(!feof(FD)){
fgets(R, 80, FD);
N++;
}
fclose(FD);
delete R;
return N;
}

//==================Funkcija nuskaitanti ir isvedanti failo duomenis==========
void Mokinys :: Duomenys()
{
int N = Dydis();
A = new Mokinys[N];
FILE *FD;
FD = fopen(CDuom, “r”);
if (A == NULL)
{
cout<<“Duomenims trukstas atminties”;
}

int i = 0;
while(!feof(FD))
{
fscanf(FD, “%15s%10s%15s%i%f”, A[i].pavarde, A[i].vardas, A[i].dalykas, &A[i].klase, &A[i].vidurkis);
i++;
}

fclose(FD);
}

//===================Funkcija leidzianti redaguoti duomenis===============
void Mokinys :: Redaguoti(Mokinys *A){

char dalykas1[15];                                                 //kintamasis-naujas dalykas
char vardas1[10];                                                  //———–naujas vardas
char pavarde1[15];                                                //———–nauja pavarde
int klase1;                                                             //———–nauja klase
float vidurkis1;                                                      //———–naujas vidirkis
cout<<“Iveskite pavarde, pagal kuria norite redaguoti: \n”;
cin >> pavarde1;                                                  //norimos redaguoti pavardes ivedimas
for(int i=0; i<N; i++) {                                  //ciklas einantis per duomenis
if(strcmp(A[i].pavarde,pavarde1)==0) {                               //jei rasta tokia pavarde
cout << “Senas vardas: “<<A[i].vardas<<” Iveskite nauja varda: “;
cin >> vardas1;                                                      //naujo vardo ivedimas
strcpy(A[i].vardas,vardas1);                           //naujo varda kopijavimas i senojo vieta
cout << “Sena pavarde: “<<A[i].pavarde<<” Iveskite nauja pavarde: “;
cin>>pavarde1;                                                    //naujos pavardes ivedimas
strcpy(A[i].pavarde, pavarde1);                           //naujos pavardes kopijavimas
cout << “Senas dalykas: “<<A[i].dalykas<<” Iveskite nauja dalyka: “;
cin>>dalykas1;                                                //naujo dalyko ivedimas
strcpy(A[i].dalykas, dalykas1);                        //naujo dalyko kopijavimas
cout<<“Sena klase: “<<A[i].klase<<” Iveskite nauja klase: “;
cin>>klase1;                                                  //naujos klases ivedimas
A[i].klase=klase1;                                      //sena klase keiciama i nauja
cout<<“Senas vidurkis: “<<A[i].vidurkis<<” Iveskite nauja vidurki: “;
cin>>vidurkis1;                                              //naujo vidurkio iveimas
A[i].vidurkis=vidurkis1;                               //senas vidurkis keiciamas i nauja
i=N;
cout<<“Atnaujinti duomenys: “<<endl;
}
}
}

//===================Funkcija spausdinanti duomenis – rezultata===========
void Mokinys :: Spausdinti(Mokinys *A){
cout<<“+—————————————————————+”<<endl;
cout<<“|  Pavarde   |   Vardas    |      Dalykas    | Klase | Vidurkis |”<<endl;
cout<<“+—————————————————————+”<<endl;
for(int i=0; i<N; i++) {                                                      //per visus elementus
cout<<“|”<<A[i].pavarde <<”   \t”<<A[i].vardas<<”    \t”<<A[i].dalykas<<”    \t”<<A[i].klase<<”    \t”<< A[i].vidurkis<<”    \t|”<<endl;
}
cout<<“+—————————————————————+”<<endl;
}

//===================Funkcija randati tuos kuriu vidurkis <5 ==========
void Mokinys :: Nepazangus(){
float vidurkis;
cout<<“+—————————————————————+”<<endl;
cout<<“|  Pavarde   |   Vardas    |      Dalykas    | Klase | Vidurkis |”<<endl;
cout<<“+—————————————————————+”<<endl;
for(int i=0; i<N; i++) {                              //per visus elementus
if(A[i].vidurkis<5)                                      //jei  vidurkis maziau uz 5
cout<<“|”<<A[i].pavarde <<”   \t”<<A[i].vardas<<”    \t”<<A[i].dalykas<<”    \t”<<A[i].klase<<”    \t”<< A[i].vidurkis<<”    \t|”<<endl;
}
cout<<“+—————————————————————+”<<endl;
}

//==================Funkcija leidzianti papildyti duomenis=============
void Mokinys :: Iterpti(){

cout << “Iveskite varda: “;
cin >> vardas;
cout << “Iveskite pavarde: “;
cin >> pavarde;
cout << “Iveskite dalyka: “;
cin >> dalykas;
cout << “Iveskite klase: “;
cin >> klase;
cout << “Iveskite vidurki:”;
cin >> vidurkis;

strcpy(A[N].vardas, vardas);                                       //papildo masyva naujais irasais
strcpy(A[N].pavarde, pavarde);
strcpy(A[N].dalykas, dalykas);
A[N].klase=klase;
A[N].vidurkis=vidurkis;
N++;

}

//========================Funkcija leidzianti trinti duomenis==========
void Mokinys :: Trinti(Mokinys *A)
{
char kas[20];                                                   //kintamasis-pavarde kuria norime istrinti
cout<<“Iveskite pavarde, kuria norite trinti”<<endl;
cin>>kas;
for(int k=0; k<N; k++) {
if(!strcmp(A[k].pavarde,kas)){         //tikrina per masyva, jei pavarde sutampa su yvestu
for(int i=k; i<N; i++)
A[i]=A[i+1];
N–;                                                   //duomenu dydzio sumazinimas
}
}
}

//===========================Funkcija duomenu paieskai===============
void Mokinys :: Rasti(Mokinys *A){
char s[15];
cout << “Iveskite pavarde kuria norite rasti:\n”;
cin >> s;                                     // ivedamas paz nr
cout<<“+—————————————————————+”<<endl;
cout<<“|  Pavarde   |   Vardas    |      Dalykas    | Klase | Vidurkis |”<<endl;
cout<<“+—————————————————————+”<<endl;
int i;
for(i=0; i<N; i++) {
if(strcmp(A[i].pavarde,s)==0)                 // jei sutampa
{
cout<<“|”<<A[i].pavarde <<”   \t”<<A[i].vardas<<”    \t”<<A[i].dalykas<<”    \t”<<A[i].klase<<”    \t”<< A[i].vidurkis<<”    \t|”<<endl;;
}
}
printf(“—————————————————————–\n”);
}

//=======================Funkcija atliekanti rikiavima=============
void Mokinys :: Rikiuoti(Mokinys *A)
{
Mokinys C;
for(int i=0; i<N; i++){
for(int j=i+1; j<N; j++){
if (strcmp(A[j].pavarde,A[i].pavarde)<0)
{ C=A[i]; A[i]=A[j]; A[j]=C;}
}
}
}

//==================================Meniu=======================
void Mokinys :: Meniu()
{
cout<<“1. Duomenu perziura\n”;
cout<<“2. Duomenu paieska\n”;
cout<<“3. Duomenu redagavimas\n”;
cout<<“4. Nepazangiausi\n”;
cout<<“5. Duomenu papildymas\n”;
cout<<“6. Duomenu salinimas\n”;
cout<<“7. Rikiuoti\n”;
cout<<“8. Baigti darba\n”;
}

//========================Pagrindine programa=====================
main(){
Mokinys B;
int s, n;                                                        //kintamieji komandos numeriui ir ciklui
cout << “MENIU:\n”;
B.Meniu();                                                //Meniu-komandu isvedimas ekrane
B.Duomenys();
cout<<“Jusu veiksmas: “;
cin >> s;                                                  //pasirinktos komandos ivedimas
for(int i=0; i<n; i++){                             //begalinis ciklas meniu komandoms ivesti
switch(s){                                                 // veiksmu pasirinkimas

case 1:                                                   //funkcija duomenu parodymui
B.Duomenys();
B.Spausdinti(A);
cout<<“Jusu veiksmas: “;
cin >> s;
break;

case 2:
B.Rasti(A);                                         //funkcija atliekanti paieska
cout<<“Jusu veiksmas: “;
cin >> s;
break;

case 3:
B.Redaguoti(A);                                   //funkcija atliekanti redagavima
B.Spausdinti(A);                                 //funkcija atliekanti rezultatu spausdinima
cout<<“Jusu veiksmas: “;
cin >> s;
break;

case 4:
B.Nepazangus();                         //funkcija randanti mokinius kuriu vidurkis <5
cout<<“Jusu veiksmas: “;
cin >> s;
break;

case 5:                                      //funkcija atliekanti iterpima-papildyma
B.Iterpti();                        //funkcija atliekanti rezultatu spausdinima
B.Spausdinti(A);
cout<<“Jusu veiksmas: “;
cin >> s;
break;

case 6:
B.Trinti(A);                                    //funcija atliekanti trynima
B.Spausdinti(A);
cout<<“Jusu veiksmas: “;
cin >> s;
break;

case 7:
B.Rikiuoti(A);
B.Spausdinti(A);
cout<<“Jusu veiksmas: “;
cin >> s;
break;
case 8:                                          //programos nutraukimas ir lango uzdarymas
EXIT_SUCCESS;
return 0;
}
}
}