- •Курсова робота
- •Завдання на курсову роботу
- •Розділ 1 теоретичні відомості замінити на свою тематику
- •Розділ 2 бібліотека користувача
- •1 Заголовний файл Bibl.H
- •2 Файл реалізації Bibl.Cpp
- •Розділ 3 основний модуль проекта
- •Розділ 4 створення додаткових форм
- •1 Форми «Про автора» та «Завдання»
- •2 Створення заставки до курсової роботи
- •Висновки
- •Список використаної літератури
Розділ 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();
}
//---------------------------------------------------------------------------