База данных

Автор работы: Пользователь скрыл имя, 09 Июня 2013 в 21:32, отчет по практике

Краткое описание

При разработке приложения необходимо обеспечить реализацию требований, описанных в разделе «Общие требования». В дополнение к общим требованиям, реализовать следующие запросы на выбор данных:
1. Вывести сведения обо всех странах, в которых побывал турист «Х».
2. Определить, какие туристы посещали страну «Х».
3. Вывести сведения о наиболее дешевом и наиболее дорогом турах, в истории туриста «Х».

Содержание

1. Задание………………………………………………………3
2. Определение структуры для считывания записей из файлов БД(фаил StructDef.h)………………………………………4
3. Описание структур для ОСНОВНОЙ работы с данными в памяти приложения……………………………………….5
4. Основное окно приложения……………………………...6
5. Список литературы……………………………………...32

Прикрепленные файлы: 1 файл

ПЗ1.docx

— 1.05 Мб (Скачать документ)

Министерство  образования и науки РФ

Федеральное государственное автономное образовательное  учреждение

высшего профессионального образования

«СИБИРСКИЙ  ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

ФИЛИАЛ  ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО автономного ОБРАЗОВАТЕЛЬНОГО УЧРЕЖДЕНИЯ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ «СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» 
В Г. ЖЕЛЕЗНОГОРСКЕ

 

Кафедра: АСОИУ

 

Отчет о выполнении работ по дисциплине:

Операционные  системы

 

 

 

 

Преподаватель: Некрасов М. В.

 

Студентка:  гр.239жз

Прус  Т.В.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Железногорск 2013

 

Содержание

 

 

    1. Задание………………………………………………………3
    2. Определение структуры для считывания записей из файлов БД(фаил StructDef.h)………………………………………4
    3. Описание структур для ОСНОВНОЙ работы с данными в памяти приложения……………………………………….5
    4. Основное окно приложения……………………………...6
    5. Список литературы……………………………………...32

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание

Разработать приложение для сопровождения базы данных Стран и Туристов. База данных должна состоять из следующих таблиц.

 

Страна

 

Турист

Столбец

Тип данных

 

Столбец

Тип данных

Название

строка(30)

 

Паспорт

строка(10)

Описание

строка(50)

 

ФИО

строка(50)

Рейтинг

целое

 

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

вещественное

Начало сезона

строка(10)

 

Национальность

строка(20)

Окончание сезона

строка(10)

 

Длина поле «Фото», байтах

целое

     

Фото

массив байт


 

С_Т (Страна_Турист)

Столбец

Тип данных

Название

строка(30)

Паспорт

строка(50)

Дата путёвки

вещественное

Стоимость тура

вещественное

Скидка, %

целое


 

При разработке приложения необходимо обеспечить реализацию требований, описанных в  разделе «Общие требования». В дополнение к общим требованиям, реализовать  следующие запросы на выбор данных:

  1. Вывести сведения обо всех странах, в которых побывал турист «Х».
  2. Определить, какие туристы посещали страну «Х».
  3. Вывести сведения о наиболее дешевом и наиболее дорогом турах, в истории туриста «Х».

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Определяем структуры для считывания записей из файлов БД(фаил StructDef.h)

 

struct stStrana

{

stStrana() { memset(this, 0x0, sizeof(stStrana)); }

char Nazvanie[30];       // Название страны

char Opisanie[50];       // Описание страны

unsigned int Raiting;    // Рейтинг  страны

char NachaloSezona[10];  // Начало  сезона

char OkonchanieSezona[10];// Окончаниесезона

};

 

struct stTurist

{

stTurist() { memset(this, 0x0, sizeof(stTurist)); }

char Passport[10];   // Паспорттуриста

char Fio[50];        // ФИО

double Birthday;     // Датарождения

char Nacionalnost[20];// Национальность

int PhotoLen;        // Длина поля фото

};

 

struct stStrtur

{

stStrtur() { memset(this, 0x0, sizeof(stStrtur)); }

char NazvanieStrana[30];   // Названиестраны

char PassportTurist[50];   // Паспорттуриста

double DataPutovki;       // Датапутёвки

double StoimostTura;      // Стоимостьтура

unsigned int Skidka;      // Скидка, %

};

 

#pragma pack()  // Отключает выравнивание структур

 

// Конец описания структур для   чтения из и записи в файлы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Описание структур для ОСНОВНОЙ работы с данными в памяти приложения

 

class TStrana

{

public:

TStrana() { Raiting = 0; }

String Nazvanie;        // Название страны

    String Opisanie;        // Описание страны

unsigned int Raiting;       // Рейтингстраны

    String NachaloSezona;   // Началосезона

    String OkonchanieSezona;// Окончаниесезона

};

 

class TTurist

{

public:

TTurist() { Photo = new Graphics::TBitmap(); }

    ~TTurist() { delete Photo; }

    String Passport;     // Паспорттуриста

    String Fio;          // ФИО

    TDateTime Birthday;      // Датарождения

    String Nacionalnost; // Национальность

    Graphics::TBitmap *Photo;// Фото - массивбайт

};

 

class TStrtur

{

public:

TStrtur() {Skidka = 0; }

    String NazvanieStrana;   // Названиестраны

    String PassportTurist;   // Паспорттуриста

    TDateTime DataPutovki;       // Датапутёвки

double StoimostTura;         // Стоимостьтура

unsigned int Skidka;         // Скидка, %

};

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Основное окно приложения

 

При старте приложение имеет  вид показанный на рисунке 1.

 

Рисунок 1

Описание класса основного  окна находится в файле «main.h», в файле «main.cpp» находится определение функций класса TMainForm:

 

 

Функции члены класса  TMainForm

 

 

__fastcall TMainForm::TMainForm(TComponent *Owner)

: TForm(Owner)конструкторкласса

{

        // Выделение  памяти для объектов

Strans = new TList();

        Turists = new TList();

        Strturs = new TList();

        FileSave1->Enabled==true;

 

this->LoadDatabase("");

}

 

__fastcallTMainForm::~TMainForm()деструктор класса освобождающий память занимаемую элементами таблиц

{

 

    TTurist *turist;

    // Выполнять цикл, пока количество элементов в  таблице > 0

while (Turists->Count > 0)

    {

// Получает  указатель на первый элемент  в таблице

turist = (TTurist *)Turists->First();

// Исключаетэлементизтаблицы

        Turists->Remove(turist);

// Освобождает память, занимаемую  элементом

delete turist;

    }

    // Освобождает  память, занимаемую таблицей

delete Turists;

 

    TStrana *strana;

    // Выполнять цикл, пока количество элементов в  таблице > 0

while (Strans->Count > 0)

    {

// Получает  указатель на первый элемент  в таблице

strana = (TStrana *)Strans->First();

// Исключает  элемент из таблицы

        Strans->Remove(strana);

        // Освобождает  память, занимаемую элементом

delete strana;

    }

    // Освобождает  память, занимаемую таблицей

delete Strans;

 

    TStrtur *strtur;

    // Выполнять цикл, пока количество элементов в  таблице > 0

while (Strturs->Count > 0)

    {

// Получает  указатель на первый элемент  в таблице

strtur = (TStrtur *)Strturs->First();

// Исключает  элемент из таблицы

        Strturs->Remove(strtur);

        // Освобождает  память, занимаемую элементом

delete strtur;

    }

    // Освобождает  память, занимаемую таблицей

delete Strturs;

 

}

 

Функции организующие запуск соответствующих конструкторов  окон таблиц позволяющих добавлять  элементы в таблицы «Страна», «Турист» «С_Т (Страна_Турист).

 

 

void __fastcall TMainForm::N6Click(TObject *Sender)

{

    // Создание и  выделение памяти для графического  окна

TfmTurist *fmTurist = new TfmTurist(this);

// Отображение графического  окна

fmTurist->ShowModal();

// Удаление окна

delete fmTurist;

}

 

Рисунок 2

 

void __fastcall TMainForm::N7Click(TObject *Sender)

{

    // Создание и  выделение памяти для графического  окна

TfmStrana *fmStrana = new TfmStrana(this);

// Отображение графического  окна

fmStrana->ShowModal();

// Удаление окна

delete fmStrana;

}

 

Рисунок 3

 

 

 

void __fastcall TMainForm::N8Click(TObject *Sender)

{

    // Создание и  выделение памяти для графического  окна

TfmStranaTurist *fmStranaTurist = new TfmStranaTurist(this);

// Отображение графического  окна

fmStranaTurist->ShowModal();

// Удаление окна

delete fmStranaTurist;

}

 

Рисунок 4

 

Функции организующие запуск соответствующих конструкторов  окон таблиц показывающих таблицы «Страна», «Турист» «С_Т (Страна_Турист)».

 

void __fastcall TMainForm::N3Click(TObject *Sender)

{

    // Создание и  выделение памяти для графического  окна

TfmViewTurist *fmViewTurist = new TfmViewTurist(Application);

}

//---------------------------------------------------------------------------

 

void __fastcall TMainForm::N4Click(TObject *Sender)

{

// Создание и выделение  памяти для графического окна

TfmViewStrana *fmViewStrana = new TfmViewStrana(Application);

 

}

//---------------------------------------------------------------------------

 

void __fastcall TMainForm::N9Click(TObject *Sender)

{

    // Создание и  выделение памяти для графического  окна

TfmViewS_T *fmViewS_T = new TfmViewS_T(Application);

}

 

void __fastcall TMainForm::N10Click(TObject *Sender)

{

    // Создание и  выделение памяти для графического  окна

TRequestForm *fmRequest = new TRequestForm(Application);

// Отображение графического  окна

fmRequest->Show();

}

 

Вид окон представлен ниже.

 

Также функции сохранение и загрузки БД в файлы.

 

void TMainForm::SaveDatabase(AnsiString FileName)

{

    // Объявление указателя  на поток для работы с файлом

    TFileStream *fs;

 

    // Открытие файла  для записи таблицы "Туристов"

fs = new TFileStream(ExtractFilePath(Application->ExeName)  + "\\Turist.tbl", fmCreate | fmOpenWrite);

// Объявление указателя  на строку в соответствии с  типом текущей таблицы

    TTurist *turist;

    // Сканирование  полного списка текущей таблицы

for (int i = 0; i<Turists->Count; i++)

{

        // Объявление  структуры для записи в файл

stTurist turist2;

        // Получение  i-ой строки таблицы текущей  таблицы

turist = (TTurist *)Turists->Items[i];

 

// Заполнение значений  полей структуры значениями из i-ой строки текущей таблицы

strcpy(turist2.Passport, turist->Passport.c_str());

strcpy(turist2.Fio, turist->Fio.c_str());

strcpy(turist2.Nacionalnost, turist->Nacionalnost.c_str());

        turist2.Birthday = (double)turist->Birthday;

 

// Объявление указателя  на поток байт в памяти для  записи на диск массива байт  фотоизображения

TMemoryStream *ms = new TMemoryStream();

turist->Photo->SaveToStream(ms);

// Получение размера фотоизображения  в байтах

        turist2.PhotoLen = ms->Size;

 

// Записьвфайлстрокитаблицы

fs->Write(&turist2, sizeof(stTurist));

// Запись в файл потока  байт, содержащего фотоизображение

fs->Write(ms->Memory, ms->Size);

// Освобождение памяти, занимаемой  указателем на поток байт

delete ms;

    }

    // Освобождение  памяти, занимаемой указателем на  поток для работы с файлом

delete fs;

    // *******************************************************************************

    // Открытие файла  для записи таблицы "Страны"

fs = new TFileStream(ExtractFilePath(Application->ExeName)  + "\\Strani.tbl", fmCreate | fmOpenWrite);

// Объявление указателя  на строку в соответствии с  типом текущей таблицы

    TStrana *strana;

    // Сканирование  полного списка текущей таблицы

for (int i = 0; i<Strans->Count; i++)

{

        // Объявление  структуры для записи в файл

stStrana strana2;

        // Получение  i-ой строки таблицы текущей  таблицы

strana = (TStrana *)Strans->Items[i];

 

// Заполнение значений  полей структуры значениями из i-ой строки текущей таблицы

strcpy(strana2.Nazvanie, strana->Nazvanie.c_str());

strcpy(strana2.Opisanie, strana->Opisanie.c_str());

        strana2.Raiting = strana->Raiting;

strcpy(strana2.NachaloSezona, strana->NachaloSezona.SubString(1,10).c_str());

strcpy(strana2.OkonchanieSezona, strana->OkonchanieSezona.SubString(1,10).c_str());

 

        // Записьвфайлстрокитаблицы

fs->Write(&strana2, sizeof(stStrana));

}

    // Освобождение  памяти, занимаемой указателем на  поток для работы с файлом

delete fs;

    // *******************************************************************************

    // Открытие файла  для записи таблицы "Страна_Турист"

fs = new TFileStream(ExtractFilePath(Application->ExeName)  + "\\strana_turist.tbl", fmCreate | fmOpenWrite);

// Объявление указателя  на строку в соответствии с  типом текущей таблицы

    TStrtur *strtur;

    // Сканирование  полного списка текущей таблицы

for (int i = 0; i<Strturs->Count; i++)

{

        // Объявление  структуры для записи в файл

stStrtur strtur2;

        // Получение  i-ой строки таблицы текущей  таблицы

strtur = (TStrtur *)Strturs->Items[i];

 

// Заполнение значений  полей структуры значениями из i-ой строки текущей таблицы

strcpy(strtur2.NazvanieStrana, strtur->NazvanieStrana.c_str());

strcpy(strtur2.PassportTurist, strtur->PassportTurist.c_str());

        strtur2.DataPutovki =  (double)strtur->DataPutovki;

        strtur2.StoimostTura = strtur->StoimostTura;

        strtur2.Skidka = strtur->Skidka;

 

// Запись в файл строки  таблицы

fs->Write(&strtur2, sizeof(stStrtur));

    }

    // Освобождение  памяти, занимаемой указателем на  поток для работы с файлом

delete fs;

}

 

void TMainForm::LoadDatabase(AnsiString FileName)

{

    // Объявление указателя  на поток для работы с файлом

    TFileStream *fs;

 

    // Чтение таблицы  туристов

try

    {

        AnsiString ExeDirectory;

Информация о работе База данных