четвер, 7 листопада 2013 р.

Комплексне домашнє завдання

У якості сценарію проекту пропонується візуально реалізувати відношення «семінар» <-> «лектор» у бізнес аплікації з 3 рівневою архітектурою. Принципи, що лежать в основі їх взаємозв’язку:
Кожен лектор може вести один чи декілька семінарів.
Кожен семінар може вестись декількома лекторами.



Рівень клієнта
Клієнт являє собою Windows Forms аплікацію, що складається з:
- Меню
- Деревовидний СписокСемінарів.
- Інформація про лекторів конкретно вибраного семінару (СписокЛекторів).
- Інформація про конкретно вибраного лектора (ІнформаціїПроЛектора).


Передбачити команди: Add, Edit, Delete для роботи з інформацією про лекторів, Exit та About. Розташування команд та їх візуальне представлення залишається на Ваш розгляд.

Структури даних
Семінар – містить ім’я та список лекторів які його ведуть.
Лектор – містить ім’я, стать, вік, емейл адресу, номер телефону, та список семінарів які він веде.

Рівень бази даних
Структура БД – повністю на ваш вибір.
Використовувати MS SQL Server.
Варто пам’ятати, що один лектор може брати участь у багатьох семінарах і семінар може вестися декількома лекторами.

Рівень сервера
Аплікація-клієнт не повинна залежати від конкретної реалізації сервера. 
Сервер повинен забезпечувати одночасну роботу багатьох клієнтів з одною БД.
Сервер повинен бути побудований на основі WebServices (asmx) та надавати API для роботи з семінарами\лекторами. (тобто клієнтська програма не звертається до бази даних на пряму).

(Клієнт) <-> (Сервер) <-> (База данних)

СписокСемінарів
Кореневий елемент СпискуСемінарів — заголовок модуля, під яким відображаються назви семінарів. При зміні виділеного елемента у СпискуСемінарів змінюється інформація, що відображається у СпискуЛекторів.

СписокЛекторів
У СпискуЛекторів відображається інформація про лекторів. При виборі у СпискуСемінарів семінару, виводиться список лекторів, що ведуть даний семінар. При обраному кореневому елементі дерева відображається список усіх лекторів.
Функції у СпискуЛекторів:
1. При виборі лектора у СпискуЛекторів повна інформація про нього відображається у ІнформаціїПроЛектора.
2. Робота із записами ведеться як за допомогою контекстного меню, так і за допомогою клавіатури.
3. За допомогою Drag&Drop можна перетягувати елементи із СпискуЛекторів у СписокСемінарів. Тим самим створювати асоціації між семінаром і лектором, або групою лекторів.
4. При виклику команди Add, якщо у списку відображаються лектори для конкретного семінару, крім створення лектора створювати і асоціацію із конкретним семінаром.
5. При виклику команди Delete на певній стрічці у СпискуЛекторів можна:
а. Якщо у списку відображаються усі лектори — видаляти інформацію про лектора.
б. Якщо у списку відображаються лектори для конкретного семінару — видаляти асоціації лектора із семінаром.

ІнформаціїПроЛекторв
UserControl який містить детальну інформацію про лектора.

Форма для редагування даних 
Ця форма може використовуватися як для редагування даних, так і для вводу нових „лекторів”.
Форма повинна відображати інформацію про лектора та список семінарів, у яких лектор, що редагується, бере участь. На цій сторінці повинна бути передбачена можливість додавати та видаляти асоціації між лектором та семінаром. По суті дублюється „навпаки” логіка асоціацій лекторів та семінарів між СпискомЛекторів та СпискомСемінарів. У діалозі повинна бути передбачена можливість збереження даних або виходу без збереження із перевіркою на наявність модифікацій з боку користувача. 
Дизайн усіх елементів форми складається повністю на Ваш розсуд.

Технічні зауваження
1. До задачі не входить створення та видалення семінарів.
2. Ви маєте повну свободу що до створення GUI (окрім обов’язкового використання дерева на головному вікні) , яка на вашу думку буде найкраще підходити для цієї програми.

3 коментарі:

  1. "За допомогою Drag&Drop можна перетягувати елементи із СпискуЛекторів у СписокСемінарів. Тим самим створювати асоціації між семінаром і лектором, або групою лекторів."
    Мається на увазі, що треба реалізувати можливість виділення одразу кількох лекторів в списку і Drag&Drop створить звязок між ними всіма і якимось семінаром ?

    ВідповістиВидалити
    Відповіді
    1. Питання знімається. Так - очевидна відповідь на нього.

      Видалити