Σύστημα Διαχείρισης Βάσης Δεδομένων με barcode scanner για την Διανομή Βιβλίων προς τους φοιτητές των ΤΕΙ



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

Εργαλεία ανάπτυξης εφαρμογών internet Ι

Α.Τ.Ε.Ι. ΚΑΒΑΛΑΣ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Αρχιτεκτονική του πληροφοριακού συστήµατος Cardisoft Γραµµατεία 2003 ιαχείριση Προσωπικού

Βάσεις Δεδομένων. Εισαγωγή Ανάλυση Απαιτήσεων. Φροντιστήριο 1 ο

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

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

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΜΕ ΘΕΜΑ:

Εκπαιδευτικό Εργαλείο Κανονικοποίησης

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

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

ΟΙΚΟΝΟΜΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΤΜΗΜΑ ΙΟΙΚΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Ηλεκτρονικό Εμπόριο

Τεχνικός Εφαρμογών Πληροφορικής

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

Document Scanning System Ιανουάριος, 2014

Βασικές Έννοιες Web Εφαρμογών

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

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

Ενσωματωμένα controls τα οποία προσαρμόζονται και χρησιμοποιούνται σε οποιαδήποτε ιστοσελίδα επιλέγει ο φορέας.

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

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

ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ ΔΙΑΧΕΙΡΙΣΗΣ ΜΑΘΗΜΑΤΩΝ ΚΑΙ ΕΠΕΞΕΡΓΑΣΙΑΣ ΣΤΟΙΧΕΙΩΝ ΚΑΙ ΕΠΙΔΟΣΕΩΝ ΦΟΙΤΗΤΩΝ. Σταθάκης Απόστολος Α.Ε.Μ.

Ηλεκτρονική Υπηρεσία Ολοκληρωμένης Διαχείρισης Συγγραμμάτων και Λοιπών Βοηθημάτων ΟΔΗΓΟΣ ΧΡΗΣΗΣ ΕΦΑΡΜΟΓΗΣ ΓΡΑΜΜΑΤΕΙΩΝ

. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Vodafone Business Connect

SGA Διαχείριση Ηλεκτρονικού Πρωτόκολλου

Εύδοξος - Δήλωση Συγγραμμάτων

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

XAMPP Apache MySQL PHP javascript xampp

Survey 123 User Manual

SGA Διαχείριση Πρωτόκολλου

Εισαγωγικό Μάθημα Βασικές Έννοιες - Ανάλυση Απαιτήσεων

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

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

Πληροφορική 2. Βάσεις Δεδομένων (Databases)

Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης eclass 1.7. Οδηγίες Αναβάθμισης (Upgrade) Αθήνα, 16 Μαρτίου Εισαγωγή

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

ΚΕΠΛΗΝΕΤ ΕΒΡΟΥ. Καλτσίδης Χρήστος

Εργαστήριο Βάσεων Δεδομένων. Εισαγωγικό Φροντιστήριο Βασικές Έννοιες - Ανάλυση Απαιτήσεων

Open eclass Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης

Βάσεις Δεδομένων. Ενότητα 5: ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

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

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

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

ΑΠΟΤΙΜΗΣΗ ΤΟΥ ΕΡΓΟΥ ΤΟΥ ΤΜΗΜΑΤΟΣ ΣΤΟΧΟΙ ΓΙΑ ΤΗΝ ΠΕΡΙΟΔΟ ΠΑΡΑΡΤΗΜΑ ΧΙ

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

Περιπτώσεις Χρήσης για το Π.Σ. ΜΟ.ΔΙ.Π. Κρήτης

«Σύστημα ΔΕΠ» ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ. Έκδοση 1.1

Α. ΓΕΝΙΚΗ ΠΕΡΙΓΡΑΦΗ Α1. Σκοπός εφαρμογής Α2. Είσοδος στην Εφαρμογή Α3. Γενικές λειτουργίες... 3 Β. ΕΠΙΛΟΓΕΣ Β1.Αιτήσεις...

Εύδοξος Δήλωση Συγγραμμάτων

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

Εργαλεία ανάπτυξης εφαρμογών internet Ι

ΟΝΟΜΑ : ΚΩΝΣΤΑΝΤΙΝΟΣ ΕΠΩΝΥΜΟ : ΚΟΚΟΛΟΓΟΣ Α.Μ. : Ε11060 ΕΞΑΜΗΝΟ : ΕΠΙ ΠΤΥΧΙΟ ΤΜΗΜΑ : ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΜΑΘΗΜΑ : ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΘΕΜΑ : ΕΦΑΡΜΟΓΗ

Παραδοτέο Π5.3: Έντυπο και ψηφιακό υλικό (Web site) προβολής των δράσεων έργου

Ενότητα. Σχεδίαση Βάσεων Δεδομένων

ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ ΙΑ ΙΚΤΥΑΚΟΥ ΠΛΗΡΟΦΟΡΙΑΚΟΎ ΣΥΣΤΗΜΑΤΟΣ. Τρίτη, 7 Φεβρουαρίου 2012

Σενάριο Χρήσης myschool

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

Μέρος Ι: Εγκατάσταση και ιαμόρφωση των MySQL, Apache και PHP

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 2

Προγραμματισμός διαδικτυακών εφαρμογών με PHP

Μια καλή επιλογή θα ήταν (χωρίζοντας τις λέξεις με παύλα -) ή

GreekLUG Ελεύθερο Λογισμικό & Λογισμικό Ανοικτού Κώδικα

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

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

QEMS TUTORIAL CRM. Οδηγίες για το νέο πρωτοποριακό πρόγραμμα της QEMS.

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

Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub

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

Αρχές Προγραμματισμού Υπολογιστών

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

Κωνσταντίνος Παρασκευόπουλος Καθηγητής Πληροφορικής (ΠΕ19 MSc) Ελληνικό Κολλέγιο Θεσσαλονίκης

Σχεδίαση και ανάπτυξη ιστοχώρου του εργαστηρίου Μηχανικής Λογισμικού. Παληόπουλος Αποστόλης-Παπαναγιώτου Παναγιώτης

TRAVIS TRAFFIC VIOLATION INFORMATION SYSTEM ΣΥΣΤΗΜΑ ΔΙΑΧΕΙΡΗΣΗΣ ΠΑΡΑΒΑΣΕΩΝ ΦΩΤΟΕΠΙΣΗΜΑΝΣΗΣ

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

TUTORIAL VERSION: 1.0

Οδηγίες Χρήσης της εφαρμογής Class-Web

PRISMA Win POS Sync Merge Replication

e-κπαίδευση Πλατφόρµα Ασύγχρονης Τηλε-κπαίδευσης Οδηγίες χρήσης για τους σπουδαστές του ΤΕΙ Αθήνας και τους επισκέπτες της δικτυακής πύλης e-κπαίδευση

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

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Σχεδίαση Βάσεων Δεδομένων

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

Epsilon Net PYLON Platform

Teaching Computer Science

Web and HTTP. Βασικά Συστατικά: Web Server Web Browser HTTP Protocol

Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης eclass 2.0. Οδηγίες Αναβάθµισης (Upgrade) Αθήνα, 1 Ιουνίου Εισαγωγή

ΟΙΚΟΝΟΜΙΚΗ ΠΡΟΣΦΟΡΑ ΣΧΕ ΙΑΣΗΣ ΚΑΙ ΚΑΤΑΣΚΕΥΗΣ web εφαρµογής - ηλεκτρονικού κατατήµατος για έξυπνα κινητά

ΗΜΟΚΡΙΤΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΡΑΚΗΣ ΥΠΕΥΘΥΝΟΣ ΈΡΓΟΥ AΝ.KΑΘ.Χ. ΚΟΥΚΟΥΡΛΗΣ ΤΗΛ: , FAX :

Διαχείριση Βάσης Δεδομένων (dbadmin)

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

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ ΠΕΛΑΤΩΝ ELTA Courier. Ιούνιος ELTA Courier Διεύθυνση Πληροφορικής

COSMOTE Web 2 SMS. Εφαρμογή τελικού χρήστη ( ιαδίκτυο) Οδηγός Χρήσης

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

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

Η Βίβλος σχετικά με το JDBC. Περιέχει τρία βασικά tutorials στα οποία θα βασιστεί το μάθημα και περιγράφει όλες τις τάξεις και τις μεθόδους που

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ

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

Transcript:

ΠΕΡΙΕΧΟΜΕΝΑ 1 Εισαγωγή στο Σύστημα Διανομής Βιβλίων των ΤΕΙ 3 2 Λειτουργικές Απαιτήσεις 4 2.1 Web based 4 2.2 Login 4 2.3 Επίπεδα Ασφαλείας 6 2.4 Διαχείριση Σχολών 9 2.5 Διαχείριση Τμημάτων 10 2.6 Διαχείριση Μαθημάτων 11 2.7 Διαχείριση Βιβλίων 12 2.8 Σύνδεση Βιβλίων - Μαθημάτων 13 2.9 Εισαγωγή Φοιτητών - Μαθημάτων 15 2.10 Διανομή βιβλίων 18 2.11 Έκδοση Παραγγελίας 24 2.12 Παραλαβή παραγγελίας 25 2.12 Αποστολή ομαδικών email. 26 2.13 Φοιτητική Ενημέρωση 27 3 Περιγραφή της βάσης δεδομένων. 29 3.1 MySQL 29 3.2 Προϋποθέσεις τις βάσης δεδομένων. 29 3.3 Αναφορά Πινάκων 30 3.3.1 Πίνακας school 30 3.3.2 Πίνακας department 30 3.3.3 Πίνακας lesson 30 3.3.4 Πίνακας student 31 3.3.5 Πίνακας Book 31 3.3.6 Πίνακας rlessonbook 31 3.3.7 Πίνακας needbook 32 3.3.8 Πίνακας hasbook 32 3.4 Ασφάλεια και Διαχείριση 34 4 Μελλοντικές αναπτύξεις 37 5 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΥΣΤΗΜΑΤΟΣ Apache - PHP MySQL 38 5.1 Εισαγωγή 39 5. 2 PHP 41 5.2.1 Βασικά χαρακτηριστικά 42 5.2.2 Δυνατότητες της PHP 43 5.3 MySQL 44 1 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

5.4 Apache Web Server 45 5.5 Hypertext Transfer Protocol (HTTP) 45 6. ΕΠΙΛΟΓΗ ΤΟΥ ΜΟΝΤΕΛΟΥ ΑΝΑΠΤΥΞΗΣ ΤΗΣ ΕΦΑΡΜΟΓΗΣ 47 6.1 Build and Fix model 47 6.2 Rapid Prototyping model 48 6.3 Incremental model 48 6.4 Waterfall model 49 6.5 Extreme prototyping 49 6. Βάση Δεδομένων 51 6.1 Εισαγωγή 51 6.2 Κανονικοποίηση 51 6.3 Μη Κανονική Μορφή 52 6.4 Πρώτη κανονική μορφή 52 6.5 Δεύτερη Κανονική Μορφή 52 6.6 Τρίτη κανονική μορφή 53 6.7 Οντότητες και συσχετίσεις 54 6.8 Σχεσιακό Μοντέλο 55 7 PHP 56 7.1 Εισαγωγή 56 7.2 Υπερκαθολικές μεταβλητές $_GET και $_POST 56 7.3 Η υπερκαθολική μεταβλητή $_SESSION 57 8 Σύνδεση Βάσης Δεδομένων με PHP 59 Βιβλιογραφία 61 2 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

1 Εισαγωγή στο Σύστημα Διανομής Βιβλίων των ΤΕΙ Στόχος της πτυχιακής εργασίας είναι να δημιουργηθεί ένα σύστημα για την συντομότερη και ασφαλέστερη διεκπεραίωση της διανομής των βιβλίων του ΤΕΙ Καβάλας προς τους φοιτητές της. Συγκεκριμένες λειτουργίες που απαιτούν υλοποίηση: 1. Το σύστημα να είναι web based. 2. Η γραμματεία της εκάστοτε σχολής θα είναι σε θέση να καταχωρεί στην βάση δεδομένων τους φοιτητές και τα μαθήματα τα οποία δήλωσαν. 3. Να καταχωρούνται νέα βιβλία. 4. Να συνδέονται τα βιβλία με τα μαθήματα. 5. Να καταχωρούνται νέα μαθήματα στα αντίστοιχα τμήματα. 6. Να εκδίδονται δελτία παραγγελίας βιβλίων. 7. Να εκδίδονται δελτία παραλαβής βιβλίων. 8. Ο φοιτητής να μπορεί να βλέπει από το σύστημα ποια βιβλία δικαιούται και ποια βιβλία πότε έχει πάρει. 9. Η διανομή να μπορεί να ανακοινώνει στους φοιτητές ανά τμήμα μέσω ομαδικών email για τον καθορισμό ακριβής ημερομηνίας και ώρας διανομής των βιβλίων. 10. Αυτά όλα πρέπει να γίνονται εξασφαλίζοντας όσο είναι δυνατών την ασφάλεια του συστήματος, κατακερματίζοντάς το σε επίπεδα ασφαλείας. Για την αποφυγή ανθρώπινων λαθών εισάγαμε στις λειτουργικές απαιτήσεις ένα barcode scanner. Βασική προϋπόθεση είναι ο φοιτητής να είναι κάτοχος μιας ταυτότητας που έχει κωδικοποιημένα σε barcode τον αριθμό μητρώου και τον κωδικό της σχολής του. Το barcode θα εφαρμόζεται επίσης στην ανάγνωση του barcode ενός βιβλίου. 3 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

2 Λειτουργικές Απαιτήσεις 2.1 Web based Το σύστημα όπως αναφέρθηκε στην εισαγωγή θα πρέπει να βασίζεται στο διαδίκτυο επειδή οι επιμέρους χρήστες θα βρίσκονται σε διαφορετικούς γεωγραφικά τοποθετημένους χώρους.ο δε διαχειριστής της διανομής (administrator) και η αντίστοιχη γραμματεία της θα βρίσκονται στον τόπο όπου θα υπάρχουν τα βιβλία και εκεί όπου θα παραδίδονται στους φοιτητές. Η δε γραμματεία του τμήματος σε άλλο κτίριο και τέλος οι φοιτητές στους τόπους διαμονής τους. Όλοι οι χρήστες παίρνουν και θα δίνουν πληροφορίες στην ίδια βάση δεδομένων οπότε και αποφασίστηκε να υλοποιηθεί πάνω σε Apache Server με βάση δεδομένων σε mysql και script γλώσσα PHP. Τα τρία λογισμικά είναι δωρεάν διαθέσιμα και ταυτόχρονα πολύ ισχυρά και επεκτάσιμα. Στην παρούσα πτυχιακή σε κάποιο σημείο πιο κάτω θα αποσταλούν ομαδικά email και σε κάποια άλλα θα λειτουργήσει ένας barcode scanner. Αυτές οι λειτουργίες είναι εύκολα υλοποιήσιμες στα παραπάνω συστήματα. Γενικά υπάρχουν εύκολοι τρόποι να συνεργαστούν διάφορες δομικές μονάδες μεταξύ τους. 2.2 Login Ίσως το σημαντικότερο κομμάτι του συστήματος είναι η διατήρηση της ασφάλειας. Σε αυτό το σημείο έπρεπε να προβληματιστούμε με τα επίπεδα ασφάλειας που χωρίζεται το σύστημα. Καθιερώθηκε, μετά από έντονο προβληματισμό, ένα επίπεδο ασφαλείας για τον διαχειριστή του συστήματος που 4 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

θα μπορεί να ίδιος υπεύθυνος διανομής, ένα επίπεδο ασφαλείας της γραμματείας των ΤΕΙ καθώς επίσης ένα επίπεδο ασφαλείας για την γραμματεία της διανομής. Επίσης δημιουργήσαμε και ένα σημείο από το οποίο ο κάθε φοιτητής με επίδειξη της κάρτας του θα μπορεί να βλέπει πόσα και ποια βιβλία δικαιούται και πόσα, ποιά και πότε πήρε βιβλία. Το σύστημα αναπτύχθηκε με τέτοιο τρόπο ώστε να μπορούν να προστεθούν στο μέλλον κι άλλα επίπεδα ασφαλείας. (Θα επανέλθουμε σε αυτό το σημείο όταν θα γίνει αναφορά για τις μελλοντικές χρήσεις.) Το Login ο χρήστης δακτυλογραφεί τον κωδικό όνομα και κωδικό πρόσβασης (Εικόνα 1). Όταν αυτός γίνει αποδεκτός από το σύστημα τον παραπέμπει στο αντίστοιχο menu. Εικόνα 1: Παράθυρο εισόδου Ο αντίστοιχος πίνακας της βάσης δεδομένων έχει την εξής μορφή: 5 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 2: Πίνακας Login με τα γνωρίσματα Για μελλοντικές αναβαθμίσεις προστέθηκαν πεδία στον πίνακα Login όπως cookie, session και ip. Ο διαχειριστής θα μπορεί με αυτά τα πεδία να ελέγχει καλύτερα ποιος μπαίνει μιας και θα αποθηκεύεται το ip. 2.3 Επίπεδα Ασφαλείας Παρακάτω θα παρουσιάσουμε τις επιλογές κάθε επιπέδου: Το σύστημα ανταποκρίνεται σε level ίσο με 0, 1 και 2. Το 0 είναι επίπεδο ασφαλείας του διαχειριστή, 1 για την γραμματειακή υποστήριξη της διανομής και 2 είναι το επίπεδο για την γραμματεία της εκάστοτε σχολής. Εικόνα 3: Πρώτο παράθυρο μετά το πετυχημένο login όπου φαίνεται στοιχεία εισόδου. 6 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

(Παρακάτω σας προβάλουμε Εικόνα στην οποία θα περιγράφονται τα βήματα για την δημιουργία κωδικών πρόσβασης.) Μετά την επιτυχημένη εισαγωγή του κωδικού χρήστη και κωδικού πρόσβασης, εμφανίζεται η σελίδα του member όπου φαίνονται τα στοιχεία του χρήστη. Επίσης με βάση το επίπεδο του χρήστη εμφανίζεται το αντίστοιχο menu bar. Έτσι για το διαχειριστή το level 0, 1 και 2 τα menu bar απεικονίζονται αντίστοιχα στις εικόνες 4, 5 και 6. Εικόνα 4: Επιλογές του χρήστη με δικαιώματα διαχειριστή Εικόνα 5: Επιλογές του χρήστη με δικαιώματα γραμματειακής υποστήριξης της διανομής Εικόνα 6: Επιλογές του χρήστη με δικαιώματα γραμματείας τμήματος Ο διαχειριστής του συστήματος έχει πρόσβαση σε όλες τις επιλογές του συστήματος. Είναι ο μοναδικός που μπορεί να δημιουργήσει άλλους κωδικούς πρόσβασης του συστήματος και να καθιερώσει το επίπεδο ασφαλείας τους. Ο διαχειριστής έχει 2 επιλογές στην διαχείριση των χρηστών (Εικόνα 7). Η πρώτη είναι να δημιουργεί χρήστη όπου πρέπει να εισάγει username, password και ένα επίπεδο ασφάλειας (0, 1 ή 2). Με το πάτημα του κουμπιού Create δημιουργείται ο αντίστοιχος χρήστης, τα στοιχεία του οποίου εμφανίζονται μετά στον πίνακα απο κάτω. 7 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 7: Δημιουργία και διαγραφή των χρηστών από διαχειριστή Η δεύτερη επιλογή του διαχειριστή είναι να διαγράφει τους χρήστες που δημιούργησε. Αυτό απαιτεί καταχώρηση του ID του χρήστη στο πλαίσιο πράξης (action) και μετέπειτα πάτημα του κουμπιού delete. Όταν ολοκληρωθεί η εκτέλεση τότε ο χρήστης δεν εμφανίζεται άλλο στον πίνακα. Επίσης εμφανίζεται αντίστοιχο μήνυμα (Εικόνα 8). 8 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 8: Επιτυχημένη διαγραφή χρήστη από τον διαχειριστή Ο πηγαίος κώδικας βρίσκεται στο user_creation.php. 2.4 Διαχείριση Σχολών Η διαχείριση Σχολών απευθύνεται κυρίως στις γραμματείες των ΤΕΙ που δημιουργούν νέες σχολές, οι οποίες θα περιέχουν τμήματα (Εικόνα 9). Σε μετέπειτα μελλοντικές εξελίξεις του συστήματος μπορούμε να εξάγουμε στατιστικά στοιχεία διανομής και κόστους ανά σχολή. Προς το παρόν δεν αποτελεί ουσιαστικό στοιχείο σε ποια σχολή ανήκει το τμήμα. Για να δημιουργηθούν Σχολές πρέπει να συμπληρωθούν τα πεδία του ID, Name και στη συνέχεια πατάμε Create. Αντίστοιχα για την διαγραφή μιας σχολής συμπληρώνουμε το πεδίο Id και πατάμε Delete. 9 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 9: Δημιουργία και διαγραφή σχολών Ο πηγαίος κώδικας της διαχείρισης των σχολών βρίσκεται στο αρχείο school_adm.php. 2.5 Διαχείριση Τμημάτων Κάθε γραμματεία σχολής σε αυτό το σημείο δημιουργεί τμήματα τα οποία πρέπει να συνδεθούν με την αντίστοιχη σχολή. Επίσης ο κωδικός του τμήματος πρέπει να συμπίπτει με πραγματικό κωδικό όπως καθιερώθηκε σε προηγούμενες βάσεις δεδομένων, για παράδειγμα ο κωδικός της Βιομηχανικής Πληροφορικής είναι 328 (Εικόνα 10). Κάθε εισαγωγή νέου τμήματος πρέπει να συνδέεται στην αντίστοιχη σχολή καταχωρώντας τον αντίστοιχο κωδικό της σχολής (ID). Στην συνέχεια πατάμε Create και το τμήμα δημιουργείται. Αντίστοιχα λειτουργεί και η διαγραφή ενός τμήματος. Συμπληρώνοντας μόνο το αντίστοιχο ID του τμήματος και πατώντας το Delete. 10 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 10: Δημιουργία και διαγραφή Τμημάτων Ο πηγαίος κώδικας βρίσκεται στο αρχείο department_adm.php. 2.6 Διαχείριση Μαθημάτων Εδώ η Γραμματεία καλείται να δημιουργήσει και να συνδέσει τα αντίστοιχα Τμήματα. Προσοχή χρειάζεται στον κωδικό του Μαθήματος ο οποίος πρέπει να είναι ο ίδιος με αυτόν που ήδη χρησιμοποιεί η γραμματεία (ή που αναγράφεται στον οδηγό σπουδών). Ο Κωδικός αυτός θα είναι απαραίτητος για την άμεση και αυτοματοποιημένη εισαγωγή των στοιχείων των φοιτητών στις αντίστοιχες δηλώσεις που έστελνε η Γραμματεία του τμήματος στην διανομή. 11 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Στην Εικόνα 11 φαίνονται τα πεδία, τα οποία ο χρήστης συμπληρώνει προκειμένου να εισάγει μάθημα στο εκάστοτε τμήμα. Εικόνα 11: Δημιουργία και διαγραφή Μαθημάτων ανά τμήμα Ο χρήστης γράφει τον κωδικό και τον τίτλο του μαθήματος και μετά επιλέγει το τμήμα στο οποίο ανήκει. Αντίστοιχα ο χρήστης με την εισαγωγή του κωδικού μπορεί να διαγράψει το μάθημα. Ο κώδικας της διαχείρισης των μαθημάτων βρίσκεται στο lesson_adm.php. 2.7 Διαχείριση Βιβλίων Όμοια με τις προηγούμενες θεματικές ενότητες ο χρήστης καταχωρεί εδώ (Εικόνα 12) όλα τα στοιχεία ενός βιβλίου με σκοπό την μετέπειτα παραγγελία του βιβλίου. Πολύ σημαντικό είναι στην παρούσα φάση είναι ο κωδικός ISBN να είναι η τιμή του Barcode του βιβλίου. 12 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 12: Δημιουργία και διαγραφή βιβλίου Στο πεδίο ΠΛΗΘΟΣ καταχωρείται το πλήθος των βιβλίων που υπάρχουν στην αποθήκη. Στο πεδίο Κόστος η τιμή του κάθε βιβλίου. Στο πεδίο πράξη Έγκρισης γράφουμε την πράξη στην οποία εγκρίθηκε το βιβλίο. Η διαγραφή ενός βιβλίου γίνεται με την εισαγωγή του ISBN (Barcode) του βιβλίου. Ο πηγαίος κώδικας της διαχείρισης βιβλίων είναι στο αρχείο book_adm.php. 2.8 Σύνδεση Βιβλίων - Μαθημάτων Από αυτό το σημείο της πτυχιακές μπαίνουμε λίγο πιο βαθιά στο λειτουργικό κομμάτι. Λαμβάνοντας υπόψη ότι ένα βιβλίο μπορεί να διδάσκεται σε περισσότερα μαθήματα καταλήγουμε σε μία συσχέτιση πινάκων που περιλαμβάνει τον πίνακα και το μάθημα(εικόνα 13). 13 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 13: Συνδεσμολογία πίνακα Βιβλίου, Μάθημα με συσχέτιση διδάσκεται που αποτελεί επίσης πίνακα με κλειδί το ID. Οι επιλογές που έχει ο χρήστης είναι να επιλέξει το μάθημα και μετά το αντίστοιχο βιβλίο, ώστε να δημιουργήσει μία συσχέτιση(εικόνα 14). Κάθε συσχέτιση αποκτά αυτόματα ένα ID, το οποίο μπορεί να χρησιμοποιήσει ώστε να διαγράψει την συσχέτιση αυτή. Εικόνα 14: Δημιουργία και διαγραφή συσχέτισης βιβλίου και μαθήματος. 14 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

2.9 Εισαγωγή Φοιτητών - Μαθημάτων Πριν από την δημιουργία του συστήματος η εκάστοτε γραμματεία έστελνε μέσω e-mail ένα αρχείο excel το οποίο περιείχε στοιχεία του φοιτητή και την αντίστοιχη δήλωση ανά μάθημα. Η διανομή έπρεπε να διασταυρώσει τα στοιχεία και να τα επεξεργαστεί με σκοπό την άντληση πληροφοριών όπως το πλήθος των βιβλίων ανά φοιτητή και την αναίρεση διπλών παραδόσεων βιβλίων σε φοιτητή. Δηλαδή φοιτητές που πήραν βιβλίο για το μάθημα, αλλά δεν το πέρασαν οπότε και το ξανα δηλώνουν. Επίσης πρέπει να ληφθεί υπόψη ότι αν το μάθημα αλλάξει βιβλίο, τότε ο φοιτητής δικαιούτε το νέο βιβλίο παρόλο που παρέλαβε σε ένα προηγούμενο εξάμηνο το παλαιότερο. Με την χρήση του συστήματος θα είμαστε σε θέση να εκδώσουμε όλα τα στοιχεία που χρειάζεται η διανομή ώστε να λειτουργήσει γρήγορα, σωστά και με ασφάλεια. Στην παρούσα λειτουργία η γραμματείες των τμημάτων φορτώνουν (upload) ένα αρχείο, όμοιο με το αρχείο excel που έστελναν email στην διανομή. Το αρχείο που πρέπει να φορτώσει η γραμματεία στο σύστημα πρέπει να έχει xml τύπο. Αυτό μπορεί να κατασκευαστεί εύκολα παίρνοντας το αρχείο excel που έστελνε στο παρελθόν η γραμματεία και αποθηκεύοντάς το σε μορφή xml. Οι στήλες του αρχείου αυτού πρέπει να είναι 8 στο πλήθος. Η σειρά με την οποία εμφανίζονται τα πεδία πρέπει να είναι ΑΜ, Ονοματεπώνυμο, Πατρώνυμο, Κωδικός Μαθήματος, Ακαδημαϊκό Έτος Εγγραφή, Περίοδο εγγραφής, Κωδικός τμήματος και τέλος email(εικόνα 15). 15 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 15: Αρχείο που εισάγεται από την γραμματεία του τμήματος στο σύστημα για τις δηλώσεις των μαθημάτων. Σημαντικό είναι ο φοιτητής κατά την δήλωση μαθημάτων να καταθέτει σωστό email, προκειμένου να λάβει εmail από την διανομή για την ακριβή ημερομηνία και ώρα παραλαβής των βιβλίων. Η μεταφόρτωση των στοιχείων γίνεται όταν ο χρήστης δηλώνει την θέση του αρχείου με το κουμπί upload (Εικόνα 16). Εικόνα 16: Φόρμα εισαγωγής αρχείου για τις δηλώσεις φοιτητών και μαθημάτων. Παρόλο που αρχικά κάθε γραμματεία έστελνε καταστάσεις ανά μάθημα, το σύστημα είναι σε θέση να δέχεται όλα τα δεδομένα μονομιάς. Μετά την ολοκλήρωση της διαδικασίας, το σύστημα εκδίδει ανά αρχείο στατιστικά που επιβεβαιώνουν την ορθή εισαγωγή των στοιχείων. Το σύστημα είναι έτσι προγραμματισμένο ώστε να αποφεύγονται διπλοκαταχωρήσεις φοιτητών και αντίστοιχων δηλώσεων μαθημάτων. Όσες φορές και αν φορτωθεί 16 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

το ίδιο αρχείο πάντα δεν επηρεάζει τα δεδομένα της βάσης δεδομένων(εικόνα 17). Εικόνα 17: Επιτυχημένη εισαγωγή στοιχείων φοιτητών και αντίστοιχη δηλώσεις μαθημάτων Τα μηνύματα της Εικόνας 17 περιγράφουν στην προκειμένη περίπτωση ότι δεν έχουν εισαχθεί νέες καταχωρήσεις στους φοιτητές και ότι οι 75 φοιτητές του αρχείου ήδη υπάρχουν. Επίσης ότι δεν υπάρχουν νέες καταχωρήσεις στον πίνακα 17 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

της βάσης δεδομένων (Need Books) που περιέχει στοιχεία για το ποιος φοιτητής δικαιούται βιβλίο. Το τρίτο στοιχείο απευθύνεται στις περιπτώσεις που ο φοιτητής έχει παραλάβει ήδη το βιβλίο. Αυτή την πληροφορία την παίρνει από τον πίνακα της βάσης δεδομένων που περιέχει τις παραλαβές των βιβλίων(has Book). Ο πίνακας αυτός δέχεται εγγραφές όταν παραλαμβάνει ένας φοιτητής βιβλίο. Τότε αφαιρείται εγγραφή από τον πίνακα Need Books και εισάγεται στον πίνακα Has Book. Το τελευταίο μήνυμα αναγράφει πόσοι συνολικά φοιτητές δικαιούνται βιβλία.. Ο πηγαίος κώδικας της εισαγωγής των φοιτητών και δηλώσεων βρίσκεται στο αρχείο import.php. 2.10 Διανομή βιβλίων Στο σημείο αυτό τίθεται για πρώτη φορά σε λειτουργία ο σαρωτής από barcode. Το σύστημα έχει προγραμματιστεί ώστε να διεκπεραιώνει γρήγορα και αποδοτικά τις συναλλαγές της διανομής με φοιτητές γρήγορα και αποδοτικά. Γι αυτό το λόγο λάβαμε υπόψιν περιπτώσεις στις οποίες θα επικρατεί συνωστισμός το διάστημα διανομής των βιβλίων και στην αναζήτηση μιας ασφαλής και γρήγορης λύσης προτάθηκε η εισαγωγή ενός σαρωτή barcode, ο οποίος θα σαρώνει κωδικούς βιβλίων και καρτών φοιτητών. Η υλοποίηση με laser σαρωτή θα απαιτούσε αρκετά χρήματα. Γι αυτό το λόγο επιλέχθηκε σαρωτής με video camera - web cam. Το δομικό κομμάτι υλοποιήθηκε από μία οργάνωση που τηρούσε την ιστοσελίδα www.barcodepedia.com. Ευτυχώς προλάβαμε να κατεβάσουμε το κομμάτι αυτό, διότι τώρα η ιστοσελίδα παραμένει κλειστή για αρκετό καιρό. 18 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Η εφαρμογή έχει σαν λειτουργική απαίτηση, ο υπολογιστής από τον οποίο θα γίνουν οι ενέργειες να έχει εγκατεστημένη μία κάμερα. Ο Barcode scanner είναι υλοποιημένος με το Macromedia Flash. Η κωδικοποίηση που μπορεί να αναγνωρίσει λέγεται ean-13. Η κωδικοποίηση αυτή χρησιμοποιείται και για τους κωδικούς ISBN των βιβλίων. Ο σαρωτής μετά την αναγνώριση του κωδικού θα πρέπει να μεταφέρει τον κωδικό στο scrypt αρχείο του συστήματος. Γι αυτό το λόγο απαιτούνταν επιπλέον προγραμματισμός με το Macromedia flash ώστε να μεταβιβαστεί στην ιστοσελίδα της επιλογής μας (Εικόνα 18). Εικόνα 18: Περιβάλλον Macromedia Flash για τον επαναπρογραμματισμό του barcode scanner. 19 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Στην εικόνα 18 φαίνεται το Macromedia Flash που έχει ανοιχτό το δομηκό κομμάτι μας για το barcodescanner. Κάτω δεξιά φαίνεται ο πηγαίος κώδικας με τον οποίο μεταφέρεται η πληροφορία e στην ιστοσελίδα της επιλογής μας. Η σύνταξη της εξόδου δίνει όρισμα op ίσο με barcode και κωδικό ean13 την έξοδο του σαρωτή ή e. Με αυτή την σύνταξη μεταφέρεται η πληροφορία στο php αρχείο μας και μπορούμε να την επεξεργαστούμε ώστε να υλοποιησουμε το δικό μας σκοπό. Στην διανομή βιβλίων, λοιπόν, ο φοιτητής δίνει την ταυτότητά του (Εικόνα 19 & Εικόνα 20) στην γραμματειακή υποστήριξη της διανομής και στη συνέχεια αυτή σαρώνεται από την κάμερα. Εικόνα 19 Εικόνα 20 20 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Ο κωδικός που αναγράφεται στην κάρτα - ταυτότητα του φοιτητή είναι ο Αριθμός Μητρώου του Φοιτητή μαζί με το Κωδικό του τμήματος. Ο συνδυασμός αυτών των δύο αριθμών καθιστά δυνατή την μοναδικότητα του εκάστοτε φοιτητή του ΤΕΙ. Τα πρώτα 7 ψηφία ανήκουν στο πεδίο του Αριθμού Μητρώου και τα επόμενα 5 ψηφία στον κωδικό του τμήματος. Το τελευταίο ψηφίο παράγεται αυτόματα από τον αλγόριθμο κατασκευής του barcode. Με αυτόν τον τρόπο ο Φοιτητής δίνει την ταυτότητα στην διανομή η οποία σαρώνει τον κωδικό με την κάμερα (Εικόνα 21). Εικόνα 21: Σάρωση μιας ταυτότητας για την προβολή των βιβλίων που δικαιούται Στην περίπτωση που κάποιο τεχνικό πρόβλημα δημιουργηθεί, όπως να απουσιάζει κάμερα ή ταυτότητα να έχει φθαρεί, τότε παρέχεται η δυνατότητα ο χρήστης χειροκίνητα να εισάγει τα στοιχεία στο σύστημα. Αυτό το γίνεται 21 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

πληκτρολογώντας τον Αριθμό Μητρώου και στην συνέχεια επιλέγοντας το Τμήμα του Φοιτητή, τέλος πατάμε το κουμπί Show Books. Μόλις το σύστημα διαβάσει το barcode τότε μεταπηδά στην επόμενη σελίδα που φαίνεται στην Εικόνα 22. Εικόνα 22: Διαδικασία παραλαβής βιβλίου από την διανομή Στην εικόνα αυτήν αναγράφονται τα βιβλία που δικαιούται να παραλάβει ο φοιτητής. Η διανομή εφόσον του τα παραδώσει κλικάρει το τετραγωνάκι δίπλα από τον τίτλο του βιβλίου. Στη συνέχεια με το πάτημα του Get Books το σύστημα διαγράφει την εγγραφή από τον πίνακα needbook και την εισάγει την εγγραφή στον πίνακα hasbook. Με αυτόν τον τρόπο το σύστημα ενημερώνεται για το ποιο βιβλίο παρέλαβε ποιος φοιτητής και πότε. 22 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Επίσης σε περίπτωση που η αποθήκη δεν έχει βιβλίο να παραδώσει τότε το σύστημα εκτυπώνει μήνυμα σφάλματος. Η δημιουργία ενός Barcode μπορεί να γίνει εύκολα από το διαδίκτυο. Υπάρχουν πολλές ιστοσελίδες που δημιουργούν τέτοιου είδους κωδικούς σύμφωνα με την κωδικοποιήσει της επιλογής μας (ean-13). Η αναζήτησή τους γίνεται με τις λέξεις κλειδιά barcode generator. Μία τέτοια σελίδα είναι για παράδειγμα http://www.terryburton.co.uk/barcodewriter/generator/ (Εικόνα 23). Εικόνα 23: Κατασκευή ενός barcode 23 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Ο χρήστης επιλέγει την κωδικοποίηση EAN-13 και μετά στο Contents συμπληρώνουμε το κωδικό που θα δώσουμε στην κάρτα. Τα πρώτα 7 ψηφία συμπληρώνουν τον Αριθμό Μητρώου και τα επόμενα 5 ψηφία τον κωδικό του Τμήματος. Το τελευταίο ψηφίο είναι στην κρίση του χρήστη. Έπειτα το τελευταίο ψηφίο αλλάζει σύμφωνα με τα δεδομένα του ΑΜ και του κωδικού Τμήματος. Επίσης στην μετατροπή του και την αποκωδικοποίησή του από το σύστημα δεν λαμβάνεται υπόψη το τελευταίο ψηφίο. Οι πράξεις που απομονώνουν το ΑΜ και τον κωδικό του τμήματος γίνονται ως εξής: Έστω Χ ο ολόκληρος κωδικός. Τότε ο Αριθμός Μητρώου είναι (X - (Χ mod 1000000))/1000000. Ενώ ο κωδικός του τμήματος είναι ((Χ - ΑΜ*1000000) - ((Χ - ΑΜ*1000000) mod 10))/10. Ο κώδικας αυτός βρίσκεται στο αρχείο dianomi.php. 2.11 Έκδοση Παραγγελίας Το σύστημα μετά την επιτυχή εισαγωγή των φοιτητών και τις αντίστοιχες δηλώσεις Μαθημάτων. Το σύστημα είναι σε θέση να εκδώσει παραγγελίες βιβλίων ανά τμήμα. Λαμβάνει υπόψη βιβλία που διδάσκονται σε άλλα τμήματα σε άλλα μαθήματα καθώς επίσης την ύπαρξη βιβλίων στην αποθήκη. Ταυτόχρονα υπολογίζει το κόστος ανά βιβλίο. Ο δε υπεύθυνος της διανομής μπορεί να εκδώσει έτσι ομαδικές παραγγελίες και να υπολογίζει εύκολα τα συνολικά έξοδα. Ο χρήστης απλά επιλέγει το τμήμα και πατάει το κουμπί Show Order (Εικόνα 24). 24 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 24: Δελτίο παραγγελιών βιβλίων από την διανομή Όπως φαίνεται στην Εικόνα 24 ο χρήστης μπορεί να εκτυπώσει την κατάσταση με τα βιβλία. Ο κώδικας της έκδοσης Παραγγελίας βρίσκεται στο αρχείο order.php. 2.12 Παραλαβή παραγγελίας Όπως μπορούμε να εκδώσουμε παραγγελία, έτσι μπορεί το σύστημα να αυτοματοποιήσει την παραλαβή μιας παραγγελίας. Ο χρήστης απλά με την σάρωση του ISBN ή την πληκτρολόγηση του ISBN μπορεί να παραλάβει τα βιβλία (Εικόνα 25). Εικόνα 25: Παραλαβή βιβλίου. 25 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Αμέσως μετά εμφανίζεται στην ίδια σελίδα τα στοιχεία του βιβλίου και ένα πεδίο στο οποίο ο χρήστης μπορεί να πληκτρολογήσει το πλήθος των βιβλίων που παρέλαβε (Εικόνα 26). Εικόνα 26: Παραλαβή βιβλίου 2 ο βήμα Μετά το πάτημα του Update το πλήθος των βιβλίων προστίθεται στην βάση δεδομένων και είναι έτοιμο να για το επόμενο βήμα που είναι η ενημέρωση των φοιτητών για την ακριβή ημερομηνία και ώρα παραλαβής. Ο κώδικας βρίσκεται στο αρχείο receive.php. 2.12 Αποστολή ομαδικών email. Η τελευταία λειτουργία του συστήματος μας επιτρέπει να αποστείλουμε ομαδικά email προς τους φοιτητές των διάφορων τμημάτων(εικόνα 27), συντάσσοντας ένα κείμενο στο πλαίσιο, επιλέγοντας το τμήμα και πατώντας το κουμπί Send Email. 26 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 27: Αποστολή ομαδικών email ανά τμήμα Ο κώδικας βρίσκεται στο αρχείο sendemail.php. 2.13 Φοιτητική Ενημέρωση Το σύστημα επιτρέπει σε κάθε φοιτητή να βλέπει από μόνος του ποια βιβλία δικαιούται. Ο φοιτητής εφόσον έχει webcam μπορεί να χρησιμοποιήσει την ταυτότητά του ώστε να δεί πότε πήρε και ποια βιβλία και επίσης ποια βιβλία δικαιούτε (Εικόνα 28 & Εικόνα 29). Εικόνα 28: Έλεγχος φοιτητή για το τι δικαιούται και τι έχει παραλάβει. 27 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 29: Έλεγχος φοιτητή για το τι δικαιούται και τι έχει παραλάβει. Ο κώδικας για την σελίδα αυτή καθώς επίσης η παραπομπή του χρήστη για αυτήν είναι στο αρχείο report.php. 28 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

3 Περιγραφή της βάσης δεδομένων. 3.1 MySQL Η βάση δεδομένων σχεδιάστηκε με MySQL μια και από τις βασικές προϋποθέσεις ήταν το σύστημα να είναι web-based. Η έρευνα για συστήματα διαχείρισης βάσεων δεδομένων που κάναμε έδειξε ότι η MySQL παρέχει όλα τα εργαλεία που χρειαζόμασταν για να χτιστεί η βάση σε αυτήν. Πέρα από το γεγονός ότι παρέχεται δωρεάν είναι και ένα εργαλείο το οποίο χρησιμοποιείται περισσότερο από κάθε άλλο για πανομοιότυπα συστήματα. Η δε εγκατάσταση όμως του λογισμικού για την διεκπεραίωση της βάσης κρύβει ανά μηχανή διάφορα προβλήματα, τα οποία ευτυχώς μπορούν να διορθωθούν χάρη στο πλούσιο forum στο διαδίκτυο που έχει. 3.2 Προϋποθέσεις τις βάσης δεδομένων. Ένας βασικός στόχος της πτυχιακής είναι να αποτελεί ένα σύστημα το οποίο στο μέλλον να μπορεί να αναβαθμιστεί και επίσης να προσαρμόζεται εύκολα σε νέες συνθήκες. Ο σχεδιασμός της λοιπόν πέρασε από πολλά στάδια, μέχρι να καταλήξει στην παρούσα μορφή. Ήταν πολύ δύσκολο να οριστούν οι πίνακες που την χαρακτηρίζουν και επίσης οι συσχετίσεις που θα την καθιστούν αποδοτική και ευέλικτη. Μέριμνά μας ήταν να αποδώσουμε μία βάση δεδομένων, ξεκαθαρίζοντας τις λειτουργίες της και τη χρήση της. 29 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

3.3 Αναφορά Πινάκων 3.3.1 Πίνακας school Ο πίνακας αυτός περιέχει τον κωδικό (ID) και το όνομα κάθε σχολής. 3.3.2 Πίνακας department Ο πίνακας περιέχει Κωδικό (ID) και Όνομα (Name) του τμήματος. Σημαντικό είναι ότι αυτός ο κωδικός θα πρέπει να συμπίπτει με τον κωδικό που έχει δοθεί από την γραμματεία της σχολής. Π.χ το τμήμα Βιομηχανικής Πληροφορικής έχει κωδικό το 328. Με αυτόν τον τρόπο οι αλλαγές που θα χρειαστούν να γίνουν από την γραμματεία θα είναι πιο απλές και δε θα αλλάξει πολύ ο τρόπος με τον οποίο λειτουργούσε στο παρελθόν. Επίσης για να λειτουργούν οι συσχετίσεις περιέχει και το ξένο κλειδί (SCHOOL_ID) με το οποίο συνδέεται με την εκάστοτε σχολή του. 3.3.3 Πίνακας lesson Αυτός ο πίνακας περιέχει πληροφορίες του μαθήματος. Έχει σαν πρωτεύον κλειδί το ID του, το οποίο πρέπει να είναι ίδιο με αυτόν που αναγράφεται στον οδηγό σπουδών. Επίσης περιέχει και τον Τίτλο του μαθήματος. Πληροφορίες σχετικά με τον εκπαιδευτικό που το διδάσκει δεν προστέθηκαν, μια και προτεραιότητα της πτυχιακής ήταν η διανομή των βιβλίων στους φοιτητές. Παρόλα αυτά μπορούμε σε μελλοντικές αναβαθμίσεις να προσθέσουμε και γνώρισμα ή καλύτερα ξένο κλειδί που θα παραπέμπει στον εκπαιδευτικό που το διδάσκει. 30 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Σαν ξένο κλειδί ο πίνακας αυτός έχει το κωδικό του τμήματος (DEP_ID) στο οποίο επάγεται. 3.3.4 Πίνακας student Φτιάξαμε έναν πίνακα που περιέχει στοιχείο του φοιτητή. Σαν πρωτεύον κλειδί διαλέξαμε όχι μόνο τον Αριθμό Μητρώου (ΑΜ) του, διότι αυτό δε θα τον χαρακτήριζε μοναδικά στο ΤΕΙ, αλλά το συνδυάσαμε με τον κωδικό τμήματος (DEPARTMENT_ID) έτσι ώστε να έχουμε μοναδικό χαρακτηρισμό του φοιτητή. Σημαντικό είναι να αναφερθεί ότι το γνώρισμα email πρέπει να είναι σωστά καταχωρημένο, έτσι ώστε ο φοιτητής να λαμβάνει την ενημέρωση που χρειάζεται για να προσέλθει εγκαίρως στη διανομή και να παραλάβει τα συγγράμματα που του αναλογούν. 3.3.5 Πίνακας Book Ο πίνακας αυτός έχει σαν πρωτεύον κλειδί τον αριθμό ISBN έτσι ώστε να είναι ίδιο με το barcode του. Με αυτό τον τρόπο η διαχείριση ενός βιβλίου θα απλοποιηθεί. Εκτός από τα υπόλοιπα στοιχεία που μπορούν να χαρακτηρίζουν ένα βιβλίο, όπως είναι οι συγγραφείς (AUTHORS) ή τίτλος (TITLE) κτλ. πρακτικό γνώρισμα είναι το PLITHOS. Αυτό μας ενημερώνει πόσα βιβλία υπάρχουν στην βιβλιοθήκη. Ώστε να μπορούμε να υπολογίζουμε το πλήθος που θα πρέπει να παραγγείλουμε. Ένας επιπλέον στόχος της πτυχιακής ήταν η έκδοση μιας παραγγελίας στην οποία πρέπει να αναγράφεται η πράξη έγκρισης του Βιβλίου (PRAKSI) από την σχολή. 3.3.6 Πίνακας rlessonbook 31 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Ο πίνακας αυτός αποτελεί την συσχέτιση που έχουν τα μαθήματα με τα βιβλία. Ο πίνακας αυτός συνδέει τα μαθήματα με τα αντίστοιχα βιβλία. Θεωρούμε ότι κάθε μάθημα διδάσκεται από ένα μοναδικό βιβλίο. Επειδή σε μελλοντικές αναβαθμίσεις αυτό μπορεί και να μην ισχύει, αποφασίσαμε να μην διατηρήσουμε σαν πρωτεύον κλειδί τον κωδικό του μαθήματος (id_lesson) μαζί με τον κωδικό του βιβλίου (id_book), αλλά να ορίσουμε πρωτεύον κλειδί το ID που είναι γνώρισμα που παίρνει αυτόματα τιμή. 3.3.7 Πίνακας needbook Ο πίνακας αυτός περιέχει τους κωδικούς των βιβλίων που δικαιούται να παραλάβει ο φοιτητής. Εύλογο είναι λοιπόν να αποτελείτε από τα δύο κλειδιά των συσχετιζόμενων πινάκων. Το κωδικό του βιβλίου (ISBN) και από τους κωδικούς STUD_ΑΜ και DEPART_ID του φοιτητή. 3.3.8 Πίνακας hasbook Παρόμοια με τον πίνακα needbook έτσι κι αυτός συνδέει φοιτητή με βιβλίο, αλλά με την συσχέτιση ότι ο φοιτητής παρέλαβε το βιβλίο αυτό. Επιπλέον όμως αποθηκεύεται και η συγκεκριμένη ημερομηνία και ώρα της παραλαβής του βιβλίου από τον φοιτητή. Όπως και έχει γραφεί σε προηγούμενη ενότητα η πλειάδα - εγγραφή του πίνακα needbook μεταπηδά στον hasbook, με επιπλέον γνώρισμα την ημερομηνία της εγγραφής. Ο φοιτητής μπορεί μετά, εφόσον πληρεί τις υλικές προϋποθέσεις (H/Y, WebCam) να δει ποια βιβλία έχει πάρει και δικαιούται. Στην Εικόνα 30 και Εικόνα 31 περιγράφεται σχηματικά όλη η βάση δεδομένων που διαχειρίζεται τα δεδομένα μας. 32 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 30: Διάγραμμα Βάσης Δεδομένων από το MySQL 33 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 31: CMOS βάσης δεδομένων 3.4 Ασφάλεια και Διαχείριση Ήδη από την περιγραφή των στόχων της πτυχιακής είχε γίνει συγκεκριμένη αναφορά για τα επίπεδα ασφάλειας προς το σύστημα. Ένας τρόπος για την επιτυχή υλοποίηση της απόδοσης πρόσβασης στο σύστημα θα μας το παρείχε η ίδια η mysql, δημιουργώντας επιπλέον χρήστες στην ίδια την βάση δεδομένων. Ο άλλος τρόπος, ο οποίος και τελικά εφαρμόστηκε είναι ο έλεγχος της ροής εκτέλεσης του συστήματος και την δημιουργία πίνακα της βάσης δεδομένων που θα περιέχει στοιχεία των χρηστών (Εικόνα 32). Για επιπλέον ασφάλεια του συστήματος δημιουργήσαμε πίνακα log, ο οποίος κρατάει αρχείο σχετικά με όλες τις αλλαγές ή ερωτήσεις που γίνονται στην βάση δεδομένων. 34 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 32: Διάγραμμα Log και user Για την πρόσβαση του διαχειριστή στα στοιχεία του πίνακα log, θα πρέπει να είναι γνώστης της SQL. Στην command Line του mysql και μπορεί να βλέπει όλες τις πράξεις που έγιναν, από ποιον και πότε. 35 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 33: Αποτύπωση δεδομένων του πίνακα log απ όπου φαίνεται ο χρήστης και οι αντίστοιχες παράμετροι που εκτελέστηκαν από αυτόν. 36 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

4 Μελλοντικές αναπτύξεις Η παρούσα πτυχιακή εργασία πραγματοποιεί όλους τους στόχους που τέθηκαν στην αρχή. Ο τρόπος όμως που χτίστηκε μας παρέχει την δυνατότητα να εξελιχθεί σε ένα εργαλείο το οποίο έχει ευρύτερες δυνατότητες. Η βάση δεδομένων θα μπορούσε να περιέχει πίνακα με τους εκπαιδευτικούς που διδάσκουν μαθήματα του τμήματος. Τα στοιχεία του πίνακα θα συνδέονταν άμεσα με το μάθημα που διδάσκει. Επίσης μπορεί να το σύστημα να προσαρμοστεί στην έκδοση στατιστικών στοιχείων κόστους κάθε τμήματος ή καθιέρωση των ενεργών φοιτητών κτλ. 37 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

5 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΣΥΣΤΗΜΑΤΟΣ Apache - PHP MySQL Η βασική λειτουργία ενός Web server φαίνεται στο Σχήμα I. Αυτό το σύστημα αποτελείται από δύο αντικείμενα από τα οποία το ένα είναι ο Web browser και το άλλο ο Web server. Απαιτείται μεταξύ τους μία σύνδεση επικοινωνίας. Ένας browser κάνει μία αίτηση στον server κι έπειτα ο server στέλνει πίσω μία απόκριση. Αυτή η αρχιτεκτονική εξυπηρετεί όταν ο διακομιστής παρέχει στατικές σελίδες. Σημειώνεται ότι οι διακομιστές είναι τα μηχανήματα που προσφέρουν υπηρεσίες ενώ οι πελάτες είναι τα μηχανήματα που ζητούν και δέχονται τις υπηρεσίες αυτές. Ένα μηχάνημα μπορεί να είναι οποιουδήποτε τύπου, ακόμα και των δύο τύπων ταυτόχρονα. Επίσης, η γλώσσα μορφοποίησης που χρησιμοποιείται για τη δημιουργία ιστοσελίδων, είναι η HTML (Hypertext Markup Language) και το πρωτόκολλο το οποίο χρησιμοποιείται για την μεταφορά των σελίδων από τον διακομιστή στον πελάτη είναι το HTTP (Hypertext Transfer Protocol). 38 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 34 5.1 Εισαγωγή Η αρχιτεκτονική που υποστηρίζει μία Web τοποθεσία με βάση δεδομένων είναι λίγο πιο περίπλοκη. Η Web εφαρμογή με βάση δεδομένων που αναπτύσσεται στην παρούσα εργασία ακολουθεί την γενική δομή που φαίνεται στην Εικόνα 33. 39 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Εικόνα 35 Μία τυπική Web συναλλαγή βάσεων δεδομένων αποτελείται από τις παρακάτω φάσεις: 1. Ο browser ενός χρήστη κάνει μία HTTP αίτηση για μία συγκεκριμένη σελίδα. 2. Ο server λαμβάνει την αίτηση για την συγκεκριμένη σελίδα, ανακαλεί το αρχείο και το περνά στην μηχανή PHP για επεξεργασία. 3. Η PHP μηχανή αρχίζει την ανάλυση του script. Μέσα στον κώδικα, υπάρχει μία εντολή που κάνει την σύνδεση με την βάση δεδομένων και εκτελεί ένα ερώτημα. Η PHP ανοίγει μία σύνδεση με τον MySQL διακομιστή και στέλνει το κατάλληλο ερώτημα. 4. Ο MySQL διακομιστής λαμβάνει το ερώτημα της βάσης δεδομένων, το επεξεργάζεται και στέλνει τα αποτελέσματα ξανά στην PHP μηχανή. 5. Η PHP μηχανή σταματά την εκτέλεση του script, που συνήθως περιλαμβάνει την μορφοποίηση των αποτελεσμάτων του ερωτήματος σε HTML. Μετά, επιστρέφει την τελική HTML σελίδα στον server. 40 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

6. Ο server περνά την HTML σελίδα ξανά στον browser, όπου ο χρήστης μπορεί να δει τα αποτελέσματα. Η διαδικασία είναι βασικά η ίδια, ανεξάρτητα από το ποια μηχανή script ή ποιος server βάσης δεδομένων χρησιμοποιείται. Συνήθως το πρόγραμμα του server, η PHP μηχανή και ο server της βάσης δεδομένων βρίσκονται στον ίδιο υπολογιστή. Ωστόσο, είναι πολύ συνηθισμένο ο server της βάσης δεδομένων να βρίσκεται σε διαφορετικό υπολογιστή. Αυτό μπορεί να γίνει για λόγους ασφάλειας, για μεγαλύτερη χωρητικότητα ή για κατανομή του φόρτου. 5. 2 PHP Η PHP (Hypertext Preprocessor) είναι μία ευρέως χρησιμοποιούμενη, ανοιχτού κώδικα και γενικού σκοπού γλώσσα σεναρίου που είναι ειδικά σχεδιασμένη για την ανάπτυξη εφαρμογών διαδικτύου και μπορεί να ενσωματωθεί μέσα σε κώδικα HTML και να εκτελείται κάθε φορά που ο χρήστης επισκέπτεται την σελίδα. Ο PHP κώδικας μεταφράζεται στον Web διακομιστή και δημιουργεί κώδικα HTML ή άλλη έξοδο που θα δει ο επισκέπτης. Αυτό που διαχωρίζει την PHP από τα client-side JavaScripts είναι ότι ο κώδικας εκτελείται στον server (εξυπηρετητή). Αν υπήρχε ένα script PHP, ο browser θα έπαιρνε τα αποτελέσματα της εκτέλεσης αυτού του script, χωρίς να μπορεί να καταλάβει με κανένα τρόπο τι κώδικας υπάρχει από κάτω. Μπορούμε ακόμα να ρυθμίσουμε τον Web Server ώστε να χειρίζεται όλα τα HTML αρχεία με την PHP. Αν και η ανάπτυξη της PHP εστιάζεται σε server-side scripting (scripting στην πλευρά του διακομιστή), μποροϋνε να γίνουν πολύ περισσότερα με αυτήν. Σημειώνεται ότι η τελευταία έκδοση της PHP είναι η 5.3 και είναι αυτή η οποία χρησιμοποιείται στην εφαρμογή. 41 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

5.2.1 Βασικά χαρακτηριστικά Η PHP ενσωματώνει την ισχύ και τη δυναμικότητα σχετικά παλαιότερων γλωσσών όπως η Perl αλλά καταργώντας τις αδυναμίες τους. Αναφέρουμε μερικά από τα βασικά χαρακτηριστικά της: Ο συντακτικός αναλυτής της, καθώς και ο πηγαίος κώδικάς της διανέμεται ελεύθερα στο διαδίκτυο δίνοντας την δυνατότητα σε όποιον θέλει να κατασκευάζει και να διανέμει εφαρμογές για εμπορική και μη χρήση. Μπορεί να μεταφραστεί και να τρέξει στα περισσότερα λειτουργικά συστήματα που κυκλοφορούν στην αγορά (Microsoft Windows, Linux, BSD, Solaris, Macintosh OS X, και UNIX servers). Συνεργάζεται χωρίς προβλήματα με τους πιο δημοφιλείς Web Servers που κυκλοφορούν όπως τον Apache και τον Microsoft IIS. Διαθέτει ενσωματωμένες εντολές υποστήριξης για ένα μεγάλο αριθμό βάσεων δεδομένων όπως MySQL, Sybase, Oracle, Ingres. Προσφέρει ένα σύνολο από Database API s τις ενοποιημένες ODBC συναρτήσεις (unified ODBC functions), που εξασφαλίζουν προσπέλαση σε μια υποκείμενη βάση δεδομένων, την χρησιμοποιώντας τις εγγενείς μεθόδους της εκάστοτε βάσης για να μεγιστοποιήσουν την απόδοση (IBM DB2). Είναι πιο απλό να συντάξει κάποιος κώδικα PHP από ότι σε οποιαδήποτε άλλη γλώσσα σεναρίου. Μπορεί να χρησιμοποιηθεί στη δημιουργία εικόνων, ανάγνωση/εγγραφή σε αρχεία και για αποστολή email. Για να προσφέρει αυτές τις υπηρεσίες, η PHP επικοινωνεί με αρκετά πρωτόκολλα όπως: HTTP (Ιστοσελίδες), POP3 (e-mail), SNMP και LDAP. Υποστηρίζει τόσο τον διαδικαστικό προγραμματισμό όσο και τον αντικειμενοστραφή. 42 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

5.2.2 Δυνατότητες της PHP Η PHP επικεντρώνεται κυρίως στο server-side scripting, έτσι μπορεί να κάνει οτιδήποτε μπορεί ένα άλλο CGI πρόγραμμα, όπως να μαζέψει δεδομένα, να παράγει δυναμικό περιεχόμενο σελίδων, ή να στείλει και να πάρει cookies. Υπάρχουν τρία κύρια πεδία που χρησιμοποιείται ένα PHP script. Server-side scripting. Είναι το κύριο και το πιο συνηθισμένο πεδίο για την PHP. Εδώ Χρειαζόμαστε τρία πράγματα. Τον PHP μεταγλωττιστή (parser) (CGI ή server module), ένα webserver (εξυπηρετητή σελίδων) και ένα web browser. Πρέπει να τρέξουμε τον webserver, με μια συνδεδεμένη εγκατάσταση της PHP. Μπορούμε να προσπελάσουμε τα αποτελέσματα του PHP προγράμματος με ένα web browser, βλέποντας την σελίδα PHP μέσα από τον server. Command line scripting. Μπορούμε να φτιάξουμε ένα PHP script για να το τρέχουμε χωρίς server ή browser. Χρειαζόμαστε μόνο τον PHP μεταγλωττιστή για να το χρησιμοποιήσουμε με αυτό τον τρόπο. Αυτός ο τρόπος είναι ιδανικός για scripts που εκτελούνται συχνά με τη χρήση της cron (σε Unix ή Linux) ή με τον Task Scheduler (στα Windows). Αυτά τα scripts μπορούν επίσης να χρησιμοποιηθούν για απλές εργασίες επεξεργασίες κειμένου. Εγγραφή client-side GUI εφαρμογών (Γραφικά περιβάλλοντα χρηστών). Αν θέλουμε να χρησιμοποιήσουμε κάποια προχωρημένα χαρακτηριστικά της PHP στις client-side εφαρμογές μας, μπορούμε να χρησιμοποιήσουμε το PHP-GTK για αυτού του είδους τα προγράμματα. Έχουμε επίσης τη δυνατότητα να γράφουμε cross-platform εφαρμογές με αυτό τον τρόπο. Το PHP-GTK είναι μια επέκταση της PHP και δεν συμπεριλαμβάνεται στην κύρια διανομή. 43 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Η PHP μπορεί να χρησιμοποιηθεί σε όλα τα κύρια λειτουργικά συστήματα, συμπεριλαμβανομένου του Linux, πολλών εκδοχών του Unix (HP-UX, Solaris και OpenBSD), Microsoft Windows, Mac OS X, RISC OS, και πιθανών σε άλλα. Η PHP υποστηρίζει επίσης Apache, Microsoft Internet Information Server, Personal Web Server, Netscape και iplanet OmniHTTPd, servers, Oreilly Website Pro server, Caudium, Xitami και πολλούς άλλους webservers. Για την πλειοψηφία των servers η PHP έχει ένα module, για τους υπόλοιπους μπορεί να λειτουργήσει ως ένας CGI επεξεργαστής. Έτσι με την PHP έχουμε την ελευθερία επιλογής ενός λειτουργικού συστήματος και ενός web server. Επιπλέον, έχουμε επίσης την ελευθερία να χρησιμοποιήσουμε συναρτησιακό (procedural) ή αντικειμενοστραφή (object oriented) προγραμματισμό, ή μια ανάμιξη τους. Αν και η παρούσα έκδοση δεν υποστηρίζει όλα τα πρότυπα χαρακτηριστικά, μεγάλες βιβλιοθήκες κώδικα και μεγάλες εφαρμογές (συμπεριλαμβανομένης και της βιβλιοθήκης PEAR) είναι γραμμένες μόνο με αντικειμενοστραφή κώδικα. 5.3 MySQL Το σύστημα MySQL έχει καθιερωθεί στους ειδικούς της πληροφορικής σαν το πιο ποιοτικό προϊόν, αντίστοιχα με DBase της IBM, MS SQL Server και Oracle. Συνοπτικά μπορεί κανείς να αναφέρει τα πλεονεκτήματα της MySQL: Είναι δωρεάν. Είναι πιο κατάλληλη για χρήση στο Internet. Είναι ιδιαίτερα βελτιστοποιημένη για ταχύτητα στην ανάκτηση δεδομένων. Παρέχει ευκολίες στο backup. Είναι συμβατή και μεταφέρσιμη σε διάφορες πλατφόρμες και για διάφορα εργαλεία ανάπτυξης. 44 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Η βάση δεδομένων εισάγεται και εξάγεται με εύκολο τρόπο και κωδικοποιείται σε πολλούς τομείς. Τα τελευταία χρόνια αν και με πολύ πίεση τα commercial προγραμματιστικά περιβάλλοντα (.ΝΕΤ) άρχισαν να παράγουν driver για την επικοινωνία της γλώσσας προγραμματισμού με την βάση δεδομένων. Η MySQL είναι ένα σύστημα διαχείρισης βάσεων δεδομένων. Ακολουθεί το σχεσιακό μοντέλο (relational) και είναι συμβατή με ANSI SQL. Είναι η πιο δημοφιλής, ανοιχτού κώδικα, SQL βάση δεδομένων που αναπτύσσεται και παρέχεται από την MySQL AB. Η MySQL AB είναι μια εμπορική εταιρεία που παρέχει υπηρεσίες γύρω από τη βάση δεδομένων MySQL. 5.4 Apache Web Server Ο Apache Web Server είναι ένας πολύ δημοφιλής διακομιστής διαδικτύου που διανέμεται ελεύθερα στο διαδίκτυο. Αναπτύχθηκε και συντηρείται από μια ομάδα εθελοντών που ήθελαν να υλοποιήσουν έναν εύρωστο κώδικα για διακομιστή δικτύου, που να είναι εμπορικός και να έχει πολλά χαρακτηριστικά. Σήμερα ο Apache θεωρείται από τους πιο σταθερούς διακομιστές δικτύου που κυκλοφορούν και θα πρέπει να τονίσουμε ότι αρκετοί εμπορικοί διακομιστές διαδικτύου, όπως ο HTTP Server της IBM, χρησιμοποιούν τον πυρήνα του Apache. 5.5 Hypertext Transfer Protocol (HTTP) Το πρωτόκολλο HTTP καθορίζει τον τρόπο επικοινωνίας στο διαδίκτυο μεταξύ των διακομιστών και των πελατών (servers - clients). Είναι ένα γενικό, αντικειμενοστραφές πρωτόκολλο που μεταβιβάζει πληροφορία μεταξύ των 45 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

διακομιστών και των πελατών. Ξεκίνησε από την έκδοση HTTP/0.9 κατά τη διάρκεια της πρώιμης ανάπτυξης του διαδικτύου και ακολούθησε η έκδοση HTTP/1.0 το 1995. Η πιο πρόσφατη έκδοσή του, HTTP/1.1, παρέχει περισσότερη λειτουργικότητα και υποστηρίζει πολλαπλές συναλλαγές μεταξύ πελάτη και διακομιστή κατά τη διάρκεια της ίδιας αίτησης. Μια συναλλαγή βασισμένη στο πρωτόκολλο HTTP αποτελείται από τα ακόλουθα στάδια: 1. Σύνδεση Ο πελάτης αποκαθιστά σύνδεση με τον διακομιστή. 2. Αίτηση Ο πελάτης στέλνει το μήνυμα της αίτησης στον διακομιστή. 3. Απάντηση Ο διακομιστής διαδικτύου στέλνει την απάντηση. 4. Κλείσιμο Η σύνδεση τερματίζεται από τον διακομιστή. 46 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

6. ΕΠΙΛΟΓΗ ΤΟΥ ΜΟΝΤΕΛΟΥ ΑΝΑΠΤΥΞΗΣ ΤΗΣ ΕΦΑΡΜΟΓΗΣ Στο σημείο και αφού πλέον από τη διερεύνηση των υπαρχόντων συστημάτων έχουν καταδειχτεί τα κύρια σημεία του συστήματος, πρέπει να επιλεγεί η μέθοδος σύμφωνα με την οποία θα αναπτυχθεί η εφαρμογή. Αυτό θα γίνει έχοντας υπόψη τον κύκλο του Deming (Plan Do Check Act) σχετικά με την υλοποίηση εφαρμογών και τη διασφάλιση της ποιότητας. Η επιλογή αυτή πρέπει να είναι δεσμευτική μέχρι την περάτωση της εφαρμογής καθώς οποιαδήποτε ασυνέχεια ή ασυμφωνία ενεργειών θα έχει πολύ μεγάλο κόστος σε χρόνο. Τα μοντέλα αυτά εξετάζονται παρακάτω και η επιλογή γίνεται με γνώμονα το μέγεθος της ομάδας, τον προσδοκώμενο χρόνο ολοκλήρωσης του έργου καθώς και την φύση της εφαρμογής η οποία δεν πρέπει να ξεχνάμε ότι είναι πτυχιακή εργασία. Εδώ πρέπει να σημειώσουμε ότι κανένα μοντέλο δεν είναι το απόλυτο και η χρήση του κάθε ένα εξαρτάται από τη φύση της εφαρμογής και των χρηστών για τους οποίους προορίζεται. Ακολούθως αναλύονται οι δυνατές επιλογές. 6.1 Build and Fix model Το πρότυπο αυτό χαρακτηρίζεται από την extreme programming προσέγγισή του δηλαδή την κατασκευή της εφαρμογής χωρίς προδιαγραφές και σχέδιο. Η συγγραφή του κώδικα είναι το πρώτο στάδιο της υλοποίησης χωρίς να προηγούνται τα στάδια της ανάλυσης και σχεδίασης. Η προσέγγιση αυτή μπορεί να λειτουργήσει αποδοτικά για προγράμματα μικρού μεγέθους, 200 500 γραμμών κώδικα, αλλά φυσικά είναι απαράδεκτη για μία εφαρμογή όπως αυτήν που εξετάζουμε τώρα. 47 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

6.2 Rapid Prototyping model Το μοντέλο αυτό δημιουργεί σε μικρό χρονικό διάστημα μία μικρογραφία της εφαρμογής με τις κυριότερες λειτουργίες της και δίνει στους χρήστες τη δυνατότητα να τις δοκιμάσουν και να πειραματιστούν με αυτές. Όταν οι χρήστες δώσουν την έγκρισή τους για το πρωτότυπο τότε γίνεται η τεκμηρίωση των προδιαγραφών. Το πλεονέκτημα αυτής της μεθοδολογίας στην περίπτωσή μας είναι ότι δίνεται η δυνατότητα για μία γρήγορη δημιουργία μίας μικρής λειτουργικής εφαρμογής κάτι το οποίο εκτός από μία πρώτη εικόνα όλου του project δίνει και ψυχολογικά κίνητρα στους κατασκευαστές αφού δίνει την άμεση εντύπωση της δημιουργίας. Το πρόβλημα είναι όμως ότι το πρωτότυπο που θα αναπτυχθεί κατά την πρώτη φάση μπορεί να διαφέρει εντελώς από την τελική εφαρμογή αν οι αρχικές και οι τελικές απαιτήσεις απέχουν αρκετά. Αυτό θα δυσκολέψει πάρα πολύ τη διαδικασία της επανασχεδίασης αφού πιθανόν θα πρέπει να γίνει τροποποίηση στο layout, στη βάση δεδομένων ή και στα δύο οπότε αυτό έχει μεγάλο κόστος όσον αφορά τον χρόνο υλοποίησης. Για τον λόγο αυτό η προσέγγιση αυτή απορρίπτεται. 6.3 Incremental model Με τη μέθοδο αυτή το τελικό προϊόν δημιουργείται από τη συνένωση ξεχωριστών κομματιών κώδικα και λειτουργιών που αλληλεπιδρούν μεταξύ τους. Έτσι, η υλοποίηση χωρίζεται σε στάδια στο τέλος των οποίων έχει αναπτυχθεί ένα λειτουργικό σύνολο το οποίο όμως είναι υποσύνολο όλων των απαιτήσεων. Η δυσκολία εδώ επαφίεται στο ότι κάθε πρόσθετη λειτουργία και ενότητα πρέπει να ενσωματωθεί στην ήδη υπάρχουσα δομή με τις ελάχιστες δυνατές τροποποιήσεις. 48 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

6.4 Waterfall model Σύμφωνα με το μοντέλο αυτό, πρώτα γίνεται ο πλήρης καθορισμός των απαιτήσεων και των λειτουργιών της εφαρμογής, έπειτα καθορίζεται τι ακριβώς πρέπει να κάνει η εφαρμογή και μετά καθορίζεται ένα σχέδιο με την περιγραφή του πως η εφαρμογή πρόκειται να τα κάνει. Όταν καθοριστούν αυτά αρχίζει η υλοποίηση κατά τη διάρκεια της οποίας υπάρχει η δυναμική δυνατότητα επαναπροσδιορισμού των απαιτήσεων και του κώδικα ώστε οποιεσδήποτε αλλαγές και βελτιώσεις να είναι εφικτές. Το πρόβλημα εδώ είναι η μικρή απόκλιση που πρέπει να υπάρχει στις αρχικές και τελικές απαιτήσεις. Έτσι είναι πολύ δύσκολο να ξέρουμε από την αρχή τί ακριβώς λειτουργίες θα χρειαστούμε. 6.5 Extreme prototyping Η μέθοδος αυτή χρησιμοποιείται κυρίως για την ανάπτυξη web εφαρμογών. Το κύριο στοιχείο της είναι ότι η ανάπτυξη της εφαρμογής διαιρείται σε τρεις φάσεις κάθε μία από τις οποίες βασίζεται στην προηγούμενη. Η πρώτη φάση είναι ένα στατικό πρωτότυπο το οποίο αποτελείται κυρίως από σελίδες HTML ή το γραφικό μέρος του layout της εφαρμογής. Κατά τη δεύτερη φάση, προγραμματίζονται όλες οι διεπαφές χρήστη ώστε να είναι πλήρως λειτουργικές Στην τρίτη φάση υλοποιούνται οι υπηρεσίες και οι λειτουργίες που πρέπει να ικανοποιούν τις προδιαγραφές Με το μοντέλο αυτό ο χρόνος καταγραφής απαιτήσεων καθώς και ο χρόνος ανάπτυξης μπορεί να μειωθεί κατά πολύ ενώ οι εργασίες μπορούν να διασπαστούν και να υλοποιηθούν από πολλές ομάδες που εργάζονται παράλληλα. Άλλο πλεονέκτημα είναι ότι δίνεται η δυνατότητα άμεσης οπτικής αναπαράστασης όλης της εφαρμογής καθώς και το ότι η συγγραφή κώδικα μπορεί να αρχίσει αρκετά νωρίς χωρίς αυτό να προκαλέσει προβλήματα. Παρατηρείται λοιπόν ότι το μοντέλο αυτό δίνει τη δυνατότητα για: 49 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

Γρήγορη καταγραφή των απαιτήσεων. Άμεση οπτική αναπαράσταση της εφαρμογής. Γρήγορο ξεκίνημα συγγραφής κώδικα. Δυνατότητα επανατροφοδότησης (feedback) και διόρθωσης. Παράλληλη εργασία. Για όλους τους παραπάνω λόγους και λαμβάνοντας υπόψη τη φύση της εφαρμογής η οποία είναι web-oriented καθώς και ότι το έργο θα επιτελεστεί από ένα άτομο, έχει επιλεχθεί το μοντέλο αυτό για την υλοποίηση του έργου. Για τον λόγο αυτό, παρακάτω αναλύονται συνοπτικά τα κύρια στάδια του μοντέλου αυτού. Πρώτη Φάση - Static Prototype phase Κατασκευή των κύριων σελίδων. Δημιουργία των CSS αρχείων. Υλοποίηση λογικών μοντέλων δεδομένων για την υποστήριξη των διεπαφών (screens). Δεύτερη Φάση - Dynamic prototype phase Δυνατότητα πλήρης περιήγησης στην εφαρμογή. Χρήση κώδικα όπου χρειάζεται (JavaScript). Διανομή όλων των λειτουργιών στα αντίστοιχα πεδία των σελίδων. Δυνατότητα ενός πλήρους λειτουργικού UI αλλά χωρίς λειτουργικότητα. Τρίτη Φάση - Service Implementation phase Application Program Interface (API) document. Υλοποίηση κάθε λειτουργίας με τη σύνδεσή της σε βάση δεδομένων ή σε ό,τι άλλους πόρους απαιτείται. 50 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

6. Βάση Δεδομένων 6.1 Εισαγωγή Στο κεφάλαιο που χρησιμοποιήθηκε αυτό παρουσιάζεται η στην εφαρμογή ανάλυση καθώς της βάσης δεδομένων και η τεκμηρίωσή της παραθέτοντας τους σχετικούς πίνακες και διαγράμματα. 6.2 Κανονικοποίηση Στο σχεσιακό περιβάλλον βάσης δεδομένων, όλοι οι πίνακες πρέπει να είναι κανονικοποιημένοι, τουλάχιστον, σε πρώτο βαθμό κανονικοποίησης, δηλαδή να μην περιέχουν επαναλαμβανόμενες ομάδες δεδομένων. Ισοδύναμα η στήλη του κάθε πίνακα δε νοείται να αντιστοιχεί σε πεδίο που παίρνει πολλαπλές και όχι μια τιμή. Ένας πίνακας που είναι σε πρώτη κανονική μορφή (1NF) είναι πίνακας σύμφωνα με το σχεσιακό μοντέλο, μπορεί όμως να παρουσιάζει προβληματική συμπεριφορά στις εισαγωγές, ενημέρωσης και τις διαγραφές των δεδομένων του. «Προβληματική συμπεριφορά» σημαίνει είτε δυνατότητα να συμβεί λάθος στην καταχώρηση / ενημέρωση των δεδομένων είτε σπατάλη χώρου καταχώρησης των δεδομένων στο δίσκο. Η θεωρία της κανονικοποίησης αναπτύχθηκε με στόχο να ανιχνεύεται και να προλαμβάνεται μια τέτοιου είδους προβληματική κατάσταση όταν η εφαρμογή είναι ακόμη στο στάδιο του σχεδιασμού της. Στην Κανονικοποίηση με διάσπαση, η κάθε περίπτωση μη κανονικοποιημένου πίνακα αντιμετωπίζεται με διαδοχικές διασπάσεις που καταλήγουν σε ένα 51 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

ισοδύναμο σύνολο πινάκων όπου ο κάθε ένας είναι σε τρίτη κανονική μορφή (3NF). 6.3 Μη Κανονική Μορφή Στην μη κανονική μορφή δεν έχουμε ακόμη πίνακα με την σχεσιακή έννοια. Τα πεδία τοποθετούνται το ένα δίπλα στο άλλο με μόνο επιπλέον στοιχείο πληροφορίας την ομαδοποίηση πεδίων που αντιστοιχούν σε χαρακτηριστικά που παίρνουν πολλαπλές τιμές. Η ομαδοποίηση των τελευταίων αναπαριστάται με ζεύγη εσωτερικών παρενθέσεων στην περιγραφή της δομής του αντίστοιχου πίνακα. 6.4 Πρώτη κανονική μορφή Ένα πίνακας είναι σε πρώτη κανονική μορφή (1ΝF) τότε και μόνον τότε όταν στην κάθε εγγραφή του, η κάθε μια στήλη παίρνει ατομικές τιμές. Με άλλα λόγια, δεν επιτρέπεται να έχουμε πεδία / στήλες στον πίνακα που να παίρνουν πολλαπλές και όχι ατομικές τιμές. Αν ο πίνακας έλθει σε πρώτη κανονική μορφή δεν υπάρχουν δύο γραμμές που είναι εντελώς όμοιες. Ένα η περισσότερα πεδία / στήλες είναι ικανά με την τιμή τους να προσδιορίζουν μονοσήμαντα την κάθε μια γραμμή. Ακόμη και αν είναι ο πίνακας σε πρώτη κανονική μορφή είναι πολύ πιθανό να υπάρχουν περιττές επαναλήψεις και έτσι υπάρχει η ανάγκη της δεύτερης κανονικής μορφής. 6.5 Δεύτερη Κανονική Μορφή Ένας πίνακας είναι σε δεύτερη κανονική (2NF) μορφή όταν είναι σε πρώτη κανονική μορφή (1NF) και επιπλέον ικανοποιεί την εξής συνθήκη: Το κάθε πεδίο 52 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος

του που δε συμμετέχει στο σχηματισμό του κύριου κλειδιού εξαρτάται από το σύνολο του κυρίως κλειδιού και τίποτα λιγότερο. Αυτή η επιπλέον συνθήκη αφαιρεί έναν σημαντικό αριθμό από περιττές (και επικίνδυνες για λάθη) επαναλήψεις της ίδιας πληροφορίας. Φυσικά, μπαίνει θέμα να εξετάσουμε έναν πίνακα ώστε να είναι σε 2NF μορφή μόνον όταν το κύριο κλειδί είναι σύνθετο. Πίνακες οι οποίοι είναι σε 1NF μορφή και τον οποίων το κύριο κλειδί είναι απλό (αποτελείται από ένα μόνο πεδίο) είναι αυτόματα και 2NF. Για να φέρουμε έναν πίνακα από 1NF σε 2NF, παίρνουμε τα πεδία του πίνακα που εξαρτώνται από μέρος του σύνθετου κλειδιού μαζί με ένα αντίγραφο του μέρους του κλειδιού (από το οποίο εξαρτώνται τα πεδία) και τα μετακομίζουμε σε έναν άλλο πίνακα. 6.6 Τρίτη κανονική μορφή Ένας πίνακας είναι σε πρώτη κανονική μορφή (3NF) όταν: Όλα τα πεδία που δε συμμετέχουν στο σχηματισμό του κύριου κλειδιού του εξαρτώνται συναρτησιακά από το κύριο κλειδί και τίποτα λιγότερο από αυτό (2NF). Δεν υπάρχει πεδίο που να μην συμμετέχει στο σχηματισμό του κύριου κλειδιού το οποίο να εξαρτάται συναρτησιακά από άλλο πεδίο που επίσης δεν συμμετέχει στο σχηματισμό του κύριου κλειδιού. Εξαίρεση αποτελεί, φυσικά, η εξάρτηση πεδίου από εναλλακτικό κλειδί, όταν υπάρχει. Ισοδύναμα, ένας πίνακας είναι σε 3NF όταν κάθε πεδίο που δε συμμετέχει στο σχηματισμό του κύριου κλειδιού εξαρτάται συναρτησιακά από το κύριο κλειδί, τίποτα λιγότερο από αυτό το κύριο κλειδί και μόνο το κύριο κλειδί. Ένας πίνακας σε 3NF δεν περιλαμβάνει έμμεσες συναρτησιακές εξαρτήσεις μεταξύ των πεδίων του. 53 Αλτικουλάκης Χαράλαμπος & Βαρβαρέζος Νικόλαος