Атрибуты:
- УДК кассеты
- Название фильма
- Жанр (комедия, триллер и т.д..)
- Производитель
- Год выпуска
- Дата проката
- Время проката
Основные функции:
- Удалить все записи о фильмах с заданным годом выпуска
- Для заданного фильма заменить УДК кассеты
- Вывести все сведения о фильмах заданного производителя.
Таблица соответствия переменных
Имя переменной | Имя на С | Тип | Комментарий |
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
Удаление записи по номеру.
Тест