Funkcionalna shema in funkcionalna sestava programa. Oblikovanje strukturiranega programa


Tema 1.3: Sistemska programska oprema

Tema 1.4: Storitvena programska oprema in osnove algoritmov

Uvod v ekonomsko informatiko

1.3. sistemska programska oprema osebnega računalnika

1.3.1. Struktura programske opreme osebnega računalnika

Nabor programov, namenjenih reševanju težav na osebnem računalniku, se imenuje programska oprema. Sestava programske opreme osebnega računalnika se imenuje konfiguracija programske opreme.

Programsko opremo lahko razdelimo v tri kategorije:

  1. sistemska programska oprema (programi za splošno uporabo), ki opravljajo različne pomožne funkcije, kot so ustvarjanje kopij uporabljenih informacij, zagotavljanje informacij pomoči o računalniku, preverjanje funkcionalnosti računalniških naprav itd.
  2. aplikacijska programska oprema, ki zagotavlja potrebno delo na osebnem računalniku: urejanje besedilnih dokumentov, ustvarjanje risb ali slik, obdelava informacijskih nizov itd.
  3. orodna programska oprema (programski sistemi), ki zagotavlja razvoj novih računalniških programov v programskem jeziku.


riž. 1.

Sistemska programska oprema

Ti programi za splošno uporabo niso povezani z določeno računalniško aplikacijo in izvajajo tradicionalne funkcije: načrtovanje in upravljanje opravil, upravljanje V/I itd.

Z drugimi besedami, sistemski programi opravljajo različne pomožne funkcije, na primer ustvarjanje kopij uporabljenih informacij, zagotavljanje informacij o pomoči o računalniku, preverjanje delovanja računalniških naprav itd.

Sistemska programska oprema vključuje:

  • operacijski sistemi (ta program se naloži v RAM, ko je računalnik vklopljen);
  • lupinski programi (zagotavljajo bolj priročen in vizualni način komunikacije z računalnikom kot uporaba ukazne vrstice DOS, na primer Norton Commander);
  • operacijske lupine – vmesniški sistemi, ki se uporabljajo za izdelavo grafičnih vmesnikov, multiprogramiranje itd.;
  • Gonilniki (programi za nadzor vrat perifernih naprav, običajno naloženi v RAM ob zagonu računalnika);
  • pripomočki (pomožni ali pomožni programi, ki uporabniku nudijo številne dodatne storitve).

Pripomočki vključujejo:

  • upravljalniki datotek ali upravitelji datotek;
  • sredstva za dinamično stiskanje podatkov (omogočajo povečanje količine informacij na disku zaradi dinamičnega stiskanja);
  • orodja za ogled in predvajanje;
  • diagnostična orodja; nadzorna orodja omogočajo preverjanje konfiguracije računalnika in preverjanje delovanja računalniških naprav, predvsem trdih diskov;
  • komunikacijska orodja (komunikacijski programi) so namenjena organizaciji izmenjave informacij med računalniki;
  • Računalniška varnostna orodja (varnostno kopiranje, protivirusna programska oprema).

Treba je opozoriti, da so nekateri pripomočki vključeni v operacijski sistem, medtem ko drugi del deluje avtonomno. Večina splošne (sistemske) programske opreme je vključena v OS. Nekatera splošna programska oprema je vključena v sam računalnik (nekateri programi OS in kontrolni testi so napisani v ROM-u ali PROM-u, nameščenem na matični plošči). Nekatere običajne programske opreme so samostojni programi in so dobavljene ločeno.

Aplikacijska programska oprema

Aplikacijske programe lahko uporabljamo samostojno ali kot del programskih sistemov ali paketov.

Aplikativna programska oprema - programi, ki neposredno omogočajo opravljanje potrebnega dela na osebnem računalniku: urejanje besedilnih dokumentov, ustvarjanje risb ali slik, ustvarjanje preglednic itd.

Paketi aplikativne programske opreme so sistemi programov, ki jih glede na področje uporabe delimo na problemsko orientirane, splošne pakete in integrirane pakete. Sodobni integrirani paketi vsebujejo do pet funkcionalnih komponent: testni procesor in procesor za preglednice, DBMS, grafični urejevalnik, telekomunikacijska orodja.

Aplikacijska programska oprema na primer vključuje:

  1. Paket pisarniških aplikacij MS OFFICE.
  2. Računovodski sistemi.
  3. Finančni analitični sistemi.
  4. Integrirani paketi za upravljanje pisarne.
  5. CAD – sistemi (računalniško podprti sistemi za načrtovanje).
  6. HTML ali spletni urejevalniki.
  7. Brskalniki so sredstva za pregledovanje spletnih strani.
  8. Grafični urejevalnik.
  9. Ekspertni sistemi.

Programska oprema orodja

Orodna programska oprema ali programski sistemi so sistemi za avtomatizacijo razvoja novih programov v programskem jeziku.

V najbolj splošnem primeru morate za izdelavo programa v izbranem programskem jeziku (sistemski programski jezik) imeti naslednje komponente:

  1. Urejevalnik besedil za ustvarjanje datoteke z izvornim besedilom programa.
  2. Prevajalnik ali tolmač. Izvorno besedilo se prevede v vmesno objektno kodo s programom za prevajanje. Izvorna koda velikega programa je sestavljena iz več moduli(izvorne datoteke). Vsak modul se prevede v ločeno datoteko z objektno kodo, ki jo je treba nato združiti v eno.
  3. Urejevalnik povezav ali sestavljalnik, ki izvaja povezovanje objektnih modulov in generira delujočo aplikacijo kot izhod - izvršljivo kodo. Izvršljiva koda je popoln program, ki ga je mogoče izvajati na katerem koli računalniku, ki ima operacijski sistem, za katerega je bil program ustvarjen. Nastala datoteka ima praviloma končnico .EXE ali .COM.
  4. V zadnjem času so postale razširjene metode vizualnega programiranja (z uporabo skriptnih jezikov), namenjene ustvarjanju aplikacij Windows. Ta postopek je avtomatiziran v okoljih hitrega načrtovanja. V tem primeru se uporabljajo že pripravljene vizualne komponente, ki so konfigurirane s posebnimi urejevalniki.

Najbolj priljubljeni urejevalniki (programski programski sistemi z uporabo vizualnih orodij) za vizualno oblikovanje:

  1. Borland Delphi - zasnovan za reševanje skoraj vseh problemov programiranja aplikacij.
  2. Borland C++ Builder je odlično orodje za razvoj aplikacij DOS in Windows.
  3. Microsoft Visual Basic je priljubljeno orodje za ustvarjanje programov Windows.
  4. Microsoft Visual C++ - to orodje vam omogoča razvoj aplikacij, ki se izvajajo v okolju OS, kot je Microsoft Windows.

Nabor programov, namenjenih reševanju težav na osebnem računalniku, se imenuje programska oprema. Sestava programske opreme osebnega računalnika se imenuje konfiguracija programske opreme. Programsko opremo lahko razdelimo v tri kategorije (slika 1):

Slika 1. Klasifikacija programske opreme

    sistemska programska oprema (programi za splošno uporabo), ki opravljajo različne pomožne funkcije, kot so ustvarjanje kopij uporabljenih informacij, zagotavljanje informacij pomoči o računalniku, preverjanje funkcionalnosti računalniških naprav itd.

    aplikacijska programska oprema, ki zagotavlja potrebno delo na osebnem računalniku: urejanje besedilnih dokumentov, ustvarjanje risb ali slik, obdelava informacijskih nizov itd.

    orodna programska oprema (programski sistemi), ki zagotavlja razvoj novih računalniških programov v programskem jeziku.

Sistemska programska oprema je skupek programov, ki zagotavljajo učinkovito upravljanje komponent računalniškega sistema, kot so procesor, RAM, vhodno/izhodne naprave, omrežna oprema, ki delujejo kot »vmesni sloj«, na eni strani katerega je strojna oprema, na drugi pa uporabniške aplikacije. Za razliko od aplikativne programske opreme sistemska programska oprema ne rešuje specifičnih aplikacijskih problemov, temveč le zagotavlja delovanje drugih programov, upravlja strojne vire računalniškega sistema itd.

Ti programi za splošno uporabo niso povezani z določeno računalniško aplikacijo in izvajajo tradicionalne funkcije: načrtovanje in upravljanje opravil, upravljanje V/I itd. Z drugimi besedami, sistemski programi opravljajo različne pomožne funkcije, na primer ustvarjanje kopij uporabljenih informacij, zagotavljanje informacij o pomoči o računalniku, preverjanje delovanja računalniških naprav itd. Sistemska programska oprema vključuje:

    operacijski sistemi (ta program se naloži v RAM, ko je računalnik vklopljen)

    lupinski programi (zagotavljajo bolj priročen in vizualni način komunikacije z računalnikom kot uporaba ukazne vrstice DOS, na primer Norton Commander)

    operacijske lupine so vmesniški sistemi, ki se uporabljajo za ustvarjanje grafičnih vmesnikov, multiprogramiranje itd.

    Gonilniki (programi za nadzor vrat perifernih naprav, običajno naloženi v RAM ob zagonu računalnika)

    pripomočki (pomožni ali pomožni programi, ki uporabniku nudijo številne dodatne storitve)

Pripomočki vključujejo:

    upravitelji datotek ali upravitelji datotek

    orodja za dinamično stiskanje podatkov (omogočajo povečanje količine informacij na disku zaradi dinamičnega stiskanja)

    orodja za ogled in predvajanje

    diagnostična orodja; nadzorna orodja omogočajo preverjanje konfiguracije računalnika in preverjanje delovanja računalniških naprav, predvsem trdih diskov

    komunikacijska orodja (komunikacijski programi) so namenjena organizaciji izmenjave informacij med računalniki

    Računalniška varnostna orodja (varnostno kopiranje, protivirusna programska oprema).

Pripomočki so programi, namenjeni reševanju ozkega obsega pomožnih nalog.

Včasih so pripomočki razvrščeni kot servisna programska oprema

Pripomočki se uporabljajo za:

    Spremljanje indikatorjev senzorjev in delovanja opreme - spremljanje temperature procesorja in video adapterja; branje S.M.A.R.T. trdi diski;

    Upravljanje parametrov opreme - omejitev največje hitrosti vrtenja pogona CD; spreminjanje hitrosti ventilatorja.

    Indikatorji spremljanja - preverjanje referenčne integritete; pravilnost zapisa podatkov.

    Razširjene zmožnosti - formatiranje in/ali ponovno particioniranje diska ob shranjevanju podatkov, brisanje brez možnosti obnovitve.

Vrste pripomočkov:

Disk Utilities

      Defragmentatorji

      Skeniranje diska - iskanje datotek in območij diska, ki so bili nepravilno posneti ali poškodovani na različne načine in njihova naknadna odstranitev za učinkovito uporabo prostora na disku.

      Čiščenje diska - brisanje začasnih datotek, nepotrebnih datotek, praznjenje koša.

      Particioniranje diska je razdelitev diska na logične diske, ki imajo lahko različne datotečne sisteme in jih operacijski sistem zaznava kot več različnih diskov.

      Varnostno kopiranje - ustvarjanje varnostnih kopij celotnih diskov in posameznih datotek ter obnavljanje iz teh kopij.

      Stiskanje diskov - stiskanje informacij na diskih za povečanje zmogljivosti trdih diskov.

      • Registrski pripomočki

        Pripomočki za spremljanje opreme

        Preizkusi opreme

Slika 2. Mesto odprtokodne programske opreme v večnivojski strukturi računalnika

Treba je opozoriti, da so nekateri pripomočki vključeni v operacijski sistem, medtem ko drugi del deluje avtonomno. Večina splošne (sistemske) programske opreme je vključena v OS (slika 2). Nekatera splošna programska oprema je vključena v sam računalnik (nekateri programi OS in kontrolni testi so napisani v ROM-u ali PROM-u, nameščenem na matični plošči). Nekatere običajne programske opreme so samostojni programi in so dobavljene ločeno.

          Aplikacijska programska oprema. Aplikacijske programe lahko uporabljamo samostojno ali kot del programskih sistemov ali paketov. Aplikativna programska oprema - programi, ki neposredno podpirajo opravljanje potrebnih del na osebnem računalniku: urejanje besedilnih dokumentov, ustvarjanje risb ali slik, ustvarjanje preglednic itd. Paketi aplikacijske programske opreme so sistem programov, ki se glede na obseg uporabe delijo na problemsko usmerjeni, splošni paketi sestankov in integrirani paketi. Sodobni integrirani paketi vsebujejo do pet funkcionalnih komponent: testni procesor in procesor za preglednice, DBMS, grafični urejevalnik, telekomunikacijska orodja. Aplikacijska programska oprema na primer vključuje:

    Paket pisarniških aplikacij MS OFFICE

    Računovodski sistemi

    Finančni analitični sistemi

    Integrirani paketi za upravljanje pisarne

    CAD – sistemi (računalniško podprto načrtovanje)

    HTML ali spletni urejevalniki

    Brskalniki – sredstva za pregledovanje spletnih strani

    Grafični urejevalnik

    Ekspertni sistemi.

          Programska oprema orodja. Orodna programska oprema ali programski sistemi so sistemi za avtomatizacijo razvoja novih programov v programskem jeziku. V najsplošnejšem primeru morate za izdelavo programa v izbranem programskem jeziku (sistemskem programskem jeziku) imeti naslednje komponente: 1. Urejevalnik besedil za ustvarjanje datoteke z izvornim besedilom programa. 2. Prevajalnik ali tolmač. Izvorno besedilo se prevede v vmesno objektno kodo s programom za prevajanje. Izvorna koda velikega programa je sestavljena iz več moduli(izvorne datoteke). Vsak modul se prevede v ločeno datoteko z objektno kodo, ki jo je treba nato združiti v eno celoto.3. Urejevalnik povezav ali sestavljalnik, ki izvaja povezovanje objektnih modulov in generira delujočo aplikacijo kot izhod - izvršljivo kodo. Izvršljiva koda je popoln program, ki ga je mogoče izvajati na katerem koli računalniku, ki ima operacijski sistem, za katerega je bil program ustvarjen. Nastala datoteka ima praviloma končnico .EXE ali .COM.4. V zadnjem času so postale razširjene metode vizualnega programiranja (z uporabo skriptnih jezikov), namenjene ustvarjanju aplikacij Windows. Ta postopek je avtomatiziran v okoljih hitrega načrtovanja. V tem primeru se uporabljajo že pripravljene vizualne komponente, ki so konfigurirane s posebnimi urejevalniki. Najbolj priljubljeni urejevalniki (programski programski sistemi z uporabo vizualnih orodij) za vizualno oblikovanje:

    Borland Delphi - zasnovan za reševanje skoraj vseh problemov programiranja aplikacij

    Borland C++ Builder je odlično orodje za razvoj aplikacij DOS in Windows

    Microsoft Visual Basic je priljubljeno orodje za ustvarjanje programov Windows

    Microsoft Visual C++ - to orodje vam omogoča razvoj aplikacij, ki se izvajajo v okolju OS, kot je Microsoft Windows

Kontrolna vprašanja:

    Določite operacijski sistem.

    Katera programska oprema se šteje za sistemsko programsko opremo?

    Poimenujte pomožno programsko opremo.

    Katera programska oprema se šteje za aplikacijsko programsko opremo?

    Kakšen je namen programske opreme?

    Kateri so glavni razredi programov? Navedite primere programov v vsakem razredu glede na njihov namen.

Strukturni in funkcionalni diagrami programa

Strukturni diagram je niz elementarnih povezav predmeta in povezav med njimi, ena od vrst grafičnih modelov. Pod elementarno povezavo razumemo del objekta, krmilnega sistema itd., ki izvaja elementarno funkcijo. Na sl. 2.1 prikazuje blokovni diagram razvitega programa.

Slika 2.1 - Blokovni diagram programa

Funkcionalni diagram je dokument, ki pojasnjuje procese, ki potekajo v posameznih funkcionalnih tokokrogih izdelka (inštalacije) ali izdelka kot celote. Funkcionalni diagram je razlaga določenih vrst procesov, ki se pojavljajo v integralnih funkcionalnih blokih in vezjih naprave. Slika 2.2 prikazuje funkcijski diagram razvitega programa.

Slika 2.2 - Funkcionalni diagram programa

Opis postopkov, funkcij in modulov

Deklaracija modula:

Vsaka izvorna datoteka mora vsebovati deklaracijo modula. Beseda enota je ključna beseda, zato mora biti zapisana z malimi črkami. Ime modula lahko vsebuje velike in male črke in mora biti enako imenu, ki ga uporablja operacijski sistem za to datoteko.

Standardni moduli jezika Delphi. Okolje Delphi vključuje odličen nabor modulov, katerih zmogljivosti bodo zadovoljile še tako izbirčnega programerja. Vse module lahko razdelimo v dve skupini: sistemski moduli in moduli vizualnih komponent.

Sistemski moduli vključujejo System, SysUtils, ShareMem, Math. Vsebujejo najpogosteje uporabljene tipe podatkov v programih, konstante, spremenljivke, procedure in funkcije. Sistemski modul je srce okolja Delphi; podprogrami, ki jih vsebuje, zagotavljajo delovanje vseh ostalih modulov sistema. Sistemski modul je samodejno vključen v vsak program in ga ni treba podati v izjavi uses.

Moduli vizualnih komponent (VCL – Visual Component Library) se uporabljajo za vizualni razvoj polnofunkcionalnih GUI aplikacij – aplikacij z grafičnim uporabniškim vmesnikom (Graphical User Interface). Ti moduli skupaj predstavljajo visokonivojsko objektno orientirano knjižnico z vsemi vrstami elementov uporabniškega vmesnika: gumbi, oznake, meniji, plošče itd. Poleg tega moduli te knjižnice vsebujejo preprosta in učinkovita sredstva za dostop do baz podatkov. Ti moduli se samodejno povežejo, ko so komponente postavljene na obrazec.

Opis postopkov:

Ta postopek zapre naslovno stran in stran ter zapusti program.

procedure TForml.Button2Click(Pošiljatelj: TObject);

Ta postopek odpre glavni meni programa in odstrani naslovno stran z zaslona.

procedure TForm2.Button1Click(Pošiljatelj: TObject);

Ta postopek odpre okno z izbiro načina reševanja transportnega problema in odstrani menijsko okno z zaslona.

Ta postopek odpre okno z informacijami o razvitem programu in odstrani okno menija z zaslona.

S tem postopkom se odpre okno s pomočjo za program, kar uporabniku olajša delo in odstrani menijsko okno.

Ta postopek odpre okno o razvijalcu in odstrani okno menija.

procedure TForm2.Button5Click(Pošiljatelj: TObject);

Ta postopek zapre okno menija in zapusti program.

procedure TForm3.Button1Click(Pošiljatelj: TObject);

Ta postopek vodi v glavni meni in zapre okno z izbiro načina reševanja transportnega problema:

procedure TForm3.Button3Click(Pošiljatelj: TObject);

Ta postopek zapre okno z rešitvami transportnega problema po treh metodah in prikaže obrazec z rešitvijo problema po metodi minimalnih stroškov:

Ta postopek zapre okno z rešitvami transportnega problema s tremi metodami in prikaže obrazec z rešitvijo problema z dvojno prednostno metodo:

procedure TForm2.Button2Click(Pošiljatelj: TObject);

procedure TForm2.Button3Click(Pošiljatelj: TObject);

procedure TForm2.Button4Click(Pošiljatelj: TObject);

Ti postopki omogočajo uporabniku, da gre iz glavnega menija v kateri koli element v programu: »Obrazec rešitve«, »Navodila za uporabo«, »Informacije za razvijalce«, »Izhod«.

postopek KORAK ZA KORAKOM;

To je postopek za izvajanje izračunov po korakih v programu, lahko sledite vsaki stopnji izpolnjevanja tabele. Po izvedbi enega izračuna postopek prekine izračun in čaka na ukaze uporabnika.

procedure TForm4.Label2Click(Pošiljatelj: TObject);

procedure TForm4.Label3Click(Pošiljatelj: TObject);

procedure TForm4.Label4Click(Pošiljatelj: TObject);

procedure TForm4.Label5Click(Pošiljatelj: TObject);

Ti postopki naložijo besedilno polje Memo z vsebino besedilnega dokumenta, odvisno od izbrane postavke menija. Besedilni dokumenti vsebujejo informacije o uporabi aplikacije.

procedure TForm1.Button8Click(Pošiljatelj: TObject);

Ta postopek izvede izračune z uporabo formul, nadomesti vnesene vrednosti in na koncu zapiše rezultat v spremenljivko.

procedure TForm1.Button9Click(Pošiljatelj: TObject);

Ta postopek prikaže odgovor v besedilnem polju.

procedure TForm1.Button2Click(Pošiljatelj: TObject);

Ta postopek zapolni vnosna polja z začetnimi podatki v skladu z nalogo za predmetno nalogo.

procedure TForm3.Button4Click(Pošiljatelj: TObject);

procedure TForm4.Button1Click(Pošiljatelj: TObject);

Ti postopki zaprejo okno in prikažejo obrazec z izbiro elementa menija.

čiščenje postopka;

Ta postopek počisti vhodna in izhodna polja ter osvobodi spremenljivke vrednosti, ki jih imajo.


Razvoj programskega blokovnega diagrama (arhitekture) je ena najpomembnejših stopenj v procesu razvoja programske opreme iz naslednjih razlogov:

  • napačna izbira arhitekture vodi v tveganje neuspeha celotnega projekta v prihodnosti;

  • ta stopnja je osnovna za celoten razvojni proces;

  • dobro premišljena arhitektura omogoča enostavno spreminjanje programskega izdelka, če se zahteve zanj spremenijo.
Arhitekturo razumemo kot nabor programskih komponent, pa tudi povezav in načinov organiziranja izmenjave informacij med njimi. Prva naloga, ki jo je treba rešiti pri razvoju strukturnega diagrama sistema, je naloga identifikacije njegovih sestavnih delov.

Na podlagi analize zahtev za sistem se določi nabor vseh funkcij, ki jih mora program podpirati. Nato dobljene funkcije združimo v logično povezane skupine. Vsaka od teh skupin lahko postane ena od komponent programskega sistema. Pripravljeni morate biti na dejstvo, da prva različica nabora komponent ne bo popolna. Med postopkom analize značilnosti in v zgodnjih fazah arhitekturnega načrtovanja se lahko ugotovijo dodatne značilnosti, ki jih je treba vključiti v program, ki se razvija. Večinoma bodo te funkcije potrebne za izvajanje tehnoloških procesov za vzdrževanje sistema v nedotaknjenem in delujočem stanju. Povsem naravno je domnevati, da te funkcionalne lastnosti ne morejo biti znane uporabniku programskega sistema in razvijalcem v prvih fazah razvoja.

Najprej mora arhitektura programa vsebovati splošen opis sistema. Brez takega opisa je precej težko ustvariti koherentno sliko iz številnih majhnih podrobnosti ali vsaj ducata ločenih razredov. Arhitektura mora vključevati dokaze, da so bile med njenim razvojem upoštevane alternativne možnosti, in upravičiti izbiro končne organizacije sistema.

Arhitektura mora jasno opredeliti odgovornosti vsake komponente. Komponenta mora imeti eno področje odgovornosti in čim manj vedeti o področjih odgovornosti drugih komponent. Z zmanjšanjem količine informacij, ki jih komponente poznajo o drugih komponentah, lahko preprosto lokalizirate informacije o zasnovi aplikacije na posamezne komponente.

Arhitektura mora jasno definirati pravila komunikacije med programskimi komponentami in opisati, katere komponente lahko določena komponenta uporablja neposredno, katere posredno in katerih sploh ne sme uporabljati.

Uporabniški vmesnik je pogosto zasnovan v fazi zahtev. Če temu ni tako, je treba to ugotoviti v fazi projektiranja arhitekture. Arhitektura mora opisovati glavne elemente formata spletne strani, grafični vmesnik (GUI) itd. Uporabnost vmesnika lahko na koncu določi priljubljenost ali neuspeh programa.

Arhitektura programa je modularna, tako da je mogoče spreminjati grafični vmesnik brez vpliva na osnovno logiko programa.

Program za obdelavo študentskih anketnih vprašalnikov lahko razdelimo na dva dela z različnimi funkcijami in stopnjami dostopa za uporabnike:


  • študentski anketni sistem;

  • sistem za obdelavo rezultatov anket;

  • nadzorni sistem.
Vsi deli so povezani v en sam program s skupno bazo podatkov.



Slika 2.1. - Struktura sistema


Anketni sistem vsebuje naslednje funkcije:

  • izdaja vprašanja iz vprašalnika;

  • samodejno preverjanje vrste in pravilnosti vnesenih podatkov;

  • shranjevanje podatkov v bazo podatkov.
Sistem za obdelavo rezultatov anket vam omogoča:

  • prikaz ali tiskanje anketnih poročil;

  • ogled informacij o anketi določenega študenta;

  • primerjati rezultate sedanjih in prejšnjih anket z istimi vprašanji.
Nadzorni sistem omogoča:

  • nadzor izvajanja ankete;

  • upravljanje podatkov - dodajanje, brisanje in spreminjanje;
Vsak sistem lahko razdelimo na dva podsistema glede na okolje, v katerem delujejo:

  • strežniški del, napisan v programskem jeziku PHP in izveden na strežniku;

  • odjemalski del, napisan v označevalnem jeziku HTML in programskem jeziku JavaScript z uporabo knjižnice jQuery in izveden v brskalniku uporabnika.
Z
Strežniški del programa po svoji strukturi ustreza arhitekturi MVC (Model-View-Controller) ali model-view-controller. MVC je programska arhitektura, v kateri so podatkovni model aplikacije, uporabniški vmesnik in krmilna logika ločeni na tri ločene komponente, tako da ima sprememba ene komponente minimalen vpliv na druge komponente.
Slika 2.2. – Arhitektura model-pogled-krmilnik
Ta pristop vam omogoča, da podatke, predstavitev in obdelavo uporabniških dejanj ločite na tri ločene komponente.

  • Model(Model) - modul, odgovoren za neposredno izračunavanje nečesa na podlagi podatkov, prejetih od uporabnika. Rezultat, ki ga pridobi ta modul, mora biti posredovan krmilniku in ne sme vsebovati ničesar, kar bi bilo povezano z neposrednim izhodom (to pomeni, da mora biti predstavljen v internem formatu sistema). Glavni cilj je narediti model popolnoma neodvisen od ostalih delov in skoraj nič ne vedeti o njihovem obstoju, kar bi omogočilo spreminjanje krmilnika in pogleda na model brez dotika samega modela ter celo omogočilo delovanje več instanc pogledi in krmilniki z istim modelom hkrati. Posledično model pod nobenim pogojem ne more vsebovati referenc na objekte pogleda ali krmilnika.

  • Pogled- informacijski izhodni modul. Odgovornosti pogleda vključujejo prikaz podatkov, prejetih iz modela. Običajno ima pogled prost dostop do modela in lahko zajema podatke iz njega, vendar je to dostop samo za branje; pogledu je prepovedano spreminjati karkoli v modelu ali celo preprosto klicati metode, ki vodijo do sprememb v njegovem notranjem stanju. Za interakcijo s krmilnikom pogled običajno izvaja vmesnik, ki ga pozna krmilnik, kar omogoča neodvisno spreminjanje pogledov in več pogledov na krmilnik.

  • Krmilnik- krmilni modul za vnos in izhod podatkov. Naloge krmilnika vključujejo odzivanje na zunanje dogodke in spreminjanje modela in/ali pogleda v skladu z vanj vgrajeno logiko. En krmilnik lahko dela z več pogledi, odvisno od situacije, z njimi komunicira prek določenega (vnaprej znanega) vmesnika, ki ga ti pogledi izvajajo. Pomemben odtenek - v klasični različici MVC krmilnik ne prenaša podatkov iz modela v pogled.

    Krmilnik sprejema podatke od uporabnika in jih posreduje modelu. Poleg tega sprejema sporočila od modela in jih posreduje pogledu. Pomembno je omeniti, da sta pogled in krmilnik odvisna od modela. Vendar model ni odvisen niti od krmilnika niti od obnašanja. To je ena ključnih prednosti takšne delitve. Omogoča izgradnjo modela neodvisno od vizualne predstavitve, kot tudi ustvarjanje več različnih predstavitev za en model.
Prednosti, ki jih ima arhitektura MVC pred tradicionalnim modelom:

  • preglednost sistema;

  • enotna vstopna točka v sistem;

  • ponovna uporaba kode;;

  • hiter razvoj;

  • razpoložljivost že pripravljenih rešitev;

  • enostavnost podpore;

  • enostavno narediti spremembe.
Tako uporaba arhitekture MVC zagotavlja oprijemljive prednosti pri načrtovanju in razvoju programa za obdelavo anketnih vprašalnikov za študente oddelka, kar pozitivno vpliva tako na hitrost samega razvoja kot tudi na kakovost končnega rezultata.

2.Razvoj strukture baze podatkov programa

Organizacija strukture baze podatkov je oblikovana na podlagi naslednjih premislekov:

  • ustreznost opisanemu objektu - na ravni pojmovnega in logičnega modela;

  • enostavnost uporabe za računovodstvo in analizo podatkov – na nivoju ti fizičnega modela.
Glede na model predstavitve podatkov so glavni hierarhični, omrežni in relacijski modeli; v skladu s tem za delo z vsako od zgornjih baz podatkov uporabljajo svojo DBMS.

V tem primeru je najprimernejši relacijski podatkovni model, saj je vse informacije enostavno predstaviti v obliki tabel. Relacijski podatkovni model je logični podatkovni model, ki opisuje strukturni vidik, vidik celovitosti in vidik obdelave podatkov relacijskih baz podatkov.

Strukturni vidik- Podatki v zbirki podatkov so niz relacij.

Vidik integritete- odnosi izpolnjujejo določene pogoje integritete.

Vidik obdelave- podprti so operaterji za manipulacijo relacije.

Pomemben vidik oblikovanja baze podatkov je normalizacija – proces pretvorbe baze podatkov v obliko, ki ustreza običajnim oblikam. Normalizacija pomaga zaščititi vašo bazo podatkov pred logičnimi in strukturnimi težavami, imenovanimi podatkovne anomalije. Če je na primer v tabeli več enakih zapisov, obstaja nevarnost kršitve celovitosti podatkov pri posodabljanju tabele. Tabela, ki je bila normalizirana, je manj dovzetna za takšne težave, ker njegova struktura vključuje definiranje odnosov med podatki, kar odpravlja potrebo po zapisih s podvojenimi informacijami.

Za DBMS je bil izbran brezplačni sistem za upravljanje podatkovnih baz MySQL. Prilagodljivost MySQL DBMS je zagotovljena s podporo za veliko število vrst tabel: uporabniki lahko izberejo tako tabele MyISAM, ki podpirajo iskanje po celotnem besedilu, kot tabele InnoDB, ki podpirajo transakcije na ravni posameznega zapisa. Zahvaljujoč odprti arhitekturi in licenciranju GPL (GNU General Public License – licenca za brezplačno programsko opremo, katere namen je zagotoviti uporabniku pravice do kopiranja, spreminjanja in distribucije programov ter zagotoviti, da uporabniki vseh izpeljanih programov prejmejo zgornje pravice), se v MySQL DBMS pojavljajo nenehno nove vrste tabel.

Pomembna prednost MySQL DBMS je, da je bil prenesen na veliko število platform, kot so AIX, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, OpenBSD, Solaris in Windows. Upoštevajte, da MySQL AB omogoča brezplačen prenos ne samo izvornih kod DBMS, temveč tudi že pripravljene izvedljive module, prevedene in optimizirane za določene operacijske sisteme.

MySQL ima vmesnik za programiranje aplikacij (API) za jezike, kot so Delphi, C, C++, Java, Perl, PHP, Python in Ruby, knjižnice za jezike platforme .NET, ponuja pa tudi podporo za ODBC prek gonilnika ODBC (Open DataBase Connectivity je programski vmesnik za dostop do baz podatkov) MyODBC.

Tip MyISAM je bil izbran kot glavni tip tabele. Tabele MyISAM so idealno optimizirane za uporabo v povezavi s spletnimi aplikacijami, kjer prevladujejo bralne poizvedbe. Tabele, kot je MyISAM, kažejo zelo dobre rezultate pri poizvedbah SELECT. To je predvsem posledica pomanjkanja podpore za transakcije in tuje ključe. Vendar pa se pri spreminjanju in dodajanju zapisov celotna tabela za kratek čas zaklene, kar lahko pri veliki obremenitvi povzroči resne zamude. A v primeru programa za analizo anketnih vprašalnikov to ni resen problem, saj velika obremenitev sistema ni predvidena.

Druga prednost tabel, kot je MyISAM, je neodvisnost od platforme. Datoteke tabel lahko premikate med računalniki različnih arhitektur in različnih operacijskih sistemov brez pretvorbe.

Tabele MyISAM imajo lahko fiksne, dinamične ali stisnjene zapise. Izbira med fiksnim in dinamičnim formatom je odvisna od definicij stolpcev.

Struktura baze podatkov je prikazana na sliki 2.4.

R

Slika 2.3. – Struktura baze podatkov


Razmerja med tabelami, organiziranimi v zbirki podatkov, vam omogočajo kaskadno brisanje in posodabljanje podatkov. Uporaba povezovalnih tabel je omogočila redundanco podatkov na minimum.

Tabela it_students vsebuje podatke o študentih, ki so izpolnili anketo.

Tabela 2.1 – podatkovna tabela “it_students”.


Polje

Vrsta

Dolžina

Opis

id

Številčno

11

Kazalo

št

Številčno

11

Študentska številka

ime

Simbolično

100

Ime

Drugo ime

Simbolično

100

Priimek

priimek

Simbolično

100

Priimek

rojstvo

datum

-

Datum rojstva

leto_postupl

leto

-

Leto sprejema

naslov

Simbolično

500

Naslov

phone_h

Simbolično

15

Domači telefon

phone_m

Simbolično

15

Mobilni telefon

pošta

Simbolično

250

Email naslov

icq

Številčno

10

številka ICQ

Tabela it_answers_var vsebuje možnosti za odgovarjanje na anketna vprašanja.

Tabela 2.2 – Tabela s podatki »it_answers_var«

Tabela it_questions vsebuje anketna vprašanja.

Tabela 2.3 – podatkovna tabela »it_questions«.

Tabela it_tests_cfg povezuje anketna vprašanja z določenim vprašalnikom.

Tabela 2.4 – Podatkovna tabela »it_tests_cfg«

Tabela it_tests vsebuje podatke o vseh vprašalnikih in datume anket.

Tabela 2.5 – podatkovna tabela »it_tests«.

Tabela it_text_answers vsebuje podatke o ročno vnesenih odgovorih študentov.

Tabela 2.6 – Tabela s podatki »it_text_answers«

Tabela it_students_answers vsebuje podatke o odgovorih študentov.

Tabela 2.6 – Podatkovna tabela “it_students_answers”

3. Razvoj modela podatkovnega toka baze podatkov

Ker je program za analizo študentskih anketnih vprašalnikov zgrajen na principu MVC, lahko informacijske tokove predstavimo na naslednji način. Ko prejme zahtevo od uporabnika, ki pošlje brskalnik na spletni strežnik, krmilnik po programiranih algoritmih kvalificira prejeto zahtevo, jo modificira in posreduje modelu. Model, ki je povezava med krmilnikom in DBMS, interpretira zahtevo in opravi ustrezen klic v MySQL DBMS, rezultate pa vrne krmilniku.

Omeniti velja, da za krmilnika ostaja skrito, s katero vrsto ali implementacijo DBMS deluje; vsi klici v bazo podatkov potekajo prek modela, katerega glavna naloga je abstrahirati delo s podatki. Namesto podatkovne baze lahko uporabite celo besedilno ali XML datoteko, kar za krmilnik ne bo pomembno. Vzporedno krmilnik pošlje zahtevo komponenti pogleda, ki sestavi končno predlogo in jo vrne krmilniku. Možna je tudi izmenjava podatkov neposredno med modelom in pogledom. Krmilnik združi izbor iz baze podatkov in predlogo pogleda ter jo posreduje uporabnikovemu brskalniku.



Slika 2.4. - Shema informacijskih tokov arhitekture MVC

4.Razvoj algoritemske podpore

Algoritemska podpora za vse komponente programa ima pomembne razlike, saj imajo različne funkcionalnosti.

Ko se študent prvič prijavi v anketni sistem, se ustvari nov ID seje. Seja ali seja omogoča strežniku, da identificira uporabnika z uporabo posebne številke, ki je edinstvena in dodeljena, ko uporabnik komunicira s strežnikom. Poleg tega vam seje omogočajo, da spremenljivke povežete s tem uporabnikom in te spremenljivke shranite na strežnik. Z drugimi besedami, seje vam omogočajo, da spremenljivke naredite globalne za vse komponente programa. Tako lahko anketni sistem nedvoumno ugotovi, od katerega uporabnika, ki dela s programom, prihaja določen podatek.

D
Nato študent odgovori na niz anketnih vprašanj in šele po izpolnitvi ankete se vsi podatki shranijo v bazo. Algoritem delovanja anketnega sistema je prikazan na sliki 2.5.

Slika 2.5. – Algoritem delovanja anketnega sistema

Ena najpomembnejših varnostnih točk spletne aplikacije je preverjanje vseh vhodnih podatkov, zato morate vedno preveriti podatke, ki jih uporabnik vnese v iskalne obrazce, izpolni registracijska polja itd., za prisotnost "nevarnih" podatkov. To je lahko zlonamerna koda JavaScript, ukazi PHP ali PERL ali (kar je najbolj nevarno) ukazi strežniku.

Ne pozabite, da je popolnoma vsak uporabnik nevaren za nezaščiteno spletno aplikacijo, zato je vedno vredno preveriti zahteve in spremenljivke, ki prihajajo od uporabnika.


  • analiza spremenljivk POST in GET ter superglobalnih nizov;

  • ločevanje spremenljivk;

  • filtriranje nizovnih spremenljivk.
Nujno je treba preveriti vhodne spremenljivke na samem začetku programa, s čimer preprečite, da bi nepreverjeni, potencialno nevarni podatki uporabnikov delali s funkcijami in poizvedbami v bazo podatkov. Tako se bodo vse funkcije, potrebne za zaščito, nahajale na enem določenem mestu ali celo datoteki. V primeru programa za obdelavo študentskih anketnih vprašalnikov se filtriranje podatkov izvaja na nivoju ogrodja CodeIgniter v avtomatskem načinu, saj vrstica $config["global_xss_filtering"] = TRUE.

Čisto vsaka spremenljivka v programu mora že v fazi načrtovanja imeti svoj tip, pa naj bo to številka ali niz. Ta problem je še posebej akuten za programske jezike s šibkim ali odsotnim tipkanjem, ki vključuje PHP in JavaScript. Zato se na najbolj kritičnih področjih programa preverja skladnost spremenljivk s tipom.

Posebej nevarne so besedilne spremenljivke, na primer polje za vnos odgovora na anketno vprašanje. Preprosto jih je treba preveriti za zlonamerno kodo. Za odpravo nevarnosti se nekateri elementi odstranijo iz besedila ali nadomestijo z drugimi simboli. Algoritem za obdelavo vhodnih podatkov v ogrodju CodeIgniter je prikazan na sliki 2.6.

R
Slika 2.6. – Algoritem za obdelavo vhodnih podatkov v ogrodju CodeIgniter

2.5 Razvoj programskega vmesnika

Eno najpomembnejših vprašanj pri razvoju programskega sistema je razvoj uporabniškega vmesnika. Vsak sistem, ki pri svojem delovanju uporablja tehnična sredstva, spada v razred sistemov »človek-stroj«. Pravilno bi bilo postaviti naslednje zahteve za vmesnik testnih sistemov:


  • vmesnik mora biti jasen, preprost in enostaven za uporabo

  • uporabnika ne smejo motiti dejanja, ki niso povezana z nalogo, ki se izvaja.
Uporabniški vmesnik je izdelan v označevalnem jeziku HTML z uporabo JavaScripta in knjižnice jQuery, kar je omogočilo izgradnjo interaktivnega uporabniškega vmesnika programa.

TO

Besedilno polje za vnos datuma s pomočjo jQuery je bilo na primer pretvorjeno v kompakten koledar, ki ima funkcijo samodejnega preverjanja pravilnosti vnesenega datuma (glej sliko 2.7).

Slika 2.7. – Vmesnik koledarja za izbiro datuma rojstva
Uporabniški vmesnik, ki je na voljo študentom, ki izpolnjujejo anketo, je nekoliko minimalističen. Posledično študentov ne zmoti lepa grafika in se osredotočijo na razmišljanje o odgovoru na vprašanje. Vmesnik z enim od

ankete je prikazano na sliki 2.8.

Slika 2.8. – Vmesnik za odgovarjanje na anketno vprašanje


Če učenec iz nekega razloga ne izbere nobenega od odgovorov na vprašanje, ampak poskuša preiti na naslednje vprašanje, bo anketni sistem samodejno prikazal sporočilo o napaki in ponudil ponoven odgovor na trenutno vprašanje (glej sliko 2.9).

Slika 2.9. - Sporočilo o napaki pri vnosu podatkov



Sistem za obdelavo rezultatov ankete omogoča prikaz rezultatov v več načinih - besedilnem, grafičnem in tiskarskem. Vmesnik za prikaz rezultatov ankete v grafični obliki je prikazan na sliki 2.10.

Slika 2.10. – Vmesnik za prikaz rezultatov ankete



Brskalnik, ki je v odnosu do strežnika odjemalec in mu pošlje zahtevo za obdelavo spletne strani, je lahko implementacija tako imenovanih tankih odjemalcev. Brskalnik je sposoben prikazovati spletne strani in je praviloma del operacijskega sistema, funkcije njegovega posodabljanja in vzdrževanja pa nosi dobavitelj operacijskega sistema. Logika aplikacije je osredotočena na strežnik, funkcija brskalnika pa je predvsem prikazovanje informacij, prenesenih prek omrežja s strežnika, in pošiljanje uporabniških podatkov nazaj. Ena od prednosti tega pristopa je dejstvo, da so odjemalci neodvisni od uporabnikovega specifičnega operacijskega sistema, zato so spletne aplikacije storitve na več platformah.

Pomembna prednost gradnje spletnih aplikacij za podporo standardne funkcionalnosti brskalnika je, da se mora funkcionalnost izvajati neodvisno od odjemalčevega operacijskega sistema. Namesto pisanja različnih različic za Microsoft Windows, Mac OS X, GNU/Linux in druge operacijske sisteme, je aplikacija izdelana enkrat in nameščena na kateri koli platformi.

3. Tehnološki odsek

3.1 Tehnologija razvoja programa

3.1.1 Osnove spletnega strežnika

Kako deluje spletni strežnik: Znano je, da spletni strežniki shranjujejo informacije v obliki besedilnih datotek, imenovanih tudi strani. Takšne strani lahko poleg besedila vsebujejo povezave do drugih strani (ki se nahajajo na istem ali drugem strežniku), povezave do grafičnih slik, avdio in video informacij, različnih objektov za vnos podatkov (polja, gumbi, obrazci itd.) in kot tudi drugi objekti in programi, ki se izvajajo na strežniku. Pravzaprav strani predstavljajo nekakšen povezovalni člen med predmeti različnih vrst. Zasnovani so s posebnim označevalnim jezikom za hiperbesedilo, HyperText Markup Language ali na kratko HTML. Za dostop do informacij, ki se nahajajo na spletnih strežnikih, uporabniki uporabljajo posebne odjemalske programe - brskalnike. Trenutno obstaja na desetine različnih brskalnikov, vendar je le nekaj izmed njih trenutno najbolj priljubljenih:


  • Microsoft Internet Explorer;

  • Opera;

  • Mozilla Firefox

  • Google Chrome.
Vsaka stran spletnega strežnika ima svoj tako imenovani naslov univerzalnega vira – Universal Resource Locator (URL). Za dostop do določene strani mora uporabnik brskalniku posredovati njen URL. Vsak spletni strežnik ima praviloma eno glavno stran, ki vsebuje povezave do vseh drugih strani na tem strežniku. Zato se ogled vsebine spletnega strežnika običajno začne z njegovo glavno (indeksno) stranjo.

3.1.2 Pasivni in aktivni spletni strežniki

Obstajajo pasivni in aktivni spletni strežniki. Če strani strežnika vsebujejo samo statično besedilo in večpredstavnostne informacije ter hiperbesedilne povezave do drugih strani, se strežnik imenuje pasiven. Ko se strežniške strani obnašajo podobno kot okna običajnih interaktivnih aplikacij, ki vstopajo v dialog z uporabnikom, imamo opravka z aktivnim strežnikom.


3.1.3 Objektno usmerjen pristop

Trenutno postaja vse bolj priljubljena uporaba objektno usmerjenega pristopa pri razvoju spletnih aplikacij. In čeprav prednosti tega pristopa niso tako očitne kot na primer v programskih jezikih, kot sta C++ ali Java, se vse več prosto distribuiranih knjižnic in programov, napisanih v programskem jeziku PHP, seli na objektno usmerjen vmesnik. . S tem prisilijo razvijalce, ki jih uporabljajo, da se obrnejo na objektno usmerjene zmogljivosti PHP. Uvedba popolne podpore za objektno usmerjeni model v peti različici tolmača PHP še spodbuja zanimanje za to metodologijo.

Pogosto bo projekt uspešen z uporabo objektno usmerjenega pristopa k kraju in ne kraju. Programiranje za začetnike v slogu objektno usmerjenega programiranja se pogosto zdi kot navigacija skozi minsko polje – če ne veste, kje so mine, je nemogoče priti do konca projekta. Objektno usmerjeno programiranje samo po sebi ni zdravilo - je delujoča tehnologija, ki vam omogoča, da:


  • povečati odstotek ponovno uporabljene izvorne kode;

  • pri programiranju operirajte s pojmi in objekti iz realnega sveta (študent, skupina, tečaj itd.), namesto z računalniškimi izrazi nizke ravni (datoteka, vrstica itd.), kar vam omogoča ustvarjanje večjih projektov z manj napakami in učinkovitejši kratek čas.
Razvoj programskih tehnologij, kot je opozoril Dijkstra, narekuje teza »Deli in vladaj«. Vsaka uspešna tehnologija predpostavlja, da krajša kot je izvorna koda programa, lažje ga je ustvariti, odpravljati napake in vzdrževati, preprost program pa je veliko manj nagnjen k napakam kot zapleten.

Na začetku računalniške dobe je bil program ena nit, ki je obdelala en niz podatkov. Sčasoma so se kompleksnost programov in zahteve prednje povečevale in takšen način organiziranja podatkov se je izkazal za nesprejemljivega. Predlagan je bil strukturni pristop, pri katerem je podatkovno polje postalo dostopno od kjer koli v programu, vendar je bil glavni tok programa razdeljen na več postopkov. Ločen majhen postopek, tudi če uporablja skupne podatke, je veliko lažje razviti kot veliko količino izvorne kode.

Vsak postopek ima lokalno spremenljivko, katere življenjska doba je določena s trajanjem postopka. Nekatere procedure lahko pokličejo druge, vendar podatkovni niz v programu ostane skupen in dostopen vsem proceduram. Ta pristop se uporablja v proceduralnem programiranju v PHP in vam omogoča ustvarjanje velikih programskih kompleksov. Toda razvoj, odpravljanje napak in podpora programov, ki delujejo z velikimi količinami podatkov (kot je oddelčna zbirka podatkov), še vedno ostajajo zapleteni in zahtevajo veliko znanja in izkušenj.

Odziv na vse večjo kompleksnost je bil pojav objektno usmerjenega pristopa k programiranju: program je razdeljen na več podatkovnih nizov, od katerih ima vsak svoje lastne procedure, pa tudi procedure, ki so v interakciji z drugimi podatkovnimi nizi.

Posledično je zapletena naloga razdeljena na več enostavnejših podopravil, razvijalci pa dobijo bolj prilagodljiv način upravljanja projekta – urejanje enega ogromnega monolitnega bloka kode je veliko težje kot zbirka majhnih, ohlapno povezanih blokov.

Ne glede na povezavo s programskim jezikom ima objektno usmerjeni pristop več splošnih načel, in sicer:


  • zmožnost ustvarjanja abstraktnih podatkovnih tipov, ki omogoča, da poleg vnaprej določenih podatkovnih tipov (kot so celo število, niz itd.) uvedete lastne podatkovne tipe (razrede) in deklarirate "spremenljivke" takih podatkovnih tipov (objektov). Z ustvarjanjem lastnih tipov podatkov programer ne operira s strojnimi izrazi (spremenljivka, funkcija), temveč z objekti iz resničnega sveta, s čimer se dvigne na novo raven abstrakcije;

  • enkapsulacijo, ki omejuje uporabniško interakcijo abstraktnih tipov podatkov samo na njihov vmesnik in skrije notranjo implementacijo objekta ter prepreči vpliv na njegovo notranje stanje. Človeški pomnilnik je omejen in ne more vsebovati vseh podrobnosti velikega projekta, medtem ko vam uporaba enkapsulacije omogoča, da oblikujete predmet in ga uporabite, ne da bi skrbeli za notranjo implementacijo in se zatekli le k majhnemu številu metod vmesnika;

  • dedovanje, ki omogoča razvoj obstoječega abstraktnega podatkovnega tipa – razreda, tako da na njegovi osnovi ustvarite nov razred. V tem primeru novi razred samodejno pridobi zmožnosti obstoječega abstraktnega podatkovnega tipa. Pogosto so abstraktni podatkovni tipi preveč zapleteni, zato se zatečejo k njihovemu zaporednemu razvoju, pri čemer gradijo hierarhijo razredov od splošnega do posebnega;

  • polimorfizem, kar omogoča konstrukcijo celotnih verig in razvejanih dreves, ki drug od drugega podedujejo abstraktne tipe podatkov (razrede). V tem primeru bo imel celoten nabor razredov številne metode z istimi imeni: zagotovljeno je, da ima kateri koli razred v tem drevesu metodo z enakim imenom. To načelo pomaga samodejno obdelati nize podatkov različnih vrst.

3.1.4 Značilnosti ogrodja CodeIgniter

Uporabljeno ogrodje CodeIgniter je napisano z uporabo objektno usmerjenega pristopa. Vsi razredi krmilnikov, pogledov in modelov, ki jih uvede programer, podedujejo izvirne razrede, uvedene v samo ogrodje. To omogoča pisanje manjše izvorne kode, saj so vse potrebne osnovne funkcije takoj na voljo.

Poleg razredov krmilnikov, pogledov in modelov, ki so na voljo programerju, ima ogrodje CodeIgniter programerju na voljo tudi vtičnike in pomožne funkcije. Pomočniki, kot že ime pove, so zasnovani za pomoč pri opravljanju nekaterih manjših funkcij. Na voljo so na primer pomočniki za izdelavo spletnih obrazcev, nalaganje datotek ali delo s sejami. Za razliko od vseh drugih glavnih elementov ogrodja so pomočniki nizi osnovnih funkcij, napisanih tudi brez uporabe objektno usmerjenega pristopa. Vsaka funkcija opravlja majhno, strogo omejeno nalogo. Vendar je komplet precej velik in takšna "malenkost" postane zelo uporabna pri delu.

Vtičniki so skoraj enaka stvar kot pomočniki, razen glavne razlike: niso niz funkcij, so ena funkcija. Poleg tega ste lahko pozorni na dejstvo, da so pomočniki bolj del jedra sistema, medtem ko so vtičniki nekaj zunanjega, ki so ga razvili programerji tretjih oseb. V resnici se to izkaže tako. Tudi vtičnike, ki so priloženi glavnemu kompletu, so napisali uporabniki CodeIgniterja v skupnosti.


3.1.5 Eclipse IDE

Pri razvoju programa za obdelavo anketnih vprašalnikov za študente oddelka smo uporabili tudi tako pomembno in uporabno programersko orodje, kot je integrirano razvojno okolje (IDE - Integrated Development Environment), in sicer Eclipse. Eclipse je brezplačno ogrodje za razvoj modularnih aplikacij za več platform. Razvila in vzdržuje Eclipse Foundation.

Najbolj znane aplikacije, ki temeljijo na platformi Eclipse, so različni "Eclipse IDE" za razvoj programske opreme v različnih jezikih (na primer najbolj priljubljen "Java IDE", ki je bil prvotno podprt). V tem primeru so bile uporabljene razširitve za programiranje v programskih jezikih PHP (modul PDT) in JavaScript (modul JSEclipse), kot tudi postavitev z uporabo označevalnega jezika HTML.

3.2 Tehnologija testiranja programa

Testiranje programa je postopek odkrivanja napak v programski opremi. Trenutno obstaja veliko metod za testiranje programov, ki pa ne zagotavljajo odkrivanja in odpravljanja vseh okvar in napak ali ugotavljanja pravilnega delovanja analiziranega programa. Zato vse obstoječe metode testiranja delujejo v okviru formalnega postopka preverjanja programske opreme, ki se raziskuje ali razvija.

Ta formalni postopek preverjanja lahko dokaže, da ni napak le v smislu uporabljene metode, vendar ne zagotavlja njihove popolne odsotnosti.

Test je informacija, ki je sestavljena iz posebej izbranih začetnih podatkov za program, v katerem se odpravlja napaka, in ustreznih referenčnih rezultatov, ki se uporabljajo za spremljanje pravilnega delovanja programa.

Programska kontrola se zmanjša na izbiro testov, katerih prejem pravilnih rezultatov bi zagotovil pravilno delovanje programa za ostale vhodne podatke iz celotnega dopustnega območja vrednosti.

Sistem je bil testiran z več metodami:


  • stresno testiranje;

  • ročno odpravljanje napak in sledenje programu z uporabo razširitve XDebug;

  • Testiranje enot s phpUnit.
Pri testiranju programov, napisanih v PHP, preverite, ali podatki, prikazani na uporabnikovem zaslonu, ustrezajo pričakovanjem. Možne so naslednje glavne težave:

  • na zaslonu se ne prikaže nič ali pa se prikaže sistemska napaka z ustrezno kodo (napaka pri avtorizaciji, okvara spletnega strežnika itd.);

  • pri delu z bazo podatkov je prišlo do napake in se ustvari poročilo o napaki;

  • okvara strežnika zaradi velike obremenitve aplikacije ali baze podatkov;

  • Prišlo je do napake pri izvajanju programa, zaradi česar so prikazani napačni podatki ali poročilo o napaki.

3.2.1 Obremenitveno testiranje programa

Eden najpomembnejših testov je obremenitveno testiranje, ki vam omogoča iskanje ozkih grl v izvorni kodi ali klicih baze podatkov.

Obstaja veliko orodij, ki poenostavijo nalogo povečanja števila zahtev in klicanja več operacij na strežniku. Preskus omejitve obremenitve mora biti zasnovan tako, da natančno ponovi pričakovano delovno obremenitev aplikacije.

Za obremenitveno testiranje programa za obdelavo anketnih vprašalnikov za študente oddelka je bil uporabljen program curl-loader. Curl-loader je prosto distribuiran pripomoček za testiranje zmogljivosti spletnih aplikacij, napisan v programskem jeziku C. Sposoben je simulirati na stotine in celo tisoče strežniških klicev prek protokolov HTTP in HTTPS ter uporablja knjižnico libcurl, ki vam omogoča enostavno testiranje aplikacij, ki zahtevati avtorizacijo. In podpora za protokol HTTPS vam omogoča uporabo pripomočka curl-loader za testiranje obremenitve spletnih aplikacij, ki delujejo prek šifriranih transportnih mehanizmov SSL (Secure Sockets Layer) in TLS (Transport Layer Security).

3.2.2 Odpravljanje napak z uporabo vgrajenih orodij PHP

Standardno vedenje aplikacije, napisane v PHP, ko pride do napake v kodi, je močno odvisno od konfiguracijskih nastavitev. Praviloma so nastavljeni v konfiguracijski datoteki php.ini:

  • parameter display_errors, nastavljen na vklopljeno ali izklopljeno, določa, ali naj se sporočila o napakah prikažejo uporabniku ali pustijo skrita;

  • parameter log_errors, nastavljen na vklopljeno ali izklopljeno, povzroči, da tolmač PHP zapiše sporočila v datoteko dnevnika dogodkov;

  • Direktiva error_reporting določa, v katerih primerih je treba generirati opozorilo in v katerih primerih ga je mogoče prezreti.
Ko razvijate in odpravljate napake v programu na testnem strežniku, morate omogočiti parameter display_errors in onemogočiti parameter log_errors. To omogoča programerju, da se čim hitreje odzove na pojav napake, kar zmanjša število "preklopov med okni".

Nasprotno, v delujoči različici programa bi morali onemogočiti parameter display_errors, vendar omogočiti log_errors. Po eni strani bo to otežilo življenje napadalcem, ki ne bodo mogli več videti informacij o odpravljanju napak. Po drugi strani pa vam bo v kritični situaciji pomagal razumeti, kaj se je točno zgodilo, in odpraviti napako, tudi če ni ponovljiva v testnem okolju.

V obeh primerih je priročno nastaviti parameter error_reporting na najbolj podrobno stanje - E_ALL, ki prisili PHP, da poroča o najmanjših napakah v kodi.

3.2.3 Odpravljanje napak programa z uporabo XDebug

Medtem ko se programski jezik PHP lahko uporablja za ustvarjanje skriptov ukazne vrstice za naloge, kot sta sistemska administracija in tradicionalna obdelava podatkov, je moč jezika še posebej očitna v spletnih aplikacijah.

Glede na kratkotrajnost spletnih aplikacij in njihovo večplastno zasnovo (odjemalska aplikacija, omrežje, spletni strežnik, koda aplikacije in osnovna baza podatkov) je lahko težko odkriti napake v izvorni kodi. Tudi če predpostavimo, da vse plasti razen kode PHP delujejo brezhibno, je lahko sledenje programski napaki težavno, še posebej, če aplikacija uporablja veliko število razredov.

PHP echo izraz in funkcije, kot so var_dump(), debug_zval_dump() in print_r(), so običajna in zelo priljubljena orodja za odpravljanje napak, ki lahko pomagajo rešiti različne manjše težave. Vendar ti izrazi (in še bolj zanesljiva orodja, na primer paket PEAR Log) kot sredstvo za testiranje in odpravljanje napak pomagajo le malo in ne vedno.

Poleg tega je ta vrsta odpravljanja napak pristop grobe sile. Če potrebne informacije manjkajo, morate znova narediti izvorno kodo, ponoviti prejšnje korake in znova začeti iskati napako. Veliko bolj učinkovita strategija je preizkusiti aplikacijo med izvajanjem. Lahko katalogizirate parametre poizvedbe, si ogledate sklad klicev procedur in poiščete vrednost katere koli spremenljivke ali predmeta. Začasno lahko prekinete izvajanje aplikacije in prejmete obvestilo o spremembi vrednosti spremenljivke.

To "živo" ali interaktivno raziskovanje omogoča posebna aplikacija, imenovana razhroščevalnik. Razhroščevalnik se zažene ali priključi procesu, da ga upravlja in pregleda njegov pomnilnik. Ali pa lahko v primeru interpretiranih jezikov razhroščevalnik neposredno interpretira kodo. Tipičen sodoben razhroščevalnik lahko indeksira in si ogleda izvorno kodo, prikaže kompleksne podatkovne strukture v berljivi obliki in hkrati prikaže stanje programa, klicni sklad, izhod programa in vrednosti vseh spremenljivk. Na primer, običajno je, da razhroščevalnik katalogizira in prikaže lastnosti in metode razreda.

Namesto ročnega dodajanja različnih izhodnih funkcij za odpravljanje napak, lahko uporabite XDebug za ustvarjanje dnevnika sledenja. Dnevnik sledenja je seznam klicev funkcij in metod razreda med izvajanjem programa. Njegova prednost je, da se popolnoma vsak klic odraža v dnevniku.

Dnevnik sledenja se običajno razlikuje od zagona do zagona, ker je odvisen od vhodnih podatkov, ki se razlikujejo od zahteve do zahteve.

Sledenje dnevniku vam pomaga razumeti, kako se program izvaja, vendar je zelo težko vizualizirati vse možne veje, razen če je program zelo preprost. Prav zaradi tega je testiranje velikih programov precej težavno: preveč je različnih razvojnih poti in vsako je treba preizkusiti.

Orodje za razhroščevanje aplikacij XDebug, kot že ime pove, ponuja več funkcij za prikaz stanja programa in je zelo dragoceno raziskovalno orodje. Ko je nameščen, XDebug posreduje, da prepreči neskončne rekurzije, dodaja informacije o skladu in sledenju funkcij v sporočila o napakah, spremlja dodeljevanje pomnilnika in izvaja številne druge funkcije. Xdebug vsebuje tudi niz funkcij, ki jih je mogoče dodati izvorni kodi za pridobitev diagnostičnih podatkov med izvajanjem.

Rezultate modula XDebug si lahko ogledate s programom KCachegrind, ki vam omogoča vizualizacijo procesov, ki se pojavljajo v izvorni kodi (glejte sliko 3.1).

Če povzamemo, XDebug je majhno, a zelo uporabno orodje za razvijalce PHP in bi ga bilo treba namestiti na vsak tolmač PHP, ki se uporablja za razvoj. Vendar ne smete uporabljati XDebug na produkcijskih strežnikih, saj bo to močno zmanjšalo zmogljivost.
R

Slika 2.1. – programski vmesnik KCachegrind

3.2.4 Testiranje enot z uporabo phpUnit

Testiranje enote je proces v programiranju, ki vam omogoča preverjanje pravilnosti posameznih modulov izvorne kode programa. Ideja je napisati validacijske teste za vsako netrivialno funkcijo ali metodo. S tem lahko hitro preverite, ali je naslednja sprememba kode privedla do pojava napak v že napisanih in testiranih delih programa ter olajša odkrivanje in odpravo teh napak. Namen testiranja enote je izolirati posamezne dele programa in pokazati, da posamezno ti deli delujejo.

Pri razhroščevanju in testiranju programa za obdelavo anketnih vprašalnikov za študente oddelka je bil uporabljen sistem phpUnit, ki omogoča enotno testiranje spletnih aplikacij, pisanih v programskem jeziku PHP.

Če želite napisati minimalni nabor testov z uporabo phpUnit, morate:


  • vključite knjižnico PHPUnit.php;

  • ustvarite podrazred osnovnega razreda TestCase;

  • dodajte mu poljubno število testnih metod, katerih imena se začnejo s "test". Vnaprej znani parametri bodo posredovani kot vhodni podatki, rezultat pa bo primerjan z referenčnim z uporabo družine funkcij Assert, ki jo je testni razred podedoval iz osnovnega razreda TestCase;

  • ustvarite razred PHPUnit_TestSuite in mu posredujte ime razreda z nizom testov kot parameter;

  • Zaženite niz testov in preverite rezultat izvajanja.

6 (?). Seznam grafičnega gradiva

6.1 Izjava problema

6.2 Blokovni diagram programa


3. STRUKTURNI DIAGRAM PROGRAMA

Glavne funkcije, ki jih je treba implementirati v naš program, izhajajo iz formulacije in analize problema:

1)Prikaz uporabniških podatkov v obliki tabele in delo z njimi.

2) Dodajanje in brisanje tipov objektov.

3)Grafična predstavitev načrta z možnostjo merila.

4) Delo z datotekami in tiskanje rezultatov.

5) Priročen uporabniški vmesnik.

Spodaj je funkcionalni blokovni diagram programa, prikazan v obliki glavnih modulov in povezav med njimi. Jasno predstavlja implementacijo zgornjih zahtev v program.

riž. 3.1. Funkcionalna zgradba programa.

Glavni del programa je modul za krmiljenje in generiranje vmesnikov. Predstavlja glavni obrazec, na katerem so kontrolniki, ki omogočajo izvajanje drugih funkcij in tvorijo tudi uporabniški vmesnik.


4. OSNOVNI ALGORITMI

Glavni je algoritem za izdelavo slike na podlagi podatkov iz glavne tabele, implementiran v obliki metode plandraw().

Spodaj je njegov blok diagram in opis.

4.1 Opis algoritma

Če zavihek z našo sliko načrta ni aktiviran, ga bomo aktivirali.

Pripravimo tabelo razdalj in jo očistimo prejšnjih vnosov.

Nastavimo parametre ozadja (barvo) in ga narišemo, nato nastavimo parametre peresa (debelina črte in slog), ki bo določal prikaz črt trase na risbi. Na začetku je debelina črte enaka ena - za risanje koordinatne mreže.

Z lastnostjo tabele RecordCount poiščemo število vrstic v glavni tabeli.

Kazalec trenutnega zapisa nastavimo na prvega in organiziramo cikel pregledovanja vseh zapisov tabele, v katerem štejemo število poti.

Na samem začetku cikla se pripravimo na prikaz merila - spremenljivki merila priredimo faktor povečave (v celih enotah) in za oba drsna traka določimo maksimalno vrednost, ki je odvisna od stopnje povečave in velikost slike.

Če je številka poti enaka nič, potem je izpolnjen pogoj za risanje koordinatne mreže – meridianov in vzporednikov. Najprej se izvede cikel risanja meridianov - gremo od 0 do 360 stopinj v korakih glede na stopnjo povečave (15, 6, 3 ali 1 stopinja), poleg vsakega poldnevnika pa se podpiše pripadajoča stopinja zemljepisne dolžine (vzhodna zemljepisna dolžina - z znakom "+"), zahodna - z znakom "-"). Glavni poldnevnik je upodobljen v črni barvi. Podobna dejanja se izvajajo v ciklu risanja vzporednic, razlika je le v tem, da cikel poteka od 0 do 180 stopinj. Znak "+" označuje severno zemljepisno širino, znak "-" pa južno zemljepisno širino.

Za prikaz črt poti spremenite debelino črte na 2.

Ustvarimo tri matrike, v katere bomo vnesli indekse trenutnih zapisov poti in koordinate. Nato organiziramo zanko, v kateri gremo skozi vnose v tabeli in zapolnimo te nize za trenutno pot. Poleg tega se v koordinatne nize vnesejo že skalirane vrednosti. V istem ciklu štejemo število točk poti.

V naslednji zanki razvrstimo vsebino indeksne matrike, tako da lahko nato narišemo točke poti v vrstnem redu, v katerem se pojavljajo v tabeli.

Nastavite barvo črte glede na številko poti. In organiziramo zanko, ki riše črte.

V ciklu črtnega risanja naredimo naslednje: ob upoštevanju položajev drsnih trakov se izračuna položaj okna glede na zemljevid in glede na ta položaj se izračunajo koordinate točke v oknu. Če je to naš prvi prehod, preprosto premaknemo kurzor na točko z izračunanimi koordinatami, če ne in je vklopljena zastavica za risanje črte, potegnemo črto od prejšnje točke do te. Če je potrditveno polje onemogočeno, so na zemljevidu postavljene samo točke.

Nato se izračuna razdalja med točkami na globusu, katerih projekcije smo pravkar prikazali na našem zemljevidu. Razdalje se računajo v kilometrih, polmer Zemlje je 6371 km. Razdalja se izračuna, če i ni enak 0 in to ni prvi prehod skozi cikel. Ta pogoj je potreben, ker uporabljamo koordinate prejšnje točke za iskanje razdalje do trenutne točke.

Ker je zemeljsko površje kroglasto, moramo izračunati dolžino loka. Glavna težava tukaj je iskanje kota, pod katerim počiva lok.

Upoštevani so trije primeri:

1) če sta točki na isti zemljepisni dolžini, je kot enostavno določiti - enak bo razliki med večjo in manjšo vrednostjo zemljepisne širine.

2) če sta točki na isti zemljepisni širini, tudi njena določitev ni težavna - enaka je razliki med večjo in manjšo vrednostjo zemljepisne dolžine, pomnoženi s popravkom cos(f), kjer je f trenutna zemljepisna širina.

3) če se točke nahajajo na različnih zemljepisnih širinah in dolžinah, je ta primer iskanja kota bolj zapleten. Oglejmo si ga podrobneje.

Najprej poiščemo razliko v zemljepisni dolžini točk, kot da bi bile na isti zemljepisni širini, pomnožimo s popravkom cos(f) in izračunamo linearno razdaljo med njimi z uporabo kosinusnega izreka (drugi dve strani trikotnika sta polmeri Zemlje). Na enak način izračunamo razdaljo med točkami, kot da bi bile na isti zemljepisni dolžini. Te razdalje označimo kot l1 in l2.

Zdaj imamo pravokotni trikotnik s katetama l1, l2, katerih hipotenuza je razdalja l3. Izračunamo ga s pomočjo Pitagorovega izreka. Naš cilj je najti kot a. S kosinusnim izrekom poiščemo kosinus tega kota. Ko iz njega izračunamo ark kosinus, dobimo kot! Spodaj je pojasnjevalna risba.


riž. 4.1. Razlaga izračuna razdalje na različnih zemljepisnih širinah in dolžinah.

Po najdenem kotu izračunamo dolžino loka in dobljeno razdaljo vnesemo v tabelo razdalj skupaj s številko trenutne poti.

Opomba: ker funkciji kosinus in arkosinus delujeta s koti, določenimi v radianih, program pretvori radiane v stopinje in obratno. Vsi ti izračuni vodijo do kopičenja napak.

Vse omenjene formule so podane v prilogi E.

Ko izračunamo razdaljo, jo prikažemo na načrtu poleg trenutne točke, če je vklopljena ustrezna zastavica. Poleg tega slika zaradi pogoja za oceno dolžine poti ne prikazuje dolžine enega segmenta, temveč vsoto dolžin segmentov pred to točko. Uporabnik si lahko ogleda dolžine posameznih segmentov v tabeli razdalj.

Zemljevid prikaže tudi vrsto objekta za dano točko, če je potrditveno polje "prikaži vrsto objekta" potrjeno.

Če je potrditveno polje »ne prikaži tabele razdalj« onemogočeno, naj bo vidno.

Ko so vse poti izrisane, sprostimo pomnilnik, namenjen indeksu in koordinatnim nizom.


4.2 Diagram poteka algoritma

riž. 4.2. Diagram poteka algoritma za risanje načrta.


5. IMPLEMENTACIJA PROGRAMSKE OPREME 5.1 ​​Izbira okolja za razvoj programa

Kot že omenjeno v “Problem Statement”, je bilo za izdelavo tega programa izbrano razvojno okolje Borland C++Builder 5. Ta odločitev je posledica dejstva, da v njem proces ustvarjanja vmesnika ni težaven niti za programerja, ki se je prvič srečal z Builderjem in dobro delajo z bazami podatkov in grafiko, kar je točno tisto, kar potrebujemo za razvoj našega programa.

Pomanjkljivost je po mojem mnenju velika izvršljiva koda programa - da bi deloval na stroju, kjer Builder ni nameščen, je treba vključiti vse knjižnice, ki se uporabljajo v njem, zato je velikost program postane nekajkrat večji.

Poleg tega je dobra stran Builderja ta, da imajo komponente številne lastnosti, ki jih je mogoče spreminjati ne samo med gradnjo, ampak tudi med izvajanjem programa, zaradi česar je delo z njimi bolj prilagodljivo.

5.2 Delo s tabelami

Kot gonilnik baze podatkov uporabljamo Paradox. Ta vrsta baze podatkov je bila izbrana najprej zato, ker ima Builder vgrajena orodja za delo s tabelami Paradox, kot je Borland Database Engine, in je priložen tudi programu Database Desktop. Drugič, prednost Paradoxa je, da je mogoče ime baze podatkov določiti kot pot do imenika, kjer se nahaja datoteka tabele, vse tabele pa so shranjene v ločenih datotekah. Tretjič, zavzamejo malo prostora in so najpreprostejše lokalne mize. Četrtič, tabele Paradox vam omogočajo ustvarjanje ključnih polj.

Za zagotovitev dela s tabelo smo na obrazec namestili naslednje komponente:

DBGrid, s katerim lahko v tabelo vnašamo, brišemo ali urejamo podatke ali jih preprosto prikažemo.

DBComboBox seznam, s katerim lahko vstavimo podatke iz objektne tabele v trenutni zapis glavne tabele. Preden uporabite ta seznam, ga morate napolniti z vrednostmi iz tabele predmetov. To naredimo tako, da ob zagonu programa pregledamo vse njegove zapise in njihovo vsebino vnesemo v polje Items tega seznama.

Navigator DBNavigator - z njim lahko brišete, dodajate, urejate zapise v tabeli in tudi krmarite po njih. Povežemo ga z mrežo, v kateri bo prikazana naša tabela.

Vse te komponente so povezane s tabelo prek DataSourse, v lastnostih katerega navedemo njegovo ime. Poleg tega je tabela sama predstavljena tudi kot komponenta Tabela, v kateri je treba največ pozornosti nameniti trem lastnostim:

1)Aktivno – prikazuje, ali je tabela aktivna. Če poskusite dostopati do njega, če je ta lastnost onemogočena, bo program ustvaril napako »Te operacije ni mogoče izvesti na zaprtem naboru podatkov«. Med testiranjem so bile zasledene in obravnavane vse možne situacije, ki bi lahko privedle do te napake.

2) DatabaseName – ime baze podatkov; kot pot se vzame pot do imenika, iz katerega je bila tabela odprta ali ustvarjena.

3) TableName – ime tabele – datoteke s končnico .db, v kateri je shranjena tabela.

Vse te lastnosti se spreminjajo med izvajanjem programa.

Potrebujemo komponento Tabela, da se znebimo specifikacije. Pod masko tabele lahko odpremo katero koli specifično tabelo in spremenimo le lastnosti tabele, ne da bi to vplivalo na druge komponente. Na primer, ko odpremo tabelo, zapremo in deaktiviramo prejšnjo, medtem ko ime baze podatkov in ime tabele v lastnostih komponente Tabela izbrišemo ter odpremo in aktiviramo novo, pri čemer v DatabaseName zapišemo nova imena imenikov in datotek. in TableName pri odpiranju. (Glejte metodi TBOpenFileClick in TBCloseFileClick v Dodatku A).

Komponenti DataSourse in Table se nahajata na obrazcu, vendar sta vidni samo pri delu s programom v Builderju.

5.3 Delo z grafiko

Za risanje načrta uporabimo komponento Slika. Ta predmet ima dve pomembni lastnosti:

1) Slika – je objekt razreda TPicture, ki je vsebnik za grafiko katere koli vrste. Tisti. ta komponenta lahko shrani bitno grafiko, ikone ali drugo uporabniško definirano grafiko. Slika je tam, kjer se nahaja naša risba. Z njegovo pomočjo shranimo nastalo risbo v datoteko. (Glejte dodatek A, metoda TBSaveFileClick). Upoštevajte tudi, da velikosti slike in slike morda niso enaki. Ta problem bo podrobneje obravnavan v nadaljevanju.

2) Platno - platno. Celoten postopek risanja poteka na platnu komponente Image. Canvas vam omogoča nastavitev parametrov peresa, čopiča, pisave, risanje predmetov, kot so črte, pravokotniki, elipse, in tudi prikaz besedila.

V našem programu uporabljamo črtno risanje z metodama MoveTo in LineTo outline, risanje točk z Ellipse in izpis besedila z metodo TextOut. (Glejte dodatek A, načrt).

Tisti. canvas nam omogoča delo s funkcijami Windows GDI brez neposrednega dostopa do njih, kar močno olajša delo z grafiko.


5.4 Razvoj vmesnika

Posebno pozornost je treba nameniti tudi razvoju vmesnika, saj ga je treba narediti uporabniku prijaznega. Orodja Builder olajšajo implementacijo vmesnika v standarde Windows.

Glavni elementi standardnega programskega vmesnika Windows:

1) Meniji - uporabnikom omogočajo preprost način za izvajanje logično združenih ukazov.

Glavni meni je ustvarjen s komponento MainMenu in ga je zelo priročno urejati pri ustvarjanju programa, saj vam ga ni treba zagnati, da bi ga preverili - vsa njegova vsebina je že prikazana na obrazcu.

2) Orodna vrstica - vsebuje orodne gumbe, ki ustrezajo elementom v meniju programa in uporabniku omogočajo bolj neposreden dostop do njegovih ukazov.

Orodna vrstica je implementirana s pomočjo komponente ToolBar, ki omogoča hitro dodajanje in postavljanje gumbov. Vsi orodni gumbi v orodni vrstici imajo enako širino in višino.

Za vsak gumb lahko nastavite ikono, ki prikazuje dejanje, ki ga izvaja, tako da izberete številko ikone med slikami, shranjenimi v komponenti ImageList. To je priročno, ker lahko preprosto spremenite ikono, ne da bi vsakič naložili ikono iz datoteke.

V skladu s standardom Windows sem na plošči ustvaril gumbe, ki ustrezajo elementom menija »Novo«, »Odpri«, »Shrani«, »Natisni«.

3) Gumbi - z njihovo pomočjo uporabnik začne izvajanje dejanja, ki je dodeljeno temu gumbu.

Običajno se v skladu s standardom vmesnika Windows gumbi skoraj nikoli ne uporabljajo, da ne zamašijo okna programa. Namesto tega se uporabljajo orodne vrstice in meniji.

Ker pa naš program ne izvaja zelo velikega števila dejanj, lahko uporabimo tudi gumbe. To je priročno, ker se za razliko od menijev nahajajo poleg elementa, v zvezi s katerim se izvaja dejanje, ki ga kličejo (na primer, gumbi za dodajanje in brisanje predmetov se nahajajo poleg seznama predmetov, gumbi za povečavo pa so naslednji na sliko), kar bo seveda priročno za uporabnika.

Poleg tega jih lahko podpišete in pojasnite njihov namen, kar je tudi priročno.

Gumb je ustvarjen tako, da se komponenta Gumb postavi na obrazec. Pri razvoju programa se uporablja njegova lastnost Caption - napis na gumbu, med izvajanjem pa se uporablja lastnost Enabled, da gumb postane neaktiven ali, nasprotno, da se aktivira. (Glejte Dodatek A, HideButtons() in ShowButtons()). Na primer, ko odpremo tabelo, aktiviramo gumbe za risanje načrta, ko jo zapremo, pa jih onemogočimo.

4) Spustni seznami – uporabljajo se, da uporabniku omogočijo izbiro predmeta s seznama. To je veliko bolj priročno kot ročno vnašanje.

V tem programu se kombinirano polje uporablja za vnos vrste predmeta v tabelo (DBComboBox, obravnavano zgoraj) in za odstranitev vrste predmeta iz tabele predmetov (ComboBox).

Razlika med DBComboBoxom in ComboBoxom je v tem, da je prvi povezan s poljem tabele, drugi pa je preprost seznam. Uporaba preprostega seznama ComboBox vam omogoča, da rešite težave interakcije s tabelo in DBComboBox, ki nastanejo pri brisanju predmeta iz tabele.

5) Drsni trakovi – implementirani s komponento ScrollBox; v našem primeru so potrebni za premikanje po sliki načrta, ko je ta povečana. Program spreminja parameter Max, ki določa največjo količino drsenja glede na lestvico.

6) Potrditvena polja (stikala) – določajo, ali je možnost, ki jo predstavljajo, omogočena ali onemogočena.

V Builderju je to komponenta CheckBox.

V programu potrditvena polja določajo, ali so naslednje funkcije omogočene ali onemogočene:

Risanje črt poti;

Prikaz razdalje na načrtu;

Prikaz vrste objekta na načrtu;

Prikaži tabelo razdalj.

Potrditvena polja so običajno v meniju z nastavitvami. Toda zaradi enostavnosti našega programa so prikazani na plošči poleg polja za risanje, kar je za uporabnika zelo priročno.

7) Zavihki - v tem programu sta tabela in risba načrta na različnih zavihkih. Menim, da bo to bolj priročno za uporabnika, saj je celoten program vsebovan v enem oknu, hkrati pa se tako območje tabele kot območje risanja ne nahajata drug drugemu v škodo.

V Builderju obstajata dve vrsti zavihkov: TabControl in PageControl.

Program uporablja PageControl, saj lahko za razliko od prve ta komponenta vsebuje heterogene kontrole na zavihkih. V TabControlu so vse strani enake.

8) Pogovorna okna so zelo priročno orodje, ki pomaga izvajati pogovorna okna z uporabnikom, kot so shranjevanje, odpiranje datoteke, tiskanje in izbira barve, uporabljene v tem programu.

Vsa potrebna pogovorna okna so nameščena na obrazcu, vendar ostanejo uporabniku nevidna. Pokliče jih program in izvajajo standardni vmesnik Raziskovalca.

Z uporabo pogovornih oken OpenDialog in SaveDialog program prejme ime datoteke in imenika, ki ju uporabnik izbere. Z uporabo PrintDialog se prikličejo nastavitve tiskanja. In ColorDialog vam pomaga izbrati barvo (uporablja se za izbiro barve ozadja slike).

Namen vsake uporabniku vidne komponente vmesnika je opisan v uporabniškem priročniku.

Omeniti velja, da ima vsak objekt vmesnika lastnost, imenovano Align. Omogoča poravnavo kontrolnika na desno, levo, zgornjo ali spodnjo stran obrazca in plošče, kontrolnik pa ostane tam, tudi če obrazcu spremenite velikost. Na primer, plošča z gumbi ob sliki je poravnana na desno, tabela razdalj je poravnana na levo, polje slike pa je poravnano na alClient, ki zavzame ves prosti prostor med tabelo in ploščo. . Ko raztegnete obrazec, se bodo raztegnili tudi ti kontrolniki, ki bodo ostali na mestu.

Uporaba lastnosti Poravnaj je priročna, ker lahko v fazi načrtovanja razporedite komponente po potrebi, nato pa vam ni treba ročno nastavljati njihovih velikosti vsakič, ko se oblika spremeni.

5.5 Nekatere lastnosti algoritmov

Algoritem risanja

Ker je bil že precej podrobno opisan, bom dodal samo eno opombo glede njegovega razvoja: riše zemljevid v konformni projekciji. Ti ohranjajo enakost kotov med smermi na zemljevidu in v naravi. Hkrati se izkrivljajo dimenzije ozemelj.

To vrsto projekcije smo izbrali, ker je zanjo najlažje narisati koordinatno mrežo, saj je sestavljena iz ravnih črt. (Za več informacij o zemljevidnih projekcijah in mrežnih koordinatah glejte Dodatek E.)

Razdalje so izračunane v realnih velikostih.

Algoritem za izračun razdalje.

Podrobno je opisano tudi v "Opisu algoritma". Je del algoritma risanja.

Izpeljal ga je avtor programa, saj njegovih analogov ni bilo najti nikjer. Njegova posebnost je, da je treba upoštevati ukrivljenost zemeljske površine in izračunati dolžino loka. To je še posebej težko, če se točke nahajajo na enaki zemljepisni širini in dolžini.

Krogla je vzeta kot oblika zemeljske površine. To lahko povzroči napake, saj je oblika zemlje pravzaprav elipsoid, vendar močno poenostavi izračune. Povprečni polmer zemlje je 6371 km. To daje napako približno 0,3%.

Upoštevati je treba tudi, da se za izračun razdalje, zlasti v najbolj zapletenem primeru, uporablja več zaporednih izračunov, zaradi česar se napaka kopiči. Na velikost napake vpliva tudi pretvorba stopinjske mere kota v radiane in obratno. Toda s sodobno natančnostjo računalniških izračunov bo ta napaka majhna, poleg tega naloga ni pokazala, da mora biti ocena poti točna.

Ustvarjanje tabele

Tu je treba povedati, da v nobeni knjigi, ki jo imam, nisem našel algoritma za programsko ustvarjanje tabele. Vsa literatura je govorila o ustvarjanju tabel v DatabaseDesktop, kar bi bilo neprijetno za uporabnika namestiti še večji program samo za rešitev problema ustvarjanja novih tabel.

Kljub temu je bil ta algoritem najden v pomoči za Builder, čeprav je tam vseboval napake.

Program predstavlja tudi delujoč primer tega (glejte Dodatek A, TBNewFileClick).

Kot značilnost tega algoritma je treba opozoriti, da morate pred klicanjem postopka ustvarjanja tabele CreateTable() inicializirati vsa polja, pri čemer navedete njihovo ime, vrsto, dolžino (če je potrebno) in zahtevano vrednost (ali je zahtevana ali ne). Po inicializaciji polj deklariramo ključno polje in šele nato pokličemo proceduro za izdelavo tabele. Po tem morate novo tabelo povezati s komponento Tabela, da boste lahko delali z njo z uporabo mreže in navigatorja. Ime datoteke nove tabele se zahteva z uporabo SaveDialog.

Težava z velikostjo grafike

Med razvojem programa se je pojavil precej resen problem pri risanju slike - pri spreminjanju velikosti obrazca bi se morala spremeniti velikost slike, vendar se to ni zgodilo.

Razlog je bil v tem, da se je velikost komponente slike še vedno spreminjala, velikost slike pa je ostala enaka. V zvezi s tem je bil ustvarjen postopek ResizeForm (glej Dodatek A), ki se je odzval na spremembe velikosti obrazca in spremenil velikost slike v skladu s spremenjeno velikostjo komponente Image.

5.6 Testiranje

Med celotno zasnovo programa so ga testirali in odpravljali napake. Posebna pozornost je bila namenjena dvema točkama - pravilnosti dela s tabelami in pravilnosti risanja načrta.

Pri delu s tabelami je bil prvi korak odkrivanje težav, povezanih z odpiranjem, ustvarjanjem tabel in risanjem. Na primer, če ne deaktivirate gumbov za risanje, lahko klik nanje, ko tabela ni odprta, povzroči napako. Da odpravite to napako, če ni odprte mize, so gumbi neaktivni.

Druga pomembna napaka, ki je bila odpravljena, je težava z velikostjo grafike (glejte zgoraj).

Prav tako je bilo treba zagotoviti, da se ob onemogočanju/omogočanju potrditvenih polj in spreminjanju velikosti obrazca ne bo izrisala slika, če uporabnik še ni kliknil na gumb »nariši«. To sledenje poteka v programu z zastavico za risanje, ki se nastavi, ko uporabnik klikne gumb za risanje, in se počisti, ko se klikne gumb za brisanje. Med postopkom testiranja so bile spremljane in odpravljene napake v vseh situacijah, v katerih je bilo preverjanje te zastavice potrebno.

Najpomembnejši vidik testiranja je bilo preverjanje delovanja programa na računalniku, ki nima nameščenega Builderja. To je pomagalo ugotoviti naslednje:

1) pri prevajanju programa morate vključiti vse uporabljene knjižnice. To dosežete tako, da onemogočite dve možnosti v nastavitvah prevajalnika. Hkrati se izvedljiva koda programa poveča, vendar lahko deluje tudi na stroju brez Builderja.

2) program zahteva Borland Database Engine. Če ga ni v vašem računalniku, ga morate namestiti.


6. OPIS PROGRAMA

Program je namenjen informacijski podpori za izdelavo načrta lokacije. Omogoča shranjevanje podatkov o točkah načrta v tabeli, njihov grafični prikaz, izdelavo nove tabele, dodajanje in brisanje tipov objektov, izračun razdalj in oceno dolžine poti, risanje več poti, shranjevanje rezultatov v datoteko oz. tiskanje.

Program je ustvarjen za operacijski sistem Windows in ima standardiziran in uporabniku prijazen vmesnik. Zraven je primer v obliki tabele z vlakovnimi potmi.


7. NAVODILA ZA NAMESTITEV

Za namestitev programa morajo biti izpolnjeni naslednji pogoji: procesor 233 MHz ali višji, RAM 16 MB, OS Windows98 ali višji.

Če želite namestiti program, morate narediti naslednje:

1) Ustvarite novo mapo za program.

2) Z medija, na katerem se nahaja programski arhiv (disketa ali disk), ga kopirajte v to mapo.

3) Razpakirajte arhiv v to mapo.

4) Prepričajte se, da sta datoteki objects.db in rasst.db v isti mapi kot program.

5) Prepričajte se, da je za te datoteke počiščen atribut »Samo za branje«. Če ne, ga odstranite.

6) Razpakirajte arhiv s knjižnicami v mapo Windows.

7) Zdaj lahko zaženete program in ga uporabljate.


8. PRIROČNIK ZA UPORABO 8.1 Glavni meni Meni "Datoteka".

Če želite začeti delati v programu, morate odpreti datoteko s tabelo ali ustvariti novo. To lahko storite z menijskimi elementi Datoteka, Odpri in Novo.

"Odpri" - odpre obstoječo tabelo. Prikliče pogovorno okno, v katerem mora uporabnik izbrati datoteko s pripono .db.

"Novo" - ustvarjanje nove tabele. Pokliče se pogovorno okno, v katerem uporabnik določi ime nove tabele.

"Natisni" - odvisno od odprtega zavihka natisne sliko ali tabelo. Ko izberete ta element, se odpre pogovorno okno z nastavitvami tiskanja, po kliku na gumb »V redu« pa se opravilo pošlje v tiskanje.

Meni tabele

"Izdelaj načrt" - če je tabela odprta, aktivira zavihek "Načrt" in izriše načrt.

"Dodaj tip objekta" - prikliče obrazec za dodajanje tipa objekta.

"Izbriši tip predmeta" - prikliče obrazec za brisanje tipa objekta.

Meni pomoči

"O programu" - prikaže ime programa in podatke o avtorju.


8.2 Plošča s hitrimi gumbi

Dejanja teh gumbov so podobna istoimenskim elementom v meniju »Datoteka«.

- "Novo" - ustvarjanje nove tabele.

- "Odpri" - odpre obstoječo tabelo.

- "Natisni" - natisnite sliko ali tabelo.

8.3 Zavihek Tabela

Mreža tabele – vanj se naloži tabela. Z uporabo te mreže lahko uporabnik ureja in pregleduje vnose v tabeli.

Navigator – nahaja se pod mrežo in omogoča urejanje in ogled tabele.

Navigacijski gumbi

- "Prvi zapis" - premakne se na prvi zapis v tabeli.

- "Prejšnji zapis" - premakne se na prejšnji zapis v tabeli.

- "Naslednji zapis" - premakne se na naslednji zapis v tabeli.

- "Zadnji zapis" - premakne se na zadnji zapis v tabeli.

- “Dodaj zapis” - tabela se postavi v način urejanja, pred aktivnim zapisom se vstavi nov prazen zapis.

- “Izbriši vnos” - izbriše trenutni vnos, ki je predhodno zahteval potrditev.

- "Uredi" - uredi trenutni vnos.

- "Prekliči spremembe" - prekliče spremembe trenutnega zapisa in vrne njegovo prejšnjo vrednost.

- "Nadgradnja". Posodobi tabelo v mreži.

Pod navigatorjem je Seznam objektov in gumbi za brisanje in dodajanje objektov.

Seznam objektov – vsebuje seznam tipov objektov. Ko izberete vrsto s seznama, se ta vnese v trenutni zapis v tabeli.

Dodaj vrsto predmeta – prikliče obrazec vrste dodajanja. Ko ga dodate, je takoj dodan na seznam.

Izbriši tip objekta – prikliče obrazec za brisanje tipa objekta.

Dodajte obrazec vrste predmeta

Vsebuje urejevalno polje za vnos besedila, v katerega se vnese ime nove vrste.

"Dodaj" - doda tip predmeta na seznam in tabelo, ne da bi zaprl obrazec.

"Ok" - če predmet ni dodan, ga vnese v seznam in tabelo ter zapre obrazec.

"Prekliči" - zapre obrazce brez dodajanja.

Izbriši obrazec vrste predmeta

Seznam objektov - iz njega uporabnik izbere, kateri objekt želi izbrisati.

"Izbriši" - izbriše izbrano vrsto predmeta iz tabele in seznama.

"Izbriši vse" - popolnoma počisti tabelo predmetov in sezname.

"OK" - zapre obrazec.


8.4 Zavihek "Načrt".

Polje za risanje je območje, kjer je prikazana risba načrta.

Drsni trakovi – prikažejo se, ko sliko povečate s klikom na gumb »Povečaj«. Omogoča pomikanje po povečani sliki.

Tabela razdalj – za vsako pot prikazuje njeno število in dolžino odsekov v kilometrih. Tabela je vidna, če je potrditveno polje »Skrij tabelo razdalj« počiščeno.

"Počisti zemljevid" - počisti slikovno polje.

"Risanje" - nariše načrt.

"Barva ozadja" - omogoča izbiro barve ozadja slike. Ko kliknete ta gumb, se prikaže pogovorno okno za izbiro barve.

"+ Povečaj" - poveča sliko na načrtu.

"- Pomanjšaj" - zmanjša sliko na načrtu. Ta gumb postane aktiven, ko pritisnete gumb za povečanje.

"Privzeto" - nastavi začetno velikost slike.

“Nariši črte poti” - če je označeno, bodo poti narisane na načrtu, če ne, bodo prikazane samo točke.

“Prikaži razdalje na zemljevidu” - če je potrditveno polje potrjeno, je poleg vsake točke poti razdalja prikazana v obliki vsote dolžin segmentov pred to točko. “0” je postavljena blizu prve točke poti.

“Prikaži vrsto objekta na zemljevidu” - če je potrditveno polje potrjeno, je vrsta objekta prikazana poleg vsake točke.

"Skrij tabelo razdalj" - če je potrditveno polje označeno, je tabela razdalj nevidna. Če je počiščeno, se bo tabela prikazala desno od polja za risanje.

Vsa potrditvena polja so privzeto označena.


9. TESTNI PRIMER

Kot testni primer bomo prikazali proge več vlakov železnice Gorky.

Vzemimo naslednje vlake:

N 497G Gorky-Mosk - Adler

N 471G Gorki-Mosk - Novorosijsk

N 431G Gorky-Mosk - Adler

N 367G Gorky-Mosk - Samara

N 059A Gorky-Mosk - St. Petersburg-Glavn

N 039G Gorky-Mosk - Moskva Kursk

V tabelo vpišimo koordinate največjih naseljenih območij kot točk na posamezni poti. Kot objekte bomo uporabili imena mest.

riž. 9.1. Splošni pogled na program na zavihku "Tabela", vnos imena predmeta v zapis s pomočjo seznama.


Prej smo postajo Red Knot dodali v tabelo predmetov, a ker je ne potrebujemo, jo bomo izbrisali.

riž. 9.2. Izbrišite vrsto predmeta.

Pri izbiranju proge vlaka 431 potrebujemo Vladimirja. Ker ga ni na seznamu, ga morate dodati.

riž. 9.3. Dodajanje vrste predmeta.


Tako smo zbrali vse želene poti. Kot rezultat smo na koncu dobili takšno mizo.

riž. 9.4. Tabela

Zdaj bomo s tablico naredili načrt.

riž. 9.5. Slika načrta z vsemi napisi.


Privzeto prikažemo črte, razdalje in imena mest.

Pa da vidimo kako bodo trase brez podpisov.

riž. 9.6. Slika načrta brez vseh napisov.

Zdaj pa poglejmo samo razdalje.

riž. 9.7. Slika načrta samo z razdaljami.


Pravzaprav niso bile izračunane zelo natančno, a to je zato, ker nismo upoštevali vseh točk teh poti, pa tudi vzete koordinate niso bile povsem pravilne - določene so bile iz zemljevida "na oko".

Zdaj pa poglejmo naš načrt samo z imeni mest.

riž. 9.8. Slika načrta, ki prikazuje samo vrste objektov.

riž. 9.9. Slika načrta v obliki pik z vsemi podpisi.


Ogledate si lahko tudi tabelo razdalj.

riž. 9.11. Splošni pogled na program na zavihku "Načrt" z vidno tabelo razdalj.


ZAKLJUČEK

Naloga zastavljena v nalogi diplomskega dela je bila uspešno opravljena. Razviti program v celoti izpolnjuje začetne pogoje, opisane v postavitvi problema. Zlasti je program izvajal delo s tabelami, grafikami in datotekami.

Delo uporabnika programa poteka s preprostim vmesnikom, izdelanim po standardih programskega vmesnika Windows.

Nadaljnje izboljšave in razširitev zmogljivosti tega projekta vključujejo dodajanje izračuna najkrajše poti, risanje ikon objektov, reliefne slike in možnost nalaganja slike zemljevida kot ozadja.


BIBLIOGRAFIJA

1. P. Gustafson, M. Cashman, B. Swart, J. Holingworth. Borland C++ Builder 6. Priročnik za razvijalce. – Williams, 2004.

2. A. Arhangelski. Programiranje v C++ Builder 6. – Binom, 2002.

3. T.A. Pavlovskaja. C/C++. Programiranje v jeziku visoke ravni. – Peter, 2001.


DODATEK DODATEK E. Kartografske projekcije in mrežni zemljevidi

Nemogoče je razgrniti sferično površino na ravnini brez prelomov in gub, to pomeni, da njene podobe načrta na ravnini ni mogoče prikazati brez popačenj s popolno geometrijsko podobnostjo vseh njenih obrisov. Popolna podobnost obrisov otokov, celin in različnih predmetov, projiciranih na ravno površino, je mogoče doseči le na krogli (globusu). Slika zemeljskega površja na krogli (globusu) je enaka v merilu, enaka kotu in enaka velikosti.

Nemogoče je istočasno in v celoti ohraniti te geometrijske lastnosti na zemljevidu. Geografska mreža, zgrajena na ravnini, ki prikazuje poldnevnike in vzporednike, bo imela določena popačenja, zato bodo slike vseh predmetov na zemeljski površini popačene. Narava in obseg popačenj sta odvisna od načina izdelave kartografske mreže, na podlagi katere je zemljevid sestavljen.

Prikaz površja elipsoida ali krogle na ravnini imenujemo kartografska projekcija. Obstajajo različne vrste zemljevidnih projekcij. Vsak od njih ustreza določeni kartografski mreži in njenim inherentnim popačenjem. V eni vrsti projekcije so dimenzije območij popačene, v drugi - koti, v tretji - območja in koti. Hkrati so v vseh projekcijah brez izjeme dolžine črt popačene.

Kartografske projekcije so razvrščene glede na naravo popačenja, vrsto slike meridianov in vzporednikov (geografska mreža) in nekatere druge značilnosti. Glede na naravo popačenj se razlikujejo naslednje projekcije zemljevidov:

Enakokoten, ki ohranja enakost kotov med smermi na karti in v naravi. Slika E.1 prikazuje zemljevid sveta, na katerem kartografska mreža ohranja lastnost enakokotnosti. Zemljevid ohranja podobnost vogalov, vendar so velikosti območij popačene. Na primer, območja Grenlandije in Afrike na zemljevidu so skoraj enaka, v resnici pa je območje Afrike približno 15-krat večje od območja Grenlandije.

Slika E.1 Zemljevid sveta v konformni projekciji.

Enake velikosti, ohranjanje sorazmernosti območij na zemljevidu z ustreznimi območji na zemeljskem elipsoidu. Slika E.2 prikazuje zemljevid sveta, sestavljen v enakopovršinski projekciji. Ohranja sorazmernost vseh površin, vendar je podobnost figur popačena, to pomeni, da ni enakokotnosti. Medsebojna pravokotnost meridianov in vzporednikov na taki karti je ohranjena samo vzdolž srednjega poldnevnika.

Ekvidistanten, ohranja konstantno merilo v kateri koli smeri;

Poljubno, ne ohranja enakosti kotov, sorazmernosti območij ali konstantnosti merila. Bistvo uporabe poljubnih projekcij je bolj enakomerna porazdelitev popačenj na zemljevidu in udobje reševanja nekaterih praktičnih problemov.


riž. E. 2 Zemljevid sveta v enakoploskovi projekciji.

Glede na vrsto slike so mreže meridianov in vzporednikov zemljevidne projekcije razdeljene na stožčaste, valjaste, azimutne itd. Poleg tega so znotraj vsake od teh skupin lahko projekcije različne narave popačenja (konformne, enakoploščne). itd.). Geometrijsko bistvo stožčastih in cilindričnih projekcij je v tem, da se mreža poldnevnikov in vzporednikov projicira na stransko površino stožca ali valja z naknadno postavitvijo teh površin v ravnino. Geometrijsko bistvo azimutalnih projekcij je v tem, da se mreža meridianov in vzporednikov projicira na ravnino, ki se dotika krogle na enem od polov ali sekante vzdolž nekega vzporednika. Kartografska projekcija, ki je najprimernejša glede na naravo, obseg in porazdelitev popačenj za določeno karto, je izbrana glede na namen, vsebino karte, pa tudi velikost, konfiguracijo in geografsko lego kartiranega ozemlja. Zahvaljujoč kartografski mreži vsa popačenja, ne glede na to, kako velika so, sama po sebi ne vplivajo na natančnost določanja geografskega položaja (koordinat) predmetov, prikazanih na zemljevidu na zemljevidu. Hkrati pa kartografska mreža, ki je grafični izraz projekcije, omogoča upoštevanje narave, velikosti in porazdelitve popačenj pri meritvah na zemljevidu. Zato je vsak zemljepisni zemljevid matematično določena slika zemeljskega površja.

Osebne podružnične parcele avtonomnega okrožja Aginsky Buryat za 2005–2010,« ki je bil pripravljen v osnutku. 4. Glavne smeri za izboljšanje dejavnosti državnih organov pri podpori osebnih podrejenih parcel podeželskega prebivalstva v Aginskem Burjatskem avtonomnem okrožju 4.1 Problemi in prednostne naloge za razvoj osebnih podrejenih parcel v Aginskem ...

Preučevanje družin je pripeljalo do razvoja psiholoških, pedagoških in socioloških metod, ki poglabljajo in širijo predstave o sodobni družini. POGLAVJE 3. SOCIALNI PROBLEMI IN MOŽNOSTI ZA SOCIALNO DELO Z MLADIMI DRUŽINAMI V VASI VORONOVKA 3.1 Splošne značilnosti str. Voronovka, okrožje Shegarsky, regija Tomsk, okrožje Shegarsky se nahaja v južnem delu Tomsk...




Oskrba in podpora otrokom; - trenutno je v Rusiji razvit in uveden mehanizem za financiranje ciljnih programov za podporo materinstvu in otroštvu. 2. Finančni mehanizem za izvajanje državne politike za podporo materinstvu in otroštvu 2.1 Postopek in pogoji za izplačilo socialnih prejemkov Do danes je Rusija razvila precej razvit sistem prejemkov, ...