Εφαρμογή Οδηγού Διασκέδασης Πόλης

needlebookkeeperΛογισμικό & κατασκευή λογ/κού

17 Νοε 2012 (πριν από 4 χρόνια και 8 μήνες)

305 εμφανίσεις

Εφαρμογή Οδηγού Διασκέδασης Πόλης


Η εργασία (ομαδική) αφορά την ανάπτυξη μιας εφαρμογής «Οδηγού Διασκέδασης Πόλης». Η
εφαρμογή αποτελεί έναν γαστρονομικό οδηγό για μια πόλη της επιλογής σας. Θα παρέχει μέσω ενός
εύχρηστου
γραφικού περιβάλλοντος

:

1.

υπηρεσίες αναζήτησης με κριτήρια για εστιατόρια,

2.

την εύρεση εστιατορίων, πληροφορίες για κάθε εστιατόριο,

3.

απεικόνιση της θέσης του σε χάρτη της περιοχής του και

4.

δυνατότητες κράτησης και αξιολόγησης.

Θα πρέπει να υποστηρίζονται διαφορετικοί τρόποι κατηγ
οριοποίησης των εστιατορίων ως προς την
περιοχή που βρίσκονται, την κατηγορία τους (είδος κουζίνας) και το εύρος τιμών τους (κατ’ άτομο).
Οι πληροφορίες για κάθε εστιατόριο θα διατηρούνται σε «
βάση δεδομένων»,

ενώ οι πληροφορίες

της

κάθε κράτησης θα πρέπει

να
εξάγονται σε αρχείο
,

το οποίο θα μπορεί να τυπώσει ο χρήστης
πριν την επίσκεψή του στο εστιατόριο.

Για την κράτηση σε εστιατόριο η εφαρμογή θα επικοινωνεί με την «Ενιαία Υπηρεσία Κρατήσεων», η
οποία θα δέχεται και θα εξυπηρετεί τα αιτήματα κράτησης τω
ν χρηστών. Όταν η υπηρεσία λάβει μια
κράτηση θα πρέπει μέσα σε συγκεκριμένο χρονικό διάστημα να απαντήσει για τη διαθεσιμότητα. Η
εφαρμογή θα εμφανίζει την απάντηση της υπηρεσίας και ο χρήστης θα πρέπει να επιβεβαιώσει ή να
απορρίψει την κράτηση. Μια κράτη
ση θεωρείται έγκυρη μόνο αφού ο χρήστης την επιβεβαιώσει και
η υπηρεσία απαντήσει ότι επιβεβαιώθηκε (
handshaking

protocol
). Για λόγους απλότητας θεωρούμε
ότι μια κράτηση αφορά το βράδυ της τρέχουσας ημέρας, στην τρέχουσα ημέρα και ώρα, ενώ δεν
υπάρχει περι
ορισμός στο πλήθος των κρατήσεων που μπορεί να πραγματοποιήσει ένας χρήστης.

Για την πλήρη λειτουργία και συντήρηση του συστήματος απαιτούνται τριών ειδών χρήστες: Ο
διαχειριστής, ο εγγεγραμμένος χρήστης και ο μη
-
εγγεγραμμένος χρήστης.

Οι αναλυτικές απαιτ
ήσεις ανά χρήστη είναι:

Ο
Διαχειριστής

θα πρέπει να μπορεί:

1.

Να κάνει
είσοδο

στο σύστημα με διαχειριστικό ρόλο.

2.

Να
καταχωρεί

στοιχεία για εστιατόρια. Τα στοιχεία αυτά θα περιλαμβάνουν: όνομα
εστιατορίου, διεύθυνση, τηλέφωνο, περιγραφή, πληροφορίες (γενικού
χαρακτήρα),
κατηγορία στην οποία ανήκει (π.χ. Ελληνική Κουζίνα, Ταβέρνες), εύρος τιμών κατ’ άτομο και
μία φωτογραφία.

3.

Να
τροποποιεί

τα στοιχεία των εστιατορίων και να
διαγράφει

εστιατόρια.

Ο εγγεγραμμένος χρήστης θα πρέπει να μπορεί:

1.

Να κάνει
είσοδο

στο σύστημα με ρόλο χρήστη
.

2.

Να
αναζητά

εστιατόρια με βάση διάφορα κριτήρια όπως: όνομα, περιοχή που βρίσκονται,
κατηγορία και εύρος τιμών.

3.

Να
προβάλλει

τις πλήρεις λεπτομέρειες του εστιατορίου (όνομα, διεύθυνση, τηλέφωνο,
περιγραφή, πληροφορίες, κατηγορία
, εύρος τιμών, φωτογραφία, μέσους όρους
βαθμολογιών αξιολόγησης ανά κατηγορία αξιολόγησης).

4.

Να προβάλει την τοποθεσία της περιοχής του σε
χάρτη.

5.

Να
αξιολογεί

το εστιατόριο στην κλίμακα 1..10 ως προς τα εξής κριτήρια: ποιότητα, τιμές,
χρόνος εξυπηρέτησης (θ
α πρέπει να υπολογίζεται και ο συνολικός μέσος βαθμός).

Ένας
χρήστης μπορεί να αξιολογήσει ένα εστιατόριο μόνο μια φορά.

6.

Να κάνει
κράτηση

για το εστιατόριο και εφόσον εγκριθεί, να εξάγει τα στοιχεία της
κράτησης σε αρχείο κειμένου (.
txt
). Τα περιεχόμενα τ
ου αρχείου θα πρέπει να είναι
σύμφωνα με την ακόλουθη μορφή:

Η κράτηση του
<
Όνομα Χρήστη
>

για το εστιατόριο
<
Όνομα Εστιατορίου
>

επιβεβαιώθηκε στις:
<
τρέχουσα ημερομηνία και ώρα
>

Για παράδειγμα:

Η κράτηση του Νίκος
Δημητρίου

για το εστιατόριο
Το φίλεμα

ε
πιβεβαιώθηκε στις: 16
-
01
-
2012
07:53:31

Ο
μη
-
εγγεγραμμένος χρήστης θα πρέπει να μπορεί:

1.

Να κάνει
αίτηση εγγραφής
.

2.

Να
αναζητά

εστιατόρια με βάση κριτήρια όπως: όνομα και περιοχή που βρίσκονται.

3.

Να
προβάλλει

λεπτομέρειες του εστιατορίου (όνομα, διεύθυνση, τηλέφωνο, περιγραφή,
πληροφορίες και κατηγορία).


Διεπαφές Χρήστη



1.

Η αρχική
οθόνη ν
α
επιτρέπει την είσοδο του χρήστη στην εφαρμογή παρουσιάζοντας πεδία
για εισαγωγή του
ονόματος χρήστη

(
username
)
και του
κωδικού

(
password
). Αν ο χρήστης
ε
ισάγει όνομα χρήστη και κωδικό, τότε το σύστημα θα πρέπει να αναγνωρίζει αν πρόκειται
για το διαχειριστή ή για εγγεγραμμένο χρήστη και να θέτει τα αντίστοιχα δικαιώματα
(πρόσβαση στις αντίστοιχες λειτουργίες), εμφανίζοντας

μήνυμα για τη σύνδεση που
επιτεύχθηκε, ως διαχειριστής ή εγγεγραμμένος χρήστης αντίστοιχα.

2.

Αν ένας χρήστης συνδεθεί ως

διαχειριστής
,
θα εμφανίζεται οθόνη με τέσσερα

κουμπιά με
ονόματα «
Εισαγωγή Εστιατορίου
», «
Τροποποίηση Εστιατορίου
»,
«
Διαγραφή
Εστιατορίο
υ
»

και
«Έξοδος»

διατεταγμένα
κάθετα

σε στήλη αριστερά στη
ν

οθόνη.

a.

Αν ο χρήστης επιλέξει
Εισαγωγή
,

στη δεξιά περιοχή

θα εμφανίζεται φόρμα με τα
εξής πεδία:
όνομα εστιατορίου, διεύθυνση, περιοχή, τηλέφωνο, κατηγορία που
μπορεί να ανήκει το εστιατόριο, πληροφορίες, περιγραφή, εύρος τιμών,
φωτογραφία (με δυνατότητα προσθήκης, αφαίρεσης και προβολής φωτογραφιών)
και τέλος κουμπί καταχώρησης. Όταν ο χρήστης επιλέξ
ει την καταχώρηση, θα
δημιουργείται μια εγγραφή στον κατάλληλο πίνακα (π.χ.
Restaurants
) της ΒΔ
.


Υπόδειξη 1
: Για την επιλογή φωτογραφίας από το δίσκο μπορεί να χρησιμοποιηθεί
η κλάση
JFileChooser

και για φίλτρο αρχείων η κλάση
ImageFileFilter
.

Υπόδειξη 2
:

Για την προβολή της φωτογραφίας σε συγκεκριμένες διαστάσεις
μπορεί να χρησιμοποιηθεί η μέθοδος
scale

της κλάσης
Utils
.


b.

Αν ο χρήστης επιλέξει
τροποποίηση

στη δεξιά περιοχή θα πρέπει να εμφανίζεται
ένας πίνακας με τα υπάρχοντα εστιατόρια που είναι ήδη κατα
χωρημένα στη ΒΔ και
ένα κουμπί τροποποίησης. Επιλέγοντας ο χρήστης (μονή επιλογή) από τον πίνακα
και πατώντας το κουμπί θα εμφανίζεται φόρμα (ίδια με αυτή της εισαγωγής) με
συμπληρωμένα τα στοιχεία του επιλεγμένου εστιατορίου. Ο χρήστης θα πρέπει να
μπορεί

να πραγματοποιήσει αλλαγές στα εμφανιζόμενα στοιχεία και με πάτημα
του κουμπιού ενημέρωσης να γίνεται η ενημέρωση της αντίστοιχης εγγραφής στη
ΒΔ.

c.


Τέλος, αν ο χρήστης επιλέξει
διαγραφή,

στη δεξιά περιοχή θα πρέπει να
εμφανίζεται ένας πίνακας με τα εστιατ
όρια που είναι ήδη καταχωρημένα στη ΒΔ,
από την οποία θα μπορεί να επιλέξει αυτό ή αυτά που επιθυμεί να διαγράψει
(πολλαπλή επιλογή). Με πάτημα του κουμπιού της διαγραφής θα γίνεται η
διαγραφή των αντίστοιχων εγγραφών από τη ΒΔ.

3.

Αν ένας χρήστης συνδεθεί
ως

εγγεγραμμένος χρήστης

θα

εμφανίζεται οθόνη με δύο

κουμπιά με ονόματα «
Αναζήτηση

Εστιατορίου
»
και
«Έξοδος»
.

a.

Αν ο χρήστης επιλέξει το κουμπί της αναζήτησης θα εμφανίζεται η φόρμα
αναζήτησης εστιατορίου
. Η φόρμα αυτή θα έχει κατάλληλα πεδία για εισαγωγή
κρ
ιτηρίων αναζήτησης, όπως το όνομα του εστιατορίου, την περιοχή που
βρίσκεται, την κατηγορία και το εύρος τιμών του, καθώς και πλήκτρο «Αναζήτηση».
Με πάτημα αυτού του κουμπιού και ανάλογα με τα κριτήρια που έχει
συμπληρώσει ο χρήστης, θα εμφανίζεται πίνακα
ς με τα εστιατόρια που θα
πληρούν τα κριτήρια αναζήτησης.

Υπόδειξη
: Όσα κριτήρια έχουν συμπληρωθεί θα λαμβάνονται υπόψη με λογικό ΚΑΙ
.

Για παράδειγμα, αν επιλέξω αναζήτηση και εισάγω περιοχή «Άλιμος» και εύρος
τιμών «15
-
25» θα πρέπει να βρει όλα τα εστιατ
όρια που βρίσκονται στον Άλιμο και
ταυτόχρονα έχουν εύρος τιμών 15
-
25 ευρώ.

b.

Επιλέγοντας κάποιο από τα εστιατόρια της λίστας (μονή επιλογή) και το κουμπί
προβολής, θα εμφανίζεται παράθυρο που θα προβάλλει τις
πλήρεις λεπτομέρειες
του εστιατορίου

(όνομα, διε
ύθυνση, τηλέφωνο, εύρος τιμών, πληροφορίες,
περιγραφή, κατηγορία που ανήκει, φωτογραφία, μέσους όρους βαθμολογιών
αξιολόγησης από όλους τους χρήστες που έχουν βαθμολογήσει το συγκεκριμένο
εστιατόριο) και την τοποθεσία του σε χάρτη. Για την
προβολή σε χάρτη

μπορεί να
χρησιμοποιηθεί το
Swing

component

JXMapKit
.

Υπόδειξη

1
: Να χρησιμοποιηθεί η βιβλιοθήκη
JXMapKit

και να προστεθεί ως
component

στην παλέτα του
Netbeans
.

Στις ιδιότητες του
component

να επιλέξετε
ως
default

provider
:
OpenStreetMaps
.


Υπόδειξη

2
: Να χρησιμοποιηθεί η μέθοδος
getGeoposition

της κλάσης
Utils

που με
βάση ένα όνομα περιοχής επιστρέφει τις γεωγραφικές συντεταγμένες της
περιοχής
.

c.

Από τη φόρμα αναζήτησης εστιατορίου, επιλέγοντας το κουμπί «
Αξιολόγηση
»
(έχοντας επιλέξει εστιατόριο από τον

πίνακα), ο χρήστης θα μπορεί να αξιολογήσει
το εστιατόριο στην κλίμακα 1..10 ως προς τα εξής κριτήρια: ποιότητα, τιμές, χρόνος
εξυπηρέτησης, ενώ η εφαρμογή θα πρέπει να υπολογίζει και το μέσο όρο της
βαθμολογίας του. Πατώντας στο κουμπί «Υποβολή» η αξιολ
όγηση θα καταχωρείται
στη ΒΔ. Ένας χρήστης μπορεί να αξιολογήσει ένα εστιατόριο μόνο μια φορά. Αν
επιλέξει ξανά το κουμπί αξιολόγησης θα πρέπει στο παράθυρο αξιολόγησης να
μπορεί να δει και να τροποποιήσει την υπάρχουσα αξιολόγηση.

Υπόδειξη
: Να χρησιμοποιη
θεί η κλάση
StarRater

(παρέχεται στο φάκελο βοηθητικά
αρχεία)
.

Με
drag
-
n
-
drop

από το
project

μπορούμε να το προσθέσουμε ως
component
.