Расписание трансляции художественных фильмов на месяц




Атрибуты:

  1. УДК кассеты
  2. Название фильма
  3. Жанр (комедия, триллер и т.д..)
  4. Производитель
  5. Год выпуска
  6. Дата проката
  7. Время проката

Основные функции:

  • Удалить все записи о фильмах с заданным годом выпуска
  • Для заданного фильма заменить УДК кассеты
  • Вывести все сведения о фильмах заданного производителя.

Таблица соответствия переменных

Имя переменной Имя на С Тип Комментарий
L l Const int Длинастроки
k K Int Количесво записей
P p int Параметр цикла
y y int Номер записи
j j int Параметр цикла
g g Int Параметр цикла
i I char Выбор операции
Vat[20] Vat[20] Char Дополнительная
Film[20] Film[20] Char Дополнительная
f.udk f.udk Int ИДК
f.nm[10] f.nm[10] char Имя
f.zhnr[10] f.zhnr[10] Char Жанр
f.avt[10] f.avt[10] Char Автор
f.age f.age Int Год
f.date f.date Int Дата
f.time f.time int Время

Листинг программы

//выполнил Жаворонков Дмитрий

#include <stdio.h>

#include <conio.h>

#include <windows.h>

#include <math.h>

#include <string.h>

char bufRus[256];

char* Rus(const char*text)

{

CharToOem(text, bufRus);

return bufRus;

}

Main()

{

Const int

l=3+10+10+10+4+2+4;

int k=0,p,y=0,t,j,g;

char i='0';

char vat[20],film[20];

Struct FILM

{

int udk;

char nm[10];

char zhnr[10];

char avt [10];

int age;

int date;

int time;

};

struct FILM f;

FILE *m,*n;

if((m=fopen("film.dat","w+b"))==NULL)

{

puts(Rus("ошибка открытия\n"));

fflush(stdin);

getchar();

return(1);

}

while(i!=0)

{

printf("%",i);

puts(Rus("выполнил Жаворонков Дмитрий\n"));

puts(Rus("1 добавить запись в конец"));

puts(Rus("2 добавить запись по номеру"));

puts(Rus("3 вывод записей"));

puts(Rus("4 удалить все записи данного года"));

puts(Rus("5 для фильма изменить ИДК"));

puts(Rus("6 все фильмы данного автора"));

puts(Rus("7 удалить по номеру"));

puts(Rus("8 записать в резервный файл"));

puts(Rus("9 удалить файл"));

puts(Rus("0 Выход"));

i=getchar();

system("cls");

Switch(i)

{

case '1':

{

printf(Rus("запись N%d\n"),k);

puts(Rus("Введите ИДК фильма"));

scanf("%d",&f.udk);

fflush(stdin);

puts(Rus("Введите имя фильма"));

gets(f.nm);

fflush(stdin);

puts(Rus("Введите жанр фильма"));

gets(f.zhnr);

fflush(stdin);

puts(Rus("Введите автора фильма"));

gets(f.avt);

fflush(stdin);

puts(Rus("Введите год выпуска фильма"));

scanf("%d",&f.age);

fflush(stdin);

puts(Rus("Введите дату показа фильма"));

scanf("%d",&f.date);

fflush(stdin);

puts(Rus("Введите время проката фильма"));

scanf("%d",&f.time);

fseek(m,(sizeof f)*k,SEEK_SET);

fwrite(&f,sizeof f,1,m);

k=k+1;

system("cls");

i=getchar();

}

break;

case '2':

{

printf(Rus("введите номер (0-%d)\n"),k);

scanf("%d",&y);

if(y<=k)

{printf(Rus("запись N%d\n"),y);

puts(Rus("Введите ИДК фильма"));

scanf("%d",&f.udk);

fflush(stdin);

puts(Rus("Введите имя фильма"));

gets(f.nm);

fflush(stdin);

puts(Rus("Введите жанр фильма"));

gets(f.zhnr);

fflush(stdin);

puts(Rus("Введите автора фильма"));

gets(f.avt);

fflush(stdin);

puts(Rus("Введите год выпуска фильма"));

scanf("%d",&f.age);

fflush(stdin);

puts(Rus("Введите дату показа фильма"));

scanf("%d",&f.date);

fflush(stdin);

puts(Rus("Введите время проката фильма"));

scanf("%d",&f.time);

fseek(m,(sizeof f)*(y),SEEK_SET);

fwrite(&f,sizeof f,1,m);

if(y<k);

else k=k+1;

}

else puts(Rus("ошибка"));

system("cls");

i=getchar();

}

break;

case '3':

{

if(k==0)puts(Rus("список пуст "));

Else

{ fseek(m,0,SEEK_SET);

puts("==========================================================");

puts(Rus("| № |ИДК| Имя | Жанр | Автор | год|дaтa|время| "));

p=0;

while(p<k)

{ fread(&f,sizeof f,1,m);

printf(Rus("| %d |%3d|%10s|%10s|%10s|%4d|%4d|%5d|\n"),p,f.udk,f.nm,f.zhnr,f.avt,f.age,f.date,f.time);

p++;

}

puts("==========================================================\n");

}

i=getchar();

}

break;

case '4':

{

if(k==0)puts(Rus("список пуст "));

Else

{ puts(Rus("введите год"));

scanf("%d",&y);

for(g=0;g<4;g++)

{ for(j=0;j<k;j++)

{ fseek(m,(sizeof f)*j,SEEK_SET);

fread(&f,sizeof f,1,m);

if(f.age==y)

{ for(p=j+1;p<k;p++)

{ fseek(m,(sizeof f)*p,SEEK_SET);

fread(&f,sizeof f,1,m);

fseek(m,(sizeof f)*(p-1),SEEK_SET);

fwrite(&f,sizeof f,1,m);

}

k=k-1;

}

}

}

}

system("cls");

i=getchar();

}

break;

case '5':

{

if(k==0)puts(Rus("список пуст "));

Else

{ fflush(stdin);

puts(Rus("введите фильм"));

gets(film);

fseek(m,0,SEEK_SET);

for(p=0;p<k;p++)

{ fread(&f,sizeof f,1,m);

if(!strcmp(f.nm,film))

{ printf(Rus("N=%d\nВведите ИДК\n"),p);

scanf("%d",&f.udk);

fseek(m,(sizeof f)*p,SEEK_SET);

fwrite(&f,sizeof f,1,m);

}

}

}

system("cls");

i=getchar();

}

break;

case '6':

{

if(k==0)puts(Rus("список пуст "));

Else

{ fflush(stdin);

puts(Rus("введите автора"));

gets(vat);

fseek(m,0,SEEK_SET);

puts("==========================================================");

puts(Rus("| № |ИДК| Имя | Жанр | Автор | год|дaтa|время| "));

for(p=0;p<k;p++)

{ fread(&f,sizeof f,1,m);

if(!strcmp(f.avt,vat))

{ printf(Rus("| %d |%3d|%10s|%10s|%10s|%4d|%4d|%5d|\n"),p,f.udk,f.nm,f.zhnr,f.avt,f.age,f.date,f.time);

}

}

puts("==========================================================\n");

}

i=getchar();

system("cls");

}

break;

case '7':

{

if(k==0)puts(Rus("список пуст "));

Else

{ puts(Rus("введите номер"));

scanf("%d",&g);

if(g<k)

{ for(p=g+1;p<k;p++)

{ fseek(m,(sizeof f)*p,SEEK_SET);

fread(&f,sizeof f,1,m);

fseek(m,(sizeof f)*(p-1),SEEK_SET);

fwrite(&f,sizeof f,1,m);

}

k=k-1;

}

}

system("cls");

i=getchar();

}

break;

case '8':

{

if(k==0)puts(Rus("список пуст "));

Else

{ if((n=fopen("film.txt","w+"))==NULL) puts(Rus("ошибка открытия"));

fseek(m,0,SEEK_SET);

fputs("==================================================================================\n",n);

fputs("| № | ИДК | Имя | Жанр | Автор | год | дaтa | время |\n",n);

p=0;

while(p<k)

{ fread(&f,sizeof f,1,m);

fprintf(n,"| %1d |%8d|%13s|%14s|%14s|%6d|%6d|%9d|\n",p,f.udk,f.nm,f.zhnr,f.avt,f.age,f.date,f.time);

p++;

}

fputs("==================================================================================\n",n);

}

i=getchar();

}

break;

case '9':

{

fclose(m);

remove("film.dat");

puts(Rus("файл удален"));

i=getchar();

}

break;

case '0':

{

i=getchar();fclose(m);fflush(stdin);return(0);

}

break;

default:puts(Rus("ошибка"));printf("%c",i);

puts("FFUUuuuu..");

}

}

fclose(m);fflush(stdin);return(0);

}


Обобщенная Блок-схема

Детализация AB

Добавление записи в конец.


Детализация CD

Добавление записи по номеру

Детализация EF

Вывод всех записей.


Детализация GH

Удаление записей указанного года.

Детализация IJ

Изменение ИДК для заданного фильма.

Детализация KL

Все фильмы данного автора.


Детализация MN

Удаление записи по номеру.

Тест



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: