3 η Σειρά Ασκήσεων Ημερομηνία παράδοσης 17/1/2018 Άσκηση 1 Να γραφεί πρόγραμμα το οποίο θα διαχειρίζεται είδη αποθήκης (κλάση Inventory) και τιμολόγια (κλάση Invoice). Από το πρόγραμμα θα έχουμε δυνατότητα με το κατάλληλο μενού να δημιουργούμε νέα προϊόντα, να τροποποιούμε την τιμή και την περιγραφή τους, αλλά και να εκτυπώνουμε τα στοιχεία του κάθε προϊόντος. Θα έχουμε επίσης την δυνατότητα να δημιουργήσουμε ένα τιμολόγιο με λίστα από ένα ή περισσότερα προϊόντα και ποσότητες ανά προϊόν (κλάση Line) και να το τυπώσουμε. Στο πρόγραμμα θα πρέπει να γίνει υποχρεωτικά χρήση κλάσεων. Για την υλοποίηση του προγράμματος χρειάζονται 3 βασικές κλάσεις. Κλάση Inventory Η Κλάση Inventory θα χρησιμοποιηθεί για να κρατάμε τα στοιχεία του κάθε προϊόντος και θα έχει τα εξής χαρακτηριστικά και μεθόδους. Χαρακτηριστικά της κλάσης Inventory Όνομα Τύπος code String Κωδικός Προϊόντος descripton String Προϊόντος price Float Τιμή Προϊόντος Μέθοδοι της κλάσης Inventory Constructor print_inventory_item Αυτή η μέθοδος θα τυπώνει όλα τα χαρακτηριστικά ενός προϊόντος (Inventory) code, descripton, price. Κλάση Line Η Κλάση Line θα χρησιμοποιηθεί για να κρατάμε τον αύξοντα αριθμό γραμμής, τον κωδικό είδους, την περιγραφή τον αριθμό, την τιμή και την συνολική τιμή του κάθε προϊόντος που εισέρχεται στο τιμολόγιο. Η συνολική τιμή πρέπει να υπολογίζεται από τον τιμή επί την ποσότητα. Ένα τιμολόγιο μπορεί να περιέχει ένα ή περισσότερα προϊόντα σε όποια ποσότητα θέλουμε. Χαρακτηριστικά της κλάσης Line Όνομα Τύπος aa Int Αύξων αριθμός γραμμής. Να υπολογίζεται αυτόματα code String Κωδικός Προϊόντος descripton String Προϊόντος
price Float Τιμή μονάδας quantty Int Ποσότητα total Float Price*quantty. Να υπολογίζεται από το πρόγραμμα Μέθοδοι της κλάσης Line print_line_info Constructor Αυτή η μέθοδος θα τυπώνει όλα τα χαρακτηριστικά μίας γραμμής όπως θα εμφανίζεται στο τιμολόγιο. A/A, code, descripton, price, quantty, total price. Κλάση Invoice Η Κλάση Invoice θα χρησιμοποιηθεί για να κρατάμε τα βασικά στοιχεία ενός τιμολογίου και τις γραμμές προϊόντων (Line). Το κάθε τιμολόγιο θα έχει τα εξής χαρακτηριστικά και μεθόδους: Χαρακτηριστικά τις κλάσης Invoice Όνομα Τύπος lines Λίστα από Lines Η λίστα με όλες τις γραμμές προϊόντων του τιμολογίου (Class Variable). customer String Σε αυτή την μεταβλητή αποθηκεύουμε το όνομα του πελάτη στον οποίο θα κοπεί αυτό το τιμολόγιο. total Float Το συνολικό ποσό του τιμολογίου (Class Variable). Μέθοδοι της κλάσης Invoice Constructor. Δέχεται το όνομα πελάτη (customer). create_line Δέχεται αντικείμενο Line και το αποθηκεύει στη λίστα lines. Επίσης προσθέτει το total της κάθε γραμμής στην Class Variable total. print_invoice_info() Εκτυπώνει την επικεφαλίδα με το όνομα πελάτη και το συνολικό ποσό του τιμολογίου. Ακολουθούν οι γραμμές (αντικείμενα Line) από τη λίστα lines.
Μενού του προγράμματος Επιλογή 1 Θα δημιουργεί ένα νέο κωδικό στην αποθήκη. 2 Θα δείχνει όλα τα περιεχόμενα της αποθήκης. 3 Θα δημιουργεί ένα Invoice. Θα δέχεται το όνομα πελάτη, θα κατασκευάζει ένα αντικείμενο Invoice και μετά θα δέχεται κωδικούς προϊόντων. Αφού εντοπιστούν στη λίστα, θα εμφανίζει περιγραφή και τιμή και θα ζητάει ποσότητα για εισαγωγή στη λίστα lines του αντικειμένου Invoice. Αν ο κωδικός δεν αντιστοιχεί σε υπαρκτό κωδικό να εμφανίζεται το μήνυμα: *** Inventory Item not found! *** 4 Θα εκτυπώνει όλα τα στοιχεία του Invoice. 5 Έξοδος από το πρόγραμμα. Παράδειγμα εκτέλεσης της Άσκησης 1 Code: 100 Description: NVIDIA 210 Price: 35 Code: 150 Description: NVIDIA GT730 Price: 70 Code: 1 Description: RADEON 6450 Price: 60
Selection: 2 *** Print Inventory *** *** Code: 100 Descr: NVIDIA 210 Price: 35.0 *** Code: 150 Descr: NVIDIA GT730 Price: 70.0 *** Code: 1 Descr: RADEON 6450 Price: 60.0 Selection: 3 *** Enter Invoice Data *** Customer Name: Antoniou Inventory Code (or end): 1 Descr: RADEON 6450 Price: 60.0 Quantity: 2 1 1 RADEON 6450 60.00 2 120.00 Inventory Code (or end): 100 Descr: NVIDIA 210 Price: 35.0 Quantity: 3 2 100 NVIDIA 210 35.00 3 105.00 Inventory Code (or end): end Selection: 4 *** Printing Invoice *** *** INVOICE *** Customer: Antoniou -- Total Amount: 225.0 A/A Code Description ItemPrice Quantity Total 1 1 RADEON 6450 60.00 2 120.00 2 100 NVIDIA 210 35.00 3 105.00 ************************************************** Selection:5! Όλες οι ασκήσεις θα πρέπει να ανέβουν στο e- class σε συμπιεσμένη μορφή (ZIP) και το όνομα του αρχείου θα πρέπει να έχει την εξής μορφή: python_seira3_tp<αριθμό μητρώου>.zip
Π.χ για A.M 2087 -> python_seira3_tp2087.zip