Advertisement
Guest User

Untitled

a guest
Mar 27th, 2015
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 22.72 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <windows.h>
  3. #include <iostream>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <stdio.h>
  7. using namespace std;
  8. struct film
  9.            {
  10.               char name[50];                                      //Название фильма
  11.               char name_director[25];                         //ФИО режиссера
  12.               char *genre;                                    //жанр фильма
  13.               int  duration_of_the_film;                      //продолжительность фильма
  14.               int  year_of_production;                        //год производства
  15.  
  16.            } *lib=NULL,*tmp_lib=NULL;
  17. struct film *add_new_film(struct film*,int);
  18. struct film *output_films_search_film(struct film*, struct film*,int,int&);
  19. void output_films_sort_year_of_production(struct film *,int);
  20. void output_films_search_genre(struct film *,int);
  21. void output_films_search_director(struct film *,int);
  22. void output_films_sort_time_duration(struct film *,int);
  23. void output_all_information(struct film *,int);
  24. void main_menu();
  25. void sort_menu();
  26. void search_menu();
  27. void genre_menu();
  28. int main()
  29. {
  30.    int contin,number_of_the_film=0,tmp_number_of_the_film=0, main_menu_choice, search_menu_choice, sort_menu_choice;
  31.    SetConsoleCP(1251);
  32.    SetConsoleOutputCP(1251);
  33.    //setlocale(LC_ALL, "Russian");
  34.       do
  35.       {
  36.          do
  37.          {
  38.             main_menu();
  39.             fflush(stdin);
  40.             scanf("%d",&main_menu_choice);
  41.          } while((main_menu_choice<0)||(main_menu_choice>4));
  42.  
  43.          switch(main_menu_choice){
  44.          case 1: lib=add_new_film(lib,number_of_the_film); number_of_the_film++; break;
  45.          case 2: output_all_information(lib,number_of_the_film); break;
  46.          case 3:
  47.             do
  48.             {
  49.                 if (tmp_lib != NULL)
  50.                 {
  51.                     free (tmp_lib);
  52.                     tmp_lib = NULL;
  53.                     tmp_number_of_the_film = 0;
  54.                 }
  55.                do
  56.                {
  57.                   search_menu();
  58.                   fflush(stdin);
  59.                   scanf("%d",&search_menu_choice);
  60.                }while((search_menu_choice<0)||(search_menu_choice>3));
  61.  
  62.                switch(search_menu_choice){
  63.                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;
  64.                case 2: output_films_search_genre(lib,number_of_the_film); break;
  65.                case 3: output_films_search_director(lib,number_of_the_film); break;
  66.                }
  67.             }while(search_menu_choice!=0);break;
  68.          case 4:
  69.             do
  70.             {
  71.                do
  72.                {
  73.                   sort_menu();
  74.                   fflush(stdin);
  75.                   scanf("%d",&sort_menu_choice);
  76.                }while((sort_menu_choice<0)||(sort_menu_choice>6));
  77.  
  78.                switch(sort_menu_choice){
  79.                case 1: output_films_sort_year_of_production(lib,number_of_the_film); break;   //функция add_new_film
  80.                case 2: output_films_sort_time_duration(lib,number_of_the_film); break;
  81.                case 0:   ;}
  82.             }while(sort_menu_choice!=0);break;
  83.          case 0:  ;}
  84.       }while(main_menu_choice!=0);
  85.       free (lib);
  86.       return 0;
  87. }
  88.  
  89. struct film *add_new_film(struct film*_lib,int _number_of_the_film)
  90. {
  91.         int genre_menu_choice;
  92.         _lib=(film*)realloc(_lib,(_number_of_the_film+1)*sizeof(film));
  93.         do
  94.         {
  95.         system("cls");
  96.         fflush(stdin);
  97.         printf("Введите название фильма.\n\n");
  98.         printf("Правила ввода: Название фильма вводится с большой буквы; использовать\n");
  99.         printf("при  вводе русские  буквы, цифры,  знаки пунктуации  и пробелы. Мини-\n");
  100.         printf("мальная длина названия фильма 1 символ, максимальная - 50 символов.\n\n");
  101.         printf("Ваш фильм: ");
  102.         scanf("%[^\n]",_lib[_number_of_the_film].name);
  103.         }while((strlen(_lib[_number_of_the_film].name)>50));
  104.         do
  105.         {
  106.         system("cls");
  107.         fflush(stdin);
  108.         printf("Введите Имя и Фамилию режиссера.\n\n");
  109.         printf("Правила ввода: Имя, фамилия вводятся с большой буквы; использовать\n");
  110.         printf("при  вводе русские  буквы, знак пробела. Минимальная длина связки\n");
  111.         printf("(ИМЯ+ФАМИЛИЯ) - 1 символ, максимальная - 25 символов.\n\n");
  112.         printf("Имя и Фамилия режиссера: ");
  113.         scanf("%[^\n]",_lib[_number_of_the_film].name_director);
  114.         }while(strlen(_lib[_number_of_the_film].name_director) > 25);
  115.  
  116.                do
  117.                {
  118.                   genre_menu();
  119.                   fflush(stdin);
  120.                   scanf("%d",&genre_menu_choice);
  121.                }while((genre_menu_choice<1)||(genre_menu_choice>12));
  122.  
  123.                switch(genre_menu_choice){
  124.                case 1: _lib[_number_of_the_film].genre="боевик"; break;
  125.                case 2: _lib[_number_of_the_film].genre="военный"; break;
  126.                case 3: _lib[_number_of_the_film].genre="документальный"; break;
  127.                case 4: _lib[_number_of_the_film].genre="драма"; break;
  128.                case 5: _lib[_number_of_the_film].genre="исторический"; break;
  129.                case 6: _lib[_number_of_the_film].genre="комедия"; break;
  130.                case 7: _lib[_number_of_the_film].genre="мелодрама"; break;
  131.                case 8: _lib[_number_of_the_film].genre="мультфильм"; break;
  132.                case 9: _lib[_number_of_the_film].genre="приключение"; break;
  133.                case 10: _lib[_number_of_the_film].genre="триллер"; break;
  134.                case 11: _lib[_number_of_the_film].genre="ужасы"; break;
  135.                case 12: _lib[_number_of_the_film].genre="фантастика"; break; }
  136.  
  137.         /*do
  138.         {
  139.         system("cls");
  140.         fflush(stdin);
  141.         printf("Выберите  жанр  фильма  из списка приведенного  ниже, и осуществите его ввод с клавиатуры!\n\n");
  142.         printf("-------------------------------------------------------------------------------------------\n");
  143.         printf("| боевик | военный | детектив | документальный | драма | исторический | комедия | научный |\n");
  144.         printf("-------------------------------------------------------------------------------------------\n");
  145.         printf("| мелодрама |  мультфильм |  мюзикл  | приключение | спорт | триллер | ужасы | фантастика |\n");
  146.         printf("-------------------------------------------------------------------------------------------\n\n");
  147.         printf("Жанр фильма: ");
  148.         scanf("%s",_lib[_number_of_the_film].genre);
  149.         }while(strlen(_lib[_number_of_the_film].genre) > 15);*/
  150.         do
  151.         {
  152.            system("cls");
  153.            printf("Введите продолжительность фильма в минутах.\n\n");
  154.            printf("Правила ввода: необходимо ввести целое число больше 0, но меньше 600.\n\n");
  155.            printf("Продолжительность фильма: ");
  156.            scanf("%d",&_lib[_number_of_the_film].duration_of_the_film);
  157.         }while(_lib[_number_of_the_film].duration_of_the_film>600);
  158.         do
  159.         {
  160.            system("cls");
  161.            printf("Введите год производства фильма.\n\n");
  162.            printf("Правила ввода: необходимо ввести целое число, которое больше 1895, но меньше 2016.\n\n");
  163.            printf("Год создания фильма: ");
  164.            scanf("%d",&_lib[_number_of_the_film].year_of_production);
  165.         }while((_lib[_number_of_the_film].year_of_production<1895)||(_lib[_number_of_the_film].year_of_production>2015));
  166.  
  167.         system("cls");
  168.         printf("Спасибо! Ваш фильм сохранен программой!\n\n");
  169.        /* printf("Фильм: %s\n",_lib[_number_of_the_film].name);
  170.         printf("Режиссер: %s\n",_lib[_number_of_the_film].name_director);
  171.         printf("Жанр: %s\n",_lib[_number_of_the_film].genre);
  172.         printf("Создание фильма: %d год\n",_lib[_number_of_the_film].year_of_production);
  173.         printf("Продолжительность: %d минут(а)\n\n",_lib[_number_of_the_film].duration_of_the_film);*/
  174.         system("pause");
  175.         return _lib;
  176. }
  177. struct film * output_films_search_film(struct film *_lib,struct film *search_lib,int _number_of_the_film,int &search_number_of_the_film)
  178. {
  179.    char name_for_comparison[50];
  180.    int i,flag=0;
  181.    fflush(stdin);
  182.    if(_number_of_the_film==0)
  183.    {
  184.       system("cls");
  185.       printf("В фильмотеке ещё нету фильмов!\n\n");
  186.    }
  187.    else
  188.    {
  189.       system("cls");
  190.       printf("Введите название фильма для просмотра информации о нём.\n\n");
  191.       printf("Правила ввода: Название фильма вводится с большой буквы; использовать\n");
  192.       printf("при  вводе русские  буквы, цифры,  знаки пунктуации  и пробелы. Мини-\n");
  193.       printf("мальная длина названия фильма 1 символ, максимальная - 50 символов.\n\n");
  194.       printf("Название фильма: ");
  195.       scanf("%[^\n]",name_for_comparison);
  196.       system("cls");
  197.       for(i=0;i<_number_of_the_film;i++)
  198.       {
  199.          /*cout << name_for_comparison << endl;
  200.          cout << _lib[i].name << endl;
  201.          system("pause");*/
  202.  
  203.          if(strcmp (name_for_comparison, _lib[i].name)==0)   //name_for_comparison==(_lib[i].name))
  204.          {  
  205.             search_lib=(film*)realloc(search_lib,(search_number_of_the_film+1)*sizeof(film));
  206.             strcpy (search_lib[search_number_of_the_film].name, _lib[i].name);
  207.             strcpy (search_lib[search_number_of_the_film].name_director, _lib[i].name_director);
  208.             search_lib[search_number_of_the_film].genre= _lib[i].genre;
  209.             search_lib[search_number_of_the_film].year_of_production=_lib[i].year_of_production;
  210.             search_lib[search_number_of_the_film].duration_of_the_film=_lib[i].duration_of_the_film;
  211.             search_number_of_the_film++;
  212.             /*printf("Фильм: %s\n",_lib[i].name);
  213.             printf("Режиссер: %s\n",_lib[i].name_director);
  214.             printf("Жанр: %s\n",_lib[i].genre);
  215.             printf("Создание фильма: %d год\n",_lib[i].year_of_production);
  216.             printf("Продолжительность: %d минут(а)\n\n",_lib[i].duration_of_the_film);*/
  217.          }
  218.          else
  219.             flag++;
  220.       }
  221.  
  222.       //search_lib=(film*)realloc(_lib,(search_number_of_the_film+1)*sizeof(film));
  223.       //search_lib[search_number_of_the_film].f_name=NULL;
  224.       if(flag==_number_of_the_film)
  225.       {
  226.          system("cls");
  227.          printf("Фильма с указанным названием в фильмотеке нет.\n\n");
  228.       }
  229.    }
  230.         //system("pause");
  231.    return search_lib;
  232. }
  233. void output_films_sort_year_of_production(struct film *_lib,int _number_of_the_film)
  234. {
  235.     if(_number_of_the_film==0)
  236.    {
  237.       system("cls");
  238.       printf("В фильмотеке ещё нету фильмов!\n\n");
  239.    }
  240.    else
  241.    {
  242.        for(int i=_number_of_the_film-1; i>=0; i--)
  243.        {
  244.            for(int j=0; j<i; j++)
  245.            {
  246.                if(_lib[j].year_of_production>_lib[j+1].year_of_production)
  247.                {
  248.                    struct film temp=_lib[j];
  249.                    _lib[j]=_lib[j+1];
  250.                    _lib[j+1]=temp;
  251.                }
  252.            }
  253.        }
  254.        system("cls");
  255.        printf("Список фильмов отсортированных по году создания:\n\n");
  256.        for(int k=0; k<_number_of_the_film; k++)
  257.        {
  258.           printf("Фильм: %s\n",_lib[k].name);
  259.           printf("Режиссер: %s\n",_lib[k].name_director);
  260.           printf("Жанр: %s\n",_lib[k].genre);
  261.           printf("Создание фильма: %d год\n",_lib[k].year_of_production);
  262.           printf("Продолжительность: %d минут(а)\n\n",_lib[k].duration_of_the_film);
  263.        }
  264.    } system("pause");
  265. }
  266. void output_films_search_genre(struct film *_lib,int _number_of_the_film)
  267. {
  268.    char *genre_for_comparison = NULL;
  269.    int i,genre_menu_choice,flag=0;
  270.    fflush(stdin);
  271.    if(_number_of_the_film==0)
  272.    {
  273.       system("cls");
  274.       printf("В фильмотеке ещё нету фильмов!\n\n");
  275.    }
  276.    else
  277.    {
  278.       do
  279.                {
  280.                   genre_menu();
  281.                   fflush(stdin);
  282.                   scanf("%d",&genre_menu_choice);
  283.                }while((genre_menu_choice<1)||(genre_menu_choice>12));
  284.  
  285.                switch(genre_menu_choice){
  286.                case 1: genre_for_comparison="боевик"; break;
  287.                case 2: genre_for_comparison="военный"; break;
  288.                case 3: genre_for_comparison="документальный"; break;
  289.                case 4: genre_for_comparison="драма"; break;
  290.                case 5: genre_for_comparison="исторический"; break;
  291.                case 6: genre_for_comparison="комедия"; break;
  292.                case 7: genre_for_comparison="мелодрама"; break;
  293.                case 8: genre_for_comparison="мультфильм"; break;
  294.                case 9: genre_for_comparison="приключение"; break;
  295.                case 10: genre_for_comparison="триллер"; break;
  296.                case 11: genre_for_comparison="ужасы"; break;
  297.                case 12: genre_for_comparison="фантастика"; break; }
  298.                system("cls");
  299.  
  300.       for(i=0;i<_number_of_the_film;i++)
  301.       {
  302.          //cout << genre_for_comparison << endl;
  303.          //cout << _lib[i].genre << endl;
  304.          //system("pause");
  305.  
  306.          if(strcmp (genre_for_comparison, _lib[i].genre) == 0)//name_for_comparison==(_lib[i].name))
  307.          {
  308.             printf("Фильм: %s\n",_lib[i].name);
  309.             printf("Режиссер: %s\n",_lib[i].name_director);
  310.             printf("Жанр: %s\n",_lib[i].genre);
  311.             printf("Создание фильма: %d год\n",_lib[i].year_of_production);
  312.             printf("Продолжительность: %d минут(а)\n\n",_lib[i].duration_of_the_film);
  313.          }
  314.          else
  315.             flag++;
  316.       }
  317.       if(flag==_number_of_the_film)
  318.       {
  319.          system("cls");
  320.          printf("Фильмов с указанного жанра в фильмотеке нет.\n\n");
  321.       }
  322.    }
  323.         system("pause");
  324. }
  325. void output_films_search_director(struct film *_lib,int _number_of_the_film)
  326. {
  327.    char director_for_comparison[25];
  328.    int i,flag=0;
  329.    fflush(stdin);
  330.    if(_number_of_the_film==0)
  331.    {
  332.       system("cls");
  333.       printf("В фильмотеке ещё нету фильмов!\n\n");
  334.    }
  335.    else
  336.    {
  337.       system("cls");
  338.       printf("Введите имя режиссера для просмотра фильмов снятых под его руководством.\n\n");
  339.       printf("Правила ввода: Имя, фамилия вводятся с большой буквы; использовать\n");
  340.       printf("при  вводе русские  буквы, знак пробела. Минимальная длина связки\n");
  341.       printf("(ИМЯ+ФАМИЛИЯ) - 1 символ, максимальная - 25 символов.\n\n");
  342.       printf("Имя и Фамилия режиссера: ");
  343.       scanf("%[^\n]",director_for_comparison);
  344.       system("cls");
  345.  
  346.       for(i=0;i<_number_of_the_film;i++)
  347.       {
  348.          //cout << genre_for_comparison << endl;
  349.          //cout << _lib[i].genre << endl;
  350.          //system("pause");
  351.  
  352.          if(strcmp (director_for_comparison, _lib[i].name_director)==0)//name_for_comparison==(_lib[i].name))
  353.          {
  354.             printf("Фильм: %s\n",_lib[i].name);
  355.             printf("Режиссер: %s\n",_lib[i].name_director);
  356.             printf("Жанр: %s\n",_lib[i].genre);
  357.             printf("Создание фильма: %d год\n",_lib[i].year_of_production);
  358.             printf("Продолжительность: %d минут(а)\n\n",_lib[i].duration_of_the_film);
  359.          }
  360.          else
  361.             flag++;
  362.       }
  363.       if(flag==_number_of_the_film)
  364.       {
  365.          system("cls");
  366.          printf("Фильмов снятых указанным режиссером в фильмотеке нет.\n\n");
  367.       }
  368.    }
  369.         system("pause");
  370. }
  371. void output_films_sort_time_duration(struct film *_lib,int _number_of_the_film)
  372. {
  373.    if(_number_of_the_film==0)
  374.    {
  375.       system("cls");
  376.       printf("В фильмотеке ещё нету фильмов!\n\n");
  377.    }
  378.    else
  379.    {
  380.        for(int i=_number_of_the_film-1; i>=0; i--)
  381.        {
  382.            for(int j=0; j<i; j++)
  383.            {
  384.                if(_lib[j].duration_of_the_film>_lib[j+1].duration_of_the_film)
  385.                {
  386.                    struct film temp=_lib[j];
  387.                    _lib[j]=_lib[j+1];
  388.                    _lib[j+1]=temp;
  389.                }
  390.            }
  391.        }
  392.        system("cls");
  393.        printf("Список фильмов отсортированных по их продолжительности:\n\n");
  394.        for(int k=0; k<_number_of_the_film; k++)
  395.        {
  396.           printf("Фильм: %s\n",_lib[k].name);
  397.           printf("Режиссер: %s\n",_lib[k].name_director);
  398.           printf("Жанр: %s\n",_lib[k].genre);
  399.           printf("Создание фильма: %d год\n",_lib[k].year_of_production);
  400.           printf("Продолжительность: %d минут(а)\n\n",_lib[k].duration_of_the_film);
  401.        }
  402.    } system("pause");
  403. }
  404. void output_all_information(struct film *_lib,int _number_of_the_film)
  405. {
  406.    int i=0,flag=0;
  407.    fflush(stdin);
  408.    if(_number_of_the_film==0)
  409.    {
  410.       system("cls");
  411.       printf("В фильмотеке ещё нету фильмов!\n\n");
  412.    }
  413.    else
  414.    {
  415.       system("cls");
  416.       printf("Фильмы хранящиеся в данной фильмотеке: \n\n");
  417.       for(i=0;i<_number_of_the_film;i++)
  418.       {        
  419.             printf("Фильм: %s\n",_lib[i].name);
  420.             printf("Режиссер: %s\n",_lib[i].name_director);
  421.             printf("Жанр: %s\n",_lib[i].genre);
  422.             printf("Создание фильма: %d год\n",_lib[i].year_of_production);
  423.             printf("Продолжительность: %d минут(а)\n\n",_lib[i].duration_of_the_film);
  424.             //i=_number_of_the_film;        
  425.       }
  426.  
  427.       /*while(_lib[i].name!=NULL)
  428.       {        
  429.             printf("Фильм: %s\n",_lib[i].name);
  430.             printf("Режиссер: %s\n",_lib[i].name_director);
  431.             printf("Жанр: %s\n",_lib[i].genre);
  432.             printf("Создание фильма: %d год\n",_lib[i].year_of_production);
  433.             printf("Продолжительность: %d минут(а)\n\n",_lib[i].duration_of_the_film);
  434.             //i=_number_of_the_film;
  435.             i++;        
  436.       }*/
  437.      
  438.    }
  439.         system("pause");
  440. }
  441. void main_menu()
  442. {
  443.    system("cls");
  444.    printf("Добро пожаловать в электронную фильмотеку Ожогина Алексея\n");
  445.    printf("****************************************************************************\n");
  446.    printf("Выберите нужное Вам действие путем ввода с клавиатуры номера команды из меню\n");
  447.    printf("****************************************************************************\n");
  448.    printf("МЕНЮ:\n");
  449.    printf("1 - Добавить новый фильм в фильмотеку\n");
  450.    printf("2 - Посмотреть введенную информацию о фильмах\n");
  451.    printf("3 - Поиск фильмов\n");
  452.    printf("4 - Сортировка фильмов\n");
  453.    printf("0 - Выход! (Завершение работы с программой!)\n\n");
  454.  
  455. }
  456. void search_menu()
  457. {
  458.    system("cls");
  459.    printf("Электронная фильмотека Ожогина Алексея\n");
  460.    printf("****************************************************************************\n");
  461.    printf("Выберите нужное Вам действие путем ввода с клавиатуры номера команды из меню\n");
  462.    printf("****************************************************************************\n");
  463.    printf("МЕНЮ ПОИСКА:\n");
  464.    printf("1 - Вывод списка фильмов по введенному названию\n");
  465.    printf("2 - Вывод списка фильмов по указанному жанру\n");
  466.    printf("3 - Вывод списка фильмов по указанному режиссеру\n");
  467.    printf("0 - Выход в главное меню!\n\n");
  468. }
  469. void sort_menu()
  470. {
  471.    system("cls");
  472.    printf("Электронная фильмотека Ожогина Алексея\n");
  473.    printf("****************************************************************************\n");
  474.    printf("Выберите нужное Вам действие путем ввода с клавиатуры номера команды из меню\n");
  475.    printf("****************************************************************************\n");
  476.    printf("МЕНЮ СОРТИРОВКИ:\n");
  477.    printf("1 - Вывод списка фильмов, отсортированных по году выпуска\n");
  478.    printf("2 - Вывод списка фильмов, отсортированных по продолжительности\n");
  479.    printf("0 - Выход в главное меню!\n\n");
  480. }
  481. void genre_menu()
  482. {
  483.    system("cls");
  484.    printf("Электронная фильмотека Ожогина Алексея\n");
  485.    printf("****************************************************************************************\n");
  486.    printf("Выберите нужный Вам жанр фильма путем ввода с клавиатуры соответствующего номера из меню\n");
  487.    printf("****************************************************************************************\n");
  488.    printf("Жанры фильмов:\n");
  489.    printf("1  - боевик\n");
  490.    printf("2  - военный\n");
  491.    printf("3  - документальный\n");
  492.    printf("4  - драма\n");
  493.    printf("5  - исторический\n");
  494.    printf("6  - комедия\n");
  495.    printf("7  - мелодрама\n");
  496.    printf("8  - мультфильм\n");
  497.    printf("9  - приключение\n");
  498.    printf("10 - триллер\n");
  499.    printf("11 - ужасы\n");
  500.    printf("12 - фантастика\n\n");
  501. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement