Search
Napište program, který bude vykonávat správu jednoduché knihovny. V knihovně se nacházejí dva druhy tiskovin
Journal
name
volume
issue
year
Book
author
Kromě výše zmíněných atributů mají všechny objekty atribut id, což je číslo odpovídající pořadí tiskoviny při načtení do databáze.
id
Na standardním vstupu pak může být některý z následujících příkazů:
list
find:retezec
retezec
erase:rezezec
remove:id
Kromě prvního příkazu potřebují všechny ostatní příkazy i argument. Pokud argument chybí, vypíše se na standardní výstup informace v následující podobě (chybějící argument příkazu find):
find
+----------------------------------------------------------+ | Command "find" expects some argument | +----------------------------------------------------------+
Pokud je na vstupu neznámý příkaz, vypíše se na standardní výstup upozornění v následujícím tvaru (neznámý příkaz delete):
delete
+----------------------------------------------------------+ | Unknown command "delete" | +----------------------------------------------------------+
Pokud chce uživatel smazat záznam s ID, které neexistuje, , vypíše se na standardní výstup upozornění v následujícím tvaru:
+----------------------------------------------------------+ | ID = 100 is not in the database | +----------------------------------------------------------+
Výstupem programu je tabulka, která obsahuje záznamy odpovídající aktuálnímu stavu databáze a příkazům na vstupu. Celková šířka tabulky je 60 znaků. Hlavička a patička tabulky využívají celou šířku. Řádky se záznamy obsahují dvě buňky, v první je číslo záznamu (id), v druhé je ve dvou řádcích formátovaný popis tiskoviny - viz příklady. U časopisů se pro druhý řádek používá formát year, volume(issue).
Položky v databázi je možné řadit podle id, name nebo year a to vzestupně asc (defaultní řazení) nebo sestupně desc. Na standardním vstupu lze tedy očekávat některý z následujících příkazů
asc
desc
sort:year:desc
sort:name
Příkaz sort očekává jako argument řadicí kritérium. Pokud je uvedeno jiné, než je implementováno, vypíše se na standardní výstup následující:
sort
+----------------------------------------------------------+ | Unknown sorting order | +----------------------------------------------------------+
Pokud je hodnota, podle které se porovnává, stejná, rozhoduje ID záznamu.
ID
Hlavní funkce programu může začínat např. takto:
Database db; db.add(new Journal("IEEE Transaction on Computers", "C-35", "10", "Oct. 1986")); db.add(new Journal("IEEE Transaction on Computers", "C-35", "11", "Dec. 1986")); db.add(new Journal("IEEE Transactions on Communications", "28", "8", "Aug. 1980")); db.add(new Book("Dva roky prazdnin", "Jules Verne", "1888")); db.add(new Book("Tajuplny ostrov", "Jules Verne", "1874")); db.add(new Book("Ocelove mesto", "Jules Verne", "1879"));
list remove
+----------------------------------------------------------+ | List of all records | +----+-----------------------------------------------------+ | 1 | IEEE Transaction on Computers | | | 1986, C-35(10) | +----+-----------------------------------------------------+ | 2 | IEEE Transaction on Computers | | | 1986, C-35(11) | +----+-----------------------------------------------------+ | 3 | IEEE Transactions on Communications | | | 1980, 28(8) | +----+-----------------------------------------------------+ | 4 | Dva roky prazdnin | | | 1888, Jules Verne | +----+-----------------------------------------------------+ | 5 | Tajuplny ostrov | | | 1874, Jules Verne | +----+-----------------------------------------------------+ | 6 | Ocelove mesto | | | 1879, Jules Verne | +----+-----------------------------------------------------+ | Total: 6 | +----------------------------------------------------------+ +----------------------------------------------------------+ | Command "remove" expects some argument | +----------------------------------------------------------+
find:Jules Verne
+----------------------------------------------------------+ | Search for "Jules Verne" | +----+-----------------------------------------------------+ | 4 | Dva roky prazdnin | | | 1888, Jules Verne | +----+-----------------------------------------------------+ | 5 | Tajuplny ostrov | | | 1874, Jules Verne | +----+-----------------------------------------------------+ | 6 | Ocelove mesto | | | 1879, Jules Verne | +----+-----------------------------------------------------+ | Total: 3 | +----------------------------------------------------------+
delete remove:100 remove:2 remove:4 list
+----------------------------------------------------------+ | Unknown command "delete" | +----------------------------------------------------------+ +----------------------------------------------------------+ | ID = 100 is not in the database | +----------------------------------------------------------+ +----------------------------------------------------------+ | List of all records | +----+-----------------------------------------------------+ | 1 | IEEE Transaction on Computers | | | 1986, C-35(10) | +----+-----------------------------------------------------+ | 3 | IEEE Transactions on Communications | | | 1980, 28(8) | +----+-----------------------------------------------------+ | 5 | Tajuplny ostrov | | | 1874, Jules Verne | +----+-----------------------------------------------------+ | 6 | Ocelove mesto | | | 1879, Jules Verne | +----+-----------------------------------------------------+ | Total: 4 | +----------------------------------------------------------+
erase:Jules sort:year list
+----------------------------------------------------------+ | List of all records | +----+-----------------------------------------------------+ | 3 | IEEE Transactions on Communications | | | 1980, 28(8) | +----+-----------------------------------------------------+ | 1 | IEEE Transaction on Computers | | | 1986, C-35(10) | +----+-----------------------------------------------------+ | 2 | IEEE Transaction on Computers | | | 1986, C-35(11) | +----+-----------------------------------------------------+ | Total: 3 | +----------------------------------------------------------+
sort:name:desc list
+----------------------------------------------------------+ | List of all records | +----+-----------------------------------------------------+ | 5 | Tajuplny ostrov | | | 1874, Jules Verne | +----+-----------------------------------------------------+ | 6 | Ocelove mesto | | | 1879, Jules Verne | +----+-----------------------------------------------------+ | 3 | IEEE Transactions on Communications | | | 1980, 28(8) | +----+-----------------------------------------------------+ | 1 | IEEE Transaction on Computers | | | 1986, C-35(10) | +----+-----------------------------------------------------+ | 2 | IEEE Transaction on Computers | | | 1986, C-35(11) | +----+-----------------------------------------------------+ | 4 | Dva roky prazdnin | | | 1888, Jules Verne | +----+-----------------------------------------------------+ | Total: 6 | +----------------------------------------------------------+
Do systému BRUTE odevzdejte zabalený archiv s *.cpp a případně *.hpp soubory s libovolným jménem. Všechny soubory musí být v kořenovém adresáři archivu.
Veřejné příklady + Template: HW03.zip