A program that implements an information system that maintains a personal calendar by saving it in a file. All dates should be in the ISO 8601 format and project must meet the good Object-Oriented practices. Once the application has opened a file, it must be able to perform the following operations, in addition to the general operations (open, close, save, save as, help and exit):
book
Saves an appointment time named and comment on date with start time and end time .
unbook
Cancels the meeting date on with start time and end time .
agenda
Displays a chronological list of all appointments for the day .
change
is one of date, starttime, enddate, name, note.
Sets a new value to the date event with start time , and when changing the date and time it is checked whether they are correct and free.
find
Meeting Search: Displays the data for all meetings whose name or note contains the string .
holiday
The date is marked as non-working.
busydays
Display statistics: by given start date and end date a list of the days of the week is displayed, sorted by the criterion “number of occupied hours”.
findslot
Finding a free meeting place: by a given date and the desired duration of the meeting searches for a date on which it is possible to book such a meeting, but only on working days and not before 8 am or after 5 pm.
findslotwith
Finding free space for a meeting synchronized with a calendar: by a given date and desired meeting duration searches for a date on which it is possible to save such a meeting in the current calendar and in the calendar saved in the file , but only on working days and not before 8 am or after 5 pm.
merge
Transfers all events from the calendar saved in the file to the current calendar. The transfer should be in dialog mode so that if there is a conflict of events the user has the opportunity to choose which event to stay and which to move to another day and time.
Example: the user has signed up for sports and has received a file that contains a calendar with all training and sports events. He wants to transfer all sporting events to his calendar.