Питання впровадження сучасних інформаційних технологій в процеси проведення маркетингових та соціологічних опитувань

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык украинский
Дата добавления 02.02.2013
Размер файла 3,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Монітор опитувань

Цей компонент можна розділити на декілька більш дрібних за функціональним призначенням.

· Перегляд опитувань

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

· Перегляд деталей опитування

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

- Назва опитування

- Стан

- Дата створення

- Дата активації

- Дата закінчення

- Термін дії

- Інтерв'юери, що беруть (брали або будуть брати) участь в опитуванні

- Кількість опитаних респондентів

Крім того, необхідно показати деякі дані, щодо результатів проведення вибраного опитування, тобто по кожному з варіантів відповідей кожного з питань потрібно вказати, скільки людей вибрали цю відповідь, а також розбити людей на групи по заданим параметрам (вік, стать, тощо).

Також, окремо має бути доступна особиста інформація опитаних респондентів та детальна інформація по відповідям в рамках окремого опитування.

· Перегляд інтерв'юерів

Призначення - відображення інтерв'юерів, існуючих в системі на даний момент. Потрібно надати наступну інформацію:

- П.І.Б.

- Вік

- Стать

- Опитування, що були проведені інтерв'юером (кількість опитаних по кожному)

- Опитування, що проводяться інтерв'юером на даний момент (кількість опитаних по кожному)

3.3 Проектування бази даних

Система повинна зберігати певну кількість даних певний час. Крім того, дані повинні бути захищені та мати певну структуру, зручну для доступу до потрібної інформації. Було вирішено використовувати базу даних для збереження інформації. Потрібно усвідомлювати, що від того, як буде спроектована структура бази даних, буде залежати і подальша робота за нею (швидкість, зручність, безпека).

Проектування бази даних буде проходити в 3 етапи:

· Концептуальний рівень

o Сутності

o Атрибути

o Зв'язки

· Логічний рівень

o Записи

o Елементи даних

o Зв'язки між записами

· Фізичний рівень

o Групування даних

o Індекси

o Методи доступу

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

o Дослідження предметної області, вивчення її інформаційної структури

o Виявлення усіх фрагментів, кожний з яких характеризується користувацьким представленням, інформаційними об'єктами та зв'язками між ними, процесами над інформаційними об'єктами

o Моделювання та інтеграція всіх представлень

Логічне проектування - перетворення вимог до даних в структури даних. На виході отримуємо СКБД-орієнтовану структуру бази даних і специфікації прикладних додатків. На цьому етапі іноді моделюють бази даних, застосовуючи до різних СКБД та проводять порівняльний аналіз моделей.

Фізичне проектування - визначення особливостей зберігання даних, методів доступу до даних, тощо.

3.3.1 Концептуальний рівень

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

· Опитування

o Найменування

o Дата створення

o Дата активації

o Дата закінчення

o Стан

o Ким створений

Пов'язана із сутностями «Стан опитування» (один-до-багатьох), «Користувачі системи» (один-до-багатьох)

· Питання

o Питання (текст)

o Чи обов'язкове

o Декілька варіантів відповідей

o Тип (закрите/відкрите)

Пов'язана із сутностями «Опитування» (один-до-багатьох), «Тип питання» (один-до-багатьох)

· Варіант відповіді

o Варіант відповіді (текст)

Пов'язана із сутністю «Питання» (один-до-багатьох)

· Користувач системи

o Ім'я

o Прізвище

o По-батькові

o Стать

o Дата народження

o Група користувачів

Пов'язана із сутністю «Групи користувачів» (один-до-багатьох)

· Респондент

o Ім'я

o Вік

o Стать

o Сфера діяльності

o Додаткова інформація

Пов'язана із сутністю «Варіанти відповідей» (багато-до-багатьох)

· Сфери діяльності

o Назва

Пов'язана із сутністю «Респондент» (один-до-багатьох)

· Стан опитування

o Назва

Пов'язана із сутністю «Опитування» (один-до-багатьох)

· Група користувачів

o Назва

Пов'язана із сутністю «Користувачі» (один-до-багатьох)

· Тип питання

o Назва

Пов'язана із сутністю «Питання» (один-до-багатьох)

3.3.2 Логічний рівень

Логічне представлення бази даних відображене на рисунку 6.

Рисунок 6. Структура бази даних

3.3.3. Фізичний рівень

Цілісність даних

Забезпечення цілісності даних є важливою задачею при проектуванні й експлуатації систем обробки даних (СОД).

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

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

Цілісність даних описується набором спеціальних дій, що називаються обмеженнями цілісності. Обмеження цілісності являють собою твердження про припустимі значення окремих інформаційних одиниць і зв'язках між ними. Ці обмеження визначаються в більшості випадків особливостями предметної області, хоча можуть відбивати й чисто інформаційні (лінгвістичні) характеристики. Наприклад, якщо використовуються цифрові коди для позначення якої-небудь номенклатури, то обмеження на тип використовуваних символів для відповідного атрибута в БД визначаються не специфікою предметної області, а просто обраним способом кодування, обмеження, що виражається в тому, що вік працюючого повинен бути не менший 16 років, - трудовим законодавством, тобто тільки специфікою предметної області.

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

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

· Запис в основній таблиці можна видаляти тільки в тому випадку, якщо немає пов'язаних з нею записів у підлеглій таблиці;

· При видаленні запису основної таблиці видаляються всі пов'язані з нею записи в залежній таблиці (так зване каскадне видалення);

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

Видалення записів залежної таблиці не може привести до порушення обмеження цілісності по зв'язку або існуванню.

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

3.4 Реалізація функціональності системи

3.4.1 Визначення функціональних пріоритетів

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

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

База даних

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

· Додавання користувача в базу даних

· Додавання респондента в базу даних

· Створення опитувань (питань, варіантів відповідей)

· Отримання даних користувача

· Отримання існуючих опитувань (і їх питань, варіантів відповідей)

Веб-сервіс

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

· Додавання користувача в базу даних

· Додавання респондента в базу даних

· Створення опитувань (питань, варіантів відповідей)

· Отримання даних користувача

· Отримання існуючих опитувань (і їх питань, варіантів відповідей)

· Перевірка даних на «правильність»

· Створення «обгортки» бази даних в форматі, зрозумілому рівню інтерфейсу

Веб-сайт

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

· Створення користувачів (адміністраторів, респондентів)

· Створення опитувань (питань, варіантів відповідей), визначення їх параметрів

· Отримання даних користувача

· Отримання інформації про існуючі опитування (їх питання, варіанти відповідей)

· Отримання статистичної інформації по існуючим опитуванням (скільки людей опитано, процентне співвідношення варіантів відповідей, тощо)

· Співставлення

Сервіс синхронізації

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

Клієнтська програма

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

· Авторизація користувача (інтерв'юера)

· Отримання опитувань з бази даних (що належать даному користувачу)

· Створення респондентів, їх параметрів (ім'я, вік, стать, тощо)

· Заповнення даних опитування (співставлення відповідей конкретному респонденту)

· Збереження результатів опитування

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

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

Друга ітерація

Нижче наведені зміни, що мають бути внесені в різні компоненти проекту під час другої ітерації.

База даних

· Створення тригерів (захист від помилкового видалення, оновлення)

· Налаштування резервного копіювання бази даних

· Створення функцій авторизації користувачів

Веб-сервіс

· Створення функцій авторизації користувачів

· Розширення об'єктної моделі бази даних (створення додаткових методів взаємодії з базою даних)

Веб-сайт

· Реалізація авторизації користувачів

· Розширення можливостей перегляду статистики (фільтрація по різним параметрам, групам)

· Контроль роботи інтерв'юерів (збір статистики)

По завершенні другої ітерації проекту система має виконувати усі необхідні задачі для контролю над процесом опитувань. Наприклад, для того, щоб бачити, наскільки завантажені користувачі системи і, відповідно, назначати їх на нові опитування, потрібно мати змогу відобразити загальну інформацію (див. Рис 7). Тут можна побачити усіх користувачів, що зареєстровані в системі, їх заплановані, активні та закриті опитування, кількість опитаних респондентів кожним з них по кожному опитуванню.

Рисунок 7. Загальна інформація по завантаженню користувачів

З іншого боку, може знадобитися можливість відображення переліку опитувань з основною інформацією про них з можливістю фільтрації по стану(Рис.8).

Рисунок 8. Перелік опитувань

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

Рисунок 9. Перегляд загальної інформації по опитуванню.

Також, можливо переглянути інформацію по одній з відповідей окремого питання, щоб мати змогу бачити, яка група людей найбільш зацікавлена саме в цьому варіанті. Наприклад, на рис. 10, показані усі респонденти, які вибрали одну й ту саму відповідь на одне з питань одного з опитувань.

Рисунок 10. Респонденти, що однаково відповіли на запитання

Можлива ситуація, коли адміністратору потрібно дізнатись, як відповідала на запитання конкретного опитування конкретна людина. Це може знадобитись для аналізу складних опитувань, що містять перевірочні питання, тощо (Рис. 11)

Рисунок 11. Відповіді респондента на опитування

Зі сторони інтерв'юера ситуація набагато простіша. Йому лише потрібно вибрати одне з опитувань, що йому назначив адміністратор (рис. 12), заповнити основні анкетні дані по респонденту (рис. 13) і, власне, провести процедуру опитування, вибираючи ті пункти (варіанти відповідей), що повідомляє йому респондент (рис. 14).

Рисунок 12. Перелік опитувань інтерв'юера

Рисунок 13. Створення респондента

Рисунок 14. Процес проведення опитування

3.4.2 Об'єктна модель системи

Система складається с чотирьох проектів, пов'язаних в одне рішення (Solution). Проекти відповідають абстрактним компонентам системи - веб-сервіс, веб-сайт, Windows Mobile програма та сервіс синхронізації даних. На рис. 15 відображена загальна схема об'єктної моделі системи.

Рисунок 15. Об'єктна модель системи

В самому початку ієрархії знаходиться рішення, яке містить у собі чотири проекти:

1. Core

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

· PollsService - веб-сервіс, містить в собі веб-методи, що працюють напряму з базою даних.

· PollsData - об'єктна обгортка структури бази даних, підвищує рівень абстракції представлення бази даних.

· User - клас, містить методи для роботи з користувачами системи.

· Poll - клас, містить методи для роботи з опитуваннями.

· Respondent - клас, містить методи для роботи з респондентами.

· Question - клас, містить методи для роботи з питаннями.

2. PollsAdmin

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

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

· LoginControl - елемент управління, виконує функцію авторизації користувачів в системі.

· PollPreview - елемент, відображає стислу інформацію про опитування.

· PollsList - елемент-контейнер, містить у собі набір елементів PollPreview.

· PollsResults - елемент, відображає результати конкретного опитування (перелік питань, варіанти відповідей на кожне з них та статистику по відповідям на кожен з варіантів).

· QuestionItem - елемент, відображає інформацію про конкретне питання.

· QuestionRes - елемент, відображає інформацію про результати відповідей на конкретне питання.

· MasterPage - основна сторінка, від якої унаслідуються усі інші. Містить у собі елементи, що використовують усі інші сторінки (логотип із заголовком, елемент авторизації, головне меню, стилі оформлення, тощо).

· Default - домашня сторінка, з неї починається користування сайтом. Відображає логотип, запит авторизації та головне меню.

· Answers - сторінка, на якій відображено варіанти відповідей на обране питання (використовується в конструкторі опитувань).

· Polls - сторінка містить у собі перелік опитувань (стислий вигляд) та інтерфейс для створення нового опитування (конструктор опитувань)

· PollDetails - сторінка відображає повну інформацію про конкретне опитування (дата проведення, стан, перелік інтерв'юерів, перелік питань та варіантів відповідей на них, відсоткове співвідношення кількості опитаних до конкретного варіанту відповіді.

· Questions - сторінка, що відображає перелік питань конкретного опитування (використовується в конструкторі опитувань).

· Respondents - сторінка, що відображає перелік респондентів, що вибрали один і той самий варіант відповіді.

· RespAnswers - сторінка, що відображає відповіді конкретного респондента на усі запитання обраного опитування.

· Users - сторінка, що відображає перелік користувачів, зареєстрованих в системі, їх заплановані, закриті опитування та опитування, що проводяться в даний момент, кількість опитаних респондентів по кожному з них. Призначена для визначення продуктивності роботи різних користувачів системи.

3. PollsClient

Розміщується на мобільному пристрої інтерв'юера. Призначення - отримувати інформацію безпосередньо від джерела, зберігати локально і періодично відправляти на сервер. Надає інтерв'юеру мобільності (територіальну свободу та незалежність від потреби мати постійний зв'язок із серверною частиною. Містить наступні об'єкти:

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

· PollDataCache - компонент, що містить у собі методи та логіку процесу синхронізації сховищ даних.

· LoginForm - вікно із полями для вводу облікових даних інтерв'юера. Виконує функцію авторизації користувача на мобільному пристрої.

· PollForm - основне вікно програми, в ньому виводяться питання та варіанти відповідей на них.

· RespForm - вікно додавання інформації про нового респондента в систему.

· QuestItem - елемент управління, відображає та обробляє варіанти відповідей на конкретне питання.

4. PollsSyncLib

Проект являє собою бібліотеку, що містить у собі схему локального кешу даних та сервіс синхронізації. Містить наступні об'єкти:

· PollDataCache - компонент, що містить у собі методи та логіку процесу синхронізації сховищ даних.

· SyncContract - контракт синхронізації, описує правила синхронізації клієнта з сервером.

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

ЗАГАЛЬНІ ВИСНОВКИ

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

· Ефективний пошук інформаційних джерел

· Продуктивні методи здобуття інформації

· Швидка обробка даних

· Використання отриманих даних на благо організації

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

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

В заключній частині, за допомогою вибраного інструментарію, було реалізовано складний програмний продукт, проведено його тестування. Розроблена система дозволяє створювати повноцінні маркетингові опитування із задаванням усіх необхідних для сучасних вимог параметрів та отримувати дані від джерела за допомогою мобільних пристроїв і в лічені секунді передавати ці дані безпосередньо в базу даних підприємства. Таким чином, зі звичайного алгоритму проведення опитувань просто видаляються такі етапи, як розповсюдження анкет (в паперовому варіанті) по інтерв'юерах та імпорт отриманих на паперах даних в базу даних за допомогою операторів. Такий спосіб реалізації дозволяє зекономити приблизно 50% часу, затраченого на опитування від самого початку і до кінця. Окрім економії часу, зникає необхідність в послугах, наприклад, операторського складу організації, що позитивно відгукається на фінансовій сфері компанії.

Виходячи з отриманих результатів, можна цілком впевнено сказати, що, навіть із затратами на програмне забезпечення для розробки системи та оплату роботи групи програмістів, економічна вигода від створеного продукту доволі значна.

ЛІТЕРАТУРА

1. Павлова, Е.А. Технологии разработки современных информационных систем на платформе .NET - Интернет-университет информационных технологий, [Текст]. - 2009. - 112с.

2. Пауэлл, Т. Ajax. Настольная книга программиста [Текст] - Эксмо. - 2009. - 720с.

3. Сандерсон, С. ASP.NET MVC Framework с примерами на C# для профессионалов. [Текст] - Вильямс, 2009. - 608с.

4. Мак-Дональд, М. Microsoft ASP.NET 3.5 с примерами на C# 2008 и Silverlight 2 для профессионалов, - Вильямс, 2009. - 1408с.

5. Дэвис С.Р. C# 2005 для "чайников" / Дэвис С.Р., Сфер Ч.; "Вильямс", [Текст] - 2006. - 576 с.

6. Эндрю Троелсен. Язык программирования C# 2008 и платформа .NET 3.5. - [Текст] "Вильямс" 2009. - 1344 с.

7. Мот, Д. Microsoft Mobile и .NET Compact Framework. Руководство разработчика [Текст]. - Питер, 2009. - 672с.

8. Салмре, И. Программирование мобильных устройств на платформе .NET Compact Framework [Текст]. - Вильямс, 2006. - 736с.

9. Камерон, Р. ASP.NET 3.5, компоненты AJAX и серверные элементы управления для профессионалов [Текст]. - Вильямс, 2009. - 608с.

10. Шмидт, Б. Основы Windows Workflow Foundation [Текст]. - ДМК Пресс, 2008. - 352с.

11. Паркер Т. .NET. Сетевое программирование для профессионалов [Текст]. - Лори, 2005. - 400с.

12. Леве, Д. Создание служб WCF [Текст]. - Питер, 2008. - 592с.

13. Вульф, Б. Шаблоны интеграции корпоративных приложений [Текст]. - Вильямс, 2007. - 672с.

14. Шафер, Д.Ф. Управление программными проектами. Достижение оптимального качества при минимуме затрат [Текст]. - Вильямс, 2004. - 1136с.

15. Ратц, Д LINQ: язык интегрированных запросов в C# 2008 для профессионалов [Текст]. - Вильямс, 2008. - 560с.

16. Основы проектирования реляционных баз данных: [Электрон. ресурс]. - Режим доступа: http://www.intuit.ru.

17. Сравнение SQL Server с Oracle Database : [Электрон. ресурс]. - Режим доступа: http://www.microsoft.com/sqlserver/2008.

18. SQL Server 2008: Безопасность: [Электрон. ресурс]. - Режим доступа: http://sysdba.org.ua.

19. Википедия, Microsoft SQL Server: [Электрон. ресурс]. - Режим доступа: http://www.ru.wikipedia.org.

20. Кросс-платформенная разработка - Windows Mobile и Windows: [Электрон. ресурс]. - Режим доступа: http://mobile-developer.ru.

21. Microsoft Sync Framework: Синхронизация данных: [Электрон. ресурс]. - Режим доступа: http://msdn.microsoft.com.

ДОДАТОК А

Лістинг коду основних компонентів

PollsService.cs

public class PollsService : System.Web.Services.WebService

{

[WebMethod]

public PollsData.PollsDataTable GetPolls(int state)

{

return new PollsAdapter().GetData(state);

}

[WebMethod]

public PollsData.UsersDataTable GetInterviewersByPoll(int pollId)

{

return new UsersAdapter().GetInterviewersByPoll(pollId);

}

[WebMethod]

public PollsData.QuestionsDataTable GetQuestionsByPollId(int pollId)

{

return new QuestionsAdapter().GetQuestionsByPollId(pollId);

}

[WebMethod]

public void AddPoll(string name, int createdById, DateTime activateDate, DateTime? expiredDate)

{

new PollsAdapter().AddPoll(name, createdById, activateDate, expiredDate);

}

[WebMethod]

public void AddQuestion(string question, bool required, bool multiAnswer, int questionTypeId, int pollId)

{

new QuestionsAdapter().AddQuestion(question, required, multiAnswer, questionTypeId, pollId);

}

[WebMethod]

public PollsData.AnswersDataTable GetAnswersByQuestionId(int questionId)

{

return new AnswersAdapter().GetAnswersByQuestionId(questionId);

}

[WebMethod]

public void AddAnswer(string answer, int questionId)

{

new AnswersAdapter().AddAnswer(answer, questionId);

}

}

}

Core.Poll.cs

public class Poll

{

public static void AddPoll(string name, int createdById, DateTime activateDate, DateTime expiredDate)

{

using (PollsService service = new PollsService())

{

service.AddPoll(name, createdById, activateDate, expiredDate);

}

}

public static PollsData.PollsRow GetPoll(int pollId)

{

using (PollsService service = new PollsService())

{

PollsData.PollsDataTable table = service.GetPoll(pollId);

if (table.Rows.Count > 0)

{

return table[0];

}

}

return null;

}

public static PollsData.PollsDataTable GetPolls(int state)

{

using (PollsService service = new PollsService())

{

return service.GetPolls(state);

}

}

public static PollsData.QuestionsDataTable GetQuestionsByPollId(int pollId)

{

using (PollsService service = new PollsService())

{

return service.GetQuestionsByPollId(pollId);

}

}

public static PollsData.AnswersDataTable GetAnswersByQuestionid(int questionId)

{

using (PollsService service = new PollsService())

{

return service.GetAnswersByQuestionId(questionId);

}

}

public static void AddQuestion(string question, bool required, bool multiAnswer, int questionTypeId, int pollId)

{

using (PollsService service = new PollsService())

{

service.AddQuestion(question, required, multiAnswer, questionTypeId, pollId);

}

}

public static void AddAnswer(string answer, int questionId)

{

using (PollsService service = new PollsService())

{

service.AddAnswer(answer, questionId);

}

}

public static PollsData.PollsRow GetPollByQuestionId(int questionId)

{

using (PollsService service = new PollsService())

{

PollsData.PollsDataTable table = service.GetPollByQuestionId(questionId);

if (table.Count > 0)

{

return table[0];

}

}

return null;

}

public static PollsData.PollsRow GetPollByAnswerId(int answerId)

{

using (PollsService service = new PollsService())

{

PollsData.PollsDataTable table = service.GetPollByAnswerId(answerId);

if (table.Count > 0)

{

return table[0];

}

}

return null;

}

}

Core.User.cs

public static PollsData.UsersRow GetUser(int userId)

{

using (PollsService service = new PollsService())

{

PollsData.UsersDataTable table = service.GetUser(userId);

if (table.Count > 0)

{

return table[0];

}

}

return null;

}

public static PollsData.UsersRow GetUserByCredentials(string login, string password)

{

using (PollsService service = new PollsService())

{

PollsData.UsersDataTable table = service.GetUserByCredentials(login, password);

if (table.Count > 0)

{

return table[0];

}

}

return null;

}

public static PollsData.UsersDataTable GetUsersByGroup(int userGroupId)

{

using (PollsService service = new PollsService())

{

return service.GetUsersByGroup(userGroupId);

}

}

public static PollsData.UsersDataTable GetInterviewersByPoll(int pollId)

{

using (PollsService service = new PollsService())

{

return service.GetInterviewersByPoll(pollId);

}

}

public static void SetInterviewerForPoll(int pollId, int interviewerId)

{

using (PollsService service = new PollsService())

{

service.SetInterviewerForPoll(pollId, interviewerId);

}

}

public static void DeleteInterviewerFromPoll(int pollId, int interviewerId)

{

using (PollsService service = new PollsService())

{

service.DeleteInterviewerFromPoll(pollId, interviewerId);

}

}

}

PollDetails.cs

public partial class PollDetails : System.Web.UI.Page

{

public PollsData.PollsRow poll = null;

protected void Page_Load(object sender, EventArgs e)

{

int pollId = 0;

if (!string.IsNullOrEmpty(Request["pollId"]))

{

int.TryParse(Request["pollId"], out pollId);

}

poll = Poll.GetPoll(pollId);

if (poll == null) { return; }

this.PollResultsList1.PollId = poll.Id;

if (!IsPostBack)

{

var ai =

from c in Core.User.GetUsersByGroup(2)

select new { Id = c.Id, FullName = c.FirstName + " " + c.LastName };

InterviewersList.DataSource = ai;

InterviewersList.DataBind();

InterviewersList.SelectedIndexChanged -= new EventHandler(InterviewersList_SelectedIndexChanged);

foreach (var i in Core.User.GetInterviewersByPoll(poll.Id))

{

ListItem item = InterviewersList.Items.FindByValue(i.Id.ToString());

if (item != null)

{

item.Selected = true;

item.Attributes["style"] = "color:Black;";

}

}

InterviewersList.SelectedIndexChanged += new EventHandler(InterviewersList_SelectedIndexChanged);

}

}

protected void InterviewersList_SelectedIndexChanged(object sender, EventArgs e)

{

var ai =

from c in Core.User.GetInterviewersByPoll(poll.Id)

select new { Id = c.Id, FullName = c.FirstName + " " + c.LastName };

foreach(ListItem item in InterviewersList.Items)

{

if (item.Selected && ai.Where(x => x.Id.ToString() == item.Value).Count() == 0)

{

Core.User.SetInterviewerForPoll(poll.Id, int.Parse(item.Value));

}

if (!item.Selected && ai.Where(x => x.Id.ToString() == item.Value).Count() > 0)

{

Core.User.DeleteInterviewerFromPoll(poll.Id, int.Parse(item.Value));

}

}

Response.Redirect(Request.RawUrl);

}

}

PollsCache.SyncContract

public partial class PollsCacheSyncService : object, IPollsCacheSyncContract {

private PollsCacheServerSyncProvider _serverSyncProvider;

public PollsCacheSyncService() {

this._serverSyncProvider = new PollsCacheServerSyncProvider();

}

[System.Diagnostics.DebuggerNonUserCodeAttribute()]

public virtual SyncContext ApplyChanges(SyncGroupMetadata groupMetadata, DataSet dataSet, SyncSession syncSession) {

return this._serverSyncProvider.ApplyChanges(groupMetadata, dataSet, syncSession);

}

[System.Diagnostics.DebuggerNonUserCodeAttribute()]

public virtual SyncContext GetChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession) {

return this._serverSyncProvider.GetChanges(groupMetadata, syncSession);

}

[System.Diagnostics.DebuggerNonUserCodeAttribute()]

public virtual SyncSchema GetSchema(Collection<string> tableNames, SyncSession syncSession) {

return this._serverSyncProvider.GetSchema(tableNames, syncSession);

}

[System.Diagnostics.DebuggerNonUserCodeAttribute()]

public virtual SyncServerInfo GetServerInfo(SyncSession syncSession) {

return this._serverSyncProvider.GetServerInfo(syncSession);

}

}

[ServiceContractAttribute()]

[XmlSerializerFormat()]

public interface IPollsCacheSyncContract {

[OperationContract()]

SyncContext ApplyChanges(SyncGroupMetadata groupMetadata, DataSet dataSet, SyncSession syncSession);

[OperationContract()]

SyncContext GetChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession);

[OperationContract()]

SyncSchema GetSchema(Collection<string> tableNames, SyncSession syncSession);

[OperationContract()]

SyncServerInfo GetServerInfo(SyncSession syncSession);

}

}

PollsCache.Polls.sql

IF @@TRANCOUNT > 0

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

GO

BEGIN TRANSACTION;

IF @@TRANCOUNT > 0

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[Polls_Tombstone]'))

BEGIN

CREATE TABLE [dbo].[Polls_Tombstone](

[Id] Int NOT NULL,

[DeletionDate] DateTime NULL

) ON [PRIMARY]

END

GO

IF @@ERROR <> 0

ROLLBACK TRANSACTION;

IF @@TRANCOUNT > 0

ALTER TABLE [dbo].[Polls_Tombstone] ADD CONSTRAINT [PKDEL_Polls_Tombstone_Id]

PRIMARY KEY CLUSTERED

([Id])

ON [PRIMARY]

GO

IF @@ERROR <> 0

ROLLBACK TRANSACTION;

IF @@TRANCOUNT > 0

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[Polls_DeletionTrigger]') AND type = 'TR')

DROP TRIGGER [dbo].[Polls_DeletionTrigger]

GO

CREATE TRIGGER [dbo].[Polls_DeletionTrigger]

ON [dbo].[Polls]

AFTER DELETE

AS

SET NOCOUNT ON

UPDATE [dbo].[Polls_Tombstone]

SET [DeletionDate] = GETUTCDATE()

FROM deleted

WHERE deleted.[Id] = [dbo].[Polls_Tombstone].[Id]

IF @@ROWCOUNT = 0

BEGIN

INSERT INTO [dbo].[Polls_Tombstone]

([Id], DeletionDate)

SELECT [Id], GETUTCDATE()

FROM deleted

END

GO

IF @@ERROR <> 0

ROLLBACK TRANSACTION;

COMMIT TRANSACTION;

PollsCache.Users.sql

IF @@TRANCOUNT > 0

set ANSI_NULLS ON

set QUOTED_IDENTIFIER ON

GO

BEGIN TRANSACTION;

IF @@TRANCOUNT > 0

IF NOT EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[Users_Tombstone]'))

BEGIN

CREATE TABLE [dbo].[Users_Tombstone](

[Id] Int NOT NULL,

[DeletionDate] DateTime NULL

) ON [PRIMARY]

END

GO

IF @@ERROR <> 0

ROLLBACK TRANSACTION;

IF @@TRANCOUNT > 0

ALTER TABLE [dbo].[Users_Tombstone] ADD CONSTRAINT [PKDEL_Users_Tombstone_Id]

PRIMARY KEY CLUSTERED

([Id])

ON [PRIMARY]

GO

IF @@ERROR <> 0

ROLLBACK TRANSACTION;

IF @@TRANCOUNT > 0

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[Users_DeletionTrigger]') AND type = 'TR')

DROP TRIGGER [dbo].[Users_DeletionTrigger]

GO

CREATE TRIGGER [dbo].[Users_DeletionTrigger]

ON [dbo].[Users]

AFTER DELETE

AS

SET NOCOUNT ON

UPDATE [dbo].[Users_Tombstone]

SET [DeletionDate] = GETUTCDATE()

FROM deleted

WHERE deleted.[Id] = [dbo].[Users_Tombstone].[Id]

IF @@ROWCOUNT = 0

BEGIN

INSERT INTO [dbo].[Users_Tombstone]

([Id], DeletionDate)

SELECT [Id], GETUTCDATE()

FROM deleted

END

GO

IF @@ERROR <> 0

ROLLBACK TRANSACTION;

COMMIT TRANSACTION;

Размещено на Allbest.ru


Подобные документы

  • Аналіз сучасних методів та технологій проектування програмного забезпечення. Вибір цільової мобільної платформи. Розробка екранних форм, діаграми класів. Вимоги до програмного продукту. Аналіз небезпечних факторів у відділі роботи з фізичними особами.

    дипломная работа [508,1 K], добавлен 02.12.2015

  • Тенденції розвитку інформаційних технологій, зростання складності інформаційних систем, створюваних у різних галузях. Засоби, що реалізують CASE-технологію створення і супроводу інформаційних систем. Автоматизація розробки програмного забезпечення.

    реферат [21,5 K], добавлен 21.03.2011

  • Проектування та реалізація бази даних на фізичному рівні. Формування сутності з їх атрибутами. Вибір засобів розробки даного програмного забезпечення. Створення інтерфейсу для роботи з базою даних. Інструкція користувача, головне функціональне вікно.

    курсовая работа [1,7 M], добавлен 26.09.2013

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

    контрольная работа [32,4 K], добавлен 12.04.2010

  • Оцифровування карти за допомогою програмного продукту ArcGis. Порівняння методів інтерполяції за допомогою програмних продуктів Surfer та ArcGis. Згладжування отриманих сіткових даних за допомогою сплайнів і фільтрації. Застосування сіткових чисел.

    курсовая работа [2,1 M], добавлен 31.01.2014

  • Аналіз навігаційних технологій у сучасних AVL системах. Структура системи і вимоги до апаратного забезпечення, розробка алгоритмів функціонування окремих програмних модулів. Вибір мови програмування і СУБД. Тестовий варіант програмного забезпечення.

    дипломная работа [1,8 M], добавлен 17.12.2015

  • Поняття інформаційних технологій, їх види та етапи розвитку. Особливості впровадження сучасних інформаційних технологій у різних сферах діяльності: рівні операційної діяльності, у керуванні та прийнятті управлінських рішень. Перспективи їх розвитку.

    контрольная работа [21,3 K], добавлен 07.02.2011

  • Історія розвитку компанії Wonderware, її популярні розробки у сфері інформаційних технологій. Характеристика програмного забезпечення для систем промислової автоматизації. Призначення технології ArchestrA, її ключові переваги та функціональні можливості.

    курсовая работа [1,6 M], добавлен 19.12.2013

  • Аналіз об'єктів дослідження, проектування баз даних. Розробка програмного забезпечення для роботи зі спроектованою базою даних. Реалізація індексів, опис метаданих в середовищі MySQL. Специфікація DDL для MySQL, протокол тестування DDL-сценарії.

    контрольная работа [389,9 K], добавлен 05.01.2014

  • Створення бази даних аптеки готових лікарських форм для підвищення ефективності її роботи та автоматизації обробки результатів її діяльності. Обмеження при роботі з базою даних. Аналіз системних вимог. Вибір засобів розробки інформаційної системи.

    курсовая работа [477,7 K], добавлен 09.12.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.