- •Пояснювальна записка
- •1.1 Загальні відомості
- •1.2 Призначення та завдання для створення системи
- •1.3 Характеристика об'єктів автоматизації
- •1.4 Вимоги до системи
- •1.5 Склад і зміст робіт по створенню системи
- •1.6 Порядок контролю і приймання системи
- •1.7 Вимоги до складу та змісту робіт з підготовки об'єкта автоматизації до введення системи в дію
- •1.8 Вимоги до документування
- •1.9 Аналіз існуючих розробок та обґрунтування вибору технології проектування
- •2 Розробка автоматизованої системи обліку пластикових карт
- •2.1 Смарткартки
- •2.1.1 Картки SmartPay
- •2.2 Кардрідери
- •3 Розробка іноформаційного забезпечення автоматизованої системи обліку пластикових карт
- •3.1 Вибір засобів для розробки та управління базою даних
- •3.3. Розробка програми-терміналу
- •3.3.1 Архітектура та технології
- •3.3.2 Розробка основних класів
- •4 Використання системи
- •4.1 Оформлення договорів
- •4.2 Картки
- •4.3 Компанії
- •4.4 Інші розділи
- •Висновки
- •Перелік посилань
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-Схема взаємодій таблиць бази даних.