# FlexiRent
Javafx的公寓租赁系统
#### COSC1295 Advanced Programming
Computer Science and Information Technology
School of Science, RMIT
Assignment 1 - Semester 2, 2018
Submission due date: by 11:59 PM on Sunday 26th of August (end of Week 6)
##### Introduction
This assignment is worth 15% towards your final grade.
NOTE
* This assignment is of a size and scope that can be done as an individual assignment. Group work is not allowed.
* A more detailed marking rubric will be provided closer to submission.
You are required to implement a basic Java program using Java Standard Edition 8.0 or higher. This assignment is designed to:
* Practise your knowledge of design classes in Java
* Practise the implementation of various kinds of classes in Java
* Practise the use of polymorphism
##### Academic Integrity
The submitted assignment must be your own work. For more information, please visit http://www.rmit.edu.au/academicintegrity.
Plagiarism is treated very seriously at RMIT. Plagiarism includes copying code directly from other students, internet or other resources without proper reference. Sometimes, students study and work on assignments together and submit similar files which may be regarded as plagiarism. Please note that you should always create your own assignment even if you have very similar ideas.
Plagiarism-detection tools will be used for all submissions. Penalties may be applied in cases of plagiarism.
##### Overview
NOTE: Carefully read this document. In addition, regularly follow the Canvas assignment discussion board for assignment related clarifications and discussion.
For this assignment you need to write a console application in the Java programming language which allows a company called FlexiRent to manage the renting and maintenance of various types of rental apartments in Melbourne CBD. Unlike traditional hotels, FlexiRent offers stylish 1, 2, and 3-bedroom Apartments and Premium Suites for short-term stays in Melbourne.
###### Rental Property
Each rental property managed by FlexiRent has the following attributes:
* Property id: a string which uniquely identifies each rental property, the id should start with A_ if the property is an apartment and S_ if the property is a Premium Suite
Example of an Apartment ID: A_700BSMEL for 700 Bourke Street, Melbourne
Example of a Premium Suite ID: S_633WMSB for 633 Whiteman Street, Southbank
Note: You are free to use your own format, as long as each rental property is uniquely identified and an Apartment id starts with A_ and a Premium Suite id starts with S_
* Street number
* Street name
* Suburb
* Number of bedrooms of the property
* Property type: FlexiRent currently has two types of rental properties; Apartment and Premium Suite, whose different details are shown further down
* Property status: employees of FlexiRent will inspect this attribute to determine whether the property is currently available for rent or being rented or under maintenance
Furthermore, each rental property also keeps its own collection of Rental Records. These store information about the 10 most recent times that property has been rented.
###### Rental Record
Each Rental Record has the following attributes:
* Record id: a string which uniquely identifies each rental record. A rental record id is constructed by concatenating the following three attributes
propertyId_ + customerId_ + rentDate (8 digit format: ddmmyyyy)
Example 1: Customer with id CUS0011 rented an apartment A_668BSMEL on 14/07/2018, then the rental record id will be: A_668BSMEL_CUS0011_14072018
Example 2: Customer with id CUS0039 rented a premium suite S_63WMSB on 12/07/2018, then the rental record id will be: S_63WMSB_CUS0039_12072018
Note: In Assignment 1, each customer is simply represented by a unique string of customer id of your choice. There is no need to implement a class to store customer information.
* Rent date: the date when a customer rents the property
Source code of the DateTime.java is provided to you. Please click here to access the code.
* Estimated return date: the calculated date given the number of days a customer wants to rent the property (provided when a customer wants to rent that property) and the rent date shown above
Example: a customer wants to rent a property on 14/07/2018 for 3 days, hence the estimated return date will be 17/07/2018
* Actual return date: the date when the customer actually returns the property
* Rental fee: the fee calculated based on the type of property, the rent date and the estimated return date.
* Late fee: the additional fee which must be calculated when the actual return date is after the estimated return date
Note: Apartment and Premium Suite have different formulae to calculate rental fee and late fee, which will be shown further down
###### Apartment
As mentioned above, FlexiRent has two types of properties for short-term rental. The first type is Apartment, which has the following characteristics:
* Each Apartment can have 1, 2 or 3 bedrooms
* Each Apartment can be rented for:
* a minimum of 2 days if the rental day is between Sunday and Thursday inclusively
* or a minimum of 3 days if the rental day is Friday or Saturday
* and a maximum of 28 days
* Apartment type has the following rental rates:
* $143 per day for a 1-bedroom apartment
* $210 per day for a 2-bedroom apartment
* $319 per day for a 3-bedroom apartment
* If an Apartment is returned earlier than the estimated return date, there is no additional fee applied and the rental fee is calculated based on the rent date and the date the Apartment is returned (actual return date)
* About late fee:
* If an Apartment is returned later than the estimated return date, then the rental rate of each late day is 115% of the normal daily rate for that Apartment type. For example, a 1-bedroom Apartment has a daily rate of $143 as shown above. Therefore the rental rate of each late day is 115% of 143 = 115/100 * 143 = $164.45
* An Apartment has no fixed maintenance schedule. FlexiRent can perform maintenance on an Apartment at any time that there is no customer renting the Apartment
###### Premium Suite
The second type of rental property FlexiRent offers for short-term rent is called Premium Suite. It is even more spacious, with an excellent view of Melbourne CBD. Each Premium Suite has the following characteristics:
* Each Premium Suite always has 3 bedrooms
* Each Premium Suite can be rented for a minimum of 1 day
* The rental rate of a Premium Suite is $554 per day
* About late fee: if an Apartment is returned after the estimated return date, then the late fee is calculated at $662 per day
* Each Premium Suite has a strict maintenance schedule because FlexiRent wants all their suites to be in the best possible conditions. Therefore they specify the following requirements:
* All Premium Suites must have a maintenance interval of 10 days.
* Each Premium Suite must keep its last maintenance date. Maintenance operations for a suite must be done no more than 10 days (as specified by the maintenance interval above) after its last maintenance date.
* Customers will not be allowed to rent a suite for a time period which exceeds the date on which maintenance operation must be done.
Example: a Premium Suite is available and last underwent maintenance on 15/07/2018. Maintenance must be done for that suite no later than 25/07/2018. Therefore, if a customer wants to rent that suite on 21/07/2018 for 5 days, the FlexiRent system will reject that request.
##### Implementation Requirements
General Implementation Requirements
* Although you are not
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
基于JavaFx的公寓租赁系统 (120个子文件)
MainController.class 14KB
RentalPropertyDao.class 11KB
RentalPropertyDetailController.class 9KB
RentalRecordDao.class 9KB
BookRentalPropertyItemController.class 8KB
PremiumSuiteDao.class 6KB
RentalRecord.class 5KB
PropertyItemController.class 5KB
ApartmentDao.class 4KB
PremiumSuite.class 4KB
DateTime.class 4KB
Apartment.class 4KB
MainController$1.class 3KB
MainController$4.class 3KB
MainController$3.class 3KB
MainController$2.class 3KB
BookRentalPropertyItemController$4.class 2KB
RentalProperty.class 2KB
RentalRecordDaoTest.class 2KB
Main.class 2KB
PremiumSuiteDaoTest.class 2KB
BookRentalPropertyItemController$7.class 2KB
BookRentalPropertyItemController$1$1.class 1KB
BookRentalPropertyItemController$5.class 1KB
BookRentalPropertyItemController$6.class 1KB
BookRentalPropertyItemController$1.class 1KB
RentalPropertyDaoTest.class 1KB
BookRentalPropertyItemController$3.class 1KB
RentalPropertyDetailController$3.class 1KB
JDBCUtil.class 1KB
RentalPropertyDetailController$4.class 1KB
ApartmentDaoTest.class 1KB
RentException.class 1KB
BookRentalPropertyItemController$2.class 1KB
RentalPropertyDetailController$1.class 1KB
RentalPropertyDetailController$2.class 1KB
MainController$7.class 1KB
PropertyItemController$2.class 1KB
PropertyItemController$1.class 1KB
MainController$5.class 976B
MainController$6.class 976B
CompleteMaintenanceException.class 553B
PerformMaintenanceException.class 547B
TestController.class 527B
PropertyStatus.class 514B
InvalidIdException.class 378B
ReturnException.class 369B
PerDayFee$ApartmentPerDayFee.class 356B
PerDayFee.class 299B
PerDayFee$PermiumSuitePerDayFee.class 283B
PropertyType.class 251B
PropertyStatus$PremiumSuiteStatus.class 232B
PropertyStatus$ApartmentStatus.class 226B
.classpath 375B
application.css 101B
application.css 101B
database.db 44KB
backup.db 36KB
build.fxbuild 308B
RentalPropertyDetail.fxml 6KB
RentalPropertyDetail.fxml 6KB
BookRentalPropertyItem.fxml 6KB
BookRentalPropertyItem.fxml 6KB
RentalPropertyItem.fxml 3KB
RentalPropertyItem.fxml 3KB
MainWindow.fxml 3KB
MainWindow.fxml 3KB
sqlite-jdbc-3.23.1.jar 6.42MB
MainController.java 18KB
RentalPropertyDao.java 15KB
RentalPropertyDetailController.java 9KB
BookRentalPropertyItemController.java 8KB
RentalRecordDao.java 8KB
RentalRecord.java 5KB
PremiumSuiteDao.java 4KB
PropertyItemController.java 4KB
PremiumSuite.java 4KB
DateTime.java 3KB
Apartment.java 3KB
ApartmentDao.java 2KB
RentalProperty.java 2KB
RentalRecordDaoTest.java 1KB
Main.java 1KB
PremiumSuiteDaoTest.java 864B
RentalPropertyDaoTest.java 816B
JDBCUtil.java 667B
ApartmentDaoTest.java 572B
RentException.java 546B
PropertyStatus.java 405B
PerDayFee.java 356B
CompleteMaintenanceException.java 329B
PerformMaintenanceException.java 307B
TestController.java 269B
InvalidIdException.java 176B
PropertyType.java 175B
ReturnException.java 173B
A_704BM.jpg 782KB
A_701BM.jpg 327KB
S_637WS.jpg 284KB
A_702BM.jpg 240KB
共 120 条
- 1
- 2
资源评论
偏安zzcoder
- 粉丝: 303
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功