Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пример оформл курсовой.doc
Скачиваний:
9
Добавлен:
18.11.2019
Размер:
201.73 Кб
Скачать

Розділ 3 основний модуль проекта

Головна форма проекту має вигляд:

……………….

Текст програмного коду для командних елюентів головної форми:

include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Bibl.h" // Долучення заголовного файла власної бібліотеки

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

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

// Функція запису до комірок певного компонента StringGrid даними полів структури

void setkaData(TStringGrid *Sg, data d, int N)

{

Sg->Cells[0][N]=IntToStr(N); // порядковий номер

Sg->Cells[1][N]=(String)d.Fam;

Sg->Cells[2][N]=(String)d.NameWr;

Sg->Cells[3][N]=(String)d.Otch;

Sg->Cells[4][N]=(String)d.dolg;

Sg->Cells[5][N]=(String)d.ustr;

Sg->Cells[6][N]=FormatFloat("0.00", d.zarp);

}

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

// Функція запису до фіксованого рядка (певного компонента StringGrid) заголовками стовбців

void setkaTitle(TStringGrid *Sg)

{

Sg->Cells[0][0]="№";

Sg->Cells[1][0]="Прізвище";

Sg->Cells[2][0]="Ім’я";

Sg->Cells[3][0]="По-батькові";

Sg->Cells[4][0]="Посада";

Sg->Cells[5][0]="Дата";

Sg->Cells[6][0]="Оклад";

}

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

// Перша вкладка: Запис даних до бінарного файла (кнопка «Записати у файл»)

void __fastcall TForm1::Button1Click(TObject *Sender)

{

// Введення даних з приведенням типів

strcpy(dan.Fam, Edit1->Text.c_str());

strcpy(dan.NameWr, Edit2->Text.c_str());

strcpy(dan.Otch, Edit3->Text.c_str());

strcpy(dan.ustr, Edit4->Text.c_str());

strcpy(dan.dolg, ComboBox1->Text.c_str());

dan.zarp= StrToFloat(Edit5->Text);

fB=fopen(nB,"ab"); // відкрити бінарний файл для запису у кінець файла

fwrite(&dan,sizeof(dan),1,fB); // записати структуру у бінарний файл

fclose(fB); // закрити бінарний файл

}

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

// Друга вкладка: Перегляд вмісту бінарного файла (кнопка «Перегляд»)

void __fastcall TForm1::Button2Click(TObject *Sender)

{

setkaTitle(SG2); // підписати стовпці SG2 (StringGrid2)

fB = fopen(nB,"rb"); // відкрити бінарний файл для зчитування

int k=1;

while(fread(&dan, sizeof(dan), 1, fB) > 0)

{

setkaData(SG2, dan, k); // записати дані до SG2 у k-рядок

k++;

}

SG2->RowCount = k; // встановити потрібну кількість рядків

fclose(fB); // закрити файл

}

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

// Третя вкладка: Завдання – виведення інженерів, стаж роботи яких перевищує 20 років

void __fastcall TForm1::Button3Click(TObject *Sender)

{

fB = fopen(nB, "rb");

int k=1;

while( fread(&dan, sizeof(dan), 1, fB) > 0 )

if((YearSpan(Now(),StrToDate(dan.ustr))>20)&&((String)dan.dolg=="Інженер")) //своя умова

{

setkaData(SG3, dan, k);

k++;

}

if (k>1)

{

SG3->RowCount=k;

setkaTitle(SG3);

}

else ShowMessage("Інженери зі стажем > 20 років - відсутні");

fclose(fB);

}

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

// Четверта вкладка: Сортування масиву (завдання Стовп.3)

void __fastcall TForm1::Button4Click(TObject *Sender)

{

int i, j, k;

fB = fopen(nB,"rb"); // відкрити бінарний файл для зчитування

k=kol(&fB) ; // визначити кількість записів у файлі

data *mass = new data[k]; // виділити місце у пам’яті під масив структур із k елементів

formir(&fB , mass, k); // виклик функції «Заповнення масиву даними з файла»

sort(mass,k); // виклик функції «Сортування»

for(i=0; i<k; i++) // вивести відсортовані дані

setkaData(SG4, mass[i], i+1);

setkaTitle(SG4); // підписати стовпці таблиці SG4

SG4->RowCount=k+1; // встановити потрібну кількість рядків таблиці SG4

delete []mass; // звільнити динамічну пам’яті, виділену під масив структур

fclose(fB); // закрити бінарний файл

}

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

// Створення текстового файла з бінарного по заданій умові (завдання Стовп.4)

void __fastcall TForm1::Button5Click(TObject *Sender)

{

Memo1->Clear(); // підготовка (очищення) компонента для виведення результатів

fT=fopen(nT,"wt"); // відкрити текстовий файл

fB=fopen(nB,"rb"); // відкрити бінарний файл

//Виклик функції для записування до текстового файла даних за умовою

zapis(&fT, &fB);

fclose(fT); // закрити текстовий файл

fclose(fB); // закрити бінарний файл

Memo1->Lines->LoadFromFile(nT); // завантажити вміст текстового файла до Memo1

}

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

// Робота з MainMenu

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

// Меню – Очищення файлів - Бінарний

void __fastcall TForm1::N5Click(TObject *Sender)

{

fB = fopen(nB,"wb");

if(fT == NULL) {ShowMessage("Помилка роботи з файлом "); return;}

fclose(fB);

}

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

// Меню - Очищення файлів - Текстовий

void __fastcall TForm1::N6Click(TObject *Sender)

{

fT = fopen("kurs.txt","wt");

if(fT == NULL) {ShowMessage("Помилка роботи з файлом"); return;}

fclose(fT);

}

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

// Вихід (Меню)

void __fastcall TForm1::N7Click(TObject *Sender)

{ Close();

}

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