狠狠综合久久久久综合网址-a毛片网站-欧美啊v在线观看-中文字幕久久熟女人妻av免费-无码av一区二区三区不卡-亚洲综合av色婷婷五月蜜臀-夜夜操天天摸-a级在线免费观看-三上悠亚91-国产丰满乱子伦无码专区-视频一区中文字幕-黑人大战欲求不满人妻-精品亚洲国产成人蜜臀av-男人你懂得-97超碰人人爽-五月丁香六月综合缴情在线

 ICT239 代做、代寫 java/c/c++程序

時(shí)間:2024-03-11  來源:  作者: 我要糾錯(cuò)



Web Application Development _________________________________________
Tutor-Marked Assignment
January 2024 Presentation
_________________________________________

TUTOR-MARKED ASSIGNMENT (TMA)
This assignment is worth 24% of the final mark for ICT239 - Web Application Development The cut-off date for this assignment is Tuesday, 12 March 2024, 2355hrs.
Note to Students:
You MUST use the provided solution template accompanying this TMA.
Answer all questions. (Total 100 marks)
Section A
Question 1 concerns the Staycation case study.
Question 1 (35 marks)
(a) Follow the steps stated as follows. While you are performing the steps, do a recording of you running through the steps to launch Staycation demo on Vocareum.
1. Login to Vocareum via Canvas, start VS Code and open the folder to ICT239 Past References/staycation/app
2. Start a new terminal and setup the virtual environment and install packages
• python3 –m venv venv
• . venv/bin/activate
• pip install –r requirements
3. Start the app
4. Start the browser to connect to the app
5. Register an admin user, Admin, admin@abc.com, password:12345
6. Login using the registered admin user account: admin@abc.com
7. Click on 'Upload' at the sidebar to get the Upload page.
8. Select data type Package and upload staycation.csv. Next, select data type
Users and upload users.csv. Finally, select data type Booking and upload the file booking.csv. The files can be downloaded from ICT239 Past References/staycation/app/assets/js folder and to initialize the database for charting.
9. Click on 'Dashboard' to display the chart.
10. Use Compass on the desktop workspace to demonstrate in your video that
the database contains the data of the user accounts, packages and bookings correctly.
(4 marks)
     SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 2 of 19

Your answer to parts (b) – (d) must show clear understanding of the various components in the Staycation application. In order to do well in this section, you must provide a thorough answer as well as highlight code by copying ONLY necessary code to be used in your explanation.
You should highlight small chunks of code and explain how each chunk contributes to your answer.
There is penalty if relevant code does not accompany an explanation for each sub-part or if irrelevant code is included in your explanation.
(b) This question part refers to the code in the frontend component.
(i) Explain how bootstrap positions the sidebar, the top panel and the centre panel of a web page in the Staycation application.
(ii) Explain how the web page can respond to various screen sizes. In particular, explain using the web page you get when you click on the link Packages on the side bar.
(iii) Explain 5 styling effects applied to the sidebar.
(iv) Explainjinjainheritanceasappliedinthestaycationapplicationforthepage displayed for part (b) (ii).
(15 marks)
(c) In step 3 of part (a), the application starts, and in step 4 of part (a), the first web page is displayed.
(i) Identify the html page displayed.
(ii) Explain the HTTP request that causes the first page to be displayed. Specifically, explain how, where the HTTP request is made, and the type of HTTP request made.
(iii) Explain the interaction between the frontend component and backend component that produces a HTTP response to cause the web page to be displayed. Show the relevant code and use the code to explain the interaction. For this sub-part, you should explain how flask handles URL routing in this situation and the HTTP response.
(8 mark)
(d) In step 8 of part (a), the user can upload files to the backend.
(i) Explain why the view function upload caters to both GET and POST requests. Is it preferable to have two different view functions instead? Give reasons for your answer.
(ii) Explain how the backend accesses the additional data that accompanies the GET and POST HTTP requests, if any, for the upload function.
(8 mark)
 SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 3 of 19

Section B
Questions 2 – 4 concern the development of a Web application for meal orders. The application scenario is based on ICT162 July 2023 semester TMA with some modifications.
Eat-Right-Programme (ERP) is a pilot programme of Healthier SG. The key objective of ERP is to encourage Singaporeans to take charge of their diets, leading to healthier lifestyles and see better health outcomes. Singaporeans above 12 years old can enrol in ERP.
To debunk the myth that Healthy food is expensive, bland, and boring. ERP will offer Delis that are deliciously prepared by food providers/agencies, using recipes with strict requirements on calories and fat content.
In ERP, participants can “Order” their meals by selecting Delis to form a DeliSet first. DeliSets are saved and can be repeatedly ordered.
This section will focus on
• displaying information about the ERP program, and the available cold and hot delis
(questions 2a).
Refer to the appendix for code for classes that you can use to implement question2 (a). Subsequently, you are to modify the classes in the appendix for question 2(b) so that data is stored in Mongodb instead of class variables.
• creating an admin user account if the account is not yet created, registering non-admin users or participants, logging users in and out (question 2c).
• allowing participants to create deli sets, place order and view their orders (question 3).
• Allowing the admin user to upload participants, delis and orders (question 4).
You are required to provide explanations for ALL your implementations to show your understanding of the following items where applicable,
✓ the model, view and controller components in your implementation and the purpose of the components specifically for the question you are answering
✓ the application of HTML and CSS
✓ the application of Bootstrap
✓ the interactions amongst the frontend and backend components that you added.
✓ the application of jinja variables, template filters, statements, inheritance, macros etc
✓ any other explanation required for a specific part of a question
 SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 4 of 19

Question 2 (26 marks)
Learning objectives:
• Develop a HTML/CSS and Python web framework program
• Apply programming methods to present information in HTML
• Employ web programming framework for developing website
You are to submit both implementations for part (a) and (b) as two separate applications.
(a) About and Delis
Create a Flask application with a hyperlink About which leads to the home page shown in Figure Q2(a) (i).
Figure Q2(a) (i): The home page or the About page
The Deli page shows the Cold Delis followed by the Hot Delis as shown in Figure Q2(a) (ii) and (iii).
Figure Q2(a) (ii) The Delis page shows cold delis followed by hot delis
     SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 5 of 19

 Figure Q2(a) (iii) The Delis page shows hot delis following the cold delis
You must apply responsive web design in your implementation of the pages so that the pages can adapt to various screen sizes. Figure 2(a) (iv) shows the About page on a small screen with side bar and top panel collapsed. When the side bar and top panel are expanded, they are similarly displayed as in Figure 2(a) (viii).
Figure Q2(a) (iv) The About page on small screen size
Figure 2 (a) (v) – (viii) show the Deli page on various screen sizes. Figure 2 (a) (viii) shows the Deli page on a small screen with side bar and top panel expanded. The same hamburger icon as in the About page will show instead when side bar and top panel are collapsed.
    SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 6 of 19

    Figure Q2(a) (v)
     Figure Q2(a) (vi)
     Figure Q2(a) (vii)
    Figure Q2(a) (viii) Side bar and top panel expanded
   Figure Q2(a) (iv) The Deli page on various screen sizes
Figure Q2a(ix) shows how a link on the sidebar should look like when you hover over it.
Figure Q2(a) (ix) The sidebar when you hover over a link
    SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 7 of 19

You must apply jinja and jinja inheritance in your implementation and to use the data in the class variables. Do NOT hardcode the data in the class variables in any html page.
(10 marks)
(b) Make a copy of your implementation for part (a) so that you can modify the copy for part (b). Submit part (a) in a separate folder. Part (b) will be used for subsequent development for parts (b) and (c) of this question as well as for questions 3 and 4.
For part (b), you no longer use class variables to store data for the delis. Instead, use MongoDB database to store data about delis. Figure Q2(b) shows the complete class diagram for the application. The relevant classes for part (b) are Deli, ColdDeli and HotDeli.
Implement these three classes such that when a required collection in the database is empty, data is read from the global variable, all_delis and stored into MongoDB. You may design and implement any method you consider necessary for the classes to achieve the same effects as described in part (a).
Highlight and provide reasons for the changes you make to part (a) to implement part (b) using MongoDB database. Include in your answer the changes you made to the frontend and/or backend components of your flask application, including code to set up the database.
 Figure Q2(b) Complete class diagram
(c) Register, Login and Logout
(7 marks)
 Refer to Figure 2(c) (i) and (ii) for the user interfaces for Register and Login respectively. For this question part, you will need to define the User class in Figure Q2(b).
 SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 8 of 19

Create the admin user (email: admin@abc.com, password 12345 and name Admin) if the user collection is empty. You can create the admin user either via Compass or through some application code. There is no need to include other details for admin user such as ID dob, handicapped and deli sets.
Similar to the Staycation case study, a participant (non-admin user) needs to be authenticated before he can use certain functions of the application. Therefore, he must register for an account. Upon successful registration, he will be directed to a login page with a flashed message displayed using Bootstrap alert as shown in Figure 2(c) (iii).
Handle unsuccessful registration and login in the same manner as the Staycation case study. Any user who successfully logs in will be directed to the Deli page.
To exit from the application, the user selects log out. After a user has logged out, the application should display the About page. The log out functionality is available on the top panel only after a successful login as shown in Figure Q2c (iv).
You may copy the relevant code in the Staycation case study for the register, login and logout functions to your application and make changes to achieve the new effects. Explain your modification.
Register a participant (email peter@gmail.com, password 12345, name Peter Oh, ID S1234567C, dob 1 Jun 1950, handicapped) and test that your functions are working correctly.
(9 marks)
      Figure Q2(c) (i)
    Figure Q2(c) (ii)
     Figure Q2(c) (iii)
     Figure Q2(c) (iv)
   SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 9 of 19

Question 3 (24 marks)
Learning objectives:
• Apply programming methods to present information in HTML
• Employ web programming framework for developing website
This question focuses on the non-admin set functions: create delisets, order deliset and view orders. For this question, you must define the DeliSet and Order classes in Figure Q2(b). Ensure that the User class has been defined according to the class diagram in Figure Q2(b).
(a) Create DeliSet
The participant provides a name for the new deli set to be created. He can select the delis he wishes to add, and then click on the button to add the delis to the set. Figure Q3(a)(i) shows the top of the page for Create DeliSet and Figure Q3(a)(ii) shows the bottom of the page.
Figure Q3(a) (i) Top of Create DeliSet page with provided input
Figure Q3(a) (ii) Bottom of Create DeliSet page with provided input
     SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 10 of 19

The price of the deli set is the sum of each selected deli. The total fats and total calories are similarly computed. The consume in hours for a deli set is the minimum of the expiryHours attribute of delis in the deli set. The name of a deli set must have a different name from the names of a participant’s existing deli sets. Provide the necessary instruction as shown in Figure Q3(a) (iii).
 Figure Q3(a) (iii) Create DeliSet page with instruction
Flash appropriate messages such as
 • Please use a different deli set name
  Deli set name checks are case-insensitive. Therefore, My FAV lunch is considered same as My Fav Lunch.
• Please select at least one deli
  A deli set must have at least one selected Deli which is added to a newly created deli set. Subsequent selected delis should be added one at a time to the newly-created deli set.
• Deli set inputName created with the selected delis: deliCode1, ..., delicoden
  The message is flashed if the deliset is successfully created and added to the dictionary of deli sets for the participant. Use the deli set name as key and Deliset object as value.
Flash the appropriate message when the button is clicked, and return to the same page. An example is shown in Figure Q3(a) (iv).
 Figure Q3(a) (iv) Create DeliSet page with flashed message
(14 marks)
  SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 11 of 19

(b)
(i) Order DeliSet
When a participant has not created a deli set, he cannot place any order. Therefore, clicking on the hyperlink Order DeliSet shows a page as shown in Figure Q3(b) (i).
Figure Q3(b) (i) Order DeliSet page when participant has no deli set
If the participant has created deli sets, they are listed in alphabetical order, case insensitive. The participant provides a delivery datetime for a selected deli set and click on the corresponding button to place order.
Check that the same deli set must not have been ordered yet to be delivered at the same time. Flash an appropriate message when the button is clicked, and return to the same page. The two appropriate messages are as follows:
An example is shown in Figure Q3(b) (ii).
  • Order deliset delisetName placed for deliveryDateTime
  • Order failed. Deliset delisetName has already been placed for deliveryDateTime
  Figure Q3(b) (ii) Order DeliSet page with flashed message
(ii) View Orders
When a participant has not placed any order, clicking on the hyperlink Order DeliSet shows a page as shown in Figure Q3(b) (iii).
  SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 12 of 19

 Figure Q3(b) (iii) View Order page when participant has no order
If the participant has placed some orders, they are listed in chronological order, starting from the later datetime, shown in Figure Q3b(iv). Delivery charge is waived for participants who are at least 75 years of age on the year the order is made or are handicapped at the time of order.
Figure Q3(b) (iv) View Order page when participant has orders
(10 marks)
    SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 13 of 19

Question 4 (15 marks)
Learning objectives:
• Employ web programming framework for developing website
Figure Q4 (i) shows the Upload page. The Upload function is available to only the admin user. To access the function, the admin user must log in. The Deli page will show up, and then, he must click on the Upload link on the sidebar. Note that the admin user need not register himself.
Figure Q4 (i) Upload Page
Once a data type and a file are chosen, the admin user clicks on Upload to activate the upload of data to the backend to be stored in Mongodb.
Data type
     Fields, example and messages
    Participant
 ID,name,dob,handicapped,email
S4428006Z,Tan Yan Meng,19480708,False,tanym@gmail.com
Flash message when a participant’s email is already in database:
• Participant with email someEmail already exists
     Deli
 #cold deli
deliCode,name,price,fat,carbohydrates,protein,storageTemperature,url
C001,Smoked Duck Salad,3.0,12.5,23,15,16,https://picniclifestyle.com/wp-
content/uploads/2020/10/Grilled-pear-salad-6.jpg
#hot deli
deliCode,name,price,fat,carbohydrates,protein,cookingStyle,url
 H001,Croissant,2.0,15,26.7,4.6,Baking,https://3.bp.blogspot.com/-
HMLcbz567qg/TlgWSbpD1uI/AAAAAAAACgM/1xnYGFTZemE/s1600/croissant.JPG
Flash message when a delicode is already in database:
• Deli someDeliCode already exists!
     Order
 #Order
email,deliveryDateTime,name,deliList
wongyh@gmail.com,2024-01-04 09:00,My Breakfast,H001,C001,H008
peter@gmail.com,2024-01-04 09:00,My fav lunch
Flash messages:
• Participant with email someEmail has not registered!
  when participant in data line with email not registered in the application.
      SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 14 of 19

   • Order for same deliset someDeliSetName, delivery datetime someDeliveryDateTime by participant with email someEmail already exists
  when the data line is for an existing order, that is, for the same participant, the same deli set and the same delivery time.
• deliset someDeliSetName does not exist and cannot be created without delicode
 when a deli set does not exist yet and there is no deli code in the data line.
Note that if the data line contains deli code, then a deli set can be created for a participant, and an order is then placed.
However, if a deli set already exists for a participant, it is not necessary for a data line to list the deli codes in the deli set. If there are deli codes are in the data line for an existing deli set, the deli codes are ignored. That is, there is no need to update the existing deli set with the deli codes in the data line.
    Flash the number of records created at the end of each file upload. Refer to Figure Q4 (ii) for an example.
 Figure Q4 (ii) Upload Page after an upload
Extend the flask application to allow admin user to upload data as described.
 (15 marks)
 SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 15 of 19

Appendix
 all_delis = [{'code': 'C001', 'name': 'Smoked Duck Salad', 'price': 3.0, 'fat': 12.5, 'carbohydydrate': 23.0,
'protein': 15.0, 'styleOrTemp': '16',
'url': 'https://picniclifestyle.com/wp-content/uploads/2020/10/Grilled-pear- salad-6.jpg'},
{'code': 'C002', 'name': 'Strawberry Pudding', 'price': 2.0, 'fat': 0.3, 'carbohydydrate': 10.0,
 'protein': 0.7, 'styleOrTemp': '3',
'url': 'https://veenaazmanov.com/wp-content/uploads/2014/05/Homemade-Strawberry- Pudding-15.jpg'},
{'code': 'C003', 'name': 'Chocolate Cake', 'price': 1.5, 'fat': 14.3, 'carbohydydrate': 50.7,
  'protein': 5.0, 'styleOrTemp': '12',
'url': 'https://www.joannasteven.com/wp-content/uploads/2015/08/GFchocolatecake- 1024x1024.jpg'},
{'code': 'C004', 'name': 'Smoked Salmon', 'price': 2.4, 'fat': 3.7, 'carbohydydrate': 0.0,
 'protein': 16.0, 'styleOrTemp': '3',
'url': 'https://goodtastefoods.co.uk/wp-content/uploads/2019/11/smoked- salmon_143296537-1.jpg'},
{'code': 'C005', 'name': 'Chilled Papaya Smoothie', 'price': 2.2, 'fat': 2.1, 'carbohydydrate': 21.3,
 'protein': 7.0, 'styleOrTemp': '8',
'url': 'https://insanelygoodrecipes.com/wp-content/uploads/2022/09/Healthy- Papaya-Smoothie-with-Oat-Flakes-and-Cinnamon-683x1024.jpg'},
{'code': 'C006', 'name': 'Berry Yoghurt Surprise', 'price': 2.2, 'fat': 1.0, 'carbohydydrate': 9.2,
  'protein': 3.0, 'styleOrTemp': '3',
'url': 'https://www.pcrm.org/sites/default/files/berries-nondairy-yogurt.jpg'}, {'code': 'C007', 'name': 'Beetroot Raita', 'price': 2.0, 'fat': 1.0, 'carbohydydrate': 12.4,
 'protein': 3.5, 'styleOrTemp': '8',
'url': 'https://werecipes.com/app/uploads/2015/04/dahi-raita-beetroot-raita- recipe.jpg'},
{'code': 'H001', 'name': 'Croissant', 'price': 2.0, 'fat': 15.0, 'carbohydydrate': 26.7,
'protein': 4.6, 'styleOrTemp': 'Baking',
'url': 'https://3.bp.blogspot.com/- HMLcbz567qg/TlgWSbpD1uI/AAAAAAAACgM/1xnYGFTZemE/s1600/croissant.JPG'},
{'code': 'H002', 'name': 'Chicken Pie', 'price': 2.8, 'fat': 21.3,
 'carbohydydrate': 32.0,
'protein': 10.0, 'styleOrTemp': 'Baking',
'url': 'https://img.taste.com.au/94eodL4O/taste/2016/11/creamy-chicken-and-
leek-pies-80359-1.jpeg'},
{'code': 'H003', 'name': 'Roast Beef', 'price': 3.5, 'fat': 21.8, 'carbohydydrate': 0.0,
'protein': 19.6, 'styleOrTemp': 'Roasting',
'url': 'https://i2.wp.com/www.domesticate-me.com/wp-content/uploads/2013/12/slow- roasted-beef-tenderloin-with-rosemary-13.jpg'},
{'code': 'H004', 'name': 'Asparagus & Poached Egg', 'price': 3.0, 'fat': 4.9,
'carbohydydrate': 3.1, 'protein': 7.9, 'styleOrTemp': 'Boiled',
'url': 'https://www.healthbenefitstimes.com/recipe/wp- content/uploads/2018/07/Roasted-Asparagus-with-Poached-Eggs-and-Hollandaise- Recipe.gif'},
{'code': 'H005', 'name': 'Apple Sesame Tart', 'price': 1.8, 'fat': 7.5, 'carbohydydrate': 49.1,
'protein': 4.9, 'styleOrTemp': 'Baking',
 SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 16 of 19

 'url': 'https://i.pinimg.com/736x/fc/22/c0/fc22c0106471cd2939ca371bfc80c38e.jpg'}, {'code': 'H006', 'name': 'Beef & Brown Rice Spicy Soup', 'price': 3.2, 'fat': 6.35,
'carbohydydrate': 17.7, 'protein': 18.0, 'styleOrTemp': 'Boiled',
'url': 'https://i.pinimg.com/originals/f6/78/41/f678414dccf92a0af0a8f09e3572caa1.jpg'}, {'code': 'H007', 'name': 'Fish & Potato Pie', 'price': 3.0, 'fat': 5.5, 'carbohydydrate': 15.0,
 'protein': 16.5, 'styleOrTemp': 'Baking',
'url': 'https://www.sprinklesandsprouts.com/wp-content/uploads/2019/10/Fish-Pie- 4.jpg'},
{'code': 'H008', 'name': 'Banana Pancakes', 'price': 2.0, 'fat': 7.0, 'carbohydydrate': 20.0,
 'protein': 3.6, 'styleOrTemp': 'Pan-Fried',
'url': 'https://3.bp.blogspot.com/- BTNuMoVzv3Y/Vkq1QEgta_I/AAAAAAAANdY/19_4zLnWfcc/s1600/Buttermilk%2BBanana%2BPancak es%2Brecipe.jpg'},
{'code': 'H009', 'name': 'Boiled Banana with Grated Coconut', 'price': 2.0, 'fat': 2.2,
'carbohydydrate': 30.7, 'protein': 2.0, 'styleOrTemp': 'Boiled',
'url': 'https://thumbs.dreamstime.com/b/boiled-slice-banana-eat-coconut-food- diet-154458927.jpg'},
{'code': 'H010', 'name': 'Buckwheat Pancakes', 'price': 2.4, 'fat': 6.0, 'carbohydydrate': 39.0,
'protein': 7.0, 'styleOrTemp': 'Pan-Fried',
'url': 'https://bakeitpaleo.com/wp-content/uploads/2021/05/paleo-buckwheat- pancake-recipe.jpg'},
{'code': 'H011', 'name': 'Chicken with Brown Rice', 'price': 3.0, 'fat': 5.8, 'carbohydydrate': 48.3,
'protein': 15.0, 'styleOrTemp': 'Steaming',
'url': 'https://dinnerthendessert.com/wp-content/uploads/2019/05/Baked-Chicken- and-Rice.jpg'},
{'code': 'H012', 'name': 'Carrot & Coriander Soup', 'price': 2.0, 'fat': 2.6, 'carbohydydrate': 13.8,
'protein': 1.6, 'styleOrTemp': 'Boiled',
'url': 'https://i1.wp.com/cookingwithbry.com/wp-content/uploads/2019/11/Carot- Coriander-Soup-Recipe-17.jpg'},
{'code': 'H013', 'name': 'Beancurd With Bean Sauce', 'price': 2.5, 'fat': 3.3, 'carbohydydrate': 6.8,
'protein': 10.2, 'styleOrTemp': 'Steaming',
'url': 'https://www.pekinghouse.co.nz/wp-content/uploads/2015/10/DeepFriedBean-
 CurdinChiliBeanSauce-600x600.jpg'}]
from abc import ABC, abstractmethod
class Deli(ABC):
_STANDARD_EXPIRY = 2
delis = {}
def __init__(self, deliCode, name, price, fat, carbohydrates, protein, url):
        self.deliCode = deliCode
        self.name = name
        self.price = price
        self.fat = fat
        self.carbohydrates = carbohydrates
        self.protein = protein
        self.url = url
    @property
    def calories(self):
 SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 17 of 19

 return self.fat * 9 + self.carbohydrates * 4 + self.protein * 4
    @abstractmethod
    def expiryHours(self):
        return type(self)._STANDARD_EXPIRY
def __str__(self):
return f"{self.deliCode:4s} - {self.name:35s} Price:
${self.price:.2f} Fat: {self.fat:>4.1f} Calories: {self.calories:>5.1f}"
    @classmethod
    def getAllDelis(cls):
if not cls.delis:
for dataDict in all_delis:
 if dataDict['code'].startswith('H'):
deli = HotDeli(dataDict['code'], dataDict['name'],
dataDict['price'], dataDict['fat'], dataDict['carbohydydrate'], dataDict['protein'], dataDict['styleOrTemp'], dataDict['url'])
else:
deli = ColdDeli(dataDict['code'], dataDict['name'],
dataDict['price'], dataDict['fat'], dataDict['carbohydydrate'], dataDict['protein'], int(dataDict['styleOrTemp']), dataDict['url'])
                cls.delis[dataDict['code']] = deli
        return cls.delis.values()
    @classmethod
    def getDeliType(cls, deliType):
if not deliType: return []
return [d for d in cls.getAllDelis() if d.deliCode.startswith(deliType[0].upper())]
    @classmethod
    def getDeli(cls, code):
        return cls.getAllDelis().get(code)
class ColdDeli(Deli):
def __init__(self, deliCode, name, price, fat, carbohydrates, protein,
storageTemperature, url):
super().__init__(deliCode, name, price, fat, carbohydrates, protein, url) self.storageTemperature = storageTemperature
     def expiryHours(self):
        if self.storageTemperature <= 10:
return 0.5
elif self.storageTemperature <= 15:
return 1
elif self.storageTemperature <= 20:
            return 1.5
        else:
            return super().expiryHours()
class HotDeli(Deli):
_COOKING_STYLE_EXPIRY = {"Steaming":1, "Frying":3, "Grilling":1.8,
"Roasting":1.5}
    def __init__(self, deliCode, name, price, fat, carbohydrates, protein,
cookingStyle, url):
super().__init__(deliCode, name, price, fat, carbohydrates, protein, url)
 SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 18 of 19

 self.cookingStyle = cookingStyle
def expiryHours(self):
return type(self)._COOKING_STYLE_EXPIRY.get(self.cookingStyle,
type(self)._STANDARD_EXPIRY)
---- END OF ASSIGNMENT ----
 SINGAPORE UNIVERSITY OF SOCIAL SCIENCES (SUSS) TMA – Page 19 of 19
請(qǐng)加QQ:99515681  郵箱:99515681@qq.com   WX:codehelp 

標(biāo)簽:

掃一掃在手機(jī)打開當(dāng)前頁
  • 上一篇:代做ACS61012、代寫ACS61012 Machine Vision
  • 下一篇:代做IEMS 5730、代寫 c++,Java 程序設(shè)計(jì)
  • 無相關(guān)信息
    昆明生活資訊

    昆明圖文信息
    蝴蝶泉(4A)-大理旅游
    蝴蝶泉(4A)-大理旅游
    油炸竹蟲
    油炸竹蟲
    酸筍煮魚(雞)
    酸筍煮魚(雞)
    竹筒飯
    竹筒飯
    香茅草烤魚
    香茅草烤魚
    檸檬烤魚
    檸檬烤魚
    昆明西山國家級(jí)風(fēng)景名勝區(qū)
    昆明西山國家級(jí)風(fēng)景名勝區(qū)
    昆明旅游索道攻略
    昆明旅游索道攻略
  • NBA直播 短信驗(yàn)證碼平臺(tái) 幣安官網(wǎng)下載 歐冠直播 WPS下載

    關(guān)于我們 | 打賞支持 | 廣告服務(wù) | 聯(lián)系我們 | 網(wǎng)站地圖 | 免責(zé)聲明 | 幫助中心 | 友情鏈接 |

    Copyright © 2025 kmw.cc Inc. All Rights Reserved. 昆明網(wǎng) 版權(quán)所有
    ICP備06013414號(hào)-3 公安備 42010502001045

    狠狠综合久久久久综合网址-a毛片网站-欧美啊v在线观看-中文字幕久久熟女人妻av免费-无码av一区二区三区不卡-亚洲综合av色婷婷五月蜜臀-夜夜操天天摸-a级在线免费观看-三上悠亚91-国产丰满乱子伦无码专区-视频一区中文字幕-黑人大战欲求不满人妻-精品亚洲国产成人蜜臀av-男人你懂得-97超碰人人爽-五月丁香六月综合缴情在线
  • <dl id="akume"></dl>
  • <noscript id="akume"><object id="akume"></object></noscript>
  • <nav id="akume"><dl id="akume"></dl></nav>
  • <rt id="akume"></rt>
    <dl id="akume"><acronym id="akume"></acronym></dl><dl id="akume"><xmp id="akume"></xmp></dl>
    日韩一级免费片| 黄色免费高清视频| 久久视频这里有精品| 亚洲36d大奶网| 丰满少妇在线观看| 五月婷婷狠狠操| 黄色小视频免费网站| 日本不卡一区二区在线观看| 爱情岛论坛成人| 五月激情婷婷在线| 五月天六月丁香| 成人黄色片免费| 97超碰在线人人| 尤物av无码色av无码| 欧美激情精品久久久久久小说| 无罩大乳的熟妇正在播放| 麻豆tv在线播放| 亚洲一区二区蜜桃| 中文字幕黄色大片| 9久久9毛片又大又硬又粗| 人妻内射一区二区在线视频| 91制片厂毛片| 欧美高清中文字幕| 婷婷丁香激情网| 欧美日韩一级在线| 成人在线免费观看av| 国产aⅴ爽av久久久久| 无码人妻aⅴ一区二区三区日本| 男人天堂手机在线视频| 欧美s码亚洲码精品m码| www.五月天色| 欧美成人xxxxx| 日韩国产精品毛片| 成人午夜视频免费在线观看| 一区二区三区四区久久| 欧美色图色综合| 亚洲免费av网| 女性隐私黄www网站视频| 妞干网这里只有精品| 国产精品久久久久9999小说| 国产日产欧美一区二区| 国产wwwxx| 青青草国产精品视频| 91pony九色| 丰满少妇在线观看| 日韩免费视频播放| 国产树林野战在线播放| 男人添女人下面免费视频| 日本午夜激情视频| 成人污网站在线观看| 最新天堂中文在线| 久久精品香蕉视频| av在线观看地址| 激情五月五月婷婷| 久久精品久久99| 手机在线看福利| 大肉大捧一进一出好爽动态图| 蜜臀在线免费观看| 亚洲理论中文字幕| 中文字幕亚洲影院| 黄色片在线免费| 成人性做爰aaa片免费看不忠| 欧美日韩性生活片| 日韩中文字幕三区| 国产中文字幕免费观看| 欧美精品99久久| 日本在线观看a| 日本女优爱爱视频| 在线黄色免费观看| 色戒在线免费观看| 亚洲色图偷拍视频| 一区二区三区四区免费观看| 欧美激情第一区| 中文字幕第50页| 丁香六月激情婷婷| 亚洲熟妇无码一区二区三区导航| 美女黄色免费看| www.com毛片| 亚洲77777| 日韩最新中文字幕| 蜜臀av无码一区二区三区 | 最新天堂中文在线| 欧美男女交配视频| 亚洲国产精品女人| 精品少妇人妻av免费久久洗澡| 免费无码毛片一区二三区| 成人毛片视频网站| 日本不卡一区二区在线观看| 精品久久免费观看| 欧美色图另类小说| 不用播放器的免费av| 路边理发店露脸熟妇泻火| 可以在线看的av网站| 日韩中文字幕a| 美女扒开大腿让男人桶| 国产精品亚洲a| 中文字幕の友人北条麻妃| 日本一道本久久| www.污网站| 国产精品333| 蜜桃视频成人在线观看| 国产成人无码一二三区视频| 最新中文字幕久久| 欧美黑人又粗又大又爽免费| www.国产二区| 国产无色aaa| www.欧美日本| 精品少妇人妻av免费久久洗澡| 日本中文字幕二区| 无码人妻丰满熟妇区毛片| 成人在线免费观看视频网站| 成人亚洲视频在线观看| 蜜臀精品一区二区| 成人在线观看www| 伊人成人222| 欧美日韩亚洲一二三| 毛片在线播放视频| 国产在线拍揄自揄拍无码| 国产九九热视频| 黄色片在线免费| 看av免费毛片手机播放| 国产一区二区四区| www.18av.com| 91大学生片黄在线观看| 欧美xxxxxbbbbb| 天堂网成人在线| 国产成人在线综合| 久热在线视频观看| 在线观看国产一级片| 不卡影院一区二区| 久久美女福利视频| 国产一区亚洲二区三区| 中文字幕乱码人妻综合二区三区| 欧美这里只有精品| 少妇大叫太大太粗太爽了a片小说| 色乱码一区二区三区熟女| 亚洲黄色av片| 国产高潮呻吟久久久| 水蜜桃在线免费观看| 超级碰在线观看| 国产精品久久久久久久乖乖| 18禁裸男晨勃露j毛免费观看| 欧美在线观看黄| 欧美成人高潮一二区在线看| 日韩av综合在线观看| 日本xxxxxxx免费视频| 国产一级特黄a大片免费| 五月激情五月婷婷| 午夜福利123| 国产一区二区三区乱码| www国产精品内射老熟女| 久久综合伊人77777麻豆最新章节| 亚洲激情在线观看视频| 婷婷激情小说网| 免费看国产一级片| 青青在线视频免费| 久久久精品视频国产| 青草青青在线视频| 91看片在线免费观看| 日韩video| 免费黄色特级片| 一区二区三区四区免费观看| www国产精品内射老熟女| 亚洲综合欧美激情| av无码久久久久久不卡网站| 任你操这里只有精品| 特级黄色录像片| 亚洲精品视频导航| 人妻激情另类乱人伦人妻| 无码人妻丰满熟妇区毛片| 可以免费看的黄色网址| 国产女女做受ⅹxx高潮| 日本a级片在线播放| 激情五月婷婷久久| 天堂…中文在线最新版在线| 日韩av一卡二卡三卡| 久久久999视频| 日本香蕉视频在线观看| 日本美女视频一区| 国产精品亚洲二区在线观看| 久久99国产精品一区| 伊人国产在线视频| 日韩黄色片视频| 日本中文字幕亚洲| 强开小嫩苞一区二区三区网站| 在线观看免费黄网站| 国产h视频在线播放| 黄色a级片免费看| 亚洲免费av网| 三级黄色片免费观看| 久久99爱视频| 欧美大尺度做爰床戏| 92看片淫黄大片一级| 一区二区传媒有限公司| 亚洲乱码日产精品bd在线观看| 成年人网站av| 自拍偷拍视频在线| 91香蕉视频免费看| 日本一二三区在线| 异国色恋浪漫潭|