Assignment title: Information


​​ PAssessment details for ALL students Assessment item 2— Assignment 2 Due date: Friday of Week 10 ASSESSMENT Weighting: 35% Length: NA 1 Objectives The purpose of this assignment is to assess your competency in networking protocols, thread programming and database access. Assessment task Your task for this assignment is to design, implement, test and document a client/server system to solve the data persistence and retrieval problem. A distributed system often has a backend database for storing and retrieving business data. In this assignment, you are to implement a multiple-threaded client/server framework of an online Restaurant with backend database access ability. The users accessing the online restaurant should able to view listing of three categories of menu items and these are:  Beverage List  Lunch Menu List  Dessert List  The query frontend provides a menu to let a user choose any of these functions continuously until the user chooses to exit the system. Once it accepts a request, it will send the request to the server. The server parses the client request and processes it to send reply to the client. Multiple users should be simultaneously able to view listings. The server creates a new thread for each connection (thread-per-connection model). The details of different categories of menu item listing should be stored in three different database tables. The server thread queries the database tables to send reply to the client request. The data required for the assignment are given in the file COIT20257Assign2Data.csv. Please refer to example source code given in Week 9 folder to access database programmatically, use prepared statements to insert and query database. Data Structures You may follow the following class design.  FoodMenu class To store and manipulate the details read from the given file including foodType, itemName, protein, carbohydrate, sugar and energy.  DatabaseUtility class This class will have necessary data structures and methods to create the database and the Tables of Beverage, Lunch, and Dessert, populate the tables, and extract data from the tables. Use Prepared Statements to populate the tables using values loaded from the file. Also use Prepared Statements to extract data and store in appropriate data structure.  RestaurantServer class This class will have necessary data structures and methods to create the sockets for client connection, creating threads for each client. This class will have main() method to invoke methods from other classes to run the application.  RestaurantClient class This will take the user input, create socket and request connection to the server. This class will also send/receive the messages between the client/server. Sample Output Example screen shots from sample run of the application is given below A typical display on server side is shown below. Similarly messages will be displayed when more clients connect to the server. Note: For your testing purposes using multiple clients run the RestaurantClient application from multiple JVM. Report Prepare a report that includes a diagrammatic representation of the system architecture, a test plan, and user insctructions. Welcome to Online Restaurant Available Food Menus 1. Beverage 2. Lunch 3. Dessert Enter a number to view full listing of Menu items : 1 Display for Client One Item Name Food Type Protein Carb (g) sugar energy Chai latte regular fat cows milk Beverage 4 12.2 10.7 407 Chai latte reduced fat cows milk Beverage 4.4 11.5 10 329 Coffee white with regular fat cows milk Beverage 3.2 5.5 5.4 263 Coffee cappuccino with regular fat cows milk Beverage 2.6 5 4.8 221 Coffee cappuccino s with skim cows milk Beverage 2.7 4 4 116 Coffee flat white or latte with regular fat cows milk Beverage 2.7 4.8 4.8 228 Coffee flat white or latte with skim cows milk Beverage 2.9 3.9 3.9 116 Fruit drink apple juice commercial Beverage 0.1 10.9 10.9 178 Fruit drink orange juice commercial Beverage 0.2 10.4 10.4 176 Juice carrot home squeezed Beverage 0.8 5 5 133 Juice lemon home squeezed Beverage 0.6 1.8 1.8 115 Juice tomato commercial added salt Beverage 0.7 3.3 2.3 76 Juice grape commercial Beverage 0.2 13.4 13.4 221 Mineral water natural plain or unflavoured Beverage 0 0 0 0 Milk cow flavoured chocolate regular fat Beverage 3.6 0 8.8 338 Milk goat fluid regular fat Beverage 3.1 0 3.6 207 Request Received from Client 1 on Thread 0 Thread Id 9 Welcome Message sent to Client 1 Beverage Menu listing request received from Client 1. Beverage listing sent to Client 1. Software Tools for Building the Application You can use TexPad or NetBeans to develop your application. You have to install MySql server and configure to work within NetBeans and use the java program to create database, populate and query database. Follow incremental building of application. Test the programmatic operation of database before creating multiple threads. References and Source Code Files. Use this for installing and setting up the MySql server. MySql Server Installation and set up File Please refer the given files in Week 9 available from the link given below. Example of Programmatic Database Operation of MySql database File . Note: Please use the fil loading method given in the source code file available from Week 10 folder. The data file COIT20257Assign2Data.csv is also available from Week 10 folder. Assignment Submission You should submit the following source code files using the Moodle online submission system as one zip file (Note: the file names/class names could be changed to meaningful names).  FoodMenu.java – Source code for the FoodMenu class  RestaurantServer.java – Source code for the RestaurantServer class  RestaurantClient.java – Source code for Client class  DatabaseUtility.java – Source code for database creation and access  Report.doc – word document containing the report as given above. Assessment Item 2 Marking criteria S.No Total Marks - 35 Marks Allocated Marks Scored 1 The RestaurantClient class enabling send/receive of messages and appropriate handling of user input, proper formatting and display of user outputs 6 2 The RestaurantServer class enabling acceptance of client request, creation of thread per client which processes and responds to client request. 8 3 DatabaseUtility class enabling creation of database and tables, populating database tables with data from file, and extraction of data as requested by the client. 5 4 FoodMenu class enabling the storage and manipulation of FoodMenu details. 4 5 Programmatic creation of three tables and correct database connectivity 3 12 Good coding practices (Indentation, Comments, Naming Conventions, Readability) 3 13 Well presented report with student details, System architecture, test plan, and user instructions 6 Penalties Late penalty -1.75 (5% per working day) Plagiarism As per policy Total 35