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



Σχετικά έγγραφα
C2 General. Ανώτατο Όριο χρέωσης για Ιδιώτες συνδρομητές

Pylon Entry. Πόροι. Στη διαδικασία αυτή περιγράφεται η Δημιουργία- Μεταβολή-Διαγραφή Αναζήτηση Πόρων

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

Καλώς ήρθατε στη Cyta Κινητή!

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

Οδηγίες Χρήσης Πύλης Ύδρευσης του Δήμου Εμμανουήλ Παππά

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

Οδηγίες Ανάκτησης Password λογαριασμού URegister

ΟΝΟΜΑΤΕΠΩΝΥΜΟ : Αντικείμενα: Βάσεις δεδομένων, σχέσεις μεταξύ πινάκων, ερωτήματα, φόρμες και αναφορές.

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

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

ΠΡΟΣΦΟΡΑ της Wind προς το ικηγορικό Σύλλογο Αθηνών

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

Διαχείριση Επιλογών Διαμόρφωσης

ΑΝΑΚΟΙΝΩΣΗ Αναλυτικά, τα χαρακτηριστικά των νέων προγραμμάτων COSMOTE Business Mobile Cost Control Value είναι:

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά

Είσοδος στην εφαρμογή Δημιουργία Εταιρίας Καρτέλα Στοιχεία εταιρίας: Καρτέλα Πρόσθετα στοιχεία: Καρτέλα Τράπεζα:...

Κάρτες πόντων (Loyalty card system)

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

Vodafone Business Connect

Οδηγός Χρήσης : Εφαρμογή Vodafone Mobile Broadband

Τι θα αλλάζει για τους συνδρομητές μας με το One Login

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

Περιεχόμενα. 1 Παρεχόμενες Ηλεκτρονικές Υπηρεσίες Απόκτηση Κωδικού Πρόσβασης Πλοήγηση στις Ηλεκτρονικές Υπηρεσίες...

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

Διαχείριση περιεχομένου πύλης ηλεκτρονικών υπηρεσιών v10 v.1.0. [User manual]

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

ΕΓΓΡΑΦΗ ΣΤΗΝ ONLINE ΕΦΑΡΜΟΓΗ ΔΡΑΣΗΣ «Εφαρμογή της μεθόδου σεξουαλικής σύγχυσης των μικρολεπιδοπτέρων(κομφουζιο)» (Οδηγίες προς τον Αιτούντα)

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

Αναλυτικά Φύλλα Μισθοδοσίας

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress

Ηλεκτρονικές Υπηρεσίες. Εκτύπωσης Εκκαθαριαστικού / Βεβαίωσης Αποδοχών και Πιστοποίησης Χρηστών Μέσω Internet

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

Προσφορά. Αποκλειστικά για τους συναδέλφους μας στην Τράπεζα

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

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Εξωτερικών Χρηστών Δημοτικών Πυλών

Οδηγίες Χρήσης EAP Controller Software

Διαχείριση Αξιόγραφων

Τιµοκατάλογος Εταιρικών Προγραµµάτων και Υπηρεσιών TIM BBest

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

Διαχείριση Ειδοποιήσεων με Κινητές Συσκευές

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ ΕΦΑΡΜΟΓΗ ΤΟΥ ΕΡΓΑΛΕΙΟΥ BALANCED SCORECARD ΣΕ ΙΔΙΩΤΙΚΟ ΝΟΣΟΚΟΜΕΙΟ. Σπουδαστές: Δεληλίγκα Αργυρούλα, ΑΜ:

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

ΓΕΝΙΚΗ ΓΡΑΜΜΑΤΕΙΑ ΔΗΜΟΣΙΩΝ ΕΠΕΝΔΥΣΕΩΝ & ΕΣΠΑ

Με την αλλαγή των μεταβλητών σελιδοποίησης αυτόματα ρυθμίζετε το νέο όριο για τα άρθρα και τα αποτελέσματα αναζήτησης.

Πίνακας Περιεχομένων

Οδηγός Γρήγορης Παραμετροποίησης Auto Moto Cube

Περιεχόμενα. 1 Κόμβοι 2. 2 Εργασίες 2. 3 Γραφήματα 4. 4 Αιτήσεις 7. 5 Αδρανείς Λογαριασμοί Στατιστικά 11

HTTP API v1.6 SMSBOX.GR HTTP API v

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

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

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

Τμήμα Πληροφορικής ΑΠΘ

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

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

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

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

XAMPP Apache MySQL PHP javascript xampp

ΠΛΑΤΦΟΡΜΑ ΔΙΑΧΕΙΡΙΣΗΣ ΒΙΝΤΕΟΔΙΑΛΕΞΕΩΝ ΔΗΛΟΣ delos.uoa.gr. Εγχειρίδιο Χρήσης Μελών ΔΕΠ

Τιμοκατάλογος Κινητής Προγράμματα Καρτοκινητής Ιούνιος 2018

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

Στη γραμμή διεύθυνσης ενός φυλλομετρητή (web browser) πληκτρολογούμε hrm.lib.aegean.gr για να οδηγηθούμε στην σελίδα εισόδου του Αυτοματοποιημένου

CRM για Εκπαιδευτικούς Φορείς

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

ΑΝΑΚΟΙΝΩΣΗ Αναλυτικά, τα χαρακτηριστικά των νέων προγραμμάτων COSMOTE BUSINESS COST CONTROL ΑΠΕΡΙΟΡΙΣΤΑ είναι: COSMOTE BUSINESS COST

Πίνακας περιεχομένων

ΚΕΦΑΛΑΙΟ Web Services

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

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

Επιστημονικές εκδηλώσεις

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

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

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ. Εφαρμογή κατασκευής Προγράμματος εξεταστικών περιόδων. εφαρμογής

ΕΓΧΕΙΡΙ ΙΟ Ο ΗΓΙΩΝ. Ηλεκτρονική. Υπηρεσία Άντλησης Αποτελέσματος Πιστοποίησης Αναπηρίας

Στρατηγική Συνεργασία Ιατρικού Συλλόγου Πειραιά & Wind

Ειδικά Θέματα Παραμετροποίηση. Premium HRM web ΕΡΓΑΝΗ. Data Communication A.E.

Τίτλος Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης. Συντάκτης. Ακαδηµαϊκό ιαδίκτυο GUnet Οµάδα Ασύγχρονης Τηλεκπαίδευσης

01 SOLUTIONS HELLAS Ε.Π.Ε. Χελμού 20, Τ.Κ Μαρούσι Αττικής Τηλ.: Fax:

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

ΗΛΕΚΤΡΟΝΙΚΗ ΥΠΗΡΕΣΙΑ ΑΠΟΚΤΗΣΗΣ ΑΚΑΔΗΜΑΪΚΗΣ ΤΑΥΤΟΤΗΤΑΣ

ΜΕΡΟΣ ΠΡΩΤΟ: Θεωρητική Προσέγγιση...15

Ηλεκτρονικοί Υπολογιστές ΙI. Βάσεις Δεδομένων. Ακαδημαϊκό Έτος Εργαστήριο 6. Διαφάνεια 1. Κάπαρης Αναστάσιος

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

ΕΓΓΡΑΦΗ ΣΤΗΝ ONLINE ΕΦΑΡΜΟΓΗ ΜΕΤΡΟΥ 11 «Βιολογικά» (Οδηγίες προς τον Αιτούντα)

GoDigital.CMS Content Management System. Πλήρης διαχείριση περιεχομένου ιστοσελίδας

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση

Οδηγίες χρήσης εφαρμογής Ε.Ο.Π.Υ.Υ - Σύστημα Ηλεκτρονικής Προέγκρισης Φαρμάκων για Θεράποντες Ιατρούς

Συντάχθηκε απο τον/την Π.Ο.Σ.Π.Ε.Ρ.Τ. Τρίτη, 08 Μάρτιος :56 - Τελευταία Ενημέρωση Τρίτη, 08 Μάρτιος :58

ΜΑΘΗΜΑ / ΤΑΞΗ : ΑΕΠΠ / ΘΕΡΙΝΑ ΣΕΙΡΑ: 1 η ΗΜΕΡΟΜΗΝΙΑ: 08 / 02 / 2015 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι. ΜΙΧΑΛΕΑΚΟΣ- Α.ΚΑΤΡΑΚΗ - Π.

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

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

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

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΕΩΣ ALPHA WEB TRADING

Document Revisions... Error! Bookmark not defined. Introduction Σχεδιασμός Πληροφοριακού Συστήματος Αυθεντικοποίηση Χρηστών...

Σύλλογος Οδηγίες Χρήσης Εφαρμογής

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

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

Εργαστήριο Βάσεων Δεδομένων

ΠΡΑΞΗ: «Δομή Απασχόλησης και Σταδιοδρομίας (Δ.Α.ΣΤΑ.) Πανεπιστημίου Μακεδονίας» Κωδικός MIS ΥΠΟΕΡΓΟ: και α/α «01»

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

Transcript:

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

Περιεχόμενα ΠΕΡΙΕΧΟΜΕΝΑ... 2 ΚΕΦΑΛΑΙΟ 1...4 1 ΕΙΣΑΓΩΓΗ...4 1.1 ΚΙΝΗΤΗ ΤΗΛΕΦΩΝΙΑ... 4 1.2 Σύντομη περιγραφή του συστήματος... 5 1.3 ΔΟΜΗ ΒΙΒΛΙΟΥ... 6 ΚΕΦΑΛΑΙΟ 2......6 2 ΠΑΡΟΥΣΙΑΣΗ ΣΥΣΤΗΜΑΤΟΣ.....6 2.3 ΑΝΑΛΥΤΙΚΕΣ ΥΠΗΡΕΣΙΕΣ (ΣΥΝΟΛΙΚΑ)... 2.3 ΟΡΙΣΜΟΣ ΧΡΟΝΙΚΟΥ ΔΙΑΣΤΗΜΑΤΟΣ. 2.4 Συνολικές κλήσεις ανα αριθμό.. 2.5 ΣΥΝΟΛΙΚΟΣ ΧΡΟΝΟΣ ΒΑΣΕΙ ΑΡΙΘΜΟΥ... 2.5 ΣΥΓΚΕΝΤΡΩΤΙΚΕΣ ΥΠΗΡΕΣΙΕΣ... 18 2.6 ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ...18 2.6 ΣΤΑΤΙΣΤΙΚΗ 6 ΤΕΛΕΥΤΑΙΩΝ ΛΟΓΑΡΙΑΣΜΩΝ... 20 ΚΕΦΑΛΑΙΟ 3...21 3 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΤΕΧΝΟΛΟΓΙΕΣ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ 21 3.1 ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ...21

3.2 ΤΕΧΝΟΛΟΠΕΣ toy ΣΥΣΤΗΜΑΤΟΣ... 21 ΚΕΦΑΛΑΙΟ 4...... 23 4 ΒΑΣΗ ΔΕΔΟΜΕΝΩΝ..... 23 4.2 ΠΡΟΪΟΝΤΑ... 4.3 ΠΡΟΟΡΙΣΜΟΙ - ΠΑΡΟΧΟΙ... 4.4 ΠΡΟΟΡΙΣΜΟΙ - ΧΩΡΕΣ... 4.5 ΠΡΟΟΡΙΣΜΟΙ - ΖίΙΝΕΣ... 4.6 ΠΡΟΟΡΙΣΜΟΙ... 4.7 ΧΡΕΩΣΕΙΣ 4.8 ΠΡΟΓΡΑΜΜΑΤΑ ΣΥΜΒΟΑΑΙΟΥ... 4.9 ΣΥΜΒΟΑΑΙΑ... 4.10ΚΑΗΣΕΙ1 4.11 ΚΟΣΤΟΣ ΚΑΗΣΕΩΝ... 4.12 ΛΟΓΑΡΙΑΣΜΟΙ... 4.13 ΠΛΗΡΩΜΕΣ ΚΕΦΑΛΑΙΟ 5... 5 ΑΝΑΔΥΣΗ ΤΟΥ ΣΥΣΤΗΜΑΤΟΣ... 5.1 Διαδικασία ειςοδου στο σύστημα... 5.2 Αναλυτικές υπηρεσίες... 5.3 Συνολικές κλήσεις απο τους πεντε συχνότερους αριθμούς... 5.4 ΣΥΝΟΛΙΚΟΣ ΧΡΟΝΟΣ ΚΑΙ ΚΟΣΤΟΣ ΒΑΣΕΙ ΑΡΙΘΜΟΥ... 5.5 ΣΥΓΚΕΝΤΡΩΤΙΚΕΣ ΥΠΗΡΕΣΙΕΣ ΒΑΣΕΙ ΑΡΙΘΜΟΥ... 5.6 ΑΝΑΖΗΤΗΣΗ ΑΡΙΘΜΟΥ ΚΑΙ ΥΠΟΛΟΠΣΜΟΣ ΤΟΥ ΣΥΝΟΛΙΚΟΥ ΧΡΟΝΟΥ... 5.7 ΠΛΗΡΩΜΗ ΛΟΓΑΡΙΑΣΜΩΝ. 5.8 ΑΛΛΑΓΗ ΗΜΕΡΟΜΗΝΙΑΣ ΠΡΟΒΟΛΗΣ ΣΤΑΤΙΣΤΙΚΩΝ ΑΠΟΤΕΛΕΣΜΑΤΩΝ... 5.9 ΕΝΗΜΕΡΩΣΗ ΧΡΗΣΤΗ ΓΙΑ ΤΗΝ ΛΗΞΗ ΛΟΓΑΡΙΑΣΜΟΥ... 5.10 ΥΠΟΛΟΠΣΜΟΣ ΚΟΣΤΟΥΣ 5.11 Έ κδοση λογαριασμού πε \ ατη 5.12 Στατιστική αναλυςη... 5.13 ΣΤΑΤΙΣΤΙΚΑ ΣΤΟΙΧΕΙΑ ΛΟΓΑΡΙΑΣΜΩΝ ΤΩΝ ΕΞΙ ΤΕΛΕΥΤΑΙΩΝ ΜΒΝΩΝ... 5.14 ΔΗΜΙΟΥΡΓΙΑ ΓΡΑΦΗΜΑΤΩΝ 5.14.1 Κλήσεις ανά ώρα τις ημέρας 5.14.2 Κλήσεις ανά πάροχο 5.14.3 Κλήσεις ανά ημέρα της εβδομάδάς... 5.14.4 Στατιστικά τελευταίων εξι μηνών... 5.15 ΚΑΤΑΧΩΡΗΣΗ ΚΛΗΣΗΣ... ΠΑΡΑΡΤΗΜΑ A... Page.tpl.php... ΠΑΡΑΡΤΗΜΑ Β... PAGE.TPL.PHP...

Κεφάλαιο 1 I Εισαγωγή 1.1 Κινητή τηλεφωνία Η κινητή τηλεφωνία σήμερα αποτελεί έναν από τους πλέον δυναμικούς κλάδους της ελληνικής οικονομίας, συνεισφέροντας κατά 2,2% στο ΑΕΠ ετησίως. Εξυττηρετεί 10 εκ. πολίτες περίπου και απασχολεί 30.000 εργαζόμενους. Συμπληρώνοντας πάνω από δέκα χρόνια παρουσίας στην χώρα μας, η κινητή τηλεφωνία έχει γίνει αναπόσπαστο κομμάτι τις καθημερινότητας δίνοντας λύσεις στην ανάγκη των Ελλήνων για συνεχή ε^κοινωνία σε οποιαδήποτε σημεία της χώρας.

Η συνεχόμενη ανάπτυξη της κινητής τηλεφωνίας και οι συνεχώς αυξανόμενες υτιηρεσίες που αύτη προσφέρει από το απλό τηλεφώνημα στην χρήση γραπτών μηνυμάτων στην χρήση μηνυμάτων κινούμενων εικόνων και video έως και την σύνδεση στο διαδίκτυο, δημιουργείται όλο και μεγαλύτερη ανάγκη δημιουργίας υπηρεσιών ενημέρωσης και καταγραφής των καταναλωθέντων υτιηρεσιών κινητής τηλεφωνίας ώστε να είναι διαθέσιμες στον καταναλωτή ανά πάσα στιγμή ώστε να έχει την καλύτερη δυνατή διαχείριση των χρημάτων και των υτιηρεσιών που αυτός χρησιμοποιεί. Ο καλύτερος τρόπος για να ενημερώνετε ο πελάτης για όλες τις υπηρεσίες που χρησιμοποιεί και να διαχειρίζεται καλύτερα αυτές είναι μέσω διαδικτύου καθώς η πληροφορία είναι διαθέσιμη σε αυτόν συνέχεια. Οι εταιρίες κινητής τηλεφωνίας κινούμενες προς αυτόν τον στόχο έχουν δημιουργήσει ένα δικό τους σύστημα ενημέρωσης και πληρωμής λογαριασμών τα γνωστά e-billing συστήματα δίνοντας την δυνατότητα ανά πάσα στιγμή την ενημέρωση του λογαριασμού του πελάτη την στατιστική ανάλυση και την αποπληρωμή αυτών. 1.2 Σύντομη περιγραφή του συστήματος Βάσει των στοιχειών που αναφέραμε στην παράγραφο 1.1 κατασκευάσαμε ένα σύστημα e-billing δίνοντας την δυνατότητα στον χρήστη να ενημερώνετε για τον τρέχον και τους προηγουμένους λογαριασμούς, στατιστικά στοιχεία αυτών καθώς και την αποπληρωμή όσων λογαριασμών δεν έχουν εξοφληθεί. Αναλυτικότερα ο χρήστης μπορεί να αποπληρώσει τους λογαριασμούς του με την χρήση πιστωτικής κάρτας, να ενημερωθεί με στατιστικά στοιχεία που αφορούν τους τελευταίους λογαριασμούς, τους αριθμούς που καλεί συχνότερα, τους παρόχους που καλεί συχνότερα, τους τελευταίους λογαριασμούς του, τις συνολικές υπηρεσίες που αυτός έχει χρησιμοποιήσει καθώς και το κόστος αυτών. Ο χρήστης ενημερώνετε για το αν η ημερομηνία λήξης του τρέχοντος λογαριασμού πλησιάζει ώστε να τον αποπληρώσει έγκαιρα.

1.3 Δομή βιβλίου Στα κεφάλαια που ακολουθούν θα γίνει μια εκ βαθέων ανάλυση του συστήματος ξεκινώντας από το τι βλέπει ο τελικός χρήστης μέσω της παρουσίασης του συστήματος, την βάση δεδομένων που αποθηκεύονται όλα τα δεδομένα του συστήματος μέσω της ανάλυσης των πινάκων και των σχέσεων και τέλος την ανάλυση του κώδικα. Κεφάλαιο 2 2 Παρουσίαση συστήματος 2.1 Οθόνη καλωσορίσματος και υποσύστημα login Η εφαρμογή μας καλωσορίζει με μια αρχική σελίδα και ένα εισαγωγικό μήνυμα. Η εφαρμογή στην αρχική της κατάσταση λειτουργεί σε κατάσταση ανώνυμου χρήστη (anonymous user).

Companyfone Αλλάζουμε τον τρόπο επ ικοινω νία ς '^e-bmiing System Communicate With The World. TOπροαωηικΩ σος στοιχοο. ώστε να πραγμστοποιηββ η ά σα i- 9i"l Εικόνα 2. 1 Οθόνη καλωσορίσματος και υποσύστημα login Για τη διαχείριση του λογαριασμού του, ο κάθε χρήστης θα πρέπει να εισάγει στις αντίστοιχες περιοχές τα προσωπικά του στοιχεία εισαγωγής στο σύστημα. Τα απαραίτητα στοιχεία εισαγωγής στο σύστημα είναι το όνομα χρήστη "Username" και ο κωδικός εξουσιοδότησης "Password". Κανένας χρήστης δεν έχει κανένα δικαίωμα διαχείρισης των λογαριασμών του μέχρι και την εισαγωγή των απαραίτητων αυτών στοιχείων. Για την καταννόηση της λειτουργίας της εφαρμογής έχουν δημιουργηθεί δύο πελάτες με ονόματα χρήστη "userl" και "user2" αντίστοιχα. Όταν πραγματοποιηθεί η εισαγωγή στην εφαρμογή του ενός εκ των δύο χρηστών, τότε η εφαρμογή λειτουργεί σε κατάσταση εξουσιοδοτημένου χρήστη (authenticated user). Εικόνα 2. 2 Κατάσταση authenticated η: Η τρίτη κατάσταση λειτουργίας της εφαρμογής είναι η κατάσταση του διαχειριστή (administrator).

Εικόνα 2. 3 Κατάσταση administrator Ο διαχειριστής είναι ο χρήστη εκείνος, ο οποίος είναι εφοδιασμένος με όλα εκείνα τα δικαιώματα που του δίνουν τη δυαντότητα να έχει πρόσβαση σε όλα τα εττίπεδα της εφαρμογής. Παράλληλα, είναι και ο υπεύθυνος χρήστης για την εύρυθμη λειτουργία της εφαρμογής. Με τη σωστή εισαγωγή των στοιχείων του ο χρήστης αλλάζει την εμφάνιση της εφαρμογής και έχει πλέον τη δυνατότητα της πλήρης διαχείρισης του λογαριασμού του.

Πελάτης Πληροφορίες λογαριασμών Διάρκεια κλήσης (Συνολικά) Αναζήτηση διόρκεκκ; κλήσης βάσο ϊ@ ^ων χρονικό διόστρημ ΐΑπά: 2009-02-15 Αριθμός πκττω-πκής κά Mfe(pi: 2010-02-15 Αριθμός πιστωτικής κόρπις: Εικόνα 2. 4 Περιβάλλον διαχείρισης 2.2 Λογαριασμοί Με τη σωστή εισαγωγή των στοιχείων από το user2, η εφαρμογή καλωσορίζει τον χρήστη εμφανίζοντας στην αρχική σελίδα τα βασικά στοιχεία του λογαριασμού του, 6988635428 Εικόνα 2. 5 Βασικά στοιχεία λογαριασμού

To προσωπικό του email To πρόγραμμα του λογαριασμού του Τον προσωπικό του αριθμό Παράλληλα, στην αρχική σελίδα ο χρήστης βλέπει βλέπει το σύνολο των λογαριασμών του. Ο κάθε λογαριασμός δημιουργείται από τον διαχειριστή της εφαρμογής την πρώτη ημέρα του κάθε νέου μήνα για το σύνολο των υπηρεσιών του αμέσως προηγούμενου μήνα. Στο σενάριο της εφαρμογής έχουν καταχωρηθεί στον user2 κλήσεις - μηνύματα (SMS - MMS) για 6 μήνες. Αυτό σημαίνει τη δημιουργία 6 λογαριασμών για τους 6 μήνες. I ΠΑηρωιιή λογαριοσιιού Για την εξυπηρέτηση της ανάγκης εισαγωγής κλήσεων στη βάση δεδομένων εφαρμογής, πραγματοποιήθηκε η ανάπτυξη ενός υποσυστήματος καταχώρησης

κλήσεων. Σε αυτά τα δεδομένα βασίστηκε και η όλη στατιστική ανάλυση των λογαριασμών. Καταχώρηση νέας κλήσης _j ΔβηερόλΕητο ουιαίος _ ΤΓΚ ρορφπς *2008-12-24 20:49:00 Userl- 6932329294, User2-6988635428 1Vodafone - 2 Cosmote - 3 Q-Tetecom Εικόνα 2. 7 Περιβόλων καταχώρησης νέος υπηρεσίας (κί,ήσης, SMS, M1V1S) Ο κάθε λογαριασμός συνοδεύεται από, Την ημερομηνία δημιουργίας του λογαριασμού Το συνολικό κόστος του λογαριασμού σε ευρώ Την κατάσταση του λογαριασμού Όταν ο λογαριασμός πληρώνεται με επιτυχία, ενημερώνεται αυτόματα η ημερομηνία πληρωμής του λογαριασμού. Για την πληρωμή ενός λογαριασμού, ο χρήστης θα πρέπει να εισάγει τον αριθμό της τηστωτικής του κάρτας. Σε περίπτωση μη έγκυρης εισαγωγής αριθμού πιστωτικής κάρτας, εμφανίζεται μήνυμα μη επιτυχούς ολοκλήρωσης της πληρωμής. Υπηρεσία πληρωμής ο αριθμός της πιστωτικής κάρτας δεν είναι έγκυρος Εικόνα 2. 8 Μήνυμα μη έγκυρης εισαγωγής αριθμού πιστωτικής κάρτας

2.3 Αναλυτικές υπηρεσίες (Συνολικά) Ηνκργοποΐίί)\'τ«ς το σύνδεσμο Αναλυτικές υττηρεσίες, ο χρήστης έχει τη δυνατότητα παρακολούθησης του συνόλου των υπηρεσιών που έκανε χρήση από την ημερομηνία δημιουργίας του συμβολαίου του, Ημερομηνία και ώρα χρήσης της υττηρεσίας Καθορισμός της υπηρεσίας που χρησιμοποιήθηκε Χρονικό διάστημα χρήσης της υπηρεσίας Αριθμός προορισμού Πάροχος προορισμού Αναλυτικές υπηρεσίες (Συνολικά) Εικόνα 2. 9 Αναλυτικές υπηρεσίες

Ετηπλέον, ο χρήστης εκτός της συνολικής παρακολούθησης των υπηρεσιών που έκανε χρήση, έχει τη δυνατότητα αναζήτησης της χρονικής διάρκειας κλήσεων προς συγκεκριμένο αριθμό της επιλογής του. Διάρκεια κλήσης (Συνολικά) (Ανα{ήπΐ(πι Εικόνα 2. 10 Αναζήτηση διάρκειας κλήσης προς συγκεκριμένο αριθμό Πληκτρολογώντας τον επιθυμητό αριθμό, ο χρήστης έχει τη δυνατότητα πληροφορηθεί για το συνολικό χρονικό διάστημα ομιλίας προς αυτόν το συσγκεκριμένο αριθμό. Διάρκεια κλήσης (Συνολικά) Αναζήτηση δόρκειος κλήσης 0OGa Εικόνα 2. 11 Αποτέλεσμα αναζήτησης διάρκειας κλήσης βάσει αριθμού Να τονίσουμε ότι η συνολική διάρκεια υπολογίζεται από την ημερομηνία δημιουργίας του συμβολαίου του. 2.3 Ορισμός χρονικού διαστήματος Ο χρήστης έχει τη δυνατότητα χρήσης κάποιων υπηρεσιών, των οποίων τα αποτελέσματα φιλτράρονται σε ορισμένο χρονικό διάστημα, Συχνότητα κλήσεων - Συνολικές κλήσεις ανά αριθμό (Χρονικό Διάστημα*) Συνολικός χρόνος βάσει αριθμού (Χρονικό Διάστημα*) Συγκεντρωτικές υττηρεσίες (Χρονικό Διάστημα*) Στατιστική ανάλυση (Χρονικό Διάστημα*)

Εικόνα 2. 12 Επι/Λγή υπηρεσιών Με την εισαγωγή του χρήστη στην εφαρμογή ορίζεται αυτόματα το χρονικό διάστημα. Το αρχικό αυτό διάστημα καθορίζεται από την ημερομηνία δημιουργίας του συμβολαίου του και για ένα ολόκληρο χρόνο. Χρονικό διάστημα* ρός χρονικού διοστηματος κων οηοτελεσμστων πελάτη. Από: 2009-02-15 [Μέχρι: 2010-02-15 I Εικόνα 2. 13 Χρονικό διάστημα στατιστικών αποτελεσμάτων πελάτη Ο χρήστης όμως έχει τη δυνατότητα οποιαδήποτε στιγμή επιθυμεί να ορίσει αυτός το χρονικό διάστημα που επιθυμεί χρησιμοποιώντας τα δύο αντίστοιχα ημερολόγια της εφαρμογής. Το ένα ορίζει την ημερομηνία έναρξης και το άλλο την ημερομηνία λήξης του χρονικού διαστήματος.

J [T]e I Ορισμός χρονκού δκκττήμστος Εικόνα 2. 14 Ημερολόγια ορισμού χρονικού διαστήματος Ενεργοποιώντας την επιθυμητή ημερομηνία έναρξης στο πρώτο ημερολόγιο και αντίστοιχα την επιθυμητή ημερομηνία λήξης στο δεύτερο, απεικονίζονται σε SQL format οι ημερομηνίες στα αντίστοιχα πεδία Από; 2009-1-1 και Μέχρι: 2009-8- 15. Εικόνα 2. 15 Ημερολόγια ορισμού χρονικού διαστήματος με ενεργές επιλογές

Για την αρχικοποίηση των ημερομηνιών στις αντίστοιχες μεταβλητές της εφαρμογής πρέπει να ενεργοποιηθεί η επιλογή Ορισμός χρονικού διαστήματος. Άμεσα, η εφαρμογή ενημερώνει για την επιτυχία αυτής της καταχώρησης. Από: 2009-1-1!tU ^ Εικόνα 2. 16 Καθορισμένη χρονική διάρκεια Το χρονικό διάστημα που έχει ορίσει ο χρήστης φαίνεται συνέχεια στην εφαρμογή στο επάνω μέρος των ημερολογίων και μπορεί βέβαια ο χρήστης να το αλλάξει οποιαδήποτε στιγμή επιθυμεί. 2.4 Συνολικές κλήσεις ανά αριθμό Ενεργοποιώντας το σύνδεσμο Συνολικές κλήσεις ανά αριθμό, ο χρήστης έχει τη δυνατότητα παρακολούθησης των 5 πτο συχνά χρησιμοποιούμενων αριθμών και την πραγματική συχνότητα κλήσεων προς αυτούς. Συχνότητα κλήσης προς συγκεκριμένο αριθμό

Αριθμός προορισμού Συνολικές κλησεκ; ονό οριθμό Συνολικές κλήσεις ανά αριθμό (Χρονικό Διάστημα*) Εικόνα 2. 17 Συνολικές κ>.ήσεις ανά αριθμό για το ορισμένο χρονικό διάστημα Τα αποτελέσματα της συγκεκριμένης υπηρεσίας προέρχονται μόνο από το ορισμένο χρονικό διάστημα. 2.5 Συνολικός χρόνος βάσει αριθμού Ενεργοποιώντας το σύνδεσμο Συνολικός χρόνος βάσει αριθμού, ο χρήστης έχει τη δυνατότητα παρακολούθησης του συνολικού χρόνου ομιλίας προς τους αντίστοιχους αριθμούς, Συνολικό χρονικό διάστημα κλήσεων Αριθμός προορισμού Αναλυτικές υπηρεσίες (Συνολβςό) Συνολκές κλή(κις ανό αριθμό (Χρονκό Διόσττιμο-) Συνολκός χρόνος βάσει αριθμού (χρονικό Διόστημο ) Πληροφορίες λογαριασμών Συνολικός χρόνος βάσει αριθμού (Χρονικό Διάστημα*) 6977412761 6972132518 6997197418 6973641325 2541070555 6976517706 6940318962 Εικόνα 2. 18 Συνολικός χρόνος ανά αριθμό για το ορισμένο χρονικό διάστημα

Τα αποτελέσματα της συγκεκριμένης υπηρεσίας προέρχονται μόνο από το ορισμένο χρονικό διάστημα. 2.5 Συγκεντρωτικές υπηρεσίες Ενεργοποιώντας το σύνδεσμο Συγκεντρωτικές υπηρεσίες, ο χρήστης έχει τη δυνατότητα παρακολούθησης των υπηρεσιών συγκεντρωτικά, Ενεργός πελάτης Συνολικές κλήσεις SMS Συγκεντρωτικές υπηρεσίες (Χρονικό Διάστημα*) Πληροφορίες λογαριασμών Εικόνα 2. 19 Συγκεντρωτικές υπηρεσίες για το ορισμένο χρονικό διάστημα 2.6 Στατιστική ανάλυση Ενεργοποιώντας το σύνδεσμο Στατιστική ανάλυση, ο χρήστης έχει τη δυνατότητα παρακολούθησης των υπηρεσιών αναλυτικότερα και μάλιστα με την απεικόνιση των αποτελεσμάτων σε διαγράμματα. Συνολικές κλήσεις ανά ημέρα εβδομάδας Συνολικός χρόνος και αριθμός κλήσεων ανά χρονικό διάστημα μέσα στην ημέρα

Αριθμός κλήσεοιν ανά χρονικό διάστημα μέσα στην ημέρα Συνολικό κόστος ανά πάροχο Συνολική διάρκεια ανά πάροχο Στατιστική ανάλυση (Χρονικό Διάστημα*) Συνολικός χρ6νος βόσα οριθμού (Χρονκό Δήστημο*) Στατιστική ανάλυση (Χρονικό Χρονικό διάστημα* Κοβορισμ^ ΧΡθ«^ διοστήμί^ς i Απά: 2009-1-1" ~' 1

Εικόνα 2. 20 Λιαγράμματα στατιστικών αναλύσεων 2.6 Στατιστική 6 τελευταίων λογαριασμών Στατιστικά λογαριασμών τελευταίων 6 μηνών 2009-06-01C 2009-05-01e 2009-09-01 ( Πληροφορίες λογαριασμών Διάρκεια κλήσης (Συνολικά) Αναζήτηση διάρκοας κλήσης βόσο Εικόνα 2. 21 Στατιστικά λογαριασμών τελευταίων 6 μηνών

Κεφάλαιο 3 3 Αρχιτεκτονική και τεχνολογίες του συστήματος 3.1 Αρχιτεκτονική του συστήματος Η εφαρμογή υλοποιεί μια αρχιτεκτονική τριών επιπέδων. Η αρχιτεκτονική τριών ετηπέδων είναι μια αρχιτεκτονική πελάτη - διακομιστή στην οποία η αποθήκευση δεδομένων, η αλγοριθμική λογική και η διεπαφή χρήστη αναπτύσσονται και διατηρούνται ξεχωριστά. Η αρχιτεκτονική αυτή προσφέρει το πλεονέκτημα της ανεξάρτητης αναβάθμισης ή αντικατάστασης της υλοποίησης κάθε ετηπέδου. Αποτελείται από τα εξής επίπεδα : Επίπεδο Προβολής Μεταφράζει ενέργειες και αποτελέσματα ενεργειών σε μορφή που μπορεί να κατανοήσει ο χρήστης. Επίπεδο Λογικής Συντονίζει την εφαρμογή, επεξεργάζεται εντολές, λαμβάνει λογικές αποφάσεις και πραγματοποιεί υπολογισμούς. Επίπεδο Δεδομένων Αποθηκεύει και ανακτά την πληροφορία σε και από μια βάση δεδομένων. ------ Ερωτήματα SQL- ΑνΟκτηαη δεδομίνω' Γρόφημα I : Αρχιτεκτονική τριών επιπέδων 3.2 Τεχνολογίες του συστήματος Το λειτουργικό σύστημα βρίσκεται σε τόσο χαμηλό ετιίπεδο, που η εφαρμογή δεν επηρεάζεται από αυτό. Μπορεί να τρέχει σε οποιοδήποτε λειτουργικό υποστηρίζει ΡΗΡ.

ο διακομιστής (web server) που χρησιμοποιείται είναι ο Apache, αν και μπορεί να χρησιμοποιηθεί οποιοσδήποτε διακομιστής. Η επικοινωνία της εφαρμογής με την βάση δεδομένων γίνεται μέσω ενός αφαιρετικού ετηπέδου που επιτρέπει εναλλαγή του συστήματος διαχείρισης βάσεων δεδομένων (προκαθορισμένα γίνεται χρήση της MySQL) χωρίς να απαιτείται αλλαγή των ερωτημάτων. Τέλος, η εφαρμογή είναι γραμμένη σε ΡΗΡ. Η ΡΗΡ είναι μια ευρέως διαδεδομένη γλώσσα, ειδικά δημιουργημένη για ανάπτυξη δικτυακών εφαρμογών και μπορεί να ενσωματωθεί σε ΗΤΜΤ.Τρέχει σε έναν διακομιστή, λαμβάνοντας κώδικα ΡΗΡ και παράγοντας δικτυακές σελίδες. Database Abstraction Layer MySQL/PostgreSQL/.. Apache / fighttpd / IIS /... Operating System Γρόφημα 2: Τεχνολογίες Linux / BSD / Mac OS X / Windows / Solaris /.. u χρησιμοποιούνται

Κεφάλαιο 4 4 Βάση Δεδομένων 4.1 Πελάτες Στον ττίνακα CUSTOMERS αποθηκεύονται πληροφορίες για τους πελάτες της εταιρίας. Ο Α.Φ.Μ. αποτελεί πρωτεύον κλειδί για την κάθε εγγραφή, καθώς είναι μοναδικός για κάθε οικονομικά ενεργό πολίτη. Ακόμη, ο πίνακας διαθέτει στήλες για το πλήρες όνομα, την διεύθυνση κατοικίας, την πόλη, τον ταχυδρομικό κώδικα και τη διεύθυνση ηλεκτρονικής αλληλογραφίας. Οι πληροφορίες αυτές είναι αναγκαίες για την επικοινωνία με τον πελάτη, καθώς και για την έκδοση και αποστολή λογαριασμού. 4.2 Προϊόντα Η εταιρία διαθέτει στους πελάτες της ένα σύνολο υπηρεσιών-προϊόντων τα ονόματα των οποίων βρίσκονται στον πίνακα PRODUCTS. Σε μια εταιρία τηλεφωΐ ίας κεντρικό ρόλο διαδραματίζουν οι υπηρεσίες μετάδοσης φωνής (κλήσεις) και μηνυμάτων (sms). 4.3 Προορισμοί - Πάροχοι Ο πίνακας PROVIDERS αποθηκεύει τα ονόματα των εταιριών τηλεφωνίας που είναι δυνατόν να αποτελόσουν προορισμό μιας κλήσης ή οποιασδήποτε άλλης υπηρεσίας έχει προορισμό (π.χ. sms).

4.4 Προορισμοί - Χώρες Ο πίνακας COUNTRIES περιλαμβάνει τα ονόματα των χωρών που ενδέχεται να αποτελέσουν προορισμό κάποιας υτιηρεσίας. Οι υπηρεσίες της εταιρίας ενδέχεται να έχουν διαφορετικό κόστος, ανάλογα με την χώρα-προορισμό τους. 4.5 Προορισμοί - Ζώνες Οι υπηρεσίες που παρέχει η εταιρία δεν έχουν αναγκαστικά διαφορετικό κόστος προς κάθε χώρα-προορισμό. Οι χώρες ομαδοποιούνται σε ζώνες με ίδιο κόστος, ώστε να διευκολυνθεί η τιμολόγηση και να αποφευχθεί σύγχυση των πελατών. Για το σκοπό αυτό χρησιμοποιούνται ο πίνακας ZONES, που περιέχει τα ονόματα των ζωνών, και ο πίνακας ZONE COUNTRIES που συσχετίζει τις χώρες με τις ζώνες στις οποίες ανήκουν. Προκειμένου να επιτευχθεί η συσχέτιση, ο πίνακας ZONE COUNTRIES αποτελείται από δύο πεδία (στήλες). Κάθε μία από αυτές είναι ξένο κλειδί και αναφέρεται στο αναγνωριστικό των πινάκων ZONES και COUNTRIES. Επειδή μία χώρα μπορεί να ανήκει αποκλειστικά σε μία ζώνη, το πρωτεύον κλειδί του πίνακα ZONE COUNTRIES αποτελείται και από τα δύο αυτά πεδία. 4.6 Προορισμοί Ο πίνακας DESTINATIONS συνθέτει την ζώνη {ZONES) και τον πάροχο {PROVIDERS) σε έναν προορισμό, έχοντας ξένα κλειδιά προς τους αντίστοιχους πίνακες.

4.7 Χρεώσεις Η τιμολόγηση της κάθε υττηρεσίας που παρέχει η εταιρία μεταβάλλεται ανάλογα με τον προορισμό που επιλέγει ο πελάτης για αυτή. Επιπλέον, το κάθε πρόγραμμα συμβολαίου ενδέχεται να ορίζει διαφορετικές τιμές για κάποια υπηρεσία. Στον πίνακα PRODUCT RATES τοποθετούνται οι τηθανές χρεώσεις που εμφανίζονται στα προγράμματα συμβολαίου. Κάθε εγγραφή-χρέωση αναφέρεται σε χρήση κάποιας υτιηρεσίας και για συγκεκριμένο προορισμό, κάτι που γίνεται εμφανές από τα πεδία productjd και destination id, που αποτελούν ξένα κλειδιά των αναγνωριστικών των αντίστοιχων πινάκων (PROVIDERS, DESTINATIONS). Ακόμη, το πεδίο granularity αναφέρεται στην ελάχιστη χρονική διάρκεια που διακρίνει η εταιρία για την συγκεκριμένη υτιηρεσία. Για παράδειγμα, κάποιες υπηρεσίες μπορεί να χρεώνονται ανά δευτερόλεπτο, ενώ άλλες ανά 30 δευτερόλεπτα. Η στήλη volume ορίζει τον όγκο στον οποίο αντιστοιχεί η τιμή στο πεδίο price. Όπως φαίνεται και στο ER διάγραμμα, για ένα ζεύγος προορισμού και παρόχου δύνανται να υπάρχουν περισσότερες της μίας δυνατές χρεώσεις. Ποια θα αυτές θα χρησιμοποιηθεί εξαρτάται από το εκάστοτε πρόγραμμα συμβολαίου. 4.8 Προγράμματα συμβολαίου Κάθε πρόγραμμα συμβολαίου που διαθέτει η εταιρεία αποτελείται από ένα πάγιο ποσό που πρέπει να καταβάλλεται με κάθε λογαριασμό, ανεξαρτήτως της χρήσης υττηρεσιών. Επιπλέον, περιλαμβάνει και ένα σύνολο χρεώσεων, τουλάχιστον μία για κάθε διαθέσιμη υπηρεσία. Στον πίνακα RATEJPLANS κάθε εγγραφή αντιστοιχεί σε κάποιο πρόγραμμα συμβολαίου της εταιρείας και περιλαμβάνει το όνομά του, καθώς και το πάγιο ποσό (fixed charge). Η αντιστοίχηση των προγραμμάτων συμβολαίου με τις χρεώσεις τους γίνεται από τον πίνακα PLAN PRODUCTS. Συγκεκριμένα, περιέχει τα πεδία p la n jd και product rate id, που αποτελούν ξένα κλειδιά των αντίστοιχων αναγνωριστικών των πινάκων RATE PLANS και PRODUCT RATES. Τα πεδία αυτά συνθέτουν το πρωτεύον κλειδί του πίνακα, γεγονός που εξασφαλίζει και την μοναδικότητα του ζεύγους προγράμματος-χρέωσης στον πίνακα. Ακόμη, στον πίνακα συσχέτισης

εμφανίζεται το πεδίο priority, που ορίζει την προτεραιότητα με την οποία εφαρμόζονται χρεώσεις που αναφέρονται στις ίδιες υπηρεσίες. Για παράδειγμα, ενδέχεται για την υπηρεσία μηνυμάτων στο πρόγραμμα συμβολαίου να υπάρχει χρέωση 0,03 ανά μήνυμα για όγκο 100 μηνυμάτων, αλλά παράλληλα και αντίστοιχη χρέωση 0,01 αν ξεπεραστούν τα 100 αυτά μηνύματα. Για να μοντελοποιηθεί το πρόγραμμα στη βάση πρέπει η πρώτη χρέωση να τοποθετηθεί στον πίνακα PLAN PRODUCTS με προτεραιότητα 1 και η δεύτερη με προτεραιότητα 2. 4.9 Συμβόλαια Ο πίνακας CONTRACTS περιλαμβάνει πληροφορίες για τα συμβόλαια που έχουν συναφθεί μεταξύ της εταιρίας και των πελατών της. Κάθε συμβόλαιο αφορά μόνο έναν αριθμό τηλεφωνίας, ενώ αγνοούμε, χάριν ευκολίας, συμβόλαια που αφορούν περισσότερους αριθμούς. Ένας πελάτης μπορεί να έχει περισσότερες από μία συνδέσεις, οπότε η σχέση του πίνακα CONTRACTS με τον πίνακα CUSTOMERS είναι σχέση 1:Ν. Ο Α.Φ.Μ. του πελάτη αποτελεί και ξένο κλειδί του πίνακα CONTRACTS. Εκτός από τον αριθμό τον οποίο αφορά η σύνδεση, κάθε εγγραφή συμβολαίου περιέχει την ημερομηνία από την οποία αυτό τίθεται σε ισχύ (effect date), ώστε να εξυπηρετηθούν ο υπολογισμός του κόστους των υπηρεσιών που χρησιμοποίησε ο πελάτης και η έκδοση λογαριασμού. Τέλος, κάθε συμβόλαιο συνοδεύεται από ένα πρόγραμμα συμβολαίου που περιλαμβάνει το σύνολο των όρων της τιμολόγησης των υπηρεσιών. 4.10 Κλήσεις Ο όρος κλήση εδώ χρησιμοποιείται ελεύθερα και περικλείει ουσιαστικά κάθε χρήση οποιασδήποτε υπηρεσίας, και όχι μόνο μετάδοσης φωνής. Ο πίνακας CALLS ουσιαστικά συμπληρώνεται από το σύστημα που δημιουργεί τις συνδέσεις μεταξύ δύο διαφορετικών πελατών ή ενός πελάτη και ενός

άλλου παρόχου υττηρεσιών ή ακόμη και μεταξύ ενός πελάτη και της ίδιας της εταιρείας. Το σύστημα αυτό παρακολουθεί και μεταφέρει στο σύστημα χρέωσης : τον αριθμό που ξεκίνησε την κλήση {caller jiumber - ξένο κλειδί, αντιστοιχεί στον αριθμό του πίνακα CONTRACTS), την υπηρεσία που χρησιμοποιήθηκε {product id - ξένο κλειδί, αντιστοιχεί στο αναγνωριστικό του πίνακα PRODUCTS), τον αριθμό προς τον οποίο έγινε η κλήση {destination number), τον πάροχο (εάν υπάρχει) προς τον οποίο έγινε η κλήση {providers id - ξένο κλειδί, αντιστοιχεί στο αναγνωριστικό του πίνακα PROVIDERS), την χώρα προς την οποία έγινε η κλήση {countriesjd - ξένο κλειδί, αντιστοιχεί στο αναγνωριστικό του πίνακα COUNTRIES) τον ακριβή χρόνο της εκκίνησης της κλήσης {timestamp), το χρονικό διάστημα που διήρκησε η κλήση {volume) 4.11 Κόστος κλήσεων Το κόστος κάθε κλήσης υπολογίζεται αφού περάσει το χρονικό διάστημα που αντιστοιχεί σε έναν λογαριασμό (συνήθως 1 μήνας) και για όλες τις κλήσεις του λογαριασμού. Ακόλουθα, αποθηκεύεται για μελλοντική χρήση στον πίνακα COSTS που έχει μια σχέση 1:1 με τον πίνακα CALLS, και συγκεκριμένα στο πεδίο cost. 4.12 Λογαριασμοί Ο πίνακας INVOICES συμπληρώνεται από την εφαρμογή που αναλαμβάνει να τιμολογήσει τις κλήσεις και να υπολογίσει τελικά ποσά πληρωμής. Κατά κανόνα αυτή καλείται αυτόματα κάθε ημέρα και για κάθε συμβόλαιο (αριθμό) του οποίου η περίοδος χρήσης έχει λήξει, υπολογίζει τα ποσά και δημιουργεί μια εγγραφή στον πίνακα INVOICES με τα εξής στοιχεία : την ημερομηνία έκδοσης του λογαριασμού {issue date) την αρχή και λήξη της περιόδου χρήσης {from date, to date αντίστοιχα) την ημερομηνία λήξης πληρωμής {due date)

το κόστος χρήσης των υτιηρεσνών κατά τη διάρκεια του λογαριασμού {services cost) το συνολικό κόστος του λογαριασμού, συμπεριλαμβανομένων παγίων εξόδων (lotalcost) το συνολικό οφειλόμενο κόστος, συμπεριλαμβανομένων οφειλών από προηγούμενους λογαριασμούς {due cost) 4.13 Πληρωμές Αφού πληρωθεί ένας λογαριασμός, συμπληρώνεται μια εγγραφή του πίνακα PAYMENTS με το ποσό που πληρώθηκε (credit_sum), το χρονικό σημείο της συναλλαγής (transaction date) και το αναγνωριστικό του λογαριασμού (invoices_id) που αποτελεί και ξένο κλειδί στην 1:1 σχέση με τον πίνακα INVOICES.

Κεφάλαιο 5 5 Ανάλυση του συστήματος 5.1 Διαδικασία εισόδου στο σύστημα Η διαδικασία εισόδου στο σύστημα γίνεται με την εξουσιοδότηση χρήστη (login) όπου ό χρήστης καλείτε να δώσει το όνομα χρήστη (username) και έναν κωδικό ώστε να έχει την δυνατότητα να χρησιμοποιήσει τις υπηρεσίες του συστήματος. Όταν ο χρήστης κάνει επιτυχής είσοδο στο σύστημα τότε από την βάση δεδομένων απορροφούνται τα κατάλληλα στοιχεία που τον χαρακτηρίζουν όπως αριθμός κινητού, όνομα, email κτλ. Επίσης αρχικοποιούνται και η μεταβλητές της ημερομηνίας ώστε να είναι από την περίοδο έναρξης του συμβολαίου με την προσαύξηση ενός χρόνου. Ακολουθεί ο πηγαίος κώδικας της σελίδας. /* * Ε π ιλ ο γή των ίων χρήστη από τη ν βάση δ εδ ο μ έν ω ν * / g lo b a l $ u s e r ; f u n c ti o n g e t C o n t r a c t ( $ u s e r ) {?> < d iv id = " u s e r - m a il" > <h3>e m ail χ pήσ τη< /h3> <? p r i n t ( $ u s e r - > m a i l ) ;? > //Β ρ ίσ κ ο υ μ ε το νο ύ μ ερ ο χρήστη $ s e le c t_ c u s to m e r_ n u m b e r _ s q l = "SELECT c o.n u m b e r, p l.n a m e,c o.e f f e c t_ d a te,d A T E _ A D D { c o.e f f e c t_ d a te, INTERVAL 1 YEAR) AS e n d _ d a te FROM c o n t r a c t s AS c o, r a te _ p la n s AS p i WHERE c o.c u s to m e r _ id = ".$ u s e r -> c u s to m e r _ id." AND c o.p la n _ id = p l.i d " ; $ ty p e = 'b l o g '; $ s t a t u s = 1; $result = db query_range($select_customer_number_sql, $uid, 0, 10); while T$node = db_fetch_object($result)) { //Α π οθή κευσ η σ το s e s s io n των η μ ερ ομηνιώ ν γ ι α τα σ τ α τ ισ τ ικ ά / / σ τ ο ι χ ε ί α $ fro m _ d a te = $_SESSION[ ' fro m _ d a te ] ; $ to _ d a te = $_SESSION[ ' t o _ d a t e ' ] ; if ($ fr o m _ d a te == n u l l II s tr le n ($ f r o m _ d a te ) 0){ $ fro m _ d a te = $ n o d e - > e f f e c t_ d a te ; $ SESSION[ 'f ro m _ d a te '] = $ fro m _d a te ; if ( $ t o _ d a t e == n u l l II s tr l e n ( $ t o _ d a t e ) ^ $ to d a te = $ n o d e -> e n d _ d a te ; ^ 0){

) _ d a te '] = $ to _date ; < d iv id = "p ro g ra m -n am e "> <h3>ovopa npoy p0pyat og</h3> e ch o $node->nam e; $_SESSION[ 'a c tiv e _ c u sto m e r '] = $node->num ber; e ch o $ node-> num ber; if ( $ u s e r - > m a i l! = " " ) { g e tc o n tr a c t ( $ u s e r ) ; ) p r i n t ("Καλώς ήλ θα τε στο e - B i l l i n g sy s te m. <p><em>kάvετε lo g in με τα προσω πικά σας σ τ ο ι χ ε ία, ώστε π ρ α γ μ α τ ο π ο ιη θ ε ί η εισ α γω γή σας στο σ ύ σ τη μ α.< /e m > < /p > "); }?> 5.2 Αναλυτικές υπηρεσίες Η παρουσίαση των συνολικών υττηρεσιών απορροφά από την βάση δεδομένων όλα τα δεδομένα για τις υπηρεσίες συνολικά για τον συγκεκριμένο χρήστη και τις τυπώνει στην σελίδα. Δεν ορίζετε χρονικό διάστημα σε αυτήν την λειτουργία και εμφανίζονται με χρονικό όριο από την έναρξη του συμβολαίου μέχρι και την τρέχουσα ημερομηνία. Ακολουθεί ο πηγαίος κώδικας της σελίδας. i < d iv s ty l e = " c l e a r r b o th ;" > < /d i v > < d iv id = " c a lls " > < d iv id = " c a lls -n u m b e r " > <h3>apιθμός</h3> < d iv i d = " c a l l s - s t a r t t i r a e " > <h3>έvαpξη</h3> < d iv id = " c a lls -v o lu m e " > <h3>xpόvoς</h3> < div id = " c a lls - d e s tin a tio n - n u m b e r " >

<ίι3>προορισμός</1ι3> < d iv id = " c a lls -n a m e " > <h3>nd(poxoc</h3> < d iv id = " c a lls -s e r v ic e "> <h3>yπηpεσία</h3> < d iv s ty l e = " c l e a r :b o t h ;" > <?php?> < d iv s ty l e = " c l e a r :b o t h ;" > <? fu n c tio n g e tc a lls ( ) { $ a c tiv e _ c u s to m e r = $ _ S E S S IO N ['a c tiv e _ c u s to m e r '] ; //Ό λ ε ς OL υ π η ρ ε σ ίε ς γ ι α τον χρήστη $ s e le c t_ c u s to m e r_ n u in b e r _ s q l = "SELECT c o.n u m b e r, c a. s t a r t _ t i m e, c a.v o lu m e, c a. d e s tin a tio n _ n u m b e r, p ro v.n a m e, p ro d.n am e a s se rv ic e n a m e FROM c o n t r a c t s AS cc c a l l s AS c a, p r o d u c ts AS p r o d, p r o v id e r s AS p r o v WHERE CO.number = ". $ a c tiv e _ c u s to m e r." AND c o.n u m b e r = c a.c a lle r _ n u m b e r AND c a.p r o d u c t_ i d = p r o d. i d AND c a. p r o v id e r _ id = p r o v.id " ; $ ty p e = 'b l o g '; $ s t a t u s = 1; $ r e s u l t = d b _ q u e ry _ r a n g e ($ s e le c t_ c u s to m e r _ n u m b e r_ s q l, $ u id, 0, 1 0 0 ); w h ile ($node = d b _ f e t c h _ o b j e c t ( $ r e s u l t ) ) {?> ech o $ node-> num ber; ech o $ n o d e -> s ta r t_ 1 echo $ n o de-> volum e; >n-num ber"; > d e stin a tio n _ n u m b e r; e ch o $node->nam e; e ch o $ n o d e -> se rv ic e n a m e ;

< d iv s ty l e = " c l e a r :b o t h ;" > 5.3 Συνολικές κλήσεις από τους πέντε συχνότερους αριθμούς Οι συνολικές κλήσεις από τους πέντε συχνότερους αριθμούς υπολογίζετε μέσα σε ένα χρονικό διάστημα που θα ορίσει ο χρήστης. Βάση αυτού του χρονικού διαστήματος υπολογίζονται οι συνολικές κλήσεις και εμφανίζονται οι πέντε αριθμοί που έχουν τις περισσότερες από αυτές. Ακολουθεί ο πηγαίος κώδικας της σελίδας. < d iv s ty l e = " c l e a r : b o t h ; " > < / d iv > < d iv id = " c a lls - p e r - n u m b e r " > < d iv id = " c a lls - p e r - n m n b e r - fre q u e n c y " > <h3>σ uχvότη τα < /h3> < d iv i d = " c a lls - p e r - n u m b e r - d e s tin a tio n " > < h3>npoopio p 0 c < /h 3 > <?php f u n c ti o n g e tf re q u e n c y N u m b e r(){ $ a c tiv e _c u s to m e r = $_SESSION[ 'a c tiv e _ c u s to m e r ' ] ; $ from _ date = $_SESSION[ ' fro m _ d a te ' ] ; $ to _ d a te = $ _ S E S S IO N ['to _ d a te '] ;?> //Qi π έ ν τ ε σ υ χ ν ό τ ε ρ ο ι α ρ ιθ μ ο ί βάση σ υ χ ν ό τ η τ α ς $ s e le c t_ f r e q u e n c y _ s q l = "SELECT COUNT(*) AS f re q u e n c y, c a.d e s tin a tio n _ n u m b e r FROM c a l l s AS c a, c o n t r a c t s AS co WHERE c a.c a lle r _ n u m b e r = ". $ a c tiv e _ c u s to m e r." AND c a.p r o d u c t_ i d = 9 AND c a. s t a r t _ t i m e BETWEEN. $ fro m _ d a te. " ' AND ' ". $ t o _ d a t e. " ' GROUP BY c a.d e s tin a tio n _ n u itib e r ORDER BY f re q u e n c y DESC" ; $ ty p e = 'b l o g '; $s t a t u s = 1; $ r e s u l t = d b _ q u e r y _ r a n g e ( $ s e le c t_ f r e q u e n c y _ s q l, $ u id, 0, 5 ) ; w h ile ($node = d b _ f e t c h _ o b j e c t ( $ r e s u l t ) ) { < d iv id = " c a lls - p e r - n u m b e r - f r e q u e n c y " > ech o $ n o d e -> fre q u e n c y ; < d iv i d = ''c a ll s - p e r - n u m b e r - d e s tin a tio n " > <? e cho $ n o d e -> d e stin a tio n _ n u m b e r ;

g e tf req u e n cy N u m b e r( ) ; < d iv s ty l e = " c l e a r :b o t h ;" > Οί 5 π ιο σ υ χν ο ί κ λ η θ έ ν τ ε ς α ρ ιθ μ ο ί και η σ υ χνό τη τα κλή σης T o u g.< d iv s ty l e = " c l e a r :b o t h ;" > II 5.4 Συνολικός χρόνος και κόστος βάσει αριθμού Ο συνολικός χρόνος βάσει ενός αριθμού εμφανίζει στατιστικά στοιχεία που καθορίζονται από το χρονικό διάστημα που θα ορίσει ο χρήστης. Βάσει του δοθέντος χρονικού διαστήματος υπολογίζετε ο συνολικός χρόνος του κάθε αριθμού και εμφανίζονται ο συνολικός χρόνος καθώς και το ποσό που χρεώθηκε ο πελάτης. Ακολουθεί ο πηγαίος κώδικας της σελίδας. < d iv s ty l e = " c l e a r : b o t h ; " > < / d iv > < d iv id = " tim e - p e r - n u m b e r " > < d iv id = tim e - p e r - n m n b e r - tim e " > <h3>suvoxik0c χρόνος</η3> < d iv id = " tim e - p e r - n u m b e r - d e s t in a ti o n " ; <h3>a pi0p0c n p o o p ισμού</α 3> <?php f u n c ti o n gett im e P e rn u m b e r(){ $ a c tiv e _ c u s to m e r = $_SESSION[ ' a c tiv e _ c u s to m e r ' ] ; $ fro m _ d a te = $_SESSION[ ' f ro m _ d a te ' ] ; $ to _ d a te = $ _ S E S S IO N ['to _ d a te '] ; //Β ρ ίσ κ ο υ μ ε το υ ς χ ρ ή σ τ ες β ά σει του δ ο θ έ ν τ ο ς α ρ ιθ μ ο ύ $ s e le c t_ tim e p e rn u m b e r _ s q l = "SELECT SOM( c a.v o lu m e ) AS t o t a l _ t i m e, c a. d e s tin a tio n _ n u m b e r FROM c a l l s AS c a, c o n t r a c t s AS co WHERE c a.c a lle r _ n u m b e r = ".$ a c tiv e _c u s to m e r." AND c a.p r o d u c t_ id AND c a.s ta r t _ tim e BETWEEN. $ fro m _d a te. ' ' AND '. $ t o _ d a t e. ' GROUP BY c a.d e s tin a tio n _ n u m b e r ORDER BY 't o t a l _ t i m e ' DESC" ; $ ty p e = 'b l o g '; $ s t a t u s = 1; $ r e s u l t = d b _ q u e ry _ r a n g e ($ s e le c t_ tim e p e r n u m b e r_ s q l, $ u id, 0, 1 0 ); w h ile ($node = d b _ f e t c h _ o b j e c t ( $ r e s u l t ) ) { < d iv id = ' :-p e r-n u m b e r-tim e " > i

echo $ n o d e - > to ta l_ tim e ; < d iv id = ''tim e - p e r - n u m b e r - d e s tin a tio n : echo $ n o d e -> d e stin a tio n _ n u m b e r ; gett im e P e rn u m b e r(), < d iv s ty l e = " c l e a r :b o t h ;" > 5.5 Συγκεντρωτικές υπηρεσίες βάσει αριθμού Στην σελίδα των συγκεντρωτικών υττηρεσιών υπολογίζονται όλες οι διαθέσιμες υπηρεσίες για έναν χρήστη βάσει του δοθέντος χρονικού διαστήματος που αυτός ορίζει. Ακολουθεί ο πηγαίος κώδικας της σελίδας. < d iv s ty l e = " c l e a r : b o t h ; " > < / d iv > <?PHP fu n c tio n g e tm o n th S e rv ic e s (){ $ a c tiv e _c u s to m e r = $_SESSION[ 'a c tiv e _ c u s to m e r ' ] ;?> < d iv id = " m o n th ly -a c tiv e - c u s to m e r" > <h3>ev py0g π ε λ ά τη ς ( α ρ ιθ μ ό ς ) < /h3> <? p r i n t { $ a c tiv e _ c u s to m e r ) ;?> $ fro m _ d a te = $_SESSION[ ' f ro m _ d a te ' ] ; $ to _ d a te = $_SESSION[ ' to _ d a t e ' ] ; $ s e l e c t c a lls p e r m o n th = "SELECT COUNT(*) a s t o t a l c a l l FROM c a l l s AS c a, c o n t r a c t s AS co WHERE c a. c a lle r _ n u in b e r = ".$ a c tiv e _ c u s to m e r." AND c a.p r o d u c t_ i d = 9 AND c a. s t a r t _ t i m e BETWEEN ' ". $ f r o m _ d a te." ' AND ' ". $ to _ d a te. " ' $ se le c t_ s m s p e rm o n th = "SELECT COUNT(*) a s sms FROM c a l l s AS c a, c o n t r a c t s AS co WHERE c a.c a lle r _ n u m b e r = ". $ a c tiv e _ c u s to m e r." AND c a.p r o d u c t_ i d = 8 AND c a. s t a r t _ t i m e BETWEEN. $ fro m _ d a te. " ' AND ' ". $ t o _ d a t e." ' $ ty p e = 'b l o g '; $ s t a t u s = 1;

I I $ r e s u l t _ c a l l = d b _ q u e ry _r a n g e ($ s e le c t_c a lls p e rm o n th, $ u id, 0, w h ile ($ n o d e _ c a ll= d b _ f e t c h _ o b j e c t ( $ r e s u l t _ c a l l ) ) { < d iv id = " m o n th l y - t o ta l - c a ll s " > <h3>σuvoλικές KApaELg</h3> e ch o $ n o d e _ c a l l - > t o t a l c a l l ; $ r e s u lt_ s in s = d b _ q u e ry _ ra n g e ( $ s e le c t_ s m s p e n n o n th, $ u id, 0, 1 0 ) ; w h ile ($node_sms = d b _ fe tc h _ o b je c t($ re s u lt_ s m s ) ) { ech o $node g e tm o n th S erv ice s ( ) ; < d iv s ty l e = " c l e a r :b o t h ;" > 5.6 Αναζήτηση αριθμού και υπολογισμός του συνολικού χρόνου Η σελίδα υπολογίζει τον συνολικό χρόνο ομιλίας από τον χρήστη βάσει ενός δοθέντος αριθμού. Η υπηρεσία αποτελείται από δύο μέρη το μέρος της φόρμας αναζήτησης και το μέρος της δυναμικής σελίδας που δέχεται την παράμετρο αναζήτησης και υπολογίζει τον συνολικό χρόνο ομιλίας. Η φόρμα αναζήτησης αποτελείται από ένα πεδίο κειμένου και ένα κουμπί το οποίο επικοινωνεί με την υπηρεσία υπολογισμού του συνολικού χρόνου ομιλίας. Ακολουθεί ο πηγαίος κώδικας της σελίδας. Α ναζήτηση δ ιά ρ κ ε ια ς κλήσης β ά σ ει α ρ ιθ μ ο ύ. < form a c tio n = "? q = n o d e /1 2 " m e th o d = " P o st"> < in p u t ty p e = " te x t" nam e="num ber"> < in p u t ty p e = " s u b m it" n am e= " search " value= "A vα ζή τi < /form >

Πληκτρολογώντας τον αριθμό τηλεφώνου οδηγείστε στην σελίδα αποτελεσμάτων. Εάν ο αριθμός είναι σωστός δηλαδή ο χρήστης τον έχει καλέσει τότε εμφανίζετε ο συνολικός χρόνος ομιλίας. Ακολουθεί ο κώδικας της σελίδας. S e a rc h s e r v i c e p a g e t h a t s u n m a riz e s th e t o t a l ammount o f volum e * o f a g iv e n num ber The s e a rc h p a ra m e te r from th e g e t r e q u e s t $ s e a r c h P a r a m e te r = $_POST[ 'n u m b e r'] if ($ s e a rc h P a ra m e te r!= n u l l ) { ech o g e tt o ta lc o s tb y N u m b e r($ s e a rc h P a ra m e te r); echo " S e a rc h p a ra m e te r r G e ttin g th e r e s u l t s from th e d a ta b a s e / f u n c ti o n g e tt o ta lc o stb y N u m b e r($ n u m b e r){ $ a c tiv e _c u s to m e r = $_SESSION[ 'a c tiv e _ c u s to m e r ' ] ; $ s e l e c t = "SELECT d e stin a tio n _ n u m b e r,s U M (v o lu m e ) a s sum_volum«from c a l l s WHERE d e s tin a tio n _ n u m b e r = " '.$ n u m b e r." ' AND c a lle r _ n u m b e r = " '.$ a c ti v e _ c u s to m e r.g R O U P BY d e s tin a tio n _ n u m b e r " ; $ ty p e = 'b l o g '; $ s t a t u s = 1; $ r e s u l t = d b _ q u e r y _ r a n g e ( $ s e le c t, $ u id, 0, 1 0 0 ); w h ile ($node = d b _ f e t c h _ o b j e c t ( $ r e s u l t ) ){ $ to ta lv o lu m e = $node-> sum _volum e; if ( $ to ta l V o l u m e!= n u l l II s trle n ( trim ( $ to ta lv o lu m e ) )!= 0){ r e t u r n "The t o t a l am ount o f volum e f o r th e n u m ber; ". $num ber. "< b r /> is ".$ to ta lv o lu m e ; } e l s e { r e t u r n " n o t fo u n d ";

5.7 Πληρωμή λογαριασμών Στην σελίδα της πληρωμής λογαριασμών παρουσιάζονται όλοι οι λογαριασμοί εάν έχουν πληρωθεί τότε εμφανίζετε η ημερομηνία πληρωμής των αλλιώς εμφανίζετε ένα πεδίο κειμένου στο οποίο ο χρήστης μπορεί να εισάγει την πιστωτική του κάρτα και να εξοφλήσει τον λογαριασμό του. Ακολουθεί ο κώδικας της σελίδας. C r e a tin g th e r e p o r t f o r a l l th e b i l l s and p r o v id e s th e paym ent c a p a b i l i t y * / $ a c tiv e _c u s to m e r = $_SESSION[ 'a c tiv e _ c u s to m e r ' ] ; $ ty p e = 'b l o g '; $ s t a t u s = 1; $ s e l e c t a l l b i l l s = " s e l e c t * fro m i n v o ic e s WHERE n um ber= ". $ a c tiv e _c u s to m e r; $ r e s u l t _ a l l _ b i l l s = d b _ q u e r y _ r a n g e ( $ s e l e c t _ a l l _ b i l l s, $ u id, 0, 1 0 0 ); w h ile ( $ n o d e _ a ll_ b il ls = d b _ f e t c h _ o b j e c t ( $ r e s u l t _ a l l _ b i l l s ) ) { echo " G e ttin g th e b i l l s " ; $ b i l l _ i d = $ n o d e _ a ll_ b i lls - > id ; $ is s u e d a te = $ n o d e _ a l l _ b i l l s - > i s s u e _ d a t e ; $ t o t a l c o s t_ in _ c e n ts = $ n o d e _ a l l _ b i l l s - > t o t a l _ c o s t ; $ t o t a l _ c o s t = $ to t a l _ c o s t _ i n _ c e n t s / 100; ech o " < b r/> I d λ ο γ α ρ ια σ ρ ο ύ : ". $ b i l l _ i d ; ech o " < b r/> Η μ ερομ η νία δ η μ ιο υ ρ γ ία ς λ ο γα ρ ια σ μ ο ύ : ". $ is s u e _ d a te ; ". $ t o t a l _ c o s t ; ech o " < b r/> Σ υ νο λ ικ ό κ ό σ το ς λ ο γα ρ ια σ μ ο ύ : ; paym ent s t a t u s fro m th e d a ta b a s e WHERE in v o ic e _ i d = ". $ b i l l _ i d ; $ s e le c t_ p a y m e n t_ s ta tu s = $ re s u lt_ p a y m e n t_ s ta tu s = db q u ery r a n g e ($ se le c t_ p a y m e n t_ s ta tu s, $ u id, 0, 10 0 ); ech o " < b r/> P a y m en t s t a t u s : < b r /> " ; $ s t a t u s = n u l l ; w h ile ( $ n o d e _ p a y m en t_ statu s = d b _ fe tc h _ o b je c t($ re s u lt_ p a y m e n t_ s ta tu s ) ){ "SELECT * FROM payments > tr a n s a c t i o n _ d a t e ; $ s t a t u s = $ n o d e _ p a y m e n t_ s ta tu s - > id ; $ p a y m en t_ d ate = $ n o d e _ p a y m e n t_ s ta tu s - ech o " P a id " ; echo "Paym ent d a te : '. $ p a y m e n t_date ; i f ( $ s t a t u s == n u l l ) {

< form a c tio n = "? q = n o d e /1 9 " m e th o d = "P o st"> <h3>a pi0p0q π ισ τ ω τ ικ ή ς κά ρ τα ς:< /1ι3> < in p u t ty p e = " te x t" i v a lu e = " " > ="pay" < in p u t ty p e = " h id d e n " n a m e = " b ill_ id " v a lu e = " <? ech o $ b i l l i d ;?>"> < in p u t ty p e = " h id d e n " n a m e = " to ta l_ c o s t" v a lu e - " <? ech o $ t o t a l c o s t ;? > "> < b r/> Μόλις o χρήστης θελήσει να εξοφλήσει ένα λογαριασμό τότε το εισάγει στο πεδίο της πιστωτικής κάρτας τον αριθμό του και οδηγείτε στην υπηρεσία πληρωμής λογαριασμών. Ακολουθεί ο κώδικας τις σελίδας. <?php $card _ n u m b er = $_POST[ 'p a y ' ] ; if ( $ c a rd _ n u m b e r == "1 2 3456789"){ ech o "H πληρωμή ολοκληρώθηκε με επ ι τ υ χ ί α. < /b r > " ; $sql="in SERT INTO p a y m en ts ( t r a n s a c t i o n _ d a t e, c r e d i t, i n v o i c e _ i d ) VALUES (CURRENT_DATE,' $ _ P O S T [ t o t a l _ c o s t ] ' $ _ P O S T [ b ill_ id ] ') " ; d b _ q u e r y ($ s q l) ; ) e l s e { e ch o "0 α ρ ιθ μ ό ς τη ς π ισ τ ω τ ικ ή ς κ ά ρ τα ς δ εν ε ίν α ι έ γ κ υ ρ ο ς < /b r > " ; 5.8 Αλλαγή ημερομηνίας προβολής στατιστικών αποτελεσμάτων Το σύστημα έχει την δυνατότητα να προβάλει στατιστικά στοιχεία βάσει ενός διαστήματος που είτε ορίζετε αυτόματα από το σύστημα ή από τον χρήστη. Αν ό χρήστης επιθυμεί να ορίσει διαφορετικό διάστημα από το προεπιλεγμένο τότε έχει την δυνατότητα απλά επιλέγοντας το διάστημα και πατώντας ορισμός χρονικού διαστήματος. Ακλουθεί ό κώδικας του υποσυστήματος.

To χ ρ ο ν ικ ό δ ιά σ τη μ α ο ρ ίσ τη κ ε με ε π ι τ υ χ ία. <?php $ _ S E S S IO N ['fro m _ d a te'] = $_POST[ ' d a t e l ' ] ; $ _ S E S S I O N ['to _ d a te '] = $_POST[ 'd a t e 2 ' ] ; p r i n t ($_POST[ ' d a t e l ' ] ) ;?> έως p r i n t ($_POST[ ' d a t e 2 ' ] ) ; 5.9 Ενημέρωση χρήστη για την λήξη λογαριασμού Ο χρήστης ενημερώνετε για την πορεία του λογαριασμού του και όταν αυτός πλησιάζει προς την λήξη ή έχει λήξει τότε ό χρήστης ενημερώνετε με ένα ενημερωτικό μήνυμα που είναι ορατό σε όλο το σύστημα. Ακολουθεί ο κώδικας του σελίδας. c?php $active_customer = $_SESSION['active_customer']; $type = 'blog'; $s t a t u s = 1; $ s e l e c t _ d a t e _ d i f f = " s e l e c t *, DATEDIFF(due_date,CURRENT_DATE()) as d i f f _ d a t e from in v o ic e s WHERE DATEDIFF(due_date,CURRENT_DATE()) <= 3 AND num ber= ' ". $ a c tiv e _ c u s to m e r. " ' ORDER BY i s s u e _ d a te DESC"; $ r e s u l t _ d a t e _ d i f f = d b _ q u e r y _ r a n g e ( $ s e le c t _ d a te _ d if f, $ u id, 0, 1 0 0 ); w h ile ( $ n o d e _ d a te _ d iff = d b _ f e t c h _ o b j e c t ( $ r e s u l t _ d a t e _ d i f f )) { $ d a te _ d if f = $ n o d e _ d a te _ d if f - > d if f _ d a te ; ech o "The due d a te e x p ir i n g in ". $ d a t e _ d i f f." d a y s " ; )?>

5.10 Υπολογισμός κόστους Ο υπολογισμός του κόστους είναι ίσως η πιο χρονοβόρα διαδικασία σε ολόκληρο το σύστημα καθώς απαιτεί πολλά δεδομένα από την βάση δεδομένων και συνεχή υπολογισμό. Ο αλγόριθμος υπολογισμού κόστους λαμβάνει σαν παραμέτρους την ημερομηνία έναρξης των υπηρεσιών και τον αριθμό του χρήστη στον οποίο θα υπολογιστεί το κόστος για ένα συγκεκριμένο χρονικό διάστημα. Λαμβάνοντας υπ όψιν τις παραπάνω παραμέτρους υπολογίζει το κόστος για κάθε υπηρεσία και ανάλογα με το συμβόλαιο κοστολογεί ανάλογα την κάθε υπηρεσία. Ακολουθεί ο ττηγαίος κώδικας του υποσυστήματος. R e q u e s t p a ra m e te r s s t a r t _ d a t e apo p ia h m erom inia num ber g ia p io noum ero na y p o l o g i s t e i t o k o s to s * / / / G i a k a th e i d t o o p o io e i n a i kataxw rhm eno m esa s th n v a sh $ s t a r t _ d a t e = $_GET[ ' s t a r t _ d a t e ' ] ; $ a c tiv e _ c u s to m e r = $_GET[ ' num ber' ] ; i f ( $ s t a r t _ d a t e!= n u l l II s t r l e n ( $ s t a r t _ d a t e )!= 0 && $ a c tiv e _ c u s to m e r!= n u l l II s t r le n ( $ a c t iv e _ c u s to m e r )!= 0){ $ t o t a l _ c o s t ; $ c u rre n t_ v o lu m e = 0; $ a c tiv e _c u s to m e r = $_SESSION[ 'a c tiv e _ c u s to m e r ' ] ; $ ty p e = 'b l o g '; $ s t a t u s = 1; / / G e t t i n g e a c h i d from th e d a ta b a s e $ se lec t_ e ac h _ id = "S E L E C T i d FROM c a l l s AS c a, c o n t r a c t s AS co WHERE c a.c a lle r _ n u m b e r = ".$ a c tiv e _c u s to m e r." AND c a. s t a r t _ t i m e BETWEEN ' ". $ s t a r t _ d a t e. " ' AND DATE ADD{ ' ". $ s t a r t _ d a t e. " ', INTERVAL 1 MONTH)"; $ r e s u l t_ e a c h _ id = d b _ q u e ry _ r a n g e ($ s e le c t_ e a c h _ id, $ u id, 0, 100); w h ile ($ n o d e _ e a c h _ id = d b _ f e tc h _ o b je c t( $ r e s u l t_ e a c h _ id ) ){ $ c u r r e n t _ id = $ n o d e _e a c h _id -> id ; //V rh sk o u m e t o id $ s e le c t id = "SELECT p r o d u c t_ id, volum e, p r o v id e r _ id, c o u n tr y _ id FROM c a l l s WHERE i d = ",$ c u r r e n t _ i d ;

$ r e s u l t = d b _ q u e ry _ r a n g e ($ s e le c t_ id, $ u id, 0, 1 0 0 ); I I ------------ gj^a t o ena i d -------------- w h ile ($ n o d e_id = d b _ f e tc h _ o b je c t ($ r e s u l t ) ) { //T a s t o i x e i a e n o s i d $ to ta l_ v o lu m e = $ n o d e _ id -> voluine; $ p r o d u c t_ id = $ n o d e _ id -> p r o d u c t_ id ; $ p r o v id e r _ id = $ n o d e _id -> p r o v id e r _id ; $ c o u n try _ id = $ n o d e _ id -> c o u n tr y _ id ; //V rh sk o u m e to n p ro o rism o m ia s k lh s h s $ s e l e c t _ d e s t i n a t i o n = "SELECT d s t. i d FROM d e s t i n a t i o n s AS d s t, z o n e _ c o u n trie s AS z c, z o n es AS WHERE d s t.p r o v i d e r _ i d = ". $ p r o v i d e r _ i d." AND z c. c o u n tr y _ i d = ". $ c o u n tr y _ i d." AND z. i d = z c.z o n e _ id AND d s t.z o n e _ i d = z. i d " ; $ r e s u l t _ d e s t i n a t i o n = d b _ q u e r y _ r a n g e ($ s e le c t _ d e s ti n a ti o n, $ u id, 0, 100); w h ile ( $ n o d e _ d e s tin a tio n = d b _ f e t c h _ o b j e c t ( $ r e s u l t _ d e s t i n a t i o n ) ){ $ d e s tin a tio n _ id = $ n o d e _ d e s tin a tio n -> id ; $ s e l e c t _ d e s t i n a t i o n _ c o s t = "SELECT * FROM p r o d u c t_ r a te s WHERE d e s t i n a t i o n = ". $ d e s t i n a t i o n _ i d. " AND p r o d u c t_ i d = ". $ p r o d u c t_ id ; $ r e s u l t _ d e s t i n a t i o n _ c o s t = d b _ q u e r y _ r a n g e ($ s e le c t _ d e s ti n a ti o n _ c o s t, $ u id, 0, 1 0 0 ); w h ile ($ n o d e _ d e s tin a tio n _ c o s t= d b _ fe tc h _ o b j e c t ($ r e s u l t _ d e s t i n a t i o / / G e t t i n g th e t o t a l p r o d u c t r a t e volum e $ se le c t_ p ro d u c t_ ra te s = " S E L E C T p r r.v o lu m e, p r r. p r i c e, p r r. g r a n u l a r i t y, p l p r. p r i o r i t y FROM c o n t r a c t s AS c o, r a t e _ p l a n s AS r, p la n _ p r o d u c ts AS p lp r,p r o d u c t _ r a t e s AS p r r, p r o d u c ts AS p r o WHERE c o.n u m b er = ". $ a c tiv e _ c u s to m e r." AND c o.p l a n _ i d = r. i d AND p r o. i d = ". $ p r o d u c t_ i d." AND p r r.p r o d u c t _ i d = p r o. i d AND ( p r r. d e s t i n a t i o n = ". $ d e s t i n a t i o n _ i d. " OR p r r.d e s t i n a t i o n = 0) AND r. i d = p l p r.p l a n _ i d AND p lp r. p r o d u c t _ r a t e _ i d = p r r. i d ORDER BY p l p r. p r i o r i t y " ; $ r e s u l t _ p r o d u c t _ r a t e s = d b _ q u e r y _ r a n g e ( $ s e le c t _ p r o d u c t_ r a te s, $ u id, 0, 1 0 0 ); w h ile ($ n o d e _ p r o d u c t_ r a te s = d b _ f e t c h _ o b j e c t ( $ r e s u l t _ p r o d u c t _ r a t e s ) ){ //O s i n o l i k o s d o re a n x ro n o s o m ilia s //N e e d s r e v i s i o n w ith TK $ t o t a l c o n tra c t_ v o lu m e = $ n o d e _ p ro d u c t_ ra te s-> v o lu m e * 6 0 ; b r e a k ; ech o " < b r / > c u r r e n t volum e ".$ c u r re n t_ v o lu m e ; if ($ c u rre n t_v o lu m e >= $ to ta l_ c o n tra c t_ v o lu m e ) { $ d e s t i n a t i o n _ c o s t = $ n o d e _ d e s ti n a ti o n _ c o s t-> p r ic e ; $ th e s in g l e _ c o s t = $ to ta l_ v o lu m e * $ d e s t i n a t i o n _ c o s t ; $ t o t a l _ c o s t = $ t o t a l _ c o s t + $ th e _ s in g le _ c o s t ; $ c u rre n t_ v o lu m e += $ to ta l_ v o lu m e ;

i } e l s e { $ th e _ s ln g le _ c o s t = 0; $ c u rre n t_ v o lu m e += $ to ta l_ v o lu m e ; } ech o < b r /> P ro d u c t i d ". $ p r o d u c t_ id ; e ch o " < b r/> S in g le s e r v i c e c o s t: ". $ th e _ s in g le _ c o s t ; $ s in g l e _ c o s t_ c e n ts - $ th e _ s in g le _ c o s t * 100; $ i n s e r t _ c o s t = "INSERT INTO c o s t s ( c o s t, c a l l _ i d ) VALDES ( ' ". $ s i n g l e _ c o s t _ c e n t s." ', ' ". $ c u r r e n t _ i d." ') / / i n s e r t i n g th e s i n g l e s e r v i c e c : i n t o th e d a ta b a s e d b _ q u e r y ( $ in s e r t _ c o s t) ; ech o "The s i n g l e c o s t s e r v i c e h a s ad d ed t th e d a ta b a s e " ; }//E O F w h ile n o d e _ d e s ti n a ti o n _ c o s t )//E O F w h ile n o d e _ d e s ti n a ti o n }//E O F o f w h ile n o d e _ id } //E 0 F o f w h ile o f eac h i d lo o p ech o "<br/>t H IS IS THE TOTAL COST: ". $ t o t a l _ c o s t ; } e l s e { ech o "no s t a r t d a te o r c u sto m e r f o u n d." ; 5.11 Έκδοση λογαριασμού πελάτη Μετά τον υπολογισμό του κόστους ακολουθεί η έκδοση λογαριασμού. Η έκδοση λογαριασμού γίνεται από την αντίστοιχη υπηρεσία του συστήματος και λαμβάνει υπ όψιν την ημερομηνία παραγωγής του την ημερομηνία λήξης και το χρονικό διάστημα που αυτός αναφέρετε καθώς και για πιο νούμερο αυτός δημιουργείτε. Από το συνολικό κόστος που έχει υπολογιστεί και για τις δοθείσες ημερομηνίες εκδίδετε λογαριασμός. Ακολουθεί ο κώδικας του υποσυστήματος. <?php C r e a tin g a b i l l from a g iv e n r e q u e s t R e q u e s t p a r a m e te r s : e.g. c r e a te = tr u e, fro m d a te = 2 0 0 9-0 1-0 1, to d a te = 2 0 0 9-0 1-3 1, n u m b e r= "th e num ber o f th e c u s to m e r", issu e _ d a te = " H p E p o p g v ία δ η μ ιο υ ρ γ ία ς ", d u e _ d ate = p o se s m eres m ex ri th n l i k s i. $ c r e a t e B i l l = $_GET[ ' c r e a t e ' ] ;

e ch o "S h o u ld c r e a t e : ". $ c r e a t e B i l l ; i f ( $ c r e a t e B i l l! = n u l l ) { i f ( $ c r e a t e B i l l == " t r u e " ) { G e ttin g th e n eeded p a ra m e te rs to p ro v id e th e b i l l $ is s u e D a te = $_GET [ ' is s u e d a t e ' ]/' echo " < b r/> Is s u e d a te : ". $ is s u e D a te ; $from D ate = $_GET[ ' f ro m d a te '] ; ech o "< br/> F rom d a te : ".$ fro m D a te ; $ to D a te = $_GET[ ' t o d a t e ' ] ; echo "<br/>t o d a te : ".$ to D a te ; $num ber = $_GET[ ' num ber' ] ; ech o "< br/> N um ber: ",$ n u m b er; G e t tin g th e c o s t from an am ount o f tim e * / $ s e le c t_ c a lls _ b e tw e e n _ d a te s = " s e l e c t *, SUM (cost) AS s e r v i c e _ c o s t from c a l l s INNER JOIN c o s ts ON c a l l s. i d = c o s t s. c a l l _ i d w here s t a r t _ t i m e BETWEEN ". $ fro m D a te. " ' AND " '. $ t o D a t e. A N D c a lle r _ n u m b e r = '". $nximber. " ' GROUP BY c a lle r _ n u m b e r " ; $ ty p e = 'b l o g '; $ s t a t u s = 1; $ r e s u l t = d b _ q u e ry _ r a n g e ( $ s e le c t _ c a lls _ b e tw e e n _ d a te s, $ u id, 0, 1 0 0 ); w h ile ($node = d b _ f e t c h _ o b j e c t ( $ r e s u l t ) ) { $ s e r v i c e _ c o s t = $ n o d e -> s e r v ic e _c o s t; ech o " t h i s i s th e t o t a l s e r v i c e c o s t ". $ s e r v i c e _ c o s t; /* G e t tin g th e f ix e d c h a rg e e.g. p a g io * / $ s e le c t_ f ix e d _ c h a r g e = "SELECT * FROM c o n t r a c t s INNER JOIN r a te _ p la n s ON c o n t r a c t s.p l a n _ i d = r a t e _ p l a n s. i d WHERE num ber= ' ". $num ber. " ; $ r e s u l t_ f i x e d _ c h a r g e = d b _ q u e r y _ r a n g e ( $ s e le c t_ f ix e d _ c h a r g e, $ u id, 0, 1 0 0 ); w h ile ($ n o d e _ fix e d _ c h a rg e = d b _ f e tc h _ o b je c t($ r e s u l t_ f i x e d _ c h a r g e ) ) { $ p la n _ fix e d _ c h a r g e = $ n o d e _ fix e d _ c h a r g e - > f ix e d _ c h a rg e * 100; ) $ t o t a l _ c o s t = $ p la n _ fix e d _ c h a r g e + $ s e r v i c e _ c o s t; ech o " t h i s i s th e t o t a l c o s t ".$ t o t a l _ c o s t ;