Розробка системи автоматизованого мережевого розподілення навчального матеріалу

Автор работы: Пользователь скрыл имя, 14 Февраля 2013 в 21:48, дипломная работа

Описание

Метою дослідження є перевірка навичок програмування на QT, отримання розробленої системи автоматичного мережевого розподілення навчального матеріалу у комп’ютерному класі з урахуванням IP-адрес комп’ютерів й інструкції з її використання та закріплення знань, отриманих в процесі теоретичної діяльності.
Задачі дослідження наступні:
Робота над програмним продуктом та реалізацією програмного забезпечення;
Застосування знань про мережну роботу засобами QT;
Застосування знань про маніпулювання файловою системою й роботою з нею засобами QT;
Отримання нового досвіду з проектування на платформі QT;

Содержание

ВСТУП 6
РОЗДІЛ 1. АНАЛІЗ ДЖЕРЕЛ СТОСОВНО МЕТОДІВ РОЗРОБКИ 9
Вибір середи програмування 9
Технологія клієнт – сервер: взаємодія клієнта з сервером 11
Робота з мережею засобами QT 13
Використання TCP за допомогою класів QTcpSocket та QTcpServer 14
Робота з файловою системою засобами QT 16
Клас QFileSystemModel 17
Клас QDir. Перегляд вмісту директорії за допомогою QDir 17
Клас QFile 19
Клас QFileInfo 20
Робота з потоками засобами QT 21
Клас QThread 22
Класи QRunnable та QThreadPool 24
Клас QtConcurrent 24
РОЗДІЛ 2. ОСНОВНІ ПРОБЛЕМИ РОЗРОБКИ ТА ЇХ РІШЕННЯ 26
Мета розробки 26
Основні задачі та проблеми 26
Крос-платформність 27
Робота з мережею: захист від збоїв 28
Власний протокол взаємодії клієнта з сервером 29
Маніпулювання файловою системою 30
Алгоритм роботи програми 32
Алгоритм роботи сервера 32
Алгоритм роботи клієнта 34
Алгоритм роботи графічного клієнта 35
РОЗДІЛ 3.РЕАЛІЗАЦІЯ СИСТЕМИ АВТОМАТИЧНОГО МЕРЕЖЕВОГО РОЗПОДІЛЕННЯ НАВЧАЛЬНОГО МАТЕРІАЛУ У КОМПЬЮТЕРНОМУ КЛАСІ 36
Програмна реалізація сервера 38
Програмна реалізація клієнта 40
Програмна реалізація графічного клієнта 42
Інструкція з використання програми 44
РОЗДІЛ 4. ОХОРОНА ПРАЦІ 48
Основні поняття охорони праці 48
Загальні положення 50
Вимоги до виробничого персоналу 51
Вимоги безпеки під час роботи 53
Вимоги безпеки в аварійних ситуаціях 54
Інструкція із заходів пожежної безпеки є службових кабінетах і лабораторіях 55
Загальні положення 55
Співробітники зобов'язані 55
Забороняється 55
Дії при пожежі 55
Обов'язки особи, відповідального за протипожежний стан приміщення 56
Відповідальність особи, відповідального за протипожежний стан приміщенні 56
ВИСНОВКИ 57
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ 59

Работа состоит из  1 файл

Циганкова К.Р.docx

— 1.46 Мб (Скачать документ)

Головна задача клієнта – обробляти  команди від сервера.

Головна задача графічного клієнта  – забезпечити взаємодію з користувачем та можливість маніпулювання усіма доступними клієнтами.

 

    1. Основні задачі та проблеми

 

Основною метою даної кваліфікаційної роботи є розробка системи автоматичного мережевого розподілення навчального матеріалу у комп’ютерному класі з урахуванням IP-адрес комп’ютерів. Для реалізації були поставлені наступні задачі:

  1. Крос-платформність, для забезпечення роботи з будь-якою операційною системою;
  2. Робота з мережею та захист від збоїв, реалізований засобами QT;
  3. Взаємодія клієнта з сервером завдяки власному протоколу;
  4. Маніпулювання файловою системою й робота з нею засобами QT;
  5. Розробка зручного та зрозумілого користувальницького інтерфейсу.

При реалізації кожна з вище перелічених проблем була вдало і вміло вирішена за допомогою засобів платформи QT. Розглянемо кожний пункт окремо.

 

    1. Крос-платформність

 

Крос-платформне програмне забезпечення – програмне забезпечення, що працює більш ніж на одній апаратній платформі і операційній системі. Типовим прикладом є програмне забезпечення, призначене для роботи в операційних системах Windows та Linux одночасно.

Для створення  системи автоматичного мережевого розподілення інформації було обрано платформу QT (див. 1.1) – крос-платформний інструментарій розробки ПЗ мовою програмування C++.

Бібліотека QT замислювалася і починалася як крос-платформний інструментарій (toolkit) для швидкої розробки графічних  інтерфейсів (GUI) програм на мові C++, з метою спростити життя програмістів, які пишуть на C++ крос-платформні GUI-програми, що переносяться та повинні працювати  і в середовищі Windows, і в середовищі Unix / Linux, і на комп'ютерах Macintosh.

Платформо-незалежна  платформа QT дозволяє запускати написане за його допомогою ПЗ в більшості сучасних операційних систем шляхом простої компіляції програми для кожної ОС без зміни початкового коду і при роботі ми завжди отримаємо вірний результат і в середовищі Windows, і в середовищі Unix / Linux, і на комп'ютерах Macintosh.

Легкість  в написанні та розумінні програми. QT надає цілісний каркас (framework), що дозволяє при написанні програми використовувати  тільки класи QT і практично повністю відмовитися від написання системно-залежного  коду, використання системних викликів та ін. Включає в себе всі основні  класи, які можуть знадобитися при  розробці прикладного програмного  забезпечення, починаючи від елементів  графічного інтерфейсу і закінчуючи класами для роботи з рядками, файлами, мережею, базами даних, XML, для  забезпечення багатопоточності в програмі і багато іншого.

 

    1. Робота з мережею: захист від збоїв

 

Протокол  ТСР/ІР (див. 1.3.2) гарантує повну доставку, але через затримку в мережі ця доставка може відбуватися частинами. В нашому випадку дуже важливо, щоб обробка пакету відбувалася цілком, тобто обробка може починатись тільки коли весь пакет доставлений. Таким чином, при розробці системи автоматичного мережевого розподілення інформації було знайдене рішення: при відсилці кожного пакету, спочатку відсилається його розмір (m_nNextBlockSize) (Лістинг 2.1).

 

while(keep alive)

{ if (!m_nNextBlockSize)

        { if (socket->bytesAvailable() < sizeof(quint64))

             {

                    break;

              }

                in >> m_nNextBlockSize;

         }

    if (socket->bytesAvailable() < m_nNextBlockSize)

         {

              break;

         }

Лістинг 2.1 – Цикл обробки команд

 

На початку  коду циклу обробки команд, ми чекаємо  спочатку розмір пакету (m_nNextBlockSize), після чого вже чекаємо доки протокол доставить всю інформацію, передану у пакеті.

Таким чином, ми вирішили проблему захисту інформації від збоїв при передачі по мережі за допомогою протоколу ТСР/ІР засобами QT.

 

    1. Власний протокол взаємодії клієнта з сервером

 

Взаємодія програм, що використовують протокол TCP, будується відповідно до моделі "клієнт-сервер. Дана модель передбачає, що одна програма (сервер) завжди пасивно очікує звернення  до неї іншої програми (клієнта). Для встановлення зв'язку між програмою-клієнта  і сервера використовуються такі дані:

    • використовуваний транспортний протокол
    • IP-адреса сервера
    • номер порту сервера
    • IP-адреса клієнта
    • номер порту клієнта

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

Програми-клієнти, які є активною стороною у взаємодії "клієнт-сервер", можуть використовувати, як правило, довільні номери портів, які  призначаються динамічно безпосередньо  перед зверненням до сервера . Будь-яка  прикладна програма (будь то клієнт або сервер) може відкривати для  взаємодії будь-яку кількість  портів для використання різних транспортних протоколів.

Таким чином, будується зв’язок по мережі між  клієнтом та сервером (див. 1.3.2 та 2.4). Для повної взаємодії клієнта з сервером був розроблений власний протокол передачі даних.

Передача  будь-якої команди як на сервер, так  і на клієнта здійснюється за допомогою  цього протоколу в наступному порядку:

    • Розмір пакета (див. 2.4);
    • ІD команди;
    • Безпосередньо сама послідовність команд.

Таким чином, реалізовується взаємодія клієнта  з сервером

 

    1. Маніпулювання файловою системою

 

Основною метою програми є маніпулювання файловою системою віддаленого комп’ютера (клієнта). Для даних цілей був використаний клас QFileSystemModel (див. 1.4.1).

QFileSystemModel клас (Лістинг 2.2) надає модель даних для локальної файлової системи. Цей клас забезпечує доступ до локальної файлової системи, забезпечуючи функції перейменування й видалення файлів та каталогів, а також для створення нових каталогів. Таким чином, даний клас дуже вдало використаний, бо відповідає меті та задачам, поставленим переді мною.

 

ModelFileSystem::ModelFileSystem(QObject *obj,QString rp)

{ filemodel = new QFileSystemModel(obj);

    changeDrive(rp);

}

Лістинг 2.2 – Клас QFileSystemModel

 

За допомогою  цього класу реалізоване вибір  жорсткого диску (changeDrive), переміщення (goTo), переміщення назад (goBack) та вперед (goForward), повернення до домашнього каталогу (goHome).

Також, дана система передбачає доступ до інформації віддаленого комп’ютеру: жорстких дисків (Лістинг 2.3), каталогів та файлів. За допомогою класів QFileInfo та QDir (див. 1.4.2 та 1.4.4) ми можемо отримати список жорстких дисків віддаленого комп’ютеру (Лістинг 2.3).

 

QStringList ModelFileSystem::getDrivesList()

{  QStringList drives;

    foreach(QFileInfo drive, QDir::drives())

    { drives.push_back(drive.absolutePath());}

    return drives;

}

Лістинг 2.3 – Отримання списку жорстких дисків віддаленого комп’ютеру за допомогою QFileInfo та QDir

 

За допомогою  класу QDir можна одержати вміст вказаної директорії. При цьому допускається застосування різних фільтрів, щоб  виключити зі списку файли, які не цікавлять Вас. Для цих цілей  в класі визначено методи entryList() і entryInfoList(). Перший повертає список імен елементів (QStringList), а другий – інформаційний  список (QFileInfoList). Якщо вам потрібно дізнатися тільки кількість елементів, що знаходяться в директорії, то просто викличте метод count().

Оскільки, платформа QT незалежна від ОС, то при роботі з класом QDir ми завжди отримаємо вірний результат: для Windows – список жорстких дисків, для Linux – кореневий каталог.

Завдання  класу QFileInfo полягає в наданні інформації про властивості файлу, наприклад: ім'я, розмір, час останньої зміни, права доступу і т.д.

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

Всі описані  вище класи (QFileSystemModel, QDir, QFile та QFileInfo) роблять можливим маніпулювання файловою системою засобами QT. Таким чином, ми можемо вважати дану проблему вирішеною.

 

 

    1. Алгоритм роботи програми

 

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

      1. Алгоритм роботи сервера

Після запуску сервера на порту 4200, програма-сервер починає чекати з’єднання нових клієнтів. При отриманні нового з’єднання, сервер заносить його до списку підключених клієнтів (QVector), отримує ім’я клієнта та його ID, після чого за допомогою ID визначає тип клієнта: консольний чи графічний.

Якщо це графічний клієнт, сервер відправляє до нього список доступних  консольних клієнтів, після чого чекає  на команди від графічного клієнта  та виконує їх.

Якщо ж це команди маніпулювання  файловою системою сервера, тоді сервер виконує їх локально та відразу ж  відправляє відповідь до графічного клієнта.

У тому разі, якщо це команди маніпулювання файловою системою іншого клієнта, сервер перенаправляє отриману команду до вказаного клієнта використовуючи його ІР-адрес, після чого, отримавши відповідь від вказаного клієнта, відправляє отриману інформацію до графічного клієнта.

Викладаний алгоритм повністю відповідає роботі програми.

Таким чином, враховуючи всі перераховані вище проблеми та шляхи їх рішення, отримуємо алгоритм роботи сервера (див.рис.2.1), який повністю описує послідовність та порядок операцій, які виконує сервер.

 

 

 

Рис. 2.1 – Алгоритм роботи сервера

      1. Алгоритм роботи клієнта

При запуску у якості параметрів клієнт отримує ІР-адрес та порт сервера, після чого з інтервалом в 1 хвилину намагається підключитися до сервера. При вдалому підключенні, відправляє ім’я та ID, та чекає на команди від сервера. Всі команди оброблюються за допомогою класів маніпулювання локальною файловою системою. Результат роботи передається назад до сервера (Рис. 2.2).

 

Рис. 2.2 – Алгоритм роботи клієнта

 

      1. Алгоритм роботи графічного клієнта

При першому запуску графічний  клієнт автоматично відкриє форму  налаштування, де користувач зможе  ввести ІР-адрес сервера та його порт. Після вдалого підключення  до сервера графічний клієнт відсилає своє ім’я та ID, після чого отримує  від сервера список доступних  консольних клієнтів та зможе маніпулювати їх файловими системами (Рис. 2.3).

 

Рис.2.3 – Алгоритм роботи графічного клієнта

 

РОЗДІЛ 3

РЕАЛІЗАЦІЯ  СИСТЕМИ АВТОМАТИЧНОГО

РОЗПОДІЛЕННЯ  НАВЧАЛЬНОГО МАТЕРІАЛУ

У КОМП’ЮТЕРНОМУ КЛАСІ

 

Систему можна поділи на три частини: сервер, клієнт та графічний клієнт.

Як видно  з трьох діаграм (див.рис.3.1, 3.2 та 3.3), що всі три програми мають два однакові класи для маніпулювання локальною файловою системою: ModelFileSystemItem та ModelFileSystem. Розглянемо їх.

Клас  ModelFileSystemItem зберігає інформацію о файлі або каталозі, а саме:

    • QImage icon – зображення файлу або каталогу;
    • QString caption – назва файлу або каталогу;
    • QString size – розмір файлу або каталогу.

Клас  ModelFileSystem дозволяє маніпулювання локальною файловою системою, а саме переходити по дереву каталогів, отримувати список файлів поточного каталогу та ін. Включає наступні атрибути:

    • QFileSystemModel *filemodel – об’єкт для отримання інформації о файлах та каталогах;
    • QVector<QString> pathHistory – зберігає історію переходів користувача по файловій системі;
    • int pathHistoryIndex – індекс поточного переходу по історії;
    • bool isAvalibleBack – перевірка можливості переходу до попереднього каталогу;
    • bool isAvalibleForward перевірка можливості переходу до наступного каталогу;
    • QString path – путь до поточного каталогу;
    • QString root – назва корневого каталогу.

Розглянемо  методи класу ModelFileSystem:

    • QVector<ModelFileSystemItem*> getCurrentItems – повертає список об’єктів типу ModelFileSystemItem поточного каталогу;
    • QString getCurrentPath – повертає путь до поточного каталога;
    • void setCurrentPath(QString p) – встановлює путь до поточного каталогу;
    • QStringList getDrivesList – повертає список доступних локальних дисків у системі ОС Windows, у ОС Linux повертає путь до корневого каталогу;
    • bool goTo(QString p) – перехід до вказаного каталогу;
    • void goBack – перехід до попереднього каталогу;
    • void goForward – перехід до наступного каталогу;
    • void goHome – перехід до корневого каталогу;
    • void copy (QString src, QString dest) – копіювання вказаного файлу або каталогу до вказаної дерікторії (Лістинг 3.1), метод автоматично визначає чи являється об’єкт копіювання файлом або каталогом: якщо це каталог, то за рахунок рекурсивного виклику метода copy по черзі копіює всі файли і підкаталоги даної дерікторіі до заданого каталогу;
    • void delete(QString src) – видалення вказаного файлу або каталогу;
    • void createNewFolder(QString caption) – створення нового каталогу;
    • bool isBackAvalible – перевірка можливості ходу до попереднього каталогу;
    • bool isForwardAvalible – перевірка можливості ходу до наступного каталогу;
    • void changeDrive(QString d) – зміну локального диску.

Информация о работе Розробка системи автоматизованого мережевого розподілення навчального матеріалу