Πτυχιακή εργασία «Δανειστική βιβλιοθήκη»



Σχετικά έγγραφα
ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ:

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 2 ο Μάθημα: Βασικά Θέματα Βάσεων Δεδομένων. Δρ. Κωνσταντίνος Χ.

Διαδικτυακό Περιβάλλον Διαχείρισης Ασκήσεων Προγραμματισμού

ΤΕΙ ΚΑΒΑΛΑΣ. Πτυχιακή εργασία ΕΙΣΑΓΩΓΗ. Μιλτιάδης Κακλαμάνης

Εγχειρίδιο Χρήσης Εφαρμογής Συστήματος Διαχείρισης Λογισμικού

Εγχειρίδιο εγκατάστασης Megasoft 2009

Εγχειρίδιο Λειτουργίας Τράπεζας Χρόνου

ΟΔΗΓΟΣ ΧΡΗΣΗΣ(ΜΑΝUΑL) ΔΙΑΧΕΙΡΙΣΤΗ-ΧΡΗΣΤΗ.

Εγχειρίδιο διαχείρισης χρηστών και λιστών διανομής για τον Υπεύθυνο Φορέα του Δικτύου "Σύζευξις" -1-

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access

Field Service Management ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ

ΕΡΓΑΣΤΗΡΙΟ 1: 1 Εισαγωγή, Χρήσιμες Εφαρμογές

Εφαρμογή Διαχείρισης Ψηφιακής Πληροφορίας ΟΔΗΓΟΣ ΧΡΗΣΗΣ System Συμβουλευτική Α.Ε

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΉΜΙΟ ΚYΠΡΟΥ

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

Εργαστηριακές Ασκήσεις Σελίδα 1

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΥΠΟΒΟΛΗΣ ΙΣΟΖΥΓΙΩΝ ΚΡΕΑΤΟΣ

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ. Διαδικτυακό σύστημα διαχείρισης αιτήσεων για μεταπτυχιακό

Βασικές Οδηγίες Χρήσης της Εφαρμογής

ΕΡΓΑΣΤΗΡΙΟ 1: Εισαγωγή, Χρήσιμες Εφαρμογές

Εγχειρίδιο Συντονιστή Τηλεδιασκέψεων Υπηρεσίας e:presence

Το βιβλίο διευθύνσεων των Windows

Οδηγίες Χρήσης της MySQL

Εγχειρίδιο Χρήσης-Οδηγός Εκπαίδευσης Χρηστών. - Δήμος Δέλτα - Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης

Περιεχόμενα. Αντί προλόγου Πώς να χρησιμοποιήσετε το βιβλίο Κεφάλαιο 1: Πώς δημιουργώ το Προφίλ μου στο Facebook;...


Λίγα λόγια από το συγγραφέα...7

Ο Οδηγός γρήγορης εκκίνησης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

Manual. Εκλογές 15μελούς Σχολείου v4.0 Module καταχώρησης ψηφοδελτίων από την Εφορευτική Επιτροπή

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Μπορείτε τα δείτε βιντεάκι με τη διαδικασία εδώ:

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 2 24/01/2012

Διαχείριση Πληροφοριών στο Διαδίκτυο. Εργαστήριο 1

Βασικές λειτουργίες διαδανεισμού μέσα από το σύστημα SmILLe

Υποβολή Αναλώσιµων Υλικών ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Ηλεκτρονικές Υπηρεσίες. Υποβολή Αναλώσιμων Υλικών. Σελίδα 1

ΟΓΗΓΙΕΣ ΧΡΗΣΗΣ ΗΛΕΚΤΡΟΝΙΚΟΥ ΜΗΤΡΩΟΥ ΑΠΟΒΛΗΤΩΝ. Draft version

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΧΡΗΣΤΗ. Ηλεκτρονική Υποβολή Α.Π.Δ.

Blog στο Wordpress. Επιμέλεια: Δέγγλερη Σοφία

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

Οδηγίες Χρήσης της MySQL

6 Εισαγωγή στο Wordpress 3.x

Εγχειρίδιο Χρήσης Ψηφιακής Υπηρεσίας

ΕΡΓΑΣΙΑ. (στο μάθημα: Τεχνολογίες Εφαρμογών Διαδικτύου του Η εξαμήνου σπουδών του Τμήματος Πληροφορικής & Τηλ/νιών)

Εγχειρίδιο χρήσης για τον φοιτητή

Βάσεις δεδομένων (Access)

ΗΛΕΚΤΡΟΝΙΚΟ ΣΥΣΤΗΜΑ ΥΠΟΒΟΛΗΣ ΜΗΧΑΝΟΓΡΑΦΙΚΟΥ ΔΕΛΤΙΟΥ

ΕΡΓΑΣΙΑ. (στο µάθηµα: Τεχνολογίες Εφαρµογών ιαδικτύου του Η εξαµήνου σπουδών του Τµήµατος Πληροφορικής & Τηλ/νιών)

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Kεφάλαιο 11 Λίστες και Ανάλυση Δεδομένων Kεφάλαιο 12 Εργαλεία ανάλυσης πιθανοτήτων Kεφάλαιο 13 Ανάλυση δεδομένων...

ΕΓΧΕΙΡΙΔΙΟ ΔΙΑΧΕΙΡΙΣΗΣ Συστήματος Διαχείρισης & Διακίνησης Εγγράφων DocuTracks

Management Classes Create Class Create Class Management Classes List of Classes

Αναγγελία Εισιτηρίων - εξιτηρίων ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ. Ηλεκτρονικές Υπηρεσίες. Αναγγελία Εισιτηρίων - Εξιτηρίων. Σελίδα 1

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΥΠΟΣΥΣΤΗΜΑΤΟΣ ΑΓΡΟΠΕΡΙΒΑΛΛΟΝΤΙΚΩΝ ΕΝΙΣΧΥΣΕΩΝ. Μέτρο 2.2.1

Εγχειρίδιο Χρήσης Προσωποποιημένων Υπηρεσιών Γ.Ε.ΜΗ. (ΕΠΙΧΕΙΡΗΣΕΙΣ)

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΟΛΟΚΛΗΡΩΜΕΝΟΥ ΠΛΗΡΟΦΟΡΙΑΚΟΥ ΣΥΣΤΗΜΑΤΟΣ (ΟΠΣ) ΓΙΑ ΤΗΝ ΠΡΟΓΡΑΜΜΑΤΙΚΗ ΠΕΡΙΟΔΟ ΣΕΣ

Εγχειρίδιο Χρήσης για Διαχειριστές. Πλατφόρμα Μεταφόρτωσης και Μετατροπής Βίντεο

Εγκατάσταση Λογαριασμού Αλληλογραφίας στο ελληνικό Outlook Express Περιεχόμενα

ΥΠ.ΕΣ. - Δ.Μ.Η.Ε.Σ. ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ ΛΗΞΙΑΡΧΕΙΟΥ V 1.2

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Υποσύστημα Πρακτικής Άσκησης Εγχειρίδιο χρήσης Φοιτητή

«Οδηγίες χρήσης εφαρμογής Ενιαίου Συστήματος Πληρωμών»

Blog στο Wordpress. Επιμέλεια: Δέγγλερη Σοφία

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΔΙΑΔΡΑΣΤΙΚΗΣ ΔΙΑΔΙΚΤΥΑΚΗΣ ΕΦΑΡΜΟΓΗΣ ΓΙΑ ΤΗΝ ΕΞΥΠΗΡΕΤΗΣΗ ΑΣΘΕΝΩΝ ΣΥΜΒΕΒΛΗΜΕΝΟΥΣ ΜΕ ΤΟΝ Ε.Ο.Π.Υ.

ΟΔΗΓΙΕΣ ΧΡΗΣΤΗ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ ΗΛΕΚΤΡΟΝΙΚΗΣ ΤΑΞΗΣ

Δημιουργία. Ιστολογίου (blog) 7/5/2015. Χρυσάνθη Γιομέλου ΚΔΒΜ ΝΙΚΑΙΑΣ

Management School School Profile Save

Εγχειρίδιο Χρήσης Ψηφιακής Υπηρεσίας

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

Σύστημα Κεντρικής Υποστήριξης της Πρακτικής Άσκησης Φοιτητών ΑΕΙ

Βάσεις δεδομένων (Access)

Εγχειρίδιο Χρήσης Συστήματος Διαχείρισης Ηλεκτρονικών Ερωτηματολογίων Ο.Π.Σ

ΕΦΑΡΜΟΓΗ ΔΙΑΧΕΙΡΙΣΗΣ ΙΣΤΟΣΕΛΙΔΩΝ ΜΕΛΩΝ ΔΕΠ, ΤΜΗΜΑΤΟΣ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟΥ ΠΑΤΡΩΝ ΕΓΧΕΙΡΙΔΙΟ ΟΔΗΓΙΩΝ ΠΛΟΗΓΗΣΗΣ ΚΑΙ ΧΡΗΣΗΣ

ΠΑ-24γ Εγχειρίδιο Χρήσης Δ.Δ.Π. Του Δήμου Αιγάλεω

Ιδρυματικό Αποθετήριο ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

Ψηφιακή υπογραφή από το Πανελλήνιο Σχολικό Δίκτυο (Έκδοση, Εγκατάσταση, Χρήση, Απεγκατάσταση)

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΉΜΙΟ ΚYΠΡΟΥ

Ημερομηνία Παράδοσης: 4/4/2013

ΕΓΧΕΙΡΙΔΙΟ ΥΠΟΒΟΛΗΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΠΡΟΤΑΣΗΣ ΓΙΑ ΤΗ ΔΡΑΣΗ ΜΕΤΑΠΟΙΗΣΗ ΣΤΙΣ ΝΕΕΣ ΣΥΝΘΗΚΕΣ

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΑΝΕΠΙΣΤΗΜΙΟ

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Εφαρµογή: Σύστηµα ιαχείρισης ιαδικτυακού Περίπτερου / Ιστοσελίδας στον διαδικτυακό τόπο kalliergea.gr

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ: Ανάπτυξη του Εκπαιδευτικού Ιστότοπου. με PHP και MySQL

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ

ΕΓΧΕΙΡΙΔΙΟ ΥΠΟΒΟΛΗΣ ΗΛΕΚΤΡΟΝΙΚΗΣ ΠΡΟΤΑΣΗΣ ΓΙΑ ΤΗ ΔΡΑΣΗ ΠΡΑΣΙΝΗ ΕΠΙΧΕΙΡΗΣΗ 2010

Συνοπτικός Οδηγός Χρήσης του Moodle για τον Καθηγητή

Εγχειρίδιο Χρήσης. Εφαρμογής Αιτήσεων Σίτισης για το ΤΕΙ Αθήνας. Έκδοση 2η

Εγχειρίδιο εγκατάστασης και χρήσης περιοδικών etwinning

ΠΛΗΡΟΦΟΡΙΑΚΟ ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΚΑΤΑΣΚΕΥΗΣ ΚΑΙ ΑΝΑΚΑΙΝΙΣΗΣ ΑΚΙΝΗΤΩΝ

Εγχειρίδιο Εισαγωγής Στοιχείων στο Πληροφοριακό Σύστημα του προγράμματος Εξοικονόμηση Κατ Οίκον ΙΙ (Β Κύκλος), για την υποβολή αιτήσεων

Εγχειρίδιο Χρήστη Εκπαιδευόμενου. Πλατφόρμα ΠΡΟΧΩΡΩ elearning

Δραστηριότητα 3: Ρυθμίσεις Oικιακής Ομάδας Τοπικού Δικτύου Η/Υ σε WINDOWS 7 & 8

Εγχειρίδιο Χρήσης. για ΟΙΚΟΝΟΜΙΚΟΥΣ ΦΟΡΕΙΣ

Epsilon Net PYLON Platform

ΣΧΕΔΙΑΣΜΟΣ ΚΑΙ ΑΝΑΠΤΥΞΗ ΙΣΤΟΤΟΠΟΥ ΓΙΑ ΚΙΝΗΜΑΤΟΓΡΑΦΙΚΗ ΛΕΣΧΗ

Σύντομη περιγραφή 5. Για να ξεκινήσετε 6. Οι οθόνες του προγράμματος 8. Εγκατάσταση προγράμματος 6 Δημιουργία κωδικών χρήστη 7

Transcript:

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΑΒΑΛΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ: Δανειστική βιβλιοθήκη ΕΠΙΒΛΕΠΩΝ ΚΑΘΗΓΗΤΗΣ : Καραδήμος Δημήτριος ΣΥΝΕΠΙΒΛΕΠΟΥΣΑ ΚΑΘΗΓΗΤΡΙΑ : Μήτσα Αικατερίνη ΕΠΙΜΕΛΕΙΑ ΕΚΠΟΝΗΣΗΣ ΠΤΥΧΙΑΚΗΣ ΕΡΓΑΣΙΑΣ Καραμάνου Φωτεινή ΚΑΒΑΛΑ 2012 ΚΑΒΑΛΑ 2012 0

ΠΕΡΙΛΗΨΗ Σ αυτή την εργασία το πρόβλημα που πρέπει να λυθεί αφορά τον δανεισμό βιβλίων ηλεκτρονικά υπό μορφή ανακοινώσεων. Η λύση του προβλήματος προκύπτει με τη χρήση των παρακάτω προγραμμάτων: Apache, Php, PostgreSQL, Css. Ο Apache αποτελεί πλέον τον δημοφιλέστερο web server (εξυπηρετητή παγκόσμιου ιστού). Δέχεται αιτήσεις από τον Browser, τις επεξεργάζεται και επιστρέφει δεδομένα. Η Php είναι από τις πιο εύχρηστες και κατανοητές γλώσσες προγραμματισμού, ανοιχτού κώδικα. Η Php περνά από επεξεργασία από ένα συμβατό διακομιστή του παγκόσμιου ιστού (π.χ. Apache) ώστε να παραχθεί σε πραγματικό χρόνο το τελικό περιεχόμενο που θα σταλλεί στο πρόγραμμα περιήγησης του επισκέπτη σε μορφή κώδικα Html. Η PostgreSQL είναι μια SQL συμβατή ανοιχτού κώδικα σχεσιακή βάση δεδομένων με πολλές δυνατότητες. Υποστηρίζεται από όλα τα βασικά λειτουργικά συστήματα (Windows, Linux, Unix).Δυνατό σημείο της είναι οτι μπορεί να διαχειριστεί εύκολα μεγάλους αριθμούς ταυτόχρονων χρηστών και αρκετά μεγάλο όγκο δεδομένων καθώς επίσης τρέχει και σε πολλές γλώσσες προγραμματισμού.όσον αφορά την εμφάνιση ενός εγγράφου, ο βέλτιστος τρόπος είναι η χρήση Css (Διαδοχικά φύλλα στυλ). Τα Css αποτελούν μια γλώσσα υπολογιστή προοροσμένη να αναπτύσσει στυλιστικά μια ιστοσελίδα (χρώματα, στοίχιση, εικόνες). Μερικά στοιχεία για την εφαρμογή: Ο κάθε χρήστης θα εγγράφεται συμπληρώνοντας μια φόρμα με τα στοιχεία του και κατόπιν θα στέλνεται μέσω e-mail στον διαχειριστή ώστε να γίνει η επιβεβαίωση του χρήστη και η αποστολή του κωδικού πρόσβασης. Ο κάθε εγγεγραμμένος χρήστης θα αναρτά τη λίστα με τα βιβλία που διαθέτει, συμπληρώνοντας και τα στοιχεία του κάθε βιβλίου (τίτλο, συγγραφέα, είδος, ISBN) και προαιρετικά σχόλια για κάθε βιβλίο. Επίσης θα δίνεται η δυνατότητα να το θέσει ελέυθερο ή όχι προς δανεισμό όποια στιγμή το θελήσει. Ο κάθε εγγεγραμμένος χρήστης θα έχει τη δυνατότητα να τροποποιήσει τα σχόλια των βιβλίων που του ανήκουν, να κάνει αναζήτηση κάποιου βιβλίου που τον ενδιαφέρει εισάγοντας υποχρεωτικά συγγραφέα, είδος, ISBN, και το username του κατόχου. ΚΑΒΑΛΑ 2012 1

Θα μπορεί επίσης να εκδηλώσει ενδιαφέρον ανταλλαγής, αναρτώντας κάποια σχόλια, τα οποία θα είναι ορατά στον ίδιο και στον δανειστή του, ακόμα και αν το βιβλίο δεν είναι διαθέσιμο εκείνη τη χρονική στιγμή. Πλήρη δικαιώματα στο σύστημα θα έχει ο διαχειριστής του συστήματος. Η υλοποίηση αυτή αποτελεί τη βάση για τις περισσότερες διαδικτυακές εφαρμογές. Απαλλάσσει τους χρήστες από το να ελέγχουν συνέχεια την διαθεσιμότητα ενός βιβλίου μιας και μπορούν να εκδηλώσουν ενδιαφέρον ανταλλαγής ακόμα και αν το βιβλίο δεν είναι διαθέσιμο εκείνη τη χρονική στιγμή, αφού υπάρχει άμεση επικοινωνία μεταξύ δανειστή και δανειζόμενου. ΚΑΒΑΛΑ 2012 2

ΠΡΟΛΟΓΟΣ Το Internet έχει εισχωρήσει στη ζωή των περισσοτέρων ανθρώπων. Επηρεάζει την καθημερινή δραστηριότητα και τις συνεχώς αυξανόμενες ανάγκες των χρηστών. Άλλαξε τις συνήθειες των χρηστών και έκανε την επικοινωνία εμφίδρομη μιας και ο χρήστης αποκτά πλέον μεγαλύτερη πρόσβαση και έλεγχο στις πληροφορίες σε πραγματικό χρόνο. Καταργήθηκαν οι αποστάσεις και δίνονται ίσες ευκαιρίες πρόσβασης και επικοινωνίας σε όλο και περισσότερους χρήστες. Στην παρούσα ανάπτυξη του θέματος καταβλήθηκε προσπάθεια να γίνει μια γενική γνωριμία με τις διαδικτυακές εφαρμογές και μια παρουσίαση του τρόπου με τον οποίο μπορεί να γίνει ανταλλαγή πληροφοριών (βιβλίων) μεταξύ των χρηστών, με στόχο την διευκόλυνσή τους. Στο πλαίσιο της παρούσας πτυχιακής εργασίας έγινε μια σημαντική μελέτη της γλώσσας Php σε συνδιασμό με τις Βάσεις δεδομένων. Αρχικά μελετήθηκε πληροφοριακό υλικό το οποίο περιελάμβανε και τα κατάλληλα υπολογιστικά προγράμματα τα οποία και εγκαταστάθηκαν για περεταίρω χρήση. Ύστερα ακολούθησε το «πρακτικό» κομμάτι της εφαρμογής όπου δημιουργήθηκε βήμα-βήμα και αφού μεσολάβησε αρκετή μελέτη για τη γνώση του θεωρητικού υπόβαθρου που απαιτείται πριν ξεκινήσει η σχεδίαση και η υλοποίηση τη εφαρμογής. Μέσα από την συγκεκριμένη μελέτη μεταφέρεται στον αναγνώστη η εμπειρία και οι απαιτούμενες γνώσεις για το συγκεκριμένο αντικείμενο αλλά και σημαντικές πληροφορίες για περεταίρω ενασχόληση. ΚΑΒΑΛΑ 2012 3

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1 ΠΕΡΙΛΗΨΕΙΣ ΚΕΦΑΛΑΙΩΝ... 8 ΚΕΦΑΛΑΙΟ 2 ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ... 10 2.1 Προβληματισμοί και λήψη αποφάσεων αναφορικά με την υλοποίηση της εφαρμογής... 10 2.2 Λεξικό οντοτήτων... 12 2.3 Δημιουργία Βάσης Δεδομένων... 14 ΚΕΦΑΛΑΙΟ 3 ΑΠΑΙΤΗΣΕΙΣ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ... 31 ΚΕΦΑΛΑΙΟ 4 ΣΥΜΠΕΡΑΣΜΑΤΑ ΚΑΙ ΥΠΟΔΕΙΞΕΙΣ... 36 ΠΑΡΑΡΤΗΜΑ Α ΕΓΚΑΤΑΣΤΑΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΩΝ... 38 Εγκατάσταση phppgadmin 9.1.1-1... 38 Εγκατάσταση Editor Notepad++... 64 ΠΑΡΑΡΤΗΜΑ Β - ΕΓΧΕΙΡΙΔΙΟ ΛΕΙΤΟΥΡΓΙΑΣ ΓΙΑ ΤΟΝ ΧΡΗΣΤΗ... 70 ΠΑΡΑΡΤΗΜΑ Γ ΣΧΕΔΙΑΣΗ ΣΧΕΣΙΑΚΗΣ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ... 85 Μοντέλο οντοτήτων συσχετίσεων... 85 Κανόνες για τη μετάβαση από το Μοντέλο Οντοτήτων Συσχετήσεων στη Σχεσιακή Βάση... 87 Λογικός Σχεδιασμός μιας Βάσης Δεδομένων... 88 Οντότητες... 88 Σχέσεις... 89 Η Κανονικοποίηση... 89 Πλεονασμός Δεδομένων και Ανωμαλίες Ενημέρωσης... 90 ΠΑΡΑΡΤΗΜΑ Δ - ΠΡΟΔΙΑΓΡΑΦΕΣ... 92 ΠΑΡΑΡΤΗΜΑ Ε ΛΙΓΑ ΛΟΓΙΑ ΓΙΑ ΤΟ ΚΑΘΕ ΥΠΟΣΥΣΤΗΜΑ... 102 phppgadmin... 102 Php... 102 Postgres... 114 ΚΑΒΑΛΑ 2012 4

Apache... 118 Html(Html5)... 122 CSS... 130 ΠΑΡΑΡΤΗΜΑ ΣΤ ΚΩΔΙΚΑΣ ΤΗΣ ΕΦΑΡΜΟΓΗΣ... 141 ΒΙΒΛΙΟΓΡΑΦΙΑ... 218 ΚΑΒΑΛΑ 2012 5

ΛΙΣΤΑ ΣΧΗΜΑΤΩΝ Σχήμα 1 Δημιουργία Βάσης Δεδομένων σελ.15 Σχήμα 2 Δημιουργία Βάσης Δεδομένων σελ.16 Σχήμα 3 Δημιουργία Βάσης Δεδομένων σελ.17 Σχήμα 4 Δημιουργία Βάσης Δεδομένων σελ.18 Σχήμα 5 Δημιουργία Βάσης Δεδομένων σελ.19 Σχήμα 6 Δημιουργία Βάσης Δεδομένων σελ.20 Σχήμα 7 Δημιουργία Βάσης Δεδομένων σελ.21 Σχήμα 8 Δημιουργία Βάσης Δεδομένων σελ.22 Σχήμα 9 Δημιουργία Βάσης Δεδομένων σελ.23 Σχήμα 10 Δημιουργία Βάσης Δεδομένων σελ.24 Σχήμα 11 Δημιουργία Βάσης Δεδομένων σελ.25 Σχήμα 12 Δημιουργία Βάσης Δεδομένων σελ.26 Σχήμα 13 Δημιουργία Βάσης Δεδομένων σελ.27 Σχήμα 14 Δημιουργία Βάσης Δεδομένων σελ.28 Σχήμα 15 Δημιουργία Βάσης Δεδομένων σελ.29 Σχήμα 16 Δημιουργία Βάσης Δεδομένων σελ.30 Σχήμα 17 Βήματα Εγκατάστασης PhpPgAdmin σελ.38 Σχήμα 18 Βήματα Εγκατάστασης PhpPgAdmin σελ.39 Σχήμα 19 Βήματα Εγκατάστασης PhpPgAdmin σελ.40 Σχήμα 20 Βήματα Εγκατάστασης PhpPgAdmin σελ.41 Σχήμα 21 Βήματα Εγκατάστασης PhpPgAdmin σελ.42 Σχήμα 22 Βήματα Εγκατάστασης PhpPgAdmin σελ.43 Σχήμα 23 Βήματα Εγκατάστασης PhpPgAdmin σελ.44 Σχήμα 24 Βήματα Εγκατάστασης PhpPgAdmin σελ.45 Σχήμα 25 Βήματα Εγκατάστασης PhpPgAdmin σελ.46 Σχήμα 26 Βήματα Εγκατάστασης PhpPgAdmin σελ.47 Σχήμα 27 Βήματα Εγκατάστασης PhpPgAdmin σελ.48 Σχήμα 28 Βήματα Εγκατάστασης PhpPgAdmin σελ.49 Σχήμα 29 Βήματα Εγκατάστασης PhpPgAdmin σελ.50 Σχήμα 30 Βήματα Εγκατάστασης PhpPgAdmin σελ.51 Σχήμα 31 Βήματα Εγκατάστασης PhpPgAdmin σελ.52 Σχήμα 32 Βήματα Εγκατάστασης PhpPgAdmin σελ.54 Σχήμα 33 Βήματα Εγκατάστασης PhpPgAdmin σελ.54 Σχήμα 34 Βήματα Εγκατάστασης PhpPgAdmin σελ.55 Σχήμα 35 Βήματα Εγκατάστασης PhpPgAdmin σελ.56 Σχήμα 36 Βήματα Εγκατάστασης PhpPgAdmin σελ.57 Σχήμα 37 Βήματα Εγκατάστασης PhpPgAdmin σελ.58 Σχήμα 38 Βήματα Εγκατάστασης PhpPgAdmin σελ.59 Σχήμα 39 Βήματα Εγκατάστασης PhpPgAdmin σελ.60 Σχήμα 40 Βήματα Εγκατάστασης PhpPgAdmin σελ.61 Σχήμα 41 Βήματα Εγκατάστασης PhpPgAdmin σελ.62 Σχήμα 42 Βήματα Εγκατάστασης PhpPgAdmin σελ.63 ΚΑΒΑΛΑ 2012 6

Σχήμα 43 Βήματα Εγκατάστασης Notepad++ σελ.64 Σχήμα 44 Βήματα Εγκατάστασης Notepad++ σελ.64 Σχήμα 45 Βήματα Εγκατάστασης Notepad++ σελ.65 Σχήμα 46 Βήματα Εγκατάστασης Notepad++ σελ.66 Σχήμα 47 Βήματα Εγκατάστασης Notepad++ σελ.67 Σχήμα 48 Βήματα Εγκατάστασης Notepad++ σελ.68 Σχήμα 49 Βήματα Εγκατάστασης Notepad++ σελ.69 Σχήμα 50 Μ.Ο.Σ. σελ.87 ΚΑΒΑΛΑ 2012 7

ΚΕΦΑΛΑΙΟ 1 ΠΕΡΙΛΗΨΕΙΣ ΚΕΦΑΛΑΙΩΝ Το Κεφάλαιο 2 πραγματεύεται την ανάλυση της βάσης δεδομένων της εφαρμογής, έτσι όπως αποφασίστηκε να υλοποιηθεί ώστε να εξασφαλίζεται η λειτουργικότητά της με έναν πιο καινοτόμο τρόπο. Παρουσιάζεται το λεξικό οντοτήτων ώστε ο αναγνώστης να έχει μια πιο σαφή εικόνα αναφορικά με την δημιουργία της βάσης δεδομένων. Στο τέλος του δευτεύρου κεφαλαίου ο αναγνώστης έχει τη δυνατότητα να παρακολουθήσει τη δημιουργία της βάσης δεδομένων αναλυτικά με τη χρήση του phppgadmin. Το Κεφάλαιο 3 περιέχει τις απαιτήσεις του συστήματος, λειτουργικές και μη λειτουργικές. Το Κεφάλαιο 4 περιέχει τα συμπεράσματα της εκπόνησης και ιδέες για παραπέρα ανάπτυξη. Το Παράρτημα Α παρέχει λεπτομερέστατα εγχειρίδια εγκατάστασης όλων των προγραμμμάτων που είναι απαραίτητα για την υλοποίηση της εν λόγω εφαρμογής. Το Παράρτημα Β περιέχει το εγχειρίδιο για τον χρήστη (user manual). Το Παράρτημα Γ περιέχει τη σχεδίαση και ανάπτυξη της σχεσιακής βάσης δεδομένων. Γίνεται μια διαγραμματική αναπαράσταση της δομή της σχεσιακής βάσης δεδομένων και αναφέρονται οι κανόνες με τους οποίους έγινε η συσχέτιση, οι οντότητες και οι σχέσεις που προκύπτουν. Το Παράρτημα Δ περιέχει τις προδιαγραφές του συστήματος. Στο Παράρτημα Ε αναφέρονται λίγα λόγια για τα προγράμματα που χρησιμοποιήθηκαν για την υλοποίηση της εφαρμογής «Δανειστική Βιβλιοθήκη». Php: Μια από τις ισχυρότερες γλώσσες προγραμματισμού με κυριότερο χαρακτηριστικό την υποστήριξη ευρείας γκάμας από βάσεις δεδομένων. Ένα από τα κυριότερα χαρακτηριστικά της είναι ο τρόπος που χειρίζεται τις φόρμες της Html. Παρουσιάζονται οι λειτουργίες της Php αναλυτικά. Δίνεται η δυνατότητα γρήγορης εκμάθησης τη γλώσσας στον αναγνώστη με απλά παραδείγματα. Αναφέρονται στοιχεία σύνταξης των εντολών, οι τύποι δεδομένων της γλώσσα, ορισμένες βασικές εντολές και συναρτήσεις που χρησιμοποιούνται συχνότερα. Γίνεται συσχετισμός με την Html και τις φόρμες της και αναλύονται οι δύο μέθοδοι της Php, η μέθοδος $_POST και η μέθοδος $_GET. Postgresql: Αποτελεί μια δυνατή γλώσσα για τη δημιουργία μιας βάσης δεδομένων. Παρουσιάζονται τα γενικά χαρακτηριστικά της γλώσσας και γίνεται αναφορά στη συμβατότητα με προδιαγραφές. Apache: Γίνεται μια συνοπτική ανάλυση του Apache Web Server (εξυπηρετητής παγκόσμιου ιστού). Αναφέρεται η προέλευση και η ιστορία του Apache από το ξεκίνημα και την σταδιακή ΚΑΒΑΛΑ 2012 8

εξέλιξή του. Παρουσιάζονται τα χαρακτηιστικά και οι λειτουργίες του και γίνεται αναφορά στα αρχεία καταγραφής του, Access Log και Error Log. Html (Html5): Η γλώσσα με την οποία κατασκευάζουμε ιστοσελίδες. Αναφέρεται η ιστορία τη Html και η εξέλιξή της. Περιλαμβάνονται τα νέα χαρακτηριστικά που ενσωματώθηκαν στη νέα βελτιωμένη έκδοση Html5 όπως είναι η δυνατότητα σχεδιασμού γραφικών, η αναπαραγωγή βίντεο και audio, νέες ετικέτες και φόρμες. Επίσης παρατίθενται οι κυριότεροι κωδικοί χρωμάτων σε δεκαεξαδική μορφή. Css: Παρουσιάζονται μερικά στοιχεία για τα Διαδοχικά Φύλλα Στυλ (Css) τα οποία δίνουν τη δυνατότητα στους δημιουργούς να ελέγξουν το στυλ και τη διάταξη πολλών ιστοσελίδων μονομιάς. Αναφέρονται οι κυριότερες λειτουργίες και παραδείγματα σύνταξης βασικών εντολών. Στο Παράρτημα ΣΤ παρέχεται όλος ο κώδικας της εφαρμογής σχολιασμένος. ΚΑΒΑΛΑ 2012 9

ΚΕΦΑΛΑΙΟ 2 ΥΛΟΠΟΙΗΣΗ ΕΦΑΡΜΟΓΗΣ 2.1 Προβληματισμοί και λήψη αποφάσεων αναφορικά με την υλοποίηση της εφαρμογής Δημιουργήθηκαν αρκετοί προβληματισμοί στην αρχή της υλοποίησης της εφαρμογής. Κυριότερο πρόβλημα αποτέλεσε η επιλογή του τρόπου με τον οποίο θα ξεκινούσε μια ανακοίνωση η οποία θα έπρεπε να είναι ορατή μόνο στον δανειστή και τον δανειζόμενο. Ως καλύτερος τρόπος επιλέχθηκε να γίνεται η αναζήτηση ενός βιβλίου και με βάση τα αποτελέσματα της αναζήτησης να ξεκινά από αυτό το στάδιο η εκδήλωση ενδιαφέροντος ανταλλαγής. Ο χρήστης έχει το δικαίωμα να ξεκινήσει όσες φορές ανταλλαγή ενός ίδιου βιβλίου. Μόλις εκδηλώσει ενδιαφέρον ανταλλαγής (κάνοντας κλικ στο κατάλληλο κουμπί) μεταβαίνει σε άλλη σελίδα ώστε να ξεκινήσει να γράφει τα σχόλια του τα οποία εμφανίζονται και στην σελίδα του δανειστή του βιβλίου. Και οι δύο χρήστες (δανειστής και δανειζόμενος) έχουν το πλεονέκτημα να μπορούν να συνεχίσουν τη ροή των ανακοινώσεων όσες φορές το θελήσουν. Στη συνέχεια κατά την προσθήκη ενός καινούργιου βιβλίου ο χρήστης συμπληρώνει ορισμένα υποχρεωτικά πεδία ( τίτλο, συγγραφέα, είδος, ISBN) και προαιρετικά σχόλια και την κατάσταση του βιβλίου (ελεύθερο ή όχι προς δανεισμό). Δίνεται το δικαίωμα να αλλάξει ο κάτοχος ενός βιβλίου τα σχόλια και την κατάστασή του ανά πάσα στιγμή. Δεν έχει το δικαίωμα διαγραφής επιπλέον στοιχείων ο χρήστης αλλά ούτε του βιβλίου διότι θα υπάρξει πρόβλημα αν το βιβλίο έχει εκκρεμότητα. Ο χρήστης μπορεί να απευθυνθεί στον διαχειριστή στις περιπτώσεις που έκανε λάθος εισαγωγή των στοιχείων του βιβλίου ή το βιβλίο δεν υπάρχει πλέον. Μπορεί επίσης να αλλάξει τα σχόλια του βιβλίου, γράφοντας ότι το βιβλίο δεν υπάρχει πλέον. Ένα επιπλέον πρόβλημα αφορούσε την πρόσβαση των χρηστών σε ορισμένα δεδομένα σε συνδυασμό με την εύκολη και ομαδοποιημένη πρόσβαση του διαχειριστή στη βάση, μιας και ο διαχειριστής είναι εκείνος που θα εγγράψει κάποιον νέο χρήστη. Για την καλύτερη λειτουργία επιλέχθηκε κατά την εγγραφή ενός χρήστη να δημιουργούνται και ορισμένοι «δικοί του» πίνακες (books_ και ebook_) στη βάση δεδομένων, στους οποίους έχουν περιορισμένα ΚΑΒΑΛΑ 2012 10

δικαιώματα οι χρήστες. Στον πίνακα books_ υπάρχουν τα χαρακτηριστικά του κάθε βιβλίου (ο τίτλος, ο συγγραφέας, το είδος του βιβλίου, η κατάστασή του (ελεύθερο ή όχι προς δανεισμό) το ISBN και τα σχόλια). Έχει τη δυνατότητα ο «κάτοχος» του κάθε πίνακα να τροποποιήσει μέρος των δεδομένων (τα σχόλια και την κατάσταση ελεύθερο ή όχι προς δανεισμό) ενώ οι υπόλοιποι χρήστες έχουν δικαίωμα μόνο ανάγνωσης. Σε αντίθεση όμως με τον διαχειριστή ο οποίος μπορεί και να διαγράψει δεδομένα του κάθε πίνακα books_. Ο λόγος που δικαίωμα διαγραφής παρέχεται μόνο στον διαχειριστή είναι επειδή αν ο χρήστης διαγράψει για παράδειγμα ένα βιβλίο ενώ αυτό θα έχει εκκρεμότητα δανεισμού, θα δημιουργηθεί πρόβλημα. Ενώ επικοινωνώντας με τον διαχειριστή αποφεύγονται τέτοιου είδους προβλήματα. Παρομοίως και με τον πίνακα ebook_ ο οποίος περιέχει τα προσωπικά στοιχεία του κάθε χρήστη (όνομα, επώνυμο και e-mail), δεν δίνεται δικαίωμα τροποποίησης των στοιχείων του χρήστη άμεσα αλλά έμμεσα μέσω του διαχειριστή. Για λόγους ευχρηστίας του διαχειριστή δημιουργούνται σε κάθε εγγραφή αυτοί οι δύο πίνακες ώστε να ανατρέχει εύκολα αν χρειαστεί. Όσον αφορά την εγγραφή των νέων χρηστών επιλέχθηκε η εγγραφή να γίνεται μέσω του διαχειριστή. Ο χρήστης συμπληρώνει μια φόρμα με τα στοιχεία του (επιθυμητό όνομα χρήστη, όνομα, επώνυμο και e-mail η οποία περνάει αυτόματα στο περιεχόμενο του e-mail το οποίο αποστέλλει ο καινούργιος χρήστης. Στη συνέχεια ο διαχειριστής επιλέγει τον κωδικό πρόσβασης που θα δώσει στον καινούργιο χρήστη και το στέλνει μέσω e-mail. Πρώτα βέβαια εκτελεί την συνάρτηση create_ebooks_user με τα κατάλληλα ορίσματα ώστε να δημιουργηθεί ο χρήστης με τους κατάλληλους πίνακες. Ο τρόπος αυτός επιλέχθηκε ώστε να επιλέγει ο διαχειριστής ποιους θα εγγράψει. Ένας επιπλέον προβληματισμός αφορούσε την αποστολή των δεδομένων ώστε να μην είναι ορατά από τρίτους. Για αυτό τον λόγο επιλέχθηκαν οι μέθοδοι GET και POST( )Με την POST γίνεται αποστολή δεδομένων «διαφανώς» απο τον χρήστη ενώ με την GET τα στοιχεία της φόρμας μεταφέρονται ως τμήμα της URL. Αρκετές συναρτήσεις γράφτηκαν σε ξεχωριστό αρχείο php. Παρατηρείται επαναχρησιμοποίηση κώδικα στην εφαρμογή χρησιμοποιώντας την require_once(). Κατ αυτόν τον τρόπο επιτυγχάνεται μικρότερο κόστος αφού δεν υπάρχει περιττή επανεγγραφή κώδικα και το κυριότερο είναι ότι υπάρχει αυξημένη αξιοπιστία. Εφόσον ο κώδικας δουλεύει κάπου σημαίνει ότι θα δουλεύει παντού. ΚΑΒΑΛΑ 2012 11

Ένα πολύ σημαντικό κομμάτι αφορά ην αναγνώριση ενός χρήστη από την εφαμογή. Το πως θα παραμένει ο χρήστης συνδεδεμένος στην εφαμογή κατά την μετάβασή του σε διάφορα σημεία αυτής. Όπως επίσης όταν πραγματοπήσει αποσύνδεση πρέπει πατώντας back στον εξυπηρετητή του να μην εμφανίζονται δεδομένα με κίνδυνο κακόβουλης επίθεσης στην περίπτωση που χρησιμοποιεί κοινόχρηστο υπολογιστή. Για να γίνουν τα παραπάνω χρησιμοπoιήθηκε η μεταβλητή session. Οι μεταβλητές session (συνόδου) αποθηκεύουν πληροφορίες για έναν μόνο χρήστη και είναι διαθέσιμες σ όλες τις σελίδες μιας εφαρμογής. Οι κοινές πληροφορίες που αποθηκεύονται στις μεταβλητές session είναι το όνομα χρήστη (username) και ο κωδικός χρήστη (password). 2.2 Λεξικό οντοτήτων Όνομα Στο ΜΟΣ Σημασιολογία Νόημα LISTOFUSERS Συνοπτικά η λίστα με τους Τύπος Οντοτήτων εγγεγραμμένους χρήστες LISTOFUSERS με χαρακτηριστικά: id Το Id του κάθε χρήστη Integer Not Null User_name Το username του κάθε Text Not Null χρήστη comments Σχόλια για τον χρήστη Text Not Null Όνομα Στο ΜΟΣ Σημασιολογία Νόημα EBOOK_user Χρήστες Τύπος Οντοτήτων EBOOK_ με χαρακτηριστικά: id_listofusers Το id κάθε χρήστη από τον integer πίνακα listofusers id Το id του χρήστη Integer Not Null firstname Το όνομα κάθε χρήστη Text Not Null ΚΑΒΑΛΑ 2012 12

lastname Το επώνυμο κάθε χρήστη Text Not Null email Το e-mail κάθε χρήστη Text Not Null unique Όνομα Στο ΜΟΣ Σημασιολογία Νόημα BOOKS_user Τα βιβλία κάθε χρήστη Τύπος Οντοτήτων BOOKS_ με χαρακτηριστικά: id Το Id κάθε βιβλίου Integer Not Null title Ο τίτλος κάθε βιβλίου Text Not Null Author Ο συγγραφέας κάθε βιβλίου Text Not Null genre Το είδος κάθε βιβλίου Text Not Null Shared Ελεύθερο ή όχι προς Integer Not Null δανεισμό Isbn Το isbn Κάθε βιβλίου Text Noll Null comments Τα σχόλια κάθε βιβλίου Text Όνομα Στο ΜΟΣ Σημασιολογία Νόημα POSTS Οι ανακοινώσεις του κάθε THREAD Τύπος Οντοτήτων POST με χαρακτηριστικά: id Το Id του κάθε Post Integer Not Null Thread_id To id του κάθε Thread στο Integer Not Null οποίο ανείκει το κάθε Post post Το περιεχόμενο του κάθε Text Not Null Post posteduser Το username του κάθε Integer Not Null χρήστη που γράφει μέσα στο κάθε Post posteddate Η ημερομηνία που γράφτηκε το κάθε Post Timestamp without time zone ΚΑΒΑΛΑ 2012 13

Όνομα Στο ΜΟΣ Σημασιολογία Νόημα THREADS Η σειρά από posts μεταξύ Τύπος Οντοτήτων borrower και lender THREADS με χαρακτηριστικά: id Το Id του κάθε Thread Integer Not Null Title Ο τίτλος του κάθε βιβλίου Text Not Null για το οποίο υπάρχει το Thread Borrower Ο δανειζόμενος Text Not Null lender Ο δανειστής Text Not Null dateadded Η ημερομηνία που ξεκίνσε το κάθε Thread Timestamp without time zone 2.3 Δημιουργία Βάσης Δεδομένων Δημιουργία Βάσης Δεδομένων ebooks Ξεκινάμε πληκτρολογόντας στον εξυπηρετητή μας http://localhost:8080/phppgadmin/. ΚΑΒΑΛΑ 2012 14

Σχήμα 1-Δημιουργία Βάσης Δεδομένων Πραγματοποιούμε είσοδο ως χρήστης postgres και με password 930 (το οποίο ορίσαμε κατά τη εγκατάσταση της Postgresql) ΚΑΒΑΛΑ 2012 15

Σχήμα 2-Δημιουργία Βάσης Δεδομένων Πηγαίνουμε στο sql που είναι για να εκτελούμε τον sql κώδικά μας ΚΑΒΑΛΑ 2012 16

Σχήμα 3-Δημιουργία Βάσης Δεδομένων Στη συνέχεια δημιουργούμε ένα ρόλο τον ebook_admin ΚΑΒΑΛΑ 2012 17

Σχήμα 4-Δημιουργία Βάσης Δεδομένων Βλέπουμε πως ο ρόλος έχει δημιουργηθεί ΚΑΒΑΛΑ 2012 18

Σχήμα 5-Δημιουργία Βάσης Δεδομένων Στη συνέχεια δημιουργούμε τη βάση μας η οποία θα ανήκει στον ebook_admin εκτελώντας τον παρακάτω κώδικα ΚΑΒΑΛΑ 2012 19

Σχήμα 6-Δημιουργία Βάσης Δεδομένων Βλέπουμε ότι η βάση μας έχει δημιουργηθεί ΚΑΒΑΛΑ 2012 20

Σχήμα 7-Δημιουργία Βάσης Δεδομένων Στη συνέχεια θα δημιουργήσουμε τους κατάλληλους πίνακες. Ξεκινάμε με τον πίνακα listofusers εκτελώντας πλέον μέσα στη βάση ebooks ΚΑΒΑΛΑ 2012 21

Σχήμα 8-Δημιουργία Βάσης Δεδομένων Βλέπουμε αριστερά ότι ο πίνακας έχει δημιουργηθεί ΚΑΒΑΛΑ 2012 22

Σχήμα 9-Δημιουργία Βάσης Δεδομένων Συνεχίζουμε με τη δημιουργία του πίνακα threads ΚΑΒΑΛΑ 2012 23

Σχήμα 10-Δημιουργία Βάσης Δεδομένων Βλέπουμε αριστερά ότι ο πίνακας Threads έχει δημιουργηθεί ΚΑΒΑΛΑ 2012 24

Σχήμα 11-Δημιουργία Βάσης Δεδομένων Συνεχίζουμε με τη δημιουργία του πίνακα posts ΚΑΒΑΛΑ 2012 25

Σχήμα 12-Δημιουργία Βάσης Δεδομένων Βλέπουμε αριστερά ότι ο πίνακας posts έχει δημιουργηθεί ΚΑΒΑΛΑ 2012 26

Σχήμα 13-Δημιουργία Βάσης Δεδομένων Κάνουμε Logout από τη βάση και είσοδο ως χρήστης ebook_admin ΚΑΒΑΛΑ 2012 27

Σχήμα 14-Δημιουργία Βάσης Δεδομένων Δημιουργούμε τη συνάρτηση create_ebooks_user() ΚΑΒΑΛΑ 2012 28

Σχήμα 15-Δημιουργία Βάσης Δεδομένων Βλέπουμε αριστερά πως η συνάρτηση έχει δημιουργηθεί. ΚΑΒΑΛΑ 2012 29

Σχήμα 16-Δημιουργία Βάσης Δεδομένων ΚΑΒΑΛΑ 2012 30

ΚΕΦΑΛΑΙΟ 3 ΑΠΑΙΤΗΣΕΙΣ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ Διαχείριση Βιβλίου Προσθήκη Βιβλίου Οι εγγεγραμμένοι χρήστες της εφαρμογής έχουν το δικαίωμα να εισάγουν ένα καινούργιο βιβλίο στη λίστα των βιβλίων τους. Σε κάθε καινούργια εισαγωγή οι χρήστες εισάγουν διάφορα στοιχεία που αφορούν το καινούργιο βιβλίο όπως είναι ο τίτλος, ο συγγραφέας, το είδος του βιβλίου, το ISBN και προαιρετικά σχόλια ή εάν το θέσει άμμεσα προς δανεισμό. Αλλαγή στοιχείων βιβλίου Το σύστημα δίνει το δικαίωμα μόνο στον administrator να αλλάξει τα στοιχεία ενός βιβλίου ή να διαγράψει κάποιο βιβλίο. Οι χρήστες έχουν μόνο το δικαίωμα να αλλάξουν την επιλογή ελεύθερο ή όχι προς δανεισμό (shared) των βιβλίων που τους ανήκουν καθώς και τα σχόλια. Αναζήτηση Βιβλίου Αναζήτηση βιβλίου μπορούν να κάνουν όλοι οι χρήστες με βάση ορισμένα κριτήρια όπως τον τίτλο του βιβλίου, τον συγγραφέα, το είδος του βιβλίου, το ISBN, και το username κάποιου χρήστη. Υπάρχει η δυνατότητα να γίνει αναζήτηση είτε με ένα πεδίο (title υποχρεωτικά) είτε με όσα πεδία θελήσει ο χρήστης. Διαχείριση Χρηστών Εγγραφή Χρήστη ΚΑΒΑΛΑ 2012 31

Μόνο ο administrator έχει το δικαίωμα να εγγράψει έναν καινούριο χρήστη αφού πρώτα συμπληρώσει ο χρήστης μία φόρμα με τα στοιχεία που τον αφορούν (username, όνομα, επώνυμο, e-mail). Σε κάθε καινούρια εγγραφή ο administrator εισάγει επίσης και τα στοιχεία που αφορούν τον καινούριο χρήστη (username, το όνομα, το επώνυμο και το e-mail). Μεταβολή στοιχείων / Διαγραφή Χρήστη Το σύστημα δίνει το δικαίωμα μόνο στον administrator να μεταβάλλει/διαγράψει τα στοιχεία ενός χρήστη ύστερα από αίτηση του χρήστη (μέσω e-mail). Διαχείριση των Threads Έναρξη ενός καινούργιου Thread Για να ξεκινήσει ένα καινούργιο Thread αρκεί ο borrower (δανειζόμενος) να αναζητήσει το βιβλίο που θέλει και να πατήσει το κουμπί I want it!. Το Thread θα έχει ξεκινήσει ανεξαρτήτως αν θα έχει περιεχόμενο (post). Αναζήτηση ενός ήδη υπάρχοντος Thread Για να αναζητήσει ο χρήστης ένα Thread πρέπει να του ανήκει, δηλαδή να είναι ή ο δανειστής ή ο δανειζόμενος. Θα μεταβαίνει στη σελίδα του με τα Threads και βλέπει συνοπτικά τα στοιχεία των Threads. Για να ξεκινήσει ένα καινούργιο post αρκεί ο borrower (δανειζόμενος) να αναζητήσει το βιβλίο που θέλει και να πατήσει το κουμπί I want it!. Ύστερα εισάγει το μήνυμα που θέλει να γράψει στον lender (δανειστή). Τα σχόλια εμφανίζοντε στις σελίδες των lender και borrower μόνο. Διαχείριση των Posts Αναζήτηση ενός Post Αναζήτηση ενός post μπορούν να κάνουν ο borrower και ο lender που τους αφορά ένα βιβλίο. ΚΑΒΑΛΑ 2012 32

Εισαγωγή σε ένα ήδη υπάρχον Post Στις σελίδες των borrower και lender εμφανίζονται η λίστα με τα Threads που τους αφορούν. Μπαίνοντας στο κάθε Thread έχουν το δικαίωμα να εισάγουν post συνεχίζοντας το ήδη υπάρχον Thread. Διαχείριση Προγράμματος Διασύνδεση με τον χρήστη Ο κάθε χρήστης έχει την δυνατότητα της ανάγνωσης όλων των σtοιχείων των καταγεγραμμένων βιβλίων και την δυνατότητα έναρξης ενός καινούργιου Thread ακόμα και στην περίπτωση που δεν είναι ελεύθερο προς δανεισμό εκείνη τη στιγμή το βιβλίο που θέλει να δανειστεί κάποιος χρήστης. Λειτουργικές: Στον πίνακα books_ ενημερώνονται τα πεδία shared και comments όταν αλλάζει η κατάσταση ενός βιβλίου και στην αλλαγή των comments. Ο πίνακας books_ ενημερώνεται όταν γίνει προσθήκη ενός βιβλίου. Ενημερώνονται τα πεδία id, title, aythor, genre, shared, isbn,comments. Στον πίνακα listofusers, κατά την δημιουργία ενός καινούργιου χρήστη ενημερώνονται τα πεδία id, username, comments. Στον πίνακα threads όταν ξεκινήσει ένα καινούργιο Thread ενημερώνονται τα πεδία id, title, borrower, lender, dateadded. Όταν γίνει εισαγωγή ενός Post, ενημερώνονται τα πεδία id, thread_id, post, posteduser, posteddate του πίνακα posts. Μη λειτουργικές: ΚΑΒΑΛΑ 2012 33

Απαιτήσεις Υλοποίησης Απαιτήσεις Υλικού : Το περιβάλλον λειτουργίας θα είναι ένας Server. Απαιτείται σύνδεση σε δίκτυο. Απαιτήσεις Λογισμικού : 1)Το σύστημα θα λειτουργεί σε λειτουργικό σύστημα Windows 7. 2) Για τη διαχείριση της εφαρμογής απαιτείται web browser ( προτείνεται Firefox 11.0) 3) Για τη λειτουργία της εφαρμογής απαιτείται apache web server και Postgre SQL server. Απαιτήσεις Προστασίας Οι χρήστες για να έχουν πρόσβαση στην εφαρμογή πρέπει να εισάγουν : Ένα Username, το οποίο επιλέγουν κατά την εγγραφή τους Ένα Password, το οποίο τους αποστέλλει ο administrator Δικαιώματα: - Ο administrator μπορεί να κάνει εισάγει/τροποποιήσει/διαγράψει ένα βιβλίο και να εισάγει/τροποποιήσει/διαγράψει κάποιον χρήστη. - Ο κάθε χρήστης δε μπορεί να διαγράψει κάποιο βιβλίο που έχει καταχωρήσει παρά μόνο να αλλάξει την επιλογή ελεύθερο ή όχι προς δανεισμό καθώς και να μεταβάλλει τα comments. Μπορεί ακόμα στα comments του κάθε βιβλίου του να γράψει για παράδειγμα οτι το βιβλίο δεν υπάρχει πλεόν. Απαιτήσεις Λειτουργίας - Ο administrator θα έχει πρόσβαση στο στοιχεία όλων των χρηστών. Απαιτήσεις Επίδοσης ΚΑΒΑΛΑ 2012 34

- Στην αναζήτηση των βιβλίων που θα κάνουν οι χρήστες τα αποτελέσματα θα εμφανίζονται το πολύ σε 1 δευτερόλεπτο. Μηνύματα Λαθών - Το σύστημα πρέπει να δίνει τουλάχιστον τα παρακάτω μηνύματα λαθών: Connection Failed (όταν έχει γίνει λάθος στην εισαγωγή του username, του password ή και των δύο). You haven t filled all necessary fields (όταν δε μπορεί να γίνει προσθήκη ενός βιβλίου από κάποιο χρήστη). No books were found (όταν το βιβλίο με βάση τα κριτήρια αναζήτησης που θέτει ο χρήστης δεν υπάρχει ή έχει γίνει λάθος κατά την πληκτρολόγηση. You do not have permission to access this thread! (Όταν κάποιος επιχειρήσει να thread κάποιο thread που δε του ανήκει). Απαιτήσεις Διασύνδεσης με το Χρήστη - Πρόγραμμα φιλικό προς τον χρήστη που επιτρέπει ακόμη και στον πιο άπειρο χρήστη να μπορεί να αντλεί πληροφορίες για τα βιβλία. ΚΑΒΑΛΑ 2012 35

ΚΕΦΑΛΑΙΟ 4 ΣΥΜΠΕΡΑΣΜΑΤΑ ΚΑΙ ΥΠΟΔΕΙΞΕΙΣ Η εργασία που μόλις ολοκληρώθηκε θα μπορούσε να αποτελέσει εφαρμογή σε αρκετές περιπτώσεις, εφαρμόζοντας πλήρως τις δυνατότητές της ή και μόνο ένα μέρος αυτών. Θα μπορούσε να χρησιμοποιηθεί ακόμα και τη βάση κατασκευής ιστοσελίδας κοινωνικής δικτύωσης. Πλεονεκτήματα: Ο πλήρης έλεγχος από τον διαχειριστή του συστήματος Η επιτυχία δημιουργίας νέου λογαριασμού χρήστη της σελίδας με την εκτέλεση μόνο μιας συνάρτησης Η ευχρηστία περιήγησης και αναζήτησης των βιβλίων του συστήματος ακόμα και από τον πιο άπειρο χρήστη Η δυνατότητα επικοινωνίας μεταξύ δανειστή και δανειζόμενου ανά πάσα στιγμή Δεν υπάρχει χρονικός περιορισμός για το πότε θα επιστρέψει ένας δανειζόμενος κάποιο βιβλίο μιας και μπορέι να συνεννοηθεί με τον δανειστή για την επιστροφή του Η δυνατότητα του χρήστη να δανειστεί όσα βιβλία θέλει ταυτόχρονα Μειονεκτήματα: Σε περίπτωση που ένας χρήστης έκανε κάποιο λάθος κατά την προσθήκη ενός βιβλίου στη λίστα των βιβλίων του, θα πρέπει να επικοινωνήσει με τον διαχειριστή ώστε να γίνει η μετατροπή. Το ίδιο ισχύει και σε περίπτωση που θέλει να αλλάξει κάποιο από τα προσωπικά στοιχεία του ή να διαγράψει ένα βιβλίο το οποίο δεν υπάρχει πλέον. Αυτό συνεπάγεται την διαρκή παρουσία του διαχειριστή για την εύρυθμη λειτουργία της εφαρμογής. Αν τώρα θέλει ένας χρήστης να διαγράψει τον λογαριασμό του θα πρέπει ο διαχειριστής να μεταβεί στους πίνακες της βάσης και να διαγράψει τους πίνακες που τον αφορούν. Θα δημιουργηθεί πρόβλημα όμως στην περίπτωση που προσπαθήσει να διαγράψει κάποιο post/thread που αφορά τον χρήστη εφόσον το thread αφορά 2 χρήστες. Έτσι θα επηρεαστούν και τα threads και του δεύτερου χρήστη. Ομοίως πρέπει ο διαχειριστής να ελέγξει αν ο χρήστης (ο οποίος θέλει να διαγραφεί) έχει εκκρεμότητα ΚΑΒΑΛΑ 2012 36

δανεισμού. Αν οφείλει δηλαδή να επιστρέψει κάποιο βιβλίο ή αν έχει δανείσει ο ίδιος ένα βιβλίο σε άλλο χρήστη. Ιδέες για επιπλέον εργασία... Θα μπορούσε η εφαρμογή εκτός από την ανταλλαγή βιβλίων να δίνει την δυνατότητα στους χρήστες να κάνουν upload ψηφιακό υλικό και έπειτα να δίνεται η δυνατότητα στους χρήστες για ανάγνωσή του. Μια ενδιαφέρουσα επέκταση θα μπορούσε να είναι ένα forum χρηστών για συζήτηση και σχολιασμό των βιβλίων αλλά και η δυνατότητα ανάρτησης για κάποιο βιβλίο που επιθυμεί κάποιος χρήστης να δανειστεί, ενώ αυτό δεν υπάρχει, έτσι ώστε σε περίπτωση που κάποιος το έχει αλλά δεν το έχει καταχωρήσει με αυτό τον τρόπο να δραστηριοποιηθεί. Με διαφορετικό σχεδιασμό της εφαρμογής να γίνεται διαγραφή ενός χρήστη και της λίστας των βιβλίων του αυτόματα (εφόσον το επιθυμεί ο χρήστης) και να κρατείται ιστορικό στη βάση ύστερα από τη διαγραφή. Η εγγραφή ενός καινούργιου χρήστη να γίνεται απευθείας από τη βάση και όχι μέσω e-mail του διαχειριστή. Να ελέγχονται τα στοιχεία του και να εισάγει ο χρήστης το επιθυμητό password και εάν πληρούν τις προυποθέσεις να γίνεται η εγγραφή του και η δημιουργία των αιτούμενων πινάκων αυτόματα. Να προστεθούν λειτουργίες με τη χρήση της Ajax για άμεση ενημέρωση ενός χρήστη αν έχει υπάρξει μεταβολή της σελίδας. Με τη χρήση της Ajax δεν χρειάζεται ο χρήστης να ξαναφορτώσει τη σελίδα. ΚΑΒΑΛΑ 2012 37

ΠΑΡΑΡΤΗΜΑ Α ΕΓΚΑΤΑΣΤΑΣΕΙΣ ΠΡΟΓΡΑΜΜΑΤΩΝ Εγκατάσταση phppgadmin 9.1.1-1 Για να ξεκινήσουμε την εγκατάσταση της PostgreSQL τρέχουμε τον installer postgresql-9.1.1-1- windows.exe και πατάμε next. Σχήμα 17-Βήματα εγκατάστασης PhpPgAdmin Στη συνέχεια καλούμαστε να επιλέξουμε το φάκελο στον οποίο θέλουμε να γίνει η εγκατάσταση. ΚΑΒΑΛΑ 2012 38

Σχήμα 18-Βήματα εγκατάστασης PhpPgAdmin Επειδή όμως η εγκατάσταση πρέπει να γίνει σε διαδρομή φακέλου χωρίς κενά στην ονομασία για την αποφυγή προβλημάτων, φτιάχνουμε ένα φάκελο στο C: με όνομα Postgresql, τον αναζητούμε και πατάμε next. ΚΑΒΑΛΑ 2012 39

Σχήμα 19-Βήματα εγκατάστασης PhpPgAdmin Στη συνέχεια επιλέγουμε τον κατάλογο στον οποίο θέλουμε να γίνει η αποθήκευση των δεδομένων μας, και πατάμε next. ΚΑΒΑΛΑ 2012 40

Σχήμα 20-Βήματα εγκατάστασης PhpPgAdmin Παρακάτω καλούμαστε να συμπληρώσουμε το password για την είσοδο στη βάση δεδομένων. ΚΑΒΑΛΑ 2012 41

Σχήμα 21-Βήματα εγκατάστασης PhpPgAdmin Θα ορίσουμε ως password τον αριθμό 930 και στη συνέχεια πατάμε next ΚΑΒΑΛΑ 2012 42

Σχήμα 22-Βήματα εγκατάστασης PhpPgAdmin Παρακάτω επιλέγουμε τη διαθέσιμη πόρτα του server μας. Αφήνουμε την επιλογή 5432 και πατάμε next ΚΑΒΑΛΑ 2012 43

Σχήμα 23-Βήματα εγκατάστασης PhpPgAdmin Ύστερα επιλέγουμε από το drop down menu την τοποθεσία που θα γίνει χρήση της βάσης δεδομένων (Greek,Greece) και πατάμε next. ΚΑΒΑΛΑ 2012 44

Σχήμα 24-Βήματα εγκατάστασης PhpPgAdmin Η εγκατάσταση λοιπόν της postgresql είναι έτοιμη να ξεκινήσει, πατάμε next ΚΑΒΑΛΑ 2012 45

Σχήμα 25-Βήματα εγκατάστασης PhpPgAdmin Στη συνέχεια βλέπουμε την πρόοδο της εγκατάστασης ΚΑΒΑΛΑ 2012 46

Σχήμα 26-Βήματα εγκατάστασης PhpPgAdmin Όταν ολοκληρωθεί η εγκατάσταση εμφανίζεται το παρακάτω παράθυρο και πατάμε finish. ΚΑΒΑΛΑ 2012 47

Σχήμα 27-Βήματα εγκατάστασης PhpPgAdmin Στη συνέχεια επιλέγουμε από το drop down menu PostgreSQL 9.1 on port 5432 και πατάμε next. ΚΑΒΑΛΑ 2012 48

Σχήμα 28-Βήματα εγκατάστασης PhpPgAdmin Εδώ μας δίνεται η δυνατότητα να επιλέξουμε τις εφαρμογές που θέλουμε να εγκαταστήσουμε. Θα χρειαστούμε τον Apache/PHP v2.2.20-5.3.8-1 και το phppgadmin v5.0.2-1 τα οποία βρίσκονται στο Web Development και πατάμε next. ΚΑΒΑΛΑ 2012 49

Σχήμα 29-Βήματα εγκατάστασης PhpPgAdmin Στη συνέχεια βλέπουμε τιε επιλογές μας και πατάμε next ΚΑΒΑΛΑ 2012 50

Πατάμε next για να ξεκινήσει η εγκατάσταση Σχήμα 30-Βήματα εγκατάστασης PhpPgAdmin ΚΑΒΑΛΑ 2012 51

Σχήμα 31-Βήματα εγκατάστασης PhpPgAdmin Στη συνέχεια εμφανίζεται το παρακάτω παράθυρο για την εγκατάσταση του Apache/Php, πατάμε next. ΚΑΒΑΛΑ 2012 52

Σχήμα 32-Βήματα εγκατάστασης PhpPgAdmin Αν έχουμε εγκαταστήσει πάλι τον Apache εμφανίζεται το παρακάτω μήνυμα. Πατάμε next ΚΑΒΑΛΑ 2012 53

Σχήμα 33-Βήματα εγκατάστασης PhpPgAdmin Τώρα είναι έτοιμη να ξεκινήσει η εγκατάσταση, πατάμε next ΚΑΒΑΛΑ 2012 54

Σχήμα 34-Βήματα εγκατάστασης PhpPgAdmin Στη συνέχεια βλέπουμε την πρόοδο της εγκατάστασης και περιμένουμε εως ότου ολοκληρωθεί. ΚΑΒΑΛΑ 2012 55

Μόλις ολοκληρωθεί πατάμε finish Σχήμα 35-Βήματα εγκατάστασης PhpPgAdmin ΚΑΒΑΛΑ 2012 56

Σχήμα 36-Βήματα εγκατάστασης PhpPgAdmin Βλέπουμε οτι ολοκληρώθηκε οπότε πατάμε Next για να συνεχίσουμε ΚΑΒΑΛΑ 2012 57

Σχήμα 37-Βήματα εγκατάστασης PhpPgAdmin Τώρα θα ξεκινήσουμε την εγκατάσταση του PhpPgAdmin. Πατάμε next ΚΑΒΑΛΑ 2012 58

Σχήμα 38-Βήματα εγκατάστασης PhpPgAdmin Καλούμαστε να ορίσουμε host, port και τη διαδρομή. Κρατάμε τις προεπιλεγμένες ρυθμίσεις και πατάμε next ΚΑΒΑΛΑ 2012 59

Σχήμα 39-Βήματα εγκατάστασης PhpPgAdmin Όλα είναι έτοιμα για την εγκατάσταση πατάμε next για να ξεκινήσει ΚΑΒΑΛΑ 2012 60

Σχήμα 40-Βήματα εγκατάστασης PhpPgAdmin Παρακάτω ενημερωνόμαστε για την πορεία της εγκατάστασης ΚΑΒΑΛΑ 2012 61

Μόλις τελειώσει η εγκατάσταση πατάμε finish Σχήμα 41-Βήματα εγκατάστασης PhpPgAdmin ΚΑΒΑΛΑ 2012 62

Σχήμα 42-Βήματα εγκατάστασης PhpPgAdmin Και πάλι finish ΚΑΒΑΛΑ 2012 63

Εγκατάσταση Editor Notepad++ Για να ξεκινήσουμε την εγκατάσταση του Notepad++ τρέχουμε το εκτελέσιμο αρχείο npp.5.9.6.2.installer.exe. Επιλέγουμε τη γλώσσα (Ελληνικά) και πατάμε ΟΚ. Σχήμα 43-Βήματα εγκατάστασης Notepad++ Κλείνουμε όλες τις εφαρμογές για να ξεκινήσουμε την εγκατάσταση και πατάμε Επόμενο. Σχήμα 44-Βήματα εγκατάστασης Notepad++ Αποδεχόμαστε τους όρους άδειας χρήσης και πατάμε Συμφωνώ. ΚΑΒΑΛΑ 2012 64

Σχήμα 45-Βήματα εγκατάστασης Notepad++ Επιλέγουμε το φάκελο στον οποίο θα γίνει η εγκατάσταση και πατάμε Επόμενο. ΚΑΒΑΛΑ 2012 65

Σχήμα 46-Βήματα εγκατάστασης Notepad++ Εδώ μας δίνεται η δυνατότητα να επιλέξουμε τα στοιχεία που θέλουμε να εγκαταστήσουμε. Κρατάμε τις προεπιλεγμένες ρυθμίσεις και πατάμε Επόμενο. ΚΑΒΑΛΑ 2012 66

Σχήμα 47-Βήματα εγκατάστασης Notepad++ Δημιουργούμε μια συντόμευση για το Notepad++ στην επιφάνεια εργασίας επιλέγοντας Create Shortcut on Desktop και πατάμε Εγκατάσταση. ΚΑΒΑΛΑ 2012 67

Σχήμα 48-Βήματα εγκατάστασης Notepad++ Παρακάτω βλέπουμε την πρόοδο της εγκατάστασης ΚΑΒΑΛΑ 2012 68

Σχήμα 49-Βήματα εγκατάστασης Notepad++ Μόλις ολοκληρωθεί η εγκατάσταση πατάμε Τέλος. ΚΑΒΑΛΑ 2012 69

ΠΑΡΑΡΤΗΜΑ Β - ΕΓΧΕΙΡΙΔΙΟ ΛΕΙΤΟΥΡΓΙΑΣ ΓΙΑ ΤΟΝ ΧΡΗΣΤΗ Είσοδος στην εφαρμογή Η αρχική σελίδα της εφαρμογής είναι η http://localhost:8080/ Εγγεγραμμένος χρήστης Για να εισέλθει κάποιος εγγεγραμμένος χρήστης στην εφαρμογή πρέπει να πληκτρολογήσει το user name και το password και ύστερα να πατήσει το κουμπί Log in για να συνδεθεί. Μη εγγεγραμμένος χρήστης ΚΑΒΑΛΑ 2012 70

Αν ο χρήστης εισέρχεται πρώτη φορά στην εφαρμογή πρέπει να κάνει εγγραφή. Πατώντας στο Register ξεκινάει η διαδικασία εγγραφής. Εγγραφή καινούργιου χρήστη Οι μη εγγεγραμμένοι χρήστες συμπληρώνουν μια φόρμα με τα στοιχεία τους και κατόπιν στέλνεται με e-mail στον διαχειριστή ώστε να στείλει το password στον καινούργιο χρήστη. ΚΑΒΑΛΑ 2012 71

Τα στοιχεία που καταχώρισε ο χρήστης έχουν περαστεί αυτόματα στο περιεχόμενο του e-mail ΚΑΒΑΛΑ 2012 72

Αρχική σελίδα συνδεδεμένου χρήστη Η αρχική σελίδα του εγγεγραμμένου χρήστη - καλωσόρισμα. ΚΑΒΑΛΑ 2012 73

Από το menu Personal Data εμφανίζονται τα προσωπικά στοιχεία του χρήστη. ΚΑΒΑΛΑ 2012 74

Από το menu Books ο χρήστης έχει τη δυνατότητα να προσθέσει ένα καινούργιο βιβλίο, να αλλάξει την κατάστασή του ελεύθερο ή όχι προς δανεισμό και να δει τα πλήρη στοιχεία του κάθε βιβλίου. Από εδώ μπορεί να μεταβεί στο edit book ώστε να τροποποιήσει τα σχόλια του κάθε βιβλίου. ΚΑΒΑΛΑ 2012 75

Αλλαγή στοιχείων βιβλίου Ο χρήστης τροποποιεί τα σχόλια του κάθε βιβλίου και πατώντας το κουμπί Update αλλάζουν τα στοιχεία του βιβλίου. ΚΑΒΑΛΑ 2012 76

Προσθήκη ενός καινούργιου βιβλίου Για την προσθήκη ενός βιβλίου απαιτείται ο τίτλος, ο συγγραφέας, το είδος βιβλίου και το ISBN. Ο χρήστης αν θέλει εισάγει σχόλια και επιλέγει αν θα είναι ελεύθερο ή όχι προς δανεισμό το βιβλίο εκείνη τη χρονική στιγμή. Τα σχόλια και την κατάσταση του βιβλίου μπορεί να τα τροποποιήσει όποια στιγμή θελήσει. Πατώντας το κουμπί Submit γίνεται η καταχώριση και πατώντας το κουμπί Clear γίνεται διαγραφή όσων έχουν γραφτεί. ΚΑΒΑΛΑ 2012 77

Στη συνέχεια εμφανίζονται τα παρακάτω: ΚΑΒΑΛΑ 2012 78

Το βιβλίο εμφανίζεται αν έγινε η προσθήκη του με επιτυχία. Από εδώ αλλάζουμε την κατάστασή του και τα σχόλια. ΚΑΒΑΛΑ 2012 79

Αναζήτηση ενός βιβλίου Πατώντας από το menu το Search γίνεται η αναζήτηση ενός βιβλίου. Υποχρεωτικό πεδίο είναι ο τίτλος και προαιρετικά συγγραφέας, είδος, ISBN, και το όνομα του χρήστη ο οποίος μπορεί να έχει το βιβλίο. Τα στοιχεία εισάγονται με κεφαλαία ή πεζά. Στα αποτελέσματα της αναζήτησης εμφανίζονται και βιβλία που μπορεί να έχει ο χρήστης Πατώντας στο κουμπί See all εμφανίζονται τα πλήρη στοιχεία του κάθε βιβλίου ενώ πατώντας το κουμπί i want it ξεκινάει η «συνομιλία» μεταξύ δανειστή και δανειζόμενου. Το κουμπί i want it εμφανίζεται δίπλα στα βιβλία που δεν ανήκουν στον συνδεδεμένο χρήστη. ΚΑΒΑΛΑ 2012 80

Εισαγωγή ενός καινούργιου Post Εδώ ξεκινούν οι ανακοινώσεις που εμφανίζονται στον δανειστή και στον δανειζόμενο. Μόλις ο χρήστης πατήσει το κουμπί Post θα εμφανιστεί και στους δύο το μήνυμα. ΚΑΒΑΛΑ 2012 81

Από το menu πατώντας Threads εμφανίζεται μια λίστα με τα βιβλία για τα οποία έχει εκδηλωθεί ενδιαφέρον ανταλλαγής. Ο κάθε χρήστης έχει δικαίωμα να ξεκινήσει ένα Thread για το ίδιο βιβλίο όσες φορές θέλει αλλά και πατώντας το κουμπί read να συνεχίσει να γράφει ανακοινώσεις στο ήδη υπάρχον Post. ΚΑΒΑΛΑ 2012 82

Εισαγωγή σε ένα ήδη υπάρχον Post Το Thread είναι ορατό μόνο στον δανειστή (lender) και δανειζόμενο (borrower). Ο καθένας από τους δύο μπορεί να μπεί στο Post να συνεχίσει τη ροή των ανακοινώσεων και να ενημερωθεί και ο άλλος μόλις πατηθεί το κουμπί Post. ΚΑΒΑΛΑ 2012 83

Αποσύνδεση χρήστη Ανά πάσα στιγμή ο συνδεδεμένος χρήστης μπορεί να αποσυνδεθεί πατώντας από το μενού επιλογών το κουμπί Logout. Αν όντως θέλει να αποσυνδεθεί πατάει το κουμπί exit και επιστρέφει στο http://localhost:8080 Ακόμα και να πατήσει ο χρήστης στον εξυπηρετητή του το back δε θα μπορεί να προβάλλει δεδομένα. ΚΑΒΑΛΑ 2012 84

ΠΑΡΑΡΤΗΜΑ Γ ΣΧΕΔΙΑΣΗ ΣΧΕΣΙΑΚΗΣ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ Μοντέλο οντοτήτων συσχετίσεων Το Μοντέλο Οντοτήτων Συσχετίσεων (Entity Relationship Model, ER Model) είναι μια διαγραμματική αναπαράσταση της δομής μιας βάσης δεδομένων και χρησιμοποιείται κατά τη φάση του λογικού σχεδιασμού της βάσης. Δηλαδή, δεν ασχολείται με τον τρόπο που αποθηκεύονται τα δεδομένα της βάσης, αλλά με την ταυτοποίηση των δεδομένων και τον τρόπο με τον οποίο αυτά συσχετίζονται μεταξύ τους. Τα δομικά του στοιχεία είναι τα εξής: Ορθογώνιο παραλληλόγραμμο που συμβολίζει μια οντότητα, Ρόμβος που συμβολίζει μία σχέση, Έλλειψη που συμβολίζει μια ιδιότητα μιας οντότητας ή μιας σχέσης, Έλλειψη με υπογράμμιση μιας ιδιότητας που συμβολίζει το κύριο κλειδί Τα σχήματα αυτά φέρουν το όνομα της αντίστοιχης οντότητας της σχέσης και συνδέονται μεταξύ τους με ευθύγραμμα τμήματα. Με τον όρο οντότητα (entity) εννοούμε ένα αντικείμενο, ένα πρόσωπο, μια κατάσταση και γενικά οτιδήποτε μπορεί να προσδιοριστεί σαν ανεξάρτητη ύπαρξη. Με τον όρο σχέση (relationship) ανφερόμαστε στον τρόπο σύνδεσης (επικοινωνίας) δύο ξεχωριστών οντοτήτων, ώστε να μπορούμε να αντλούμε στοιχελία (πληροφορίες) από τον συνδιασμό τους. Με τον όρο ιδιότητα μιας οντότητας ή μιας σχέσης αναφερόμαστε σ ένα από τα συστατικά της στοιχεία που την περιγράφουν και την κάνουν να ξεχωρίζει από τα άλλα στοιχεία τς ίδιας οντότητας. Για παράδειγμα, η οντότητα ΒΙΒΛΙΟ μπορεί να έχει ως ιδιότητες (χαρακτηριστικά) τον τίτλο, τον συγγραφέα, το είδος, το ISBN,τα comments και το id με τη βοήθεια των οποίων μπορούμε να ξεχωρίσουμε τα βιβλία μεταξύ τους. Επίσης, η οντότητα ΧΡΗΣΤΗΣ μπορεί να έχει ως ιδιότητες (χαρακτηριστικά) το username, το όνομα του χρήστη, το επώνυμο, το e-mail και ΚΑΒΑΛΑ 2012 85

τον κωδικό πρόσβασης, με τη βοήθεια των οποίων μπορούμε να ξεχωρίσουμε τους χρήστες μεταξύ τους. Με τον όρο κύριο κλειδί ή πρωτεύον κλειδί (primary key) μιας οντότητας καλείται εκείνη η ιδιότητα (ή ο συνδιασμός ιδιοτήτων) που έχει μοναδική τιμή για όλα τα στιγμιότυπα (εμφανίσεις) της οντότητας. Υπάρχουν περιπτώσεις όπου το πεδίο κλειδί ενός τύπου οντότητας μπορεί να μην είναι απλό αλλά σύνθετο, να αποτελείται δηλαδή από πολλά απλά πεδία και τότε η συνθήκη της μοναδικότητας για την τιμή του κλειδιού δεν εφαρμόζεται σε κάθε πεδίο του σύνθετου κλειδιού αλλά στο σύνολο του συνδιασμού αυτών των πεδίων. ΚΑΒΑΛΑ 2012 86

Σχήμα 50- Μ.Ο.Σ. Κανόνες για τη μετάβαση από το Μοντέλο Οντοτήτων Συσχετήσεων στη Σχεσιακή Βάση Δεδομένων 1. Για κάθε οντότητα θα έχεις έναν πίνακα που θα περιλαμβάνει σαν στήλες, τουλάχιστον όλες τις ιδιότητες της. Το κύριο κλειδί της οντότητας, θα είναι κύριο κλειδί του πίνακα που θα αναπαριστά η οντότητα. 2. Αν η σχέση μεταξύ δύο οντοτήτων είναι τύπου 1: Ν, προσθέτεις στην οντότητα που έχει πληθικότητα Ν το κύριο κλειδί της άλλης σαν ξένο κλειδί. 3. Αν η σχέση μεταξύ δύο οντοτήτων είναι τύπου Μ : Ν, κατασκευάζεις ξεχωριστό πίνακα που περιλαμβάνει τα κύρια κλειδιά των οντοτήτων σαν ΚΑΒΑΛΑ 2012 87

ξένα κλειδιά. 4. Αν η σχέση μεταξύ δύο οντοτήτων είναι τύπου 1 : 1, τότε δεν κατασκευάζεις ξεχωριστό πίνακα απλά προσθέτεις το κλειδί της 1ης οντότητας στην 2η οντότητα σαν ξένο. Ποτέ και τα δύο. Λογικός Σχεδιασμός μιας Βάσης Δεδομένων Αφού έχουμε δημιουργήσει το διάγραμμα οντοτήτων συσχετίσεων και έχουμε επιλέξει το σχεσιακό μοντέλο δεδομένων για την υλοποίηση της βάσης δεδομένων, ακολουθούμε τη διαδικασία της κανονικοποίησης και είμαστε έτοιμοι για την καταχώριση των στοιχείων της βάσης δεδομένων. Ανάλογα τώρα με το είδος της διμελούς συσχέτισης, διακρίνουμε τις εξής περιπτώσεις ως προς τον λογικό σχεδιασμό που θα πρέπει να ακολουθήσουμε : Αν η συσχέτιση των δύο πινάκων είναι ένα-προς-ένα, τότε μπορούμε είτε να συνενώσουμε τους δύο πίνακες, με τις αντίστοιχες εγγραφές φυσικά, ή να προσθέσουμε το ένα από τα δύο πεδία κλειδιά σαν ξένο κλειδί στον άλλον πίνακα ή τέλος να δημιουργήσουμε έναν καινούργιο πίνακα με μόνα πεδία τα πεδία κλειδιά των δύο πινάκων (σύνθετο κλειδί). Η προτιμότερη διαδικασία είναι η πρώτη, δηλ. η συνένωση των δύο πινάκων σ έναν ενιαίο πίνακα. Αν η συσχέτιση των δύο πινάκων είναι ένα-προς-πολλά, τότε μπορούμε είτε να προσθέσουμε το ένα από τα δύο πεδία κλειδιά σαν ξένο κλειδί στον άλλον πίνακα ή να δημιουργήσουμε έναν καινούργιο πίνακα με μόνα πεδία τα πεδία κλειδιά των δύο πινάκων (σύνθετο κλειδί). Η προτιμότερη διαδικασία είναι η πρώτη, δηλ. η προσθήκη του ξένου κλειδιού στην πλευρά πολλά της σχέσης. Αν η συσχέτιση των δύο πινάκων είναι πολλά-προς-πολλά, τότε το μόνο που μπορούμε και πρέπει να κάνουμε είναι να δημιουργήσουμε έναν καινούργιο πίνακα με μόνα πεδία τα πεδία κλειδιά των δύο πινάκων (σύνθετο κλειδί), όπου το κάθε πεδίο κλειδί από μόνο του γίνεται ξένο κλειδί. Οι δύο αρχικοί πίνακες δεν μεταβάλλονται. Οντότητες ΚΑΒΑΛΑ 2012 88

LISTOFUSERS (id, username, comments) EBOOK_user (id_listofusers, id, firstname, lastname, e-mail) BOOKS_user (id, title, author, genre, shared, isbn, comments) THREADS (id, title, borrower, lender, dateadded) POSTS (id, threadid, post, posteduser, posteddate) Σχέσεις LISTOFUSERS - έχει EBOOK_user, 1:N EBOOK_user - διαχειρίζεται THREADS, 1:Ν THREAD - περιέχει POSTS 1:N EBOOK_user έχει BOOKS_user, 1:N Η Κανονικοποίηση Τα προβλήματα που είναι πιθανό να παρουσιασθούν κατά τη διαδικασία της υλοποίησης του σχεδιασμού μιας βάσης δεδομένων είναι η περιττή (άσκοπη) επανάληψη πληροφοριών, που είναι γνωστή με τον όρο redundancy, καθώς και δυσκολίες στην ενημέρωση της βάσης δεδομένων. Τα παραπάνω προβλήματα είναι γνωστά ως πλεονασμοί δεδομένων και ανωμαλίες ενημέρωσης και για να αντιμετωπιστούν με επιτυχία, θα πρέπει να διασπάσουμε τις μεγάλες σχέσεις σε μικρότερες. Αυτό γίνεται με τη διαδικασία της κανονικοποίησης, έτσι ώστε η βάση δεδομένων να είναι έτοιμη για καταχώριση στοιχείων. ΚΑΒΑΛΑ 2012 89

Η κανονικοποίηση (normalization) είναι μια τεχνική που ασχολείται με την ανάλυση των σχέσεων (συσχετίσεων) σε μια βάση δεδομένων, όπου κάνουμε μετατροπή των αρχικών μεγάλων σχέσεων σε μικρότερες. Πλεονασμός Δεδομένων και Ανωμαλίες Ενημέρωσης Με τον όρο πλεονασμός δεδομένων (data redundancy) εννοούμε την άσκοπη επανάληψη στοιχείων (πληροφοριών). Τα προβλήματα που προκύπτουν από τον πλεονασμό δεδομένων είναι γνωστά με τον όρο ανωμαλίες ενημέρωσης (update anomalies). Αν αποφασίσουμε να δημιουργήσουμε έναν μόνον πίνακα, όπου σε κάθε γραμμή (εγγραφή) του θα υπάρχουν όλα τα στοιχεία της παραγγελίας και δίπλα όλα τα στοιχεία του πελάτη που έχει κάνει την παραγγελία, τότε θα έχουμε πέσει στην παγίδα του πλεονασμού δεδομένων και αυτό γιατί τα στοιχεία του κάθε πελάτη θα επαναλαμβάνονται για κάθε παραγγελία που έχει κάνει. Ανωμαλία εισαγωγής έχουμε στην περίπτωση που θελήσουμε να καταχωρήσουμε μια καινούργια παραγγελία, οπότε θα πρέπει να καταχωρήσουμε εκ νέου κι όλα τα στοιχεία του χρήστη που έκανε τη συγκεκριμένη παραγγελία, κάτι που είναι κουραστικό, χρονοβόρο και περιέχει τον κίνδυνο λαθών. Ένα άλλο πρόβλημα με ανωμαλία εισαγωγής έχουμε στην περίπτωση που θελήσουμε να καταχωρήσουμε ένα καινούργιο χρήστη ο οποίος δεν έχει κάνει ακόμα καμία παραγγελία, οπότε η βάση δεδομένων δεν θα μας το επιτρέψει και αυτό γιατί δεν δέχεται κενή τιμή (null) για το πεδίο κλειδί Κωδικός Παραγγελίας. Ανωμαλία διαγραφής έχουμε στην περίπτωση που θελήσουμε να διαγράψουμε μια παραγγελία που είναι η μοναδική ενός χρήστη, οπότε θα χάσουμε και όλες τις πληροφορίες του συγκεκριμένου πελάτη. Ανωμαλία τροποποίησης έχουμε στην περίπτωση που θελήσουμε να αλλάξουμε κάποιο στοιχείο ενός χρήστη, όπως το επώνυμο του, οπότε θα πρέπει να τροποποιήσουμε όλες τις εγγραφές του πίνακα όπου εμφανίζεται ο συγκεκριμένος χρήστης. Αν δεν κάνουμε την αλλαγή σ όλες τις εγγραφές, τότε ο χρήστης θα εμφανίζεται να έχει δύο επίθετα κοκ. Μιλάμε τότε για μη συνεπή (inconsistent) βάση δεδομένων. ΚΑΒΑΛΑ 2012 90

Ως γνωστόν, η λύση στο παραπάνω πρόβλημα είναι να δημιουργήσουμε έναν πίνακα με τα στοιχεία των χρηστών και έναν ξεχωριστό πίνακα με τα στοιχεία των παραγγελιών, όπου θα υπάρχει και σαν πεδίο (ξένο κλειδί) ο Κωδικός Χρήστη. ΚΑΒΑΛΑ 2012 91

ΠΑΡΑΡΤΗΜΑ Δ - ΠΡΟΔΙΑΓΡΑΦΕΣ Όνομα διεργασίας 1 Περιγραφή Δεδομένα εισόδου Έλεγχος στοιχείων για το χρήστη Ο χρήστης του συστήματος θα πληκτρολογεί έναν όνομα χρήστη και ένα κωδικό για πρόσβαση στο σύστημα (username, password) -Όνομα Χρήστη (username) -Κωδικός Χρήστη (password) Προέλευση Δεδομένα εξόδου Προορισμός Απαίτηση Προϋπόθεση Αποτέλεσμα Πλευρικά φαινόμενα Πληκτρολόγιο Μήνυμα υποδοχής ή απόρριψης Οθόνη Ο χρήστης να υπάρχει στη βάση Εισαγωγή σωστού Ονόματος χρήστη και Κωδικού πρόσβασης Εισαγωγή στο σύστημα ή επιστροφή στην αρχική σελίδα Κανένα Όνομα διεργασίας 2 Περιγραφή Εγγραφή νέου χρήστη Ο administrator είναι αυτός που έχει πρόσβαση στην βάση δεδομένων έτσι ώστε να εισάγει απευθείας έναν χρήστη στη βάση. Ο κάθε χρήστης συμπληρώνει κατά την εγγραφή του μια φόρμα με τα στοιχεία του και κατόπιν στέλνονται στον διαχειριστή μέσω e-mail. ΚΑΒΑΛΑ 2012 92

Κάθε εγγραφή περιλαμβάνει και τα εξής στοιχεία του χρήστη: - Όνομα χρήστη (username) - Όνομα - Επώνυμο - e-mail Δεδομένα εισόδου Προέλευση Δεδομένα εξόδου Στοιχεία χρήστη (όλα τα παραπάνω) Πληκτρολόγιο Δημιουργία εγγραφής Προορισμός Πίνακας listofusers Προϋπόθεση Απαίτηση Πλευρικά φαινόμενα Ύπαρξη καινούριου χρήστη To email θα πρέπει να είναι έγκυρο Κανένα Όνομα διεργασίας 3 Περιγραφή Δεδομένα εισόδου Αλλαγή Στοιχείων χρήστη Ο administrator έχει το δικαίωμα να κάνει τροποποιήσεις στα στοιχεία του χρήστη. Ο κάθε χρήστης μπορεί αν θέλει να αλλάξει κάποιο από τα στοιχεία του να επικοινωνήσει μέσω e-mail με τον administrator και έτσι να γίνει η τροποποίηση. Στοιχεία χρήστη ΚΑΒΑΛΑ 2012 93

Προέλευση Δεδομένα εξόδου Προορισμός Προϋπόθεση Απαίτηση Πλευρικά φαινόμενα Πληκτρολόγιο Νέα στοιχεία χρήστη Ενημέρωση στους πίνακες listofusers και ebook_ Ύπαρξη καινούριων στοιχείων Τα καινούρια δεδομένα πρέπει να είναι σωστά Λάθος τροποποίηση χρήστη Όνομα διεργασίας 4 Περιγραφή Δεδομένα εισόδου Προσθήκη βιβλίου Ο κάθε χρήστης μπορεί να προσθέσει βιβλία Κάθε προσθήκη περιλαμβάνει και τα εξής στοιχεία του βιβλίου: - Τίτλο - Συγγραφέα - Είδος - ISBN - Σχόλια - Ελεύθερο ή όχι προς δανεισμό Προέλευση Δεδομένα εξόδου Προορισμός Πληκτρολόγιο, ποντίκι Εισαγωγή βιβλίου Πίνακας books_ ΚΑΒΑΛΑ 2012 94

Προϋπόθεση Απαίτηση Πλευρικά φαινόμενα Ύπαρξη καινούριου βιβλίου Τα δεδομένα εισόδου θα πρέπει να είναι έγκυρα Κανένα Όνομα διεργασίας 5 Περιγραφή Δεδομένα εισόδου Προέλευση Δεδομένα εξόδου Προορισμός Προϋπόθεση Απαίτηση Πλευρικά φαινόμενα Τροποποίηση Βιβλίου Ο administrator έχει δικαίωμα να κάνει μία τροποποίηση ενός βιβλίου, ο χρήστης έχει το δικαίωμα να αλλάξει μόνο τα comments και την επιλογή shared Στοιχεία βιβλίου προς τροποποίηση Πληκτρολόγιο, Ποντίκι Νέα στοιχεία βιβλίου Ενημέρωση στον πίνακα books_ Ύπαρξη καινούριων στοιχείων Τα καινούρια δεδομένα πρέπει να είναι σωστά Κανένα Όνομα διεργασίας 6 Περιγραφή Αναζήτηση βιβλίου Όλοι οι χρήστες μπορούν να κάνουν μια αναζήτηση βιβλίου. Η αναζήτηση γίνεται με βάση κάποιων συγκεκριμένων πεδίων. ΚΑΒΑΛΑ 2012 95

Δεδομένα εισόδου Αναζήτηση βιβλίου με βάση τα εξής πεδία: - Τίτλο - Συγγραφέα - Είδος - ISBN - User (Όνομα του χρήστη στον οποίο ανήκει το βιβλίο) Προέλευση Δεδομένα εξόδου Πληκτρολόγιο Στοιχεία βιβλίου με βάση την αναζήτηση που έκανε. Τα στοιχεία που εμφανίζονται είναι τα εξής: - Τίτλο - Συγγραφέα - Είδος - ISBN - User (Όνομα του χρήστη στον οποίο ανήκει το βιβλίο) Προορισμός Προϋπόθεση Απαίτηση Πλευρικά φαινόμενα Εμφάνιση στην Οθόνη Να υπάρχει ως εγγραφή ότι αναζητεί ο χρήστης Η επιλογή που θα επιλέξει ο χρήστης να είναι εντός ορίων. Κανένα ΚΑΒΑΛΑ 2012 96

Όνομα διεργασίας 7 Περιγραφή Δεδομένα εισόδου Προέλευση Δεδομένα εξόδου Προορισμός Προϋπόθεση Απαίτηση Πλευρικά φαινόμενα Έναρξη ενός Thread Όλοι οι χρήστες μπορούν να ξεκινήσουν ένα καινούργιο Thread Αναζήτηση ενός βιβλίου και ύστερα επιλογή I want it! Πληκτρολόγιο, Ποντίκι Σελίδα Posts Εμφάνιση στην οθόνη Να έχει επιλέξει ο χρήστης το I want it! Το βιβλίο να μην ανήκει στον χρήστη που ξεκινάει το Thread Κανένα Όνομα διεργασίας 8 Περιγραφή Δεδομένα εισόδου Προέλευση Δεδομένα εξόδου Προορισμός Προϋπόθεση Απαίτηση Αναζήτηση ενός Thread Ο κάθε χρήστης μπορεί να αναζητήσει κάποιο Thread Μόνο στην περίπτωση που είναι ίδιος είτε δανειστής (lender) είτε δανειζόμενος (borrower) Σελίδα Threads Ποντίκι Όλα τα Threads στα οποία συμμετέχει Οθόνη Να υπάρχει το Thread Καμία ΚΑΒΑΛΑ 2012 97

Πλευρικά φαινόμενα Κανένα Όνομα διεργασίας 9 Περιγραφή Δεδομένα εισόδου Προέλευση Δεδομένα εξόδου Προορισμός Προϋπόθεση Απαίτηση Πλευρικά φαινόμενα Εισαγωγή πρώτου Post Αφού ο χρήστης επιλέξει το I want it, πληκτρολογεί το μήνυμα που θέλει να εμφανιστεί στις σελίδες και του δανειστή και του δανειζόμενου (ίδιου) Το post που πληκτρολογεί Πληκτρολόγιο Το ίδιο το Post Οθόνη Ύπαρξη καινούργιου post Καμία Εισαγωγή σε λάθος Thread Όνομα διεργασίας 10 Περιγραφή Δεδομένα εισόδου Προέλευση Δεδομένα εξόδου Εισαγωγή Post σε ήδη υπάρχον Thread Αφού ο χρήστης μεταβεί στα δικά τουthreads, έχει το δικαίωα να συνεχίσει να γράφει Posts σε κάποιο ήδη υπάρχον Thread όσες φορές θέλει Το καινούργιο Post που πληκτρολογεί Πληκτρολόγιο Το ίδιο το Post καθώς και όλα τα προηγούμενα Posts που ανήκουν στο συγκεκριμένο Thread ΚΑΒΑΛΑ 2012 98