Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
дипломZadyrI / дипломZadyrI.doc
Скачиваний:
33
Добавлен:
10.02.2016
Размер:
1.19 Mб
Скачать

3 Розробка іноформаційного забезпечення автоматизованої системи обліку пластикових карт

3.1 Вибір засобів для розробки та управління базою даних

В якості системи керування базою даних обрано MySQL. Дана СКБД являється прекрасним рішенням для написання малих та середніх застосувань. MySQL початково створювалась як альтернатива комерційним системам, і зараз розповсюджується за вільною ліцензією DNU General Public License. Гнучкість MySQL забезпечується підтримкою великої кількості типів таблиць: користувачі можуть вибрати як таблиці типа MYISAM, що підтримують повнотекстовий пошук, так і таблиці INNODB, що підтримують транзакції на рівні окремих записів. Більш того, СУБД MYSQL поставляється із спеціальним типом таблиць EXAMPLE, що демонструє принципи створення нових типів таблиць. Завдяки відкритій архітектурі і gpl-ліцензуванню, в СУБД MYSQL постійно з'являються нові типи таблиць. Важливою перевагою є те, що вхідні коди сервера компілюються практично на усіх платформах (при чому найповніше усі можливості даної СКБД виявляються на Unix системах, де є підтримка багатонитковості). MySQL має API (application programming interface) для мов програмування Delphi, C, C++, Ейфель, Java, Лісп, Perl, PHP, Python, Ruby, Smalltalk і Tcl, бібліотеки для мов платформи .NET, а також забезпечує підтримку для ODBC за допомогою ODBC-драйвера MyODBC. Вона чудово підходить для створення динамічних веб-сторінок, характеризується високою швидкістю обробки даних, стійкістю та простотою у використанні.

Порівняння та вибір мови програмування написання графічного інтерфейсу

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

Мова С++ з появою перших трансляторів знайшла відразу ж дуже широке розповсюдження, на ній було створено величезну кількість програм і застосувань. У міру накопичення досвіду створення великих програмних систем сплили недоліки, які привели до пошуку альтернативних рішень. Таким альтернативним рішенням стала мова Java, яка в деяких областях стала конкурувати у популярності з C++, а фірма Майкрософт запропонувала мову C# як нову мову, що розвиває принципи C++ і що використовує переваги мови Java. Надалі з'явилася мова Nemerle, об'єднуюча переваги C# з можливістю функціонального програмування. Останнім часом з'явилася спроба об'єднання ефективності C++, безпеки і швидкості розробки, як в Java і C# — була запропонована мова D, яка поки не отримала широкого визнання.

Мова Java володіє наступними особливостями, яких немає в мові C++ :

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

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

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

  • У мові Java реалізована повноцінна збірка сміття, якої немає в C++. Немає в С++ і засобах перевірки правильності вказівників. З іншого боку, C++ володіє набором засобів (конструктори і деструктори, стандартні шаблони, посилання), що дозволяють майже повністю виключити виділення і звільнення пам'яті вручну і небезпечні операції з вказівниками. Проте таке виключення вимагає певної культури програмування, тоді як в мові Java воно реалізується автоматично.

  • Мова Java є чисто об'єктно-орієнтованою, тоді як C++ підтримує як об'єктно-орієнтоване, так і процедурне програмування.

  • В C++ відсутня повноцінна інформації про типи під час виконання RTTI. Цю можливість можна було б реалізувати в C++, маючи повну

інформацію про типи під час компіляції CTTI.

  • У C++ можливість введення призначеного для користувача синтаксису за допомогою #define може привести до того, що модулі в крупних пакетах програм стають сильно пов'язані один з одним, що різко знижує надійність пакетів і можливість організації розділених модулів. З іншого боку, С++ надає достатньо засобів (константи, шаблони, вбудовані функції) для того, щоб практично повністю виключити використання #define.

Ці відмінності приводять до запеклих суперечок між прихильниками двох мов про те, яка мова краща. Прихильники Java вважають ці особливості перевагами; прихильники C++ вважають, що у багатьох випадках ці особливості є недоліками, зокрема

  • Ціною переносимості є вимога наявності на комп'ютері віртуальної Java-машини, що приводить до уповільнення обчислень і практичної неможливості використання нових можливостей апаратної архітектури.

  • Збірка сміття приводить до втрати ефективності.

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

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

  • Підтримка процедурного програмування є корисною.

Далеко не всі програмісти є прихильниками однієї з мов. На думку більшості програмістів, Java і C++ не є конкурентами, тому що мають різні області застосовності. Інші вважають, що вибір мови для багатьох завдань є питанням особистого смаку.

Одними з найважливіших вимог до нашого проекту є

  • Швидка розробка графічного інтерфейсу;

  • Кросс-платформеність розроблюваних модулів.

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

3.2 Розробка інформаційної моделі даних

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

Базовими предметами у системі є:

  • фізична картка

  • клієнт, що купує та користується карткою

  • аккаунт, тобто договір клієнта про користування карткою

  • підприємства, що надають знижки

  • операції, які здійснює власник картки на підприємствах

  • користувач системи

Також після проведення нормалізації

Основними властивостми карв нашій системі є ознака

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

Таблиця 3.1- Структура таблиці «Картки»

п/п

Найменування поля

Ідентифікатор поля

Тип поля

Довжина поля

Ознака ключа

1

Id cards

Номер

int

PK

2

Status

Статус

int

FK

3

Account

Тип аккаунта

int

FK

4

State

Стан

int

FK

Таблиця 3.2- Структура таблиці «Аккаунти»

п/п

Найменування поля

Ідентифікатор поля

Тип поля

Довжина поля

Ознака ключа

1

Account

Номер договору

int

ПК

2

Clientsidients

Дата реєстраці]

int

3

Adcard

Дата дійсності

int

4

Date red

Номер картки

date

5

Date valid

Номер клієнта

date

Таблиця 3.3- Структура таблиці «Клієнти»

п/п

Найменування поля

Ідентифікатор поля

Тип поля

Довжина поля

Ознака ключа

1

Id clients

Номер клієнта

int

ПК

2

Name

ФІБ

varchar

100

3

Sex

Стать

varchar

10

4

Date birth

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

date

5

Address

Адреса

varchar

150

6

Phone

Номер телефона

varchar

45

7

E mail

Електрона адреса

varchar

45

8

Passport

Серія, номер паспорта

varchar

45

Таблиця 3.3- Структура таблиці«Статуси карток»

п/п

Найменування поля

Ідентифікатор поля

Тип поля

Довжина поля

Ознака ключа

1

Idstatus

Номер

int

ПК

2

Stat

Статус

varchar

45

Таблиця 3.4- Структура таблиці«Режим карток»

п/п

Найменування поля

Ідентифікатор поля

Тип поля

Довжина поля

Ознака ключа

1

Idstate

Номер

int

ПК

2

Stat

Тип аккаунта

varchar

45

Таблиця 3.5- Структура таблиці«Cтани карток»

п/п

Найменування поля

Ідентифікатор поля

Тип поля

Довжина поля

Ознака ключа

1

Idmode

Номер

int

ПК

2

Mode

Стан

varchar

45

Таблиця 3.6- Структура таблиці «Операції»

п/п

Найменування поля

Ідентифікатор поля

Тип поля

Довжина поля

Ознака ключа

1

Index

Номер картки

int

ПК

2

Date op

Дата

date

3

Category

Тип послуги

varchar

45

4

Amont

Сума

rioat

5

Company

Ідентифікатор підприємства

int

Таблиця 3.7- Структура таблиці «Підприємства»

п/п

Найменування поля

Ідентифікатор поля

Тип поля

Довжина поля

Ознака ключа

1

Id company

Ідентифікатор

int

ПК

2

Cateqory

Рубрика

varchar

100

3

Brand

Фізична назва

varchar

80

4

Legal name

Юридична назва

varchar

50

5

Address

Адреса

varchar

150

6

Phone

Номер телефона

varchar

45

7

Discounts

Вид зніжок

varchar

45

Таблиця 3.8- Структура таблиці «Користувачі»

п/п

Найменування поля

Ідентифікатор поля

Тип поля

Довжина поля

Ознака ключа

1

Id users

Табельний номер

int

ПК

2

Name

ФІБ

varchar

200

3

Position

Посада

varchar

45

4

Grants

Рівень доступа

int

5

Contacts

Ідентифікатор підприємства

varchar

200

Таблиця 3.9- Структура таблиці«Доступи користувачів»

п/п

Найменування поля

Ідентифікатор поля

Тип поля

Довжина поля

Ознака ключа

1

Idlevels

Номер

int

ПК

2

Level

Рівень

varchar

45

Рисунок 3.7-Схема взаємодій таблиць бази даних.