Databáze osob

 

 


Uživatelská příručka

Pomocí makefile vytvořte spustitelný soubor "tzd". Jaké koliv operace v databázi se uskutečňují přes parametry.

tzd -f dbfile parametr

kde dbfile je název datového souboru, kde se budou ukládat data a parametr může být následující

 
Parametr Význam Popis požadované akce programu
-l listing sekvenční výpis
-x název-položky index výpis dle hodnoty název-položky uvedené za parametrem
-i "jmeno;dat_nar;pohl;vek;plat" insert vložení záznamu s hodnotami položek v uvedeném pořadí
-s název-položky hodnota search vyhledání a výpis všech záznamů splňujících podmínku
-e název-položky hodnota stará nová edit modifikace všech položek s hodnotou stará na hodnotu nová
-d název-položky hodnota delete zrušení všech záznamů obsahujících položku s uvedenou hodnotou

V případě neuvedení parametru -f a datového souboru, se bude pracovat se souborem, který byl naposledy použit.

Zde uvádím pár příkladů jak dané parametry použít.

tzd -f data -l sekvenční výpis všech položek v databázi
tzd -f data -x jmeno indexový výpis podle indexového souboru jmen
tzd -f data -i "Marek;1950-12-01;0;50;4500.20" vložení dané položky do databáze
tzd -f data -s jmeno Marek najde a vypíše všechny položky kde jméno obsahuje řetězec Marek
tzd -f data -e jmeno Marek Milan modifikuje všechny hodnoty Marek na hodnotu Milan
tzd -f data -d vek 20 smaže všechny položky kde věk je roven 20

Zpět


Programátorská příručka

Zadání:

Vytvořte program v jazyce ANSI C, který bude umožňovat nad souborem dat v daném formátu provádět základní databázové operace. K definované tabulce budou vytvořeny indexové soubory, které budou zajišťovat přístup k záznamům přes zvolený index. Indexové soubory budou uloženy na disku (názvy těchto souborů budou ve tvaru název-položky.ind) a jejich aktualizace bude probíhat automaticky při změně dat v tabulce.

Struktura tabulky

Tabulka bude obsahovat 5 atributů. Atributy mají následující označení a délku

Atribut Typ atributu Poznamka
jmeno text(20) Text v definovaném rozsahu
dat_nar datum Datumová položka, tvar 'yyyy-mm-dd'
pohl boolean 0/1
vek integer Celočíselný typ
plat real (8.2) Číselný typ s desetinnou čárkou, dvě desetinná místa

Program bude dále ovládán z příkazového řádku s odpovídajícím parametrem.

Parametr Význam Popis požadované akce programu
-l listing sekvenční výpis
-x název-položky index výpis dle hodnoty název-položky uvedené za parametrem
-i jmeno;dat_nar;pohl;vek;plat insert vložení záznamu s hodnotami položek v uvedeném pořadí
-s název-položky hodnota search vyhledání a výpis všech záznamů splňujících podmínku
-e název-položky hodnota stará nová edit modifikace všech položek s hodnotou stará na hodnotu nová
-d název-položky hodnota delete zrušení všech záznamů obsahujících položku s uvedenou hodnotou

Stručný popis algoritmu

Program nejdříve otestuje paramtery na příkazové řádce a na základě těchto parametrů pak provádí jednotlivé akce.

  1. Při neuvedení parametru se vypíše chybová hláška.

  2. Parametr "-l" je provedena funkce List(soubor), která načte a vypíše postupně všechny položky v souboru dat, které jsou v dané struktuře.

  3. Parametr "-x položka" podle zvolené položky vypíše přes daný indexový soubor všechny hodnoty položky. Funkce listx(soubor,polozka).

  4. Parametr "-i jmeno;dat_nar;pohl;vek;plat" funkceiInsert(soubor,polozka) najde označené neplatné položky a přepíšeje. Pokud takové nejsou, zapíše danou položku na konec.

  5. Parametr "-s položka hodnota" funkce search(soubor,polozka,co) dle dané položky nalezne danou hodnotu obsahuje-li ji.

  6. Paramter "-e položka stará nová" funkce modify(soubor,polozka,stara,nova) najde entitu dle staré hodnoty položky a změní ji na novou.

  7. Parametr "-d položka hodnota" funkce delete_p(soubor,polozka,co) najde-li danou entitu, označí ji za neplatnou.

Během jednotlivých akcí se modifikují indexové soubory.

Popis jednotlivých funkcí

Název funkce Popis
void insert(char *soubor,char *polozka); vložení nového záznamu
void list(char *soubor); výpis položek
void search(char *soubor,char *polozka,char *co); hledání položky
void vypis(char *Radek); výpis jedné položky
void listx(char *soubor,char *polozka); výpis dle indexových souborů
void modify(char *soubor,char *polozka,char *stara,char *nova); editace položky
void delete_p(char *soubor,char *polozka,char *co); vymazání položky
void insertx1(char *soub); vytvoření indexového souboru
void insertx2(char *soub); vytvoření indexového souboru
void insertx3(char *soub); vytvoření indexového souboru
void insertx4(char *soub); vytvoření indexového souboru
void insertx5(char *soub); vytvoření indexového souboru
int trid( const void *a, const void *b); setřídění
int main(int argc,char **argv) hlavní program
void help(void); výpis nápovědy
void chyba(int cislo); oznameni chyb
void uloz_soubor(char *soubor); uložení jména datového souboru nad kterým se pracuje
char *nacti_soubor(void); načtení jména souboru nad kterým se bude pracovat

Zpět


Zdrojový text

Zpět