Guidelines – Please read carefully:
I. This assignment/module is used to assess your object-oriented design and programming skills. Hence, any use of databases and query languages (e.g. SQL) is strictly prohibited and would result in a fail grade.
Design, implement and test an inventory management system for a real estate agent in Northampton using object-oriented principles in Java FX. The design should include class diagrams. Testing should include both the white box (JUnit tests) and the black box (test logs). Consider the following requirements:
The agent sells/rents houses (detached, semi-detached, terraced), flats, and bungalows in different areas of Northampton such as Abington, Far Cotton, Duston, Wootton, and so on. Each accommodation has a minimum of 1 bedroom and a maximum of 5 bedrooms. Here are the specific requirements:
Basic System Requirements:
The system must allow the agent to:
1. Record details of a new customer (name, phone number, current address, etc.)
2. Display houses for sale (details of each house – detached, bedrooms, bathrooms, garden, etc.)
3. Sell houses to customers (i.e. record details of sales transaction) 4. Generate a sales invoice including details of agent fees of 1.5%.
5. Record payment for each customer.
6. Permanent storage and retrieval of all records (object serialization or text/CSV files).
Enhancements (in order of importance – high to low):
Additional features that you may include are as follows:
7. Search for a house by property type (e.g. detached house, flat, bungalow), area, price range, number of bedrooms, bathrooms, status (sold/unsold/on offer).
8. Display houses for rent (including rental price) and generate several invoices (initial invoice including deposit, agent fees, and one month’s rent; monthly rental invoices; final invoice at the end of contract including any deduction for damage). Assume the deposit to be three times the monthly rent and agent fees to be £300.00.
9. Ability to automatically generate and send emails containing monthly rental invoices (as attachments) to all customers.
8. Input/update inventory information (i.e. add/modify stock, prices)
10. Send an email containing the invoice as an attachment (pdf file) to the customer
11. Record a customer waiting list when accommodation is unavailable and notify them when it becomes available
12. Role based access (e.g. separate accounts for sales person, stock manager and administrator)
13. Login feature for the system
These additional features are only suggestions and are not exhaustive. You may include any other useful features relevant to this application. You may make assumptions regarding any other specifications not detailed in this brief.
All requirements (A, B and C below) MUST be delivered to achieve a passing grade for this assignment.
A) Technical Report
The report should consist of the following sections (in the same order):
1. Username and password for all relevant accounts (if implemented)
2. UML Class Diagrams showing relationships between the main classes in the model
3. A list of all the features implemented in a tabular format. For example:
4. Explanation of the main sections/fragments of the code. Provide information that would be useful for another developer (not an end user!) who may want to extend/maintain your system. You may want to refer to the class diagrams to explain code.
5. Screenshots of the system showing all key features 6. Evidence of Testing:
a. Blackbox Testing: Test logs providing information of all the tests carried out (including any failed tests for functionality not implemented)
b. Whitebox Testing: Code Listing of the JUnit test case for at least two methods.
c. List of any bugs and/or weaknesses in your system (if you do not think there are any, then say so). Bugs that are declared in this list will lose you fewer marks than ones that you do not declare.
If you have borrowed some code from elsewhere (e.g. from a book or some resource on the web you must indicate clearly what they are and include references).
B) Source Code
The source code must be well documented with necessary comments. Consistent and clear indentation of the code is also important. Source code needs to be submitted in two forms:
(i) As a single ZIP archive (.zip file consisting of all “.java” files, unit tests, data files, executable jar). Note: It is important to submit an executable jar. You will be penalized for not submitting it.
(ii) A commented full listing in a separate Word document named “Full Source Code Listing”.
C) Video Demonstration
In addition to the report, you must submit a video demo (URL) of your assignment. The demo should be about 10 minutes long (maximum:15 minutes) and should cover all of your work in a logical way. You should explain the main phases of design and implementation covering the main fragments of code. Your voice needs to be clear for the marker to hear. It should also include a walkthrough of using the software and must demonstrate the key features. The module tutor reserves the right to invite you for an online viva-voce. Poor demo/viva could negatively influence other sections in the marking criteria.
TWO separate WORD documents. [Document 1 = Report & Document 2 = FullSourceCodeListing]