Advertisement
Fructus

Untitled

Apr 1st, 2015
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 11.25 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <conio.h>
  4. using namespace std;
  5.  
  6. typedef struct
  7. {
  8.     char name[81]; // Имя игрока
  9.     char surname[81]; // Фамилия иргока
  10.     char pos[4]; // Позиция игрока
  11.     char league[5]; // Лига, в которой играет игрок
  12. } information;
  13.  
  14. typedef struct player
  15. {
  16.     information info;
  17.     struct player *next;
  18. } list;
  19.  
  20. void vvod(list *p)
  21. {
  22.     int len, input1, input2, input3, input4,g=0;
  23.     char ch;
  24.     bool f, q1, q2, q3;
  25.     q1=0;
  26.     system("cls");
  27.     fflush(stdin);     
  28.     do
  29.     {
  30.         f=0;
  31.         fflush(stdin);
  32.         do
  33.         {
  34.             g = 0;
  35.             char str[27] =  {NULL} ;// 30 - макс для ввода,чтоб была возможность стереть лишнее
  36.             do
  37.             {
  38.                 system("cls");
  39.                 puts("Введите имя игрока");
  40.                 puts("Вы можете использовать только буквы латинского алфавита и символы '.' , '-' , \n'space'");
  41.                 puts("Данное поле не может быть пустым");
  42.                 puts("Максимальное количество символов для данного поля - 25");
  43.                 if (g > 25)
  44.                 { // если превысили кол-во - будет сообщение по ходу написания
  45.                     printf("****************************************");
  46.                     printf("\nОШИБКА! Вы превысили лимит в 25 символов");
  47.                     printf("\n****************************************\n");
  48.                 }
  49.                 printf("-------------------------------------------");
  50.                 printf("\n%s", str);//видимость простого ввода строки-результат не пропадает
  51.                 ch = _getch();// на самом деле посимвольно
  52.        
  53.                 if ((ch == 8) && (g>0))// если backspace - стирается из строки
  54.                 {
  55.                     g--;
  56.                     str[g] = '\0';
  57.                 }
  58.                 else
  59.                 {
  60.                     if (ch != 13)
  61.                     { // если не энтер
  62.                         str[g] = ch;
  63.                         g++;
  64.                         printf("%c", ch);
  65.                     }
  66.                 }
  67.             } while ((ch != 13) && (g < 27));//пока не нажмем энтер или вообще не выйдем за рамки
  68.             if (g > 25)
  69.             {
  70.                 printf("\nВведите имя заново\n");
  71.                 system("pause");
  72.             }
  73.             else
  74.                 strcpy_s(p->info.name, (strlen(str)+1), str);
  75.         } while (g > 25);
  76.         len=strlen(p->info.name);
  77.         for (int i = 0; i < len; i++)
  78.         {
  79.             if (((p->info.name[i] >= 'A' && p->info.name[i] <= 'z') || ((p->info.name[i] == '.' ) && (p->info.name[i+1] != '.' )) || ((p->info.name[i] == '-') && (p->info.name[i+1] != '-')) || ((p->info.name[i] == ' ') && (p->info.name[i+1] != ' '))) && ((p->info.name[0] != '.') && (p->info.name[0] != '-') && (p->info.name[0] != ' ')))
  80.             {
  81.                 f=1;
  82.             }
  83.             else
  84.             {
  85.                 f=0;
  86.                 break;
  87.             }      
  88.         }
  89.         if (f==0)
  90.         {
  91.             printf("\nОШИБКА! Вы нарушили правила ввода\nПожалуйста введите имя игрока заново\n");
  92.             system("pause");
  93.         }
  94.         system("cls");
  95.     } while (f==0);
  96.  
  97.     do
  98.     {
  99.         f=0;   
  100.         fflush(stdin);
  101.         do
  102.         {
  103.             g = 0;
  104.             char str[30] =  {NULL} ;// 30 - макс для ввода,чтоб была возможность стереть лишнее
  105.             do
  106.             {
  107.                 system("cls");
  108.                 puts("Введите фамилию игрока");
  109.                 puts("Вы можете использовать только буквы латинского алфавита и символы '.' , '-' , \n'space'");
  110.                 puts("Данное поле не может быть пустым");
  111.                 puts("Максимальное количество символов для данного поля - 25");
  112.                 if (g > 25)
  113.                 { // если превысили кол-во - будет сообщение по ходу написания
  114.                     printf("****************************************");
  115.                     printf("\nОШИБКА! Вы превысили лимит в 25 символов");
  116.                     printf("\n****************************************");  
  117.                 }
  118.                 printf("----------------------------------------------");
  119.                 printf("\n%s", str);//видимость простого ввода строки-результат не пропадает
  120.                 ch = _getch();// на самом деле посимвольно
  121.        
  122.                 if ((ch == 8) && (g>0))// если backspace - стирается из строки
  123.                 {
  124.                     g--;
  125.                     str[g] = '\0';
  126.                 }
  127.                 else
  128.                 {
  129.                     if (ch != 13)
  130.                     { // если не энтер
  131.                         str[g] = ch;
  132.                         g++;
  133.                         printf("%c", ch);
  134.                     }
  135.                 }
  136.             } while ((ch != 13) && (g < 30));//пока не нажмем энтер или вообще не выйдем за рамки
  137.             if (g > 25)
  138.             {
  139.                 printf("\nВведите фамилию заново\n");
  140.                 system("pause");
  141.             }
  142.             else
  143.                 strcpy_s(p->info.surname, (strlen(str)+1), str);
  144.         } while (g > 25);
  145.         len=strlen(p->info.surname);
  146.         for (int i = 0; i < len; i++)
  147.         {
  148.             if (((p->info.surname[i] >= 'A' && p->info.surname[i] <= 'z') || ((p->info.surname[i] == '.' ) && (p->info.surname[i+1] != '.' )) || ((p->info.surname[i] == '-') && (p->info.surname[i+1] != '-')) || ((p->info.surname[i] == ' ') && (p->info.surname[i+1] != ' '))) && ((p->info.surname[0] != '.') && (p->info.surname[0] != '-') && (p->info.surname[0] != ' ')))
  149.             {
  150.                 f=1;
  151.             }
  152.             else
  153.             {
  154.                 f=0;
  155.                 break;
  156.             }
  157.            
  158.         }
  159.         if (f==0)
  160.         {
  161.             printf("\nОШИБКА! Вы нарушили правила ввода\nПожалуйста введите имя игрока заново\n");
  162.             system("pause");
  163.         }
  164.         system("cls");
  165.     } while (f==0);
  166.  
  167.     q1=0;
  168.     do
  169.     {
  170.         system("cls");
  171.         puts("Введите позицию игрока");
  172.         puts("-----------------------");
  173.         puts("1.Нападающий");
  174.         puts("2.Полузащитник");
  175.         puts("3.Защитник");
  176.         scanf_s("%d", &input2);
  177.         fflush(stdin);
  178.         switch (input2)
  179.         {
  180.         case 1:
  181.             fflush(stdin);
  182.             strcpy_s(p->info.pos, 4 ,"ST");
  183.             q1=1;
  184.             system("cls");
  185.             break;
  186.         case 2:
  187.             q2=0;
  188.             do
  189.             {
  190.                 input3=0;
  191.                 system("cls");
  192.                 fflush(stdin);
  193.                 puts("1.Левый полузащитник");
  194.                 puts("2.Центральный полузащитник");
  195.                 puts("3.Правый полузащитник");
  196.                 scanf_s("%d", &input3);
  197.                 fflush(stdin);
  198.                 switch (input3)
  199.                 {
  200.                 case 1:
  201.                     fflush(stdin);
  202.                     strcpy_s(p->info.pos, 4, "LM");
  203.                     q2=1;
  204.                     break;
  205.                 case 2:
  206.                     fflush(stdin);
  207.                     strcpy_s(p->info.pos, 4, "CM");
  208.                     q2=1;
  209.                     break;
  210.                 case 3:
  211.                     fflush(stdin);
  212.                     strcpy_s(p->info.pos, 4,"RM");
  213.                     q2=1;
  214.                     break;
  215.                 default:
  216.                     system("cls");
  217.                     puts("ОШИБКА! Введите номер 1-3");
  218.                     system("pause");
  219.                     break;
  220.                 }
  221.             } while (q2==0);
  222.             q1=1;
  223.             system("cls");
  224.             break;                                         
  225.         case 3:
  226.             q2=0;
  227.             do
  228.             {
  229.                 input4=0;
  230.                 system("cls");
  231.                 fflush(stdin);
  232.                 puts("1.Левый защитник");
  233.                 puts("2.Центральный защитник");
  234.                 puts("3.Правый защитник");
  235.                 scanf_s("%d", &input4);
  236.                 fflush(stdin);
  237.                 switch (input4)
  238.                 {
  239.                 case 1:
  240.                     strcpy_s(p->info.pos, 4,"LB");
  241.                     q2=1;
  242.                     break;
  243.                 case 2:
  244.                     strcpy_s(p->info.pos, 4, "CB");
  245.                     q2=1;
  246.                     break;
  247.                 case 3:
  248.                     strcpy_s(p->info.pos, 4, "RB");
  249.                     q2=1;
  250.                     break;
  251.                 default:
  252.                     system("cls");
  253.                     puts("ОШИБКА! Введите номер 1-3");
  254.                     system("pause");
  255.                     break;
  256.                 }
  257.             } while(q2==0);
  258.                 q1=1;
  259.                 system("cls");
  260.                 break;
  261.         default:
  262.             system("cls");
  263.             puts("ОШИБКА! Введите номер 1-3");
  264.             system("pause");
  265.             break;
  266.         }
  267.     } while (q1 == 0);             
  268.  
  269.     q3=0;
  270.     do
  271.     {
  272.         input1=0;
  273.         q3=0;
  274.         system("cls");
  275.         puts("Введите лигу в которой играет игрок");
  276.         puts("-------------------------------------");
  277.         puts("1.Barclays PL 'Английская премьер-лига'");
  278.         puts("2.Liga BBVA 'Испанская премьер-лига'");
  279.         scanf_s("%d", &input1);
  280.         fflush(stdin);
  281.         switch (input1)
  282.         {
  283.         case 1:
  284.             strcpy_s(p->info.league, 5, "APL");
  285.             q3=1;
  286.             break;
  287.         case 2:
  288.             strcpy_s(p->info.league, 6, "BBVA");
  289.             q3=1;
  290.             break;
  291.         default:
  292.             system("cls");
  293.             puts("ОШИБКА! Введите номер 1 или 2");
  294.             system("pause");
  295.             break;
  296.         }
  297.         } while(q3==0);
  298. }
  299.  
  300. void add_start(list **h, list **last)
  301. {
  302.     list *p = (list*)malloc(sizeof(list));
  303.     vvod(p);
  304.     if (!*h)
  305.         *last = p;
  306.     p->next = *h;
  307.     *h = p;
  308. }
  309.  
  310. void add_end(list **last)
  311. {
  312.  
  313.         list *p = (list*)malloc(sizeof(list));
  314.         system("cls");
  315.         vvod(p);
  316.         (*last)->next = p;
  317.         p->next = NULL;
  318.         *last = p;
  319. }
  320.  
  321. void show(list *h)
  322. {
  323.     int i=0;
  324.     list *p = h;
  325.     while(p)
  326.     {
  327.         printf("Имя: %s\n", p->info.name);
  328.         printf("Фамилия: %s\n", p->info.surname);
  329.         printf("Позиция: %s\n", p->info.pos);
  330.         printf("Лига: %s\n", p->info.league);
  331.         puts("-------------------");
  332.         i++;   
  333.         if (i % 4 == 0)
  334.         {
  335.             system("pause");
  336.             system("cls");
  337.         }
  338.         p = p -> next;
  339.     }
  340. }
  341.  
  342. void InputSelect(list **h,list **last)
  343. {
  344.  
  345.     int z;
  346.     do
  347.     {
  348.         system("cls");
  349.         printf("1 - Ввод элемента в начало\n");
  350.         printf("2 - Ввод элемента в конец\n");
  351.         printf("3 - Вернуться в главное меню\n");
  352.         scanf_s("%d",&z);
  353.         switch(z)
  354.         {
  355.         case 1:
  356.             add_start(h,last);
  357.             break;
  358.         case 2:
  359.             add_end(last);
  360.             break;
  361.         case 3:
  362.             break;
  363.         default:
  364.             printf("Ошибка в выборе пункта меню!\n");
  365.             break;
  366.         }
  367.     } while(z != 3);
  368. }
  369.  
  370. void searchz(list *h, list **h2, list **last2)
  371. {
  372.     list *p = h;
  373.     system("cls");
  374.     while(p)
  375.     {
  376.         if (strcmp(p->info.pos,"RB")==0 || strcmp(p->info.pos,"CB")==0 || strcmp(p->info.pos,"LB")==0)
  377.         if (h2==NULL)
  378.         {
  379.            
  380.         }
  381.         else
  382.         {
  383.            
  384.         }
  385.         p = p -> next;
  386.     }
  387.     system("pause");
  388.     system("cls");
  389.  
  390. }
  391.  
  392. int main()
  393. {
  394.     setlocale(LC_ALL, "Russian");
  395.     list *last, *h = NULL;
  396.     int input, q;
  397.     do
  398.     {
  399.         q=0;
  400.         input=0;
  401.         system("cls");
  402.         puts("*********Добро пожаловать в базу данных игроков Fifa 15 Ultimate Team***********");
  403.         printf("В данной программе Вы можете ввести данные игроков вашей команды, а затем найти \nих по выбранным Вами параметрам");
  404.         puts("\n\n********************************************************************************");
  405.         puts("1.Ввод данных игрока");
  406.         puts("2.Показать введенные данные об игроках");
  407.         puts("3.Поиск игроков");
  408.         puts("4.Выход");
  409.        
  410.         scanf_s("%d", &input);
  411.         fflush(stdin);
  412.         switch (input)
  413.         {
  414.         case 1:
  415.             if (h == NULL)
  416.                 add_start(&h, &last);
  417.             else
  418.                 InputSelect(&h, &last);    
  419.             break;
  420.         case 2:
  421.             system("cls");
  422.             if(h != NULL)
  423.             {
  424.                 show(h);
  425.                 system("pause");
  426.             }
  427.             else
  428.             {
  429.                 puts("ОШИБКА! Введите данные игроков в пункте 1");
  430.                 system("pause");
  431.             }
  432.             break;
  433.         case 3:
  434.             if (h != NULL )
  435.             searchz();
  436.             show();
  437.             system("pause");
  438.             break;
  439.         case 4:
  440.             q=1;
  441.             system("cls");
  442.         default:
  443.             printf("er");
  444.             break;
  445.         }
  446.     } while (q==0);
  447.     return 0;
  448. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement