/tennis-club-app

Κατασκευή βάσης δεδομένων (sqlite) και διεπαφής (Python) για tennis club. Δημιουργήθηκε στα πλαίσια του μαθήματος "Βάσεις Δεδομένων".

Primary LanguagePython

Ομάδα 39


Καρδούτσος Άγγελος (AM: 1059372)

Κοντογιάννης Μύρων (AM: 1059526)


Οδηγίες για την εφαρμογή Tennis Club

Για το άνοιγμα της εφαρμογής μπορείτε:

  • Να εκτελέσετε το πρόγραμμα tennis_club_team39.exe

    • Αρκεί να κατεβάσετε μόνο το εκτελέσιμο αρχείο

    Προσοχή: Ο υπολογιστής είναι πιθανό να θεωρήσει εσφαλμένα το πρόγραμμα ως ιό τύπου Trojan. Ωστόσο το πρόγραμμα είναι απολύτως ασφαλές.

  • Να εκτελέσετε το αρχείο gui.py σε τερματικό ή μέσω editor

Αρχεία:

  • gui.py: Περιέχει τις εντολές για την κατασκευή των γραφικών

  • _sqlQueries.py: Περιέχει τις συναρτήσεις για την επικοινώνια μεταξύ του προγράμματος και της τοπικής βάσης δεδομένων "tenisclub.db"

  • _frameDestroyers.py: Περιέχει συναρτήσεις για την διαγράφη frames που έχουν κατασκευαστεί από το κύριο πρόγραμμα

  • _checkEntryBox.py: Περιέχει συναρτήσεις για τον έλεγχο των τιμών που δίνει ο χρήστης στα πεδία (Entry Boxes)

  • tenisclub.db: Αποτελεί την βάση δεδομένων της εφαρμογής

  • tennis_club_team39.exe: Το εκτελέσιμο αρχείο

  • dummy_accounts.md: Περιλαμβάνει μερικούς λογαριασμούς, οι οποίοι είναι αποθηκευμένοι στη βάση δεδομένων, με σκοπό τον έλεγχο αυτής

  • Extra Files/SQL Queries.txt: Περιλαμβάνει τα κυριότερα queries που χρησιμοποιήθηκαν στο πρόγραμμα

  • ERD και Σχεσιακό Μοντέλο/sxesiako.png: Το σχεσιακό μοντέλο

  • ERD και Σχεσιακό Μοντέλο/diagram.jpg: Το ERD μοντέλο

  • ERD και Σχεσιακό Μοντέλο/diagram.erdm: Το ERD μοντέλο σε μορφή, που μπορεί να γίνει import στο ERDMaker


Βιβλιοθήκες

Αξιοποιήθηκαν βασικές βιβλιοθήκες της Python, οι οποίες και παρατίθονται παρακάτω:

  • tkinter
  • datetime
  • re
  • sqlite3
  • sys
  • os
  • random
  • string

Λειτουργίες Εφαρμογής:

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

  • "Σύνδεση"

Αφού ο χρήστης συμπληρώσει το username και το password και ελεγχθεί η εγκυρότητά τους, έχει πρόσβαση, μέσω ενός μενού, στις εξής λειτουργίες:

  1. "Προφιλ" > Προβολή Προφίλ: Βλέπει τα στοιχεία που διαθέτει η βάση δεδομένων για το συγκεκριμένο χρήστη, τα οποία είναι:

    • Member ID (μοναδικό για κάθε χρήστη)
    • Ονοματεπώνυμο
    • Φύλο
    • Αριθμός Ταυτότητας
    • Διεύθυνση
    • Τηλέφωνο
    • Email
    • Συνδρομή (Όνομα και κόστος και τις παροχές που προσφέρει η συνδρομή αυτή)
  2. "Προφιλ" > Επεξεργασία Προφίλ: Ο χρήστης μπορεί να αλλάξει το username ή/και τον κωδικό του

  3. Πρόγραμμα: Ο χρήστης βλέπει σε μορφή εβδομαδιαίου ημερολογίου τις ημέρες και ώρες που συμμετάσχει σε κάποιο πρόγραμμα του club

  4. "Αγώνες" > Επερχόμενοι Αγώνες: Περιλαμβάνει τους αγώνες του χρήστη (είτε αυτοί είναι στα πλαίσια τουρνουά ή ενοικιάσης γηπέδου) που επρόκειτο να συμμετάσχει

  5. "Αγώνες" > Αρχείο Αγώνων: Περιλαμβάνει τους αγώνες του χρήστη, οι οποίοι έχουν ολοκληρωθεί και έχει καταγραφεί το τελικό αποτέλεσμα. Στο κάτω μέρος της σελίδας, σημειώνεται η κατάταξη του χρήστη, το ποσοστό νικηφόρων αποτελεσμάτων, καθώς και το σύνολο των μελών του club

  6. "Αγώνες" > "Μη Καταχωρημένοι Αγώνες": Περιλαμβάνει αγώνες, οι οποίοι έχουν ολοκληρωθεί, αλλά στους οποιούς δεν έχει σημειωθεί το τελικό σκορ. Δίνεται η δυνατότητα στο χρήστη να συμπληρώσει το τελικό αποτέλεσμα

  7. "Έξοδος" > Αποσύνδεση: Ο χρήστης αποσυνδέεται από το συγκεκριμένο λογαριασμό και επιστρέφει στην αρχική οθόνη

  8. "Έξοδος" > Κλείσιμο Προγράμματος


 

  • "Σύνδεση Ως Προσωπικό"

Ανάλογα τον τύπο εργασίας του χρήστη, οι διαθέσιμες λειτουργίες είναι διαφορετικές:

  • Κοινό για όλους

  1. Προφίλ: Ο υπάλληλος βλέπει τα στοιχεία που διαθέτει η βάση δεδομένων, τα οποία είναι:

    • Employee ID (μοναδικό για κάθε υπάλληλο)
    • Ονοματεπώνυμο
    • Τύπος Εργασίας (Γυμναστής, Γραμματέας ή Καθαριστής)
    • Αριθμός Ταυτότητας
    • Διεύθυνση
    • Τηλέφωνο
    • Email
    • Μισθός
    • Ημερομηνία Πρόσληψης
    • Ημερομηνία Λήξης Σύμβασης (παραλείπεται αν ο υπάλληλος δεν είναι συμβασιούχος)
  2. Αποσύνδεση

  3. Κλείσιμο Προγράμματος


 

  • Γυμναστής

  1. Πρόγραμμα: Ο υπάλληλος βλέπει σε μορφή εβδομαδιαίου ημερολογίου τις ημέρες και ώρες που διεξάγονται τα προγράμματα που έχει αναλάβει

  2. Μέλη > Λίστα Μελών: Ο γυμναστής επιλέγει από το Dropdown Menu ένα πρόγραμμα που έχει αναλάβει. Έπειτα εμφανίζεται, σε μορφή πίνακα, η λίστα των μελών που συμμετέχουν στο συγκεκριμένο πρόγραμμα

  3. Μέλη > Προσθήκη Μελών: Ο γυμναστής μπορεί να αναζητήση μέσω του Member ID ένα μέλος του club με σκοπό να το προσθέσει σε κάποιο πρόγραμμά που έχει αναλάβει

  4. Μέλη > Αφαίρεση Μελών: Ο γυμναστής μπορεί να αφαιρέσει ένα μέλος από κάποιο πρόγραμμά του


 

  • Γραμματέας

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

  2. Πελατολόγιο > Αναζήτηση Μέλους: Επιτελεί την ίδια λειτουργία με την "Αναζήτηση Πελάτη", με τη διαφορά ότι αναζητά μέλη. Η αναζήτηση μπορεί επίσης να πραγματοποιηθεί με χρήση του Member ID. Αν η αναζήτηση πραγματοποιηθεί με κενά πεδία, τότε εμφανίζονται όλα τα μέλη.

  3. Πελατολόγιο > Προσθήκη Πελάτη: Φόρμα που επιτρέπει στον γραμματέα να προσθέσει ένα πελάτη στη βάση δεδομένων

  4. Αγώνες > Προσθήκη Αγώνα: Προσθέτει έναν αγώνα στη βάση δεδομένων. Οι πληροφορίες που αποθηκεύονται είναι το ID του πρώτου παίκτη, η ημερομηνία, η ώρα, καθώς και το γήπεδο. Επίσης, αν ο δεύτερος παίκτης δεν αποτελεί πελάτης του club (και δεν μπορεί να προστεθεί ως πελάτης), τότε συμπληρώνεται το όνομα και το επώνυμό του. Αν είναι πελάτης ή μέλος του club, τότε αποθηκεύονται το όνομα και το επώνυμό και, επίσης, πραγματοποιείται μια δεύτερη καταχώρηση αγώνα, έχοντας ως ID του πρώτου παίκτη αυτό του δεύτερου.

  5. Αγώνες > Προσθήκη Ενοικίασης: Επιτελεί την ίδια λειτουργία με την προσθήκη αγώνα, με τις εξής διαφορές: 1. Ο δεύτερος παίκτης είναι αναγκαστικά πελάτης ή μέλος 2. Επιλέγεται η διάρκεια ενοικίασης 3. Το γήπεδο δεν μπορεί να οριστεί εκ των προτέρων. Αφου συμπληρωθεί η ημερομηνία και η ώρα, πραγματοποίειται αναζήτηση, η οποία επιστρέφει τα διαθέσιμα γήπεδα, μάζι με τον τύπο τους και την τιμή ενοικίασης τους. 4. Αφού επιλεχθεί γήπεδο, σημειώνεται το κόστος για κάθε άτομο 5. Με την προσθήκη της ενοικίασης, προστίθονται 2 αγώνες, όπως κι προηγουμένως. Επιπλέον, προστίθεται μία καταχώρηση ενοικίασης, η οποία φέρει τις εξής πληροφορίες: - ID πρώτου παίκτη - Ημερομηνία - Ώρα - Διάρκεια - Γήπεδο 6. Επιπλέον, προστίθονται δύο καταχωρήσεις εκκρεμών συναλλαγών, μία για κάθε άτομο

  6. Συναλλαγές > Προσθήκη Συναλλαγής: Προσθήκη μία συναλλαγή ενός πελάτη του club για μια συγκεκριμένη παροχή που του προσφέρθηκε. Τα στοιχεία που αποθηκεύονται σε μια συναλλαγή είναι:

    • ID του πελάτη ή μέλους
    • Καταβληθέν Ποσό
    • Είδος Παροχής
    • ΦΠΑ (by default: 24%)
    • Τρόπος Πληρωμής (Μετρητά, Χρεωστική/Πιστωτική Κάρτα ή Κατάθεση)
    • Αρχικό Συνολικό Ποσό Επίσης, αποθηκεύονται, χωρίς την παρέμβαση του χρήστη, τα εξής στοιχεία:
    • Ημερομηνία και ώρα συναλλαγής
    • Υπόλοιπο (ως αποτέλεσμα της αφαίρεσης: 'Αρχικό Συνολικό Ποσό' - 'Καταβληθέν Ποσό')
    • Κωδικός Συναλλαγής (τυχαίος 9ψήφιος κωδικός)
  7. Συναλλαγές > Εκκρεμείς Συναλλαγές: Ο χρήστης μπορεί να αναζητήσει τις εκκρεμείς συναλλαγές ενός συγκεκριμένου μέλους ή πελάτη. Αν η αναζήτηση πραγματοποιηθεί με κενά πεδία, τότε εμφανίζονται όλες οι εκκρεμείς συναλλαγές

  8. Συναλλαγές > Ενημέρωση Συνναλγής: Αν ο πελάτης επιθυμεί να πληρώσει μέρος ή στο σύνολο του το υπόλοιπο μια εκκρεμής συνναλαγής, μποεί να την αναζητήση μέσω του κωδικού της. Όταν ενημερώνεται μια συναλλαγή, τότε οι πληροφορίες που αλλάζουν είναι οι εξής:

    • Καταβληθέν Ποσό (προστίθεται στο προηγούμενο η νέα πληρωμή)
    • Υπόλοιπο, (αφαιρείται από το προηγούμενο η νέα πληρωμή)
    • Ημερομηνία και Ώρα
  9. Συναλλαγές > "Ολοκληρωμένες Συνναλαγές": Με χρήση του ID, μπορεί ο χρήστης να αναζητήσει τις ολοκληρωμένες συναλλαγές (δηλαδή με μηδενικό υπόλοιπο) ενός πελάτη ή μέλους. Αν η αναζήτηση πραγματοποιηθεί με κενά πεδία, τότε εμφανίζονται όλες οιολοκληρωμένες συναλλαγές


 

  • Καθαριστής

  • Διαθέτει μόνο το προφίλ

 

  • "Σύνδεση Ως Διαχειριστής"

Οι διαθέσιμες λειτουργίες ενός διαχειριστή είναι οι εξής:

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

  2. Διαγραφή Μέλους: Με βάση το Member ID, ο διαχειριστής μπορεί να αναζητήσει ένα μέλος, το οποίο και μπορεί να διαγράψει.

  3. Υπάλληλοι > Προσθήκη Υπαλλήλου: Φόρμα που επιτρέπει στο διαχειριστή να προσθέσει ένα νέο υπάλληλο. Τα στοιχεία που αποθηκεύονται είναι:

    • Ονοματεπώνυμο
    • Τύπος Εργασίας
    • Αριθμός Ταυτότητας
    • Διεύθυνση
    • Τηλέφωνο
    • Email
    • Μισθός
    • Ημερομηνία Λήξης Σύμβασης (προαιρετικό) Επίσης, αποθηκεύονται, χωρίς την παρέμβαση του χρήστη, τα εξής στοιχεία:
    • Ημερομηνία Πρόσληψης (η ημερομηνία υποβολής της φόρμας)
    • Employee ID (τυχαίος 3 ψήφιος αριθμός)
    • Όνομα Χρήστη (παράγεται τυχαία και περιέχει τέσσερις τυχαίους χαρακτήρες και το Employee ID, τα οποία διαχωρίζονται με κάτω παύλα)
    • Κωδικός (παράγεται τυχαία, αποτελείται από 10 χαρακτήρες, οι οποίοι είναι λατινικά γράμματα ή/και αριθμοί)
  4. Υπάλληλοι > Αφαίρεση Υπαλλήλου: Με χρήση του Employee ID, ο διαχειριστής μπορεί να αναζητήσει έναν υπάλληλο, τον οποίο και μπορεί να διαγράψει.

  5. Έλεγχος > Πελάτες: Λίστα όλων των πελατών μαζί με τα στοιχεία τους. Παρουσιάζονται αλφαβητικά με βάση το επώνυμο και το όνομα

  6. Έλεγχος > Μέλη: Λίστα όλων των μελών μαζί με τα στοιχεία τους. Παρουσιάζονται αλφαβητικά με βάση το επώνυμο και το όνομα

  7. Έλεγχος > Υπάλληλοι: Λίστα όλων των υπαλλήλων μαζί με τα στοιχεία τους. Παρουσιάζονται αλφαβητικά με βάση το επώνυμο και το όνομα

  8. Έλεγχος > Ενοικιάσεις: Λίστα όλων των ενοικιάσεων (παρελθοντικών ή μελλοντικών). Παρουσιάζονται από την παλιότερη εως και την πιο μακρινή χρονικά

  9. Συναλλαγές > Όλες: Λίστα όλων των συναλλαγών, ολοκληρωμένες και μη. Παρουσιάζονται από την πιο πρόσφατη έως την παλαιότερη

  10. Συναλλαγές > Εκκρεμείς: Λίστα όλων των εκκρεμών συναλλαγών. Παρουσιάζονται από την πιο πρόσφατη έως την παλαιότερη

  11. Συναλλαγές > Ολοκληρωμένες: Λίστα όλων των ολοκληρωμένων συναλλαγών. Παρουσιάζονται από την πιο πρόσφατη έως την παλαιότερη


 

  • "Εγγραφή"

Ο χρήστης μπορεί να συμπληρώσει τα στοιχεία του και να διαλέξει την συνδρομή που επιθυμεί, ώστε να εγγραφεί ως μέλος. Αν δεν είναι ήδη υπάρχων πελάτης του club, τότε καταχωρείται και ως πελάτης. Διαφορετικά, καταχωρείται ως μέλος και το ID του ως πελάτη και το Member ID του θα είναι τα ίδια.


 

Λογαριασμοί

Για τον έλεγχο της εφαρμογής, μερικοί λογαριασμοί που μπορούν χρησιμοποιηθούν βρίσκονται στο αρχείο dummy_accounts.md