You have been approached by a dance company called Two Left Feet which acts as an agent for dance instructors. The company has a number of dance instructors on their books and people interested in dancing can book private dance lessons through Two Left Feet. The company wants to introduce an IT system to support their business.
The company owns a range of laptops which are issued to dance instructors when they go to teach a lesson as they contain music and a DJ application. The company would like to have a custom application developed which they could install on the laptops and which will support the instructors - this will be called Lesson Manager. In addition to this they also want a web application that customers can use to book lessons. Finally, the company wants a standalone application that calculates the invoices for customers.
The system will be used by three types of users:
• Company administrators
• Dance instructors
The system needs to provide the following functionality to each type of user:
• Company administrators
o Use the web application to manage dance instructors (add/edit/delete), view a list of all instructors and auto-schedule instructors for lessons
o Use the invoice calculator to calculate invoices for customers
• Dance instructors
o Use the Lesson Manager to show details of booked lessons, record details of the lesson and synchronise details with the web application
o Register an account
o Book a private lesson
The information kept about a dance instructor should include at least the following: name, gender, styles he/she can dance (e.g. Waltz, Jive, Samba), telephone number, hourly rate and availability (the days of the week when the instructor is working).
A customer needs to register an account in order to book a lesson. The system should capture at least the following details during the registration process: first name, surname, email address (also used as username), password, gender, date of birth, phone number and address.
A customer should only be able to book a lesson in the future and needs to specify the dance style he/she would like to learn and the maximum hourly rate they are prepared to pay. When a customer makes a booking, the system should record the date/time, expected duration and dance style. The customer doesn't directly choose the dance instructor, but an instructor matching the dance style and not exceeding the hourly rate is automatically assigned by the system. The system should prevent instructors from being double-booked.
Sometimes private lessons are taught in rooms or areas where there is no mobile network or Wi-Fi connection. This is why the company wants you to develop the Lesson Manager application which instructors take with them when they go to lessons and which shouldn't rely on a network connection being present. At the beginning of a day, an instructor would load all lessons for that day into the Lesson Manager, during the lessons instructors can log details for a lesson and when they return to the office the details would be synched back to the web application. The details that an instructor logs is the actual start time of the lesson, the actual duration in minutes and any notes on the progress of the dance student. The actual duration of the lesson needs to be recorded as sometimes instructors extend the lesson.
Customers are paying for their private lessons at the end of each month. The company wants you to develop a standalone application for calculating invoices. This application is run by the administrators and allows them to calculate the invoice for a particular customer for a particular month. Invoices are then sent by post to the customers. The actual payment of an invoice happens outside of the system, but it should be possible to record the status of an invoice (i.e. created, sent and paid).
There are strict requirements about the technologies and architecture to be implemented. These are detailed in the deliverables section below.
1) Database (10%): The database needs to be used for persistent storage of dance instructors, customers, bookings and invoices. For details of what information should be stored in the database, please see the description above. You can use any relational database management system you wish (e.g. SQLServer, MySQL, Oracle, Access, etc.). The database should be normalised and use primary key and foreign key constraints.
2) Web Application (10%): The web application should be implemented in ASP.NET using C#. It should allow a company administrator to manage dance instructors. It should also enable a user to register a new account, log in and make a booking. The web application should use the database outlined in requirement 1.