Το Marketplace δημιουργήθηκε από την Αλίκη Βασάκη και τη Μαρία Κανελλάκη για τις ανάγκες του Αντικειμενοστραφούς Προγραμματισμού σε C++ 2024.
To Marketplace είναι μια εφαρμογή που προσομοιάζει ένα αληθινό e-shop.
Συγκεκριμένα υποστηρίζει:
- Τη σύνδεση δύο τύπων χρηστών (Admin, Customer)
- Ξεχωριστό μενού για κάθε τύπο χρήστη
- Αποθήκευση δεδομένων και μετά τον τερματισμό της εφαρμογής
Η κλάση Category αποτελείται από:
- string name για το όνομα της κατηγορίας
- vector για την αποθήκευση όλων των υποκατηγοριών της κατηγορίας name.
Η κλάση Product αποτελείται από:
- Τίτλο
- Περιγραφή
- Όνομα κατηγορίας στην οποία ανήκει (string)
- Όνομα υποκατηγορίας (string)
- Τιμή
- Μονάδα μέτρησης του προιόντος (kg ή unit)
- Διαθέσιμη ποσότητα
Η κλάση CategoryManager αποτελείται από Category objects και λειτουργεί με σκοπό:
- Τη διαχείριση των κατηγοριών - υποκατηγοριών
- Το φόρτωμα των περιεχομένων του αρχείου categories.txt
Η κλάση ProductManager αποτελείται από Product objects και λειτουργεί με σκοπό:
- Τη διαχείριση των κατηγοριών - υποκατηγοριών
- Το φόρτωμα των περιεχομένων του αρχείου products.txt
Η κλάση User είναι γονιός των κλάσεων Admin και Customer. Αποτελείται από:
string username;
Το όνομα του χρήστηstring password
Ο κωδικός του χρήστηbool is_admin
Ένας δείκτης για τον διαχωρισμό Admin/Customer.
Επιπλέον, περιέχει και μία μέθοδο (κοινό Option για Admin/Customer), το Search Product.
- Προσθήκη Νέου Προιόντος (Add Product): Ο διαχειριστής δίνει τίτλο, περιγραφή, κατηγορία κτλ
- Επεξεργασία Προιόντος (Edit Product): Ο διαχειριστής επιλέγει και αλλάζει ένα πεδίο του προιόντος (τίτλο, περιγραφή κτλ)
- Αφαίρεση Προιόντος (Remove Product): Ο διαχειριστής αφαιρεί ένα προιόν
- Αναζήτηση Προιόντος (Search Product): Ο διαχειριστής αναζητά ένα προιόν βάσει Τίτλου, Κατηγορίας (ή και υποκατηγορίας), ή και τα δύο μαζί
- Προβολή Μη Διαθέσιμων Προιόντων (Show Unvailable Product): Προβάλλονται όλα τα προιόντα που έχουν ποσότητα 0.
- Προβολή Τοπ 5 Προιόντων (Show Top 5 Products): Προβολή των 5 δημοφιλέστερων προιόντων (που αγοράστηκαν περισσότερες φορές)
- Έξοδος απ την εφαρμογή (Exit)
Η κλάση ProductHistory αποτελείται από έναν unordered map
- Αποθηκεύει τους τίτλους των products που έχουν αγοραστεί και ποσες φορές.
- Φορτώνεται την πρώτη φορά από τα histories των χρηστών και δημιουργεί ένα file product_history.txt
- Σε κάθε επόμενη εκτέλεση φορτώνεται από το product_history.txt
- Βρίσκει τα top 5 προϊόντα για την επιλογή 6 του admin
- Search for a product
- Add product to cart
- Update product from cart
- Remove product from cart
- Complete order
- View order history
- View cart
- Exit
- Όλες οι επιλογές καλούν της αντιστοιχες συναρτήσεις των OrderHistory και Cart
- To Complete order καλεί την αποθήκευση του Order του OrderHistory
Η κλάση OrderHistory αποτελείται από ένα list
- Αποθηκεύει της παραγγελείες των πελατών με βάση το username
- Κάθε order είναι διαφορετικό στοιχείο της λίστας
Η κλάση Cart αποτελείται από ένα list που γίνεται accessed μέσω ενώς unordered map
- Κρατάει τα προϊόντα που βάζει ο πελάτης -Υπολογίζει την τελική τιμή
Η κλάση UserManager αποτελείται απο έναν unordered map της μορφής unordered_map<string, tuple<string, bool>>
- Αποθηκεύει της πληροφορίες όλων των χρηστών
- Ελέγχει αν υπάρχουν οι χρήστες
- Αποθηκεύει τους καινούργιους χρήστες που εγγράφονται
- το tuple χρησιμοποιείται για να έχουμε δύο τιμές στο ιδιο key
Για να χρησιμοποιήσετε το Marketplace αρκεί να ακολουθήσετε τα παρακάτω βήματα:
- Άνοιγμα ενός Linux terminal
- Για το κατέβασμα του repository, εκτελέστε την εντολή
git clone https://github.com/oop-dit-uoa-organization/oop2425-sdi2300266-sdi2300060.git
- Τέλος, τρέξτε την εντολή
make
ώστε να γίνει εκκίνηση της εφαρμογής
Απολαύστε :)