Разработка программы, обеспечивающую с помощью средств языка С++ ввод анкетных данных студентов и вывод в табличном виде списка студентов, отобранных по заданному условию, страница 4

Fptr=fopen(filename,”r”);

if (fptr =  = 0)

printf(“\n Файл %s невозможно открыть”,filename);

exit 1;

line

shapka

line

while(fread(&zap,sizeof(struct anketa),1,fptr)

{printf(“\n|%5d|%-20.19s|%2c|%-20.19s|%2d|%2d|%2d|%5d|”,

zap.tnum,zap.fio,zap.pol,

zap.dd,zap.mm,zap.yy,zap.oklad);

line

}

fclose(fptr);

}

void spravka()

{

Struct anketa zap;

int vozr;

int oklad;

printf(“\n Введите нужный возраст:\t”);

scanf (“%d”,&vozr);

printf(“\n Введите нужный оклад:\t”);

scanf (“%d”,&oklad);

fptr=fopen(filename,”r”);

if (fpt r= = 0)

printf (“\n Файл %s невозможно открыть”, filename);

exit 1;

line

shapka

line

while (fread(&zap,sizeof(struct anketa),1,fptr)!=0)

if (zap.yy = = (2001-vozr)) &&(zap.oklad =  =oklad))

{

printf(“\n |%5d|%-20.19s|%2c|%-20.19s|%2d|%2d|%2d|%5d|”,

zap.tnum,zap.fam,zap.pol,

zap.dd,zap.mm,zap.yy,zap.oklad);

line

}

fclose(fptr);

}

main ()

{

int key;

do {

printf(“\n *** МЕНЮ ***\n”);

printf(“\n 1-ввод данных в БД”);

printf(“\n 2-печать БД”);

printf(“\n 3-печать справки”);

printf(“\n 4-конец”);

printf (“\n Введите номер пункта”)’

scanf (“%d, &key);

switch (key)

{

case 1:vvodBD();

break;

case 2: printBD();

break;

case 3: spravka();

break;

case 4: break;

default: printf(“\n Неверный номер пункта”);

}

}

while  (key!=4);

printf(“\n Конец программы”);

}

Задача №6

ДАНО:            Файл данных по телеграммам следующей структуры.

дата

адрес получателя

ф.и.о. получателя

сумма оплаты

ТРЕБУЕТСЯ: Разработать программу на языке С++ для создания и обработки файла данных по телеграммам.

ОГРАНИЧЕНИЯ:

·  выбрать и отпечатать из файла все телеграммы за заданный месяц текущего  года,

·  подсчитать сумму оплаты за все выбранные телеграммы.

РЕШЕНИЕ:

# include <stdio.h>

struct tel {

int dd,mm,yy;

char address[30];

char fio[20];

int plata;

};

int sum = 0;

FILE fptr;

#define line printf (“\n------------------------------------“);

#define shapka printf (“\n | Дата|Адрес|ФИО|Оплата|”);

void vvodBD()

{

srtuct tel z;

if ((fptr=fopen(“Baza”,”a”) = = 0)

printf (“\n Невозможно открыть файл Baza”);

exit 1;

printf(“\n Введите дату dd.mm.yy:\t”);

scanf (“%d %d %d”,&z.dd,&z.mm,&z.yy);

printf(“\n Введите адрес:\t”);

scanf (“%s”,&z.adress);

printf(“\n Введите ФИО:\t”);

scanf(“%s”,&z.fio);

printf(“\n Введите cумму оплаты:\t”);

scanf(“%в”,&z.plata);

fwrite(&z,sizeof(struct tel),1,fptr);

fclose(fptr);

return;

}

void otloz()

{

struct tel z;

int mm=5;

int yy=2006;

if ((fptr=fopen(“Baza”,”r”)) = = 0)

printf (“\n Невозможно открыть файл Baza”);

exit 1;

line

shapka

line

while (fread(&z,sizeof(struct tel),1,fptr)!=NULL)

{

if(z.yy = = yy) && {z.mm = = mm))

{

printf(“\n |%2d.%2d.%2d | %-30.30s| %-20.20s| %6d|”,

z.dd,z.mm,z.yy,z.adress,z.fio,z.plata);

line

sum=sum+z.plata;

}

}

fclose(fptr);

printf (“\n Сумма оплаты за все выбранные телеграммы %d”,sum);

return;

}

main()

{

int key;

do

{

printf(“\n ***МЕНЮ***”);

printf(“\n 1-ввод данных в БД”);

printf(“\n 2-Отбор телеграмм”);

printf(“\n 3-Конец”);

printf (“\n Введите номер пункта”)’

scanf (“%d, &key);

switch (key)

{

case 1:vvodBD();

break;

case 2: otbor();

break;

case 3:  break;

default: printf(“\n Неверный номер пункта”);

}

}

while  (key!=3);

printf(“\n Конец программы”);

}

Задача №7