LU-LKP-B10:MD2

From DiLab
Jump to: navigation, search

MD2

Mērķi

  • Darbs ar komandu rindas argumentiem
  • Sistēmas programmatūras izstrāde, kas atbild uz standarta un specifiskiem parametriem.
  • Darbs ar failu ievadu un izvadu.
  • Vienkāršas datu bāzes izveide


Uzdevums

Uzdevums veicams uz MD1 bāzes. Tas nozīmē, kašis uzdevums pieņem strādājosu MD1 risinājumu, kas papildināts ar šī uzdevuma noteikumiem.

Izstrādāt sistēmas programmatūru md2, kas darbināma no komandu rindas ar sekojošiem parametriem un funkcionalitāti:

  • Izdruka versijas numuru programmatūrai, iekļaujot kompilācijas datumu.
md2 -v
  • Izdrukā palīgu ar lietojuma instrukciju (uz abiem pieprasījumiem)
md2 -h
md2 --help
  • Pievieno datus ģimenes koka datubāzei. Dati nāk no faila, ja tas norādīts, vai no stdin ja nav norādīts. Ievaddatu formāts ir tads pats kā MD1, vienīgi vārds var būt viena līdz triju vārdu garumā: vārds, vai vārds uzvārds, vai vārds otrais-vārds uzvārds.
md2 -i
md2 -i filename
  • Izdrukā datu bāzes saturu alfabētiskā secība pēc vārda:
md2 -n
  • Izdrukā datu bāzes saturu pēc vecuma, vecāki vispirms (tā pat kā MD1):
md2 -y
Datu bāzes formāts

Izveidotas datu bāzes (DB) saturs ir teksta fails, kur pirmā rindiņa (galvene) var saturēt jūsu specifisko informāciju vai arī ir tukša ja jums nav nepieciešama, bet visas pārejās rindiņas ir datu bāzes raksti.

DB Raksts sastāv no laukiem, kas atdalīti ar DB_FIELD_DELIMITER simbolu. Raksti atdalīti ar DB_REC_DELIMITER simbolu. Ieteicams tos definēt programmas sākumā un lietot kā konstantes:

#define DB_FIELD_DELIMITER  '\t'
#define DB_REC_DELIMITER  '\n'

DB raksta formāts ir sekojošs:

  • Indekss - 5 simboli kā "int" vērtība. Katram rakstam unikāls. Izmantots tēva un mātes laukos.
  • Vārds - simbolu virkne, mainīgs garums
  • Gads - 4 simboli
  • Tēvs - 5 simboli, kas satur indeksu uz tēva rakstu.
  • Māte - 5 simboli, kas satur indeksu uz mātes rakstu.
  • Raksta beigu simbols - DB_REC_DELIMITER

Indeksu un skaitļu vērtībām var būt nedefinētā vērtība, kas nozīmē ka šī vērtība nav zināma. To indicē ar DB_VAL_UNDEF kā pirmo simbolu un parējos kā tukšumus. Tas definēts šādi:

#define DB_VAL_UNDEF '@'


Piezīmes

Nav jārealizē datu bāzes raksta izmešana.

Datu bāzes rakstu vērtības var nākties mainīt, izņemot tos kas ir kā ieraksta indekss un personas vārds. Piemērs ir gadījums, kad vispirms definēts bērns, kam norādīti vecāki kas nav datu bāzē, un vēlāk vai pat citā ievad-failā vecāki. Vispirms tiek radīti vecākiem raksti ar nedefinētam vertībām izņemot indeksu un vārdus. Pēc tam pārējie lauki tiek aizpildīti.


Jāiesniedz

  • Jāiesniedz C programmas pirmkods un Makefile.
  • Jāiesniedz viens testa piemēra ievada fails ar vismaz 5 cilvēkiem.
  • Visi iesniedzamie faili jāsapako arhīvā LKP_MD2_vards_uzvards.tgz
  • Arhīva fails sūtāms pa epastu piekabē, ar sekojošu "Subject:" LKP MD2 vards uzvards


Vērtējums

Uzdevums tiks vērtēts sekojoši:

  1. 10% - Parametru analīze, -h un -v parametri.
  2. 30% - Dati korekti ielasīti datubāzē. Datu bāzes izveide un saturs.
  3. 20% - Datu izvads alfabētiskā secībā
  4. 20% - Datu izvads vecuma secībā
  5. 20% - Nekorektu ievaddatu atpazīšana un kļūdas paziņojuma izdruka.


Piemēri

Derīga informācija

  • Ieteikums: izstrādājiet programmatūru pakāpeniski. Piemēram, vispirms ielasiet un izdrukājiet datus. Tad pievienojiet datu analīzi un reģistrēšanu savās datu struktūrās. Tad pievienojiet datu analīzi lai tos sakārtotu izdrukai. Testējiet vispirms uz pareiziem datiem. tad uz kļūdainiem datiem.

J&A (jautājumi un atbildes)

J: Uzdevums pārāk grūts, vai var pagarināt termiņu?

A: Noteiktais termiņš paliek spēkā. Iesaku risināt savlaicīgi, lai pietiek laika neparedzētu problēmu risināšanai.


Uz LKP kursa sākuma lapu.