ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 13.04.2024

Просмотров: 5

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner){}

struct Tstud {

char name[20];

int year;

char Ngr[6];

int fiz;

int mat;

int inf;

int him;

float s_b;

} stud;

AnsiString line = "";

AnsiString File_stud;

int size=sizeof(Tstud);

FILE *f;

void Out(Tstud, TMemo*);

void __fastcall TForm1::FormCreate(TObject *Sender){

Memo1->Clear();}

void __fastcall TForm1::Button1Click(TObject *Sender){

Memo1->Clear();

OpenDialog1 ->Title="Створити новий файл";

if (OpenDialog1 ->Execute()){

File_stud = OpenDialog1 ->FileName;

if ((f=fopen(File_stud.c_str(), "wb"))==NULL) {

ShowMessage("Помилка створення ФАЙЛУ!");

return;}

Button4->Enabled=true;

Button6->Enabled=true;

Button7->Enabled=true;}

else {

ShowMessage("Помилка відкриття ФАЙЛУ!");

return;}

Memo1 ->Lines ->Add("Створили новий файл: "+AnsiString(File_stud));

fclose(f);

line.sprintf("%-20s%-6s%-6s%-6s%-6s%-6s%-6s%-6s", "Прізвище", "Рік", "Група","Фіз","Мат","Інф","Хім","С_б");

Memo1->Lines->Add(line);

/*Button1->Enabled=true;

Button6->Enabled=true; */}

void __fastcall TForm1::Button4Click(TObject *Sender){

f = fopen(File_stud.c_str(), "ab");

strcpy(stud.name, Edit1 -> Text.c_str());

if(strlen(stud.name)<3){

ShowMessage("Гадаю, ви введи невірне ім'я. Перевірте.") ;

return;}

try{

stud.year = StrToInt(Edit2 ->Text);}

catch(EConvertError &e){

ShowMessage("Перевірте привильність вводу року народження.") ;

return;}

strcpy(stud.Ngr, Edit3 -> Text.c_str());

if(strlen(stud.Ngr)<3){

ShowMessage("№ групи повинен містити >2 символів.") ;

return;}

try{

stud.fiz = StrToInt(Edit4 ->Text);

stud.mat = StrToInt(Edit5 ->Text);

stud.inf = StrToInt(Edit6 ->Text);

stud.him = StrToInt(Edit7 ->Text);}

catch(EConvertError &e){

ShowMessage("Перевірте привильність вводу середнього балу.") ;

return;}

if(stud.year>1999 || stud.year<1993){

ShowMessage("Перевірте значення року народження") ;

return;}

if(stud.fiz>5 || stud.fiz<2 || stud.mat>5 || stud.mat<2 || stud.inf>5 || stud.inf<2 || stud.him>5 || stud.him<2){

ShowMessage("Середній бал має бути 2<= n <=5.") ;

return;}

stud.s_b=float (stud.fiz+stud.mat+stud.inf+stud.him)/4;

Out(stud, Memo1);

fwrite(&stud, size, 1, f);

Edit1 ->Text=""; Edit2 ->Text=""; Edit3 ->Text=""; Edit4 ->Text="";

Edit5 ->Text=""; Edit6 ->Text=""; Edit7 ->Text="";

fclose(f);}

void Out(Tstud s, TMemo *Memo1){

line.sprintf("%-20s%-6d%-6s%-6d%-6d%-6d%-6d%-4.2f",s.name,s.year,s.Ngr,s.fiz,s.mat,s.inf,s.him,s.s_b);

Memo1->Lines->Add(line);

// Memo1 ->Lines ->Add(AnsiString(s.name)+ " "+IntToStr(s.year)+ " "+AnsiString(s.Ngr)+ " "+IntToStr(s.fiz)+ " "+IntToStr(s.mat)+ " "+IntToStr(s.inf)+ " "+IntToStr(s.him)+" "+ FloatToStrF(s.s_b, ffFixed,3,2));}

void __fastcall TForm1::Button5Click(TObject *Sender){

Memo1->Clear();

Edit1 ->Text=""; Edit2 ->Text=""; Edit3 ->Text=""; Edit4 ->Text="";

Edit5 ->Text=""; Edit6 ->Text=""; Edit7 ->Text="";

Button4->Enabled=false;

Button6->Enabled=false;

Button7->Enabled=false;}


void __fastcall TForm1::Button2Click(TObject *Sender){

Memo1->Clear();

OpenDialog1 ->Title="Відкрити файл";

if (OpenDialog1 ->Execute()){

File_stud = OpenDialog1 ->FileName;

if((f=fopen(File_stud.c_str(), "rb"))==NULL) {

ShowMessage("Помилка відкриття ФАЙЛУ!");

return;}

Button4->Enabled=true;

Button6->Enabled=true;

Button7->Enabled=true;} else{

ShowMessage("Помилка відкриття ФАЙЛУ!");

return;}

Memo1 ->Lines ->Add("---- Вміст файлу "+AnsiString(File_stud)+"----");

line.sprintf("%-20s%-6s%-6s%-6s%-6s%-6s%-6s%-6s", "Прізвище", "Рік", "Група","Фіз","Мат","Інф","Хім","С_б");

Memo1->Lines->Add(line);

while(1){

if(!fread(&stud, size, 1, f)) break;

Out(stud, Memo1);}

fclose(f);}

void __fastcall TForm1::Button3Click(TObject *Sender){

bool fi;

char find[20];

Tstud st, *mas_Z;

f = fopen(File_stud.c_str(), "rb");

int D_f = fileno(f); // Знаходимо дескриптор файлу

int len = filelength(D_f); // Знаходимо розмір файлу

int i, j, kol;

kol = len/size; //Кількість записів у файлі

mas_Z = new Tstud[kol];

for (i=0; i < kol; i++){

fread((mas_Z+i),size, 1, f);

if(strcmp(mas_Z[i].name,find)==0){

Edit1->Text=mas_Z[i].name;

Edit2->Text=mas_Z[i].year;

Edit3->Text=mas_Z[i].Ngr;

Edit4->Text=mas_Z[i].fiz;

Edit5->Text=mas_Z[i].mat;

Edit6->Text=mas_Z[i].inf;

Edit7->Text=mas_Z[i].him;

fi=1;}} if(!fi) {

ShowMessage("Такого запису не знайдено!");

delete []mas_Z;

fclose(f);

return;}

fclose(f);

f = fopen(File_stud.c_str(), "wb");

Memo1->Clear();

Memo1 ->Lines ->Add("---- Вміст корегованого файлу----"); line.sprintf("%-20s%-6s%-6s%-6s%-6s%-6s%-6s%-6s", "Прізвище", "Рік", "Група","Фіз","Мат","Інф","Хім","С_б");

Memo1->Lines->Add(line);

for(int k=0;k<kol;k++){

if(k==0) continue;

Out(mas_Z[k], Memo1);

fwrite(&mas_Z[k], size, 1, f);}

fclose(f);

delete []mas_Z;}

void __fastcall TForm1::Button6Click(TObject *Sender){

Tstud st, *mas_Z;

f = fopen(File_stud.c_str(), "rb");

int D_f = fileno(f); // Знаходимо дескриптор файлу

int len = filelength(D_f); // Знаходимо розмір файлу

int i, j, kol;

kol = len/size; //Кількість записів у файлі

mas_Z = new Tstud[kol];

Memo1 ->Lines ->Add("");

Memo1 ->Lines ->Add("---- Студенти відмінники----");

line.sprintf("%-20s%-6s%-6s%-6s%-6s%-6s%-6s%-6s", "Прізвище", "Рік", "Група","Фіз","Мат","Інф","Хім","С_б");

Memo1->Lines->Add(line);

// Прочитуємо записи з файлу в динамічний масив

for (i=0; i < kol; i++){

fread((mas_Z+i),size, 1, f);

if(mas_Z[i].fiz>=4 && mas_Z[i].mat>=4 && mas_Z[i].inf>=4 && mas_Z[i].him>=4)

Out(mas_Z[i],Memo1);}

fclose(f);

delete []mas_Z;}

void __fastcall TForm1::Button7Click(TObject *Sender){

SaveDialog1 ->Title="Зберегти файл результатів";

if (SaveDialog1 ->Execute()){

AnsiString FileNameRez = SaveDialog1 ->FileName;

Memo1 ->Lines ->SaveToFile(FileNameRez);}}

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key){

char *str = "йцукенгшщзхїфівапролджєячсмитьбюЙЦУКЕНГШЩЗХЇФІВАПРОЛДЖЄЯЧСМИТЬБЮ.";

if (((int)Key==8) || ((int)Key==13)) return;

if (!( AnsiStrScan( str, Key)))

Key = NULL;}

void __fastcall TForm1::Edit2KeyPress(TObject *Sender, char &Key){

char *str = "13456789";

if (((int)Key==8) || ((int)Key==13)) return;

if (!( AnsiStrScan( str, Key)))

Key = NULL;}

void __fastcall TForm1::Edit3KeyPress(TObject *Sender, char &Key){


char *str = "1234567890ік-";

if (((int)Key==8) || ((int)Key==13)) return;

if (!( AnsiStrScan( str, Key)))

Key = NULL;}

void __fastcall TForm1::Edit4KeyPress(TObject *Sender, char &Key){

char *str = "2345";

if (((int)Key==8) || ((int)Key==13)) return;

if (!( AnsiStrScan( str, Key)))

Key = NULL;}

void __fastcall TForm1::Edit5KeyPress(TObject *Sender, char &Key){

char *str = "2345";

if (((int)Key==8) || ((int)Key==13)) return;

if (!( AnsiStrScan( str, Key)))

Key = NULL; }

void __fastcall TForm1::Edit6KeyPress(TObject *Sender, char &Key){

char *str = "2345";

if (((int)Key==8) || ((int)Key==13)) return;

if (!( AnsiStrScan( str, Key)))

Key = NULL; }

void __fastcall TForm1::Edit7KeyPress(TObject *Sender, char &Key){

char *str = "2345";

if (((int)Key==8) || ((int)Key==13)) return;

if (!( AnsiStrScan( str, Key)))

Key = NULL; }