I have couple more files to attach
IT209: Final Project: Apps Cart Due: 12/4/2021, 11:59 PM Description: We will design a simple apps store. The purpose of this project is to demonstrate an acceptable level of expertise with the fundamental procedural and object-oriented concepts and Graphical User Interface (GUI) implementation techniques introduced and refined in lectures and labs during the course of the semester. Recall that the acceptable resources for this assignment differs from those approved for lab assignments, and are limited to the class text, Python Library, Language and Tutorial references, lecture and lab slides/notes, lecture and lab instructors. Please note: This is an individual project and no collaboration is allowed other than accepted resources. Project Requirements: • The source code for this lab must be submitted in files named using the accepted format. • The source code files must contain a file header using the accepted format. The header information must be complete and accurate. • The source code file should use self-documenting code and additional comments (as required) to improve code readability and should use appropriate method and function header comments. Project Submission: You need to submit the following files: 1. A class file containing all the class and methods (please see classes and methods section). The name of the file should be in the following format: Firstname_lastname_Project_CLASS.py 2. A GUI file containing the GUI applications and class implementation. The name of the file should be in the following format: Firstname_lastname_Project_GUI.py Program Structure: 1. Program starts by reading from an input file containing an id, apps name, price, user rating and category of each item. (code provided). The information are separated by comma and saved in a .csv file. 2. Once read, an apps item will be created and saved to a dictionary ‘category_dict’ of apps per category. The key will be the category like: Games/Productivity etc. and the values will be the apps item object. 3. The program needs to create one more dictionary ‘ratings_dict’ where the apps will be saved by ratings. Key will be ratings and the values in the dictionary will be the apps item object. The ratings are: 1, 2, 3, 4 and 5. So if an apps has a rating of 4.5 then it will be saved under key 4, if an apps has a ratings of 2.1 , then it will be saved under key 2. 4. A testing code is provided to check the class file. You need to comment the testing code once done checking the class file. 5. The GUI file imports the class file and use the Item and SmartCart class information. 6. User has the option of ordering apps from different category or choose by apps ratings. Once user selects a category, s/he will be directed to the list of apps available to purchase for that category. 7. Each list, loads the items from the corresponding category dict. If user selects Games, then all the game apps will be loaded from the category_dict[‘Games’] from the class file 8. For each apps, there will be some information that will be displayed to user. a. A check box to select the apps to purchase b. A label to show the name of the item c. A label to display the price d. A label to display user ratings e. A label to display category of the apps 9. Once user selects item(s), and hits add to cart button then a subtotal label will appear. 10. User can then have the option of choosing more apps/checkout. 11. Checkout shows apps purchased, break-down of each apps and their information, tax and total. 12. A description of CLASS and GUI part is as follows: SmartCart Class: SmartCart is a list subclass. A SmartCart object contains all the apps object user purchased. It works like a list, where each item is an apps object. Methods: Description Parameters Return type subtotal: None Returns subtotal from the SmartCart object. Iterate over all the items values to obtain subtotal (before applying tax) None float Apps Item Class/ Item Class: Apps Item or in short Item class contains two class variables to hold different types of apps per category or per ratings. These two dictionaries are: category_dict and rating_dict . For this program you have following categories: ['Games', 'Productivity', 'Weather', 'Shopping', 'Utilities', 'Finance', 'Travel', 'Music', 'Health & Fitness'] and apps ratings ranging from 1 to 5. Methods: Description Parameters Return type __init__() Initialization method to initialize an apps item. Each apps has five types of information: id, apps name, category, price and user ratings. See below for details@@. Each apps will be added to category_dict and rating_dict as described above (Program structure #2 and #3. Category, name, price, unit None get_is() Returns is of an apps None string get_name() Returns name of an item None string get_price() Returns price of an apps None float get_rating() Returns rating of an apps None float get_category() Returns category/genre of an apps None string @@ Attribute name Description type id Each app has a unique identifier. This is a private attribute string name Private attribute. Name of an apps. string price Private attribute. Price of an apps float rating Private attribute. User rating of an apps float category Private attribute. Category of an apps string Graphical User Interface: Figure 1: Apps Cart –User needs to select a category #2, select an apps in the category(#3 ), hitting ‘Add to Cart’ button #4 will add the items in the cart and display the current subtotal. User can choose to select another category or by rating by selecting button ‘Select by Catogory’/ ‘Select by Ratings’’ button or checkout for final receipt as shown in #5. 1. Welcome screen: This screen will be the first screen to display. It will contain following widgets: a. Welcome message: Label b. Select by category: Button – will take user to different categories. Figure 1, #2 c. Select by rating: Button – will take user to select different ratings from 1-5 Figure 2 #2 d. Exit Application: Button – exit the program 2. Choose Category: If user presses start by category then the program will display another frame with different categories of apps (Figure -1 #2). This window has one button widget for each category of apps. For example: in figure -1 #2 user selects Games and then the program will display all the game apps. Go Back: Button – will take to step 1 again. Selecting the category will take user to all the apps currently in the apps store. For example: Figure- 1 #3 shows all the games available with ratings >=4.0 and <5.0. this="" window="" contains="" the="" following="" widgets:="" a.="" name="" of="" the="" apps:="" check="" button="" –="" user="" selects="" which="" apps="" they="" want="" to="" buy="" b.="" price="" of="" an="" apps:="" label="" c.="" id:="" label="" -id="" of="" an="" item="" d.="" user="" rating:="" label="" of="" the="" apps="" rating="" e.="" category:="" category="" of="" the="" apps.="" f.="" select="" by="" category/rating:="" buttons="" will="" take="" again="" to="" main="" menu="" (figure-1,="" #1)="" g.="" add="" to="" cart:="" button="" –="" add="" selected="" items="" to="" cart="" i.="" will="" display="" a="" current="" subtotal="" as="" label="" after="" selecting="" an="" app="" and="" pressing="" this="" button="" (figure-1,="" #4)="" h.="" checkout:="" button="" –="" after="" adding="" to="" cart,="" user="" can="" directly="" go="" to="" checkout="" window="" (#5).="" figure="" 2:="" apps="" cart="" –user="" can="" select="" apps="" by="" ratings="" #2,="" select="" an="" apps="" in="" that="" rating(#3="" ),="" hitting="" ‘add="" to="" cart’="" button="" #4="" will="" add="" the="" items="" in="" the="" cart="" and="" display="" the="" current="" subtotal.="" user="" can="" choose="" to="" select="" another="" apps="" by="" category/rating="" selecting="" button="" ‘select="" by="" category’/="" ‘select="" by="" ratings’’="" button="" or="" checkout="" for="" final="" receipt="" as="" shown="" in="" #5.="" 3.="" choose="" by="" ratings:="" if="" user="" presses="" start="" by="" ratings="" (figure="" -2,="" #2)="" then="" the="" program="" will="" display="" another="" frame="" with="" different="" apps="" with="" same="" ratings(figure="" -2="" #3).="" this="" window="" has="" one="" button="" widget="" for="" each="" category="" of="" apps.="" for="" example:="" in="" figure="" -2="" #2="" user="" selects="" rating="" 4="" and="" then="" the="" program="" will="" display="" all="" the="" game="" apps="" with="" rating="">=4.0 and < 5.0. for example: figure- 2 #3 shows all the apps available. this window contains the following widgets: a. name of the apps: check button – user selects which apps they want to buy b. price of an apps: label c. id: label -id of an item d. user rating: label of the apps rating e. category: category of the apps. f. select by category/rating: buttons will take again to main menu (figure-1, #1) g. add to cart: button – add selected items to cart i. will display a current subtotal as label after selecting an app and pressing this button (figure-1, #4) h. checkout: button – after adding to cart, user can directly go to checkout window (#5). 4. checkout: checkout window displays the summary of purchase with following widgets: a. your e-receipt: label b. receipt number: label - randomly generated by program c. name price quantity unit: header label d. item purchased, price, rating, genre/category as labels e. subtotal: label f. tax: label g. total: label h. ‘thank you’ message: label i. exit application: button – exit the program figure 3: apps cart –user can select apps in different ways in one purchase. select by apps category #2 or 5.0.="" for="" example:="" figure-="" 2="" #3="" shows="" all="" the="" apps="" available.="" this="" window="" contains="" the="" following="" widgets:="" a.="" name="" of="" the="" apps:="" check="" button="" –="" user="" selects="" which="" apps="" they="" want="" to="" buy="" b.="" price="" of="" an="" apps:="" label="" c.="" id:="" label="" -id="" of="" an="" item="" d.="" user="" rating:="" label="" of="" the="" apps="" rating="" e.="" category:="" category="" of="" the="" apps.="" f.="" select="" by="" category/rating:="" buttons="" will="" take="" again="" to="" main="" menu="" (figure-1,="" #1)="" g.="" add="" to="" cart:="" button="" –="" add="" selected="" items="" to="" cart="" i.="" will="" display="" a="" current="" subtotal="" as="" label="" after="" selecting="" an="" app="" and="" pressing="" this="" button="" (figure-1,="" #4)="" h.="" checkout:="" button="" –="" after="" adding="" to="" cart,="" user="" can="" directly="" go="" to="" checkout="" window="" (#5).="" 4.="" checkout:="" checkout="" window="" displays="" the="" summary="" of="" purchase="" with="" following="" widgets:="" a.="" your="" e-receipt:="" label="" b.="" receipt="" number:="" label="" -="" randomly="" generated="" by="" program="" c.="" name="" price="" quantity="" unit:="" header="" label="" d.="" item="" purchased,="" price,="" rating,="" genre/category="" as="" labels="" e.="" subtotal:="" label="" f.="" tax:="" label="" g.="" total:="" label="" h.="" ‘thank="" you’="" message:="" label="" i.="" exit="" application:="" button="" –="" exit="" the="" program="" figure="" 3:="" apps="" cart="" –user="" can="" select="" apps="" in="" different="" ways="" in="" one="" purchase.="" select="" by="" apps="" category="" #2=""> 5.0. for example: figure- 2 #3 shows all the apps available. this window contains the following widgets: a. name of the apps: check button – user selects which apps they want to buy b. price of an apps: label c. id: label -id of an item d. user rating: label of the apps rating e. category: category of the apps. f. select by category/rating: buttons will take again to main menu (figure-1, #1) g. add to cart: button – add selected items to cart i. will display a current subtotal as label after selecting an app and pressing this button (figure-1, #4) h. checkout: button – after adding to cart, user can directly go to checkout window (#5). 4. checkout: checkout window displays the summary of purchase with following widgets: a. your e-receipt: label b. receipt number: label - randomly generated by program c. name price quantity unit: header label d. item purchased, price, rating, genre/category as labels e. subtotal: label f. tax: label g. total: label h. ‘thank you’ message: label i. exit application: button – exit the program figure 3: apps cart –user can select apps in different ways in one purchase. select by apps category #2 or>5.0.>