Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <windows.h>
- #include <iostream>
- #include <stdlib.h>
- #include <string.h>
- #include <stdio.h>
- using namespace std;
- struct film
- {
- char name[50]; //Название фильма
- char name_director[25]; //ФИО режиссера
- char *genre; //жанр фильма
- int duration_of_the_film; //продолжительность фильма
- int year_of_production; //год производства
- } *lib=NULL,*tmp_lib=NULL;
- struct film *add_new_film(struct film*,int);
- struct film *output_films_search_film(struct film*, struct film*,int,int&);
- void output_films_sort_year_of_production(struct film *,int);
- void output_films_search_genre(struct film *,int);
- void output_films_search_director(struct film *,int);
- void output_films_sort_time_duration(struct film *,int);
- void output_all_information(struct film *,int);
- void main_menu();
- void sort_menu();
- void search_menu();
- void genre_menu();
- int main()
- {
- int contin,number_of_the_film=0,tmp_number_of_the_film=0, main_menu_choice, search_menu_choice, sort_menu_choice;
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- //setlocale(LC_ALL, "Russian");
- do
- {
- do
- {
- main_menu();
- fflush(stdin);
- scanf("%d",&main_menu_choice);
- } while((main_menu_choice<0)||(main_menu_choice>4));
- switch(main_menu_choice){
- case 1: lib=add_new_film(lib,number_of_the_film); number_of_the_film++; break;
- case 2: output_all_information(lib,number_of_the_film); break;
- case 3:
- do
- {
- if (tmp_lib != NULL)
- {
- free (tmp_lib);
- tmp_lib = NULL;
- tmp_number_of_the_film = 0;
- }
- do
- {
- search_menu();
- fflush(stdin);
- scanf("%d",&search_menu_choice);
- }while((search_menu_choice<0)||(search_menu_choice>3));
- switch(search_menu_choice){
- case 1: tmp_lib=output_films_search_film(lib,tmp_lib,number_of_the_film,tmp_number_of_the_film); output_all_information(tmp_lib,tmp_number_of_the_film); break;
- case 2: output_films_search_genre(lib,number_of_the_film); break;
- case 3: output_films_search_director(lib,number_of_the_film); break;
- }
- }while(search_menu_choice!=0);break;
- case 4:
- do
- {
- do
- {
- sort_menu();
- fflush(stdin);
- scanf("%d",&sort_menu_choice);
- }while((sort_menu_choice<0)||(sort_menu_choice>6));
- switch(sort_menu_choice){
- case 1: output_films_sort_year_of_production(lib,number_of_the_film); break; //функция add_new_film
- case 2: output_films_sort_time_duration(lib,number_of_the_film); break;
- case 0: ;}
- }while(sort_menu_choice!=0);break;
- case 0: ;}
- }while(main_menu_choice!=0);
- free (lib);
- return 0;
- }
- struct film *add_new_film(struct film*_lib,int _number_of_the_film)
- {
- int genre_menu_choice;
- _lib=(film*)realloc(_lib,(_number_of_the_film+1)*sizeof(film));
- do
- {
- system("cls");
- fflush(stdin);
- printf("Введите название фильма.\n\n");
- printf("Правила ввода: Название фильма вводится с большой буквы; использовать\n");
- printf("при вводе русские буквы, цифры, знаки пунктуации и пробелы. Мини-\n");
- printf("мальная длина названия фильма 1 символ, максимальная - 50 символов.\n\n");
- printf("Ваш фильм: ");
- scanf("%[^\n]",_lib[_number_of_the_film].name);
- }while((strlen(_lib[_number_of_the_film].name)>50));
- do
- {
- system("cls");
- fflush(stdin);
- printf("Введите Имя и Фамилию режиссера.\n\n");
- printf("Правила ввода: Имя, фамилия вводятся с большой буквы; использовать\n");
- printf("при вводе русские буквы, знак пробела. Минимальная длина связки\n");
- printf("(ИМЯ+ФАМИЛИЯ) - 1 символ, максимальная - 25 символов.\n\n");
- printf("Имя и Фамилия режиссера: ");
- scanf("%[^\n]",_lib[_number_of_the_film].name_director);
- }while(strlen(_lib[_number_of_the_film].name_director) > 25);
- do
- {
- genre_menu();
- fflush(stdin);
- scanf("%d",&genre_menu_choice);
- }while((genre_menu_choice<1)||(genre_menu_choice>12));
- switch(genre_menu_choice){
- case 1: _lib[_number_of_the_film].genre="боевик"; break;
- case 2: _lib[_number_of_the_film].genre="военный"; break;
- case 3: _lib[_number_of_the_film].genre="документальный"; break;
- case 4: _lib[_number_of_the_film].genre="драма"; break;
- case 5: _lib[_number_of_the_film].genre="исторический"; break;
- case 6: _lib[_number_of_the_film].genre="комедия"; break;
- case 7: _lib[_number_of_the_film].genre="мелодрама"; break;
- case 8: _lib[_number_of_the_film].genre="мультфильм"; break;
- case 9: _lib[_number_of_the_film].genre="приключение"; break;
- case 10: _lib[_number_of_the_film].genre="триллер"; break;
- case 11: _lib[_number_of_the_film].genre="ужасы"; break;
- case 12: _lib[_number_of_the_film].genre="фантастика"; break; }
- /*do
- {
- system("cls");
- fflush(stdin);
- printf("Выберите жанр фильма из списка приведенного ниже, и осуществите его ввод с клавиатуры!\n\n");
- printf("-------------------------------------------------------------------------------------------\n");
- printf("| боевик | военный | детектив | документальный | драма | исторический | комедия | научный |\n");
- printf("-------------------------------------------------------------------------------------------\n");
- printf("| мелодрама | мультфильм | мюзикл | приключение | спорт | триллер | ужасы | фантастика |\n");
- printf("-------------------------------------------------------------------------------------------\n\n");
- printf("Жанр фильма: ");
- scanf("%s",_lib[_number_of_the_film].genre);
- }while(strlen(_lib[_number_of_the_film].genre) > 15);*/
- do
- {
- system("cls");
- printf("Введите продолжительность фильма в минутах.\n\n");
- printf("Правила ввода: необходимо ввести целое число больше 0, но меньше 600.\n\n");
- printf("Продолжительность фильма: ");
- scanf("%d",&_lib[_number_of_the_film].duration_of_the_film);
- }while(_lib[_number_of_the_film].duration_of_the_film>600);
- do
- {
- system("cls");
- printf("Введите год производства фильма.\n\n");
- printf("Правила ввода: необходимо ввести целое число, которое больше 1895, но меньше 2016.\n\n");
- printf("Год создания фильма: ");
- scanf("%d",&_lib[_number_of_the_film].year_of_production);
- }while((_lib[_number_of_the_film].year_of_production<1895)||(_lib[_number_of_the_film].year_of_production>2015));
- system("cls");
- printf("Спасибо! Ваш фильм сохранен программой!\n\n");
- /* printf("Фильм: %s\n",_lib[_number_of_the_film].name);
- printf("Режиссер: %s\n",_lib[_number_of_the_film].name_director);
- printf("Жанр: %s\n",_lib[_number_of_the_film].genre);
- printf("Создание фильма: %d год\n",_lib[_number_of_the_film].year_of_production);
- printf("Продолжительность: %d минут(а)\n\n",_lib[_number_of_the_film].duration_of_the_film);*/
- system("pause");
- return _lib;
- }
- struct film * output_films_search_film(struct film *_lib,struct film *search_lib,int _number_of_the_film,int &search_number_of_the_film)
- {
- char name_for_comparison[50];
- int i,flag=0;
- fflush(stdin);
- if(_number_of_the_film==0)
- {
- system("cls");
- printf("В фильмотеке ещё нету фильмов!\n\n");
- }
- else
- {
- system("cls");
- printf("Введите название фильма для просмотра информации о нём.\n\n");
- printf("Правила ввода: Название фильма вводится с большой буквы; использовать\n");
- printf("при вводе русские буквы, цифры, знаки пунктуации и пробелы. Мини-\n");
- printf("мальная длина названия фильма 1 символ, максимальная - 50 символов.\n\n");
- printf("Название фильма: ");
- scanf("%[^\n]",name_for_comparison);
- system("cls");
- for(i=0;i<_number_of_the_film;i++)
- {
- /*cout << name_for_comparison << endl;
- cout << _lib[i].name << endl;
- system("pause");*/
- if(strcmp (name_for_comparison, _lib[i].name)==0) //name_for_comparison==(_lib[i].name))
- {
- search_lib=(film*)realloc(search_lib,(search_number_of_the_film+1)*sizeof(film));
- strcpy (search_lib[search_number_of_the_film].name, _lib[i].name);
- strcpy (search_lib[search_number_of_the_film].name_director, _lib[i].name_director);
- search_lib[search_number_of_the_film].genre= _lib[i].genre;
- search_lib[search_number_of_the_film].year_of_production=_lib[i].year_of_production;
- search_lib[search_number_of_the_film].duration_of_the_film=_lib[i].duration_of_the_film;
- search_number_of_the_film++;
- /*printf("Фильм: %s\n",_lib[i].name);
- printf("Режиссер: %s\n",_lib[i].name_director);
- printf("Жанр: %s\n",_lib[i].genre);
- printf("Создание фильма: %d год\n",_lib[i].year_of_production);
- printf("Продолжительность: %d минут(а)\n\n",_lib[i].duration_of_the_film);*/
- }
- else
- flag++;
- }
- //search_lib=(film*)realloc(_lib,(search_number_of_the_film+1)*sizeof(film));
- //search_lib[search_number_of_the_film].f_name=NULL;
- if(flag==_number_of_the_film)
- {
- system("cls");
- printf("Фильма с указанным названием в фильмотеке нет.\n\n");
- }
- }
- //system("pause");
- return search_lib;
- }
- void output_films_sort_year_of_production(struct film *_lib,int _number_of_the_film)
- {
- if(_number_of_the_film==0)
- {
- system("cls");
- printf("В фильмотеке ещё нету фильмов!\n\n");
- }
- else
- {
- for(int i=_number_of_the_film-1; i>=0; i--)
- {
- for(int j=0; j<i; j++)
- {
- if(_lib[j].year_of_production>_lib[j+1].year_of_production)
- {
- struct film temp=_lib[j];
- _lib[j]=_lib[j+1];
- _lib[j+1]=temp;
- }
- }
- }
- system("cls");
- printf("Список фильмов отсортированных по году создания:\n\n");
- for(int k=0; k<_number_of_the_film; k++)
- {
- printf("Фильм: %s\n",_lib[k].name);
- printf("Режиссер: %s\n",_lib[k].name_director);
- printf("Жанр: %s\n",_lib[k].genre);
- printf("Создание фильма: %d год\n",_lib[k].year_of_production);
- printf("Продолжительность: %d минут(а)\n\n",_lib[k].duration_of_the_film);
- }
- } system("pause");
- }
- void output_films_search_genre(struct film *_lib,int _number_of_the_film)
- {
- char *genre_for_comparison = NULL;
- int i,genre_menu_choice,flag=0;
- fflush(stdin);
- if(_number_of_the_film==0)
- {
- system("cls");
- printf("В фильмотеке ещё нету фильмов!\n\n");
- }
- else
- {
- do
- {
- genre_menu();
- fflush(stdin);
- scanf("%d",&genre_menu_choice);
- }while((genre_menu_choice<1)||(genre_menu_choice>12));
- switch(genre_menu_choice){
- case 1: genre_for_comparison="боевик"; break;
- case 2: genre_for_comparison="военный"; break;
- case 3: genre_for_comparison="документальный"; break;
- case 4: genre_for_comparison="драма"; break;
- case 5: genre_for_comparison="исторический"; break;
- case 6: genre_for_comparison="комедия"; break;
- case 7: genre_for_comparison="мелодрама"; break;
- case 8: genre_for_comparison="мультфильм"; break;
- case 9: genre_for_comparison="приключение"; break;
- case 10: genre_for_comparison="триллер"; break;
- case 11: genre_for_comparison="ужасы"; break;
- case 12: genre_for_comparison="фантастика"; break; }
- system("cls");
- for(i=0;i<_number_of_the_film;i++)
- {
- //cout << genre_for_comparison << endl;
- //cout << _lib[i].genre << endl;
- //system("pause");
- if(strcmp (genre_for_comparison, _lib[i].genre) == 0)//name_for_comparison==(_lib[i].name))
- {
- printf("Фильм: %s\n",_lib[i].name);
- printf("Режиссер: %s\n",_lib[i].name_director);
- printf("Жанр: %s\n",_lib[i].genre);
- printf("Создание фильма: %d год\n",_lib[i].year_of_production);
- printf("Продолжительность: %d минут(а)\n\n",_lib[i].duration_of_the_film);
- }
- else
- flag++;
- }
- if(flag==_number_of_the_film)
- {
- system("cls");
- printf("Фильмов с указанного жанра в фильмотеке нет.\n\n");
- }
- }
- system("pause");
- }
- void output_films_search_director(struct film *_lib,int _number_of_the_film)
- {
- char director_for_comparison[25];
- int i,flag=0;
- fflush(stdin);
- if(_number_of_the_film==0)
- {
- system("cls");
- printf("В фильмотеке ещё нету фильмов!\n\n");
- }
- else
- {
- system("cls");
- printf("Введите имя режиссера для просмотра фильмов снятых под его руководством.\n\n");
- printf("Правила ввода: Имя, фамилия вводятся с большой буквы; использовать\n");
- printf("при вводе русские буквы, знак пробела. Минимальная длина связки\n");
- printf("(ИМЯ+ФАМИЛИЯ) - 1 символ, максимальная - 25 символов.\n\n");
- printf("Имя и Фамилия режиссера: ");
- scanf("%[^\n]",director_for_comparison);
- system("cls");
- for(i=0;i<_number_of_the_film;i++)
- {
- //cout << genre_for_comparison << endl;
- //cout << _lib[i].genre << endl;
- //system("pause");
- if(strcmp (director_for_comparison, _lib[i].name_director)==0)//name_for_comparison==(_lib[i].name))
- {
- printf("Фильм: %s\n",_lib[i].name);
- printf("Режиссер: %s\n",_lib[i].name_director);
- printf("Жанр: %s\n",_lib[i].genre);
- printf("Создание фильма: %d год\n",_lib[i].year_of_production);
- printf("Продолжительность: %d минут(а)\n\n",_lib[i].duration_of_the_film);
- }
- else
- flag++;
- }
- if(flag==_number_of_the_film)
- {
- system("cls");
- printf("Фильмов снятых указанным режиссером в фильмотеке нет.\n\n");
- }
- }
- system("pause");
- }
- void output_films_sort_time_duration(struct film *_lib,int _number_of_the_film)
- {
- if(_number_of_the_film==0)
- {
- system("cls");
- printf("В фильмотеке ещё нету фильмов!\n\n");
- }
- else
- {
- for(int i=_number_of_the_film-1; i>=0; i--)
- {
- for(int j=0; j<i; j++)
- {
- if(_lib[j].duration_of_the_film>_lib[j+1].duration_of_the_film)
- {
- struct film temp=_lib[j];
- _lib[j]=_lib[j+1];
- _lib[j+1]=temp;
- }
- }
- }
- system("cls");
- printf("Список фильмов отсортированных по их продолжительности:\n\n");
- for(int k=0; k<_number_of_the_film; k++)
- {
- printf("Фильм: %s\n",_lib[k].name);
- printf("Режиссер: %s\n",_lib[k].name_director);
- printf("Жанр: %s\n",_lib[k].genre);
- printf("Создание фильма: %d год\n",_lib[k].year_of_production);
- printf("Продолжительность: %d минут(а)\n\n",_lib[k].duration_of_the_film);
- }
- } system("pause");
- }
- void output_all_information(struct film *_lib,int _number_of_the_film)
- {
- int i=0,flag=0;
- fflush(stdin);
- if(_number_of_the_film==0)
- {
- system("cls");
- printf("В фильмотеке ещё нету фильмов!\n\n");
- }
- else
- {
- system("cls");
- printf("Фильмы хранящиеся в данной фильмотеке: \n\n");
- for(i=0;i<_number_of_the_film;i++)
- {
- printf("Фильм: %s\n",_lib[i].name);
- printf("Режиссер: %s\n",_lib[i].name_director);
- printf("Жанр: %s\n",_lib[i].genre);
- printf("Создание фильма: %d год\n",_lib[i].year_of_production);
- printf("Продолжительность: %d минут(а)\n\n",_lib[i].duration_of_the_film);
- //i=_number_of_the_film;
- }
- /*while(_lib[i].name!=NULL)
- {
- printf("Фильм: %s\n",_lib[i].name);
- printf("Режиссер: %s\n",_lib[i].name_director);
- printf("Жанр: %s\n",_lib[i].genre);
- printf("Создание фильма: %d год\n",_lib[i].year_of_production);
- printf("Продолжительность: %d минут(а)\n\n",_lib[i].duration_of_the_film);
- //i=_number_of_the_film;
- i++;
- }*/
- }
- system("pause");
- }
- void main_menu()
- {
- system("cls");
- printf("Добро пожаловать в электронную фильмотеку Ожогина Алексея\n");
- printf("****************************************************************************\n");
- printf("Выберите нужное Вам действие путем ввода с клавиатуры номера команды из меню\n");
- printf("****************************************************************************\n");
- printf("МЕНЮ:\n");
- printf("1 - Добавить новый фильм в фильмотеку\n");
- printf("2 - Посмотреть введенную информацию о фильмах\n");
- printf("3 - Поиск фильмов\n");
- printf("4 - Сортировка фильмов\n");
- printf("0 - Выход! (Завершение работы с программой!)\n\n");
- }
- void search_menu()
- {
- system("cls");
- printf("Электронная фильмотека Ожогина Алексея\n");
- printf("****************************************************************************\n");
- printf("Выберите нужное Вам действие путем ввода с клавиатуры номера команды из меню\n");
- printf("****************************************************************************\n");
- printf("МЕНЮ ПОИСКА:\n");
- printf("1 - Вывод списка фильмов по введенному названию\n");
- printf("2 - Вывод списка фильмов по указанному жанру\n");
- printf("3 - Вывод списка фильмов по указанному режиссеру\n");
- printf("0 - Выход в главное меню!\n\n");
- }
- void sort_menu()
- {
- system("cls");
- printf("Электронная фильмотека Ожогина Алексея\n");
- printf("****************************************************************************\n");
- printf("Выберите нужное Вам действие путем ввода с клавиатуры номера команды из меню\n");
- printf("****************************************************************************\n");
- printf("МЕНЮ СОРТИРОВКИ:\n");
- printf("1 - Вывод списка фильмов, отсортированных по году выпуска\n");
- printf("2 - Вывод списка фильмов, отсортированных по продолжительности\n");
- printf("0 - Выход в главное меню!\n\n");
- }
- void genre_menu()
- {
- system("cls");
- printf("Электронная фильмотека Ожогина Алексея\n");
- printf("****************************************************************************************\n");
- printf("Выберите нужный Вам жанр фильма путем ввода с клавиатуры соответствующего номера из меню\n");
- printf("****************************************************************************************\n");
- printf("Жанры фильмов:\n");
- printf("1 - боевик\n");
- printf("2 - военный\n");
- printf("3 - документальный\n");
- printf("4 - драма\n");
- printf("5 - исторический\n");
- printf("6 - комедия\n");
- printf("7 - мелодрама\n");
- printf("8 - мультфильм\n");
- printf("9 - приключение\n");
- printf("10 - триллер\n");
- printf("11 - ужасы\n");
- printf("12 - фантастика\n\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement