База даних оцінок відгуків та зауважень від користувачів, документаційно-інформаційного забезпечення на основі атрибутів якості

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

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

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

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

Размещено на http://www.allbest.ru

Размещено на http://www.allbest.ru

Зміст

Вступ

1. Дослідження предметної області

1.1 Характеристика предметної області

1.2 Виділення сутностей предметної області

1.3 Приведення до 3-ї нормальної форми

2. Проектування та реалізація бази даних на фізичному рівні

2.1 Обґрунтування вибору СКБД

2.2 Фізична ER-діаграма БД

3. Реалізація бази даних та розробка програмного забезпечення по веденню бази даних

3.1 Вибір засобів розробки інтерфейсу програмного забезпечення

3.2 Створення інтерфейсу для роботи з базою даних

3.3 Інструкція користувача

Висновок

Перелік посилань

Додаток

база даний програмний атрибут

Вступ

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

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

Саме тому потрібна БД, яка буде містити оцінки і відгуки за якими користувачі зможуть вибрати потрібне їм ДІЗ. З використанням коректних SQL-запитів буде показана лише найважливіша інформація без читання непотрібного спаму, без проведення годин за пошуком потрібного ДІЗ. В даній курсовій роботі, вдалось реалізувати зручну оцінку по зауваженням від користувачів, як експерту з оцінювання такої інформації, так і простому користувачу. Можна відзначити, що оцінювання відгуків є корисним для власників інтернет ресурсів, яким важлива думка їх користувачів.

1. Дослідження предметної області

1.1 Характеристика предметної області

На сьогоднішній день багато людей мають доступ до мережі Internet. Завдяки цьому користувачі можуть розміщувати на сайтах різноманітний контент, наприклад Документаційно-інформаційне забезпечення (ДІЗ) [9] і залишати свої оцінки та відгуки до нього.

На сайті mapia.ua в статті «Правила розміщення інформації» є прості загальні рекомендації з того, як створювати контент.

Загальні рекомендації з цієї статті (відгуки які не відповідають цим рекомендаціям, видаляються з інтернет ресурсу):

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

рекламний контент. Власники сайтів негативно відносяться до публікації матеріалів рекламного характеру. Це для того щоб утримувати продукт корисним для користувачів і чистим від спаму;

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

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

інтелектуальна власність. Не варто перепощувати нічого з інших сайтів або інших користувачів;

нелегальний контент. Якщо вміст відгуку порушує права інших людей або чинний закон України, то він є не легальним;

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

Рекомендації по відгукам із тієї ж статті:

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

особистий досвід. Немає нічого кориснішого інформації з перших рук;

точність і правдивість. Залишаючи відгук необхідно якомога точніше описати свій досвід, не спотворюючи факти;

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

змістовність. При написанні відгуку бажано детально викласти свою думку. Інші користувачі обов'язково оцінять такий відгук. Емоційні відгуки -- це добре, але якщо відгук не виражає нічого крім емоції -- це погано. Не варто писати відгуки такі, як наприклад: «ААА, який офігенний ресторан!!» або «Усе огидно!» Краще, описати, чому ви так вважаєте.

Коли користувач шукає потрібне йому ДІЗ, то для нього як для користувача мережі Internet, цілодобово є у відкритому доступі необхідна інформація про те що стосується ДІЗ. Тільки в Internet є можливість швидко, переглядати оцінки користувачів, читати відгуки людей, які вже знають про дане ДІЗ, що дозволяє прийняти найбільш раціональне рішення при виборі потрібного матеріалу. Більш того, користувач має право сам залишити відгук і тим самим висловити свою думку.

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

Таблиця 1 - Шкала якості

Рівень якості

Назва

Опис

0

Вандалізм

Безглуздий набір символів, графіті тощо. Не існує змістовних версій.(Видаляється)

1

Відгук не має відношення до статті

Відгук не пов'язаний з статтею.

2

Відгук не закінчений

Мінімальний зміст, або одне визначення, або немає визначення, але є якісь дані.

3

Звичайний відгук

Визначення, додаткові дані, категорія.

4

Якісний відгук

Якісний зміст, розкрита точка зору користувача.

5

Зразковий відгук

Якісний зміст, розкриття теми і всіх суттєвих аспектів.

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

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

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

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

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

Під час визначення атрибутів для кожної сутності необхідно пам'ятати:

кожен атрибут має бути пов'язаний з темою сутності;

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

у сутності має бути вся необхідна інформація.

Інформацію варто розбивати на найменші логічні одиниці (наприклад, поля «Ім'я» і «Прізвище», а не загальне поле «Ім'я»).

1.2 Виділення сутностей предметної області

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

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

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

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

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

Оцінювання відгуків повинне здійснюватися спеціально відібраною групою експертів, тому, як коректна оцінка дасть більш чітке уявлення про коментар і допоможе відсіяти ті які не мають відношення до конкретного ДІЗ. В зв'язку з цим потрібно, додати можливість автентифікації (тобто введення свого логіна і пароля) різних типів користувачів, з різним рівнем доступу. Але і в звичайних користувачів повинен бути спосіб яким вони зможуть засвідчити користь від прочитаного відгуку. Саме тому користувачам буде надана можливість відповісти на коротке питання «Відгук корисний?» натиснувши «так» або «ні», і інші користувачі будуть бачити що комусь цей відгук допоміг і можливо допоможе і їм.

Таким чином з'являється потреба у автентифікації двох типів користувачів, Експертів і звичайних користувачів.

При розробці даної БД було виділено такі сутності (Рис. 1):

Користувач - екземпляр сутності визначається власним унікальним номером. Ця сутність використовується для того, щоб користувачі могли додавати відгуки і вирішувати чи були корисними для них інші, а користувачі з більшим рівнем доступу іменовані як «Експерти» могли виставляти оцінки до коментарів і видаляти нерелевантні

Відгуки - кожен відгук має свій унікальний номер. У цій сутності знаходяться відгуки і основна інформація про них така як: автор відгуку і його оцінки;

Рисунок 1 - Сутності БД

Тепер опишемо саму модель предметної області (Рис. 2):

користувачі повинні проходити автентифікацію;

є два типи користувачів: звичайні користувачі і експерти;

всі користувачі можуть залишати свої відгуки і переглядати інші (на цьому спільні можливості закінчуються);

кожен відгук має чотири критерії оцінювання 3 - експерт і 1 користувацький;

експерт може виставити три типи оцінок для не оцінених відгуків або переоцінити оцінений, також може видалити відгук;

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

Рисунок 2 - Модель предметної області

На рисунку зображена модель предметної області і сутності. Сутності виділені різними кольорами.

1.3 Приведення до 3-ї нормальної форми

В ході логічного моделювання на першому кроці було запропоновано зберігати дані в одній сутності яка має наступні атрибути:

КОРИСТУВАЧІ_ВІДГУКИ(ID_КОРИСТУВАЧ, ЛОГІН, ПАРОЛЬ, ПРИОРІТЕТ,ID_ВІДГУК , ВІДГУК, АВТОР, ОЦІНКА, ГРАМОТНІСТЬ, ЗРОЗУМІЛІСТЬ, КОРИСТЬ)

ID_КОРИСТУВАЧ - ідентифікаційний номер користувача.

ЛОГІН - логін користувача яким він авторизується.

ПАРОЛЬ - пароль користувача яким він авторизується.

ПРИОРІТЕТ - тут визначаються якими можливостями буде наділений користувач.

ID_ВІДГУК - ідентифікаційний номер відгуку.

ВІДГУК - текст відгуку.

АВТОР - автор відгуку.

ОЦІНКА - основна оцінка відгуку.

ГРАМОТНІСТЬ - оцінка грамотності відгуку.

ЗРОЗУМІЛІСТЬ - оцінка зрозумілості відгуку.

КОРИСТЬ - критерій за яким видно чи був цей відгук корисний комусь.

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

З'являється проблема при зміненні даних в сутності, проблема має назву Аномалія обновлення.

В багатьох кортежах відбувається багато разове повторення одних і тих самих значень в атрибутах ЛОГІН, ПАРОЛЬ, ПРИОРІТЕТ, АВТОР. Крім того тут зберігаються незалежні одне від одного дані про користувачів і їх відгуки.

Аномалія вставки.

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

Аномалія видалення.

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

Відношення КОРИСТУВАЧІ_ВІДГУКИ знаходиться у першій нормальній формі(1НФ), але ще не знаходиться у 2 нормальній формі(2НФ).

Тому, що відношення має залежності від складного ключа такі як:

ID_КОРИСТУВАЧЛОГІН

ID_КОРИСТУВАЧПАРОЛЬ

ID_КОРИСТУВАЧПРИОРІТЕТ

Також є залежність відгуку від складного ключа

ID_ВІДГУКВІДГУК

ID_ВІДГУКАВТОР

ID_ВІДГУКОЦІНКА (і всі інші оцінки так само)

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

Відношення КОРИСТУВАЧІ_ВІДГУКИ декомпозується на дві КОРИСТУВАЧІ і ВІДГУКИ. І таким чином відношення переходить у 2НФ.

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

2. Проектування та реалізація бази даних на фізичному рівні

2.1 Обґрунтування вибору СКБД

Для фізичної реалізації БД було обрано SQLite.

SQLite - це бібліотека, написана на мові C, яка реалізує SQL механізм роботи з даними, іншими словами, движок баз даних.

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

SQLite бібліотека записує дані безпосередньо в файл на диску, а також дає можливість читати, обновлювати і шукати дані на основі мови запитів SQL, переважно орієнтуючись на стандарт SQL 92.

Основні переваги використання SQLite:

безкоштовне розповсюдження;

простота установки;

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

простота використання. На відміну від інших баз даних, SQLite являється без типовою базою. При створенні таблиці можна вказати лише імена полів, так як всі дані SQLite зберігає в форматі рядка(string). Припустим, ми об'явили стовбець як «INTEGER». SQlite дозволяє занести в цей рядок значення любого типу (999, «abc», «123», 678.525). І якщо значення яке вставляється -- не ціле, то SQlite намагається привести його до цілого. Тобто рядок «123» перетвориться в ціле 123, а решта значень запишуться «як є»;

продуктивність. Оскільки движок і інтерфейс цієї СКБД реалізовані, як єдине ціле, то величезною перевагою SQLite є висока продуктивність - для більшості типових задач додаток, побудований на SQLite, працює швидше, ніж при використанні MySQL в 2-3 рази і швидше PostgreSQL в 10-20 разів;

Рисунок 3 - Порівняння швидкості виконання основних операцій. За даними тестування на сайті - www.hwaci.com/sw/sqlite/speed.html

легка переносимість між платформами, веб-серверами та додатками.

Файли баз даних сумісні з різноманітними платформами (Windows, UNIX). Для переносу бази даних на веб-сервер необхідно лише перенести 1 файл. Резервне копіювання даних також здійснюється копіюванням файлу бази даних;

об'єктно-орієнтований інтерфейс.

Ще одною не менш важливою перевагою SQLite є можливість використання потужного об'єктно-орієнтованого інтерфейсу до SQLite, що дає змогу будувати високоефективні, легко розширювані додатки;

можливість зберігати дані в базі об'ємом до 2 терабайт.

SQLite дозволяє зберігати рядки і бінарні дані безмежної довжини.

Обмеження при використанні SQLite.

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

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

Таким чином SQLite завдяки своїй простоті і швидкості є хорошим вибором для цього вирішення задач поставлених у цьому КП.

2.2 Фізична ER-діаграма БД

Дослідивши предметну область і вияснивши, що необхідно зробити для створення потрібної нам БД, були виділені необхідні нам сутності із їх атрибутами і приведеними до 3НФ. Також розглянувши декілька СКБД була віддана перевага СКБД SQLite, за її швидкість і зручність в перенесенні. І оскільки виділені сутності були приведені до 3НФ і цим позбавлені від різних аномалій і надлишковості в даних, які будуть зберігатися. Прийшов час створити фізичну ER-діаграму, для БД описаної в першому розділі, див. Рисунок 4.

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

у кожного користувача є свій логін і пароль за допомогою якого вони авторизуються у програмі;

кожен відгук повинен мати унікальний ідентифікатор, текстове значення(сам відгук) і ім'я автора відгуку;

також до відгуку повинні буди прикріплені його критерії оцінювання.

Рисунок 4 - Сформовані сутності з їх атрибутами

3. Реалізація бази даних та розробка програмного забезпечення по веденню бази даних

3.1 Вибір засобів розробки інтерфейсу програмного забезпечення

Дана програма буде написана мовою програмування C#, в середовищі розробки Visual Studio 2012 на платформі .NET, З використанням Бази даних SQLLite.

Visual C# надає розробникам сучасну, компонентно-орієнтовану мову, яка дозволяє швидко конструювати чудові рішення, керовані даними. Можливості C# дозволяють створювати рішення для широкого кола клієнтів, включаючи веб - програми, програми на основі Microsoft Windows Forms, додатки для “тонких” та інтелектуальних клієнтів. На відміну від Object Pascal в С# підпрограми реалізовані тільки у вигляді функцій, проте спеціальний тип функції void не повертає ніякого значення. Саме тому деякі функції таким чином і були реалізовані.

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

Синтаксис C# близький до С++ і Java. Мова має строгу статичну типізацію, підтримує поліморфізм, перевантаження операторів, вказівники на функції-члени класів, атрибути, події, властивості, винятки, коментарі у форматі XML. Перейнявши багато що від своїх попередників -- мов С++, Delphi, Модула і Smalltalk -- С#, спираючись на практику їхнього використання, виключає деякі моделі, що зарекомендували себе як проблематичні при розробці програмних систем: так, C# не підтримує множинне спадкування класів (на відміну від C++) або виведення типів (на відміну Haskell).

C++ Builder -- середовище швидкої розробки (RAD), що випускається компанією Codegear, дочірньою фірмою компанії Embarcadero (раніше Borland). Призначена для написання програм на мові програмування C++. C++ Builder об'єднує Бібліотеку візуальних компонентів і середовище програмування (IDE), написане на Delphi з компілятором C++. Цикл розробки аналогічний Delphi, але з істотними поліпшеннями, доданими в C++ Builder. Більшість компонентів, розроблених в Delphi, можна використовувати і в C++ Builder без модифікації, але, на жаль, не навпаки.

C++ Builder містить інструменти, які дозволяють здійснювати справжню візуальну розробку Windows-програм методом drag-and-drop, спрощуючи програмування завдяки WYSIWYG редакторові інтерфейсу, вбудованому в його середовище розробки.

Microsoft Visual Studio -- лінійка продуктів фірми Майкрософт, що включають інтегроване середовище розробки програмного забезпечення і ряд інших інструментальних засобів.

Visual Studio 2010 випущена 12 квітня 2010 разом з. NET Framework 4.0. Visual Studio включає підтримку мов C # 4.0.

Аналізуючи існуючі засоби розробки програмних продуктів, виявлено, що для реалізації поставленої задачі найкраще підходить Visual Studio, оскільки засоби CodeGear, Delphi/С++ та Lazarus є застарілими порівняно з Visual Studio.

3.2 Створення інтерфейсу для роботи з базою даних

Опис модулів

Створення інтерфейсу відбувається по моделі описаній в розділі 1.2 (Рис. 2). Далі будуть описані модулі які будуть застосовані при створенні даного програмного продукту:

модуль Авторизації. (Form1)

Даний модуль приймає данні в виді двох рядків тексту логін і пароль, і виясняє чи є в базі такий логін і чи відповідає введений пароль цьому логіну;

модуль введення-виведення. (Form2 - Вкладка «відгуки»)

В цьому модулі є можливість додавання відгуків і свого імені(ім'я автора), після чого він буде доданий в БД і на екран у вигляді списку будуть виведені всі відгуки у порядку спадання по оцінках, щоб можна було переглянути всі відгуки;

модуль Редагування. (Form2 - Вкладка «Оцінювання»)

Цей модуль доступний для користувачів з рівнем доступу «EXPERT», він може виводити на екран два види списків: повний список з усіма відгуками та їх оцінками, список в якому виводяться лише не оцінені відгуки. Також цей модуль дає можливість оцінювати або змінювати оцінку любого вибраного відгуку за трьома критеріями: оцінка, грамотність, зрозумілість. Також є можливість видаляти відгуки;

модуль для взаємодії з БД. (DBClass)

У цьому модулі є під модулі для доступу до бази даних, її редагування та зчитування з неї. Є такі під модулі:

модуль оцінювання (mark) - цей модуль приймає усі три види оцінок і вичислює одну основну яка буде виведена на екран;

модуль заповнювання списку (CompleteList) - Цей модуль працює лише з двома об'єктами: Listview і List він зчитує з БД відгуки і заповняє ними Listview, а об'єкт List заповнює відповідними id-номерами;

модуль заповнювання неоціненими відгуками (CompleteListNew) - він аналогічний попередньому, єдина відмінність це те що Listview заповнюється лише відгуками з оцінкою 0 (тобто не оціненими);

модуль додавання (AddItem) - цей модуль приймає два текстових значення(ім'я автора та його відгук) і додає їх до БД;

модуль видалення (DleteItem) - приймає одне числове значення id-номер відгуку і за ним видаляє цей відгук із БД, id-номер отримуємо при виборі відгуку із списку після чого визначається його індекс в Listview і за аналогічним індексом в List отримуємо id-номер цього відгуку.

модуль зміни оцінки(EditMark) - модуль пирймає значення трьох видів оцінювання, і id-номер вибраного відгуку, та змінює оцінку відгуку в БД;

модуль значення користі (EditLike) - Модуль приймає значення, «Так» або «Ні» і змінює значення в БД.

Розробка програмних модулів

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

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

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form1());

}

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

public string[] user;

Та змінна підключення до БД:

public SQLiteConnection con;

Яка отримує рядок підключення з публічного поля статиного класу DBClass:

con = DBClass.con;

Form1 - Це перше вікно яке з'являється перед користувачем, воно призначене для того щоб користувач міг авторизувати себе для програми, і визначити ім'я та пріоритет доступу користувача. (Рис. 5)

Їй належать такі елементи:

button1 - кнопка «Вхід»;

groupBox1 - рамка для інших елементів з текстом «Авторизація»;

label1, label2 - з текстом «Ім'я:» і «Пароль:»;

comboBox1 - в якому із списку можна вибрати два імені;

textBox1 - в який потрібно вводити пароль.

Рисунок 5 - Вікно авторизації

Блок Авторизації через базу даних:

private void button1_Click(object sender, EventArgs e)

{

user = new string[2];

comboBox1.SelectedItem.ToString().Trim();

tbPassword.Text.Trim();

if (tbPassword.Text.Trim() != "" && comboBox1.SelectedItem.ToString() != "")

{

SQLiteCommand cmd = con.CreateCommand();

cmd.CommandText = @"SELECT UserName, Password, Priority FROM Users";

try

{

con.Open();

using (SQLiteDataReader reader = cmd.ExecuteReader())

{

while (reader.Read())//Зчитування результатів

{

//Порівняння

if (comboBox1.SelectedItem.ToString() == reader.GetString(0).TrimEnd() && tbPassword.Text == reader.GetString(1).TrimEnd())

{

user[0] = reader.GetString(0).TrimEnd();//Ім'я користувача

user[1] = reader.GetString(2).TrimEnd();//Рівень доступу

}

}

}

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

con.Close();

}

}

else { MessageBox.Show("Необхідно щоб усі поля були заповнені"); }

if (user[0] != null)

{

MessageBox.Show("Вітаю "+user[0]);

Form2 frm = new Form2();

frm.user = this.user;//передача імені і рівня

this.Hide();

frm.ShowDialog();

this.Show();

}

else

{

tbPassword.Clear();

tbPassword.Focus();

MessageBox.Show("Ім'я або пароль не вірні");

}

}

У разі правильності введених даних, перед користувачем відкриється нове вікно Form2 (рис. 6).

Статичний клас для взаємодії з БД DBClass, містить рядок підключення (Connection string) до БД яким користуються усі модулі:

public static SQLiteConnection con = new SQLiteConnection("Data Source=KomentMark.db");

У ньому є блок для реалізації завантаження з БД списку відгуків (рис. 7):

public static ListView CompleteList(ListView list, List<int> ListID)

{

list.Items.Clear();

ListID.Clear();

SQLiteCommand cmd = con.CreateCommand();

cmd.CommandText = @"SELECT * FROM Koments ORDER BY (Mark*0.5)+(MarkLiter*0.25)+(MarkIntel*0.25) desc";

try

{

con.Open();

using (SQLiteDataReader reader = cmd.ExecuteReader())

{

while (reader.Read())

{

ListID.Add((int)reader["id"]);

ListViewItem item = new ListViewItem(reader["Autor"].ToString().TrimEnd());

item.SubItems.Add(reader["Koment"].ToString().TrimEnd());

item.SubItems.Add(mark(Convert.ToDouble(reader["Mark"]), Convert.ToDouble(reader["MarkLiter"]), Convert.ToDouble(reader["MarkIntel"])).ToString());

if (reader["Like"].ToString() != "")

item.BackColor = (int)reader["Like"] == 1 ? System.Drawing.Color.Green : System.Drawing.Color.Red;

list.Items.Add(item);

}

}

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

con.Close();

}

list.Select();

return list;

}

Рисунок 6 - Головне функціональне вікно

Рисунок 7 - Список відгуків

Блок для завантаження списку не оцінених відгуків (Рис. 8):

public static ListView CompleteListNew(ListView list, List<int> ListID)

{

list.Items.Clear();

ListID.Clear();

SQLiteCommand cmd = con.CreateCommand();

cmd.CommandText = @"SELECT * FROM Koments WHERE Mark=0";

try

{

con.Open();

using (SQLiteDataReader reader = cmd.ExecuteReader())

{

while (reader.Read())

{

ListID.Add((int)reader["id"]);

ListViewItem item = new ListViewItem(reader["Autor"].ToString().TrimEnd());

item.SubItems.Add(reader["Koment"].ToString().TrimEnd());

item.SubItems.Add(mark(Convert.ToDouble(reader["Mark"]), Convert.ToDouble(reader["MarkLiter"]), Convert.ToDouble(reader["MarkIntel"])).ToString());

list.Items.Add(item);

}

}

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

con.Close();

}

list.Select();

return list;

}

Рисунок 8 - Список неоцінених відгуків

Функція для вирахування загальної оцінки:

private static double mark(double mark, double mark1, double mark2)

{

mark *= 0.5;

mark += mark1 * 0.25;

mark += mark2 * 0.25;

return mark;

}

Блок додавання відгуків у БД (рис. 9):

public static void AddItem(string Koment, string Autor) {

SQLiteCommand cmd = con.CreateCommand();

cmd.CommandText = "insert into Koments(Koment, Autor) values(@Koment,@Autor)";

cmd.Parameters.AddWithValue("@Koment", Koment);

cmd.Parameters.AddWithValue("@Autor", Autor);

try

{

con.Open();

cmd.ExecuteNonQuery();

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

cmd.Dispose();

con.Close();

}

}

Рисунок 9 - Блок додавання відгуків

Блок видалення відгуків з списку і БД (рис. 10):

public static void DleteItem(int id)

{

SQLiteCommand cmd = con.CreateCommand();

cmd.CommandText = "DELETE FROM Koments WHERE id="+id;

try

{

con.Open();

cmd.ExecuteNonQuery();

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

cmd.Dispose();

con.Close();

}

}

Блок задавання і редагування оцінки (рис. 10):

public static void EditMark(int id, int Mark, int MarkLiter, int MarkIntel)

{

SQLiteCommand cmd = con.CreateCommand();

cmd.CommandText = "UPDATE Koments SET Mark=" + Mark + ", MarkLiter=" + MarkLiter +

", MarkIntel=" + MarkIntel + " WHERE id=" + id;

try

{

con.Open();

cmd.ExecuteNonQuery();

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

cmd.Dispose();

con.Close();

}

}

Рисунок 10 - Блок оцінювання і видалення

Блок оцінки користі відгуку (рис. 11):

public static void EditLike(int id, int Like)

{

SQLiteCommand cmd = con.CreateCommand();

cmd.CommandText = "UPDATE Koments SET [Like]=" + Like + " WHERE id=" + id;

try

{

con.Open();

cmd.ExecuteNonQuery();

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

cmd.Dispose();

con.Close();

}

}

Рисунок 11 - Блок оцінки користі

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

Блок завантаження Form2 :

private void Form2_Load(object sender, EventArgs e)

{

Admission(user);

DBClass.CompleteList(listView1, ListID);

DBClass.CompleteList(listView2, ListID);

}

Модуль для налаштування функцій вікна, в залежності від доступу користувача:

void Admission(string[] user)

{

textBoxAutor.Text = user[0];

this.Text = user[0];

switch (user[1])

{

case "USER":

{//видалення вкладки "Оцінювання"

tabControl1.TabPages.Remove(tabControl1.TabPages[1]);

}

break;

case "EXPERT":

{

groupBox2.Dispose();

}

break;

}

}

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

Рисунок 12 - Перегляд довгих відгуків

У нижньому лівому куті форми розташована кнопка «Вийти.», натиснувши на неї виконується команда this.Close(); вона закриває form2.

Кнопка для додавання відгуку, зчитує дані з текстового поля в якому користувач вводить свій відгук, і текстового поля в якому написане його ім'я див (рис. 9) .

Код виконання кнопки:

if (textBoxKoment.Text != "" || textBoxAutor.Text != "")

{

DBClass.AddItem(textBoxKoment.Text, textBoxAutor.Text);

DBClass.CompleteList(listView1, ListID);

textBoxKoment.Clear();

}

else

{

MessageBox.Show("Не дозволяється додаватий пустий відгук чи не вказувати ім'я");

}

Також у програмі передбачений вивід повідомлень про помилки, у разі помилок при підключенні до БД та спроб додавання до БД пустих полів.

3.3 Інструкція користувача

При запуску програми з'являється форма авторизації (Рис. 13).

Рисунок 13 - Форма авторизації

Для того щоб авторизуватись, потрібно в полі «Ім'я» вибрати, до якої категорії ви відноситесь «user» чи «expert», в полі «Пароль» автоматично введено 1111. Далі потрібно натиснути кнопку «Вхід».

Після чого перед користувачем з'являється головне функціональне вікно з списком відгуків (рис. 14).

Рисунок 14 - Головне функціональне вікно

Додавання відгуків

У полі «Новий відгук» потрібно написати свій відгук, а у полі «Ваше ім'я» потрібно вписати своє ім'я, після чого натиснути кнопку «Додати відгук».

Детальніший перегляд відгуку

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

Оцінка користі(Доступ тільки для user)

Потрібно вибрати(виділити) рядок відгуку який ви хочете оцінити далі під списком відгуків з'явиться поле в якому буде витання «Відгук корисний» і і варіанти відповіді «Так» або «Ні», натиснувши на відповідний варіант ви відповідно оціните відгук і він буде виділений відповідним кольором.

Рисунок 15 - Поле оцінки користі

Далі будуть перераховані функції доступні лише користувачеві «expert». Перейдіть на вкладку «Оцінювання» див. (рис. 16).

Список відгуків.

В Списку можуть відображатися як всі відгуки так і ті що не були оцінені експертом. Для того щоб в списку були відображені тільки не оцінені відгуки потрібно поставити галочку у полі «Тільки не оцінені». Якщо зняти галочку з цього поля то будуть відображені всі відгуки.

Оцінювання відгуку.

Виділіть із списку відгук який ви хочете оцінити і перетягуючи повзунки під списком ви оцінюєте цей відгук за трьома критеріями, після того як ви виставите оцінки, натисніть кнопку «Оцінити», відгуку будуть присвоєні ці оцінки.

Видалення відгуку.

Для видалення відгуку необхідно виділити відгук який ви бажаєте видалити, та натиснути кнопку «Видалити».

Рисунок 16 - Вкладка «Оцінювання»

Висновок

У розділі «Дослідження предметної області» було проведено огляд новітніх інформаційних технологій, та програмного забезпечення, що могли б бути використані для розробки сучасного, ефективного програмного продукту.

У розділі «Проектування та реалізація бази даних на фізичному рівні» було обґрунтовано, чому вибрана саме SQLite описавши її переваги і порівнявши з іншими СКБД. Також була описана фізична модель БД і створена ER-діаграма.

У розділі «Реалізація бази даних та розробка програмного забезпечення по веденню бази даних» описано всі компоненти форм, основні модулі програми які поділені на блоки, розписані і проілюстровані. У підрозділі «Інструкція користувача» описано детальна інструкція та послідовні дії користувача в експлуатації програмного засобу. В підрозділі «Вимоги до технічних засобів» описано мінімальні вимоги до системи комп'ютера для нормальної роботи даної програми.

Для реалізації даної курсової роботи була використана система керування базою даних SQLite. В ході виконання курсової роботи було описано усі сутності БД і створено інтуїтивно простий інтерфейс для взаємодії з БД.

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

Перелік посилань

Чарльз Петцольд. Программирование с использованием Microsoft Windows Forms: довідник / Ч. П. Петцольд - Русская Редакция, -Питер,2006 - 432с.

Фаронов В.В. Программирование на языке С#: довідник / В.В. Фаронов - Русская Редакция, -Питер, 2007 - 240с.

Бібліотека класів С# [Електронний ресурс]. - (Дата звернення: 19.05.13) - Режим доступу: http://msdn.microsoft.com/

Форум програмістів .NET [Електронний ресурс]. - (Дата звернення: 19.05.13) - Режим доступу: http://forum.vingrad.ru/forum/

Каталог компаній [Електронний ресурс]. - (Дата звернення: 19.05.13) - Режим доступу: http://mapia.ua/ua/pages/content_guidelines

Форум програмістів [Електронний ресурс]. - (Дата звернення: 19.05.13) - Режим доступу: http://habrahabr.ru/post/142815/

Офіційний сайт СКБД SQLite [Електронний ресурс] (Дата звернення: 19.05.13) - Режим доступу: http://www.sqlite.org/

«Сайтостроение от А до Я» [Електронний ресурс] (Дата звернення: 19.05.13) - Режим доступу: http://www.internet-technologies.ru/articles/article_109.html

Yuriy Forkun. The Model of Social Communication Systems. Second International Academic Conference «Information, Communication, Society», MAY 16-19 2013 LVIV - SLAVSKE, UKRAINE

Размещено на http://www.allbest.ru

Додаток

(Довідковий)

Код програми

Form1:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

namespace Оцінка_якості_відгуків

{

public partial class Form1 : Form

{

public SqlConnection con;//створення змінної для підключення до БД перед появою вікна

public Form1()

{

InitializeComponent();

con = DBClass.con;//присвоєння рядка підключення який витягуєм з публічного поля статичного класу DBClass

comboBox1.SelectedIndex = 0; //вибір першого імені в списку, щоб запобігти пустому значенню

}

public string[] user;//створення масиву в який буде записане ім'я і пріорітет, для перелачі у наступну форму

private void button1_Click(object sender, EventArgs e)

{

user = new string[2];

comboBox1.SelectedItem.ToString().Trim();

tbPassword.Text.Trim();

if (tbPassword.Text.Trim() != "" && comboBox1.SelectedItem.ToString() != "")

{

SqlCommand cmd = con.CreateCommand();

cmd.CommandText = @"SELECT UserName, Password, Priority FROM Users";

try

{

con.Open();

using (SqlDataReader reader = cmd.ExecuteReader())

{

while (reader.Read())//Зчитування результатів

{

//Порівняння

if (comboBox1.SelectedItem.ToString() == reader.GetString(0).TrimEnd() && tbPassword.Text == reader.GetString(1).TrimEnd())

{

user[0] = reader.GetString(0).TrimEnd();//Ім'я користувача

user[1] = reader.GetString(2).TrimEnd();//Його рівень доступу

}

}

}

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

con.Close();

}

}

else { MessageBox.Show("Необхідно щоб усі поля були заповнені"); }

if (user[0] != null)

{

MessageBox.Show("Вітаю "+user[0]);

Form2 frm = new Form2();

frm.user = this.user;//передача імені і рівня доступу в наступну форму

this.Hide();

frm.ShowDialog();

this.Show();

}

else

{

tbPassword.Clear();

tbPassword.Focus();

MessageBox.Show("Ім'я або пароль не вірні");

}

}

}

}

Form2:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace Оцінка_якості_відгуків

{

public partial class Form2 : Form

{

public Form2()

{

InitializeComponent();

}

public string[] user = new string[2];//масив для визначення доступу і імені

List<int> ListID = new List<int>();//список id-номерів відгуків

private void Form2_Load(object sender, EventArgs e)

{

Admission(user);

DBClass.CompleteList(listView1, ListID);

DBClass.CompleteList(listView2, ListID);

}

void Admission(string[] user)

{

textBoxAutor.Text = user[0];

this.Text = user[0];

switch (user[1])

{

case "USER":

{

tabControl1.TabPages.Remove(tabControl1.TabPages[1]);//видалення вкладки "Оцінювання"

}

break;

case "EXPERT":

{

groupBox2.Dispose();

}

break;

}

}

private void button2_Click(object sender, EventArgs e)

{

this.Close();

}

private void button3_Click(object sender, EventArgs e)

{

if (textBoxKoment.Text != "" || textBoxAutor.Text != "")//Перевірка чи поля не пусті

{

DBClass.AddItem(textBoxKoment.Text, textBoxAutor.Text);//додавання відгуку в БД

DBClass.CompleteList(listView1, ListID);//Обновлення списку в програмі

textBoxKoment.Clear();//очищення поля в якому був відгук

}

else

{

MessageBox.Show("Не дозволяється додаватий пустий відгук чи не вказувати ім'я");

}

}

private void button1_Click(object sender, EventArgs e)

{

DBClass.EditMark(ListID[listView2.FocusedItem.Index], markTrackBar.Value, markLiterTrackBar.Value,

markIntelTrackBar.Value);

checkBox1_CheckedChanged(sender, e);

}

private void button4_Click(object sender, EventArgs e)

{

DBClass.DleteItem(ListID[listView2.FocusedItem.Index]);

DBClass.CompleteList(listView2, ListID);

}

private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)

{

if (listView1.SelectedItems.Count == 1)

{

try

{

richTextBox1.Text = listView1.FocusedItem.SubItems[1].Text;

groupBox2.Visible = true;

}

catch (Exception) { }

}

else

{

richTextBox1.Clear();

groupBox2.Visible = false;

}

}

private void listView2_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)

{

if (listView2.SelectedItems.Count == 1)

{

groupBox1.Enabled = true;

}

else

{

groupBox1.Enabled = false;

}

}

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)

{

if (tabControl1.SelectedIndex == 0)

{

DBClass.CompleteList(listView1, ListID);

}

else

{

checkBox1_CheckedChanged(sender, e);

}

}

private void checkBox1_CheckedChanged(object sender, EventArgs e)

{

if (checkBox1.Checked)

{

DBClass.CompleteListNew(listView2, ListID);

}

else DBClass.CompleteList(listView2, ListID);

groupBox1.Enabled = false;

}

private void markTrackBar_Scroll(object sender, EventArgs e)

{

toolTip1.SetToolTip(markTrackBar, markTrackBar.Value.ToString());

labelMark.Text = "Оцінка: " + markTrackBar.Value.ToString();

}

private void markLiterTrackBar_Scroll(object sender, EventArgs e)

{

toolTip1.SetToolTip(markLiterTrackBar, markLiterTrackBar.Value.ToString());

labelMarkLiter.Text = "Грамотність: " + markLiterTrackBar.Value.ToString();

}

private void markIntelTrackBar_Scroll(object sender, EventArgs e)

{

toolTip1.SetToolTip(markIntelTrackBar, markIntelTrackBar.Value.ToString());

labelMarkIntel.Text = "Зрозумілість: "+markIntelTrackBar.Value.ToString();

}

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)

{

LinkLabel l = (LinkLabel)sender;

int L = l.Text == "Так" ? 1 : 0;

DBClass.EditLike(ListID[listView1.FocusedItem.Index], L);

DBClass.CompleteList(listView1, ListID);

}

}

}

DBClass:

using System;

using System.Collections.Generic;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

namespace Оцінка_якості_відгуків

{

class DBClass

{

public static SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=" + System.Windows.Forms.Application.StartupPath + @"\KomentMark.mdf;Integrated Security=True");

//public static SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=D:\СОФТ\БІБЛІОТЕКА\Навчання\Програми\Оцінка якості відгуків\Оцінка якості відгуків\KomentMark.mdf;Integrated Security=True");

//Функція для вирахування одної основної оцінки з інших

private static double mark(double mark, double mark1, double mark2)

{

mark *= 0.5;

mark += mark1 * 0.25;

mark += mark2 * 0.25;

return mark;

}

/// <summary>

/// Заповнення ListView данними з таблиці, і List кодами id всіх записів.

/// </summary>

public static ListView CompleteList(ListView list, List<int> ListID)

{

list.Items.Clear();

ListID.Clear();

SqlCommand cmd = con.CreateCommand();

cmd.CommandText = @"SELECT * FROM Koments ORDER BY (Mark*0.5)+(MarkLiter*0.25)+(MarkIntel*0.25) desc";

try

{

con.Open();

using (SqlDataReader reader = cmd.ExecuteReader())

{

while (reader.Read())

{

ListID.Add((int)reader["id"]);

ListViewItem item = new ListViewItem(reader["Autor"].ToString().TrimEnd());

item.SubItems.Add(reader["Koment"].ToString().TrimEnd());

item.SubItems.Add(mark(Convert.ToDouble(reader["Mark"]), Convert.ToDouble(reader["MarkLiter"]), Convert.ToDouble(reader["MarkIntel"])).ToString());

if (reader["Like"].ToString() != "")

item.BackColor = (int)reader["Like"] == 1 ? System.Drawing.Color.Green : System.Drawing.Color.Red;

list.Items.Add(item);

}

}

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

con.Close();

}

list.Select();

return list;

}

/// <summary>

/// Заповнення ListView тільки тими данними з таблиці, які не оцінені, і List кодами id цих записів.

/// </summary>

public static ListView CompleteListNew(ListView list, List<int> ListID)

{

list.Items.Clear();

ListID.Clear();

SqlCommand cmd = con.CreateCommand();

cmd.CommandText = @"SELECT * FROM Koments WHERE Mark=0";

try

{

con.Open();

using (SqlDataReader reader = cmd.ExecuteReader())

{

while (reader.Read())

{

ListID.Add((int)reader["id"]);

ListViewItem item = new ListViewItem(reader["Autor"].ToString().TrimEnd());

item.SubItems.Add(reader["Koment"].ToString().TrimEnd());

item.SubItems.Add(mark(Convert.ToDouble(reader["Mark"]), Convert.ToDouble(reader["MarkLiter"]), Convert.ToDouble(reader["MarkIntel"])).ToString());

list.Items.Add(item);

}

}

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

con.Close();

}

list.Select();

return list;

}

/// <summary>

/// Додавання до таблиці відгука та імені його автора.

/// </summary>

public static void AddItem(string Koment, string Autor)

{

SqlCommand cmd = con.CreateCommand();

cmd.CommandText = "insert into Koments(Koment, Autor) values(@Koment,@Autor)";

cmd.Parameters.AddWithValue("@Koment", Koment);

cmd.Parameters.AddWithValue("@Autor", Autor);

try

{

con.Open();

cmd.ExecuteNonQuery();

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

cmd.Dispose();

con.Close();

}

}

/// <summary>

/// Видалення записів за id кодом.

/// </summary>

public static void DleteItem(int id)

{

SqlCommand cmd = con.CreateCommand();

cmd.CommandText = "DELETE FROM Koments WHERE id="+id;

try

{

con.Open();

cmd.ExecuteNonQuery();

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

cmd.Dispose();

con.Close();

}

}

/// <summary>

/// Додавання або редагування оцінок за id запису.

/// </summary>

public static void EditMark(int id, int Mark, int MarkLiter, int MarkIntel)

{

SqlCommand cmd = con.CreateCommand();

cmd.CommandText = "UPDATE Koments SET Mark=" + Mark + ", MarkLiter=" + MarkLiter +

", MarkIntel=" + MarkIntel + " WHERE id=" + id;

try

{

con.Open();

cmd.ExecuteNonQuery();

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

cmd.Dispose();

con.Close();

}

}

public static void EditLike(int id, int Like)

{

SqlCommand cmd = con.CreateCommand();

cmd.CommandText = "UPDATE Koments SET [Like]=" + Like + " WHERE id=" + id;

try

{

con.Open();

cmd.ExecuteNonQuery();

}

catch (Exception ex) { MessageBox.Show(ex.Message); }

finally

{

cmd.Dispose();

con.Close();

}

}

}

}

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


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

  • Систематизація знань як основна функція бази даних. Логічне та фізичне проектування бази даних. Створення таблиць у базі даних, визначення основних зв'язків. Інструментальні засоби проектування та створення програмного забезпечення для обробки даних.

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

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

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

  • Системний аналіз бази даних за вхідною та вихідною документацією, визначення сутностей, атрибутів, зв’язків. Створення логічної моделі бази даних із застосуванням нормалізації, алгоритм її роботи. Розробка програмного забезпечення та інтерфейсу СУБД.

    курсовая работа [946,8 K], добавлен 02.07.2015

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

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

  • Специфікація вимог для кожного з двох користувачів. Концептуальне та логічне проектування баз даних. Історія досліджень баз даних (програмного забезпечення). Система упрваління базами даних. Фази проектування баз даних: концептуальна, логічна, фізична.

    дипломная работа [105,8 K], добавлен 20.02.2010

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

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

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

    курсовая работа [63,2 K], добавлен 14.12.2010

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

    курсовая работа [35,6 K], добавлен 19.08.2012

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

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

  • База даних як організована структура, призначена для зберігання інформації. Проектування та реалізація в СУБД MS Access інформаційної системи "База даних Internet-ресурсів тестів з психології". Розробка логічної системи даних, інструкції користувача.

    курсовая работа [5,3 M], добавлен 22.10.2012

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