Розділ 3. Використання методів та функцій під час проектування бази даних інформаційної системи Каса продажу квитків
Метод сортування записів: Сортування (sortіng)? процес, що дозволяє впорядкувати безліч подібних даних у зростаючому або спадаючому порядку. У даному проекті використовується метод сортування записів за допомогою алгоритму бульбашки. Даний метод також називають обмінним сортуванням з вибором. Ідея цього методу відбита в його назві. Найлегші елементи масиву «вспливають» наверх, самі «важчі» ідуть… Читати ще >
Розділ 3. Використання методів та функцій під час проектування бази даних інформаційної системи Каса продажу квитків (реферат, курсова, диплом, контрольна)
Найважливішим нововведенням, що характеризує об'єктно-орієнтовану методологію програмування, є включення у визначення об'єкта операцій, що може виконувати цей об'єкт.
Під методами в об'єктно-орієнтованому програмуванні розуміють алгоритми, спрямовані на виконання об'єктом операцій (дій) як за запитом іншого об'єкта, так і для «задоволення своїх власних потреб» в опрацюванні інформації.
Таким чином, методи об'єктів слугують тим же цілям, що і процедури (функції) в структурному програмуванні. Однак, на відміну від структурного програмування, у якому для розв’язання під задачі основна програма (чи процедура) викликає відповідну процедуру, передаючи їй необхідні дані і приймаючи результати опрацювання у вигляді параметрів, об'єктно-орієнтований підхід припускає, що кожен об'єкт, реагуючи на повідомлення? запит від іншого об'єкта, вирішує поставлену задачу, виконуючи необхідну операцію власним методом.
Таким чином, для будь-якої дії (операції), що виконується над атрибутами об'єкта, повинний бути написаний окремий метод [1, C.42].
Проект курсової роботи використовує шість файлів: три файли бібліотек і три файли з кодом програми.
Програма містить такі поля:
- ? назва пункту — змінна Name типу char;
- ? дата і час відправлення — змінна DepartureDateTime типу char;
- ? дата і час прибуття — змінна ArrivalDateTime типу char;
- ? ціна — змінна Price типу double.
У програмі використовуються такі методи:
- ? Додавання записів.
- ? Редагування записів.
- ? Виведення записів на екран.
- ? Видалення записів.
- ? Пошуку інформації.
- ? Сортування по полям.
Метод додавання записів: Додавання записів у базу даних відбувається за допомогою методу get (), який присутній у файлі з кодом CashBox. cpp і викликається у файлі DataBase. cpp за допомогою методу add (). Спочатку користувач вводить ім'я станції, дату і час відправлення і прибуття, а пізніше вводить ціну квитка. Після введення всієї інформації користувач повертається назад у головне меню програми.
За допомогою cin. getline () відбувається заповнення масивів із вхідного потоку, тобто будь-яка кількість використаних пробілів ігнорується компілятором, на відміну від cin.
voidDataBase:add ().
{.
CB[i++]. get ();
}.
void CashBox: get ().
{.
Number = CashBox: getCount () + 1;
CashBox:setCount (Number);
cout<<" Input name: «;
getchar ();
cin.getline (Name, MAX);
cout<<" Input date of departure (yyyy.mm.dd hh: mm): «;
cin.getline (DepartureDateTime, MAX);
cout<<" Input date of arrival (yyyy.mm.dd hh: mm): «;
cin.getline (ArrivalDateTime, MAX);
cout<<" Input price: «;
cin>>Price;
}.
Метод редагування записів: У більшості випадків дані, котрі застарілі у базі даних, оновлюються, що викликає великий попит на використання методу редагування записів.
В даному методі використовується один параметр (номер), котрий вводиться з клавіатури в основній програмі.
Після виклику даного методу і введення порядкового номеру запису у таблиці, програма звертається до методу get (), який виконує додавання даних у базу даних.
void DataBase: edit (int number).
{.
CB[number — 1]. get ();//порядковийномерінкрементується.
CB[number — 1]. setNumber (number);//задається число введене з клавіатури.
CashBox:setCount (CashBox:getCount () — 1);
}.
Метод виведення записів на екран: У даному методі використовується умова: якщо каса продажу квитків дорівнює нулю, тоді вона вважається пустою і на екран виводиться стрічка з наступним змістом «Cashboxempty», інакше таблиця записів виводиться на екран.
void DataBase: show ().
{.
if (CashBox:getCount () == 0).
cout<<" Cashbox empty!" ;
else.
for (int j = 0; j < CashBox: getCount (); j++).
CB[j]. show ();
}.
Метод видалення записів: Видалення записів є необхідним у базі даних, тому що деякі дані бувають застарілими чи не потрібними у майбутній експлуатації. У методі видалення записів використовується один аргумент — номер (змінна number), який відповідає за порядковий номер запису у таблиці бази даних. При виклику запиту видалення записів на екран виводиться стрічка з текстом: «Whichnumberyouwanttodelete?», що означає: «Який порядковий номер Ви хотіли б видалити?» Після введення номера квитка, запис зі всіма його даними видаляється із бази даних, тим самим звільнюючи її пам’ять.
voidDataBase:del (intnumber).
{.
for (intj = number — 1; j.
{.
CB[j] = CB[j + 1];
CB[j]. setNumber (j + 1);
}.
CashBox:setCount (CashBox:getCount () — 1);
}.
Методи пошуку записів: У проекті використовується послідовний пошук інформації у базі даних. Ефективність даного алгоритму пошуку заключається в тому, що він оцінюється максимальним значенням MAXкількості порівнянь необхідних для знаходження запису у базі даних.
Послідовний пошук передбачає послідовний перегляд всіх елементів списку в порядку їх розташування, доки не знайдеться елемент рівний заданому у пошуку. Якщо невідомо, чи запис, який потрібно знайти, є у базі даних, необхідно слідкувати за тим, щоб пошук не вийшов за межу списку, що досягається використанням стоппера.
Пошук по імені, даті і часі: У методі пошуку по імені, даті і часі використовується два аргументи: перший аргумент c-це саме слово, яке потрібно віднайти у базі даних, а другий str[MAX] -це максимальна кількість символів.
У даному методі використовується булева змінна fl, за допомогою якої визначається значення trueчи false. Тобто, якщо вибрати пошук по імені (натиснути кнопку n/N на клавіатурі) і ввести певне ім'я станції, то змінна fl отримає значення true, після чого виведеться результат на екран (якщо він існує).
Якщо ж натиснути будь-яку іншу клавішу, окрім n/N, d/D, a/A,#, p/P, то змінна fl буде мати значення falseі на екрані появиться надпис, що результати пошуку у касі продажу квитків є невдалими.
void DataBase: find (char c, char str[MAX]).
{.
int cnt = CashBox: getCount ();
bool fl;
for (int i = 0; i < cnt; i++).
{.
switch ©.
{.
case’n':
case’N':
if ((strcmp (CB[i]. getName (), str) == 0)).
{.
CB[i]. show ();
fl = true;
}.
break;
case’d':
case’D':
if ((strcmp (CB[i]. getDeparture (), str) == 0)).
{.
CB[i]. show ();
fl = true;
}.
break;
case’a':
case’A':
if ((strcmp (CB[i]. getArrival (), str) == 0)).
{.
CB[i]. show ();
fl = true;
}.
break;
}.
}.
if (!fl).
{.
cout<<" Search result is empty!" ;
}.
}.
Пошук по порядковому номеру: Пошук по порядковому номеру працює у такому порядку: якщо користувач на клавіатурі в головному меню натискає клавішу f/F, тобто пошук інформації у базі даних, а пізнішевводить символ #, то програмою запропоновується ввести ціле число, яке менше або дорівнює кількості записів у таблиці. Після цього на екран виводиться запис, якщо він існує, якщо ж ні, то виводиться стрічка: «Searchresultisempty», тобто результат пошуку є порожнім.
void DataBase: find (int number).
{.
int cnt = CashBox: getCount ();
bool fl;
for (int i = 0; i < cnt; i++).
{.
if (CB[i]. getNumber () == number).
{.
CB[i]. show ();
fl = true;
}.
}.
if (!fl).
{.
cout<<" Search result is empty!" ;
}.
}.
Пошук по ціні: Пошук по ціні передбачає введення у поле як цілих, так і дійсних чисел. Користувачу запропоновується ввести ціну і натиснути клавішу Enter, після чого відбувається пошук по всій базі даних. При знайденні такої ціни записи виводяться на екран. Особливістю даного пошуку по ціні, на відміну від пошуку по порядковому номеру, є те, що кількість записів, які виводяться на екран, може бути більшою рівною одиниці.
void DataBase: find (double price).
{.
int cnt = CashBox: getCount ();
bool fl;
for (int i = 0; i < cnt; i++).
{.
if (CB[i]. getPrice () == price).
{.
CB[i]. show ();
fl = true;
}.
}.
if (!fl).
{.
cout<<" Search result is empty!" ;
}.
}.
Метод сортування записів: Сортування (sortіng)? процес, що дозволяє впорядкувати безліч подібних даних у зростаючому або спадаючому порядку. У даному проекті використовується метод сортування записів за допомогою алгоритму бульбашки. Даний метод також називають обмінним сортуванням з вибором. Ідея цього методу відбита в його назві. Найлегші елементи масиву «вспливають» наверх, самі «важчі» ідуть вниз. Бульбашкове сортування працює так як і сортування вибором, хоча воно і робить більше роботи на те, щоб перемістити елемент у його кінцеву позицію.
Ідея методу: крок сортування складається з проходження знизу вгору по масиву. Під час проходження шляху порівнюються пари сусідніх елементів. Якщо елементи деякої пари знаходяться в невірному порядку, то вони міняються місцями.
Після нульового проходу по масиві «вгорі» виявляється «найлегший» елемент? звідси аналогія з бульбашкою. Наступний прохід робиться до другого зверху елемента, таким чином другий за величиною елемент піднімається на правильну позицію. Потрібно зробити прохід по всій зменшуваній нижній частині масиву доти, поки в ній не залишиться тільки один елемент. На цьому сортування закінчується, тому що послідовність упорядкована по зростанню.
void DataBase: sort (char c).
{.
int cnt = CashBox: getCount ();
CashBox tmp;
for (int i = 0; i < cnt; i++).
{.
for (int j = i; j < cnt — 1; j++).
{.
bool fl;
switch ©.
{.
case'#':
fl = (CB[j]. getNumber () > CB[j+1]. getNumber ());
break;
case’n':
case’N':
fl = (strcmp (CB[j]. getName (), CB[j+1]. getName ()) > 0);
break;
case’d':
case’D':
fl = (strcmp (CB[j]. getDeparture (), CB[j+1]. getDeparture ()) > 0);
break;
case’a':
case’A':
fl = (strcmp (CB[j]. getArrival (), CB[j+1]. getArrival ()) > 0);
break;
case’p':
case’P':
fl = (CB[j]. getPrice () > CB[j+1]. getPrice ());
break;
}.
if (fl).
{.
tmp = CB[j];
CB[j] = CB[j+1];
CB[j+1] = tmp;
}.
}.
}.
}.