Завдання: створити програму, яка б забезпечувала створення, перегляд, доповнення та вилучення даних з файлу, що містить інформацію про учнів в школі у вигляді: ім’я, прізвище, клас, рік навчання. Організувати пошук учнів, які мають однакове ім’я та прізвище і навчаються в одному клачсі.
Виконання завдання
Алгоритм рішення

Програма рішення.
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
struct ant
{char im[30];
char fam[50];
char kls[2];
char rik[256];};
FILE *f,*g;
ant x;
//створення
void stv(void)
{ if ((f=fopen("x.dat","w"))==NULL)
{perror("Файл вже існує");
getch();
exit(1);}
cout<<"\nВведіть інформацію про учня:\n";
do
{cout<<"\nВведіть імя учня: ";
cin>>x.im;
cout<<"\nВведіть прізвище учня: ";
cin>>x.fam;
cout<<"\nВведіть клас: ";
cin>>x.kls;
cout<<"\nВведіть рік навчасння : ";
cin>>x.rik;
fwrite(&x,sizeof(x),1,f);}
while(getch()!=27);
fclose(f);}
//доповнення
void dod(void)
{ if ((f=fopen("x.dat","a"))==NULL)
{perror("Файл вже існує");
getch();
exit(1);}
cout<<"\nВведіть інформацію про учня:\n";
do
{cout<<"\nВведіть імя учня: ";
cin>>x.im;
cout<<"\nВведіть прізвище учня: ";
cin>>x.fam;
cout<<"\nВведіть клас: ";
cin>>x.kls;
cout<<"\nВведіть рік навчасння (буквами): ";
cin>>x.rik;
fwrite(&x,sizeof(x),1,f);}
while(getch()!=27);
fclose(f);}
//перегляд
void per(void)
{ if ((f=fopen("x.dat","r"))==NULL)
{perror("Файл вже існує");
getch();
exit(1);}
cout<<"\n Інформація про учня:\n";
while(fread(&x,sizeof(x),1,f)!=NULL)
{cout<<"\nімя учня: ";
cout<<x.im;
cout<<"\nпрізвище учня: ";
cout<<x.fam<<"\n";
cout<<"\nклас: ";
cout<<x.kls;
cout<<"\nрік навчасння (буквами): ";
cout<<x.rik;
getch();}
fclose(f);}
//вилучення
void del(void)
{ if ((f=fopen("x.dat","r"))==NULL)
{perror("Файл вже існує");
getch();
exit(1);}
if((g=fopen("x1.dat","w"))==NULL)
{perror("Файл вже існує");
getch();
exit(1);}
cout<<"\n Інформація про учнів: \n";
while(fread(&x,sizeof(x),1,f)!=NULL)
{cout<<"\nІмя учня: ";
cout<<x.im;
cout<<"\nПрізвище учня: ";
cout<<x.fam;
cout<<"\nКлас: ";
cout<<x.kls;
cout<<"\nРік навчасння (буквами): ";
cout<<x.rik;
getch();
cout<<"\n\n Вилучати(y/n)?";
if(getch()=='n') fwrite(&x,sizeof(x),1,g);}
fclose(f);
fclose(g);
unlink("x.dat");
rename("x1.dat","x.dat");}
void posh(void)
{ char s1[40],s2[50],s3[10];
if ((f=fopen("x.dat","r"))==NULL)
{perror("Файл вже існує");
getch();
exit(1);}
cout<<"\nВведіть імя для пошуку:";
cin>>s1;
cout<<"\nВведіть прізвище для пошуку:";
cin>>s2;
{cout<<"\nКлас: ";
cin>>s3;
while(fread(&x,sizeof(x),1,f)!=NULL)
if((strcmp(s1,x.im)==0)&&(strcmp(s2,x.fam)==0)&&(strcmp(s3,x.kls)==0))
cout<<"\nРік навчасння (буквами): ";
cout<<x.rik; }
getch();
}
#pragma argsused
int main(int argc, char* argv[])
{SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int r;clrscr();
do
{clrscr();
cout<<"\n\n\n\t\t Головне меню \n\t1-Створеня\n\t2-Перегляд";
cout<<"\n\t3-Доповнення\n\t4-Вилучення\n\t5-Пошук\n\t6-Вихід\n\t Вкажіть
cin>>r;
switch(r)
{case 1:{stv();break;}
case 2:{per();break;}
case 3:{dod();break;}
case 4:{del();break;}
case 5:{posh();break;}
case 6: exit(1);} }
while(1);
return 0;
}

Рисунок 2.6.2 – Вікно результатів роботи програми
(функція створення файлу)

Рисунок 2.6.3 – Вікно результатів роботи програми
(функція перегляду файлу)

Рисунок 2.6.4 – Вікно результатів роботи програми
(функція доповнення файлу)

Рисунок 2.6.5 – Вікно результатів роботи програми
(функція вилучення даних з файлу)

Рисунок 2.6.6 – Вікно результатів роботи програми