Calendar
Проект 15: Личен календар

Може да видите документацията на кода, генерирана от DoxyGen тук

Автор: Веселин Иванов

Описанире на проекта

Да се напише програма, реализираща информационна система, която поддържа личен календар, като го записва във файл.

След като приложението отвори даден файл, то трябва да може да извършва посочените по-долу операции, в допълнение на общите операции (open, close, save, save as, help и exit):

book <date> <starttime> <endtime> <name> <note>

Запазва час за среща с име <name> и коментар <note> на дата <date> с начален час <starttime> и краен час <endtime>.

unbook <date> <starttime> <endtime>

Отменя час за среща на дата <date> с начален час <starttime> и краен час <endtime>.

agenda <date>

Извежда хронологичен списък с всички ангажименти за деня <date>.

change <date> <starttime> <option> <newvalue>

<option> е едно от date, starttime, enddate, name, note. Задава нова стойност <newvalue> на събитието на дата <date> с начален час <starttime>, като при промяна на дата и час се прави проверка дали са коректни и свободни.

find <string>

Търсене на среща: извеждат се данните за всички срещи, в чието име или бележка се съдържа низът <string>.

holiday <date>

Датата <date> се отбелязва като неработна.

busydays <from> <to>

Извеждане на статистика за натовареност: по дадени начална дата <from> и крайна дата <to> се извежда списък с дните от седмицата, подредени по критерия “брой заети часове”.

findslot <fromdate> <hours>

Намиране на свободно място за среща: по дадена дата <fromdate> и желана продължителност на срещата <hours> търси дата, на която е възможно да се запази такава среща, но само в работни дни и не преди 8 часа или след 17 часа.

findslotwith <fromdate> <hours> <calendar>

Намиране на свободно място за среща, синхронизирана с даден календар: по дадена дата <fromdate> и желана продължителност на срещата <hours> търси дата, на която е възможно да се запази такава среща в текущия календар и в календара, записан във файл <calendar>, но само в работни дни и не преди 8 часа или след 17 часа.

merge <calendar>

Прехвърля всички събития от календара, записан във файл <calendar>, в текущия календар. Прехвърлянето да става в диалогов режим така, че ако има конфликт на събития потребителят да има възможност да избере кое събитие да остане и кое да се премести в друг ден и час.

Пример:

потребителят се е записал на спорт и е получил файл, който съдържа календар с всички тренировки и спортни събития. Той иска да прехвърли всички спортни събития в календара си.

Бонуси:

командите findslotwith и merge да поддържат повече от един календар.

Външни източници