Автор работы: Пользователь скрыл имя, 09 Июня 2013 в 21:32, отчет по практике
При разработке приложения необходимо обеспечить реализацию требований, описанных в разделе «Общие требования». В дополнение к общим требованиям, реализовать следующие запросы на выбор данных:
1. Вывести сведения обо всех странах, в которых побывал турист «Х».
2. Определить, какие туристы посещали страну «Х».
3. Вывести сведения о наиболее дешевом и наиболее дорогом турах, в истории туриста «Х».
1. Задание………………………………………………………3
2. Определение структуры для считывания записей из файлов БД(фаил StructDef.h)………………………………………4
3. Описание структур для ОСНОВНОЙ работы с данными в памяти приложения……………………………………….5
4. Основное окно приложения……………………………...6
5. Список литературы……………………………………...32
Министерство образования и науки РФ
Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
«СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
ФИЛИАЛ
ФЕДЕРАЛЬНОГО ГОСУДАРСТВЕННОГО автономного ОБРАЗОВАТЕЛЬНОГО
УЧРЕЖДЕНИЯ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО
ОБРАЗОВАНИЯ «СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
В Г. ЖЕЛЕЗНОГОРСКЕ
Кафедра: АСОИУ
Отчет о выполнении работ по дисциплине:
Операционные системы
Преподаватель: Некрасов М. В.
Студентка: гр.239жз
Прус Т.В.
Железногорск 2013
Содержание
Задание
Разработать приложение для сопровождения базы данных Стран и Туристов. База данных должна состоять из следующих таблиц.
Страна |
Турист | |||
Столбец |
Тип данных |
Столбец |
Тип данных | |
Название |
строка(30) |
Паспорт |
строка(10) | |
Описание |
строка(50) |
ФИО |
строка(50) | |
Рейтинг |
целое |
Дата рождения |
вещественное | |
Начало сезона |
строка(10) |
Национальность |
строка(20) | |
Окончание сезона |
строка(10) |
Длина поле «Фото», байтах |
целое | |
Фото |
массив байт |
С_Т (Страна_Турист) | |
Столбец |
Тип данных |
Название |
строка(30) |
Паспорт |
строка(50) |
Дата путёвки |
вещественное |
Стоимость тура |
вещественное |
Скидка, % |
целое |
При разработке приложения необходимо обеспечить реализацию требований, описанных в разделе «Общие требования». В дополнение к общим требованиям, реализовать следующие запросы на выбор данных:
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() // Отключает выравнивание структур
// Конец описания структур для чтения из и записи в файлы
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
Описание класса основного окна находится в файле «main.h», в файле «main.cpp» находится определение функций класса TMainForm:
Функции члены класса TMainForm
__fastcall TMainForm::TMainForm(
: TForm(Owner)конструкторкласса
{
// Выделение памяти для объектов
Strans = new TList();
Turists = new TList();
Strturs = new TList();
FileSave1->Enabled==true;
this->LoadDatabase("");
}
__fastcallTMainForm::~
{
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(
{
// Объявление указателя на поток для работы с файлом
TFileStream *fs;
// Открытие файла для записи таблицы "Туристов"
fs = new TFileStream(ExtractFilePath(
// Объявление указателя на строку в соответствии с типом текущей таблицы
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(
// Получение размера
turist2.PhotoLen = ms->Size;
// Записьвфайлстрокитаблицы
fs->Write(&turist2, sizeof(stTurist));
// Запись в файл потока байт, содержащего фотоизображение
fs->Write(ms->Memory, ms->Size);
// Освобождение памяти, занимаемой указателем на поток байт
delete ms;
}
// Освобождение памяти, занимаемой указателем на поток для работы с файлом
delete fs;
// ******************************
// Открытие файла для записи таблицы "Страны"
fs = new TFileStream(ExtractFilePath(
// Объявление указателя на строку в соответствии с типом текущей таблицы
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.
strcpy(strana2.
// Записьвфайлстрокитаблицы
fs->Write(&strana2, sizeof(stStrana));
}
// Освобождение памяти, занимаемой указателем на поток для работы с файлом
delete fs;
// ******************************
// Открытие файла
для записи таблицы "Страна_
fs = new TFileStream(ExtractFilePath(
// Объявление указателя на строку в соответствии с типом текущей таблицы
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(
{
// Объявление указателя на поток для работы с файлом
TFileStream *fs;
// Чтение таблицы туристов
try
{
AnsiString ExeDirectory;