Данная информационная система представляет собой организационно-информационную оболочку, обеспечивающую добавление, хранение, поиск и доступ к данным о зарегистрированных водителях и машин, а также продажи и возврата машин в бюро.
Данный проект создавался в рамках курсового проекта по дисциплине «Структуры и алгоритмы обработки данных» с учетом требований, предъявляемых в методических указаниях по курсовому проекту. Система может использоваться для работы в небольших компаниях, для облегчения работы с большим количеством данных о клиентах и имеющемся в распоряжении компании автопарке. При желании заказчика возможна модернизация базы данных путем добавления новых функциональных возможностей.
Алгоритмы и структуры данных
Структуры.
В настоящей БД используются три вида структур, каждая для своего типа данных.
Хеш-таблица Данная структура организации данных используется для хранения данных о зарегистрированных водителях. Она представляет собой массив указателей на структуры данных, организованную в виде стека, каждая структура содержит в себе информацию об одном или нескольких пассажирах, или не содержать информации вовсе.
Структура данных psng содержит следующие поля:
//Структура, включающая все данные о пассажире.
struct psng.
{.
string npass; //Номер паспорта.
string pndate; //Место и дата выдачи паспорта.
string pname; //ФИО пассажира.
string bdate; //Дата рождения пассажира.
//Конструктор структуры pass.
psng (string np, string pd, string pn, string bd).
{.
npass = np;
pndate = pd;
pname = pn;
bdate = bd;
}.
};
Заполнение хеш-таблицы осуществляет по принципу открытого хеширования, через номер паспорта пассажира. Хеш-функция представляет собой следующую формулу:
Sum = Sum + o[i]^(i+2);
где o[i] код отдельного символа из государственного регистрационного номера авто из таблицы ASCII, а n — текущая сумма кодов символов. Код символа возводится в степень и суммируется с текущей суммой n, результатом выполнения функции является остаток от деления окончательной суммы n на 3000 (размер хеш-таблицы).
Реализация хеш-функции в проекте:
//Хеш-функция (np — номер паспорта).
int hf (string np).
{.
long n = 0;
string s;
s = np;
string o[10];
s.erase (4, 1);
for (int i = 0; i < 10; i++).
{.
o[i] = s[i];
n = n + int (pow (atoi (o[i]. c_str ()), (i + 2)));
}.
return (abs (n) % hsize);
}.