Розробка програмного продукту для автоматизації роботи санаторію з розміщення відпочиваючих
Дослідження поняття реляційної бази даних та системи управління базами даних. Обґрунтування вибору мови програмування для управління базою даних. Характеристики зв'язків предметної області. Проектування ER-моделі для предметної області "Санаторій".
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | украинский |
Дата добавления | 17.04.2020 |
Размер файла | 482,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ВСТУП
Санаторій -- лікувально-профілактичний заклад для лікування та оздоровлення з допомогою природних факторів (клімат, мінеральні води, лікувальні грязі, морські купання, сонцелікування тощо) у сполученні з дієтотерапією, фізіотерапією, медикаментозним лікуванням та іншими заходами. Існують санаторії загального типу і спеціалізовані -- відповідно до певних груп захворювань. Медичний профіль курортних санаторій залежить від лікувальних засобів курорту і встановлених для нього медичних показань; в місцеві санаторію направляють хворих для доліковування після виписки з лікарень і в тих випадках, коли поїздка на віддалені курорти може шкідливо позначитися на стані здоров'я. Санаторії можуть бути однопрофільними (для лікування однорідних захворювань) і багатопрофільними (з двома і більше спеціалізованими відділеннями).
Автоматизація такої діяльності, як розміщення відпочиваючих є необхідним і перспективним процесом. Комплексне використання сучасних інформаційних технологій дозволяє значно полегшити роботу санаторію. Комп'ютеризовані технології можуть застосовуватися на всіх етапах роботи санаторію. Метою моєї курсової є розробка програмного продукту для автоматизації роботи санаторію з розміщення відпочиваючих. Впровадження цього додатка значно полегшує і вдосконалює роботу службовця для розміщення відпочиваючого. обчислювальних задач, проте були створені для вирішення [1]. На даний момент часу існує достатня кількість подібних клієнтських додатків, що працюють з БД санаторіїв. Однак вони або не надають технічну підтримку і гарантії надійності, або ці додатки розраховані на досвідчених користувачів, що сильно ускладнює їх використання в звичайному санаторії. Виходячи з результатів проведеного огляду, можна зробити висновок, що існує потреба в розробці нового, повністю відповідного для цілей закладу програмного засобу.[3].
1. АНАЛІЗ ПРЕДМЕТНОЇ ОБЛАСТІ «САНАТОРІЙ»
У даному розділі буде детально розглянуто предметну область бази даних для санаторію, а саме: проаналізовано затверджену тему, розглянуто дані та ресурси предметної області, обґрунтовано вибір СУБД та мови програмування.
1.1 Предметна область
Виділимо наступних користувачів і опишемо їх вимоги до проектованої системи.
Коли новий відпочиваючий потрапляє в санаторій, він спочатку приходить на прийом до лікаря. Курортолог вносить в поля екранної форми ПІБ відпочиваючого, дату народження, місто проживання, професію, дату прибуття в санаторій, дату вибуття з санаторію, на підставі медкартки - список захворювань відпочиваючого, реальних і потенційних. Після цього лікар викликає на екран список потенційно можливих процедур для кожного захворювання, яким страждає відпочиваючий, а також список процедур, корисних на підставі професії, серед яких він вибирає ті процедури, які призначає відпочиваючому, і вводить кількість сеансів для кожної процедури, і для кожної процедури він може скласти коментар для працівника процедурного кабінету щодо проведення сеансів.
В процесі щоденної роботи з планування огляду відпочиваючих курортолог робить запити:
* для яких відпочиваючих настав день планового огляду;
* список відпочиваючих за певний період;
* число відпочиваючих по кожному захворюванню за певний період;
* перегляд статистики по певному хворому (його захворювання, призначені процедури, кількість призначених і пройдених сеансів); перегляд і редагування довідників професій, професійних захворювань, рекомендованих при певному захворюванні процедур
Працівник процедурного кабінету. Коли відпочиваючий приходить на процедури, працівник процедурного кабінету знаходить його запис, викликає форму з призначеними йому процедурами, читає коментар курортолога, потім проводить сеанс необхідної процедури і робить записи цього різновиду процедури відмітку про збільшення числа сеансів даної процедури, пройдених хворим.
Адміністратор програми. Адміністратор програми може переглядати список поточних користувачів, змінювати для користувачів, які не є адміністраторами, логін і пароль, також додавати нових користувачів.
1.2 Поняття реляційної бази даних та СУБД
У сферах діяльності сучасних підприємств користуються попитом різні бази даних. Це обумовлено тим, що даний розділ інформаційних технологій має значний ступінь застосовності в практичних ситуаціях і досить просто впроваджується в кожному конкретному випадку. До того ж в даний час існує безліч всіляких реалізацій баз даних (БД) і систем управління базами даних (СУБД).
База даних - це організована відповідно до певних правил і підтримувана в пам'яті комп'ютера сукупність даних, що характеризує актуальний стан деякої предметної області і використовувана для задоволення інформаційних потреб користувачів.
База даних - сукупність даних, що зберігаються у відповідності зі схемою даних, маніпулювання якими виконують відповідно до правил засобів моделювання даних.
База даних - сукупність взаємопов'язаних даних, спільно збережених в одному або декількох комп'ютерних файлах.
Дані в базі даних логічно структуровані (систематизовані) з метою забезпечення можливості їх ефективного пошуку і обробки в обчислювальній системі.
Структурованість передбачає явне виділення складових частин (елементів), зв'язків між ними, а також типізацію елементів і зв'язків, при яких з типом елемента (зв'язку) співвідносяться певні допустимі операції.
Багато фахівців вказують на поширену помилку, що складається в некоректному використанні терміну база даних замість терміну система управління базами даних. Ці поняття необхідно розрізняти.
Бази даних необхідні для зберігання і фільтрації інформації, для її обробки та обміну. В цілому, спектр застосування досить широкий. В усьому світі люди використовують БД, починаючи від звичайного користувача, закінчуючи найбільшими світовими корпораціями.
База даних - це сховище для великої кількості систематизованих даних, з якими можна робити певні дії. Під діями розуміється додавання, видалення, зміна, копіювання, упорядкування та інше.
Всі дані в БД можна представити у вигляді записів або об'єктів.
Для успішної роботи з БД необхідні якісь програмні засоби, за допомогою яких можна було б створювати і управляти БД. Для цього існують Системи Управління Базами Даних (СУБД).
СУБД - сукупність мовних та програмних засобів, що забезпечують створення, використання і ведення БД.
Існує два види СУБД: локальні і мережеві.
Локальні - це СУБД, що працюють на одному комп'ютері. До таких відносяться dBase, FoxPro, Microsoft Access, Paradox і т.д.
Мережеві - це СУБД, що дозволяють декільком комп'ютерам використовувати одну і ту ж БД за допомогою технології клієнт-сервер. Прикладом таких СУБД є InterBase, Oracle, Microsoft SQL Server і т.д.
Реляційна модель даних - це модель даних, де текстова чи числова інформація, що зображується за допомогою таблиць. Кожна таблиця, яка називається відношенням, складається з рядків, які називаються кортежами, та стовпчиків, які називаються атрибутами.
СУБД повинна забезпечувати реляційну модель роботи з даними. Сама модель має на увазі певний тип зв'язку між сутностями з різних таблиць. Щоб зберігати і працювати з даними, такий тип СУБД повинен мати певну структуру (таблиці). У таблицях кожен стовпець може містити дані різного типу. Кожен запис складається з безлічі атрибутів (стовпців) і має унікальний ключ, що зберігається в тій же таблиці всі ці дані взаємопов'язані між собою, як описано в реляційної моделі.
Існує 4 типи взаємозв'язку даних:
1) один до одного;
2) один до багатьох;
3) багато до одного;
4) багато до багатьох.
Вид взаємозв'язку один до одного означає, що кожен запис одного об'єкта БД буде вказувати на єдиний запис іншого об'єкта.
Один до багатьох означає, що одному запису об'єкта БД буде відповідати кілька записів інших об'єктів.
Багато до одного означає, що кільком записам об'єктів БД буде відповідати один запис іншого об'єкта.
Багато до багатьох встановлюється між двома типами об'єктів БД [5].
1.3 Обґрунтування вибору мови програмування для управління базою даних
Для реалізації даної БД було обрано СУБД MS SQL Server 2012. MS SQL Server - це реляційна СУБД, побудована на архітектурі клієнт-сервер. MS SQL Server орієнтований на використання в операційних системах Windows NT / 2000 і використовує у своїй роботі системні функції цих ОС, що значно спрощує архітектуру MS SQL Server, на відміну від інших СУБД, вимушених дублювати деякі функції ядра операційної системи. За рахунок такої тісної інтеграції з Windows NT / 2000, СУБД MS SQL Server працює на всіх платформах, для яких реалізована Windows NT / 2000 (Intel, Alpha, PowerPC та ін.), Підтримує велику кількість мережевих протоколів (TCP / IP, IPX / SPX і ін.).
MS SQL Server є розробкою корпорації Microsoft. Оскільки СУБД MS Access також є розробкою цієї корпорації, то очевидно, що між цими двома продуктами існує деяка спільність. Наприклад, інтерфейс конструктора таблиць, введення даних в них, опису схеми даних і т.д. в MS SQL Server, в значній мірі нагадує MS Access. MS Access може також використовуватися і в якості клієнтської частини MS SQL Server (Меню Файл / Зовнішні дані / Зв'язок з таблицями / Тип файлів: Бази даних ODBC / Кнопка New / Вибрати драйвер MS SQL Server). Втім, MS Access може використовуватися і в якості клієнта для доступу до бази даних Oracle і інших баз даних.
Однак SQL Server - це не просто покращений Access. Між цими СУБД є принципова різниця. Якщо Access базується на архітектурі файл-сервер і прийнятний для невеликих баз даних і невеликого числа користувачів (офісні СУБД), то SQL Server базується на архітектурі клієнт-сервер і застосовується в базах даних середнього розміру і великим числом користувачів (професійна СУБД). Навіть за тими позиціями, де можливості Access і SQL Server схожі, SQL Server значно перевершує Access. Так, наприклад, і в Access і в SQL Server реалізована система розмежування доступу до об'єктів бази даних (різні користувачі мають різні права по роботі з різними таблицями, запитами і т.д.). Однак в SQL Server обмеження доступу можна виставляти не тільки на таблицю в цілому, але навіть і на окремі її стовпці. Також в SQL Server підтримується механізм ролей. Роль - це набір прав доступу до об'єктів бази даних. Ролі для кожної бази даних можна визначати самостійно або користуватися заздалегідь визначеними ролями. Наприклад, роль адміністратори безпеки (security admin) - це користувачі які можуть допускати інших користувачів до роботи з базою даних, роль творці бази даних (db creators, database creators) - користувачі які можуть створювати і змінювати структуру бази даних і т.д.
Одна з головних відмінностей між Access і системами управління базами даних, подібними SQL Server, полягає в тому, що Access - це програма, яка керує базою даних на стороні клієнта. Якщо без технічних термінів, це означає, що Access виконується безпосередньо на вашому персональному комп'ютері. Процесори баз даних, такі як SQL Server, - це системи, що використовують сервер. Вони зберігають дані на високопродуктивному комп'ютері-сервері, до якого ви звертаєтеся зі звичайного ПК. Ця взаємодія відбувається за допомогою локальної мережі.
Також перевагою SQL Server є те, що він має вбудовану підтримку .NET Framework. Завдяки цьому, процедури бази даних, що зберігаються, можуть бути написані на будь-якій мові платформи .NET з використанням повного набору бібліотек, доступних для .NET Framework. На відміну від інших процесів, .NET Framework виділяє додаткову пам'ять і будує засоби керування SQL Server, не використовуючи вбудовані засоби Windows. Це підвищує продуктивність порівняно із загальними алгоритмами Windows, оскільки алгоритми розподілу ресурсів спеціально налагоджені для використання у структурах SQL Server.
1.4 Обґрунтування вибору мови програмування
Зважаючи на те, що для розробки даної курсової роботи було обрано СУБД MS SQL, то очевидно, що для реалізації програми для бази даних обраної предметної області найкращим рішенням є програмний каркас ASP.NET MVC, який, як і MS SQL, є продуктом компанії Microsoft і має досить високий рівень взаємодії з компонентами цієї СУБД. Інші мови програмування, як наприклад PHP, та програмні каркаси, що написані на їх основі, значно ускладнюють процес взаємодії MS SQL та програмних додатків[6].
ASP.NET - це технологія створення веб-додатків і веб-сервісів від компанії Майкрософт. Вона є складовою частиною платформи Microsoft.NET і розвитком старішої технології Microsoft ASP.
ASP.NET зовні багато в чому зберігає схожість із старішою технологією ASP, що дозволяє розробникам відносно легко перейти на ASP.NET. У той же час внутрішній устрій ASP.NET істотно відрізняється від ASP, оскільки вона заснована на платформі .NET і, отже, використовує всі нові можливості, що надаються цією платформою.
ASP.NET має ряд переваг над іншими мовами програмування[7]:
- компільований код виконується швидше, більшість помилок відловлюється ще на стадії розробки;
- значно поліпшена обробка помилок часу виконання, з використанням блоків try .. catch;
- користувальницькі елементи управління (controls) дозволяють виділяти часто використовувані шаблони, такі як меню сайту;
- використання елементів керування та подій;
- розширюваний набір елементів управління і бібліотек класів дозволяє швидше розробляти додатки;
- ASP.NET спирається на багатомовні можливості .NET, що дозволяє писати код сторінок на VB.NET, Delphi.NET, Visual C/C++, С# тощо;
- можливість кешування всієї сторінки або її частини для збільшення продуктивності;
- можливість кешування даних, що використовуються на сторінці;
- розширювана модель серверних елементів керування;
- наявність master-сторінок для завдання шаблонів оформлення сторінок;
- підтримка CRUD-операцій при роботі з таблицями через GridView;
- вбудована підтримка AJAX;
- ASP.NET має перевагу у швидкості в порівнянні з іншими технологіями, заснованими на скриптах.
Реалізовуватись програма буде на мові програмування C#.
На даний час, розроблена велика кількість мов програмування високого рівня, серед яких С, С++, С#, Java та ін.
C# - основна мова розробки програм на платформі .NET. У ній вдало поєднуються засоби програмування, що були випробувані з останніми нововведеннями[8].
Завдяки саме цій мові програмування, надається можливість для ефективного і дуже практичного написання програм, призначених для обчислювального середовища сучасних підприємств.
Це, без сумніву, одна з найважливіших та найбільш вдалих мов програмування XXI століття [9].
Головне в мові С# - реалізація принципів об'єктно-орієнтованого програмування (ООП). Об'єктно-орієнтована методика невід'ємна від С#.
У мові програмування С# поєднано риси двох найбільш вдалих мов програмування: С і C++.
Внаслідок того, що C# представляє собою поєднання з декількох мов, вона є такою ж синтаксично чистою як і Java, майже настільки ж простою, як VB, і такою ж потужною і гнучкою, як С++ [10].
Ключові особливості мови C#:
- автоматичне управління пам'яттю за допомогою «збірки сміття»;
- формальні синтаксичні конструкції для класів, інтерфейсів, структур і делегатів;
- підтримка анонімних методів, які дозволяють надавати вбудовану
- функцію скрізь, де потрібно тип делегата;
- можливість розширення функціональності існуючого типу (не створюючи його підкласи) з використанням розширення методів;
- синтаксис ініціалізації об'єктів, який дозволяє встановлювати значення властивостей під час створення об'єкта;
- робота з узагальненими типами зрозуміла, враховуючи можливість легкого відображення узагальнених даних на універсальні колекції System.
Отже, С# це проста та багатофункціональна мова програмування.
Вона за всіма параметрами цілком влаштовує власні вимоги та задовольняє потреби для розробки захисту для програмного продукту.
Та найголовнішим переконливим аргументом на користь даної мови програмування є те, що реалізація, що поєднує побудову надійного та ефективного коду, є важливим чинником, який сприяє успіху C# [11].
Отже, проаналізувавши всі мови програмування, можна зробити висновок, що С# - найкращий варіант для реалізації даної курсової роботи.
У даному розділі було проаналізовано предметну область, відповідно до теми курсової роботи, а саме санаторій, визначено необхідні дані та їхні атрибути.
Також, були розглянуті поняття реляційної бази даних та СУБД. Після проведення аналізу та порівняння існуючих СУБД, для використання у даній курсовій роботі, було обрано C# Windows Forms.
2. ПРОЕКТУВАННЯ БАЗИ ДАНИХ
В даному розділі буде описано проектування бази даних санаторію методом сутність-зв'язок, побудовано ER-модель бази даних та проведено нормалізацію відношень.
2.1 Проектування бази даних методом сутність-зв'язок
Визначимо сутності, які необхідні для проектування бази даних. Для заданої предметної необхідні будуть такі сутності:
? ВІДПОЧИВАЮЧИЙ;
? КІМНАТА;
? ЛІКАР;
? ПРОЦЕДУРА.
Для кожної сутності виберемо сукупність атрибутів та ключові атрибути.
? ВІДПОЧИВАЮЧИЙ:
Після визначення сутностей, зв'язків між ними, атрибутів та ключів, необхідно встановити ступінь зв'язку.
Зв'язки характеризуються ступенем зв'язку і класом належності сутності до зв'язку. Ступінь зв'язку - це відношення числа сутностей, що беруть участь в утворенні зв'язку. Ступінь зв'язку показує скільки безпосередніх зв'язків може мати екземпляр сутності з тими екземплярами сутностей, з якими він зв'язаний. Клас належності вказує, чи обов'язково екземпляри повинні приймати участь у зв'язку. Якщо екземпляри даної сутності повинні приймати учать у зв'язку, то участь називається обов'язковою («О»), а якщо екземпляри можуть не приймати участь у зв'язку - необов'язковою («НО»).
Отже, ступінь зв'язку вказує на кількість типів сутностей, охоплених даним зв'язком. Зв'язок зі ступенем два називається бінарний.
При проектуванні бази даних існує 6 випадків ступеню зв'язку між сутностями та класу належності, а саме:
· 1:1 (один до одного), клас належності обох сутностей є обов'язковим;
· 1:1, клас належності однієї сутності є обов'язковим;
· 1:1, клас належності обох сутностей є необов'язковим;
· 1:N, клас належності N-зв'язної сутності є обов'язковим;
· 1:N, клас належності N-зв'язної сутності є необов'язковим;
· N:N.
Для кожного з вказаних випадків існує відповідне правило:
1) якщо ступінь бінарного зв'язку дорівнює 1:1 і клас належності обох сутностей є обов'язковим, то потрібно лише одне відношення, первинним ключем якого може бути ключ будь-якого з двох відношень;
2) якщо ступінь бінарного зв'язку дорівнює 1:1 і клас належності однієї сутності є обов'язковим («О»), а другої не обов'язковим («НО»), то необхідно побудувати два відношення. На кожну сутність потрібно виділити одне відношення, при цьому ключ сутності повинен слугувати первинним ключем для відповідного відношення. Крім того ключ сутності, для якої клас належності є «НО», додається в якості атрибуту у відношення, що виділене для сутності з обов'язковим класом належності;
3) якщо ступінь бінарного зв'язку дорівнює 1:1 і клас належності обох сутностей є «НО», то необхідно використовувати три відношення, по одному для кожної сутності, ключі яких слугуватимуть в якості первинних у відповідних відношеннях та одного відношення для зв'язку серед своїх атрибутів. Відношення, що виділяється для зв'язку буде мати по одному ключу сутності від кожної сутності;
4) якщо ступінь бінарного зв'язку дорівнює 1:N та клас належності N-зв'язної сутності є «О», то достатнім є використання двох відношень по одному на кожну сутність за умови, що ключ кожної сутності слугує в якості первинного ключа для відповідного відношення. Додатково ключ N- зв'язної сутності повинен бути добавлений, як атрибут у відношення, що відводиться для однозв`язної сутності;
5) якщо ступінь бінарного зв'язку дорівнює 1:N та клас належності N-зв'язної сутності є «НО», то необхідно формувати три відношення: по одному для кожної сутності, при чому ключ кожної сутності слугує первинним ключем відповідної сутності та одного відношення для зв'язку. Зв'язок повинен мати серед своїх атрибутів ключ сутності кожної з сутностей.
КН: обов'язковий Тип зв'язку 1:N КН: обов'язковий
Рисунок 2.1 - ER - діаграма екземплярів сутностей Лікар - Відпочиваючий
6) якщо ступінь бінарного зв'язку дорівнює N:N, то для зберігання даних необхідно три відношення: по одному для кожної сутності, використовуючи в якості первинного ключа ключ відповідного відношення та одного відношення для зв'язку. Останнє повинно серед числа своїх атрибутів мати ключ кожної сутності.
Аналізуючи сутності та зв'язки між ними, було розроблено наступні діаграми ER-екземплярів для кожного зв'язку.
Визначимо типи зв'язків між даними сутями за допомогою ER-діаграм.
КН: обов'язковий Тип зв'язку 1:N КН: обов'язковий
Рисунок 2.2 - ER-діаграма екземплярів сутностей Лікар - Кімната
КН: необов'язковий Тип зв'язку N:N КН: обов'язковий
Рисунок 2.3 - ER-діаграма екземплярів сутностей Лікар - Процедура
Таблиця 2.1 Характеристики зв'язків предметної області.
Ім'я сутності 1 |
Ім'я сутності 2 |
Ім'я зв'язку |
Тип зв'язку |
Клас належності |
|
Лікар |
Відпочиваючий |
Реєструє |
1: N |
Обов'язковий Обов'язковий |
|
Лікар |
Кімната |
Надає |
1:N |
Обов'язковий Обов'язковий |
|
Лікар |
Процедура |
Здійснює |
N:N |
Необов'язковий Обов'язковий |
2.2 Проектування ER-моделі
ER-модель (від англ. Entity-relationship model, модель «сутність - зв'язок») - модель даних, що дозволяє описувати концептуальні схеми предметної області.
ER-модель використовується при високорівневому (концептуальному) проектуванні баз даних. З її допомогою можна виділити ключові сутності і позначити зв'язки, які можуть встановлюватися між цими сутностями.
Під час проектування баз даних відбувається перетворення ER-моделі в конкретну схему бази даних на основі обраної моделі даних (реляційної, об'єктної, мережевий або ін.).
ER-модель являє собою формальну конструкцію, яка сама по собі не наказує ніяких графічних засобів її візуалізації. Як стандартна графічної нотації, за допомогою якої можна візуалізувати ER-модель, була запропонована діаграма "сутність - зв'язок» (англ. Entity-relationship diagram, ERD, ER-діаграма).
Поняття ER-модель і ER-діаграма часто вже не розрізняють, хоча для візуалізації ER-моделей можуть бути використані і інші графічні нотації, або візуалізація може взагалі не застосовуватися (наприклад, використовуватися текстовий опис).
Модель була запропонована в 1976 році Пітером Ченем, їм же запропонована і найпопулярніша графічна нотація для моделі.
ER-модель для предметної області «Санаторій» представлена на рисунку 2.4.
На основі ER - моделі предметної області, використовуючи правила, сформуємо попередні відношення які описують предметну область «Санаторій»:
- (<ID відпочиваючого>, ПІБ, ІН санаторно-курортної карти, дата народження, місто проживання, професія);
- (<ID кімнати>, № кімнати, захворювання, кількість місць);
- (<ID відпочиваючого, дата поселення>, ID кімнати, дата виселення);
- (<ID процедури >, найменування);
- (<ID відпочиваючого, Дата поселення, ID Процедури >).
Рисунок 2.4 ? ER-модель для предметної області «Санаторій»
2.3 Нормалізація отриманих відношень
Нормалізація - це розбивка таблиці на дві або більше, які характеризуються кращими властивостями при доповнені, зміні і вилучені даних. Кінцева мета нормалізації зводиться до отримання такого проекту бзи даних, у якому кожний факт з'являється лише в одному місці. Під час розробки бази даних на основі універсального відношення доводиться мати справу з надмірністю даних. Крім того може виникнути ряд проблем, називаних аномаліями вставки, видалення і відновлення.
Виключення аномалій досягається шляхом видалення з відношень небажаних функціональних залежностей, у ході якого відбувається декомпозиція відношень на ряд інших відношень, що є проекціями вихідного. Цей процес називається нормалізацією [9]. Далі на основі проведеного аналізу потрібно скласти універсальне відношення для даної задачі. Універсальне відношення - це відношення, що включає в себе усі атрибути, які можуть знадобитись для вирішення даної задачі.
УНІВЕРСАЛЬНЕ ВІДНОШЕННЯ:
R (ID відпочиваючого, ПІБ, , ІН санаторно-курортної карти, дата народження, місто проживання, професія, ID кімнати, № кімнати, захворювання, кількість місць, ID відпочиваючого, дата поселення, дата виселення, ID процедури, найменування).
Тепер необхідно визначити первинний ключ для даного відношення.
ПЕРВИННИЙ КЛЮЧ:
< ID відпочиваючого, Дата поселення, ID процедури >
Виконаємо нормалізацію відношення. Відношення знаходиться в 1НФ, якщо усі не ключові атрибути функціонально залежать від ключа.
1НФ: R(< ID відпочиваючого, Дата поселення, ID процедури >, ПІБ, ІН санаторно-курортної карти, дата народження, місто проживання, професія, ID кімнати, № кімнати, захворювання, кількість місць, дата виселення, ID процедури, найменування).
Відношення знаходиться в другій нормальній формі (2НФ), якщо воно знаходиться в 1НФ і кожний не ключовий атрибут функціонально повно залежить від складеного ключа.
ЧАСТКОВА ЗАЛЕЖНІСТЬ:
- R1 (<ID відпочиваючого>, ПІБ, ІН санаторно-курортної карти, дата народження, місто проживання, професія);
- R2 (<ID процедури >, найменування);
- R3 (<ID відпочиваючого, Дата поселення>, ID кімнати, Дата виселення, № кімнати, захворювання, кількість місць).
2НФ:
- R1 (<ID відпочиваючого>, ПІБ, ІН санаторно-курортної карти, дата народження, місто проживання, професія);
- R2 (<ID процедури >, найменування);
- R3 (<ID відпочиваючого, Дата поселення>, ID кімнати, Дата виселення, № кімнати, захворювання, кількість місць);
Відношення знаходиться в третій нормальній формі (3НФ), якщо воно знаходиться в 1НФ і 2НФ і кожен не ключовий атрибут нетранзитивно залежить від початкового ключа.
3НФ:
- R4 (<ID відпочиваючого, Дата поселення>, Дата виселення);
- R5 (<ID кімнати >, № кімнати, захворювання, кількість місць).
Кінцевими відношеннями будуть:
R1, R2, R4, R5.
В базі даних передбачена перевірка цілісності даних. Цілісність буває трьох типів - цілісність доменів, цілісність атрибутів і цілісність бази даних в цілому.
Домени, з яких атрибути, беруть свої значення, наведені в таблиці 2.3. Тут же для компактності запису наведені статичні обмеження для окремих атрибутів на рівні кортежів: повторюваність, обов'язковість і значення за замовчуванням.
Таблиця 2.3 - Домени атрибутів бази даних „Санаторій”
Назва атрибуту |
Ім'я поля |
Тип даних |
Повторення |
Обов'язковість |
|
ID відпочиваючого |
ID відпочиваючого |
Числовий |
- |
+ |
|
ПІБ |
ПІБ |
Текстовий |
+ |
+ |
|
ІН санаторно-курортної карти |
ІН санаторно-курортної карти |
Числовий |
_ |
+ |
|
Дата народження |
Дата народження |
Дата/час |
+ |
+ |
|
Місто проживання |
Місто проживання |
Текстовий |
+ |
+ |
|
Професія |
Професія |
Текстовий |
+ |
+ |
|
ID Процедури |
ID Процедури |
Числовий |
- |
+ |
|
Найменування |
Найменування |
Текстовий |
+ |
- |
|
Вік |
Вік |
Числовий |
+ |
+ |
|
Дата поселення |
Дата поселення |
Дата/час |
+ |
+ |
|
Дата виселення |
Дата виселення |
Дата/час |
+ |
+ |
|
ID кімнати |
ID кімнати |
Числовий |
+ |
+ |
|
№ кімнати |
№ кімнати |
Поле МЕМО |
+ |
+ |
|
Захворювання |
Захворювання |
Текстовий |
+ |
+ |
|
Кількість місць |
Кількість місць |
Числовий |
+ |
+ |
Отже, у даному розділі було обрано сутності, їх атрибути та зв'язки між ними. На основі цього була розроблена ER-модель та перетворення її в реляційну модель. Також було виконано перевірку цілісності бази даних.
В даному розділі, відповідно до поставленої задачі, було проведено проектування бази даних. Для цього визначено усі сутності, зв'язки та атрибути сутностей. Згідно цього, було спроектовано ER-модель: визначено зв'язки, які існують між сутностями, їх зв'язність (1 або N) та клас належності. Перевірено правильність отриманих відношень за допомогою методу нормалізації. реляційний база даний предметний
3. ПРАКТИЧНА РЕАЛІЗАЦІЯ БАЗИ ДАНИХ
Даний розділ містить у собі процес розробки бази даних в SQL Server, що включає створення таблиць по утвердженим сутностям та їх атрибутам, форм заповнення, а також створення запитів і заснованих на них звітів.
3.1 Розробка таблиць
Першим кроком буде створення таблиць відповідних відношенням, внесення в них даних та створення схеми даних та зв'язків між таблицями.
Першою потрібно створити таблицю «ВІДПОЧИВАЮЧИЙ» з полями, які були визначенні під час проектування. Для цього в програмі MSQL потрібно написати запит на створення таблиці, де необхідно вказати атрибути таблиці та первинний ключ. Цей запит матиме наступний вигляд:
CREATE TABLE [dbo].[ВІДПОЧИВАЮЧИЙ]
(
[ID відпочиваючого] INT NOT NULL PRIMARY KEY,
[ПІБ] NVARCHAR(50) NULL,
[ІН санаторно-курортної карти] INT NULL,
[Дата народження] DATE NULL,
[Місто проживання] NVARCHAR(50) NULL,
[Професія] NCHAR(20) NULL
)
В результаті виконання цього запиту буде отримано таблицю «ВІДПОЧИВАЮЧИЙ» (рис.3.1), в яку необхідно вносити дані про хворих.
Аналогічно потрібно створити й інші таблиці. Запит на створення таблиці «ЛІКАР» матиме наступний вигляд:
CREATE TABLE [dbo].[Table]
(
[ID лікаря] INT NOT NULL PRIMARY KEY,
[Дата поселення] NVARCHAR(50) NULL,
[ID кімнати] INT NULL,
[Дата виселення] DATE NULL
)
Далі складемо схему даних яка відображатиме зв'язки між таблицями бази даних. Вона буде мати наступний вигляд (рисунок 3.1).
Рисунок 3.1 - Схема зв'язків між таблицями бази даних
3.2 Розробка запитів
В роботі програми було використано 3 види SQL-запитів: SELECT, INSERT та DELETE [7, 8].
Запит SELECT - запит на витяг даних з бази даних. Він має наступний синтаксис: SELECT список_стовпців FROM назва_таблиці
Для виконання запиту користувацький додаток здійснює спробу підключення до бази даних. Для цього він використовує дані для підключення до бази даних (ім'я хоста, ім'я користувача, назву бази даних, пароль, порт):
private static string Host = "localhost";
private static string User = "postgres";
private static string DBname = "theatre"
private static string Port = "5363";
static string connString =
String.Format(
"Server={0}; User Id={1}; Database={2}; Port={3}; Password={4}; SSL Mode=Prefer; Trust Server Certificate=true",
Host,
User,
DBname,
Port,
Password);
Далі він формує запит з указанням таблиці, на яку спрямований та починає виконувати зчитування необхідних даних. Дані записуються в пам'ять додатку та подаються згідно указаних правил користувачу, після чого з'єднання закривається.
Розглянемо конструкцію запиту на прикладі вибірки даних про використання реєстрації.
listBox4.Items.Clear();
var conn = new NpgsqlConnection(connString);
conn.Open();
var command = conn.CreateCommand();
command.CommandText = "SELECT * FROM tickets;";
var reader = command.ExecuteReader();
while (reader.Read())
{ if (reader.GetString(5).Contains(performance) && reader.GetString(6).Length>2)
{ listBox4.Items.Add(reader.GetString(6) + " " + reader.GetString(1) + " - " + reader.GetInt32(2).ToString() + " " + reader.GetString(5));
}
}
conn.Close();
За таким принципом у додатку сформовано запити на вибірку даних хворих та їхніх особистих даних.
Наступний тип запиту DELETE призначений для видалення даних з таблиці. Він має такий синтаксис:
DELETE FROM назва_таблиці
[WHERE умова_видалення]
Користувацький додаток, аналогічно до запиту на вибірку, встановлює з'єднання з базою даних та передає їй команду на видалення вказаної стрічки (або декількох стрічок) з вказаної в команді таблиці.
Розглянемо виконання запиту на прикладі видалення даних про особу, який вибраний користувачем в додатку:
string cashier_name = comboBox2.SelectedItem.ToString();
string MycommandString = "delete from cashier where \"cahier_name\" +cashier_name + "'”;
var Myconn = new NpgsqlConnection(connString);
Myconn.Open();
var Mycommand = Myconn.CreateCommand();
Mycommand.CommandText = MycommandString;
try
{ int i = Mycommand.ExecuteNonQuery();
}
finally
Третій тип запиту INSERT використовується при додаванні даних до таблиці. Його синтаксис виглядає так:
INSERT INTO назва_таблиці (стовпець1, стовпець2, ... стовпецьN)
VALUES (значення1, значення2, ... значенняN)
Додаток з'єднуєтеся з базою даних та передає їй стрічку даних, яку потрібно додати до таблиці бази даних.
3.3 Розробка форм
Спроектований набір користувальницьких екранних форм. Далі будуть наведені найбільш важливі з них. Для авторизованого входу в програму використовується початкова форма яку можна побачити на рисунку 3.2.
Рисунок 3.2 - Початкова форма авторизації
Після авторизації завантажується головна форма, в якій знаходиться вкладка «Форми». З цієї вкладки можна вводити та контролювати дані у базі даних.
Виглядає головна форма наступним чином:
Рисунок 3.3 - Головна форма
Всі інші форми відкриваються після натиснення кнопок на головній формі. Так наприклад, якщо натиснути кнопку «Отдыхающий», то відкриється форма, яка зображена на наступному рисунку.
Рисунок 3.4 - Форма «Отдыхающий»
При натисненні на кнопку «КІМНАТА» відкривається форма яка дозволяє редагувати інформацію про кімнати в яких проживають студенти.
Рисунок 3.5 - Форма «КІМНАТА»
Вcі інші форми розроблені по аналогії.
На кожній з реалізованих форм є можливість добавляти, обновляти та видаляти нові та застарілі записи.
Всі вищенаведені форми дають можливість зручної роботи з введенням даних та керування ними в базі даних, проведення актуалізації та ознайомлення.
3.4 Розробка звітів
Для зручного перегляду інформації в базі даних реалізовано звіти.
В даній базі даних створено звіт «Кімната» в якому відображаються номери кімнат, відпочиваючі, які в них відпочивають та хвороби з якими вони перебувають. (рисунок 3.6).
Рисунок 3.6 - Звіт «Комната»
Також виконано такі звіти:
«Лікар», в якому відображається прізвища та ініціали відпочиваючого, дата їх поселення та процедури, які виконуються;
«Відпочиваючий», в якому представлено прізвища ініціали відпочиваючого та кімнати, які їм надаються;
Метою даної роботи була розробка додаток бази даних, що дозволяє створити базу даних санаторію. У додатку були реалізовані всі запити, необхідні для роботи користувачів. Кожному користувачеві доступний необхідний набір екранних форм і дій згідно його професії. Ті дії, які не властиві даній професії, не відображаються на екрані і в меню.
ВИСНОВКИ
У ході виконання даної курсової роботи було проведено дослідження предметної області санаторію. В ході аналізу було розглянуто дані та ресурси, описано атрибути даних та принцип обробки даних. Опираючись на отримані результати було проведено проектування бази даних методом сутність-зв'язок, побудовано ER-модель та проведено нормалізацію отриманих відношень.
Було прийнято рішення розробити програмну реалізацію бази даних з привабливим та простим у використанні користувацьким інтерфейсом. Для цього було розроблено відповідні запити, форми та звіти, що дають можливість користувачу опрацьовувати зареєстровані в базі даних відомості, видаляти та додавати дані.
Інтерфейс програми простий та інтуїтивно зрозумілий для користувача.
В майбутньому можливе розширення можливостей додатку.
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
1. Осипов Д. Л. Технологии проектирования баз данных / Осипов Д. Л. - М: ДМК Пресс, 2019. - 498 с.
2. Гектор Гарсиа-Молина, Джеффри Д. Ульман, Дженнифер Уидом Системы баз данных. Полный курс - М: Вільямс, 2018. - 1088 с.
3. Волк В.К. Базы данных. Проектирование, программирование, управление и администрирование. / Волк В.К. - М: ЭБС Лань, 2018 - 244 с.
ДОДАТКИ
Лістинг коду основної форми
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WorkingWithDB
{
public partial class Form1 : Form
{
SqlConnection sqlConnection;
public Form1()
{
InitializeComponent();
}
private async void Form1_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "databaseDataSet8.Camper". При необходимости она может быть перемещена или удалена.
this.camperTableAdapter3.Fill(this.databaseDataSet8.Camper);
string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\truda\Desktop\WorkingWithDB\WorkingWithDB\Database.mdf;Integrated Security=True;Connect Timeout=30";
sqlConnection = new SqlConnection(connectionString);
await sqlConnection.OpenAsync();
SqlDataReader sqlReader = null;
SqlCommand command2 = new SqlCommand("SELECT * FROM [Camper]", sqlConnection);
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
sqlConnection.Close();
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
sqlConnection.Close();
}
private async void button1_Click_1(object sender, EventArgs e)
{
if (label7.Visible)
label7.Visible = false;
if (!string.IsNullOrEmpty(textBox1.Text) && !string.IsNullOrWhiteSpace(textBox1.Text) &&
!string.IsNullOrEmpty(textBox2.Text) && !string.IsNullOrWhiteSpace(textBox2.Text) &&
!string.IsNullOrEmpty(textBox7.Text) && !string.IsNullOrWhiteSpace(textBox7.Text) &&
!string.IsNullOrEmpty(textBox11.Text) && !string.IsNullOrWhiteSpace(textBox11.Text) &&
!string.IsNullOrEmpty(textBox15.Text) && !string.IsNullOrWhiteSpace(textBox15.Text))
{
SqlCommand command2 = new SqlCommand("INSERT INTO [Camper] (Name, SuName, patronymic, date, Citi, Job, IH)VALUES(@Name, @SuName, @patronymic, @date, @Citi, @Job, @IH)", sqlConnection);
command2.Parameters.AddWithValue("Name", textBox1.Text);
command2.Parameters.AddWithValue("SuName", textBox2.Text);
command2.Parameters.AddWithValue("patronymic", textBox7.Text);
command2.Parameters.AddWithValue("date", dateTimePicker1.Text);
command2.Parameters.AddWithValue("Citi", textBox11.Text);
command2.Parameters.AddWithValue("Job", comboBox1.Text);
command2.Parameters.AddWithValue("IH", textBox15.Text);
await command2.ExecuteNonQueryAsync();
}
else
{
MessageBox.Show("Заполните все поля!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private async void обновитьToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private async void button2_Click(object sender, EventArgs e)
{
if (label8.Visible)
label8.Visible = false;
if (!string.IsNullOrEmpty(textBox3.Text) && !string.IsNullOrWhiteSpace(textBox3.Text) &&
!string.IsNullOrEmpty(textBox4.Text) && !string.IsNullOrWhiteSpace(textBox4.Text) &&
!string.IsNullOrEmpty(textBox5.Text) && !string.IsNullOrWhiteSpace(textBox5.Text) &&
!string.IsNullOrEmpty(textBox12.Text) && !string.IsNullOrWhiteSpace(textBox12.Text) &&
!string.IsNullOrEmpty(textBox13.Text) && !string.IsNullOrWhiteSpace(textBox13.Text) &&
!string.IsNullOrEmpty(textBox16.Text) && !string.IsNullOrWhiteSpace(textBox16.Text) &&
!string.IsNullOrEmpty(textBox8.Text) && !string.IsNullOrWhiteSpace(textBox8.Text))
{
SqlCommand command = new SqlCommand("UPDATE [Camper] SET [Name]=@Name, [SuName]=@SuName, [patronymic]=@patronymic, [date]=@date, [Citi]=@Citi, [Job]=@Job, [IH]=@IH WHERE [Id]=@Id", sqlConnection);
command.Parameters.AddWithValue("Id", textBox5.Text);
command.Parameters.AddWithValue("Name", textBox4.Text);
command.Parameters.AddWithValue("Suname", textBox3.Text);
command.Parameters.AddWithValue("patronymic", textBox8.Text);
command.Parameters.AddWithValue("date", dateTimePicker2.Text);
command.Parameters.AddWithValue("Citi", textBox12.Text);
command.Parameters.AddWithValue("Job", textBox13.Text);
command.Parameters.AddWithValue("IH", textBox16.Text);
await command.ExecuteNonQueryAsync();
}
else if (!string.IsNullOrEmpty(textBox4.Text) && !string.IsNullOrWhiteSpace(textBox4.Text))
{
label8.Visible = true;
label8.Text = "Id должнен быть заполнен!";
}
else
{
label8.Visible = true;
label8.Text = "Поля должны быть заполнены!";
}
}
private async void button3_Click(object sender, EventArgs e)
{
if (label8.Visible)
label8.Visible = false;
if (!string.IsNullOrEmpty(textBox6.Text) && !string.IsNullOrWhiteSpace(textBox6.Text))
{
SqlCommand command = new SqlCommand("DELETE FROM [Camper] WHERE [Id]=@Id", sqlConnection);
command.Parameters.AddWithValue("Id", textBox6.Text);
await command.ExecuteNonQueryAsync();
}
else
{
label8.Visible = true;
label8.Text = "Id должнен быть заполнен!";
}
}
private void button4_Click(object sender, EventArgs e)
{
Close();
}
private void label7_Click(object sender, EventArgs e)
{
}
private void инструментыToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void button5_Click(object sender, EventArgs e)
{
}
private void button6_Click(object sender, EventArgs e)
{
textBox1.Clear();
textBox2.Clear();
textBox7.Clear();
textBox11.Clear();
textBox15.Clear();
}
private void button7_Click(object sender, EventArgs e)
{
textBox5.Clear();
textBox4.Clear();
textBox3.Clear();
textBox8.Clear();
textBox12.Clear();
textBox13.Clear();
textBox16.Clear();
}
private void textBox9_TextChanged(object sender, EventArgs e)
{
}
private void dateTimePicker2_ValueChanged(object sender, EventArgs e)
{
}
private void tabPage2_Click(object sender, EventArgs e)
{
}
private void groupBox1_Enter(object sender, EventArgs e)
{
}
}
}
Лістинг форми адміністрування
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WorkingWithDB
{
public partial class Form5 : Form
{
SqlConnection sqlConnection;
public Form5()
{
InitializeComponent();
}
private async void Form5_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "databaseDataSet2.LoginFormCurort". При необходимости она может быть перемещена или удалена.
this.loginFormCurortTableAdapter.Fill(this.databaseDataSet2.LoginFormCurort);
// TODO: данная строка кода позволяет загрузить данные в таблицу "databaseDataSet.LoginForm". При необходимости она может быть перемещена или удалена.
this.loginFormTableAdapter.Fill(this.databaseDataSet.LoginForm);
string connectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\truda\Desktop\WorkingWithDB\WorkingWithDB\Database.mdf;Integrated Security=True;Connect Timeout=30";
sqlConnection = new SqlConnection(connectionString);
await sqlConnection.OpenAsync();
SqlDataReader sqlReader = null;
SqlCommand command = new SqlCommand("SELECT * FROM [LoginForm]", sqlConnection);
SqlCommand command1 = new SqlCommand("SELECT * FROM [LoginFormCurort]", sqlConnection);
}
private void выходToolStripMenuItem_Click(object sender, EventArgs e)
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
sqlConnection.Close();
}
private void Form5_FormClosing(object sender, FormClosingEventArgs e)
{
if (sqlConnection != null && sqlConnection.State != ConnectionState.Closed)
sqlConnection.Close();
}
private async void button1_Click(object sender, EventArgs e)
{
if (label7.Visible)
label7.Visible = false;
if (!string.IsNullOrEmpty(textBox1.Text) && !string.IsNullOrWhiteSpace(textBox1.Text) &&
!string.IsNullOrEmpty(textBox2.Text) && !string.IsNullOrWhiteSpace(textBox2.Text))
{
SqlCommand command = new SqlCommand("INSERT INTO [LoginForm] (Логин, Пароль)VALUES(@Логин, @Пароль)", sqlConnection);
command.Parameters.AddWithValue("Логин", textBox1.Text);
command.Parameters.AddWithValue("Пароль", textBox2.Text);
await command.ExecuteNonQueryAsync();
}
else
{
MessageBox.Show("Заполните все поля!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private async void button2_Click(object sender, EventArgs e)
{
if (label8.Visible)
label8.Visible = false;
if (!string.IsNullOrEmpty(textBox3.Text) && !string.IsNullOrWhiteSpace(textBox3.Text) &&
!string.IsNullOrEmpty(textBox4.Text) && !string.IsNullOrWhiteSpace(textBox4.Text) &&
!string.IsNullOrEmpty(textBox5.Text) && !string.IsNullOrWhiteSpace(textBox5.Text))
{
SqlCommand command = new SqlCommand("UPDATE [LoginFormCurort] SET [Логин]=@Логин, [Пароль]=@Пароль", sqlConnection);
command.Parameters.AddWithValue("Id", textBox5.Text);
command.Parameters.AddWithValue("Логин", textBox4.Text);
command.Parameters.AddWithValue("Пароль", textBox3.Text);
await command.ExecuteNonQueryAsync();
}
else if (!string.IsNullOrEmpty(textBox4.Text) && !string.IsNullOrWhiteSpace(textBox4.Text))
{
label8.Visible = true;
label8.Text = "Id должнен быть заполнен!";
}
else
{
label8.Visible = true;
label8.Text = "Поля должны быть заполнены!";
}
}
private async void button3_Click(object sender, EventArgs e)
{
if (label8.Visible)
label8.Visible = false;
if (!string.IsNullOrEmpty(textBox6.Text) && !string.IsNullOrWhiteSpace(textBox6.Text))
{
SqlCommand command = new SqlCommand("DELETE FROM [LoginFormCurort] WHERE [Id]=@Id", sqlConnection);
command.Parameters.AddWithValue("Id", textBox6.Text);
await command.ExecuteNonQueryAsync();
}
else
{
label8.Visible = true;
label8.Text = "Id должнен быть заполнен!";
}
}
private void button4_Click(object sender, EventArgs e)
{
Close();
}
private void label7_Click(object sender, EventArgs e)
{
}
private void инструментыToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private async void button5_Click(object sender, EventArgs e)
{
}
private async void button6_Click(object sender, EventArgs e)
{
if (label7.Visible)
label7.Visible = false;
if (!string.IsNullOrEmpty(textBox1.Text) && !string.IsNullOrWhiteSpace(textBox1.Text) &&
!string.IsNullOrEmpty(textBox2.Text) && !string.IsNullOrWhiteSpace(textBox2.Text))
{
SqlCommand command1 = new SqlCommand("INSERT INTO [LoginFormCurort] (Логин, Пароль)VALUES(@Логин, @Пароль)", sqlConnection);
command1.Parameters.AddWithValue("Логин", textBox1.Text);
command1.Parameters.AddWithValue("Пароль", textBox2.Text);
await command1.ExecuteNonQueryAsync();
}
else
{
MessageBox.Show("Заполните все поля!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void button7_Click(object sender, EventArgs e)
{
textBox5.Clear();
textBox4.Clear();
textBox3.Clear();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void button4_Click_1(object sender, EventArgs e)
{
Close();
}
private void textBox5_TextChanged(object sender, EventArgs e)
{
}
private void button4_Click_2(object sender, EventArgs e)
{
Close();
}
private void tableLayoutPanel1_Paint(object sender, PaintEventArgs e)
{
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
}
private async void обновитьToolStripMenuItem_Click_1(object sender, EventArgs e)
{
dataGridView1.Refresh();
dataGridView2.Refresh();
}
private async void button8_Click(object sender, EventArgs e)
{
if (label8.Visible)
label8.Visible = false;
if (!string.IsNullOrEmpty(textBox6.Text) && !string.IsNullOrWhiteSpace(textBox6.Text))
{
SqlCommand command = new SqlCommand("DELETE FROM [LoginForm] WHERE [Id]=@Id", sqlConnection);
command.Parameters.AddWithValue("Id", textBox6.Text);
await command.ExecuteNonQueryAsync();
}
else
{
label8.Visible = true;
label8.Text = "Id должнен быть заполнен!";
}
}
private void label3_Click(object sender, EventArgs e)
{
}
}
}
Размещено на Allbest.ru
...Подобные документы
Узагальнена структурна схема інформаційної системи та алгоритми її роботи. Проект бази даних. Інфологічне проектування і дослідження предметної області. Розробка інфологічної моделі предметної області. Розробка композиційної, логічної системи бази даних.
курсовая работа [861,7 K], добавлен 21.02.2010Розробка бази даних для меблевої фірми. Обстеження і аналіз предметної області та побудова концептуальної, логічної та фізичної моделі цієї бази даних. Використання мови програмування Visual Basic при написанні програмного коду, що обслуговує базу даних.
курсовая работа [1,4 M], добавлен 24.10.2010Розробка структури бази даних. ER-моделі предметної області. Проектування нормалізованих відношень. Розробка форм, запитів, звітів бази даних "Автосалон". Тестування роботи бази даних. Демонстрація коректної роботи форми "Додавання даних про покупців".
курсовая работа [4,0 M], добавлен 02.12.2014Використання баз даних та інформаційних систем. Поняття реляційної моделі даних. Ключові особливості мови SQL. Агрегатні функції і угрупування даних. Загальний опис бази даних. Застосування технології систем управління базами даних в мережі Інтернет.
курсовая работа [633,3 K], добавлен 11.07.2015Поняття бази даних та основне призначення системи управління. Access як справжня реляційна модель баз даних. Можливості DDE і OLE. Модулі: Visual Basic for Applications програмування баз даних. Система управління базами даних Microsoft SQL Server 2000.
реферат [41,2 K], добавлен 17.04.2010Проектування бази даних предметної області "Магазин будівельних матеріалів". Аналіз сукупності вхідних і вихідних даних, шляхи удосконалення інформаційної системи обліку товару. Організація інформаційної бази, розробка логічної і фізичної моделі.
курсовая работа [559,2 K], добавлен 09.05.2016Розробка бази даних для автоматизації облікової інформації в системі управління базами даних Access з метою полегшення роботи з великими масивами даних, які існують на складах. Обґрунтування вибору системи управління. Алгоритм та лістинг програми.
курсовая работа [550,9 K], добавлен 04.12.2009Основні відомості про реляційні бази даних, система управління ними. Основні директиви для роботи в середовищі MySQ. Визначення та опис предметної області. Створення таблиць та запитів бази даних автоматизованої бази даних реєстратури в поліклініці.
курсовая работа [2,9 M], добавлен 06.11.2011Виявлення основних сутностей предметної області. Побудова схеми реляційної бази даних. Вбудовані процедури і тригери. Опис архітектури програмної системи і концептуальної моделі бази даних, програмної реалізації та інтерфейсу користувача додатку.
курсовая работа [4,3 M], добавлен 05.12.2012Аналіз предметної галузі, постановка задачі, проектування бази даних. UML-моделювання, побудова ER-діаграми, схеми реляційної бази даних у третій нормальній формі. Призначення і логічна структура. Опис фізичної моделі бази даних, програмної реалізації.
курсовая работа [3,5 M], добавлен 28.11.2011Розробка бази даних для обробки інформації про діяльність туристичного агентства. Визначення предметної області, вхідних та вихідних даних, їх організації. Генерація схеми бази даних. Реалізація функціональних вимог. Інструкція з експлуатації системи.
курсовая работа [5,3 M], добавлен 12.05.2015Автоматизація процесу зберігання та обробки інформації про перелік собак на виставці. Аналіз предметної області. Створення концептуальної моделі даних, її перетворення в логічну і реалізація. Розробка механізмів управління даними за допомогою тригерів.
курсовая работа [3,0 M], добавлен 25.08.2014Призначення інформаційної системи. Завдання предметної області. Характеристика документів предметної області. Опис і обґрунтування вибору методу організації вихідних даних. Коротка характеристика IBExpert. Програмна реалізація в середовищі Delphi.
дипломная работа [2,8 M], добавлен 25.03.2011Опис предметної області. Визначення проблеми та постановка задачі. Проектування бази даних. Концептуальна модель. Логічна модель. Фізична модель. Розробка програмних модулів.
курсовая работа [136,3 K], добавлен 14.07.2007Робота користувача з базою даних, перегляд, редагування інформації в базі даних та здійснення пошуку у зручній формі. Інтерфейс системи сільській бібліотеці для обслуговування читачів і фіксування даних книжкового фонду. Структура реляційної бази.
контрольная работа [182,3 K], добавлен 08.03.2015Побудова інформаційної системи "Магазин товарів для настільного тенісу" з автоматизації роботи магазину. Концептуальне моделювання бази даних. Обґрунтування вибору СУБД. Логічне проектування бази даних. Схема бази даних. Створення таблиць в конструкторі.
курсовая работа [8,8 M], добавлен 16.12.2015Особливості побудови та роботи з об’єктно-реляційною моделлю даних в інструментальній системі управління базами даних PostgreSQL. Розробка бази даних факультету, що має у підпорядкуванні кілька кафедр. Тестування роботи спроектованої бази даних.
курсовая работа [1,8 M], добавлен 09.05.2014Опис предметної області та середовища розробки бази даних. Модель реальної системи - ієрархія діаграм DFD. Складання таблиці списку подій. Переробка ERD в реляційне відношення клієнтів, постачальників та автомобілів. Створення ключових полів таблиць БД.
курсовая работа [606,4 K], добавлен 04.02.2013Розробка програмного забезпечення для автоматизації процесів обслуговування клієнтів в агентстві нерухомості. Характеристика сутностей та атрибутів предметної області, проектування бази даних. Основні функції та лістинг програми, інтерфейс користувача.
курсовая работа [1,5 M], добавлен 10.06.2013Аналіз предметної області, проектування бази даних, її фізичної реалізації в СУБД Access. Схема даних зі зв'язками між таблицями. Форми, що забезпечують інтерфейс. Запити у режимі Конструктора і мовою SQL. Звіти в режимі звіту і в режимі Конструктора.
курсовая работа [5,2 M], добавлен 01.04.2016