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(¤t,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);
}
//--------------------------------------------------------------