ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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; }