Курсовий проект пояснювальна записка система дистанційного навчання програмуванню. Підсистема слухача. Студент гр. Пзас-06 2



Сторінка3/4
Дата конвертації13.03.2016
Розмір0.82 Mb.
1   2   3   4

1) користувач переходить до сторінки зі списком завдань до лекції;

2) користувач обирає одне з завдань;

3) система відображає інформацію о завданні;

4) користувач викликає функцію встановлення оцінки;

5) система відображає сторінку для встановлення оцінки;

6) користувач встановлює бажану оцінку та викликає функцію збереження;

7) система зберігає необхідну інформацію.

Альтернативні напрямки виконання: відсутні.


2.2 Архітектура програмного забезпечення
Розроблюваний програмний продукт є веб-застосуванням, доступ користувачів до якого виконується за допомогою веб-браузеру. Веб-застосування також використовує базу даних.

Розроблюваний програмний продукт складається з трьох проектів –ISL, |ISLData, ISLTests.

Головним проектом у системі був проект ISL.Він містить усю бізнес-логіку веб-серверу та відповідає за відображення графічного інтерфейсу користувача. Його побудова відповідає MVC шаблону (рис. 2.2).


Контролер

Вид

Модель
http://blogs.microsoft.co.il/blogs/noam/mvc8x6_209dec49.png

Рисунок 2.2 – MVC шаблон


Модель-вид-контролер (MVC)  — архітектурний шаблон, який використовується під час проектування та розробки програмного забезпечення [11].

Цей шаблон поділяє систему на три частини: модель даних, вигляд даних та керування. Застосовується для відокремлення даних (модель) від інтерфейсу користувача (вигляду) так, щоб зміни інтерфейсу користувача мінімально впливали на роботу з даними, а зміни в моделі даних могли здійснюватися без змін інтерфейсу користувача.

Мета шаблону — гнучкий дизайн програмного забезпечення, який повинен полегшувати подальші зміни чи розширення програм, а також надавати можливість повторного використання окремих компонент програми. Крім того використання цього шаблону у великих системах призводить до певної впорядкованості їх структури і робить їх зрозумілішими завдяки зменшенню складності.

Архітектурний шаблон Модель-Вид-Контролер (MVC) поділяє програму на три частини. У тріаді до обов'язків компоненту Модель (Model) входить зберігання даних і забезпечення інтерфейсу до них. Вигляд (View) відповідальний за представлення цих даних користувачеві. Контролер (Controller) керує компонентами, отримує сигнали у вигляді реакції на дії користувача, і повідомляє про зміни компоненту Модель. Така внутрішня структура в цілому поділяє систему на самостійні частини і розподіляє відповідальність між різними компонентами.

MVC поділяє цю частину системи на три самостійні частини: введення даних, компонент обробки даних і виведення інформації. Модель, як вже було відмічено, інкапсулює ядро даних і основний функціонал з їх обробки. Також компонент модель не залежить від процесу введення або виведення даних. Компонент виводу Вигляд може мати декілька взаємопов'язаних областей, наприклад, різні таблиці і поля форм, в яких відображається інформація. У функції Контролера входить моніторинг за подіями, що виникають в результаті дій користувача (зміна положення курсора миші, натиснення кнопки або введення даних в текстове поле).

Зареєстровані події транслюються в різні запити, що спрямовуються компонентам моделі або об'єктам, відповідальним за відображення даних. Відокремлення моделі від вигляду даних дозволяє незалежно використовувати різні компоненти для відображення інформації. Таким чином, якщо користувач через Контролер внесе зміни до моделі даних, то інформація, подана одним або декількома візуальними компонентами, буде автоматично відкоригована відповідно до змін, що відбулися.

В проект ISL знаходяться класи, які представляють відносяться до шару відображення та шару бізнес-логіки. Шар відображення відділений від бізнес-логіки за допомогою засобів шаблону MVC.

Проект ISLData має класи, що відповідають за доступу до даних. До цих класів відносяться класи сутностей та клас взаємодії з базою даних. Таким чином вдалося відділити інтерфейс від іншої частини проекту.

Для розробки шару доступу до даних використовувався підхід Test Driven Development. Докладніше цей принцип проаналізовано у [12].

Тому у рішенні додано ще один проект – ISLTests. Він містить класи юніт-тестів, що перевіряють вірність використання класів ISLData.


2.3 Класова структура
На рисунку 2.3 зображена класова структура підсистеми статистики, що знаходиться у проекті ISL. Необхідно зазначити, що у даному розділі аналізується лише класова структура однієї підсистеми. Це зроблено через велику кількість підсистем у курсовому проекті.

Рисунок 2.3 – Класова структура підсистеми статистики


Класи, що входять до цієї підсистеми, знаходяться у різних просторах імен. Так, клас TaskStatisticsController знаходиться у просторі імен ISL.Controllers, а класи StudentStatisticsModel, StudentStatisticItem, GroupJournal, GroupJournalItem, GroupStatistics, TaskStatisticsItem, SelectListProvider – ISL.Models. TaskStatisticsModels. Така схема розташування класів однієї підсистеми є характерною для веб-застосування, що використовує технологію MVC. Далі буде розібрано, який сенс кожного класу цієї підсистеми.
2.3.1 Клас TaskStatisticsController
Даний клас знаходиться у просторі імен ISL.Controllers. Цей клас є нащадком стандартного класу .NET Controller. Даний клас надає методи, що визиваються при надходженні на сервер HTTP запитів формату URL/TaskStatistics/… Завдяки цьому реалізується надсилання користувачу усіх варіантів статистичних даних.

Даний клас містить поле private ISLData.LinqData.ISLDataContext context. Це поле містить об’єкт за допомогою якого можна отримати доступ до інформації бази даних. Поле задається при створенні об’єкту даного класу за допомогою конструктору з параметром, що приймає об’єкт ISLDataContext.

Даний клас має методи:

а) public ActionResult Index() – цей метод викликається коли на веб-сервер надходить HTTP запит формату URL/TaskStatistics. У цьому методі виконується переадресація запиту користувача на сторінку URL/TaskStatistics/GroupJournal;

б) public ActionResult TaskResults() – цей метод викликається коли на веб-сервер надходить HTTP запит типу GET, що має формат URL/TaskStatistics/TaskResults (статистика за конкретним завданням). Цей метод виконує підготовку даних, необхідних для побудови aspx сторінки TaskResults, а саме інформацію по трьох випадаючих списках (усі викладачі, усі лекції вибраного викладача, усі завдання за вибраною лекцією), що знаходяться на цій сторінці. Після підготовки даних метод передає ці дані на сторінку TaskResults;

в) public ActionResult FillTasks(Guid postId) – цей метод викликається коли на веб-сервер надходить AJAX запит зі сторінки URL/TaskStatistics/TaskResults. Метод потрібен для організації каскадних випадаючих списків (коли змінюється вибрана лекція у одному списку, змінюється список задач для вибраної лекції у другому списку). Даний метод приймає параметр postId. Цей параметр – унікальний ідентифікатор лекції у базі даних, за яким необхідно вибрати інформацію по завданнях. Метод повертає об’єкт типу Json, у якому знаходяться дані для випадаючого списку;

г) public ActionResult FillPosts(Guid userId) – цей метод викликається коли на веб-сервер надходить AJAX запит зі сторінки URL/TaskStatistics/TaskResults. Метод потрібен для організації каскадних випадаючих списків (коли змінюється вибраний викладач у одному списку, змінюється список лекцій для даного викладача у другому списку). Даний метод приймає параметр userId. Цей параметр – унікальний ідентифікатор викладача у базі даних, за яким необхідно вибрати інформацію по лекціям. Метод повертає об’єкт типу Json, у якому знаходяться дані для випадаючого списку;

ґ) public ActionResult TaskResults(Guid? selectedTeacherId, Guid? selectedPostId, Guid? selectedTaskId) – даний метод викликається коли на веб-сервер надходить HTTP запит типу POST, що викликаний повертанням форми на сторінці URL/TaskStatistics/ TaskResults. Даний метод приймає параметри, що характеризують вибране на сторінці завдання – ідентифікатор вчителя, який опублікував завдання, ідентифікатор лекції, у якій знаходиться завдання, ідентифікатор завдання. Даний метод виконує побудову інформаційної моделі статистики за вибраним завданням. Після цього метод повертає сторінку URL/TaskStatistics/TaskResults;

д) public ActionResult GroupJournal() – цей метод викликається коли на веб-сервер надходить HTTP запит типу GET, що має формат URL/TaskStatistics/ GroupJournal. Ця сторінка відповідає сторінці статистики успішності групи за вибраним викладачем. Цей метод виконує підготовку даних, необхідних для побудови aspx сторінки TaskResults, а саме інформацію по двох випадаючих списках (усі викладачі, усі навчальні групи), що знаходяться на цій сторінці. Після підготовки даних метод передає ці дані на сторінку GroupJournal;

е) public ActionResult GroupJournal(Guid? selectedStudentGroupId, Guid? selectedTeacherId) – даний метод викликається коли на веб-сервер надходить HTTP запит типу POST, що викликаний повертанням форми на сторінці URL/TaskStatistics/ GroupJournal. Даний метод приймає параметри ідентифікаторів викладача та навчальної групи, що були вибрані на сторінці. Метод формує відповідну інформаційну модель та повертає сторінку GroupJournal;

є) public ActionResult StudentResults()– цей метод викликається коли на веб-сервер надходить HTTP запит типу GET, що має вигляд URL/TaskStatistics/ StudentResults. Ця сторінка відповідає сторінці статистики успішності студента за всіма курсами. Цей метод виконує підготовку даних, необхідних для побудови aspx сторінки StudentResults, а саме інформацію по двох випадаючих списках (усі навчальні групи, усі студенти навчальної групи, що вибрана у попередньому списку), що знаходяться на цій сторінці. Після підготовки даних метод передає ці дані на сторінкуStudentResults;

ж) public ActionResult StudentResults(Guid? selectedGroupId, Guid? selectedStudentId) – даний метод викликається коли на веб-сервер надходить HTTP запит типу POST, що викликаний повертанням форми на сторінці URL/TaskStatistics/ StudentResults. Даний метод приймає параметри, що характеризують студента – ідентифікатор навчальної групи, у якій студент навчається та ідентифікатор студента. Ці параметри було вибрано на сторінці. Метод формує відповідну інформаційну модель та повертає сторінку StudentResults;

з) public ActionResult FillStudents(Guid groupId) – цей метод викликається коли на веб-сервер надходить AJAX запит зі сторінки URL/TaskStatistics/ StudentResults. Метод потрібен для організації каскадних випадаючих списків (коли змінюється вибрана навчальна група у одному списку, змінюється список студентів для цієї групи у другому списку). Даний метод приймає параметр groupId. Цей параметр – унікальний ідентифікатор навчальної групи, за яким необхідно вибрати інформацію студентах. Метод повертає об’єкт типу Json, у якому знаходяться дані для випадаючого списку.
2.3.2 Клас StudentStatisticsModel
Даний клас знаходиться у просторі імен ISL.Models.TaskStatisticsModels. Об’єкти даного класу уявляють собою інформаційні моделі для сторінки URL/TaskStatistics/ StudentResults – сторінки статистики успішності студента за всіма викладачами. Даний клас містить поля, значення яких використовуються у цій сторінці для побудови статистичної таблиці. Даний клас має такі поля та властивості:

а) private ISLData.LinqData.ISLDataContext _context – дане поле містить об’єкт за допомогою якого можна отримати доступ до інформації бази даних;

б) public string StudentLongName { get; set; } – дана властивість містить інформацію про студента (фамілія, ім’я по батькові), для якого будується статистична таблиця;

в) public IEnumerable StatisticItems { get; set; } – дане поле містить колекцію елементів статистики студента за конкретним завданням конкретного викладача.

Даний клас містить конструктор public StudentStatisticsModel (ISLData.LinqData. ISLDataContext context, Guid userId). Даний конструктор має параметри context (об’єкт доступу до бази даних, за допомогою якого виконується вибір усіх статистичних даних) та userId (унікальний ідентифікатор студента, що використовується у базі даних для збереження інформації про конкретного студента). даний конструктор виконує ініціалізацію усіх полів та властивостей даного класу.

Також даний клас містить метод public string AverageMarkChart(). Даний метод потрібен для побудови графіку середніх оцінок студента за всіма викладачами. Метод повертає рядок, що є URL даного графіку.


2.3.3 Клас StudentStatisticsItem
Даний клас знаходиться у просторі імен ISL.Models.TaskStatisticsModels. Об’єкти даного класу уявляють собою рядок таблиці статистики, що використовується у інформаційній моделі сторінки URL/TaskStatistics/StudentResults. Фактично об’єкти даного класу містять інформацію по результату студента за конкретним завданням. Даний клас має властивості:

а) public Guid TeacherId { get; set; } – дана властивість містить у собі унікальний ідентифікатор вчителя, завдання якого було розв’язане студентом;

б) public string TeacherLongName { get; set; } – дана властивість містить у собі інформацію про вчителя (прізвище, ім.’я, по батькові), завдання якого було розв’язане студентом;

в) public string PostTitle { get; set; } – дана властивість містить у собі назву лекції, до якої відноситься завдання. розв’язане студентом;

г) public string TaskName { get; set; } – дана властивість містить у собі назву завдання, розв’язаного студентом;

ґ) public string Mark { get; set; } – дана властивість містить у собі оцінку студента за даним завданням. Оцінка зберігається у текстовому форматі. бо для випадку, коли викладач не перевірив розв’язання студента. ця властивість містить рядок «Не проверено»;

д) public DateTime Date { get; set; } – дана властивість містить у собі дату, коли студент надіслав розв’язання задачі.
2.3.4 Клас GroupJournal
Даний клас знаходиться у просторі імен ISL.Models.TaskStatisticsModels. Об’єкти даного класу уявляють собою інформаційні моделі для сторінки URL/TaskStatistics/ GroupJournal – сторінки статистики успішності студентів навчальної групи за предметом викладача. Даний клас містить поля, значення яких використовуються у цій сторінці для побудови статистичної таблиці. Даний клас має такі поля та властивості:

а) private List _tasks – дане поле містить колекцію усіх завдань, що існують по предмету викладача, для якого будується інформаційна модель;

б) private List _studentItems – дане поле містить колекцію результатів конкретних студентів за всіма завданнями по предмету викладача;

в) private string _groupName – дане поле містить назву навчальної групи, для якої будується інформаційна модель;

г) private string _teacherName – дане поле містить інформацію про викладача (прізвище, ім.’я, по батькові), для якого будується інформаційна модель.

Даний клас містить конструктор public GroupJournal (ISLData.LinqData. ISLDataContext context, Guid groupId, Guid teacherId). Даний конструктор приймає декілька параметрів. Перший – context, являє собою об’єкт доступу до бази даних. За допомогою цього об’єкту виконуються запити і заповнюються всі поля даного класу. Другий параметр – groupId – містить у собі унікальний ідентифікатор навчальної групи, за яким зберігається інформація про цю групу у базі даних. Третій параметр – teacherId – містить у собі унікальний ідентифікатор навчальної групи, за яким зберігається інформація про цю групу у базі даних. Останні два параметри задають групу та викладача. для якої будується інформаційна модель сторінки журналу.

Даний клас має методи:

а) public string AvarageMarksChart() – даний метод використовується для побудови графіку середніх оцінок всіх студентів за предметом даного викладача. Метод повертає рядок, що є URL даного графіку;

б) public string SubmitedTasksChart() – даний метод використовується для побудови графіку загальної успішності групи за предметом даного викладача. Метод повертає рядок, що є URL даного графіку.
2.3.5 GroupJournalItem
Даний клас знаходиться у просторі імен ISL.Models.TaskStatisticsModels. Об’єкти даного класу уявляють собою окремі рядки у журналі групи (об’єкт GroupJournal). Даний клас має поля та властивості:

а) private int _index – дане поле містить у собі номер рядку у загальному списку групи;

б) private string _studentLongName – дане поле необхідне для зберігання ім.’я, фамілії та по батькові студента, до якого відноситься даний об’єкт;

в) private List _taskResults; - дане поле містить у собі колекцію елементів, що уявляють собою результат студента по конкретному завданню. Результат (оцінка) зберігається у вигляді рядка, тому що для випадку, коли свикладач ще не перевірив розв’язання студента, дане поле містить знак «П». Крім того, якщо студент взагалі не відсилав своє рішення, рядок містить знак «-».

Даний клас має конструктор public GroupJournalItem(UserSelectedListItem studentItem, List tasks, int index). Цей конструктор приймає три параметри. Перший – context – являє собою об’єкт доступу до бази даних. За допомогою цього об’єкту виконуються запити і заповнюються всі поля даного класу. Другий параметр –tasks – містить у собі колекцію всіх завдань. що існують за даним предметом. Третій параметр – index – містить номер студенту за списком у журналі.
2.3.6 GroupStatistics
Даний клас знаходиться у просторі імен ISL.Models.TaskStatisticsModels. Коллекція об’єктів даного класу використовуються у якості інформаційні моделі для сторінки URL/TaskStatistics/ TaskResults– сторінки статистики за конкретним завданням. Даний клас використовується для зберігання інформацій про результати студентів окремої групи за даним завданням. Даний клас містить поля, значення яких використовуються у цій сторінці для побудови статистичної таблиці. Даний клас має такі поля та властивості:

а) public string GroupName { get; set; } – дана властивість містить у собі назву навчальної групи, статистику за студентами якої містить об’єкт;

б) public IEnumerable StatisticItems { get; set; }- дана властивість містить колекцію елементів. кожний з яких уявляє собою інформацію про результат конкретного студента по завданню;

Даний клас має статичний метод public static IEnumerable GetStatisticByGroup(ISLData.LinqData.ISLDataContext context, IEnumerable statisticItems). Даний метод використовується для групування елементів статистики по об’єктам GroupStatistics. Повернена колекція елементів використовується як інформаційна модель сторінки. Даний метод приймає параметри: context – являє собою об’єкт доступу до бази даних, та statisticsItems- вхідна не згрупована колекція елементів статистики. Метод повертає колекцію об’єктів GroupStatistics.


2.3.7 Клас TaskStatisticItem
Даний клас знаходиться у просторі імен ISL.Models.TaskStatisticsModels. Об’єкти даного класу уявляють собою окремі елементи статистики конкретного студенту по завданню. Використовується у класі GroupStatistics. Даний клас має поля та властивості:

а) public string UserName {get; set;} – дана властивість містить у собі ім’я студента, по результату котрого побудовано об’єкт;

б) public string UserSurname {get; set;} – дана властивість містить у собі фамілію студента, по результату котрого побудовано об’єкт;

в) public string UserPatronymic { get; set; } – дана властивість містить у собі по батькові студента, по результату котрого побудовано об’єкт;

г) public Guid GroupId { get; set; } – дана властивість містить у собі унікальний ідентифікатор навчальної групи. до якої відноситься студент;

ґ) public int? Mark { get; set; } – дана властивість містить у собі значення оцінки, яку отримав студент за своє розв’язання задачі. Якщо оцінка не виставлена, значення цього параметру дорівнює null;

д) public DateTime Date { get; set; } – дана властивість містить у собі дату, коли студент відправив рішення на перевірку.
2.3.8 Клас SelectListProvider
Даний клас знаходиться у просторі імен ISL.Models.TaskStatisticsModels. Даний клас є статичним і містить у собі набір методів, які використовуються при генерації даних, що необхідні для рендерінгу сторінок статистики. Дані, що генеруються, використовуються для випадаючих списків, що розміщені на сторінках статистики. Клас має методи:

а) public static SelectList GetPostsSelectList(ISLData.LinqData.ISLDataContext context, Guid? teacherId = null, Guid? selectedValue = null) – даний метод використовується для побудови інформації для випадаючого списку лекцій. Даний випадаючий список є каскадним, інформація о лекціях вибирається лише для окремого викладача. Даний метод має декілька параметрів. Перший з них – це context. Він являє собою об’єкт доступу до бази даних. Другий параметр – teacherId. Даний параметр являє собою унікальний ідентифікатор вчителя, усі лекції якого потрібно вибрати. Також метод має параметр selectedValue – значення, яке повинно бути відображатися у випадаючому списку лекцій. Це значення може не задаватися, тоді цей параметр за замовчуванням буде дорівнювати null і вибраним буде перший елемент списку. Метод повертає колекцію, що містить у собі інформацію про лекції – їх назву та унікальний ідентифікатор;

б) private static SelectList GetEmptySelectList() – даний метод використовується для побудови порожнього випадаючого списку. Метод повертає колекцію елементів, довжина якої дорівнює 0;

в) public static SelectList GetTasksSelectList(ISLData.LinqData.ISLDataContext context, Guid? postId = null, Guid? selectedValue = null) – даний метод використовується для побудови інформації для випадаючого списку завдань. Даний випадаючий список є каскадним, інформація о завданнях вибирається лише для окремої лекції. Даний метод має декілька параметрів. Перший з них – це context. Він являє собою об’єкт доступу до бази даних. Другий параметр – postId. Даний параметр являє собою унікальний ідентифікатор лекції, за якою необхідно вибрати всі завдання. Також метод має параметр selectedValue – значення, яке повинно бути відображатися у випадаючому списку завдань. Це значення може не задаватися, тоді цей параметр за замовчуванням буде дорівнювати null і вибраним буде перший елемент списку. Метод повертає колекцію, що містить у собі інформацію про завдання– їх назву та унікальний ідентифікатор;

г) public static SelectList GetTeachersSelectList(Guid? selectedValue = null) – даний метод використовується для побудови інформації для випадаючого списку вчителів. Цей випадаючий список не є каскадним, тому даний метод просто виконує вибірку усіх вчителів, що зареєстровані в системі. Метод приймає один параметр – selectedValue. значення, яке повинно бути відображатися у випадаючому списку вчителів. Це значення може не задаватися, тоді цей параметр за замовчуванням буде дорівнювати null і вибраним буде перший елемент списку. Метод повертає колекцію, що містить у собі інформацію про вчителів – їх фамілію, ім’я, по батькові та унікальний ідентифікатор;

ґ) public static SelectList GetGroupSelectList(ISLData.LinqData.ISLDataContext context, Guid? selectedValue = null) – даний метод використовується для побудови інформації для випадаючого списку навчальних груп. Цей випадаючий список не є каскадним, тому даний метод просто виконує вибірку усіх груп, що зареєстровані в системі. Метод приймає два параметри. Перший – це context. Він являє собою об’єкт доступу до бази даних. Другий параметр – selectedValue. значення, яке повинно бути відображатися у випадаючому списку груп. Це значення може не задаватися, тоді цей параметр за замовчуванням буде дорівнювати null і вибраним буде перший елемент списку. Метод повертає колекцію, що містить у собі інформацію про навчальні групи – їх назву та унікальний ідентифікатор;

д) public static SelectList GetStudentsSelectList(ISLData.LinqData.ISLDataContext context, Guid? groupId, Guid? selectedValue = null) – метод, що виконує вибірку даних про всіх студентів деякої навчальної групи. Випадаючий список студентів є каскадним. Принцип побудови методу аналогічний попереднім;

1   2   3   4


База даних захищена авторським правом ©refs.in.ua 2016
звернутися до адміністрації

    Головна сторінка