91323

Автоматизована інформаційна система медичного діагностичного центру

Курсовая

Информатика, кибернетика и программирование

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

Украинкский

2015-07-14

1.88 MB

1 чел.

PAGE   \* MERGEFORMAT2

Міністерство освіти і науки України

Смілянський промислово економічний коледж

Черкаського державного технологічного університету

Курсова робота

з предмету «Основи програмної інженерії»

Тема: "Автоматизована інформаційна система медичного діагностичного центру"

Студента III курсу групи ПР-9-12

напрямку підготовки:  програмна інженерія

спеціальності: розробка програмного забезпечення

Гребенюка Івана Андрійовича

Керівник викладач вищої категорії Зборівська В. П.

Національна шкала   _________________________

Члени комісії         _______       _________________

     _______       _________________

     _______       ________________

     

Сміла 2015

ЗАВДАННЯ

Для курсової роботи Автоматизована інформаційна система (АІС) медичного діагностичного центру______________________________

Студенту Гребенюку Івану Андрійовичу_____________________

__________________________________________________________________

Курсова робота на вказану тему виконується студентом коледжа в слідуючому обсязі:

1.Пояснювальна записка

ВСТУП 

1. СИСТЕМНИЙ АНАЛІЗ

1.1 Огляд предметної області

1.2 Вимоги до продукту (Визначення С, D-вимог)

2. РОЗРОБКА ІНТЕРФЕЙСУ ПРОГРАМИ 

2.1Кроки розробки призначених для користувача інтерфейсів

2.2 Проектування інтерфейсу

3. ВИБІР АРХІТЕКТУРИ 

3.1Функціональна структура програми (Типи моделі розробки)

3.2 Вхідні дані на розробку автоматизованої системи 

3.3 Вибір середовища програмування

3.4 Вибір сервера баз даних

4. ДЕТАЛЬНЕ ПРОЕКТУВАННЯ

4.1 Логічна структура програми.

4.2 Розробка структури бази даних проекту

4.3 Розробка структури і полів таблиць бази даних

ВИСНОВОК

СПИСОК ЛІТЕРАТУРИ

2.Зміст додатків

1 Текст програми

2 Інтерфейс програми

3 Фізична структура бази даних

4 Модель функціональної діяльності

5 Типи моделі розробки (варіанти використання, діаграма потоків даних, діаграма переходу станів, модель класів.)

                 

Дата видачі              02 квітня 2015 р.

Термі закінчення     26 червня 2015 р.

Зав.відділенням___________________

Викладач_________________________


РЕЦЕНЗІЯ

Студента _________________________________________________________

Групи      ПР 9-12

Спеціальність 5.05010301

2. З дисципліни Основи програмної інженерії 

Тема курсової роботи _______________________________________

__________________________________________________________

3. Позитивні сторони _______________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________

__________________________________________________________________________________________________________________

4. Недоліки курсової роботи, включаючи стиль і грамотність написання _________________________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________

_________________________________________________________

5. Попередня оцінка курсової роботи: _________________

□ Робота допускається до захисту

□ Робота не допускається до захисту

Кінцева оцінка дається після захисту роботи: _______________

«___» _________________ 20__р.    ____________/Зборівська В. П./


Зміст

[1]
Вступ

[2]
1. СИСТЕМНИЙ АНАЛІЗ

[3] 1.1 Вимоги до продукту(Визначення С, D-вимог)

[4] 2. РОЗРОБКА ІНТЕРФЕЙСУ ПРОГРАМИ

[5] 2.1 Кроки розробки призначених для користувача інтерфейсів

[6] 2.2 Проектування інтерфейсу

[7]
3. ВИБІР АРХІТЕКТУРИ

[8] 3.1 Функціональна структура програми(Типи моделі розробки)

[9] 3.2 Вхідні дані на розробку автоматизованої системи

[10] 3.3 Вибір середовища програмування

[11] 3.4 Вибір сервера баз даних

[12]
4. ДЕТАЛЬНЕ ПРОГРАМУВАННЯ

[13] 4.1 Логічна структура програми

[14] 4.2 Розробка структури бази даних проекту

[15] 4.3 Розробка структури таблиць бази даних

[16]
Висновок

[17]
Список літератури

[18]
Додаток 1. Лістинг програми

[19]
Додаток 2. Результат роботи

[20]
Додаток 3. Схеми проекту


Вступ

Виробництво програмного забезпечення (ПЗ) сьогодні - це найбільша галузь світової економіки, в якій зайнято більше семи мільйонів фахівців. Саме приголомшливий прогрес в області ПЗ допоміг впоратися з інформаційним бумом кінця 20 століття.

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

Потреба контролювати процес розробки ПЗ, прогнозувати і гарантувати вартість розробки, терміни і якість результатів призвела до необхідності переходу від кустарних до індустріальних способам створення ПЗ і появі сукупності інженерних методів і засобів створення ПЗ, об'єднаних загальною назвою програмна інженерія (software engineering).

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

Виконання курсової роботи має на меті:

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

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

Даний додаток створюється за допомогою інструмента швидкої розробки додатків Builder c++ 6, який містить в собі компілятор, відладчик, редактор коду та всі необхідні компоненти для створення програмного додатку Medical© center, які поділяються на візуальні та не візуальні.

Візуальні компоненти: Edit(поле для введення), DBNavigator(панель управління БД), DBGrid(для вдображення та редагування таблиць), StatusBar(для виведення певних повідомлень), ToolBar(панель швидкого доступу), ComboBox(список вибору), Button(кнопка), Label(для виводу текстової інформації).

Не візуальні компоненти: MainMenu(головне меню – підключається до певної форми, щоб стати візуальною), ADOConnection(для підключення до БД), ADOQuery(для виконання запитів, підключається до ADOConnection), DataSource(для створення зв’язку між ADOQuery та DBNavigator і DBGrid), ImageList(містить іконки).


1. СИСТЕМНИЙ АНАЛІЗ

1.1 Вимоги до продукту(Визначення С, D-вимог)

Специфікація вимог до ПЗ «Medical© control »

  1.  Вступ
  2.   Призначення, мета

Даний документ проектується студентом ПР – 9 – 12 для опису програмного продукту «Medical© control». А також системних, функціональних і не функціональних вимог до даного продукту.

Даний продукт буде вести облік клієнтів, їх діагнозів, виконувати пошук по діагнозам або по ПІБ, обчислювати вартість за день та друкувати звіти.

  1.  Загальний опис
  2.   Характеристики
    1.  Веде облік клієнтів;
      1.  Веде облік діагнозів клієнтів;
        1.  Виконує пошук;
          1.  Обчислює вартість за день;
          2.  Друкує звіти.
  3.   Користувачі
    1.  Старша медсестра;
      1.  Лікарі;
        1.  Головний лікар.
  4.   Середовище функціонування

Даний продукт працює на операційній системі Windows 95 / 98 / 2003 / Vista / 7 / 8 / 8.1 / 10.

Апаратна платформа: Клавіатура, миша, монітор, системний блок(материнська плата, вінчестер, процесор, блок живлення, відеоадаптер 16Mb).

  1.  Характеристики системи
  2.   Функціональні вимоги
    1.  Продукт повинен дозволяти вводити дані: Діагнози(Код діагнозу, термін, термін лікування), Клієнти(Код клієнта, діагноз, код лікаря, прізвище та ім’я, код паспорту, телефонний номер, місто проживання), Лікарі(Код лікаря, прізвище і ініціали, код паспорту, телефонний номер, місто проживання), Препарати(Код препарату, назва препарату, дата виготовлення, термін придатності), Квитанції(Код квитанції, код клієнта, всього до оплати, дата видачі, прізвище та ім’я клієнта, діагноз клієнта, код препарату);
      1.  Продукт повинен дозволяти виводити дані: Діагнози(Код діагнозу, термін, термін лікування), Клієнти(Код клієнта, діагноз, код лікаря, прізвище та ім’я, код паспорту, телефонний номер, місто проживання), Лікарі(Код лікаря, прізвище і ініціали, код паспорту, телефонний номер, місто проживання), Препарати(Код препарату, назва препарату, дата виготовлення, термін придатності), Квитанції(Код квитанції, код клієнта, всього до оплати, дата видачі, прізвище та ім’я клієнта, діагноз клієнта, код препарату);
        1.  Продукт повинен дозволяти видаляти дані: Діагнози(Код діагнозу, термін, термін лікування), Клієнти(Код клієнта, діагноз, код лікаря, прізвище та ім’я, код паспорту, телефонний номер, місто проживання), Лікарі(Код лікаря, прізвище і ініціали, код паспорту, телефонний номер, місто проживання), Препарати(Код препарату, назва препарату, дата виготовлення, термін придатності), Квитанції(Код квитанції, код клієнта, всього до оплати, дата видачі, прізвище та ім’я клієнта, діагноз клієнта, код препарату). По заданим полями таблиці: Діагнози(Код діагнозу, термін, термін лікування), Клієнти(Код клієнта, діагноз, код лікаря, прізвище та ім’я, код паспорту, телефонний номер, місто проживання), Лікарі(Код лікаря, прізвище і ініціали, код паспорту, телефонний номер, місто проживання), Препарати(Код препарату, назва препарату), Квитанції(Код квитанції, код клієнта, всього до оплати, прізвище та ім’я клієнта, діагноз клієнта, код препарату);
          1.  Продукт повинен дозволяти здійснювати пошук даних по полях деяких таблиць: Діагнози(Код діагнозу, термін, термін лікування), Клієнти(Код клієнта, діагноз, код лікаря, прізвище та ім’я, код паспорту, телефонний номер, місто проживання), Лікарі(Код лікаря, прізвище і ініціали, код паспорту, телефонний номер, місто проживання), Препарати(Код препарату, назва препарату, дата виготовлення, термін придатності), Квитанції(Код квитанції, код клієнта, всього до оплати, дата видачі, прізвище та ім’я клієнта, діагноз клієнта, код препарату);
          2.  Продукт повинен обчислювати прибуток за день на основі даних в таблиці Квитанції по полю «Всього до оплати»;
          3.  Продукт повинен дозволяти друкувати звіти усіх полів таблиць: Діагнози, Квитанції, Лікарі, Препарати, Клієнти.
  3.  Вимоги до зовнішніх інтерфейсів
  4.   Користувацькі інтерфейси

На інтерфейсі продукту повинно бути:

  1.  Головне меню;
    1.  Таблиця бази даних;
      1.  Вікна додавання та видалення даних.
        1.  Вікна пошуку даних.
          1.  Меню швидкого доступу.
  2.   Апаратні інтерфейси
  3.  Взаємодіє з принтером.
  4.  Не функціональні вимоги
  5.   Вимоги продуктивності
  6.  Продукт повинен обчислювати вартість за день менше ніж за секунду;
  7.  Програма повинна бути розроблена на мові С++.
  8.   Вимоги безпеки
  9.  Продукт повинен містити ідентифікацію по паролю.

2. РОЗРОБКА ІНТЕРФЕЙСУ ПРОГРАМИ

2.1 Кроки розробки призначених для користувача інтерфейсів

Я проаналізував комп’юторний рівень знань користувача, який буде користуватися програмним додатком, а саме: старшу медсестру, лікарів та старшу медсестру медичного діагностичного центру. Їхню характеристику можна наведено в Табл. 2.1.1.

Табл. 2.1.1. Характеристика користувача програми

Характеристика

Градації

Рівень знань і досвід

Комп’ютерна грамотність

Середній. Користувач повинен володіти елементарними навиками користування комп’ютером

Системний досвід

Середній

Досвід роботи з подібними програмами

Середній

Освіта

Закінчена вища освіта

Рівень читання

9 років в школі

Машинопис

100 слів за хвилину


Фізичні характеристики користувача

Вік

Молодий, середнього віку, літній

Стать

Чоловіча, жіноча

Розвиненість рук

Лівша, правша, володіє однаково обома руками

Характеристики завдань і роботи користувача

Спосіб використання цієї програми

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

2.2 Проектування інтерфейсу

  1.  Головне вікно – вікно «Ідентифікація»:

Додаю на форму PasswordDlg Panel1, Label2.

На Panel1 розміщую Label1 – в властивостях встановлюю Caption = «Введіть пароль:»; Edit1 – текстове поле для введення паролю, в властивостях встановлюю PasswordChar = «*»; Button1 – для підтвердження паролю введений в Edit1, в властивостях встановлюю Caption = «Підтвердити»; Button2 – для виходу з програми, в властивостях встановлюю Caption = «Вихід»; BitBtn1 – для виклику вікна «Зміна паролю», в властивостях встановлюю Glyph іконку для кнопки. Label2 - в властивостях встановлюю Caption = «Ідентифікація»; Результат створеної форми знаходиться в додатку 2 Рис.2.

  1.  Вікно «Зміна паролю»:

Додаю на форму Pass_renew Panel1;

На Panel1 розміщую Panel2(розміщую Label1 - в властивостях встановлюю Caption = «Введіть старий пароль:»; Label2 - в властивостях встановлюю Caption = «Введіть новий пароль:»; Label3 - в властивостях встановлюю Caption = «Повторіть новий пароль:»), Panel3(Edit1 – текстове поле для введення старого паролю, в властивостях встановлюю PasswordChar = «*»;Edit2 – текстове поле для введення нового паролю, в властивостях встановлюю PasswordChar = «*»;Edit3 – текстове поле для повторного введення нового паролю, в властивостях встановлюю PasswordChar = «*»), Button1 – для підтвердження зміни паролю, в властивостях встановлюю Caption = «Ок». Результат створеної форми знаходиться в додатку 2 Рис.3.

  1.  Вікно «Діагнози»:

Додаю на форму Diagnoz Panel1.

На Panel1 розміщую DBGrid1 – для відображення таблиці Діагнози, в властивостях встановлюю DataSource = «bd_work->DS_diagnoziz»; DBNavigator1 – для управління таблицею, в властивостях встановлюю DataSource = «bd_work->DS_diagnoziz»; StatusBar1 – створюю TStatusPanel[0](для виведення підказок при наведенні мишею на певний компонент), TStatusPanel[1](для виведення кількості записів), в властивостях встановлюю AutoHint = true, ShowHint = true; MainMenu1 – підключаю форму до нього в подіях встановлюю Menu = bd_work->MainMenu1, в ньому створюю кнопки та приписую до них назви; ToolBar1 – панель швидкого доступу, на якій створюю 8 кнопок, в подіях встановлюю HotImages = bd_work->ImageList1, Images = bd_work->ImageList1; Panel2(Button1 – для фільтрації по полю Edit1, який орієнтується на атрибут вибраний в ComboBox1; ComboBox1 – для вибору фільтрації по «Код діагнозу» або «Термін» або «Термін лікування» або зняття фільтрації; Edit1 – текстове поле для введення певних символів для фільтрації по таблиці Діагнози). Результат створеної форми знаходиться в додатку 2 Рис.11.

  1.  Вікно «Квитанції»:

Додаю на форму kvitancii Panel1.

На Panel1 розміщую DBGrid1 – для відображення таблиці Квитанції, в властивостях встановлюю DataSource = «bd_work->DS_pripar»; DBNavigator1 – для управління таблицею, в властивостях встановлюю DataSource = «bd_work->DS_pripar»; StatusBar1 – створюю TStatusPanel[0](для виведення підказок при наведенні мишею на певний компонент), TStatusPanel[1](для виведення кількості записів, TStatusPanel[2](для виведення заробленої суми за певний день), в властивостях встановлюю AutoHint = true, ShowHint = true; MainMenu1(for_kvit) – підключаю форму до нього в подіях встановлюю Menu = bd_work->for_kvit, в ньому створюю кнопки та приписую до них назви; ToolBar1 – панель швидкого доступу, на якій створюю 9 кнопок, в подіях встановлюю HotImages = bd_work->ImageList1, Images = bd_work->ImageList1; Panel2(Button1 – для фільтрації по полю Edit1, який орієнтується на атрибут вибраний в ComboBox1; ComboBox1 – для вибору фільтрації по «Код квитанції» або «Код клієнта» або «Всього до оплати» або «Дата видачі» або «Прізвище та ім’я клієнта» або «Діагноз клієнта» або «Код препарату» або зняття фільтрації; Edit1 – текстове поле для введення певних символів для фільтрації по таблиці Квитанції). Результат створеної форми знаходиться в додатку 2 Рис.12.

  1.  Вікно «Препарати»:

Додаю на форму Priparats Panel1.

На Panel1 розміщую DBGrid1 – для відображення таблиці Препарати, в властивостях встановлюю DataSource = «bd_work->DS_prip»; DBNavigator1 – для управління таблицею, в властивостях встановлюю DataSource = «bd_work->DS_prip»; StatusBar1 – створюю TStatusPanel[0](для виведення підказок при наведенні мишею на певний компонент), TStatusPanel[1](для виведення кількості записів), в властивостях встановлюю AutoHint = true, ShowHint = true; MainMenu1(for_prip) – підключаю форму до нього в подіях встановлюю Menu = bd_work->for_prip, в ньому створюю кнопки та приписую до них назви; ToolBar1 – панель швидкого доступу, на якій створюю 8 кнопок, в подіях встановлюю HotImages = bd_work->ImageList1, Images = bd_work->ImageList1; Panel2(Button1 – для фільтрації по полю Edit1, який орієнтується на атрибут вибраний в ComboBox1; ComboBox1 – для вибору фільтрації по «Код препарату» або «Назва препарату» або «Дата вироблення» або «Термін придатності» або зняття фільтрації; Edit1 – текстове поле для введення певних символів для фільтрації по таблиці Препарати). Результат створеної форми знаходиться в додатку 2 Рис.15.

  1.  Вікно «Лікарі»:

Додаю на форму likar Panel1.

На Panel1 розміщую DBGrid1 – для відображення таблиці Лікарі, в властивостях встановлюю DataSource = «bd_work->DS_likar»; DBNavigator1 – для управління таблицею, в властивостях встановлюю DataSource = «bd_work->DS_likar»; StatusBar1 – створюю TStatusPanel[0](для виведення підказок при наведенні мишею на певний компонент), TStatusPanel[1](для виведення кількості записів), в властивостях встановлюю AutoHint = true, ShowHint = true; MainMenu1(for_likar) – підключаю форму до нього в подіях встановлюю Menu = bd_work->for_likar, в ньому створюю кнопки та приписую до них назви; ToolBar1 – панель швидкого доступу, на якій створюю 8 кнопок, в подіях встановлюю HotImages = bd_work->ImageList1, Images = bd_work->ImageList1; Panel2(Button1 – для фільтрації по полю Edit1, який орієнтується на атрибут вибраний в ComboBox1; ComboBox1 – для вибору фільтрації по «Код лікаря» або «Прізвище і ініціали» або «Код паспорту» або «Телефонний номер» або «Місто проживання» або зняття фільтрації; Edit1 – текстове поле для введення певних символів для фільтрації по таблиці Лікарі). Результат створеної форми знаходиться в додатку 2 Рис.14.

  1.  Вікно «Клієнти»:

Додаю на форму klient Panel1.

На Panel1 розміщую DBGrid1 – для відображення таблиці Клієнти, в властивостях встановлюю DataSource = «bd_work->DS_klient»; DBNavigator1 – для управління таблицею, в властивостях встановлюю DataSource = «bd_work->DS_klient»; StatusBar1 – створюю TStatusPanel[0](для виведення підказок при наведенні мишею на певний компонент), TStatusPanel[1](для виведення кількості записів), в властивостях встановлюю AutoHint = true, ShowHint = true; MainMenu1(for_klient) – підключаю форму до нього в подіях встановлюю Menu = bd_work->for_klient, в ньому створюю кнопки та приписую до них назви; ToolBar1 – панель швидкого доступу, на якій створюю 8 кнопок, в подіях встановлюю HotImages = bd_work->ImageList1, Images = bd_work->ImageList1; Panel2(Button1 – для фільтрації по полю Edit1, який орієнтується на атрибут вибраний в ComboBox1; ComboBox1 – для вибору фільтрації по «Код клієнта» або «Діагноз» або «Код лікаря» або «Прізвище та ім’я» або «Код паспорту» або «Телефонний номер» або «Місто проживання» або зняття фільтрації; Edit1 – текстове поле для введення певних символів для фільтрації по таблиці Клієнти). Результат створеної форми знаходиться в додатку 2 Рис.13.

  1.  Вікно «Вставка запису в Діагнози»:

Додаю на форму diag_insert Panel1.

На Panel1 розміщую Panel2(Label1 – в властивостях встановлюю Caption = «Введіть код діагноза»; Label2в властивостях встановлюю Caption = «Введіть термін»; Label1 – в властивостях встановлюю Caption = «Введіть термін лікування:»;), Panel3(Edit1 – для введення коду діагноза; Edit2 – для введення терміну; Edit3 – для введення терміну лікування), Button1 – встановлюю властивість Caption = «Ок», додає в таблицю «Діагнози» послідовно дані прописані в Edit1, Edit2, Edit3. Результат створеної форми знаходиться в додатку 2 Рис.6.

  1.  Вікно «Видалення запису в Діагнози»:

Додаю на форму diag_delete Panel1.

На Panel1 розміщую Panel2(Label1 – в властивостях встановлюю Caption = «Введіть код діагноза»; Label2в властивостях встановлюю Caption = «Введіть термін»; Label1 – в властивостях встановлюю Caption = «Введіть термін лікування:»;), Panel3(Edit1 – для введення коду діагноза; Edit2 – для введення терміну; Edit3 – для введення терміну лікування), Button1 – встановлюю властивість Caption = «Ок», видаляє в таблиці «Діагнози» послідовно дані прописані в Edit1, Edit2, Edit3. Результат створеної форми знаходиться в додатку 2 Рис.6.

  1.  Вікно «Пошук в Діагнози»:

Додаю на форму diag_search Panel1

Ha Panel1 розміщую Panel2(Label1 – в властивостях встановлюю Caption = «Введіть код діагноза»; Label2 – в властивостях встановлюю Caption = «Введіть термін»; Label3 – в властивостях встановлюю Caption = «Введіть термін лікування»; RadioButton1 – для того щоб пошук відбувався по коду діагнозу, в властивостях встановлюю Checked = true; RadioButton2 – для того щоб пошук відбувався по терміну; RadioButton3 – для того щоб пошук відбувався по терміну лікування;), Panel3(Edit1 – вводиться код діагнозу; Edit2 – вводиться термін: Edit3 – вводиться термін лікування), Button1 – в властивостях встановлюю Caption = «Ок», виконує пошук орієнтуючись на вибраний RadioButton та по його відповідному Edit. Результат створеної форми знаходиться в додатку 2 Рис.6.

  1.  Вікно «Друк Діагнози»:

Додаю на форму ZVIT_diagnozi QuickRep1

На QuickRep1 розміщую QRBand1(QRLabel1 – в властивостях встановлюю Caption = «Код діагнозу»; QRLabel2 – в властивостях встановлюю Caption = «Термін»; QRLabel3 – в властивостях встановлюю Caption = «Термін лікування»), QRBand2(QRDBText1 – в властивостях встановлюю DataSet = bd_work->diagnoziz, DataField = «Код діагнозу»; QRDBText2 – в властивостях встановлюю DataSet = bd_work->diagnoziz, DataField = «Термін»; QRDBText3 – в властивостях встановлюю DataSet = bd_work->diagnoziz, DataField = «Термін лікування»), QRLabel5 – в властивостях встановлюю Caption = «Діагнози». Властивість компоненту QuickRep1 встановлюю DataSet = bd_work->INSERT_kvitanc, властивість компоненту QRBand2 встановлюю BandType = rbDetail. Результат створеної форми знаходиться в додатку 2 Рис.6.

  1.  Вікно «Прибуток» :

Додаю на форму suma_za_den_form Panel1.

На Panel1 розміщую Label1 – в властивостях встановлюю Caption = «Виберіть день:»; Button1 – в властивостях Caption = «Ок», при натиску підраховує суму за вибраний день в MonthCalendar1; DBText1 – для виведення суми за день, в властивостях DataSource = bd_work->summa_za_den, DataField = Expr1000; MonthCalendar1 – календар для вибору дня по якому буде проводитися підрахунок заробленої суми за день. Результат створеної форми знаходиться в додатку 2 Рис.4.

  1.  Вікно «Про нас» :

Додаю на форму Me Panel1.

На Panel1 розміщую Label1 – в властивостях Caption = «http://radiotex.org.ua/»; Label2в властивостях Caption = «© 2015 made by Hrebeniuk I. A.». Результат створеної форми знаходиться в додатку 2 Рис.5.

  1.  Вікно «Довідка» :

Додаю на форму Help Panel1.

Ha Panel1 розміщую Image1 – в властивостях Picture = (TJPEGImage) (завантажую фірмову картинку Medical© control); Label1 – в властивостях встановлюю Caption = «Medical© control (version: 1.0)»; Label2 – в властивостях встановлюю Caption = «Програма призначена для:»; Label3 – в властивостях встановлюю Caption = «зберігання;»; Label4в властивостях встановлюю Caption = «редагування;»; Label5в властивостях встановлюю Caption = «видалення даних;»; Label6в властивостях встановлюю Caption = «підрахування заробленої суми за день»; Label7в властивостях встановлюю Caption = «фільтрація та пошук даних»; Результат створеної форми знаходиться в додатку 2 Рис.1.


3. ВИБІР АРХІТЕКТУРИ

3.1 Функціональна структура програми(Типи моделі розробки)

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

Спочатку в програму вводяться дані про клієнта, лікарів та коштів(в квитанціях). Із отриманих даних обчислюється прибуток за певний день та на основі цих даних здійснюється пошук. До обчислення прибутку за день прикріплюється довідка та бухгалтерська система, та із обчислення отримується вартість за день. Із пошуку отримуються певні дані, які шукались, та на друк поступають дані про ліки та клієнтів. Із друкування звітів отримуємо чек по оплаті та діагноз. Результат створеної схеми(діаграми) знаходиться в додатку 3 Рис.16.

DFD – діаграма потоків даних.

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

3.2 Вхідні дані на розробку автоматизованої системи

Для розробки даної автоматизованої системи медичного діагностичного центру використовується ERwin, BatchAccess та Builder c++ 6.

  •  ERwinдля створення схеми бази даних(БД) та генерування коду БД для BatchAccess;
  •  BatchAccessдля створення БД, на основі генерованого коду на основі схеми БД із ERwin.
  •  Builder c++ 6 – для програмної реалізації додатку, який буде працювати із генерованою БД, де для зв’язку з нею буде використовуватися драйвер ADO.

3.3 Вибір середовища програмування

Програмний додаток Medical© control створюється в середовищі Builder С++ 6 на мові високого рівня C++. Builder С++ 6 містить в собі достатню кількість компонентів для зв’язку та обробки даних з обраної бази даних.

Для зв’язку з базою даних використовується компонент ADOConnection, в якому вказується шлях до потрібної бази даних(“MDC.mdb”) та використовується драйвер «Microsoft Jet 4.0 OLE DB Provider». Для того щоб користувач мав змогу керувати даними через програмний додаток, на форму поміщається DataSource, ADOTable(для таблиць) або ADOQuery(для запитів) і після цього до візуальних компонентів DBGrid та DBNavigator з’єднується DataSource. Для того щоб обрану таблицю було видно, потрібно в ADOTable в властивостях Connection = ADOConnection, TableName = Table(обрана таблиця із бази даних), Active = true та підключити її до DataSource. Якщо ж використовувати ADOQuery, то в властивостях Connection = ADOConnection, SQL = Strings(певний SQL код), Active = true та підключити її до DataSource.

3.4 Вибір сервера баз даних

Для генерації бази даних було використано драйвер сервера ODBC. Драйвер Microsoft ODBC для SQL Server - це ізольований драйвер, який надає API-інтерфейс, який реалізує стандартні інтерфейси ODBC з Microsoft SQL Server.

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


4. ДЕТАЛЬНЕ ПРОГРАМУВАННЯ

4.1 Логічна структура програми

Основними об’єктами бази даних медичного діагностичного центру є: Діагнози, Квитанції, Лікарі, Клієнти, Препарати.

Таблиця «Діагнози» зв’язана з таблицею «Клієнти» полем «Код діагнозу». Таблиця «Клієнти» зв’язана з таблицею «Квитанція» полем «Код клієнта» та зв’язана з таблицею «Лікарі» полем «Код лікаря». Таблиця «Квитанція» зв’язується з таблицею «Препарати» полем «Код препарату». Схема показана в додатку 3 Рис.20.

Під час проектування програмного додатку, до нього були добавлені компоненти ADOQuery, що містять в собі SQL код даної бази даних.

4.2 Розробка структури бази даних проекту

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

Таблиця «Препарати» буде містити в собі дані про препарати медичного діагностичного центру з атрибутами(з типом даних): Код препарату (Текстовий), Назва препарату(Текстовий), Дата виготовлення(Дата/Час), Термін придатності(Дата/Час). Таблиця «Лікарі» буде містити в собі дані про лікарів медичного діагностичного центру з атрибутами(з типом даних): Код лікаря(Текстовий), Прізвище і ініціали(Текстовий), Код паспорту(Текстовий), Телефонний номер(Текстовий), Місто проживання(Текстовий). Таблиця  «Квитанція» міститиме дані про квитанції медичного діагностичного центру з атрибутами(з типом даних): Код квитанції(Текстовий), Код клієнта(Текстовий), Всього до оплати(Числовий), Дата видачі(Дата/Час), Прізвище та ім’я клієнта(Текстовий), Діагноз(Текстовий), Код препарату(Текстовий). Таблиця «Клієнти» буде містити в собі дані про клієнтів медичного діагностичного центру з атрибутами(з типом даних): Код клієнта(Текстовий), Діагноз(Текстовий), Код лікаря(Текстовий), Прізвище та ім’я(Текстовий), Код паспорту(Текстовий), Телефонний номер(Текстовий), Місто проживання(Текстовий). Таблиця «Діагнози» буде містити в собі дані про діагнози, які діагностують в медичному діагностичному центрі з атрибутами(з типом даних): Код діагнозу(Текстовий), Термін(Текстовий), Термін лікування(Текстовий). Схема показана в додатку 3 Рис. 19.

4.3 Розробка структури таблиць бази даних

Таблиця «Діагнози» містить такі поля:

  •  Код діагнозу – дане поле містить дані про код кожного діагнозу певного терміну.
  •  Термін – дане поле містить дані про назву кожного діагнозу.
  •  Термін лікування – дане поле містить дані про тривалість лікування кожного діагнозу.

Таблиця «Препарати» містить такі поля:

  •  Код препарату – дане поле містить дані про код кожний препарат медичного діагностичного центру.
  •  Назва препарату – дане поле містить дані про назву кожного препарату медичного діагностичного центру.
  •  Дата виготовлення – дане поле містить дані про дату виготовлення кожного препарату медичного діагностичного центру.
  •  Термін придатності – дане поле містить дані про термін придатності кожного препарату медичного діагностичного центру.

Таблиця «Клієнти» містить такі поля:

  •  Код клієнта – дане поле містить дані про код клієнта кожного клієнта медичного діагностичного центру.
  •  Діагноз клієнта – дане поле містить дані про діагнози кожного клієнта медичного діагностичного центру.
  •  Код лікаря – дане поле містить дані про всі коди лікарів, які були лікарем певного клієнта
  •  Прізвище та ім’я – дане поле містить дані про прізвище та ім’я кожного клієнта медичного діагностичного центру.
  •  Код паспорту – дане поле містить дані про код паспорту кожного клієнта медичного діагностичного центру.
  •  Телефонний номер – дане поле містить дані про телефонні номери кожного клієнта медичного діагностичного центру.
  •  Місто проживання – дане поле містить дані про місто проживання кожного клієнта медичного діагностичного центру.
  •  Код діагнозу – дане поле містить дані про код діагнозу кожного клієнта медичного діагностичного центру.

Таблиця «Лікарі» містить такі поля:

  •  Код лікаря – дане поле містить дані про код лікаря кожного лікаря медичного діагностичного центру.
  •  Прізвище і ініціали – дане поле містить дані про прізвище та ініціали кожного лікаря медичного діагностичного центру.
  •  Код паспорту – дане поле містить дані про код паспорту кожного лікаря медичного діагностичного центру.
  •  Телефонний номер – дане поле містить дані про телефонний номер кожного лікаря медичного діагностичного центру.
  •  Місто проживання – дане поле містить дані про місто проживання кожного лікаря медичного діагностичного центру.

Таблиця «Квитанція» містить такі поля:

  •  Код квитанції – дане поле містить дані про код квитанції кожної квитанції медичного діагностичного центру.
  •  Код клієнта – дане поле містить дані про кожного клієнти медичного діагностичного центру.
  •  Всього до оплати – дане поле містить дані про кошти, які потрібно сплатити кожному клієнту.
  •  Дата видачі – дане поле містить дані про дату видачі кожної квитанції.
  •  Прізвище та ім’я клієнта – дане поле містить дані про прізвище та ім’я кожного клієнта медичного діагностичного центру.
  •  Діагноз – дане поле містить дані про діагнози кожного клієнта медичного діагностичного центру.
  •  Код препарату – дане поле містить дані про код певний препарат медичного діагностичного центру, який був куплений певним клієнтом.

Ключові поля:

  1.  Таблиця «Діагнози» – Код діагнозу.
    1.  Таблиця «Препарати» – Код препарату.
    2.  Таблиця «Лікарі» – Код лікаря.
    3.  Таблиця «Квитанція» – Код квитанції.
    4.  Таблиця «Клієнти» – Код клієнта.

Зовнішні поля ключових полів таблиць:

  1.  Таблиця «Клієнти» – Код лікаря, Код діагнозу.
  2.  Таблиця «Квитанція» – Код препарату.

Налаштовую цілісність даних в схемі бази даних проекту. Схема показано в додатку 3 Рис. 19.


Висновок

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

При розробці курсового проекту було створено програмний додаток медичного діагностичного центру «Medical© control», який працює з базою даних медичного діагностичного центру. Через Medical© control можна здійснювати ряд операцій з базою даних медичного діагностичного центру: редагування, пошук та фільтрування за довільними полями, друкувати звіти, обчислювати прибуток за день, підраховувати кількість записів в таблицях: Діагнози, Квитанції, Клієнти, Препарати, Лікарі.

Створений додаток було з’єднано з базою даних за допомогою компонента ADOConnection та драйвера Microsoft Jet 4.0 OLE DB Provider. Таблиці бази даних були підключені до програмного додатку за допомогою компонентів DataSource та ADOQuery, який містить в собі повний код SQL певної таблиці(Діагнози, Квитанції, Препарати, Лікарі, Клієнти). Виведення даних з таблиць було здійснено за допомогою компонента DBGrid. Було створено головне меню програмного додатку за допомогою MainMenu та панель швидкого доступу ToolBar на якому було розташовано 8 кнопок(Додати запис, Видалити запис, Пошук, Друк, Про нас, Довідка, Зміна паролю, Вихід) та додаткова 9 кнопка швидкого доступу( «Підрахунок» на формі «Квитанції»). Було розміщено компонент DBNavigator за допомогою якого можна додавати, видаляти, оновлювати дані, перемикати на наступний або попередній запис таблицях: Діагнози, Квитанції, Клієнти, Препарати, Лікарі. Також було розміщено панель фільтрації, яка містить компоненти: ComboBox(випадаючий список, в якому вибирається за яким атрибутом фільтрувати, або скинути фільтр), Edit(поле введення символів, по яких здійснюється фільтрація), Button(кнопка для підтвердження фільтрації по заданому атрибуту в ComboBox на основі введених символів в Edit). Було розташовано компонент StatusBar – для виведення підказок та кількості записів в таблиці, додатково виводить зароблену суму за день в формі «Квитанції».

Для розробки програмного додатку знадобилось створити схему функціональної діяльності проектованої системи (IDEF0), яка наведена в додатку 3 Рис. 16; діаграму потоків даних проектованої системи (DFD), яка наведена в додатку 3 Рис. 17; діаграма варіантів використання проектованої системи, яка наведена в додатку 3 Рис. 18; логічну модель бази даних проектованої системи в ERwin, яка наведена в додатку 3 Рис. 19.

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


Список літератури

  1.  Іан Соммервілла. Інженерія програмного забезпечення 2002.
  2.  Орлов С. А. Технології розробки програмного забезпечення: Розробка складних програмних систем (Вид. 3), 2004.
  3.  Ерік Дж. Брауде. Технологія розробки програмного забезпечення, 2004.
  4.  Липаев, В. В. Програмна інженерія. Методологічні основи [Текст]: Учеб. / В. В. Липаев; Держ. ун-т - Вища школа економіки. - М. : ТЕИС, 2006. - 608 с. - 1000 екз. - ISBN 5-7598-0424-3, УДК 004,41 (075,8), ББК 32.973.26-018я73, Липаев, Вища школа економіки, ТЕИС, 2006, PDF, економіка, програмування.
  5.  Лапланте, Філ (2009). Вимоги Техніка для програмного забезпечення і систем (вид. 1). Редмонд, штат Вашингтон: CRC Press. ISBN 1-42006-467-3.
  6.  Макконнелл Стів (1996). Швидкий розвиток: Приборкання Дикого Software Розклади (. Вид 1). Редмонд, штат Вашингтон: Microsoft Press. ISBN 1-55615-900-5.
  7.  Віджерс, Карл Е. (2003). Вимоги до програмного забезпечення (вид. 2). Редмонд, штат Вашингтон: Microsoft Press. ISBN 0-7356-1879-8.
  8.  Андрій Стельман і Дженніфер Грін (2005). Прикладне програмне забезпечення для управління проектами. Кембридж, Массачусетс: O'Reilly Media. ISBN 0-596-00948-8.
  9.  Брайан Беренбач, Даніель Пауліш, Юрген Катзмеєр, Арнольд Рудофер (2009). Програмне забезпечення та системи технічних вимог: на практиці. Нью-Йорк: McGraw-Hill Професійний. ISBN 0-07-1605479.
  10.  Вальтер Собків (2008). Сталий розвиток можливий при Creative System Engineering. Нью-Джерсі: CassBeth. ISBN 0615216307.


Додаток 1. Лістинг програми

/*

- Управління базою даних «Медична діагностична клініка» MDC.mdb

- Автор Гребенюк Іван Андрійович

- Версія 1.0

- Програмування модулів (форм) алгоритмами

*/

//diagnozi_delete_zaput.cpp (daig_delete)

#include <vcl.h>

#pragma hdrstop

#include "diagnozi_delete_zaput.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tdiag_delete *diag_delete;

__fastcall Tdiag_delete::Tdiag_delete(TComponent* Owner) : TForm(Owner)  {  }

void __fastcall Tdiag_delete::Button1Click(TObject *Sender)

{ Memo1->Clear(); bd_work->diagnoziz->Active=false; AnsiString text[]={"DELETE FROM Діагнози",

" WHERE Діагнози.[Код діагнозу]=\""+Edit1->Text+"\"", " OR Діагнози.[Термін лікування]=\""+Edit3->Text+"\" OR",

"Діагнози.Термін=\""+Edit2->Text+"\""}; for(unsigned t=0; t<sizeof(text)/sizeof(int); t++) Memo1->Lines->Add(text[t]);

bd_work->diagnoziz->Close(); bd_work->diagnoziz->SQL->Clear();  bd_work->diagnoziz->SQL->Add(Memo1->Text);

 bd_work->diagnoziz->ExecSQL(); AnsiString text2[]={"SELECT *", "FROM Діагнози;"}; Memo1->Clear();

for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++) Memo1->Lines->Add(text2[t]); bd_work->diagnoziz->Close();

bd_work->diagnoziz->SQL->Clear(); bd_work->diagnoziz->SQL->Add(Memo1->Text); bd_work->diagnoziz->Open();

bd_work->diagnoziz->Active=true; bd_work->count_diagnozi->Active=false; bd_work->count_diagnozi->Active=true; }

void __fastcall Tdiag_delete::FormCreate(TObject *Sender) { Left = 387; Top = 523;  }

void __fastcall Tdiag_delete::Edit3KeyPress(TObject *Sender, char &Key)

{ if(Key == VK_RETURN) Button1Click(Sender); }

// diagnozi_insert_zaput.cpp (diag_insert)

#include <vcl.h>

#pragma hdrstop

#include "diagnozi_insert_zaput.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tdiag_insert *diag_insert;

__fastcall Tdiag_insert::Tdiag_insert(TComponent* Owner) : TForm(Owner) { }

void __fastcall Tdiag_insert::Button1Click(TObject *Sender)

{ Memo1->Clear();

bd_work->diagnoziz->Active=false; AnsiString text[]={"INSERT INTO Діагнози([Код діагнозу], Термін,[Термін лікування])",

" VALUES ( \""+Edit1->Text+"\",\""+Edit2->Text+"\",\""+Edit3->Text+"\")"};

for(unsigned t=0; t<sizeof(text)/sizeof(int); t++) Memo1->Lines->Add(text[t]);

bd_work->diagnoziz->Close(); bd_work->diagnoziz->SQL->Clear();  bd_work->diagnoziz->SQL->Add(Memo1->Text);

 bd_work->diagnoziz->ExecSQL(); AnsiString text2[]={"SELECT *", "FROM Діагнози;"}; Memo1->Clear();

for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++) Memo1->Lines->Add(text2[t]); bd_work->diagnoziz->Close();

bd_work->diagnoziz->SQL->Clear(); bd_work->diagnoziz->SQL->Add(Memo1->Text); bd_work->diagnoziz->Open();

bd_work->diagnoziz->Active=true; bd_work->count_diagnozi->Active=false; bd_work->count_diagnozi->Active=true; }

void __fastcall Tdiag_insert::FormCreate(TObject *Sender)  {  Left = 387; Top = 523;   }

void __fastcall Tdiag_insert::Button1KeyPress(TObject *Sender, char &Key) {  if(Key == VK_RETURN) Button1Click(Sender); }

//diagnozi_search_zaput.cpp (diag_search)

#include <vcl.h>

#pragma hdrstop

#include "diagnozi_search_zaput.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tdiag_search *diag_search;

__fastcall Tdiag_search::Tdiag_search(TComponent* Owner) : TForm(Owner)  { }

void __fastcall Tdiag_search::Button1Click(TObject *Sender)

{ if((RadioButton2->Checked==true)&&(bd_work->diagnoziz->Locate("Термін",Edit2->Text, TLocateOptions())))

{ShowMessage("Присутній!");}

if((RadioButton1->Checked==true)&&(bd_work->diagnoziz->Locate("Код діагнозу",Edit1->Text, TLocateOptions())))

{ShowMessage("Присутній!");}

if((RadioButton3->Checked==true)&&(bd_work->diagnoziz->Locate("Термін лікування",Edit3->Text, TLocateOptions())))

{ShowMessage("Присутній!");}  }

void __fastcall Tdiag_search::Edit3KeyPress(TObject *Sender, char &Key) { if(Key==VK_RETURN) Button1Click(Sender); }

void __fastcall Tdiag_search::FormCreate(TObject *Sender) {  Left = 387; Top = 523; }

//connect.cpp (Me)

#include <vcl.h>

#pragma hdrstop

#include "connect.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TMe *Me;

__fastcall TMe::TMe(TComponent* Owner) : TForm(Owner) { }

void __fastcall TMe::FormCreate(TObject *Sender) {  Left = 522; Top = 274;  }

//Helps.cpp (Help)

#include <vcl.h>

#pragma hdrstop

#include "Helps.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

THelp *Help;

__fastcall THelp::THelp(TComponent* Owner) : TForm(Owner) { }

void __fastcall THelp::FormCreate(TObject *Sender) { Left = 460; Top = 178; }

void __fastcall THelp::FormActivate(TObject *Sender) { system("start Довідка.chm"); }

//diagnozi.cpp (Diagnoz)

#include <vcl.h>

#pragma hdrstop

#include "diagnozi.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TDiagnoz *Diagnoz;

String atribute[] = {"Код діагнозу","Термін","Термін лікування"};

__fastcall TDiagnoz::TDiagnoz(TComponent* Owner) : TForm(Owner) { }

void __fastcall TDiagnoz::FormClose(TObject *Sender, TCloseAction &Action)

{ PasswordDlg->Close(); }

void __fastcall TDiagnoz::ComboBox1KeyPress(TObject *Sender, char &Key)

{  if(Key==Key)Key = 0x00; }

void __fastcall TDiagnoz::Button3Click(TObject *Sender) { Panel2->Visible=false; }

void __fastcall TDiagnoz::DBGrid1MouseMove(TObject *Sender,    TShiftState Shift, int X, int Y)

{ bd_work->count_diagnozi->Active=false;

bd_work->count_diagnozi->Active=true; Diagnoz->StatusBar1->Panels->Items[1]->Text = DBText1->Caption; }

void __fastcall TDiagnoz::FormCanResize(TObject *Sender, int &NewWidth, int &NewHeight, bool &Resize)

{ Edit1->Width=Diagnoz->Width-260; }

void __fastcall TDiagnoz::Button1Click(TObject *Sender)

{  if((ComboBox1->Text=="Скинути фільтр")||(Edit1->Text=="")) bd_work->diagnoziz->Filtered = false;

else if((ComboBox1->Text=="Фільтр по \"Код діагнозу\"")&&(Edit1->Text!=""))

{ bd_work->diagnoziz->Filtered = false; bd_work->diagnoziz->Filter = "[Код діагнозу] like '"+Edit1->Text+"*'";

bd_work->diagnoziz->Filtered = true; }

else if((ComboBox1->Text=="Фільтр по \"Термін\"")&&(Edit1->Text!=""))

{ bd_work->diagnoziz->Filtered = false; bd_work->diagnoziz->Filter = "[Термін] like '"+Edit1->Text+"*'";

bd_work->diagnoziz->Filtered = true; }

else if((ComboBox1->Text=="Фільтр по \"Термін лікування\"")&&(Edit1->Text!=""))

{ bd_work->diagnoziz->Filtered = false;

bd_work->diagnoziz->Filter = "[Термін лікування] like '"+Edit1->Text+"*'"; bd_work->diagnoziz->Filtered = true; } }

void __fastcall TDiagnoz::ToolButton1Click(TObject *Sender) { bd_work->table1Click(Sender); }

void __fastcall TDiagnoz::ToolButton2Click(TObject *Sender) { bd_work->vidalit1Click(Sender); }

void __fastcall TDiagnoz::ToolButton4Click(TObject *Sender) { bd_work->N1Click(Sender); }

void __fastcall TDiagnoz::ToolButton6Click(TObject *Sender) { bd_work->N3Click(Sender); }

void __fastcall TDiagnoz::ToolButton8Click(TObject *Sender) { bd_work->MeButtonClick(Sender); }

void __fastcall TDiagnoz::ToolButton10Click(TObject *Sender) { bd_work->N2Click(Sender); }

void __fastcall TDiagnoz::ToolButton12Click(TObject *Sender) { bd_work->N5Click(Sender); }

void __fastcall TDiagnoz::FormCreate(TObject *Sender) { Left = 387; Top = 74;         }

void __fastcall TDiagnoz::ToolButton13Click(TObject *Sender) {  bd_work->N63Click(Sender);  }

void __fastcall TDiagnoz::DBGrid1KeyPress(TObject *Sender, char &Key) { if(Key == VK_RETURN)Button1Click(Sender); }

//password_new.cpp (Pass_renew)

#include <vcl.h>

#pragma hdrstop

#include "password_new.h"

#include "password.h"

#include "diagnozi.h"

#include "klienti.h"

#include "kvitanciji.h"

#include "likari.h"

#include "priparati.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TPass_renew *Pass_renew;

__fastcall TPass_renew::TPass_renew(TComponent* Owner) : TForm(Owner) { }

void __fastcall TPass_renew::FormCreate(TObject *Sender) { Left = 416; Top = 314; }

void __fastcall TPass_renew::FormClose(TObject *Sender,  TCloseAction &Action)

{ if((Diagnoz->Visible == true)||(klient->Visible == true)|| (kvitancii->Visible == true)||(likar->Visible == true)||

(Priparats->Visible == true)) {Complete_pass->Text = ""; Old_pass->Text = "";New_pass->Text = "";Close();}

else PasswordDlg->Visible = true;   Complete_pass->Text = "";New_pass->Text = "";Old_pass->Text = ""; }

void __fastcall TPass_renew::Button1Click(TObject *Sender)

{ bool turned = false;  String mess1 = "Поля 'Введіть новий пароль' і ";

String mess2 = "'Повторіть новий пароль' повинні співпадати!"; Memo1->Clear();

Memo1->Lines->LoadFromFile("renew.bin"); String pass_file = Memo1->Text; if(Old_pass->Text==pass_file)  {

if(New_pass->Text == Complete_pass->Text) { Memo1->Text = Complete_pass->Text;  Memo1->Lines->SaveToFile("renew.bin");

turned = true; }  else ShowMessage(mess1+mess2); }  else ShowMessage("Невірний старий пароль!");

if(turned == true)  { ShowMessage("Зміна пароля пройшла успішно!"); Visible = false;  Close(); } }

void __fastcall TPass_renew::Old_passMouseMove(TObject *Sender,TShiftState Shift, int X, int Y)

{ Old_pass->Hint = Old_pass->Text; }

void __fastcall TPass_renew::New_passMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)

{ New_pass->Hint = New_pass->Text;  }

void __fastcall TPass_renew::Complete_passMouseMove(TObject *Sender,   TShiftState Shift, int X, int Y)

{  Complete_pass->Hint = Complete_pass->Text;  }

void __fastcall TPass_renew::Button1KeyPress(TObject *Sender, char &Key)

{ if(Key == VK_RETURN)Button1Click(Sender); }

//password.cpp (PasswordDlg)

#include <vcl.h>

#pragma hdrstop

#include "password.h"

#include "diagnozi.h"

#include "work_bd.h"

#include "password_new.h"

#include "fstream.h"

#pragma resource "*.dfm"

TPasswordDlg *PasswordDlg;

__fastcall TPasswordDlg::TPasswordDlg(TComponent* AOwner) : TForm(AOwner) { }

void __fastcall TPasswordDlg::OKBtnClick(TObject *Sender)

{ Memo1->Clear(); Memo1->Lines->LoadFromFile("renew.bin"); String pass_file = Memo1->Text;

if(pass_file != Password->Text) { ShowMessage("Невірний пароль!"); } else { PasswordDlg->Visible=false; Diagnoz->Show(); } }

void __fastcall TPasswordDlg::CancelBtnClick(TObject *Sender) { PasswordDlg->Close(); }

void __fastcall TPasswordDlg::FormCreate(TObject *Sender)

{ fstream file("renew.bin"); if(!file.is_open()) { ofstream sozdat("renew.bin");  sozdat.close();  }  Left = 529; Top = 317;       }

void __fastcall TPasswordDlg::SpeedButton1Click(TObject *Sender)

{ PasswordDlg->Visible = false; Pass_renew->Visible = true;    }

//connect.cpp (Me)

#include <vcl.h>

#pragma hdrstop

#include "connect.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

TMe *Me;

__fastcall TMe::TMe(TComponent* Owner) : TForm(Owner) { }

void __fastcall TMe::FormCreate(TObject *Sender) { Left = 522; Top = 274;  }

//kvitanciji.cpp (kvitancii)

#include <vcl.h>

#pragma hdrstop

#include "kvitanciji.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tkvit_delete *kvit_delete;

__fastcall Tkvit_delete::Tkvit_delete(TComponent* Owner) : TForm(Owner) { }

void __fastcall Tkvit_delete::Button1Click(TObject *Sender)

{ String ed1 = "[Код квитанції]=\""+Edit1->Text+"\" OR "; String ed2 = "[Код клієнта]=\""+Edit2->Text+"\" OR "; String ed3;

if(Edit3->Text != "")  ed3 = "[Всього до оплати]="+Edit3->Text+" OR "; else Edit3->Text = "0";

String ed5 = "[Прізвище та ім'я клієнта]=\""+Edit5->Text+"\" OR "; String ed6 = "Діагноз=\""+Edit6->Text+"\" OR ";

String ed7 = "[Код препарату]=\""+Edit7->Text+"\""; String mainText = ed1+ed2+ed3+ed5+ed6+ed7;

Memo1->Clear(); bd_work->kvitanciiz->Active=false; AnsiString text[]={"DELETE FROM Квитанція where "+mainText+""};

for(unsigned t=0; t<sizeof(text)/sizeof(int); t++) Memo1->Lines->Add(text[t]); bd_work->kvitanciiz->Close();

bd_work->kvitanciiz->SQL->Clear(); bd_work->kvitanciiz->SQL->Add(Memo1->Text); bd_work->kvitanciiz->ExecSQL();

AnsiString text2[]={"SELECT *", "FROM Квитанція;"}; Memo1->Clear(); for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)

Memo1->Lines->Add(text2[t]); bd_work->kvitanciiz->Close(); bd_work->kvitanciiz->SQL->Clear();

bd_work->kvitanciiz->SQL->Add(Memo1->Text); bd_work->kvitanciiz->Open(); bd_work->kvitanciiz->Active=true; }

void __fastcall Tkvit_delete::FormCreate(TObject *Sender) {  Left = 913; Top = 453;  }

void __fastcall Tkvit_delete::Edit1KeyPress(TObject *Sender, char &Key) { if(Key == VK_RETURN)Button1Click(Sender); }

//kvitancii_delete_zaput.cpp (kvit_delete)

#include <vcl.h>

#pragma hdrstop

#include "kvitancii_delete_zaput.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tkvit_delete *kvit_delete;

__fastcall Tkvit_delete::Tkvit_delete(TComponent* Owner) : TForm(Owner) {  }

void __fastcall Tkvit_delete::Button1Click(TObject *Sender)

{ String ed1 = "[Код квитанції]=\""+Edit1->Text+"\" OR "; String ed2 = "[Код клієнта]=\""+Edit2->Text+"\" OR ";

String ed3; if(Edit3->Text != "")  ed3 = "[Всього до оплати]="+Edit3->Text+" OR ";

else Edit3->Text = "0"; String ed5 = "[Прізвище та ім'я клієнта]=\""+Edit5->Text+"\" OR ";

String ed6 = "Діагноз=\""+Edit6->Text+"\" OR "; String ed7 = "[Код препарату]=\""+Edit7->Text+"\"";

String mainText = ed1+ed2+ed3+ed5+ed6+ed7; Memo1->Clear(); bd_work->kvitanciiz->Active=false;

AnsiString text[]={"DELETE FROM Квитанція where "+mainText+""}; for(unsigned t=0; t<sizeof(text)/sizeof(int); t++)

Memo1->Lines->Add(text[t]); bd_work->kvitanciiz->Close(); bd_work->kvitanciiz->SQL->Clear();

bd_work->kvitanciiz->SQL->Add(Memo1->Text); bd_work->kvitanciiz->ExecSQL();

AnsiString text2[]={"SELECT *", "FROM Квитанція;"}; Memo1->Clear(); for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)

Memo1->Lines->Add(text2[t]); bd_work->kvitanciiz->Close(); bd_work->kvitanciiz->SQL->Clear();

bd_work->kvitanciiz->SQL->Add(Memo1->Text); bd_work->kvitanciiz->Open(); bd_work->kvitanciiz->Active=true; }

void __fastcall Tkvit_delete::FormCreate(TObject *Sender) { Left = 913; Top = 453;         }

void __fastcall Tkvit_delete::Edit1KeyPress(TObject *Sender, char &Key) { if(Key == VK_RETURN)Button1Click(Sender);  }

//kvitancii_insert_zaput.cpp (kvit_insert)

#include <vcl.h>

#pragma hdrstop

#include "kvitancii_insert_zaput.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tkvit_insert *kvit_insert;

__fastcall Tkvit_insert::Tkvit_insert(TComponent* Owner) : TForm(Owner) { }

void __fastcall Tkvit_insert::Button1Click(TObject *Sender)

{ String ed1 = "\""+Edit1->Text+"\","; String lcb1 = "\""+DBLookupComboBox2->Text+"\",";

String ed2 = "\""+Edit2->Text+"\","; String dtp1 = "\""+DateToStr(DateTimePicker1->Date)+"\",";

String ed3 = "\""+Edit3->Text+"\","; String lcb2 = "\""+DBLookupComboBox1->Text+"\",";

String lcb3 = "\""+DBLookupComboBox3->Text+"\""; String mainText = ed1+lcb1+ed2+dtp1+ed3+lcb2+lcb3;

Memo1->Clear(); bd_work->kvitanciiz->Active=false; AnsiString text[]={"INSERT INTO Квитанція([Код квитанції],[Код клієнта],",

"[Всього до оплати],[Дата видачі],[Прізвище та ім'я клієнта],Діагноз,[Код препарату])", " VALUES ("+mainText+")"};

for(unsigned t=0; t<sizeof(text)/sizeof(int); t++) Memo1->Lines->Add(text[t]); bd_work->kvitanciiz->Close();

bd_work->kvitanciiz->SQL->Clear(); bd_work->kvitanciiz->SQL->Add(Memo1->Text); bd_work->kvitanciiz->ExecSQL();

AnsiString text2[]={"SELECT *", "FROM Квитанція;"}; Memo1->Clear(); for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)

Memo1->Lines->Add(text2[t]); bd_work->kvitanciiz->Close(); bd_work->kvitanciiz->SQL->Clear();

bd_work->kvitanciiz->SQL->Add(Memo1->Text); bd_work->kvitanciiz->Open(); bd_work->kvitanciiz->Active=true; }

void __fastcall Tkvit_insert::FormCreate(TObject *Sender) {  Left = 913; Top = 441;   }

void __fastcall Tkvit_insert::Edit1KeyPress(TObject *Sender, char &Key) { if(Key == VK_RETURN)Button1Click(Sender); }

//kvitancii_search_zaput.cpp (kvit_search)

#include <vcl.h>

#pragma hdrstop

#include "kvitancii_search_zaput.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tkvit_search *kvit_search;

__fastcall Tkvit_search::Tkvit_search(TComponent* Owner) : TForm(Owner) { }

void __fastcall Tkvit_search::Button1Click(TObject *Sender)

{ if((RadioButton1->Checked==true)&&(bd_work->kvitanciiz->Locate("Код квитанції",Edit1->Text, TLocateOptions())))

{ShowMessage("Присутній!");}

if((RadioButton2->Checked==true)&&(bd_work->kvitanciiz->Locate("Код клієнта",Edit2->Text, TLocateOptions())))

{ShowMessage("Присутній!");}

if((RadioButton3->Checked==true)&&(bd_work->kvitanciiz->Locate("Всього до оплати",Edit3->Text, TLocateOptions())))

{ShowMessage("Присутній!");}

if((RadioButton4->Checked==true)&&(bd_work->kvitanciiz->Locate("Прізвище та ім'я клієнта",Edit4->Text, TLocateOptions())))

{ShowMessage("Присутній!");}

if((RadioButton5->Checked==true)&&(bd_work->kvitanciiz->Locate("Діагноз",Edit5->Text, TLocateOptions())))

{ShowMessage("Присутній!");}

if((RadioButton6->Checked==true)&&(bd_work->kvitanciiz->Locate("Код препарату",Edit6->Text, TLocateOptions())))

{ShowMessage("Присутній!");} }

void __fastcall Tkvit_search::FormCreate(TObject *Sender)  {  Left = 913; Top = 441; }

void __fastcall Tkvit_search::RadioButton1KeyPress(TObject *Sender, char &Key) {if(Key==VK_RETURN)Button1Click(Sender);   }

//kvitancii_suma_za_den_zaput.cpp (suma_za_den_form)

#include <vcl.h>

#pragma hdrstop

#include "kvitancii_suma_za_den_zaput.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tsuma_za_den_form *suma_za_den_form;

__fastcall Tsuma_za_den_form::Tsuma_za_den_form(TComponent* Owner) : TForm(Owner) { }

void proverka()

{ if(suma_za_den_form->DBText1->Caption == "") {String none = "0"; suma_za_den_form->DBText1->Caption = none;}}

void __fastcall Tsuma_za_den_form::Button1Click(TObject *Sender)

{ String date = DateToStr(MonthCalendar1->Date); date = StringReplace(date,".","/",TReplaceFlags()<<rfReplaceAll);

char *d = date.c_str(); char first_2_day[5]; first_2_day[0] = d[0];first_2_day[1] = d[1];

char month[5]; month[0] = d[3];month[1] = d[4]; d[0] = month[0];d[1] = month[1]; d[3] = first_2_day[0];d[4] = first_2_day[1];

char d1[100]; for(int i=0;i<10;i++)  { d1[i] = d[i]; } Edit1->Text = d1; Memo1->Clear();

bd_work->suma_za_den->Active=false; String sum = "SELECT SUM(Квитанція.[Всього до оплати]) FROM Квитанція";

AnsiString text= sum+" WHERE Квитанція.[Дата видачі]=#"+Edit1->Text+"#";

Memo1->Lines->Add(text); bd_work->suma_za_den->SQL->Clear();  

bd_work->suma_za_den->SQL->Add(Memo1->Text);    bd_work->suma_za_den->ExecSQL();

bd_work->suma_za_den->Active=true; suma_za_den_form->Height = 281; proverka(); }

void __fastcall Tsuma_za_den_form::FormCreate(TObject *Sender)  { Left = 1168; Top = 450;suma_za_den_form->Height=257; }

void __fastcall Tsuma_za_den_form::MonthCalendar1KeyPress(TObject *Sender,   char &Key)

{ if(Key == VK_RETURN)Button1Click(Sender);  }

//klienti.cpp (klienti)

#include <vcl.h>

#pragma hdrstop

#include "klienti.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tklient *klient;

__fastcall Tklient::Tklient(TComponent* Owner) : TForm(Owner) { }

void __fastcall Tklient::FormCanResize(TObject *Sender, int &NewWidth,  int &NewHeight, bool &Resize)

{ Edit1->Width=klient->Width-260; }

void __fastcall Tklient::FormCreate(TObject *Sender)

{ Edit1->Width=klient->Width-260; Left = 237; Top = 116; }

void __fastcall Tklient::FormClose(TObject *Sender, TCloseAction &Action) { PasswordDlg->Close(); }

void __fastcall Tklient::Button1Click(TObject *Sender)

{ if((ComboBox1->Text=="Скинути фільтр")||(Edit1->Text=="")) bd_work->klientiz->Filtered = false;

else if((ComboBox1->Text=="Фільтр по \"Код клієнта\"")&&(Edit1->Text!=""))

{ bd_work->klientiz->Filtered = false; bd_work->klientiz->Filter = "[Код клієнта] like '"+Edit1->Text+"*'";

bd_work->klientiz->Filtered = true; }

else if((ComboBox1->Text=="Фільтр по \"Діагноз\"")&&(Edit1->Text!=""))

{ bd_work->klientiz->Filtered = false; bd_work->klientiz->Filter = "[Діагноз клієнта] like '"+Edit1->Text+"*'";

bd_work->klientiz->Filtered = true; }

else if((ComboBox1->Text=="Фільтр по \"Код лікаря\"")&&(Edit1->Text!=""))

{ bd_work->klientiz->Filtered = false; bd_work->klientiz->Filter = "[Код лікаря] like '"+Edit1->Text+"*'";

bd_work->klientiz->Filtered = true; }

else if((ComboBox1->Text=="Фільтр по \"Прізвище та ім'я\"")&&(Edit1->Text!=""))

{ bd_work->klientiz->Filtered = false;

bd_work->klientiz->Filter = "[Прізвище та ім'я] like '"+Edit1->Text+"*'"; bd_work->klientiz->Filtered = true; }

else if((ComboBox1->Text=="Фільтр по \"Код паспорту\"")&&(Edit1->Text!="")) { bd_work->klientiz->Filtered = false;

bd_work->klientiz->Filter = "[Код паспорту] like '"+Edit1->Text+"*'"; bd_work->klientiz->Filtered = true; }

else if((ComboBox1->Text=="Фільтр по \"Телефонний номер\"")&&(Edit1->Text!="")) { bd_work->klientiz->Filtered = false;

bd_work->klientiz->Filter = "[Телефонний номер] like '"+Edit1->Text+"*'"; bd_work->klientiz->Filtered = true; }

else if((ComboBox1->Text=="Фільтр по \"Місто проживання\"")&&(Edit1->Text!=""))

{ bd_work->klientiz->Filtered = false; bd_work->klientiz->Filter = "[Місто проживання] like '"+Edit1->Text+"*'";

bd_work->klientiz->Filtered = true; } }

void __fastcall Tklient::DBGrid1MouseMove(TObject *Sender,   TShiftState Shift, int X, int Y)

{ bd_work->count_klients->Active=false;

bd_work->count_klients->Active=true; klient->StatusBar1->Panels->Items[1]->Text = DBText1->Caption; }

void __fastcall Tklient::ToolButton1Click(TObject *Sender) { bd_work->N56Click(Sender); }

void __fastcall Tklient::ToolButton2Click(TObject *Sender) { bd_work->N57Click(Sender); }

void __fastcall Tklient::ToolButton4Click(TObject *Sender) { bd_work->N58Click(Sender); }

void __fastcall Tklient::ToolButton6Click(TObject *Sender) { bd_work->N59Click(Sender); }

void __fastcall Tklient::ToolButton8Click(TObject *Sender) {  bd_work->N60Click(Sender); }

void __fastcall Tklient::ToolButton10Click(TObject *Sender) {  bd_work->N61Click(Sender); }

void __fastcall Tklient::ToolButton12Click(TObject *Sender) { bd_work->N51Click(Sender); }

void __fastcall Tklient::ToolButton14Click(TObject *Sender) { bd_work->N63Click(Sender);     }

void __fastcall Tklient::DBGrid1KeyPress(TObject *Sender, char &Key) { if(Key == VK_RETURN)Button1Click(Sender);   }

//klienti_delete_zaput.cpp (klient_deletes)

#include <vcl.h>

#pragma hdrstop

#include "klienti_delete_zaput.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tklient_deletes *klient_deletes;

__fastcall Tklient_deletes::Tklient_deletes(TComponent* Owner) : TForm(Owner) { }

void __fastcall Tklient_deletes::Button1Click(TObject *Sender)

{ String ed1 = "[Код клієнта] = \""+Edit1->Text+"\" OR "; String ed2 = "[Діагноз клієнта] = \""+Edit2->Text+"\" OR ";

String ed3 = "[Код лікаря] = \""+Edit3->Text+"\" OR "; String ed4 = "[Прізвище та ім'я] = \""+Edit4->Text+"\" OR ";

String ed5 = "[Код паспорту] = \""+Edit5->Text+"\" OR "; String ed6 = "[Телефонний номер] = \""+Edit6->Text+"\" OR ";

String ed7 = "[Місто проживання] = \""+Edit7->Text+"\""; String mainText = ed1+ed2+ed3+ed4+ed5+ed6+ed7;

Memo1->Clear(); bd_work->klientiz->Active=false; AnsiString text[]={"DELETE FROM Клієнти ",

"WHERE "+mainText+";"}; for(unsigned t=0; t<sizeof(text)/sizeof(int); t++) Memo1->Lines->Add(text[t]);

bd_work->klientiz->Close(); bd_work->klientiz->SQL->Clear(); bd_work->klientiz->SQL->Add(Memo1->Text);

bd_work->klientiz->ExecSQL(); AnsiString text2[]={"SELECT *", "FROM Клієнти;"}; Memo1->Clear();

for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++) Memo1->Lines->Add(text2[t]); bd_work->klientiz->Close();

bd_work->klientiz->SQL->Clear(); bd_work->klientiz->SQL->Add(Memo1->Text); bd_work->klientiz->Open();

bd_work->klientiz->Active=true; bd_work->count_klients->Active=false; bd_work->count_klients->Active=true; }

void __fastcall Tklient_deletes::FormCreate(TObject *Sender) { Left = 913; Top = 453;      }

void __fastcall Tklient_deletes::Edit1KeyPress(TObject *Sender, char &Key) { if(Key == VK_RETURN)Button1Click(Sender); }

//klienti_insert_zaput.cpp (klient_insert)

#include <vcl.h>

#pragma hdrstop

#include "klienti_insert_zaput.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tklient_insert *klient_insert;

__fastcall Tklient_insert::Tklient_insert(TComponent* Owner) : TForm(Owner) { }

void __fastcall Tklient_insert::Button1Click(TObject *Sender)

{ String ed1 = "\""+Edit1->Text+"\","; String lcb1 = "\""+DBLookupComboBox1->Text+"\",";

String lcb2 = "\""+DBLookupComboBox2->Text+"\","; String ed4 = "\""+Edit4->Text+"\",";

String ed5 = "\""+Edit5->Text+"\","; String ed6 = "\""+Edit6->Text+"\","; String ed7 = "\""+Edit7->Text+"\"";

String mainText = ed1+lcb1+lcb2+ed4+ed5+ed6+ed7; Memo1->Clear();

bd_work->klientiz->Active=false; AnsiString text[]={"INSERT INTO Клієнти([Код клієнта],[Діагноз клієнта],",

"[Код лікаря],[Прізвище та ім'я],[Код паспорту],", "[Телефонний номер],[Місто проживання])"," VALUES ("+mainText+")"};

for(unsigned t=0; t<sizeof(text)/sizeof(int); t++) Memo1->Lines->Add(text[t]); bd_work->klientiz->Close();

bd_work->klientiz->SQL->Clear(); bd_work->klientiz->SQL->Add(Memo1->Text); bd_work->klientiz->ExecSQL();

AnsiString text2[]={"SELECT *", "FROM Клієнти;"}; Memo1->Clear();

for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++) Memo1->Lines->Add(text2[t]); bd_work->klientiz->Close();

bd_work->klientiz->SQL->Clear(); bd_work->klientiz->SQL->Add(Memo1->Text); bd_work->klientiz->Open();

bd_work->klientiz->Active=true; bd_work->count_klients->Active=false; bd_work->count_klients->Active=true; }

void __fastcall Tklient_insert::FormCreate(TObject *Sender) { Left = 913; Top = 453;    }

void __fastcall Tklient_insert::Edit1KeyPress(TObject *Sender, char &Key) { if(Key == VK_RETURN)Button1Click(Sender);   }

//klienti_search_zaput.cpp (klient_search)

#include <vcl.h>

#pragma hdrstop

#include "klienti_search_zaput.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tklient_search *klient_search;

__fastcall Tklient_search::Tklient_search(TComponent* Owner) : TForm(Owner) { }

void __fastcall Tklient_search::Button1Click(TObject *Sender)

{ if((RadioButton1->Checked==true)&&(bd_work->klientiz->Locate("Код клієнта",Edit1->Text, TLocateOptions())))

{ShowMessage("Присутній!");}

if((RadioButton2->Checked==true)&&(bd_work->klientiz->Locate("Діагноз клієнта",Edit2->Text, TLocateOptions())))

{ShowMessage("Присутній!");}

if((RadioButton3->Checked==true)&&(bd_work->klientiz->Locate("Код лікаря",Edit3->Text, TLocateOptions())))

{ShowMessage("Присутній!");}

if((RadioButton4->Checked==true)&&(bd_work->klientiz->Locate("Прізвище та ім'я",Edit4->Text, TLocateOptions())))

{ShowMessage("Присутній!");}

if((RadioButton5->Checked==true)&&(bd_work->klientiz->Locate("Код паспорту",Edit5->Text, TLocateOptions())))

{ShowMessage("Присутній!");}

if((RadioButton6->Checked==true)&&(bd_work->klientiz->Locate("Телефонний номер",Edit6->Text, TLocateOptions())))

{ShowMessage("Присутній!");}

if((RadioButton7->Checked==true)&&(bd_work->klientiz->Locate("Місто проживання",Edit7->Text, TLocateOptions())))

{ShowMessage("Присутній!");} }

void __fastcall Tklient_search::FormCreate(TObject *Sender)

{ Left = 913; Top = 453;  }

void __fastcall Tklient_search::RadioButton1KeyPress(TObject *Sender, char &Key)

{ if(Key == VK_RETURN)Button1Click(Sender); }

//likari.cpp (likar)

#include <vcl.h>

#pragma hdrstop

#include "likari.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tlikar *likar;

__fastcall Tlikar::Tlikar(TComponent* Owner) : TForm(Owner) { }

void __fastcall Tlikar::FormCanResize(TObject *Sender, int &NewWidth, int &NewHeight, bool &Resize)

{ Edit1->Width=likar->Width-260;         }

void __fastcall Tlikar::FormCreate(TObject *Sender) { Edit1->Width=likar->Width-260; Left = 367; Top = 120;   }

void __fastcall Tlikar::DBGrid1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y)

{ bd_work->count_likari->Active=false; bd_work->count_likari->Active=true;

StatusBar1->Panels->Items[1]->Text = DBText1->Caption; }

void __fastcall Tlikar::Button1Click(TObject *Sender)

{ if((ComboBox1->Text=="Скинути фільтр")||(Edit1->Text=="")) bd_work->likariz->Filtered = false; String FN = ""; //FieldName

if((ComboBox1->Text=="Фільтр по \"Код лікаря\"")&&(Edit1->Text!="")) {FN = "[Код лікаря] like '"+Edit1->Text+"*'"; }

else if((ComboBox1->Text=="Фільтр по \"Прізвище і ініціали\"")&&(Edit1->Text!=""))

{FN = "[Прізвище і ініціали] like '"+Edit1->Text+"*'";}

else if((ComboBox1->Text=="Фільтр по \"Код паспорту\"")&&(Edit1->Text!="")) {FN = "[Код паспорту] like '"+Edit1->Text+"*'";}

else if((ComboBox1->Text=="Фільтр по \"Телефонний номер\"")&&(Edit1->Text!=""))

{ FN = "[Телефонний номер] like '"+Edit1->Text+"*'"; }

else if((ComboBox1->Text=="Фільтр по \"Місто проживання\"")&&(Edit1->Text!=""))

{ FN = "[Місто проживання] like '"+Edit1->Text+"*'"; }

if(FN!="") { bd_work->likariz->Filtered = false; bd_work->likariz->Filter = FN; bd_work->likariz->Filtered = true; } }

void __fastcall Tlikar::FormClose(TObject *Sender, TCloseAction &Action)

{ PasswordDlg->Close(); }

void __fastcall Tlikar::ToolButton1Click(TObject *Sender) { bd_work->N43Click(Sender); }

void __fastcall Tlikar::ToolButton2Click(TObject *Sender) { bd_work->N44Click(Sender); }

void __fastcall Tlikar::ToolButton4Click(TObject *Sender) { bd_work->N45Click(Sender); }

void __fastcall Tlikar::ToolButton7Click(TObject *Sender) { bd_work->N46Click(Sender); }

void __fastcall Tlikar::ToolButton9Click(TObject *Sender) { bd_work->N47Click(Sender); }

void __fastcall Tlikar::ToolButton11Click(TObject *Sender) { bd_work->N48Click(Sender); }

void __fastcall Tlikar::ToolButton5Click(TObject *Sender) { bd_work->N39Click(Sender); }

void __fastcall Tlikar::ToolButton13Click(TObject *Sender) { bd_work->N63Click(Sender);}

void __fastcall Tlikar::DBGrid1KeyPress(TObject *Sender, char &Key)

{ if(Key == VK_RETURN)Button1Click(Sender); }

//likari_delete_zaput.cpp (likar_delete)

#include <vcl.h>

#pragma hdrstop

#include "likari_delete_zaput.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tlikar_delete *likar_delete;

__fastcall Tlikar_delete::Tlikar_delete(TComponent* Owner) : TForm(Owner) { }

void __fastcall Tlikar_delete::Button1Click(TObject *Sender)

{ String ed1 = "[Код лікаря] = \""+Edit1->Text+"\" OR ";

String ed2 = "[Прізвище і ініціали] = \""+Edit2->Text+"\" OR "; String ed3 = "[Код паспорту] = \""+Edit3->Text+"\" OR ";

String ed4 = "[Телефонний номер] = \""+Edit4->Text+"\" OR "; String ed5 = "[Місто проживання] = \""+Edit5->Text+"\"";

String mainText = ed1+ed2+ed3+ed4+ed5; Memo1->Clear();

bd_work->likariz->Active=false; AnsiString text[]={"DELETE FROM Лікарі WHERE "+mainText+""};

for(unsigned t=0; t<sizeof(text)/sizeof(int); t++) Memo1->Lines->Add(text[t]);

bd_work->likariz->Close(); bd_work->likariz->SQL->Clear(); bd_work->likariz->SQL->Add(Memo1->Text);

bd_work->likariz->ExecSQL(); AnsiString text2[]={"SELECT *", "FROM Лікарі;"};

Memo1->Clear(); for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)

Memo1->Lines->Add(text2[t]); bd_work->likariz->Close(); bd_work->likariz->SQL->Clear();

bd_work->likariz->SQL->Add(Memo1->Text); bd_work->likariz->Open(); bd_work->likariz->Active=true; }

void __fastcall Tlikar_delete::FormCreate(TObject *Sender) { Left = 913; Top = 441;         }

void __fastcall Tlikar_delete::Edit1KeyPress(TObject *Sender, char &Key) { if(Key == VK_RETURN)Button1Click(Sender);}

//likari_insert_zaput.cpp (likar_insert)

#include <vcl.h>

#pragma hdrstop

#include "likari_insert_zaput.h"

#include "work_bd.h"

#pragma package(smart_init)

#pragma resource "*.dfm"

Tlikar_insert *likar_insert;

__fastcall Tlikar_insert::Tlikar_insert(TComponent* Owner) : TForm(Owner)  { }

void __fastcall Tlikar_insert::Button1Click(TObject *Sender)

{ String ed1 = "\""+Edit1->Text+"\","; String ed2 = "\""+Edit2->Text+"\",";

String ed3 = "\""+Edit3->Text+"\","; String ed4 = "\""+Edit4->Text+"\","; String ed5 = "\""+Edit5->Text+"\"";

String mainText = ed1+ed2+ed3+ed4+ed5; Memo1->Clear(); bd_work->likariz->Active=false;

AnsiString text[]={"INSERT INTO Лікарі([Код лікаря],[Прізвище і ініціали],[Код паспорту],",

"[Телефонний номер],[Місто проживання]) VALUES ("+mainText+")"};

for(unsigned t=0; t<sizeof(text)/sizeof(int); t++) Memo1->Lines->Add(text[t]);

bd_work->likariz->Close(); bd_work->likariz->SQL->Clear(); bd_work->likariz->SQL->Add(Memo1->Text);

bd_work->likariz->ExecSQL(); AnsiString text2[]={"SELECT *",

"FROM Лікарі;"}; Memo1->Clear(); for(unsigned t=0; t<sizeof(text2)/sizeof(int); t++)

Memo1->Lines->Add(text2[t]); bd_work->likariz->Close(); bd_work->likariz->SQL->Clear();

bd_work->likariz->SQL->Add(Memo1->Text); bd_work->likariz->Open(); bd_work->likariz->Active=true;

}

void __fastcall Tlikar_insert::FormCreate(TObject *Sender)  {  Left = 913; Top = 441;         }

void __fastcall Tlikar_insert::Edit1KeyPress(TObject *Sender, char &Key) { if(Key == VK_RETURN)Button1Click(Sender);   }


Додаток 2. Результат роботи

Рис. 1 – Вікно довідки програми, та інструкція до неї.

Рис. 2 – Вікно контролю доступу до програми.

Рис. 3 – Вікно зміни пароля доступу до програми.

Рис. 4 – Вікно обрахування заробленої суми за певний день.

Рис. 5 – Вікно інформації про розробника.

Рис. 6 – Вікна видалення, додавання, пошуку та друку даних в Діагнози.

Рис. 7 – Вікна видалення, додавання, пошуку та друку даних в Квитанції.

Рис. 8 – Вікна видалення, додавання, пошуку та друку даних в Клієнти.

Рис. 9 – Вікна видалення, додавання, пошуку та друку даних в Лікарі.

Рис. 10 – Вікна видалення, додавання, пошуку та друку даних в Препарати.

Рис. 11 – Вікно контролю над таблицею БД «Діагнози».

Рис. 12 – Вікно контролю над таблицею БД «Квитанції».

Рис. 13 – Вікно контролю над таблицею БД «Клієнти».

Рис. 14 – Вікно контролю над таблицею БД «Лікарі».

Рис. 15 – Вікно контролю над таблицею БД «Препарати».


Додаток 3. Схеми проекту

Рис. 16 – Функціональна діяльність проектованої системи(IDEF0).

Рис. 17 – Діаграма потоків даних проектованої системи (DFD).

Рис. 18 – Діаграма варіантів використання проектованої системи.

Рис. 19 – Логічна модель бази даних проектованої системи в ERwin.

Рис. 20 – Робоча схема БД програмного додатку.


 

А также другие работы, которые могут Вас заинтересовать

47670. Учебно-методическое пособие. Математические методы исследования операций 1.56 MB
  В данном учебно-методическом пособии рассмотрены основные типы задач линейного программирования, даны рекомендации по построению их математических моделей и поиску оптимальных решений средствами табличного редактора Mathcad
47673. Методические указания. Финансовый менеджмент 90.5 KB
  Целью изучения дисциплины является подготовка студентов к применению полученных знаний для рационального управления финансами предприятия. Задачами дисциплины являются: ознакомление с состоянием отечественного и мирового опыта организации управления финансами;...
47676. Оформление учебных текстовых документов. Методические указания 366 KB
  Единая система конструкторской документации. Общие требования к текстовым документам введен Построение документа Пояснения к записи ПРИЛОЖЕНИЕ А Пример оформления содержания ПРИЛОЖЕНИЕ Б Пример оформления текстовой части документа ПРИЛОЖЕНИЕ В Пример оформления таблиц ПРИЛОЖЕНИЕ Г Пример оформления рисунка ПРИЛОЖЕНИЕ Д Пример оформления формул ПРИЛОЖЕНИЕ Е Примеры оформления использованных источников 1 ОБЩИЕ СВЕДЕНИЯ 1.