1. Projekt konceptualny
1.1 Sformułowanie zadania projektowego
System biblioteki publicznej ma na celu ułatwienie dostępu do informacji na temat posiadanych przez bibliotekę zasobów jakimi są książki. Za pośrednictwem strony internetowej czytelnik nie będzie mógł wypożyczyć książki, cały czas będzie musiał zgłosić się po nią osobiście. Zarejestrowany czytelnik dzięki takiemu systemowi dowie się czy egzemplarz danej książki jest aktualnie na stanie czy został wypożyczony i kiedy najwcześniej będzie z powrotem w bibliotece. Czytelnik otrzymuje również możliwość terminowej rezerwacji książki, tak aby w swoim wolnym czasie bez obaw udać się tylko po odbiór i nie zostać odesłanym z kwitkiem. Internetowy dostęp do biblioteki umożliwia dodatkowo użytkownikom wgląd w dokonane rezerwacje i wypożyczenia, oraz w archiwum wypożyczeń. Ułatwia to kontrolę nad terminami zwrotów wypożyczonych pozycji. Aby uzyskać dostęp do wszystkich udogodnień czytelnik musi przejść proces rejestracji.
Tym sposobem biblioteka gromadzi potrzebne dane osobowe oraz kontaktowe w celu kontaktowania się z czytelnikami nie dotrzymującymi terminów zwrotu książek. Udzielenie ostrzeżenie użytkownikowi zwracającemu książkę po terminie, blokady po przekroczeniu maksymalnej liczby rezerwacji/wypożyczeń, oraz system informujący czytelników o mijających terminach poprzez kontakt na podany podczas rejestracji adres email to operacje wykonywane automatycznie w ramach pracy systemu. System taki nie zastąpi jednak człowieka w pracy. Cały czas w bibliotece potrzebna będzie osoba która wyda czytelnikowi książkę. Same książki również muszą być do bazy wprowadzane gdyż zbiory biblioteki nieustannie ulegają zmianom. Pracownik biblioteki kontroluje poprawność danych za pomocą możliwości ich edycji, zarówno w przypadku książek jak i czytelników. Fizycznie oceniając stan książki ma możliwość wycofania jej z ogólnodostępnych danych tak aby nie były zwracane jako wynik wyszukiwania żądanej pozycji.
1.2 Analiza stanu wyjściowego
Oprogramowanie biblioteki jest popularnym tematem. Na rynku istnieje wiele rozwiązań, umożliwiających przeglądanie w trybie online zbiorów bibliotek, natomiast zbiory elektroniczne są jeszcze bardzo ograniczone. Niewiele bibliotek posiadających znaczne zbiory, posiada możliwość zarezerwowania książki poprzez stronę internetową. Nasza biblioteka internetowa ma za zadanie ułatwić czytelnikowi rezerwację książki oraz kontrolę swoich wypożyczeń z dowolnego miejsca z dostępem do internetu.
1.3 Analiza wymagań użytkownika
1. Gość
2. Konto zarejestrowanego użytkownika (czytelnika)
rejestracja użytkownika poprzez stronę internetową (wypełnienie danych teleadresowych)
możliwość zalogowania się do systemu
możliwośc rezerwacji książek
przeglądanie własnego konta w bibliotece, w tym dokonanych wypożyczeń oraz rezerwacji
możliwość aktualizacji danych
powiadomienie o mijającym terminie oddania książki
przeszukiwanie zbiorów bibliotecznych
3. Konto pracownika biblioteki
administracja zasobami (dodawanie, usuwanie, edycja pozycji)
administracja kontami użytkowników (blokada kont, rezerwacje , wypożyczenia)
nakładanie kar pieniężnych
4. Konto administratora
1.4 Określenie scenariuszy użycia
1. Rejestracja użytkownika w systemie
a. Użytkownik na głównej stronie wybiera link „zarejestruj się”
b. Następuje przekierowanie do strony z formularzem rejestracyjnym
c. Użytkownik wypełnia formularz danymi, adres e-mail, hasło, imię, nazwisko, adres zamieszkania, telefon oraz pesel
d. Następuje walidacja formularza
i. W przypadku kiedy któreś z pól jest puste, bądź telefon lub pesel są za długie lub krótkie następuje wyświetlenie informacji o błędzie
ii. W przypadku kiedy formularz został poprawnie wypełniony następuje przejście dalej
e. Konto użytkownika zostaje założone
2. Logowanie użytkownika do systemu
a. Niezalogowany użytkownik na dowolnej stronie do której ma dostęp posiada wyświetlony formularz logowania
b. Użytkownik wypełnia formularz adresem e-mail oraz hasłem
c. Następuje weryfikacja danych
i. W przypadku kiedy podano błędny e-mail lub hasło następuje wyświetlenie informacji o błędzie autentykacji i przekierowanie na stronę z formularzem do logowania
ii. W przypadku kiedy dane są poprawne następuje zalogowanie użytkownika do systemu i przekierowanie na stronę główną
3. Przeglądanie konta użytkownika
a. Zalogowany użytkownik znajduje się na stronie głównej i wybiera link „zobacz swój profil”
b. Użytkownik zostaje przekierowany na stronę wyświetlającą jego aktualne dane
c. Wyświetlone zostają również rezerwację użytkownika oraz aktualne wypożyczenia
4. Edycja konta użytkownika
a. Zalogowany użytkownik znajduje się na stronie głównej i wybiera link „zobacz swój profil”
b. Następuje przekierowanie na stronę wyświetlająca dane użytkownika
c. Użytkownik klika na przycisk „edytuj”
d. Następuje przekierowanie do strony z formularzem
e. Użytkownik zmienia dane, adres, numer telefonu, imię lub nazwisko
f. Następuje walidacja formularza
i. W przypadku gdy któreś z pól jest puste zostaje wyświetlony komunikat o błędnym wypełnieniu formularza
ii. W przypadku gdy dane są poprawne następuje aktualizacja danych i przekierowanie do strony wyświetlającej profil użytkownika
5. Powiadomienie o mijającej dacie zwrotu książki
a. System codziennie o godzinie 3.00 sprawdza czy istnieją wypożyczenia, których data zwrotu kończy się za 2 dni.
i. W przypadku braku takich wypożyczeń nic się nie dzieje
ii. W przypadku gdy istnieją takie wypożyczenia, zostaje wysłana informacja do danych użytkownikó poprzez wiadomość e-mail
6. Dodanie nowej pozycji do zbiorów biblioteki
a. Zalogowany pracownik biblioteki znajduje się na stronie głównej i wybiera link „administracja książkami”
b. Następuje przekierowanie do strony z panelem administracyjnym, gdzie znajduje się m. in. formularz do dodawania nowych książek
c. Pracownik biblioteki wypełnia dane, tytuł książki, autorów, ISBN, ilość kopii oraz rok publikacji
d. Następuje walidacja formularza
i. W przypadku gdy któreś z pól jest puste bądź podano ujemną ilość kopii lub ISBN nie składający się z cyfr zostaje wyświetlony komunikat o błędzie
ii. W przypadku gdy dane są poprawne następuje przejście dalej
e. Książka zostaje dodana do zbiorów biblioteki
f. Pracownik biblioteki zostaje przekierowany z powrotem do panelu administracji książkami
7. Edycja/Usunięcie pozycji ze zbiorów biblioteki
a. Zalogowany pracownik biblioteki znajduje się na stronie administracji książkami
b. Wpisuje do formularza (wyszukującego książki) dane poszukiwanej książki
c. Następuje przekierowanie do strony z wynikami wyszukiwania
i. Pracownik biblioteki klika na przycisk „usuń” obok pozycji
1. Książka zostaje usunięta z bazy danych
2. Następuje przekierowanie do strony administracji książkami
ii. Pracownik biblioteki klika na przycisk „edytuj” obok pozycji
1. Następuje przekierowanie do strony z formularzem
2. Pracownik biblioteki wprowadza dane aktualizacji książki, tytuł, ISBN, rok publikacji oraz ilość kopii
3. Następuje walidacja formularza
a. W przypadku gdy któreś z pól jest puste lub ISBN nie składa się z samych cyfr lub ilość kopii jest mniejsza niż ilość wypożyczeń danej książki następuje wyświetlenie informacji o błednych danych
b. W przypadku gdy dane są poprawne następuje aktualizacja danych i przekierowanie do strony administracji książkami
8. Blokowanie konta użytkownika
a. Zalogowany pracownik biblioteki znajduje się na stronie głównej i wybiera link „administracja czytelnikami”
b. Zostaje przekierowany do strony z formularzem wyszukiwania użytkowników
c. Wypełnia formularz
d. Następuje przekierowanie do strony z wynikami wyszukiwania
e. Pracownik biblioteki klika na przycisk „zablokuj konto” obok konta użytkownika
f. Konto użytkownika zostaje zablokowane
g. Do użytkownika zostaje wysłana wiadomość e-mail informująca o zablokowaniu konta
9. Przeszukiwanie zbiorów bibliotecznych
a. Niezalogowany użytkownik znajduje się na głównej stronie i wybiera link „wyszukaj książkę”
b. Następuje przekierowanie do formularza wyszukiwania
c. Użytkownik wpisuje dane wg. których ma nastąpić wyszukiwanie, może to być tytuł lub jego fragment, autor, rok wydania lub ISBN
d. Następuje walidacja formularza
i. W przypadku gdy żadne pole nie jest wypełnione następuję wyświetlenie informacji o konieczności wypełnienia przynajmniej jednego pola
ii. W przypadku gdy wypełniono chociaż jedno pole następuję przekierowanie do strony z wynikami wyszukiwania
10. Zarezerwowanie książki
a. Zalogowany użytkownik znajduje się na stronie z wynikami wyszukiwania książki i klika przycisk „zarezerwuj”
b. Następuje przekierowanie do strony wyświetlającej dane książki oraz formularz do wpisania daty zgłoszenia się po odbiór książki
i. W przypadku gdy aktualnie nie ma żadnego wolnego egzemplarza, zostaje wyświetlona informacja kiedy powinny pojawić się oddane egzemplarze
1. Użytkownik przekierowany jest do strony wyszukiwania książek
ii. W przypadku gdy istnieją wolne egzemplarze użytkownik wypełnia formularz
iii. Następuje walidacja formularza
1. W przypadku gdy data odbioru jest pusta lub użytkownik wyznaczył ją dalej niż za 7 dni zostaje wyświetlona informacja o błędzie podczas rezerwacji lub niemożliwości rezerwacji książki na dłużej niż tydzień
2. W przypadku gdy dane się zgadzają następuje przejście dalej
iv. Rezerwacja zostaje zapisana w systemie
v. Użytkownik przekierowywany jest do strony wyszukiwania książek
11. Unieważnienie niesfinalizowanej rezerwacji
a. System codziennie o godzinie 3.00 sprawdza czy istnieją rezerwacje na dzień wcześniej
b. W przypadku gdy istnieją takie rezerwacje zostają one anulowane
c. Do użytkownika któremu anulowano rezerwację zostaje wysłana wiadomość e-mail
1.5 Identyfikacja funkcji
Podstawowe funkcje realizowane w bazie danych, to przechowywanie informacji o:
kontach użytkowników zarejestrowanych w bibliotece
kontach pracowników biblioteki
książkach znajdujących się w zbiorach biblioteki, powiązanych z autorami
autorach, powiązanych z książkami
egzemplarzach książek, powiązanych z konkretnymi pozycjami
wypożyczeniach książki, powiązanych z konkretnym egzemplarzem oraz z użytkownikiem, który wypożyczył daną książkę
rezerwacjach książki, powiązanych z egzemplarzem oraz użytkownikiem
1.6 Analiza hierarchii funkcji projektowanej aplikacji
Rys 1. Diagram FHD
1.7 Budowa i analiza diagramu przepływu danych
Rys 2. Diagram kontekstowy
Rys 3. Diagram główny
Rys 4. Diagram DFD dla użytkownika niezarejestrowanego
Rys 5. Diagram DFD dla użytkownika zarejestrowanego
Rys 6. Diagram DFD dla pracownika
1.8 Wybór encji(obiektów) i ich atrybutów
1. Czytelnik
e-mail
hasło
imię
nazwisko
telefon
pesel
adres
zarezerwowane książki
wypożyczone książki
2. Pracownik biblioteki
e-mail
hasło
imię
nazwisko
3. Książka
tytuł
autorzy
ISBN
rok wydania
egzemplarze
4. Autor
5. Egzemplarz książki
status wypożyczenia
książka
6. Rezerwacja książki
data rezerwacji
data odbioru książki
czytelnik
książka
7. Wypożyczenie książki
czytelnik
data wypożyczenia
data planowanego zwrotu
1.9 Projektowanie powiązań(relacji) pomiędzy encjami
Rys 7. Diagram ERD
1.10 Projekt diagramów STD (State transition Diagram – diagram przejść między stanami)
Rys 8. Diagram STD dla użytkownika niezalogowanego
Rys 9. Diagram dla użytkownika zalogowanego
Rys 10. Diagram STD dla pracownika
2. PROJEKT LOGICZNY
2.1. Projektowanie tabel, kluczy, kluczy obcych, powiązań między tabelami, indeksów, etc. W oparciu o zdefiniowany diagram ERD;
2.1.1 Utworzenie bazy danych.
create database if not exists Library default character set = utf8;
2.1.2 Utworzenie tabel.
use Library;
create table book
(
book_id int8 not null,
isbn varchar(255),
book_title varchar(255),
year_of_publication int8,
primary key (book_id)
);
create table authors
(
author_id int8 not null,
author_name varchar(255),
author_last_name varchar(255),
primary key (author_id)
);
create table reader
(
reader_id int8 not null,
address_apartment int4,
address_building int4,
address_city varchar(255),
address_street varchar(255),
email varchar(255) unique,
first_name varchar(255),
last_name varchar(255),
password varchar(255),
pesel varchar(255),
phone_number varchar(255),
role varchar(255),
primary key (reader_id)
);
create table library_worker
(
worker_id int8 not null,
email varchar(255) unique,
first_name varchar(255),
last_name varchar(255),
password varchar(255),
role varchar(255),
primary key (worker_id)
);
create table book_authors
(
book_id int8 not null,
author_id int8 not null
);
create table reservedBook
(
reservation_id int8 not null,
book_copy_id int8,
planned_reception_date timestamp,
reader_id int8,
reservation_date timestamp,
primary key(reservation_id)
);
create table BorrowedBook
(
borrow_id int8 not null,
book_copy_id int8,
borrow_date timestamp,
reader_id int8,
return_date timestamp,
primary key (borrow_id)
);
create table BookCopy
(
book_copy_id int8 not null,
book_id int8,
is_avaiable bool,
primary key (book_copy_id)
);
2.1.3 Utworzenie kluczy obcych
alter table BookAuthors
add constraint FK_Book_Author
foreign key (Book_id)
references Book
alter table BookAuthors
add constraint FK_Author_Book
foreign key (Autho_id)
references Author
alter table ReservedBook
add constraint FK_ReservedBook_BookCopy
foreign key (Book_copy_id)
references BookCopy
alter table ReservedBook
add constraint FK_ReservedBook _Reader
foreign key (Reader_id)
references Reader
alter table BorrowedBooks
add constraint FK_BorrowedBook_BookCopy
foreign key (Book_copy_id)
references BookCopy
alter table BorrowedBooks
add constraint FK_BorrowedBook _Reader
foreign key (Reader_id)
references Reader
alter table BookCopy
add constraint FK_BookCopy_Book
foreign key (Book_id)
references Book
2.2 Słownik danych
Book – tabela przechowująca dane o książkach
Book_id – PK , INTEGER - id ksiazki
Book_title - VARCHAR(255) , NOT NULL – tytuł książki
Isbn – VARCHAR(255) , NOT NULL – numer ISBN
Year_of_publication – INTEGER, NOT NULL – data publikacji
Author – tabela przechowywujące dane o autorach
Author_id – PK ,INTEGER – id autora
Author_name – VARCHAR(255) , NOT NULL – Imie
Author_last_name – VARCHAR(255) , NOT NULL - Nazwisko
Reader – tabela przechowujaca dane o użytkownikach
Reader_id – PK , INTEGER – id czytelnika
Email – VARCHAR(255) , NOT NULL , UNIQUE–unikalny adres email
Password – VARCHAR(255) , NOT NULL - hasło
First_name – VARCHAR(255) , NOT NULL - imie
Last_name – VARCHAR(255) , NOT NULL - nazwisko
Pesel - – VARCHAR(255) , NOT NULL –numer pesel
Phone_number – VARCHAR(255) – numer telefonu
Address_apartment – INTEGER – numer mieszkania
Addres_building – INTEGER , NOT NULL – numer budynku
Address_city - – VARCHAR(255) , NOT NULL - miasto
Adress_street – VARCHAR(255)– nazwa ulicy
LibraryWorker – tabela przechowująca dane o pracownikach
Worker_id – PK INTEGER – id pracownika
First_name – VARCHAR(255) , NOT NULL - imie
Last_name – VARCHAR(255) , NOT NULL - nazwisko
Email – VARCHAR(255) , NOT NULL , UNIQUE - unikalny adres email
Password – VARCHAR(255) , NOT NULL - hasło
BookAuthors - tabela dla relacji wiele do wielu
Author_id – FK , INTEGER - id autora
Book_id – FK, INTEGER – klucz obcy do id ksiazki
ReservedBook – tabela przechowująca dane o rezerwacjach
Reserved_book_id – PK , INTEGER - id rezerwacj
Book_copy_id – FK , INTEGER - klucz obcy do id ksiazki
Reader_id – FK , INTEGER – klucz obcy do id czytelnika
Reservation_date – DATE , NOT NULL - data rezerwacji
Planned_reception_date – DATE , NOT NULL – data konca rezerwacji
BorrowedBook – tabela przechowująca dane o wypożyczeniach
Borrowed_book_id – PK , INTEGER – id wypozyczenia
Book_copy_id – FK ,INTEGER – klucz obcy do id ksiazki
Borrow_date – DATE , NOT NULL – data wypożyczenia
Return_date – DATE , NOT NULL – data zwrotu
Reader_id – FK , INTEGER – klucz obcy do Id czytelnika
BookCopy – tabela przechowująca dane o egzemplarzach
Book_copy_id – PK , INTEGER – id egzemplarza
Book_id – FK , INTEGER – klucz obcy do opisu ksiazki
Borrow status – VARCHAR(255),NOT NULL – status egzemplarza
2.3. Analiza zależności funkcyjnych i normalizacja tabel
1NF
Relacja jest w pierwszej postaci normalnej (1NF) wtedy i tylko wtedy gdy wszystkie atrybuty przyjmują wartości elementarne (atomiczne). Atomowość danych jest ściśle powiązana z ich typem (nazwanym i skończonym zbiorem wartości). Pierwsza postać normalna jest konieczna, aby tabelę można było nazwać relacją.
Nasza baza spełnia te warunki. Wszystkie wartości w tabelach są atomowe.
2NF
Relacja R jest w drugiej postaci normalnej (2NF) wtedy i tylko wtedy, gdy nie zawiera zależności częściowych, tzn. żadna zależność częściowa nie wynika logicznie ze zbioru F.
Wszystkie tabele w naszej bazie posiadają klucz prosty, więc ich atrybuty zależą w całości od klucza głównego. Baza jest w 2NF.
3NF
Relacja jest w trzeciej postaci normalnej tylko wtedy, gdy jest w drugiej postaci normalnej i każdy atrybut wtórny jest tylko bezpośrednio zależny od klucza głównego. Innymi słowy wymaga usunięcia wszelkich pól niezwiązanych z kluczem głównym.
Z powodu, że każda tabela w naszej bazie posiada klucz prosty, jej atrybuty są w całości zależne od klucza głównego. Więc warunek postaci 3NF jest również spełniony.
2.4. Projektowanie operacji na danych
Operacje na bazie danych wykonujemy za pomocą języka HQL. Zapytania HQL reprezentowane są przez obiekty klasy org.hibernate.Query , które należy zawsze tworzyć z użyciem obiektu reprezentującego sesję. Obiekt org.hibernate.Query umożliwia przekazanie parametrów do utworzonego zapytania.
Pobierz dla podanego id użytkownika wszystkie zarezerwowane książki :
private final static String HQL_GET_RESERVED_BOOKS_FOR_READER = "from ReservedBook where readerId = : readerId";
Query query = session.createQuery(HQL_GET_RESERVED_BOOKS_FOR_READER);
query.setLong("readerId", readerId);
return query.list();
Znajdź pracownika po wskazanym adresie email :
private static final String HQL_FIND_LIBRARY_WORKER_BY_EMAIL = "from LibraryWorker where email = :email";
Query query = session.createQuery(HQL_FIND_LIBRARY_WORKER_BY_EMAIL);
query.setString("email", email);
return (LibraryWorker) query.uniqueResult();
Pobierz egzemplarz książki po wskazanym id:
private String HQL_GET_BOOK_COPY_FOR_BOOK_ID = "from BookCopy where bookId = :bookId";
Query query = session.createQuery(HQL_GET_BOOK_COPY_FOR_BOOK_ID);
query.setLong("bookId", bookId);
return (BookCopy) query.uniqueResult();
3. Raport końcowy
3.1 Implementacja bazy danych
Wykorzystano serwer PostgreSQL 8.4. Utworzenie bazy danych zostało zautomatyzowane poprzez wykorzystanie narzędzia maven.
3.2 Zdefiniowanie interfejsów do prezentacji, edycji i obsługi danych
Rys 11 Strona główna
Rys 12 Formularz rejestracyjny
Rys 13 Formularz logowania
Rys 14 Podgląd profilu użytkownika
Rys 15 Formularz do edycji profilu użytkownika
Rys 16 Podgląd rezerwacji użytkownika
Rys 17 Podgląd wypożyczeń użytkownika
Rys 18 Wyszukiwanie książek
Rys 19 Podgląd wybranej pozycji
Rys 20 Formularz do dodawania nowej pozycji
Rys 21 Widok książki z poziomu pracownika
Rys 22 Ekran wypożyczenia bądz anulowania rezerwacji
Rys 23 Dokonywanie zwrotu z poziomu pracownika
3.3 Zdefiniowanie panelu sterowania aplikacji
Nawigacja odbywa się jak w klasycznych stronach internetowych za pomocą linków oraz przycisków. Na stronie została zastosowana technologia AJAX. Strona w zależnośći od tego, kto jest zalogowany umożliwia różne akcje. W przypadku niezalogowanego użytkownika umożliwa logowanie, rejestrację oraz przegląd książek. Zalogowany użytkownik może się wylogować, zobaczyć swoje dane w systemie, część z nich może sam edytować. Ponadto ma możliwość obejrzenia swoich rezerwacji oraz wypożyczeń zapisanych w systemie. Podczas wyszukiwania książek oraz przeglądania konkretnych pozycji użytkownik może zobaczyć ilość dostępnych egzemplarzy i ewentualnie zarezerwować jeden dla siebie. W przypadku zalogowanego pracownika biblioteki ma on możliwość dodawania, edytowania oraz usuwania książek, dokonywania wypożyczeń, przyjmowania zwrotów oraz anulowania rezerwacji.
3.4 Zdefiniowanie makropoleceń dla realizacji typowych operacji
W projekcie wykorzystano framework do realizacji mapowania obiektowo-relacyjnego Hibernate z wykorzystaniem adnotacji. Większość operacji CRUD, które zostały użyte w aplikacji, zostały dostarczone poprzez Hibernate.
3.5 Uruchamianie i testowanie aplikacji
Aplikacja jest uruchamiana przy wykorzystaniu narzędzia Maven. Odpowiednio skonfigurowane pluginy uruchamiają serwer www z kontenerem servletów Jetty i uruchamiają plik .war. Strona testowana była ręcznie na środowisku lokalnym.
3.6 Wprowadzanie danych
Wprowadzenie danych testowych zostało zautomatyzowane poprzez plugin dbunit do narzędzia Maven. Przygotowano odpowiedni plik xml z którego zostały wczytane przykładowe dane do bazy danych. Część danych została wprowadzona poprzez formularze aplikacji.
3.7 Wdrażanie systemu do użytkowania
Do wdrożenia systemu potrzebny jest serwer www oraz serwer bazy danych postgres. Należy dostosować plik konfiguracyjny maven'a do adresu serwerów i za pomocą odpowiedniej komendy uruchomić kompilację oraz uruchomienie aplikacji.
3.8 Przeprowadzenie szkolenia użytkowników
Strona nie powinna przysparzać rzadnych problemów zwykłym użytkownikom internetu, dlatego nie przewidziano szkoleń.
3.9 Zapewnienie dokumentacji technicznej i użytkowej
Nie zapewniono dokumentacji ze względu na prostotę strony internetowej
3.10 Zapewnienie obsługiwania systemu po wdrożeniu
Po wdrożeniu potrzebny jest administrator systemu, który będzie dbał o robienie systematycznych backupów bazy danych oraz rozwiązywał nieoczekiwane problemy z serwerem.
3.11 Rozwijanie i modyfikowanie aplikacji
Przede wszystkim aplikacja potrzebuje szaty graficznej, najlepiej przygotowanej przez doświadczonego grafika stron internetowych. Do aplikacji można dodać wiele nowych funkcjonalności, takich jak dostęp do e-booków, bądź bardziej zaawansowane wyszukiwanie książek. Ewentualnie umieszczenie fragmentów książek na stronie i możliwość wyszukiwania pozycji po treści książki.
3.12 Opracowanie doświadczeń wynikających z realizacji projektu
Niestety nie prowadziliśmy notatek odnośnie czasu spędzonego nad poszczególnymi zadaniami. Na pewno projekt pozowlił nam na douczenie się w zakresie technologii związanych z językiem Java. Jeden z nas poznał część bibliotek od nowa, natomiast drugi podszkolił się w bardziej zaawansowanych technologicznie fragmentach kodu.
Na pewno tym co nie wyszło nam tak jak planowaliśmy jest organizacja pracy, w tej kwestii potrzebujemy więcej doświadczenia. Aplikacja również nie jest idealnie dopracowana, co widać chociażby po szacie graficznej.
3.13 Wykaz literatury, załączniki
Wykorzystane technologie:
Spring
Spring MVC
Spring-Security
Hibernate
Maven
JSP
PostgreSQL
Jetty
Wykorzystano dokumentację zamieszczone na stronach:
projekt_library.pdf