Zaprojektuj jako skrypt shella prostą aplikację do obsługi
elektronicznego indeksu studenta. EIS ma przechowywać oceny z różnych
kursów dla wielu studentów. Powinien obsługiwać funkcje:
- dodawanie studenta do systemu (-s numer nazwisko)
- dodawanie kursu do systemu (-k ident nazwa)
- dodawanie oceny z istniejącego kursu dla istniejącego studenta
(-a numer ident ocena)
- wyszukiwanie oceny z istniejącego kursu dla istniejącego
studenta (-f numer ident)
- modyfikacja oceny z istniejącego kursu dla istniejącego studenta
(-m numer ident ocena)
- kasowanie oceny z istniejącego kursu dla istniejącego studenta
(-u numer ident)
Założenia:
- aplikacja powinna być jednym skryptem shella, należy użyć
funkcji do realizacji poszczególnych operacji i dialogów,
- aplikację można wywołać z argumentami (patrz specyfikacja
wyżej), wtedy wykonuje dokładnie jedną operację, w przypadku
operacji wyszukiwania wyświetla wynik na wyjściu, i kończy,
sygnalizując statusem poprawność operacji,
- aplikację można wywołać bez żadnych argumentów, i wtedy działa
interakcyjnie, pozwalając użytkownikowi wybierać operacje z menu,
- dane przechowywane w plikach tekstowych, z możliwością edycji
zewnętrznym edytorem oraz przeglądania narzędziami takimi jak grep
albo awk,
- należy zadbać o przenośność na poziomie Bourne shella (/bin/sh w
Solarisie) i podstawowym zestawie narzędzi Uniksowych,
- priorytetem jest minimalizm aplikacji - kompromis pomiędzy
funkcjonalnością a prostotą należy rozstrzygać na korzyść prostoty.
Zwróć uwagę: kluczowy może się okazać projekt aplikacji. Na przykład,
czy należy tworzyć pliki kursów, które byłyby listami studentów i
zaliczeń z danego kursu (być może z oddzielnym plikiem z listą
wszystkich studentów). Czy też lepiej tworzyć pliki studentów, z
których każdy zawierałby listę kursów i zaliczeń danego studenta (być
może z dodatkowym plikiem deklaracji istniejących kursów). Możliwe
jest również zapisanie wszystkiego w jednym pliku.
Rozważ możliwość współbieżności danej aplikacji (czyli możliwości
wykonywania jednocześnie wielu instancji) - jak ją zapewnić? Czy
będzie praktyczna?