Create a document named: surnameStudentIDAssign1.doc . In your document, you must include the following section headings:
• System Overview,
• Class Diagram,
In the System Overview section, you are to write 100-200 words describing your system and how it could be used in an imaginary scenario. You will need to review this after completing all tasks and ensure that your overview explains your entire system. State any assumptions you are making in your system. It is expected that you will create a system that can accommodate managing some stalls. For each stall, there should be an associated stall name and some items each associated with a unique item number in the stall on which it appears. You may add further attributes such as description if you wish.
The final price for an item may be different from the price entered into the system. The final price should be based on the type of item. There should be some possible types of items incorporated into your system. Example item types are as follows:
1. A standard item will have the price calculated based exactly on the price entered into the system
2. A premium item can be created with a mechanism to indicate that it is to have a surcharge added to the price.
3. It is possible to create a discounted item where a discount has been applied to a given price
The FMMS system will have at least four different item types (e.g. standard, premium or discounted). You may choose a name for each type and what the distinguishing features of each type are. It is suggested (at a minimum) that each item type will have a different process for calculating the published price.
Each stall created is expected to have at least ten associated items. The total number of stalls is limited to a maximum of 30, and your system should allow for multiple pages of stalls. Your system will be able to add items to the stall after it has been created. The stall details will include a name as well as details naming a data file that will be used to preload the items. A StallItem is a generalised class representing a generic item. Each actual item created will be instantiated as one of the specialised types of item that inherits from StallItem
In this section, you are to provide a class diagram for every user-authored class you anticipate in your first version of the system. The first version will include a text-based driven system with classes that will be used to create objects to represent three different stalls, as well as different items that belong to each stall. You are expected to use inheritance so that you have an abstract item class and specialisation classes for different types of items.
As you develop your classes and methods, you will write testing code to verify that your code is working correctly. In this section, you will describe your initial chosen test data and explain how that data will help you test your code. Make sure that you choose a variety of test cases to ensure you can be satisfied that your code is working. Describe your test cases and include screenshots of your testing results (so far) in this section.
Stage 1b - Task 2 Creating classes for stalls and items using associations
and inheritance. Due date: Week 7
Create a new project in Eclipse called Assignment 1.
Within this project create a package called FarmersMarketManagementSystem.
1. Author six classes within your newly created package: General classes to create first are Stall, StallItem and your FarmersMarketDriver class. In addition to these, you are to create at least FOUR classes representing possible types of items that are specialisations on the general abstract class: StallItem. All StallItems have (at least) the following attributes: itemName (String) and itemPrice(double). When designing your specialisation classes, you have to choose additional attributes particular to each specific item type. Each item type will have a different getPrice() method that will override the getPrice() method in the abstract class StallItem and calculate the price to display based on the rules for each type.
2. You must provide at least two constructors for each particular specialised item type class:
a. A default constructor which assigns each instance variable a default value.
b. A constructor with parameters which assign values to each instance variable.
3. Create a seventh class, StallItemDatabase that you will use to manage a group of stall items. This class will be associated with the Stall class. The stall will have an attribute that is referencing an object based on this class. The StallItemDatabase class will contain an ArrayList of StallItem as well as an appropriate method named insert that could be used to add a particular StallItem into to the list of StallItems. The insert method should take two parameters: an integer value representing the stall item number (corresponding to the number on the stall) and a stall item object. Also, author a method named retrieve that will get the stall item in a given index position from the ArrayList. You can assume initially that the index position corresponds to the item number on the stall.
4. Author get and set methods for your classes for instance variables where appropriate.
5. Write a toString() method in each class that will return a String containing all the relevant data for each of your objects.
6. In each of your specialised stall item classes, create the getPrice method to perform an appropriate price calculation based on the data in the object.
7. Create a FarmersMarketDriver test class. In this class, provide a main method containing code to implement your test plan to test all constructors and methods including your toString () method, for each class you have written. Run your tests and make sure your class is behaving correctly.
8. Write further code in your test class so that you can create a stall for a farmer’s market and add items to that stall. This should be stall driven so that you can manually input some data. You may also like to hardcode some test cases.
9. In your documentation, outline your test plan (For example, outline what objects you created to demonstrate that your classes written so far are working correctly).
10. Explain how you have tested your code and the results of your testing. Include screenshots in your documentation demonstrating the output when you tested your code.
11. Document all methods in your code using comments. You may be creative with the individual class attributes you associate with your objects and methods you create. If you have any difficulty with ideas, discuss this with your tutor.
After submission of stage 1, your tutor will give you feedback to help you progress to stage 2 and stage 3.
Stage 2 - Convert your Item class to become an abstract class, populating your stall items from an input file, producing output to a report text file, creating an enclosure occupant list, using abstract data types (Map). Due Week 9
1. Create an input file AppleStall.txt containing at least ten different stall items (ensure you have at least one of each different item – standard/discount/premium). The data will include the name of the stall and then some items. The type of each item should be identified.
Your file may look something like this: (it doesn’t have to look exactly like this – the format is up to
you). In this example, for the venue: “Apple Stall”, there are four stall item types:
Premium, Standard, Discount and Special.
Apple Stall Premium
1 Red Delicious 1.00 Premium
2 Gala 1.20 Standard
3 Fuji 5.00 Standard
4 Granny Smith 5.50 Discount
5 Honeycrisp 5.00 Discount
6 Cripps Pink 8.00 Premium
7 Golden Delicious 9.00 Special
8 Autumn Glory 9.00 Standard
9 Braeburn 2.00 Special
10 Jazz 2.50
6. Extend your system so that it will allow a customer to view what a stall is selling and then allow the customer to purchase items. The order can contain 1 or more stall items that have been selected. If the order is a home delivery, you need to add a further delivery charge to the order.
7. Add further code to your driver class and write a test method which tests your system using a text-based system. Test using a scenario involving displaying the contents of a stall and asking the customer purchase items. In your report document, describe the testing scenario and the expected behaviour of your system. Provide screenshots of your system testing in your final report. Write a method to appropriately populate your stall with details read from a file. Ensure you have comments to describe each of your new classes in your code.
8. Add a method to output a stall saved to a file. This output report must save details of a particular stall, including the stall items and their base price (which may be different from the displayed price).
9. Test your classes to check they are working correctly. Document your testing process – describe your test data and the outcome of your testing. Include screenshots in your report document illustrating your testing process and the outcome of your testing.
10. Change your stall item class that manages a collection of stall items. In this class, you will replace the ArrayList with a Map data type. You can assume each Stall Item number is unique. The map data type enables you to look up and easily retrieve details for a stall item given its item number. Use the item number as the key.
11. Further test your system to ensure it is working, document your testing process.
12. Update your UML class diagram so that it is consistent with your code. You may use Enterprise Architect to import your code and generate the class diagram. Another option is to install ObjectAid UML Explorer directly into Eclipse (Check out
http://www.objectaid.com for more information).
After you have submitted stage 2, a partial code solution will be provided for viewing at the discretion of your tutor at individual consultation appointments.
Stage 3 creating a patron GUI Interface Due Week 11
In this stage, you will create a GUI interface for your system. This will replace your text-based FarmersMarketDriver created in stage 2. The GUI interface may be used on a touchscreen for visiting customers. There is example code on Moodle that demonstrates how to create a GUI. You are strongly encouraged to refer to those examples.
Draw a schematic sketch of your GUI design. On your diagram, highlight where you intend each panel to be and the contents of each panel (e.g. buttons, lists, radio buttons, labels). Where you have content to be displayed based on an object in your code, note this on your diagram. Also, indicate the events you expect your GUI to respond to and what happens following each event. For example, “when the button < X> is pressed, this event will trigger a call to method <Y> which will perform a calculation using the values in the selected list and display the result in the text field in the centre panel. “
Design and coding of the GUI using the swing library
Create a new class that will manage your GUI System. This class will take one parameter when constructed, a reference to a Stall object. So, if you invoke your GUISystem class twice (with two different stalls), you will create two separate windows – one for each stall.
You will have the initial startup GUI window where you provide a list of stalls available to view. You must be able to select a stall to display and then when you click on the button to open that stall(s), each stall will appear in a new separate window. It is expected that no submissions will be identical, so ensure that your GUI has some unique elements to it. Be creative! It is expected that each student pair will creatively design and author a unique system based on individual choices that fit the requirements. You must satisfy the following requirements for full marks on this task:
• Display in a startup GUI window the list of Stalls available to visit, select one or more (using a checklist) to then view or edit. For each stall selected, create a new GUI window for that stall.
• Create and use at least two buttons on the startup GUI, to open a stall and to exit the system
• Include a button that ‘does’ something based on the stall (e.g. calculate and display the total price for a customer)
• Use checkboxes to allow a user to select the stall items to create a customer purchase. These should be populated by a vector list and should be consistent with the stall items that are stored in that stall.
• Display in a scrollable output text box the purchase details based on user selection. The purchase details do not need to be saved as this system will not keep records of each customer purchases.
• Also, your code must be well designed into methods applying the principles of coupling and cohesion. You must deal with exceptions appropriately.
Note: your GUI does not need to create /edit or save your stalls. Those administrative functions from stage 2 could be done using the text-based program you wrote.
Allocated Marks: See Course Description You will be marked on the design and quality of your code, your documentation and also your ability to individually answer questions based on this code in an interview. Due Date: See Course Description Please refer to the Course Description for information relating to late assignments and special consideration. Plagiarism: Please refer to the Course Description for information regarding Plagiarism. Assignment Submission: Assignments must be submitted by the due date, and your assignment should be completed according to the General Guidelines for Presentation of Academic Work
Allocated Marks: See Course Description
You will be marked on the design and quality of your code, your documentation and also your ability to individually answer questions based on this code in an interview.
Due Date: See Course Description
Please refer to the Course Description for information relating to late assignments and special consideration.
Please refer to the Course Description for information regarding Plagiarism.
Assignments must be submitted by the due date, and your assignment should be completed according to
the General Guidelines for Presentation of Academic Work
Holding a PhD degree in Finance, Dr. John Adams is experienced in assisting students who are in dire need...
55 - Completed Orders
Canada, Toronto I have acquired my degree from Campion College at the University of Regina Occuption/Desi...
52 - Completed Orders
Even since I was a student in Italy I had a passion for languages, in fact I love teaching Italian, and I...
102 - Completed Orders
To work with an organization where I can optimally utilize my knowledge and skills for meeting challenges...
109 - Completed Orders
JOB OBJECTIVE Seeking entry level assignments in Marketing & Business Development with an organization...
202 - Completed Orders
Current work profile Project manager- The Researchers Hub (2nd Jan 2016 to presently working) Researc...
20 - Completed Orders
Sales Assistant, Mito Marina Assigned to the Stationery dept – assisted in merchandising, stock taking...
100 - Completed Orders
Personal Profile Dedicated and highly experienced private chauffeur. High energy, hardworking, punctua...
200 - Completed Orders
I'm Lizzy, full time education specialist in English, Essay Writing, Economics and Maths. Having Assi...
109 - Completed Orders