V této úloze procvičíme použití souborů, vstupních a výstupních operací, ale i kontejnerů, výjimek atd.
Úkolem bude realizovat jednoduchý správce osobních kontaktů (adresář), v němž bude uživatel mít možnost uchovávat kontaktní údaje o osobách. O každé osobě bude v adreáři zaznamenáno:
login (jednoznačný) - řetězec
jméno - řetězec
příjmení - řetězec
e-mail - řetězec
telefonní číslo - dlouhé celé číslo
Program by měl určitě obsahovat následují třídy, všechny ve stejném balíku (cvičící určí, jakém):
Třída správce kontaktů.
Bude umět kontakty načíst ze souboru, všechny vypsat a uložit do textového souboru. Soubor, ze kterého se čte a zapisuje, bude určen pro daný správce kontaktů jednou provždy při konstrukci. Zapisuje se do stejného souboru, z něhož se čte. Údaj o jedné osobě bude uložen na právě jednom řádku textového souboru ve formátu: login jméno příjmení e-mail telefon. Jednotlivá pole řádku vstupu jsou oddělena vždy jednou mezerou. Telefon je dlouhé celé číslo, jinak jsou to řetězce. Můžeme předpokládat, že údaje jsou v souboru vždy ve správném formátu, tj. nemusíme chyby vstupu/uživatele detekovat.
Správce kontaktů musí umět zařadit nový kontakt - pozor, login osobu jednoznačně určuje, proto vložením nové osoby s loginem, který už některá stávající osoba má, bude stávající osoba nahrazena.
Dále musí umět vyřadit osobu s daným loginem.
Třída osob.
Každá osoba nese výše uvedené údaje (tj. login, jméno, příjmení, e-mail a telefonní číslo).
Osoba musí umět vypsat nebo vrátit v řetězcové podobě údaje o sobě.
Demo třída. Udělá po řadě následující operace:
Vytvoří správce kontaktů, tj. jeden objekt typu AddressBook, načtením z textového souboru, jehož jméno je zadáno jako první argument na příkazovém řádku při spuštění aplikace. Nad takto inicializovaným správcem provede následující operace:
Načtené kontakty vypíše.
Načte od uživatele, z příkazového řádku (std. vstupu), údaje o jedné osobě (login, jméno, příjmení, e-mail a telefonní číslo), vytvoří osobu a přidá do správce kontaktů.
Načte od uživatele, z příkazového řádku (std. vstupu), login osoby, kterou chce smazat, a osobu s tímto loginem ze správce kontaktů smaže.
Vypíše všechny kontakty.
Uloží všechny kontakty zpět do souboru na disk.
Poznámka | |
---|---|
Pro inspiraci: takto nějak může (ale nemusí) vypadat metoda na načítání kontaktů na osoby ze souboru: |
Poznámka | |
---|---|
Načítání z konzoly (příkazového řádku, standardního vstupu) zrealizujeme takto: |
Poznámka | |
---|---|
Pro parsing (analýzu, "rozebrání") vstupního řádku při načítání kontaktu můžete použít např. metody řetězce indexOf, kterými najdete pozice mezer ve vstupním řádku a metody substring, kterou vyberete část řádku. Rovněž je možné - a je to dokonce méně pracné - využít třídy StringTokenizer - viz dokumentace k Java Core API. Objekt této třídy je schopen pohodlně "rozebrat" řetězec na jednotlivé podřetězce původně oddělené mezerami. |
Poznámka | |
---|---|
Uložení kontaktů do souboru můžete udělat s pomocí FileWriteru. |
Váš cvičící pravděpodobně určí balík, do kterého budete vytvořené třídy ukládat. Stejně tak může upřesnit požadavky na demo třídu.
Pokud cvičící zadání modifikuje, je to OK. Tohle je vzorové zadání. Za úlohu získáte opět max. 5 bodů.