Skip to content

alikivasaki/Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Marketplace 🛍️

Συνεργάτες

Το Marketplace δημιουργήθηκε από την Αλίκη Βασάκη και τη Μαρία Κανελλάκη για τις ανάγκες του Αντικειμενοστραφούς Προγραμματισμού σε C++ 2024.

Overview

To Marketplace είναι μια εφαρμογή που προσομοιάζει ένα αληθινό e-shop.
Συγκεκριμένα υποστηρίζει:

  • Τη σύνδεση δύο τύπων χρηστών (Admin, Customer)
  • Ξεχωριστό μενού για κάθε τύπο χρήστη
  • Αποθήκευση δεδομένων και μετά τον τερματισμό της εφαρμογής

Οντότητες - Κλάσεις κοινές για όλους τους τύπους χρηστών

Category

Η κλάση Category αποτελείται από:

  • string name για το όνομα της κατηγορίας
  • vector για την αποθήκευση όλων των υποκατηγοριών της κατηγορίας name.

Product

Η κλάση Product αποτελείται από:

  • Τίτλο
  • Περιγραφή
  • Όνομα κατηγορίας στην οποία ανήκει (string)
  • Όνομα υποκατηγορίας (string)
  • Τιμή
  • Μονάδα μέτρησης του προιόντος (kg ή unit)
  • Διαθέσιμη ποσότητα

CategoryManager

Χρήση δομής vector (για λόγους απλότητας)

Η κλάση CategoryManager αποτελείται από Category objects και λειτουργεί με σκοπό:

  • Τη διαχείριση των κατηγοριών - υποκατηγοριών
  • Το φόρτωμα των περιεχομένων του αρχείου categories.txt

ProductManager

Χρήση δομής unordered map (για λόγους ταχύτητας Ο(1))

Η κλάση ProductManager αποτελείται από Product objects και λειτουργεί με σκοπό:

  • Τη διαχείριση των κατηγοριών - υποκατηγοριών
  • Το φόρτωμα των περιεχομένων του αρχείου products.txt

Χρήστες

User

Η κλάση User είναι γονιός των κλάσεων Admin και Customer. Αποτελείται από:

  • string username; Το όνομα του χρήστη
  • string password Ο κωδικός του χρήστη
  • bool is_admin Ένας δείκτης για τον διαχωρισμό Admin/Customer.

Επιπλέον, περιέχει και μία μέθοδο (κοινό Option για Admin/Customer), το Search Product.

Admin

Σχεδιάγραμμα Admin

Admin Menu

  1. Προσθήκη Νέου Προιόντος (Add Product): Ο διαχειριστής δίνει τίτλο, περιγραφή, κατηγορία κτλ
  2. Επεξεργασία Προιόντος (Edit Product): Ο διαχειριστής επιλέγει και αλλάζει ένα πεδίο του προιόντος (τίτλο, περιγραφή κτλ)
  3. Αφαίρεση Προιόντος (Remove Product): Ο διαχειριστής αφαιρεί ένα προιόν
  4. Αναζήτηση Προιόντος (Search Product): Ο διαχειριστής αναζητά ένα προιόν βάσει Τίτλου, Κατηγορίας (ή και υποκατηγορίας), ή και τα δύο μαζί
  5. Προβολή Μη Διαθέσιμων Προιόντων (Show Unvailable Product): Προβάλλονται όλα τα προιόντα που έχουν ποσότητα 0.
  6. Προβολή Τοπ 5 Προιόντων (Show Top 5 Products): Προβολή των 5 δημοφιλέστερων προιόντων (που αγοράστηκαν περισσότερες φορές)
  7. Έξοδος απ την εφαρμογή (Exit)

Product History

Χρήση δομής unordered map (για λόγους ταχύτητας Ο(1))

Η κλάση ProductHistory αποτελείται από έναν unordered map

  • Αποθηκεύει τους τίτλους των products που έχουν αγοραστεί και ποσες φορές.
  • Φορτώνεται την πρώτη φορά από τα histories των χρηστών και δημιουργεί ένα file product_history.txt
  • Σε κάθε επόμενη εκτέλεση φορτώνεται από το product_history.txt
  • Βρίσκει τα top 5 προϊόντα για την επιλογή 6 του admin

Customer

Σχεδιάγραμμα Admin

Customer Menu

  1. Search for a product
  2. Add product to cart
  3. Update product from cart
  4. Remove product from cart
  5. Complete order
  6. View order history
  7. View cart
  8. Exit
  • Όλες οι επιλογές καλούν της αντιστοιχες συναρτήσεις των OrderHistory και Cart
  • To Complete order καλεί την αποθήκευση του Order του OrderHistory

Order History

Χρήση δομής list

Η κλάση OrderHistory αποτελείται από ένα list

  • Αποθηκεύει της παραγγελείες των πελατών με βάση το username
  • Κάθε order είναι διαφορετικό στοιχείο της λίστας

Cart

Χρήση δομής list μέσω unordered map (γρήγορο access διατηρώντας την σειρά των προϊόντων)

Η κλάση Cart αποτελείται από ένα list που γίνεται accessed μέσω ενώς unordered map

  • Κρατάει τα προϊόντα που βάζει ο πελάτης -Υπολογίζει την τελική τιμή

UserManager και λειτουργίες login/logout

Χρήση δομής unordered map (για λόγους ταχύτητας Ο(1))

Η κλάση UserManager αποτελείται απο έναν unordered map της μορφής unordered_map<string, tuple<string, bool>>

  • Αποθηκεύει της πληροφορίες όλων των χρηστών
  • Ελέγχει αν υπάρχουν οι χρήστες
  • Αποθηκεύει τους καινούργιους χρήστες που εγγράφονται
  • το tuple χρησιμοποιείται για να έχουμε δύο τιμές στο ιδιο key

Πώς να χρησιμοποιήσω το Marketplace?

Για να χρησιμοποιήσετε το Marketplace αρκεί να ακολουθήσετε τα παρακάτω βήματα:

  1. Άνοιγμα ενός Linux terminal
  2. Για το κατέβασμα του repository, εκτελέστε την εντολή
    git clone https://github.com/oop-dit-uoa-organization/oop2425-sdi2300266-sdi2300060.git
  3. Τέλος, τρέξτε την εντολή make ώστε να γίνει εκκίνηση της εφαρμογής
    Απολαύστε :)

About

A project that simulates a real e-shop. (Object Oriented Programming 2024 Assignment)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published