Assignment Brief: Implement a system according to the following description The University Sports Centre (USC) needs software for managing the bookings of group exercise classes made by the students. The centre offers different group exercise classes on both Saturday and Sunday. The classes could be Yoga, Zumba, Aquacise, Box Fit, Body Blitz, etc. Each class can accommodate 4 students at most. For either day (Saturday or Sunday), there are 3 classes per day: 1 in the morning, 1 in the afternoon, 1 in the evening. The price of each class is different. The class price for the same exercise will remain the same even if they run at a different time. A student who wants to book a class needs to first check the timetable and then select a class on a day. A student can check the timetable by two ways: one is by specifying the date and the other is by specifying the exercise name. Students are allowed to change a booking, provided there are still spaces available for the newly selected class. A student can book as many classes as they want so long as there is no time conflict. After each group exercise class, students are able to write a review of the class they have attended and provide a numerical rating of the class ranging from 1 to 5 (1: Very dissatisfied, 2: Dissatisfied, 3: Ok, 4: Satisfied, 5: Very Satisfied). The rating information will be recorded in the system. After four weeks (four weekends), the software system must print: • a report containing the number of students per group exercise class on each day, along with the average rating;a report containing the group exercise which has generated the highest income, counting all the same exercise classes together. In your final deliverable, provide data covering at least 4 different types of group exercise classes, 10 students, and 20 reviews (with rating), which can then be displayed in the output reports. You need to design at least 8 weekends of timetable (i.e., 48 classes) by yourself. Note: you do not need any kind of external database for this program. The final program should be self-contained. The reports can be printed to System.out, or output to a suitable GUI interface. You also do not need any kind of security protocol. All the students may be assumed to be preregistered. Your tasks:
1. Create a class diagram, highlighting the main Java classes in the system and their associations. Include the attributes and key methods.
2. Implement the system, using Junit tests to confirm the functionality.
3. Write a short report (ideally no more than 8 pages) explaining your program. Discuss:
a) Any assumptions made about the system, in addition to the above description.
b) The overall structure and design of your program.
c) Any design patterns/design principles used.
d) The JUnit tests.
e) Any refactoring used during the development of the system. Deliverables:
A. Develop your code using bitbucket. Send your username to Hui Cheng and add “huicheng” to your project.
B. Submit to StudyNet: 1. Your report with the UML class diagrams and snapshots of your version control commit messages in a single PDF document. 2. An executable jar file, demonstrating your final system. The system should have some data preloaded (as described above). 3. A zip-file containing the source code of your project. Submission Requirements: Students should submit on StudyNet the following three items: 1. a single pdf document containing the practical report, UML class diagrams, snapshots of version control commit messages, 2. a zipped folder containing the final source code, and 3. an executable jar file for running the final system.