You are asked to write a venue booking application for a small events company
to facilitate the management of the bookings made for venues that are affiliated
to them. There are 2 types of users of the system, namely, admin and user.
Admin can upload all the details of new venues that are managed by the
company to the database. Include details such as the name, location, type (hotel
restaurant, conference centre, sports clubhouse, community hall, etc), cost,
maximum number of guests, availability, date, etc. Admin can also add new
users to the database.
A user can capture details of a customer who has decided to book a venue, and
upload to the database. The details of the booking transaction must also be
captured in the database.
Design a single-client/server system which maintains a database for the
The user or admin requests database information and operations via the client
application. The client sends the database request to the server which executes
the request and returns the results of the request back to the client. Only the
server interacts with the database.
Use Apache Netbeans to write your Java code, and use a Derby database to
You may NOT use drag-and-drop for your GUI design.
Write a GUI application which presents the user with options to manipulate the
database. Users can login as admin or user.
The minimum functionality of the admin client is:
1. Add details of a new venue to be managed to the database.
2. Add details of a new user to the database.
3. Venue and user details can be updated.
4. A user cannot be deleted from the database, but, should a user leave the
company the database record should be updated to reflect that the user is
inactive. Use a Boolean field for this.
The minimum functionality of the user client is:
1. Add details of a new customer to the database.
2. Record the transaction in the database when a customer books a venue.
The requested date for the booking must also be captured. Minimize
typing by selecting from a list of venues of a selected type that are
available for a selected date. Similarly, select a customer from a sorted list
rather than typing.
3. List all the bookings in the database sorted by customer surname
4. Display an invoice for the booking made by a selected customer.
5. Allow the user to select a date, and list all available venues for that date.
Reduce chances of typing errors by making intelligent use of GUI items that
require simple mouse-clicking to make selections.
Receive requests from the client to do transactions on the database. Results of
these database requests are sent back to the client.
1. Add a new venue: execute the SQL command(s)
2. Add a new user: execute the SQL command(s)
3. Update venue and user: execute the SQL command(s)
4. Add a new customer: execute the SQL command(s)
5. Booking transaction
a) Execute SQL to select all customers and send details to client.
b) Execute SQL to select all venues of a specific type that are available
on a selected date and send details to client.
c) Receive the selected customer and venue from the client.
d) The database record of the venues must be updated to reflect the
change in availability for the selected date. Execute SQL to update the
database venue table.
e) Execute SQL to add a transaction record into the booking table.
f) Send a message to client indicating new booking is completed
6. List all bookings, sorted by customer surname: Execute SQL to select all
booking data and send to client
7. List all available venues for a selected date: Execute SQL to select
appropriate venue data and send to client
8. Booking invoice: Execute SQL to select appropriate data and send to client