PROJEKT KONCEPTUALNY
Aplikacja webowa „Wirtualny zeszyt laboratoryjny” będzie umożliwiała dokumentację pracy w laboratorium biologiczno-chemicznym. Każdy eksperyment będzie należał do zdefiniowanej dziedziny, np. mikrobiologia, nanotechnologia czy reakcje zwierząt na podawane substancje. Dziedziny mogą być zarządzane tylko przez kadrę kierowniczą laboratorium. Pracownicy laboratorium będą mogli zakładać swoje projekty pod danym kierunkiem badań, dajmy na to w sekcji mikrobiologia można prowadzić badania nad szczepionką grypy. Do projektów zostaną przypisane dzienniki (logi), w których możliwy będzie zapis obserwacji, wyników i wniosków, a także ich edycja, o ile użytkownik będzie miał nadane do tego prawo. Każdy eksperyment będzie miał swój status (nowy, realizowany, udany, nieudany, zamknięty). Pracownicy będą mogli przypisywać eksperymentom załączniki w formie różnych plików (zdjęcia, pliki tekstowe, pliki binarne, arkusze kalkulacyjne) oraz próbek do płytek laboratoryjnych. Każdy projekt będzie można powiązać z innym oraz wydzielić podzagadnienia (podprojekty). Oprócz dokumentacji system powinien wykazywać na podstawie wyników poszczególnych badań, która gałąź rozwoju (dziedzina) ma najlepsze osiągnięcia, co pozwoli na sugerowanie kadrze kierowniczej kierunku badań następnych eksperymentów, czyli w co najopłacalniej inwestować.
2. Analiza stanu wyjściowego.
W sieci istnieje wiele projektów, które umożliwiają prowadzenie dokumentacji prac nad pewnymi zagadnieniami.
Jednym z bardziej znanych jest External Link, na którym będziemy się lekko wzorować.
System Redmine pozwala na wystawianie nowych zadań, w których możemy dokładniej opisać problem, wyszacować czas realizacji,
przypisać do konkretnej osoby, zmieniać status, prowadzić dziennik itp.
3. Analiza wymagań użytkownika (wstępna).
Dostęp do systemu Zeszytu laboratoryjnego będzie ściśle prywatny, tzn. osoby z zewnątrz, niepracujące w laboratorium nie będą miały do niego dostępu. Użytkowników naszego systemu można z grubsza podzielić na 2 grupy: kadrę kierowniczą oraz kadrę pracowniczą.
a) kadra kierownicza:
- kierownik – ma prawa do zakładania nowych dziedzin (kierunków badań) i ich edycji. Może dodawać i zarządzać projektami. Do najważniejszych jego funkcji wchodzi prawo do zakładania nowych kont dla pracowników i nadawaniu im praw.
b) kadra pracownicza:
- pracownik-manager - ma prawo do zakładania i zarządzania projektami z dziedziny, do której jest przypisany.
- pracownik – ma prawo do zarządzania projektami, do których jest przypisany. Poprzez zarządzanie projektem mamy na myśli prowadzenie dziennika, dodawanie materiałów do projektu, zarządzanie statusem.
4. Określenie scenariuszy użycia:
Logowanie użytkownika
Jedynym sposobem dostępu do serwisu jest zalogowanie. Pracownicy logują się na swoje konto. Po wprowadzeniu swojego loginu i hasła pracownik zostaje przekierowany na stronę panelu użytkownika.
Panel dostępu różni się funkcjonalnością w zależności od pozycji pracownika w hierarchii firmy (pracownik, manager, kierownik).
Możliwości pracownika:
Dane osobowe - Możliwość podglądu/edycji swoich danych osobowych. Funkcjonalność możliwa do osiągnięcia poprzez:
Lista projektów - Wyświetla listę projektów w których uczestniczy. Funkcjonalność dostępna z panelu operacyjnego
Edytuj wpis - Funkcjonalność dostępna podczas przeglądaniu swoich wpisów.
Dodaj wpis - Możliwe podczas przeglądania dziennika.
Edytuj projekt - Możliwe podczas przeglądania projektu lub podglądu projektu. Edycja polega na zmianie statusu
Możliwości managera:
Dane osobowe - tak jak pracownik
Lista projektów - wyświetla listę projektów ze swojej specjalizacji. Funkcjonalność dostępna z panelu operacyjnego.
Edytuj wpis - Funkcjonalność dostępna podczas przeglądaniu swoich wpisów.
Dodaj wpis - Możliwe podczas przeglądania dziennika.
Edytuj projekt - Możliwe podczas przeglądania projektu lub podglądu projektu.
Dodaj/Usuń projekt - dostępne z panelu operatorskiego. Możliwość dodania nowego projektu w wybrane miejsce w hierarchii.
Usuń wpis - Możliwe podczas przeglądania dziennika. Możliwość usuwania wpisów innych pracowników.
Możliwości kierownika:
Dane osobowe - tak jak kierownik
Lista projektów - wyświetla listę wszystkich projektów. Funkcjonalność dostępna z panelu operacyjnego.
Edytuj wpis - Funkcjonalność dostępna podczas przeglądaniu swoich wpisów.
Dodaj wpis - Możliwe podczas przeglądania dziennika.
Edytuj projekt - Możliwe podczas przeglądania projektu lub podglądu projektu.
Dodaj/Usuń projekt - dostępne z panelu operatorskiego. Możliwość dodania nowego projektu w wybrane miejsce w hierarchii.
Dodawanie/usuwanie/edytowanie kont wszystkich pracowników. Dostępne z listy pracowników, którą można przeglądać poprzez panel operatorski.
Usuń wpis - Możliwe podczas przeglądania dziennika. Możliwość usuwania wpisów innych pracowników.
5. Identyfikacja funkcji:
dodawanie/edycja/usuwanie pracownikow dla kierowników
logowanie
podgląd/edycja danych osobowych użytkownika
dodawanie dziedziny
wylistowanie dostępnych dla użytkownika projektów
wyświetlenie profilu projektu
dodawanie/edytowanie/usuwanie projektu
podgląd pracowników przypisanych do projektu
dodawanie/edytowanie/usuwanie wpisów dziennika
dodawanie/usuwanie zasobów projektu
6. Analiza hierarchii funkcji projektowanej aplikacji:
7. DFD – opcjonalnie: Budowa i analiza diagramu przepływu danych
8. Wybór encji (obiektów) i ich atrybutów. Relacje:
WORKER_STATUS
RESEARCH_PATHS
PROJECT_STATUS
PROJECTS
id INTEGER UNSIGNED (primary key)
name VARCHAR
description TEXT
creation_date DATE
project_status_id INTEGER (foregin key)
research_paths_id INTEGER (foregin key)
workers_id INTEGER (foregin key)
WORKERS
id INTEGER UNSIGNED (primary key)
login VARCHAR
passwd CHAR(40)
name VARCHAR
surname VARCHAR
email VARCHAR
birthday DATE
address TEXT
phone_number VARCHAR
title VARCHAR
research_paths_id INTEGER UNSIGNED (foregin key)
worker_status_id INTEGER UNSIGNED (foregin key)
PROJECT_LOGS
id INTEGER UNSIGNED (primary key)
workers_id INTEGER UNSIGNED (foregin key)
projects_id INTEGER UNSIGNED (foregin key)
date DATE
observations TEXT
conclusions TEXT
scores_id INTEGER UNSIGNED (foregin key)
RESOURCES
SCORES
PROJECTS_HAS_RESOURCES
PROJECTS_HAS_WORKERS
9. Projekt diagramów STD:
PROJEKT LOGICZNY
Diagram ERD przedstawiający schematy tabel (wraz z atrybutami) i związki pomiędzy nimi w notacji Barkera/Oracle:
Tablica krzyżowa
Projekt bazy w języku SQL (DDL)
CREATE TABLE WORKER_STATUS (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR NOT NULL,
PRIMARY KEY(id),
);
CREATE TABLE RESEARCH_PATHS (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR NOT NULL,
description TEXT,
PRIMARY KEY(id)
);
CREATE TABLE PROJECT_STATUS(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR NOT NULL,
PRIMARY KEY(id),
);
CREATE TABLE PROJECTS (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR NOT NULL,
description TEXT,
creation_date DATE NOT NULL,
project_status_id INTEGER UNSIGNED,
research_paths_id INTEGER UNSIGNED,
workers_id INTEGER UNSIGNED,
PRIMARY KEY(id),
FOREIGN KEY (project_status_id) REFERENCES PROJECT_STATUS (id),
FOREIGN KEY (research_paths_id) REFERENCES RESEARCH_PATHS (id),
FOREIGN KEY (workers_id) REFERENCES WORKERS (id)
);
CREATE TABLE WORKERS (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
login VARCHAR NOT NULL,
passwd CHAR(40),
name VARCHAR NOT NULL,
surname VARCHAR NOT NULL,
email VARCHAR,
birthday DATE,
address TEXT,
phone_number VARCHAR,
title VARCHAR,
research_paths_id INTEGER UNSIGNED,
worker_status_id INTEGER UNSIGNED,
PRIMARY KEY(id),
FOREIGN KEY (research_paths_id) REFERENCES RESEARCH_PATHS (id),
FOREIGN KEY (worker_status_id) REFERENCES WORKERS (id)
);
CREATE TABLE PROJECT_LOGS (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
workers_id INTEGER UNSIGNED,
projects_id INTEGER UNSIGNED,
date DATE,
observations TEXT,
conclusions TEXT,
scores_id INTEGER UNSIGNED,
PRIMARY KEY(id),
FOREIGN KEY (workers_id) REFERENCES WORKERS (id),
FOREIGN KEY (projects_id) REFERENCES PROJECTS (id),
FOREIGN KEY (scores_id) REFERENCES SCORES (id),
);
CREATE TABLE RESOURCES(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
url VARCHAR NOT NULL,
PRIMARY KEY(id),
);
CREATE TABLE SCORES(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
score INTEGER NOT NULL,
PRIMARY KEY(id),
);
CREATE TABLE PROJECTS_HAS_RESOURCES(
projects_id INTEGER UNSIGNED,
resources_id INTEGER UNSIGNED,
FOREIGN KEY (projects_id) REFERENCES PROJECTS (id),
FOREIGN KEY (resources_id) REFERENCES RESOURCES (id),
);
CREATE TABLE PROJECTS_HAS_WORKERS(
projects_id INTEGER UNSIGNED,
workers_id INTEGER UNSIGNED,
FOREIGN KEY (projects_id) REFERENCES PROJECTS (id),
FOREIGN KEY (workers_id) REFERENCES WORKERS (id),
);
Słowniki danych
dozwolony-znak-alf = [ A-Z | a-z | - | ] dozwolony-znak-alfnum = [ A-Z | a-z | - | 1-9 | ]
Ścieżki rozwoju (RESEARCH PATHS):
Nazwa (name) – nazwa dziedziny badań
Opis – krótki opis dziedziny badań, czyli specyfikacja jakimi ogólnie tematami zajmują się pracownicy tej dziedziny
Projekty (PROJECTS):
Nazwa (name) – krótka nazwa projektu.
Opis (description) – opis projektu, czyli co dokładnie jest w nim realizowane i jakich rezultatów się spodziewamy
Data utworzenia (creation_date) – data dodania projektu do wirtualnego zeszytu laboratoryjnego
Dziedzina badań (relacja z RESEARCH_PATHS) – dziedzina badań, pod którą realizowany jest projekt.
Autor projektu (relacja bezpośrednia z WORKERS) – pracownik, który utworzył projekt.
Przypisani pracownicy (relacja z PROJECT_HAS_WORKERS) – do projektu mogą być przypisani przez kierownika lub managera pracownicy, dzięki czemu mają oni do niego dostęp, mogą dodawać wpisy do dziennika projektu, a także edytować projekt.
Przypisane zasoby (relacja z PROJECT_HAS_RESOURCES) – do projektu możemy dodawać zasoby w formie adresów URL plików (obrazki, arkusze kalkulacyjne, płytki badawcze), które są w internecie lub serwerze lokalnym.
Status projektu (relacja z PROJECT_STATUS):
statusu projektu. Będą to: „Nowy”, „W realizacji”, „Zawieszony”, „Zakończony sukcesem”, „Zakończony niepowodzeniem” (lub inne, zdefiniowane przez odbiorcę).
Pracownicy (WORKERS):
Jest to tabela wszystkich pracowników, a zarazem wszystkich użytkowników systemu.
Login (login) – nazwa użytkownika w systemie, za pomocą której będzie mógł przejść przez etap uwierzytelniania. Login jest definiowany przez kierownika przy tworzeniu nowego konta.
Hasło dostępu (passwd) – przy uwierzytelnianiu użytkownik musi podać nie tylko swój login, ale także tajne hasło. Hasło jest generowane przez kierownika przy tworzeniu nowego konta. Użytkownik po zalogowaniu może je zmienić.
Imię (name) – imię pracownika.
Nazwisko (surname) – nazwisko pracownika.
Adres e-mail (email) – kontakt e-mailowy, za pomocą którego możemy korespondować z pracownikiem.
Data urodzin (birthday) – data urodzenia pracownika.
Adres zamieszniania (address) – dokładny adres zamieszkania pracownika.
Numer telefonu (phone_number) – numer (bądź numery) telefonu(/ów) do pracownika. Jeśli jest ich więcej niż jeden, to należy je wymieniać po przecinku.
Tytuł (title) – tytuł naukowy pracownika (np. inż., mgr, wykształcenie średnie).
Dziedzina badań (relacja z RESEARCH_PATHS) – referencja do dziedziny badań, w której pracownik się specjalizuje. Zdefiniowanie tej dziedziny rzutuje na możliwości managera lub pracownika w systemie. Za sprawą tego atrybutu zyskują prawa dostępu – manager do wszystkich projektów ze swojej dziedziny; pracownik do projektów ze swojej dziedziny, do których jest przypisany).
Stanowisko pracownika (relacja z WORKER_STATUS) – nazwa stanowiska pracownika. Będą to: „Kierownik”, „Manager”, „Pracownik”
Wpisy do dziennika projektu (PROJECT_LOGS):
Autor wpisu (relacja z WORKERS) – pracownik, który dokonał wpisu do dziennika
Data (data) – data utworzenia wpisu
Obserwacje (observations) – obserwacje w wnioski pracownika, który dokonuje wpis, na temat eksperymentu.
Wnioski (conclusions) – wnioski wysnute przez dokonującego wpis na podstawie obserwacji
Wynik (relacja ze SCORES) - liczba od 1 do 10, która jest dopisywana przy każdym wpisie i wyraża stopień satysfakcji realizacji projektu. Średnia arytmetyczna wyników ze wszystkich wpisów dziennika projektu jest wyświetlana w podglądzie projektu. Jest to najprostszy system oceny rezultatów projektów, dzięki czemu można wprowadzić system wspomagania podejmowania decyzji, w które ścieżki badań najlepiej inwestować.
Analiza zależności funkcyjnych i normalizacja tabel
Dane we wszystkich tabelach są atomiczne, wszystkie atrybuty są kluczowe oraz nie ma zależności tranzytywnych. Przeprowadziliśmy normalizację 1NF, 2NF, 3NF zgodnie z algorytmem podanym na wykładzie.
Projektowanie operacji na danych
Dodawanie nowego pracownika przez kierownika:
Walidacja, czy użytkownik o podanym loginie już istnieje:
SELECT * FROM WORKERS
WHERE login = login_new;
Jeśli zapytanie zwróci 0 rekordów to dodajemy użytkownika:
INSERT INTO WORKERS(login, passwd, name, surname, research_status_id, worker_status_id)
VALUES (login_new, passwd_new, name_new, surname_new, research_status_id_new, worker_status_id_new);
Kierownik nie uzupełnia na tym etapie danych szczegółowych pracownika.
Edycja konta:
UPDATE WORKERS
SET passwd = passwd_new,
name = name_new,
surname = surname_new,
email = email_new,
birthday = birthday_new,
address = address_new,
phone_number = phone_number_new,
title = title_new,
WHERE login = login_new
Usuwanie konta:
DELETE FROM WORKERS
WHERE login = login_new
Lista projektów:
SELECT name FROM PROJECTS
ORDER BY research_paths_id ASC
SELECT name FROM PROJECTS
WHERE research_path_id = manager.research_path_id
SELECT p.name FROM PROJECTS p
JOIN PROJECTS_HAS_WORKERS phw ON phw.projects_id = p.id
WHERE phw.workers_id = user_id
RAPORT KONCOWY
- Implementacja bazy danych
CREATE TABLE IF NOT EXISTS `projects` (
`id` INT(16) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`description` text NOT NULL,
`creation_date` DATE NOT NULL,
`project_status_id` INT(16) UNSIGNED NOT NULL DEFAULT '1',
`research_paths_id` INT(16) UNSIGNED NOT NULL,
`workers_id` INT(16) UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
KEY `project_status_id` (`project_status_id`),
KEY `research_paths_id` (`research_paths_id`),
KEY `workers_id` (`workers_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
CREATE TABLE IF NOT EXISTS `projects_has_resources` (
`projects_id` INT(16) UNSIGNED NOT NULL,
`resources_id` INT(16) UNSIGNED NOT NULL,
KEY `projects_id` (`projects_id`),
KEY `resources_id` (`resources_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `projects_has_workers` (
`projects_id` INT(16) UNSIGNED NOT NULL,
`workers_id` INT(16) UNSIGNED NOT NULL,
KEY `workers_id` (`workers_id`),
KEY `projects_id` (`projects_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `project_logs` (
`id` INT(16) UNSIGNED NOT NULL AUTO_INCREMENT,
`workers_id` INT(16) UNSIGNED NOT NULL,
`projects_id` INT(16) UNSIGNED NOT NULL,
`date` DATE NOT NULL,
`observations` text NOT NULL,
`conclusions` text NOT NULL,
`scores_id` INT(16) UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
KEY `projects_id` (`projects_id`),
KEY `scores_id` (`scores_id`),
KEY `workers_id` (`workers_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
CREATE TABLE IF NOT EXISTS `project_status` (
`id` INT(16) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
CREATE TABLE IF NOT EXISTS `research_paths` (
`id` INT(16) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(30) NOT NULL,
`description` text NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;
CREATE TABLE IF NOT EXISTS `resources` (
`id` INT(16) UNSIGNED NOT NULL AUTO_INCREMENT,
`url` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `scores` (
`id` INT(16) UNSIGNED NOT NULL AUTO_INCREMENT,
`score` INT(16) UNSIGNED NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `score` (`score`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
CREATE TABLE IF NOT EXISTS `workers` (
`id` INT(16) UNSIGNED NOT NULL AUTO_INCREMENT,
`login` VARCHAR(50) NOT NULL,
`passwd` CHAR(40) NOT NULL,
`name` VARCHAR(15) NOT NULL,
`surname` VARCHAR(15) NOT NULL,
`email` VARCHAR(30) NOT NULL,
`birthday` DATE NOT NULL,
`address` text NOT NULL,
`phone_number` VARCHAR(50) NOT NULL,
`title` VARCHAR(15) NOT NULL,
`research_paths_id` INT(16) UNSIGNED DEFAULT NULL,
`worker_status_id` INT(16) UNSIGNED DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `worker_status_id` (`worker_status_id`),
KEY `research_paths_id` (`research_paths_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
CREATE TABLE IF NOT EXISTS `worker_status` (
`id` INT(16) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
Wprowadzenie danych:
INSERT INTO `projects` (`id`, `name`, `description`, `creation_date`, `project_status_id`, `research_paths_id`, `workers_id`) VALUES
(3, 'Badania rozmnazania paciorkowców', 'Czyli w skrocie, jak one to robia.', '2012-12-05', 1, 1, 1),
(4, 'Badania nad lekiem na raka', 'Zaawansowane badania', '2012-12-06', 1, 1, 1),
(5, 'Szczepionka zoltaczki', 'By na zoltaczke odpornosc zwiekszyc.', '2012-12-01', 1, 2, 1),
(6, 'Badanie Holterowskie', 'Implementacja algorytmow wykrywania wad serca', '2012-12-06', 1, 9, 1),
(7, 'Pieczarek par szesc', 'Opis..', '2012-12-06', 1, 3, 3);
INSERT INTO `projects_has_workers` (`projects_id`, `workers_id`) VALUES
(3, 2),
(5, 2);
INSERT INTO `project_logs` (`id`, `workers_id`, `projects_id`, `date`, `observations`, `conclusions`, `scores_id`) VALUES
(1, 1, 5, '2012-12-06', 'MOJE OBSERWACJE, MOJE SUPER OBSERWACJE,MOJE SUPER ', 'I jESZczeze wnio', 1),
(2, 2, 5, '2012-12-07', 'efefewfwfwefewfw', 'wefwefwefwefwefwefwefwefwefewfewfewfwefw', 5),
(3, 1, 5, '2012-12-06', 'loooool', 'looool2', 5),
(4, 1, 6, '2012-12-07', 'Pieknie sie rozwijaja', 'Bedzie cudownie', 6),
(5, 1, 7, '2012-12-10', 'nfejejf', 'wkefnjf', 6);
INSERT INTO `project_status` (`id`, `name`) VALUES
(1, 'Nowy'),
(2, 'W realizacji');
INSERT INTO `research_paths` (`id`, `name`, `description`) VALUES
(1, 'Mikrobiologia', 'Biologia w ?wiecie mikro. Nawet nie chrz?szcze, tylko jeszcze mniejsze: bakteryjki, wiruski i inne ustrojstwa.'),
(2, 'Szczepionki', 'Proby wynalezienia szczepionek na rozne wirusy.'),
(3, 'Hodowla pieczarek', 'Hodowla pieczarek Hodowla pieczarek Hodowla pieczarekHodowla pieczarekHodowla pieczarek Hodowla pieczarek Hodowla pieczarek Hodowla pieczarek'),
(9, 'Telemedycyna', 'Dziedzina dotyczyny rozwiazan informatycznych w dziedzinie medycyny. ');
INSERT INTO `scores` (`id`, `score`) VALUES
(1, 1),
(2, 2),
(3, 3),
(5, 4),
(6, 5);
INSERT INTO `workers` (`id`, `login`, `passwd`, `name`, `surname`, `email`, `birthday`, `address`, `phone_number`, `title`, `research_paths_id`, `worker_status_id`) VALUES
(1, 'pracus', '99efc50a9206bde3d7a8e694aad8e138ca7dc3f7', 'Adamus', 'Styrcus', 'imie.nazwisko@mail.mail', '2012-07-28', 'mieszkam na budryka 4', '123123123', 'mgr.', 1, 1),
(2, 'lekki', '403926033d001b5279df37cbbe5287b7c7c267fa', 'Basia', 'Basia', '', '2012-12-05', '', '', 'nikt', 1, 3),
(3, 'ops', '403926033d001b5279df37cbbe5287b7c7c267fa', 'Maciej', 'Maciej', '', '0000-00-00', '', '', '', 3, 2);
INSERT INTO `worker_status` (`id`, `name`) VALUES
(1, 'Kierownik'),
(2, 'Manager'),
(3, 'Pracownik');
Zdefiniowanie interfejsów do edycji i obsługi danych
Widok panelu Kierownika:
![](/_media/pl:dydaktyka:sbd:2012:projekty:lab2:1.png)
Widok zakładki 'Dane osobiste':
![](/_media/pl:dydaktyka:sbd:2012:projekty:lab2:2.png)
Widok zakładki 'Projekty':
![](/_media/pl:dydaktyka:sbd:2012:projekty:lab2:3.png)
Widok wybranego badania:
![](/_media/pl:dydaktyka:sbd:2012:projekty:lab2:4.png)
Widok podstrony na której dodajemy nowy wpis do Dziennika:
![](/_media/pl:dydaktyka:sbd:2012:projekty:lab2:5.png)
Widok podstrony na której dodajemy nową dziedzinę:
![](/_media/pl:dydaktyka:sbd:2012:projekty:lab2:6.png)
Widok podstrony na której dodajemy nowego pracownika:
![](/_media/pl:dydaktyka:sbd:2012:projekty:lab2:7.png)
Widok panelu Pracownika:
![](/_media/pl:dydaktyka:sbd:2012:projekty:lab2:8.png)
Widok podstrony z listą pracowników:
![](/_media/pl:dydaktyka:sbd:2012:projekty:lab2:9.png)
Widok Panelu użytkownika Mangera:
![](/_media/pl:dydaktyka:sbd:2012:projekty:lab2:10.png)
Widok podstrony na której dodajemy nowy projekt:
![](/_media/pl:dydaktyka:sbd:2012:projekty:lab2:11.png)
Widok podsumowujący Projekt:
![](/_media/pl:dydaktyka:sbd:2012:projekty:lab2:13.png)
Opcjonalnie: Zdefiniowanie dokumentów do prezentacji danych
Widok Dziennika projektu:
![](/_media/pl:dydaktyka:sbd:2012:projekty:lab2:12.png)
- Uruchomianie i testowanie aplikacji
Opcjonalnie: Określenie kierunków rozwoju aplikacji, ocena możliwości jej modyfikacji. Czy na wcześniejszych etapach została uwzględniona elastyczność i możliwość reakcji na częściową zmianę wymagań?
* Dodanie nowych baz do przechowywania innych danych (np danych służących do zbierania informacji o wykonywanych badaniach)
* Layout umożliwiający lepsze nawigowanie po sytemie
* Moduł pozwalający na generowanie statystyk i raportów z wykonanych badań
* Moduł pozwalający na zapisywanie i powiadamianie o konferencjach, ważnych wydarzeniach
Wykaz literatury, załączniki.
* http://www.postgresql.org/docs/manuals/
* http://www.w3schools.com/php/default.asp
* http://php.net/manual/pl/