Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Батищев Курсовая на С++.doc
Скачиваний:
31
Добавлен:
21.09.2019
Размер:
231.94 Кб
Скачать

3. Блок-схемы основных алгоритмов

В данном разделе представлена блок-схема основного алгоритма программы.

Рисунок 1. – Блок-схема алгоритма программы.

4. Код основного модуля программы

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

#include <fstream.h>

#include <vcl.h>

#include <math.h>

#pragma hdrstop

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

struct GIBDD{ //Создаем структуру GIBDD

char Marka[20]; //Марка транспорта

char Color[20]; //Цвет транспорта

char ZavNomer[20]; //Заводской номер транспорта

char BortNomer[20]; //Бортовой номер транспорта

char DataVip[20]; //Дата выпуска транспорта

char OsobKonst[100]; //Особенности конструкции транспорта

char OsobOkras[100]; //Особенности окраски транспорта

char DayOfTeh[5]; //День последнего прохождения техосмотра

char MonthOfTeh[5]; //Месяц последнего прохождения техосмотра

char YearOfTeh[5]; //Год последнего прохождения техосмотра

char Pasp[20]; //Паспортные данные владельца

};

char *FileName = "DataBase.txt"; //Имя открываемого файла

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

b ool Verifycation(GIBDD temp)

{

bool buf = false;

GIBDD current;

FILE *f;

f = fopen(FileName,"r");

while (!feof(f))

{

fread(&current,sizeof(current),1,f);

if (strcmp(temp.ZavNomer,current.ZavNomer) == 0 || strcmp(temp.BortNomer,current.BortNomer) ==0 || strcmp(temp.Pasp,current.Pasp) ==0) buf = true;

}

fclose(f);

return buf;

}

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

void RefreshBase(char *filename,TStringGrid *grid)

{

GIBDD Temp;

FILE *f;

f = fopen(filename,"r");

int k=1; //Число записей в файле

while (!feof(f))

{

fread(&Temp,sizeof(Temp),1,f);

grid->Cells[0][k] = Temp.Marka;

grid->Cells[1][k] = Temp.Color;

grid->Cells[2][k] = Temp.ZavNomer;

grid->Cells[3][k] = Temp.BortNomer;

grid->Cells[4][k] = Temp.DataVip;

grid->Cells[5][k] = Temp.OsobKonst;

grid->Cells[6][k] = Temp.OsobOkras;

grid->Cells[7][k] = Temp.DayOfTeh;

grid->Cells[7][k] = grid->Cells[7][k]+".";

grid->Cells[7][k] = grid->Cells[7][k]+Temp.MonthOfTeh;

grid->Cells[7][k] = grid->Cells[7][k]+".";

grid->Cells[7][k] = grid->Cells[7][k]+Temp.YearOfTeh;

grid->Cells[8][k] = Temp.Pasp;

grid->RowCount = k; //Число строк таблицы равно К

k++;

}

fclose(f);

}

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

v oid __fastcall TForm1::Button1Click(TObject *Sender)

{

Application->Terminate();

}

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

void __fastcall TForm1::FormCreate(TObject *Sender)

{

StringGrid1->Cells[0][0] = " Марка";

StringGrid1->Cells[1][0] = " Цвет";

StringGrid1->Cells[2][0] = "Заводской номер";

StringGrid1->Cells[3][0] = "Бортовой номер";

StringGrid1->Cells[4][0] = "Дата выпуска";

StringGrid1->Cells[5][0] = "Особ-сти конструкции";

StringGrid1->Cells[6][0] = "Особ-сти окраски";

StringGrid1->Cells[7][0] = "Последний техосмотр";

StringGrid1->Cells[8][0] = "Паспорт(Данные)";

RefreshBase(FileName,StringGrid1);

}

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

void __fastcall TForm1::Button2Click(TObject *Sender)

{

GIBDD Temp;

strcpy(Temp.Marka,ComboBox1->Text.c_str());

strcpy(Temp.Color,ComboBox2->Text.c_str());

strcpy(Temp.ZavNomer,Edit1->Text.c_str());

strcpy(Temp.BortNomer,Edit2->Text.c_str());

strcpy(Temp.DataVip,Edit9->Text.c_str());

strcpy(Temp.OsobKonst,ComboBox3->Text.c_str()); //Присваиваем реквизиты структуры

strcpy(Temp.OsobOkras,ComboBox4->Text.c_str());

strcpy(Temp.DayOfTeh,Edit10->Text.c_str());

strcpy(Temp.MonthOfTeh,Edit11->Text.c_str());

strcpy(Temp.YearOfTeh,Edit12->Text.c_str());

strcpy(Temp.Pasp,Edit5->Text.c_str());

if (Verifycation(Temp))

{

Application->MessageBoxA("Такая запись существует!","GIBDD");

}

else

{

FILE *f;

f = fopen(FileName,"a"); //открывем файл для дозаписи

fwrite(&Temp,sizeof(Temp),1,f); //записываем в конец файла структуру

fclose(f); //выход из файла

RefreshBase(FileName,StringGrid1); //обновление таблицы

}

}

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

void __fastcall TForm1::Button3Click(TObject *Sender)

{

FILE *f;

f = fopen(FileName,"w");

fclose(f);

RefreshBase(FileName,StringGrid1);

}

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

void __fastcall TForm1::Button5Click(TObject *Sender) //Процедура кнопки "Найти"

{

GIBDD Temp;

FILE *f;

f = fopen(FileName,"r");

int k=1;

bool boof;

StringGrid1->RowCount =1;

while (!feof(f))

{

boof = true;

fread(&Temp,sizeof(Temp),1,f);

if (CheckBox1->Checked && strcmp(Temp.Marka,ComboBox5->Text.c_str())!=0) boof=false;

if (CheckBox2->Checked && strcmp(Temp.Color,ComboBox6->Text.c_str())!=0) boof=false;

if (CheckBox3->Checked && strcmp(Temp.ZavNomer,Edit3->Text.c_str())!=0) boof=false;

if (CheckBox4->Checked && strcmp(Temp.BortNomer,Edit4->Text.c_str())!=0) boof=false;

if (CheckBox5->Checked && strcmp(Temp.DataVip,Edit6->Text.c_str())!=0) boof=false;

if (CheckBox6->Checked && strcmp(Temp.OsobKonst,ComboBox7->Text.c_str())!=0) boof=false;

if (CheckBox7->Checked && strcmp(Temp.OsobOkras,ComboBox8->Text.c_str())!=0) boof=false;

if (CheckBox8->Checked && strcmp(Temp.DayOfTeh,Edit8->Text.c_str())!=0 && strcmp(Temp.MonthOfTeh,Edit13->Text.c_str())!=0 && strcmp(Temp.YearOfTeh,Edit14->Text.c_str())!=0) boof=false;

if (CheckBox9->Checked && strcmp(Temp.Pasp,Edit7->Text.c_str())!=0) boof=false;

if (boof && !feof(f))

{

StringGrid1->Cells[0][k] = Temp.Marka;

StringGrid1->Cells[1][k] = Temp.Color;

StringGrid1->Cells[2][k] = Temp.ZavNomer;

StringGrid1->Cells[3][k] = Temp.BortNomer;

StringGrid1->Cells[4][k] = Temp.DataVip;

StringGrid1->Cells[5][k] = Temp.OsobKonst;

StringGrid1->Cells[6][k] = Temp.OsobOkras;

StringGrid1->Cells[7][k] = Temp.DayOfTeh;

StringGrid1->Cells[7][k] = StringGrid1->Cells[7][k]+".";

StringGrid1->Cells[7][k] = StringGrid1->Cells[7][k]+Temp.MonthOfTeh;

StringGrid1->Cells[7][k] = StringGrid1->Cells[7][k]+".";

StringGrid1->Cells[7][k] = StringGrid1->Cells[7][k]+Temp.YearOfTeh;

StringGrid1->Cells[8][k] = Temp.Pasp;

k++;

StringGrid1->RowCount = k;

}

}

fclose(f);

}

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

void __fastcall TForm1::Button6Click(TObject *Sender) //Процедура кнопки "Исходный список"

{

RefreshBase(FileName,StringGrid1);

}

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

void __fastcall TForm1::Button4Click(TObject *Sender)

{

RefreshBase(FileName,StringGrid1);

}

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

void __fastcall TForm1::Button7Click(TObject *Sender) //Процедура кнопки "Список тех, кому явиться на техосмотр"

{

GIBDD Temp;

FILE *f;

f = fopen(FileName,"r");

int k=1;

bool boof;

StringGrid1->RowCount =1;

TDateTime datetime1;

datetime1 = datetime1.CurrentDate();

Word Year1, Day1, Month1;

DecodeDate(datetime1,Year1,Month1,Day1);

while (!feof(f))

{

boof = false;

fread(&Temp,sizeof(Temp),1,f);

if (Year1 >= StrToInt(Temp.YearOfTeh) &&

Month1 >= StrToInt(Temp.MonthOfTeh) &&

Day1 > StrToInt(Temp.DayOfTeh)) boof=true;

if (boof && !feof(f))

{

StringGrid1->Cells[0][k] = Temp.Marka;

StringGrid1->Cells[1][k] = Temp.Color;

StringGrid1->Cells[2][k] = Temp.ZavNomer;

StringGrid1->Cells[3][k] = Temp.BortNomer;

StringGrid1->Cells[4][k] = Temp.DataVip;

StringGrid1->Cells[5][k] = Temp.OsobKonst;

StringGrid1->Cells[6][k] = Temp.OsobOkras;

StringGrid1->Cells[7][k] = Temp.DayOfTeh;

StringGrid1->Cells[7][k] = StringGrid1->Cells[7][k]+".";

StringGrid1->Cells[7][k] = StringGrid1->Cells[7][k]+Temp.MonthOfTeh;

StringGrid1->Cells[7][k] = StringGrid1->Cells[7][k]+".";

StringGrid1->Cells[7][k] = StringGrid1->Cells[7][k]+Temp.YearOfTeh;

StringGrid1->Cells[8][k] = Temp.Pasp;

k++;

StringGrid1->RowCount = k;

}

}

fclose(f);

}

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