Introduction

Sunny Isle is a small but famous hotel in the east region of Lukewarm Kingdom. People from all over the world visit this place for a nice and comfortable holiday. Due to such popularity, the owner of the hotel decided to expand his hotel and adopt a new hotel management system (HMS) to ease the management process. You are the only one chosen to design and implement this HMS because the manager is not willing to pay more than one person. Apart from that, if you copy any code from others or let someone else develop this HMS, the manager will be disappointed and immediately report this to me. Plagiarism leads to a zero mark for this coursework.

The manager asked you to build a website that provides the following basic functionalities:

1. Allow guests to book rooms or cancel room bookings.

2. Allow hotel staffs to check the status of rooms, including current and future bookings.

You will need to apply all the knowledge that you acquired throughout the DBI course. The deadline is 4 pm on Wednesday, the 15th of May. Late submission will result in 3 marks loss per workday and you cannot submit after 4 pm on Monday, the 20th of May.

This assessment contributes 25% towards the overall module grade. Your submission will be marked on the school’s cslinux server. Subsequently, your code must work on the PHP and MySQL installations on cslinux. “It works on my machine” is not a valid argument when questioning your grade for this assessment. You will also need to include a clear reference document of your website, describing all functionalities.

Core Functionality

Below is the detailed description of the minimum functionality expected in the HMS. You must use this specification to develop the functionality of the system. You may apply your own judgement to any detail that is not precisely specified below.

The website must allow a guest to book a room or cancel a booked room. A registered guest will have a username, guest’s real name, passport ID, telephone number and email address. There is no current requirement for users to be able to update their details, but you may add this functionality if you wish. To log in, a guest is required to input his username and password correctly. Your website must also allow new users to be registered.

 

Large double bed

 

Room X01

Large double bed

 

Room X02

Large single bed

 

Room X03

Large single bed

 

Room X04

Small single bed

 

Room X05

 

Stairs & Lobby

 

VIP Room

 

Room X13

Small single bed

 

Room X06

Small single bed

 

Room X07

 

 

Large double bed

 

Room X12

Large double bed

 

Room X11

Large single bed

 

Room X10

Large single bed

 

Room X09

Small single bed

 

Room X08

 

Rooms in the Sunny Isle Hotel have four different types:

1. Large room with double beds.

2. Large room with a large single bed.

3. Small room with a single bed.

4. VIP room.

The plan view of the floors of the hotel is shown above. The room number starts from the room in the top-left and increases clock-wise. For simplicity, all floors of this hotel share the same plan view. The “X” in “Room X01” refers to the floor number. The hotel has 10 floors in total. I used a table to represent this plan view, but you can use any other methods to represent it in HMS.

To book a room, a guest needs to specify the check-in date, check-out date as well as the type of the room. After this, he will be presented with a page that allows him to choose the specific room to stay in. Note that choosing the room number is not a required step for guests. A guest can book multiple rooms for himself and his friends,

Staffs can view the booking status of all rooms inside the Sunny Isle. In HMS, you need to clearly indicate the status of a room for guests and staffs. That is, whether a room is booked, occupied or empty. The staff should be able to see all booked dates of a specific room. For privacy issues, guests only know whether a specific room is available during their intended stay period.



CW2 Deliverables (Add 22-Apr-2019)

Your original code should be submitted to moodle. Automatically generated JavaScript or PHP code is NOT considered to be original.

In your reference document, provide the following information:

1. What external libraries are used?

2. A brief walk through of your HMS.

3. Mandatory: Part of the requirements has strikethrough effect, which means you no longer need to implement these functionalities. However, in the reference document, state how would you design your database if you were given the chance to implement them. This includes:

a. Your Entity-Relationship Diagram,

b. Your SQL “create table” statements, they must be valid ones.

c. A brief discussion on why/how your design will work.

The format of CW2 Submission on moodle:

Everything should be packed in a zip file. The file name of the zip file should follow this format: YourID_givenName_familyName.zip

For example: 123456_Jianjun_CHEN.zip

In the root folder of the zip file, you need to include:

1. A folder called “src”, storing all your original code. Your SQL scripts used to create your tables should also be stored in this folder.

2. A folder called “published”, storing the generated code. If you code everything yourself, you don’t need to create this folder.

3. A document called “Reference.docx” or “Reference.pdf”, which is your reference document.

Failing to follow this requirement will lead to mark deduction (-1 of 25).

Technological Requirements

The website and its information must be written using the technologies presented during the course of this lecture.

· MySQL - Should be used to store the information used in this system (Users, Matches and any other data required to run your implemented MMS).

· PHP - Should be used to authenticate users and manage the data being used in the system.

· HTML - Should be used to specify the structure of the interface (the website) and its data that users interact with.

· CSS - Should be used to inform the styling and aesthetic appearance of the MMS.

· JavaScript - Should be used for client-side validation and dynamic updates of the website (if necessary) e.g. AJAX.

Third party libraries can be used but must be fully open source whose license allows for use in a commercial/enterprise setting. You must detail any third-party libraries used in the reference document (detailed below).

Your system must be deployed and operational on the school’s cslinux server. You may not use external, third party hosting providers.

You should test your final website on a variety of different browsers but should ensure it displays well on the latest version of Google Chrome or Firefox. There is no requirement for this coursework to render well on a mobile device, only a desktop environment. Your HMS should function and appear as desired on the university's lab machines. 

Your system will be tested in the latest version of Google Chrome and Firefox on a monitor with a resolution greater than (or equal to) 1366x768.


Notes

Here are some general notes/warnings regarding the coursework. (Note - this might get updated during the coursework period as new questions/observations come in.)

● Be careful with PHP versions, cs-linux runs a particularly old (PHP 5.3.3) version of PHP. Ensure that any language features or libraries you use are compatible with the installed version of PHP. No updates or software installation will be performed. The reasons for this were explained in lecture - this is not something we are able to control.

● Sometimes debugging PHP can be problematic since, by default, it does not provide us with error messages or run-time errors. To enable these errors, try adding the following 2 lines to the top of your PHP script:

 

error_reporting(E_ALL);

ini_set('display_errors', 1);

 

● For MySQL, build tables within the database you have been using during labs. Be careful with software versions again - but this affects MySQL a lot less than PHP (see above point).

● Test, test, test! Getting a system like this to work correctly and as expected requires a significant amount of testing, be it automated or manual.

● Validation. Remember what you were taught in class, validate both on the client and server side. Security and data integrity is a key aspect of web based systems. Ensure that your application correctly handles any input data from users.

 

You may use Visual Studio Code to help with debugging PHP or find general syntax errors. The debugger plugin is available in the VS Code marketplace:

https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug 

 

IMPORTANT: Resource Licenses

It is important that you use images legally! You can search for images licensed under creative commons. To do so, you need to filter the image search results using creative commons license.

 

IMPORTANT: Library and Template (Updated on 22 April)

Using library is permitted. But using templates on GitHub or other places is considered to be plagiarism! You will get ZERO mark if I notice that.