Skip to content

Instantly share code, notes, and snippets.

@Evshved
Created January 5, 2015 18:21
Show Gist options
  • Select an option

  • Save Evshved/e8f4ad5c38a6e961e228 to your computer and use it in GitHub Desktop.

Select an option

Save Evshved/e8f4ad5c38a6e961e228 to your computer and use it in GitHub Desktop.
Lab#8
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <stdio.h>
#include <io.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
struct TZap
{
char FIO[30],date_of_birth[13];
//int ;
double average_count,otmM,otmX,otmI,otmF,number_of_group;
}
Zap;
int size = sizeof(TZap);
int counter_of_puts=0;
double global_counter,add_of_count;
FILE *Fz;
AnsiString File_Zap;
void Out(TZap, TMemo*);
void Clear_Edit(void);
//---------------------------------------------------------------------------
void Clear_Edit(void)
{
Form1->Edit1->Text="";
//Form1->Edit2->Text="";
Form1->Edit3->Text="";
Form1->Edit4->Text="";
Form1->Edit5->Text="";
Form1->Edit6->Text="";
Form1->Edit7->Text="";
Form1->Edit8->Text="";
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Clear_Edit();
Memo1->Clear();
}
//---создать------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
OpenDialog1->Title="Создать новый файл";
if (OpenDialog1->Execute()){
File_Zap = OpenDialog1->FileName;
Memo1->Lines->Add("Создали новый файл: "+AnsiString(File_Zap));
if ((Fz=fopen(File_Zap.c_str(),"wb"))==NULL) {
ShowMessage("Ошибка создания ФАЙЛА!");
return;
}
}
else
{
Memo1->Lines->Add("Вы не создали файл.");
}
fclose(Fz);
}
//----добавить-----------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Fz = fopen(File_Zap.c_str(),"ab");
strcpy(Zap.FIO, Edit1 -> Text.c_str());
strcpy(Zap.date_of_birth, Edit3 -> Text.c_str());
Zap.number_of_group = StrToFloat(Edit4->Text);
Zap.otmM = StrToInt(Edit5->Text);
Zap.otmF = StrToInt(Edit6->Text);
Zap.otmI = StrToInt(Edit7->Text);
Zap.otmX = StrToInt(Edit8->Text);
Zap.average_count = (Zap.otmM+Zap.otmX+Zap.otmF+Zap.otmI)/4;
Memo1->Lines->Add("----------------------------");
Out(Zap, Memo1);
counter_of_puts++;
fwrite(&Zap, size, 6, Fz);
Clear_Edit();
fclose(Fz);
}
//---сортировать------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
TZap st, *mas_Z;
int interest_group,counter;
counter=global_counter=0;
Fz = fopen(File_Zap.c_str(),"rb");
int D_f = fileno(Fz); // Находим дескриптор файла
int len = filelength(D_f); // Находим размер файла
int i, j, kol;
kol = len/size; //Количество записей в файле
mas_Z = new TZap[kol];
// Считываем записи из файла в динамический массив
for (i=0; i < kol; i++)
fread((mas_Z+i), size, 1, Fz);
fclose(Fz);
Memo1->Lines->Add("=====================");
Memo1->Lines->Add("Сортированные сведения");
interest_group=StrToInt(Edit2->Text);
for (i=0; i < kol-1; i++) {
if ((mas_Z[i].number_of_group==interest_group) && (mas_Z[i].otmF>0)){
global_counter+=mas_Z[i].otmM+mas_Z[i].otmF+mas_Z[i].otmI+mas_Z[i].otmX;
counter++;
}
}
add_of_count=global_counter/(counter*4);
Memo1->Lines->Add("Средний балл группы "+FloatToStr(add_of_count));
Memo1->Lines->Add("----------------------");
Memo1->Lines->Add("Cписок студентов, имеющих средний балл выше общего");
for (i=0; i < kol-1; i++) {
if ((mas_Z[i].average_count > add_of_count)
&& (mas_Z[i].number_of_group==interest_group)) {
Out(mas_Z[i], Memo1);
}
}
delete []mas_Z;
}
//---сохранить------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
SaveDialog1->Title="Сохранить файл результатов";
if (SaveDialog1->Execute()) {
AnsiString FileNameRez = SaveDialog1->FileName;
Memo1->Lines->SaveToFile(FileNameRez);
}
}
//----открытие-----------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
OpenDialog1->Title="Открыть файл";
if (OpenDialog1->Execute()) {
File_Zap = OpenDialog1->FileName;
if ((Fz=fopen(File_Zap.c_str(),"rb"))==NULL) {
ShowMessage("Ошибка открытия ФАЙЛА!");
return;
}
}
Memo1->Lines->Add("--------- Все сведения ---------");
while(1){
if(!fread(&Zap,size,1,Fz))
{
break;
return;
}
Out(Zap, Memo1);
}
fclose(Fz);
}
//--очистка-------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
Memo1->Clear();
}
//---------------------------------------------------------------------------
void Out(TZap z, TMemo *Memo1)
{
Memo1->Lines->Add("ФИО - " + AnsiString(z.FIO));
Memo1->Lines->Add("Год Рождения - "+ AnsiString(z.date_of_birth));
Memo1->Lines->Add("Номер группы - " +FloatToStr(z.number_of_group));
Memo1->Lines->Add("Математика - " + FloatToStr(z.otmM) + " Физика - " + FloatToStr(z.otmF));
Memo1->Lines->Add("Информатика - " + FloatToStr(z.otmI) + " Химия - " + FloatToStr(z.otmX));
Memo1->Lines->Add("Средний балл - " + FloatToStr(z.average_count));
}
void __fastcall TForm1::Button7Click(TObject *Sender)
{
String First_name[5]={"Николя","Аркадий","Антон","Михаил","Валерьянтий"};
String Last_name[5]={"Иванов","Гавриилов","Зоранко","Зубко","Кабыко"};
String Middle_name[5]={"Иванович","Михайлович","Евгеньевич","Юрьевич","Валерьевич"};
Form1->Edit1->Text=Last_name[random(5)] +" " +First_name[random(5)]+" " + Middle_name[random(5)];
String Group_number[3]={"220503","220101","230001"};
Form1->Edit4->Text=Group_number[random(3)];
Form1->Edit2->Text=Group_number[random(3)];
Form1->Edit3->Text=random(11)+1990;
Form1->Edit5->Text=random(4)+5;
Form1->Edit6->Text=random(4)+5;
Form1->Edit7->Text=random(4)+5;
Form1->Edit8->Text=random(4)+5;
}
//---------------------------------------------------------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment