Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб3.docx
Скачиваний:
12
Добавлен:
14.12.2018
Размер:
22.82 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

ОДЕССКИЙ НАЦИОНАЛЬНЫЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Институт компьютерных систем

Кафедра информационных систем

Лабораторная работа №3

По предмету: «Теория алгоритмов»

Тема: «Связный список. Хэш таблицы». «Бинарные деревья»

Выполнил:

Студент группы АИ-171

Анищенко Н.А

Проверил:

Шибаева Н.О.

Одесса 2018

Цель работы: Приобретение практических навыков программирования с использованием: списков, хеш-таблицы, бинарные деревья.

Задание

Вариант 1

Разработать базу данных состоящую из 3 таблиц для биржи труда. Обеспечить связь таблиц методом хеш-таблица. Организовать возможность добавление/удаление/редактирование данных. Разработать поиск и учетом возможности добавления поисковых фильтров. В готовом программном решении должен присутствовать графический интерфейс с навигационными элементами.

Код

Main.Cpp

#include<iostream>

#include<vector>

#include<utility>

#include "HashTable.h"

#include "Field.h"

#include "DBTable.h"

#include "reference.h"

#include "newfield.h"

using namespace std;

OwnerField* fillOwnerField()

{

int key;

cout << "Enter key: ";

cin >> key;

string name;

cout << "\nEnter name: ";

cin >> name;

string adress;

cout << "\nEnter adress: ";

cin >> adress;

return new OwnerField(key, name,adress);

}

VehicleField* fillVehicleField()

{

int key;

cout << "Enter key: ";

cin >> key;

int number;

cout << "\nEnter number: ";

cin >> number;

string color;

cout << "\nEnter color: ";

cin >> color;

return new VehicleField(key, number, color);

}

PlaceField* fillPlaceField(DBTable* o, DBTable* v)

{

int key;

cout << "Enter key: ";

cin >> key;

int number;

cout << "\nEnter number: ";

cin >> number;

int o_key;

cout << "\nEnter key from Owner table: ";

cin >> o_key;

int v_key;

cout << "\nEnter key from Vehicle table: ";

cin >> v_key;

return new PlaceField(key, number, make_ref(o_key, o), make_ref(v_key, v));

}

int main() {

DBTable* owner = new DBTable([](int key){

return key/1000+key%1000;

});

owner->add(new OwnerField(342322,"Andros","MG"));

owner->add(new OwnerField(564522,"Nikitos","rge"));

owner->add(new OwnerField(776766,"Vlados","MG43"));

owner->add(new OwnerField(847484,"Sanchos","MG46"));

//cout << owner->toString();

DBTable* vehicle = new DBTable([](int key){

return key/100+key%100;

});

vehicle->add(new VehicleField(9999,9999,"green"));

vehicle->add(new VehicleField(5555,5555,"red"));

vehicle->add(new VehicleField(4444,4444,"yellow"));

vehicle->add(new VehicleField(1111,1111,"black"));

//cout << vehicle->toString();

DBTable* place = new DBTable([](int key){

return key/10+key%10;

});

place->add(new PlaceField(234,9,make_ref(344322,owner),make_ref(9999,vehicle)));

place->add(new PlaceField(645,5,make_ref(564522,owner),make_ref(5555,vehicle)));

place->add(new PlaceField(492,4,make_ref(776766,owner),make_ref(4444,vehicle)));

place->add(new PlaceField(744,1,make_ref(847484,owner),make_ref(1111,vehicle)));

/*cout<< "Place: \n";

cout << place->toString();*/

cout << "Hello User\n" << "Coose command from list below:\n";

int table_id = -1;

while(table_id)

{

cout << "1 - Open Owners table\n"

<< "2 - Open Vehicles table\n"

<< "3 - Open Places table\n"

<< "0 - EXIT\n\n";

cin >> table_id;

DBTable* temp = NULL;

switch (table_id) {

case 1: {

temp = owner;

break;}

case 2: {

temp = vehicle;

break;}

case 3: {

temp = place;

break;}

}

cout << temp->toString();

int command = -1;

cout << "\n\n";

while(command)

{

cout << "1 - Add row\n"

<< "2 - Rewrite row\n"

<< "3 - Delete row\n"

<< "0 - BACK\n\n";

cin >> command;

Field* f = NULL;

switch (command) {

case 1: {

switch(table_id){

case 1: {

temp->add(fillOwnerField());

break;}

case 2: {

temp->add(fillVehicleField());

break;}

case 3: {

temp->add(fillPlaceField(owner, vehicle));

break; }

}

break;

}

case 2: {

cout << "Enter rewrited row: \n";

switch(table_id){

case 1: {

temp->rewrite(fillOwnerField());

break;}

case 2: {

temp->rewrite(fillVehicleField());

break;}

case 3: {

temp->rewrite(fillPlaceField(owner, vehicle));

break; }

}

break;

}

case 3: {

cout << "Enter row key: ";

int k;

cin >> k;

temp->pop(k);

break;

}

}

cout << temp->toString();

cout << "\n\n";

}

}

return 0;

}

Соседние файлы в предмете Теория алгоритмов и автоматов