Advertisement
Guest User

Untitled

a guest
May 27th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 45.96 KB | None | 0 0
  1. #pragma once
  2.  
  3. void read_bio(){
  4.     int i,j;
  5.     biofile=fopen("bio", "rb");
  6.     fread(&razmer_bio,sizeof(int),1,biofile);
  7.     fread(&bio_id_kol,sizeof(int),1,biofile);
  8.     for (i=0;i<razmer_bio;i++){
  9.         fread(&bio[i],sizeof(struct shablon_bio),1,biofile);
  10.     }
  11.     fclose(biofile);
  12.     for (i=0;i<razmer_bio;i++){
  13.         bio[i].bio_id-=kodirovka;
  14.         for (j=0;j<size;j++){
  15.             bio[i].familiya[j]-=kodirovka;
  16.             bio[i].imya[j]-=kodirovka;
  17.             bio[i].otchestvo[j]-=kodirovka;
  18.             bio[i].nomer_telefona[j]-=kodirovka;
  19.         }
  20.     }
  21. }
  22. void read_tarif(){
  23.     int i,j;
  24.     tariffile=fopen("tarif", "rb");
  25.     fread(&razmer_tarif,sizeof(int),1,tariffile);
  26.     fread(&tarif_id_kol,sizeof(int),1,tariffile);
  27.     for (i=0;i<razmer_tarif;i++){
  28.         fread(&tarif[i],sizeof(struct shablon_tarif),1,tariffile);
  29.     }
  30.     fclose(tariffile);
  31.     for (i=0;i<razmer_tarif;i++){
  32.         tarif[i].tarif_id-=kodirovka;
  33.         tarif[i].minut-=kodirovka;
  34.         tarif[i].megabyte-=kodirovka;
  35.         tarif[i].sms-=kodirovka;
  36.         tarif[i].plata-=kodirovka;
  37.         for (j=0;j<size;j++){
  38.             tarif[i].name[j]-=kodirovka;
  39.         }
  40.     }
  41. }
  42. void read_abonent(){
  43.     int i,j;
  44.     abonentfile=fopen("abonent", "rb");
  45.     fread(&razmer_abonent,sizeof(int),1,abonentfile);
  46.     for (i=0;i<razmer_abonent;i++){
  47.         fread(&abonent[i],sizeof(struct shablon_abonent),1,abonentfile);
  48.     }
  49.     fclose(abonentfile);
  50.     for (i=0;i<razmer_abonent;i++){
  51.         abonent[i].balans-=kodirovka;
  52.         abonent[i].bio_id-=kodirovka;
  53.         abonent[i].tarif_id-=kodirovka;
  54.         for (j=0;j<size;j++){
  55.             abonent[i].data.data_podkl[j]-=kodirovka;
  56.         }
  57.     }
  58. }
  59. void write_abonent(){
  60.     int i,j;
  61.     for (i=0;i<razmer_abonent;i++){
  62.         abonent[i].balans+=kodirovka;
  63.         abonent[i].bio_id+=kodirovka;
  64.         abonent[i].tarif_id+=kodirovka;
  65.         for (j=0;j<size;j++){
  66.             abonent[i].data.data_podkl[j]+=kodirovka;
  67.         }
  68.     }
  69.     abonentfile=fopen("abonent", "w+b");
  70.     fwrite(&razmer_abonent,sizeof(int),1,abonentfile);
  71.     for (i=0;i<razmer_abonent;i++){
  72.         fwrite(&abonent[i],sizeof(struct shablon_abonent),1,abonentfile);
  73.     }
  74.     fclose(abonentfile);
  75.     for (i=0;i<razmer_abonent;i++){
  76.         abonent[i].balans-=kodirovka;
  77.         abonent[i].bio_id-=kodirovka;
  78.         abonent[i].tarif_id-=kodirovka;
  79.         for (j=0;j<size;j++){
  80.             abonent[i].data.data_podkl[j]-=kodirovka;
  81.         }
  82.     }
  83. }
  84. void write_bio(){
  85.     int i,j;
  86.     for (i=0;i<razmer_bio;i++){
  87.         bio[i].bio_id+=kodirovka;
  88.         for (j=0;j<size;j++){
  89.             bio[i].familiya[j]+=kodirovka;
  90.             bio[i].imya[j]+=kodirovka;
  91.             bio[i].otchestvo[j]+=kodirovka;
  92.             bio[i].nomer_telefona[j]+=kodirovka;
  93.         }
  94.     }
  95.     biofile=fopen("bio", "w+b");
  96.     fwrite(&razmer_bio,sizeof(int),1,biofile);
  97.     fwrite(&bio_id_kol,sizeof(int),1,biofile);
  98.     for (i=0;i<razmer_bio;i++){
  99.         fwrite(&bio[i],sizeof(struct shablon_bio),1,biofile);
  100.     }
  101.     fclose(biofile);
  102.     for (i=0;i<razmer_bio;i++){
  103.         bio[i].bio_id-=kodirovka;
  104.         for (j=0;j<size;j++){
  105.             bio[i].familiya[j]-=kodirovka;
  106.             bio[i].imya[j]-=kodirovka;
  107.             bio[i].otchestvo[j]-=kodirovka;
  108.             bio[i].nomer_telefona[j]-=kodirovka;
  109.         }
  110.     }
  111. }
  112. void write_tarif(){
  113.     int i,j;
  114.     for (i=0;i<razmer_tarif;i++){
  115.         tarif[i].tarif_id+=kodirovka;
  116.         tarif[i].minut+=kodirovka;
  117.         tarif[i].megabyte+=kodirovka;
  118.         tarif[i].sms+=kodirovka;
  119.         tarif[i].plata+=kodirovka;
  120.         for (j=0;j<size;j++){
  121.             tarif[i].name[j]+=kodirovka;
  122.         }
  123.     }
  124.     tariffile=fopen("tarif", "w+b");
  125.     fwrite(&razmer_tarif,sizeof(int),1,tariffile);
  126.     fwrite(&tarif_id_kol,sizeof(int),1,tariffile);
  127.     for (i=0;i<razmer_tarif;i++){
  128.         fwrite(&tarif[i],sizeof(struct shablon_tarif),1,tariffile);
  129.     }
  130.     fclose(tariffile);
  131.     for (i=0;i<razmer_tarif;i++){
  132.         tarif[i].tarif_id-=kodirovka;
  133.         tarif[i].minut-=kodirovka;
  134.         tarif[i].megabyte-=kodirovka;
  135.         tarif[i].sms-=kodirovka;
  136.         tarif[i].plata-=kodirovka;
  137.         for (j=0;j<size;j++){
  138.             tarif[i].name[j]-=kodirovka;
  139.         }
  140.     }
  141. }
  142. void add_bio();
  143. void delete_bio();
  144. void change_bio();
  145. void search_bio();
  146. void print_bio();
  147. //проверка на дату
  148. //проверка мобилы
  149. void add_tarif();
  150. void delete_tarif();
  151. void change_tarif();
  152. void search_tarif();
  153. void print_tarif();
  154. //
  155. void add_abonent();
  156. void delete_abonent();
  157. void change_abonent();
  158. void search_abonent();
  159. void print_abonent();
  160. void ind_zadanie(void);
  161. //
  162. void menu_abonent(){
  163.     int flag1=1;
  164.     char x;
  165.     while (flag1){
  166.         cls;
  167.         printf("Меню абонентов\n1)Добавить\n2)Удалить\n3)Изменить\n4)Искать\n5)Вывод\n6)Выход\n");
  168.         x=getch();
  169.         switch (x){
  170.             case '1':
  171.                 add_abonent();
  172.                 break;
  173.             case '2':
  174.                 delete_abonent();
  175.                 break;
  176.             case '3':
  177.                 change_abonent();
  178.                 break;
  179.             case '4':
  180.                 search_abonent();
  181.                 break;
  182.             case '5':
  183.                 print_abonent();
  184.                 break;
  185.             case '6':
  186.                 flag1=0;
  187.                 break;
  188.             default:
  189.                 break;
  190.         }
  191.     }
  192. }
  193. void add_abonent(){
  194.     print_bio();
  195.     char name[size],fam[size],tarifname[size];
  196.     char str[size];
  197.     struct shablon_abonent tmp;
  198.     int i,j;
  199.     printf("Введите фамилию и имя: ");
  200.     tmp.bio_id=-1;
  201.     scanf("%s %s", &fam, &name);
  202.     for (i=0;i<razmer_bio;i++){
  203.         if (strcmp(fam,bio[i].familiya)==0 && strcmp(name,bio[i].imya)==0){
  204.             tmp.bio_id=bio[i].bio_id;
  205.             break;
  206.         }
  207.     }
  208.     if (tmp.bio_id==-1){
  209.         printf("Неверные данные\n");
  210.         pause;
  211.         return;
  212.     }
  213.     print_tarif();
  214.     printf("Введите название тарифа: ");
  215.     tmp.tarif_id=-1;
  216.     scanf("%s", &tarifname);
  217.     for (i=0;i<razmer_tarif;i++){
  218.         if (strcmp(tarif[i].name,tarifname)==0){
  219.             tmp.tarif_id=tarif[i].tarif_id;
  220.             break;
  221.         }
  222.     }
  223.     if (tmp.tarif_id==-1){
  224.         printf("Неверные данные\n");
  225.         pause;
  226.         return;
  227.     }
  228.     printf("Введите баланс: ");
  229.    double floattmp;
  230.     fflush(stdin);
  231.     if (scanf("%lf", &floattmp)!=1){
  232.         printf("Ошибка\n");
  233.         fflush(stdin);
  234.         pause;
  235.         return;
  236.     }
  237.     tmp.balans=floattmp;
  238.     printf("Введите дату подключения: ");
  239.     scanf("%s", &tmp.data.data_podkl);
  240.     if (tmp.data.data_podkl[2]!='.' || tmp.data.data_podkl[5]!='.' || strlen(tmp.data.data_podkl)!=10){
  241.         printf("Неверный формат\n");
  242.         pause;
  243.         return;
  244.     }
  245.     if (tmp.data.data_podkl[3]=='0' && tmp.data.data_podkl[4]=='2' && tmp.data.data_podkl[0]>'2'){
  246.         printf("Неверная дата\n");
  247.         pause;
  248.         return;
  249.     }
  250.     else if (tmp.data.data_podkl[0]>'3' || (tmp.data.data_podkl[0]=='3' && tmp.data.data_podkl[1]>'1')){
  251.         printf("Неверная дата\n");
  252.         pause;
  253.         return;
  254.     }
  255.     if (tmp.data.data_podkl[3]>'1' || (tmp.data.data_podkl[3]=='1' && tmp.data.data_podkl[4]>'2')){
  256.         printf("Неверная дата\n");
  257.         pause;
  258.         return;
  259.     }
  260.     if (tmp.data.data_podkl[6]!='2' || (tmp.data.data_podkl[6]=='2' && tmp.data.data_podkl[7]!='0')){
  261.         printf("Неверная дата\n");
  262.         pause;
  263.         return;
  264.     }
  265.     if (strlen(tmp.data.data_podkl)>10){
  266.         printf("Превышена допустимая длина\n");
  267.         pause;
  268.         return;
  269.     }
  270.     tmp.balans=atof(str);
  271.     abonent[razmer_abonent]=tmp;
  272.     razmer_abonent++;
  273.     write_abonent();
  274. }
  275. void delete_abonent(){
  276.     print_abonent();
  277.     char fam[size],name[size];
  278.     printf("Введите фамилию и имя: ");
  279.     scanf("%s%s", &fam,&name);
  280.     int i,j,k;
  281.     for (i=0;i<razmer_bio;i++){
  282.         if (strcmp(name,bio[i].imya)==0 && strcmp(fam,bio[i].familiya)==0){
  283.             for (j=0;j<razmer_abonent;j++){
  284.                 if (abonent[j].bio_id==bio[i].bio_id){
  285.                     razmer_abonent--;
  286.                     for (k=j;k<razmer_abonent;k++){
  287.                         abonent[k]=abonent[k+1];
  288.                     }
  289.                     break;
  290.                 }
  291.             }
  292.             write_abonent();
  293.             return;
  294.         }
  295.     }
  296. }
  297. void change_abonent(){
  298.     cls;
  299.     double floattmp;
  300.     char name[size],fam[size];
  301.     char str[size];
  302.     int ind=-1;
  303.     int i,j,k;
  304.     struct shablon_abonent tmp;
  305.     char tarifname[size];
  306.     print_bio();
  307.     printf("Введите фамилию и имя: ");
  308.     scanf("%s %s", &fam, &name);
  309.     for (i=0;i<razmer_bio;i++){
  310.         if (strcmp(name,bio[i].imya)==0 && strcmp(fam,bio[i].familiya)==0){
  311.             for (j=0;j<razmer_abonent;j++){
  312.                 if (abonent[j].bio_id==bio[i].bio_id){
  313.                     ind=j;
  314.                     break;
  315.                 }
  316.             }
  317.         }
  318.     }
  319.     if (ind==-1){
  320.         printf("Неверное фамилия и имя\n");
  321.         pause;
  322.         return;
  323.     }
  324.     int flag1=1;
  325.     char x;
  326.     int floating=0;
  327.     while (flag1){
  328.         cls;
  329.         printf("Изменить абонента\n1)Личную информацию\n2)Тариф\n3)Баланс\n4)Дату подключения\n5)Выход\n");
  330.         x=getch();
  331.         switch (x){
  332.             case '1':
  333.                 print_bio();
  334.                 printf("Введите фамилию и имя: ");
  335.                 tmp.bio_id=-1;
  336.                 scanf("%s %s", &fam, &name);
  337.                 for (i=0;i<razmer_bio;i++){
  338.                     if (strcmp(fam,bio[i].familiya)==0 && strcmp(name,bio[i].imya)==0){
  339.                         tmp.bio_id=bio[i].bio_id;
  340.                         break;
  341.                     }
  342.                 }
  343.                 if (tmp.bio_id==-1){
  344.                     printf("Неверные данные\n");
  345.                     pause;
  346.                     return;
  347.                 }
  348.                 abonent[ind].bio_id=tmp.bio_id;
  349.                 write_abonent();
  350.                 break;
  351.             case '2':
  352.                 print_tarif();
  353.                 printf("Введите название тарифа: ");
  354.                 tmp.tarif_id=-1;
  355.                 scanf("%s", &tarifname);
  356.                 for (i=0;i<razmer_tarif;i++){
  357.                     if (strcmp(tarif[i].name,tarifname)==0){
  358.                         tmp.tarif_id=tarif[i].tarif_id;
  359.                         break;
  360.                     }
  361.                 }
  362.                 if (tmp.tarif_id==-1){
  363.                     printf("Неверные данные\n");
  364.                     pause;
  365.                     return;
  366.                 }
  367.                 abonent[ind].tarif_id=tmp.tarif_id;
  368.                 write_abonent();
  369.                 break;
  370.             case '3':
  371.                 printf("Введите баланс: ");
  372.                 fflush(stdin);
  373.                 if (scanf("%lf", &floattmp)!=1){
  374.                 printf("Ошибка\n");
  375.                 fflush(stdin);
  376.                 pause;
  377.                 return;
  378.     }
  379.     tmp.balans=floattmp;
  380.                 abonent[ind].balans=tmp.balans;
  381.                 write_abonent();
  382.                 break;
  383.             case '4':
  384.                 printf("Введите дату подключения: ");
  385.                 scanf("%s", &tmp.data.data_podkl);
  386.                 if (tmp.data.data_podkl[2]!='.' || tmp.data.data_podkl[5]!='.' || strlen(tmp.data.data_podkl)!=10){
  387.                     printf("Неверный формат\n");
  388.                     pause;
  389.                     return;
  390.                 }
  391.                 if (strlen(tmp.data.data_podkl)>15){
  392.                     printf("Превышена допустимая длина\n");
  393.                     pause;
  394.                     return;
  395.                 }
  396.                 strcpy(abonent[ind].data.data_podkl,tmp.data.data_podkl);
  397.                 write_abonent();
  398.                 break;
  399.             case '5':
  400.                 flag1=0;
  401.                 break;
  402.             default:
  403.                 break;
  404.         }
  405.     }
  406. }
  407. void search_abonent(){
  408.     cls;
  409.     char str[size];
  410.     int i,j,k;
  411.     char tmp[size];
  412.     int flag1=1;
  413.     int flag=0;
  414.     char x;
  415.     double tmpdouble;
  416.     while (flag1){
  417.         cls;
  418.         printf("Поиск абонента\n1)По фамилии\n2)По имени\n3)По отчеству\n4)По тарифу\n5)По балансу\n6)По дате подключения\n7)Выход\n");
  419.         x=getch();
  420.         switch (x){
  421.             case '1':
  422.                 flag=0;
  423.                 printf("Введите фамилию: ");
  424.                 scanf("%s", &tmp);
  425.                 cls;
  426.                 for (i=0;i<razmer_bio;i++){
  427.                     if (strcmp(tmp,bio[i].familiya)==0){
  428.                         for (j=0;j<razmer_abonent;j++){
  429.                             if (abonent[j].bio_id==bio[i].bio_id){
  430.                                 for (k=0;k<razmer_tarif;k++){
  431.                                     if (tarif[k].tarif_id==abonent[j].tarif_id){
  432.                                         printf("%s %s %s\nТариф: %s\nБаланс: %.2lf\nДата подключения: %s\n\n", bio[i].familiya, bio[i].imya, bio[i].otchestvo, tarif[k].name, abonent[j].balans, abonent[j].data.data_podkl);
  433.                                         flag=1;
  434.                                         break;
  435.                                     }
  436.                                 }
  437.                             }
  438.                         }
  439.                     }
  440.                 }
  441.                 if (flag==0){
  442.                     printf("Результатов не найдено\n");
  443.                 }
  444.                 pause;
  445.                 break;
  446.             case '2':
  447.                 flag=0;
  448.                 printf("Введите имя: ");
  449.                 scanf("%s", &tmp);
  450.                 cls;
  451.                 for (i=0;i<razmer_bio;i++){
  452.                     if (strcmp(tmp,bio[i].imya)==0){
  453.                         for (j=0;j<razmer_abonent;j++){
  454.                             if (abonent[j].bio_id==bio[i].bio_id){
  455.                                 for (k=0;k<razmer_tarif;k++){
  456.                                     if (tarif[k].tarif_id==abonent[j].tarif_id){
  457.                                         printf("%s %s %s\nТариф: %s\nБаланс: %.2lf\nДата подключения: %s\n\n", bio[i].familiya, bio[i].imya, bio[i].otchestvo, tarif[k].name, abonent[j].balans, abonent[j].data.data_podkl);
  458.                                         flag=1;
  459.                                         break;
  460.                                     }
  461.                                 }
  462.                             }
  463.                         }
  464.                     }
  465.                 }
  466.                 if (flag==0){
  467.                     printf("Результатов не найдено\n");
  468.                 }
  469.                 pause;
  470.                 break;
  471.             case '3':
  472.                 flag=0;
  473.                 printf("Введите отчество: ");
  474.                 scanf("%s", &tmp);
  475.                 cls;
  476.                 for (i=0;i<razmer_bio;i++){
  477.                     if (strcmp(tmp,bio[i].otchestvo)==0){
  478.                         for (j=0;j<razmer_abonent;j++){
  479.                             if (abonent[j].bio_id==bio[i].bio_id){
  480.                                 for (k=0;k<razmer_tarif;k++){
  481.                                     if (tarif[k].tarif_id==abonent[j].tarif_id){
  482.                                         printf("%s %s %s\nТариф: %s\nБаланс: %.2lf\nДата подключения: %s\n\n", bio[i].familiya, bio[i].imya, bio[i].otchestvo, tarif[k].name, abonent[j].balans, abonent[j].data.data_podkl);
  483.                                         flag=1;
  484.                                         break;
  485.                                     }
  486.                                 }
  487.                             }
  488.                         }
  489.                     }
  490.                 }
  491.                 if (flag==0){
  492.                     printf("Результатов не найдено\n");
  493.                 }
  494.                 pause;
  495.                 break;
  496.             case '4':
  497.                 flag=0;
  498.                 printf("Введите название тарифа: ");
  499.                 scanf("%s", &tmp);
  500.                 cls;
  501.                 for (i=0;i<razmer_tarif;i++){
  502.                     if (strcmp(tmp,tarif[i].name)==0){
  503.                         for (j=0;j<razmer_abonent;j++){
  504.                             if (abonent[j].tarif_id==tarif[i].tarif_id){
  505.                                 for (k=0;k<razmer_bio;k++){
  506.                                     if (bio[k].bio_id==abonent[j].bio_id){
  507.                                         printf("%s %s %s\nТариф: %s\nБаланс: %.2lf\nДата подключения: %s\n\n", bio[j].familiya, bio[j].imya, bio[j].otchestvo, tarif[i].name, abonent[j].balans, abonent[j].data.data_podkl);
  508.                                         flag=1;
  509.                                         break;
  510.                                     }
  511.                                 }
  512.                             }
  513.                         }
  514.                     }
  515.                 }
  516.                 if (flag==0){
  517.                     printf("Результатов не найдено\n");
  518.                 }
  519.                 pause;
  520.                 break;
  521.             case '5':
  522.                 flag=0;
  523.                 printf("Введите баланс: ");
  524.                 scanf("%lf", &tmpdouble);
  525.                 fflush(stdin);
  526.                 cls;
  527.                 for (i=0;i<razmer_abonent;i++){
  528.                     if (abonent[i].balans==tmpdouble){
  529.                         for (j=0;j<razmer_bio;j++){
  530.                             if (bio[j].bio_id==abonent[i].bio_id){
  531.                                 for (k=0;k<razmer_tarif;k++){
  532.                                     if (tarif[k].tarif_id==abonent[j].tarif_id){
  533.                                         printf("%s %s %s\nТариф: %s\nБаланс: %.2lf\nДата подключения: %s\n\n", bio[j].familiya, bio[j].imya, bio[j].otchestvo, tarif[k].name, abonent[i].balans, abonent[i].data.data_podkl);
  534.                                         flag=1;
  535.                                         break;
  536.                                     }
  537.                                 }
  538.                             }
  539.                         }
  540.                     }
  541.                 }
  542.                 if (flag==0){
  543.                     printf("Результатов не найдено\n");
  544.                 }
  545.                 pause;
  546.                 break;
  547.             case '6':
  548.                 flag=0;
  549.                 printf("Введите дату подключения: ");
  550.                 scanf("%s", &tmp);
  551.                 cls;
  552.                 for (i=0;i<razmer_abonent;i++){
  553.                     if (strcmp(abonent[i].data.data_podkl,tmp)==0){
  554.                         for (j=0;j<razmer_bio;j++){
  555.                             if (bio[j].bio_id==abonent[i].bio_id){
  556.                                 for (k=0;k<razmer_tarif;k++){
  557.                                     if (tarif[k].tarif_id==abonent[j].tarif_id){
  558.                                         printf("%s %s %s\nТариф: %s\nБаланс: %.2lf\nДата подключения: %s\n\n", bio[j].familiya, bio[j].imya, bio[j].otchestvo, tarif[k].name, abonent[i].balans, abonent[i].data.data_podkl);
  559.                                         flag=1;
  560.                                         break;
  561.                                     }
  562.                                 }
  563.                             }
  564.                         }
  565.                     }
  566.                 }
  567.                 if (flag==0){
  568.                     printf("Результатов не найдено\n");
  569.                 }
  570.                 pause;
  571.                 break;
  572.             case '7':
  573.                 flag1=0;
  574.                 break;
  575.             default:
  576.                 break;
  577.         }
  578.     }
  579. }
  580. void print_abonent(){
  581.     cls;
  582.     int i,j;
  583.     char str[size];
  584.     int bioID,tarifID;
  585.     printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
  586.     printf("||Ф.И.О.                                       ||Название тарифа||Баланс         ||Дата подключения    ||\n");
  587.     printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
  588.     for (i=0;i<razmer_abonent;i++){
  589.         bioID=-1;
  590.         tarifID=-1;
  591.         for (j=0;j<razmer_bio;j++){
  592.             if (bio[j].bio_id==abonent[i].bio_id){
  593.                 bioID=j;
  594.             }
  595.         }
  596.         for (j=0;j<razmer_tarif;j++){
  597.             if (tarif[j].tarif_id==abonent[i].tarif_id){
  598.                 tarifID=j;
  599.             }
  600.         }
  601.         if (bioID==-1 || tarifID==-1){
  602.             continue;
  603.         }
  604.         printf("||%s %s %s", bio[bioID].familiya, bio[bioID].imya, bio[bioID].otchestvo);
  605.         for (j=0;j<43-(strlen(bio[bioID].familiya)+strlen(bio[bioID].imya)+strlen(bio[bioID].otchestvo));j++){
  606.             printf(" ");
  607.         }
  608.         printf("||%s", tarif[tarifID].name);
  609.         for (j=0;j<15-strlen(tarif[tarifID].name);j++){
  610.             printf(" ");
  611.         }
  612.         sprintf(str,"%.2lf", abonent[i].balans);
  613.         printf("||%s", str);
  614.         for (j=0;j<15-strlen(str);j++){
  615.             printf(" ");
  616.         }
  617.         printf("||%s", abonent[i].data.data_podkl);
  618.         for (j=0;j<20-strlen(abonent[i].data.data_podkl);j++){
  619.             printf(" ");
  620.         }
  621.         printf("||\n");
  622.         printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
  623.     }
  624.     pause;
  625. }
  626. //
  627. void menu_tarif(){
  628.     int flag1=1;
  629.     char x;
  630.     while (flag1){
  631.         cls;
  632.         printf("Меню тарифов\n1)Добавить\n2)Удалить\n3)Изменить\n4)Искать\n5)Вывод\n6)Выход\n");
  633.         x=getch();
  634.         switch (x){
  635.             case '1':
  636.                 add_tarif();
  637.                 break;
  638.             case '2':
  639.                 delete_tarif();
  640.                 break;
  641.             case '3':
  642.                 change_tarif();
  643.                 break;
  644.             case '4':
  645.                 search_tarif();
  646.                 break;
  647.             case '5':
  648.                 print_tarif();
  649.                 break;
  650.             case '6':
  651.                 flag1=0;
  652.                 break;
  653.             default:
  654.                 break;
  655.         }
  656.     }
  657. }
  658. void add_tarif(){
  659.     cls;
  660.     struct shablon_tarif tmp;
  661.     char str[size];
  662.     int i;
  663.     printf("Введите название тарифа: ");
  664.     scanf("%s", &tmp.name);
  665.      for (i=0;i<strlen(tmp.name);i++)
  666.     {
  667.         if(tmp.name[i]>47&&tmp.name[i]<58)
  668.         {
  669.             printf("Ошибка\n");
  670.             system("pause");
  671.             return;
  672.         }
  673.     }
  674.     if (strlen(tmp.name)>15){
  675.         printf("Превышена допустимая длина\n");
  676.         pause;
  677.         return;
  678.     }
  679.     printf("Введите абонентскую плату: ");
  680.     double floattmp;
  681.     fflush(stdin);
  682.     if (scanf("%lf", &floattmp)!=1){
  683.         printf("Ошибка\n");
  684.         fflush(stdin);
  685.         pause;
  686.         return;
  687.     }
  688.     tmp.plata=floattmp;
  689.     printf("Введите количество мегабайт: ");
  690.     scanf("%s", &str);
  691.     if (strlen(str)>15){
  692.         printf("Превышена допустимая длина\n");
  693.         pause;
  694.         return;
  695.     }
  696.     for (i=0;i<strlen(str);i++){
  697.         if (str[i]<48 || str[i]>57){
  698.             printf("Введены неверные символы\n");
  699.             pause;
  700.             return;
  701.         }
  702.     }
  703.     tmp.megabyte=atoi(str);
  704.     printf("Введите количество минут: ");
  705.     scanf("%s", &str);
  706.     if (strlen(str)>15){
  707.         printf("Превышена допустимая длина\n");
  708.         pause;
  709.         return;
  710.     }
  711.     for (i=0;i<strlen(str);i++){
  712.         if (str[i]<48 || str[i]>57){
  713.             printf("Введены неверные символы\n");
  714.             pause;
  715.             return;
  716.         }
  717.     }
  718.     tmp.minut=atoi(str);
  719.     printf("Введите количество смс: ");
  720.     scanf("%s", &str);
  721.     if (strlen(str)>15){
  722.         printf("Превышена допустимая длина\n");
  723.         pause;
  724.         return;
  725.     }
  726.     for (i=0;i<strlen(str);i++){
  727.         if (str[i]<48 || str[i]>57){
  728.             printf("Введены неверные символы\n");
  729.             pause;
  730.             return;
  731.         }
  732.     }
  733.     tmp.sms=atoi(str);
  734.     tmp.tarif_id=tarif_id_kol;
  735.     tarif_id_kol++;
  736.     tarif[razmer_tarif]=tmp;
  737.     razmer_tarif++;
  738.     write_tarif();
  739. }
  740. void delete_tarif(){
  741.     cls;
  742.     int i,j;
  743.     char name[size];
  744.     print_tarif();
  745.     printf("Введите название удаляемого тарфиа: ");
  746.     scanf("%s", &name);
  747.     for (i=0;i<razmer_tarif;i++){
  748.         if (strcmp(name,tarif[i].name)==0){
  749.             razmer_tarif--;
  750.             for (j=i;j<razmer_tarif;j++){
  751.                 tarif[j]=tarif[j+1];
  752.             }
  753.             write_tarif();
  754.             break;
  755.         }
  756.     }
  757. }
  758. void change_tarif(){
  759.     cls;
  760.     double floattmp;
  761.     char name[size];
  762.     char str[size];
  763.     int ind=-1;
  764.     int i;
  765.     struct shablon_tarif tmp;
  766.     int floating=0;
  767.     print_tarif();
  768.     printf("Введите название: ");
  769.     scanf("%s", &name);
  770.     for (i=0;i<razmer_tarif;i++){
  771.         if (strcmp(name,tarif[i].name)==0){
  772.             ind=i;
  773.             break;
  774.         }
  775.     }
  776.     if (ind==-1){
  777.         printf("Неверное название\n");
  778.         pause;
  779.         return;
  780.     }
  781.     int flag1=1;
  782.     char x;
  783.     while (flag1){
  784.         cls;
  785.         printf("Изменить тариф\n1)Название\n2)Плату\n3)Мегабайты\n4)Минуты\n5)СМС\n6)Выход\n");
  786.         x=getch();
  787.         switch (x){
  788.             case '1':
  789.                 printf("Введите новое название: ");
  790.                 scanf("%s", tmp.name);
  791.                 if (strlen(tmp.name)>15){
  792.                     printf("Превышена допустимая длина\n");
  793.                     pause;
  794.                     return;
  795.                 }
  796.                 strcpy(tarif[ind].name,tmp.name);
  797.                 write_tarif();
  798.                 break;
  799.             case '2':
  800.                 printf("Введите новую абонентскую плату: ");
  801.     fflush(stdin);
  802.     if (scanf("%lf", &floattmp)!=1){
  803.         printf("Ошибка\n");
  804.         fflush(stdin);
  805.         pause;
  806.         return;
  807.     }
  808.     tmp.plata=floattmp;
  809.                 tarif[ind].plata=tmp.plata;
  810.                 write_tarif();
  811.                 break;
  812.             case '3':
  813.                 printf("Введите новое количество мегабайт: ");
  814.                 scanf("%s", &str);
  815.                 if (strlen(str)>15){
  816.                     printf("Превышена допустимая длина\n");
  817.                     pause;
  818.                     return;
  819.                 }
  820.                 for (i=0;i<strlen(str);i++){
  821.                     if (str[i]<48 || str[i]>57){
  822.                         printf("Введены неверные символы\n");
  823.                         pause;
  824.                         return;
  825.                     }
  826.                 }
  827.                 tmp.megabyte=atoi(str);
  828.                 tarif[ind].megabyte=tmp.megabyte;
  829.                 write_tarif();
  830.                 break;
  831.             case '4':
  832.                 printf("Введите новое количество минут: ");
  833.                 scanf("%s", &str);
  834.                 if (strlen(str)>15){
  835.                     printf("Превышена допустимая длина\n");
  836.                     pause;
  837.                     return;
  838.                 }
  839.                 for (i=0;i<strlen(str);i++){
  840.                     if (str[i]<48 || str[i]>57){
  841.                         printf("Введены неверные символы\n");
  842.                         pause;
  843.                         return;
  844.                     }
  845.                 }
  846.                 tmp.minut=atoi(str);
  847.                 tarif[ind].minut=tmp.minut;
  848.                 write_tarif();
  849.                 break;
  850.             case '5':
  851.                 printf("Введите новое количество смс: ");
  852.                 scanf("%s", &str);
  853.                 if (strlen(str)>15){
  854.                     printf("Превышена допустимая длина\n");
  855.                     pause;
  856.                     return;
  857.                 }
  858.                 for (i=0;i<strlen(str);i++){
  859.                     if (str[i]<48 || str[i]>57){
  860.                         printf("Введены неверные символы\n");
  861.                         pause;
  862.                         return;
  863.                     }
  864.                 }
  865.                 tmp.sms=atoi(str);
  866.                 tarif[ind].sms=tmp.sms;
  867.                 write_tarif();
  868.                 break;
  869.             case '6':
  870.                 flag1=0;
  871.                 break;
  872.             default:
  873.                 break;
  874.         }
  875.     }
  876. }
  877. void search_tarif(){
  878.     cls;
  879.     char str[size];
  880.     int i;
  881.     struct shablon_tarif tmp;
  882.     int flag1=1;
  883.     int flag=0;
  884.     char x;
  885.     while (flag1){
  886.         cls;
  887.         printf("Поиск тарифа\n1)Название\n2)Плату\n3)Мегабайты\n4)Минуты\n5)СМС\n6)Выход\n");
  888.         x=getch();
  889.         switch (x){
  890.             case '1':
  891.                 flag=0;
  892.                 printf("Введите название: ");
  893.                 scanf("%s", tmp.name);
  894.                 fflush(stdin);
  895.                 cls;
  896.                 for (i=0;i<razmer_tarif;i++){
  897.                     if (strcmp(tmp.name,tarif[i].name)==0){
  898.                         printf("%s\n%.2lf\n%dMB %dMIN %dSMS\n\n", tarif[i].name, tarif[i].plata, tarif[i].megabyte, tarif[i].minut, tarif[i].sms);
  899.                         flag=1;
  900.                     }
  901.                 }
  902.                 if (flag==0){
  903.                     printf("Результатов не найдено\n");
  904.                 }
  905.                 pause;
  906.                 break;
  907.             case '2':
  908.                 flag=0;
  909.                 printf("Введите плату: ");
  910.                 scanf("%lf", &tmp.plata);
  911.                 fflush(stdin);
  912.                 cls;
  913.                 for (i=0;i<razmer_tarif;i++){
  914.                     if (tmp.plata==tarif[i].plata){
  915.                         printf("%s\n%.2lf\n%dMB %dMIN %dSMS\n\n", tarif[i].name, tarif[i].plata, tarif[i].megabyte, tarif[i].minut, tarif[i].sms);
  916.                         flag=1;
  917.                     }
  918.                 }
  919.                 if (flag==0){
  920.                     printf("Результатов не найдено\n");
  921.                 }
  922.                 pause;
  923.                 break;
  924.             case '3':
  925.                 flag=0;
  926.                 printf("Введите количество мегабайт: ");
  927.                 scanf("%d", &tmp.megabyte);
  928.                 fflush(stdin);
  929.                 cls;
  930.                 for (i=0;i<razmer_tarif;i++){
  931.                     if (tmp.megabyte==tarif[i].megabyte){
  932.                         printf("%s\n%.2lf\n%dMB %dMIN %dSMS\n\n", tarif[i].name, tarif[i].plata, tarif[i].megabyte, tarif[i].minut, tarif[i].sms);
  933.                         flag=1;
  934.                     }
  935.                 }
  936.                 if (flag==0){
  937.                     printf("Результатов не найдено\n");
  938.                 }
  939.                 pause;
  940.                 break;
  941.             case '4':
  942.                 flag=0;
  943.                 printf("Введите количество минут: ");
  944.                 scanf("%d", &tmp.minut);
  945.                 fflush(stdin);
  946.                 cls;
  947.                 for (i=0;i<razmer_tarif;i++){
  948.                     if (tmp.minut==tarif[i].minut){
  949.                         printf("%s\n%.2lf\n%dMB %dMIN %dSMS\n\n", tarif[i].name, tarif[i].plata, tarif[i].megabyte, tarif[i].minut, tarif[i].sms);
  950.                         flag=1;
  951.                     }
  952.                 }
  953.                 if (flag==0){
  954.                     printf("Результатов не найдено\n");
  955.                 }
  956.                 pause;
  957.                 break;
  958.             case '5':
  959.                 flag=0;
  960.                 printf("Введите количество смс: ");
  961.                 scanf("%d", &tmp.sms);
  962.                 fflush(stdin);
  963.                 cls;
  964.                 for (i=0;i<razmer_tarif;i++){
  965.                     if (tmp.sms==tarif[i].sms){
  966.                         printf("%s\n%.2lf\n%dMB %dMIN %dSMS\n\n", tarif[i].name, tarif[i].plata, tarif[i].megabyte, tarif[i].minut, tarif[i].sms);
  967.                         flag=1;
  968.                     }
  969.                 }
  970.                 if (flag==0){
  971.                     printf("Результатов не найдено\n");
  972.                 }
  973.                 pause;
  974.                 break;
  975.             case '6':
  976.                 flag1=0;
  977.                 break;
  978.             default:
  979.                 break;
  980.         }
  981.     }
  982. }
  983. void print_tarif(){
  984.     cls;
  985.     int i,j;
  986.     char str[size];
  987.     printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
  988.     printf("||Название       ||Плата          ||Мегабайт  ||Минут     ||СМС       ||\n");
  989.     printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
  990.     for (i=0;i<razmer_tarif;i++){
  991.         printf("||%s", tarif[i].name);
  992.         for (j=0;j<15-strlen(tarif[i].name);j++){
  993.             printf(" ");
  994.         }
  995.         sprintf(str,"%.2lf", tarif[i].plata);
  996.         printf("||%s", str);
  997.         for (j=0;j<15-strlen(str);j++){
  998.             printf(" ");
  999.         }
  1000.         itoa(tarif[i].megabyte,str,10);
  1001.         printf("||%s", str);
  1002.         for (j=0;j<10-strlen(str);j++){
  1003.             printf(" ");
  1004.         }
  1005.         itoa(tarif[i].minut,str,10);
  1006.         printf("||%s", str);
  1007.         for (j=0;j<10-strlen(str);j++){
  1008.             printf(" ");
  1009.         }
  1010.         itoa(tarif[i].sms,str,10);
  1011.         printf("||%s", str);
  1012.         for (j=0;j<10-strlen(str);j++){
  1013.             printf(" ");
  1014.         }
  1015.         printf("||\n");
  1016.         printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
  1017.     }
  1018.     pause;
  1019. }
  1020. //
  1021. void menu_bio(){
  1022.     int flag1=1;
  1023.     char x;
  1024.     while (flag1){
  1025.         cls;
  1026.         printf("Меню личной информации\n1)Добавить\n2)Удалить\n3)Изменить\n4)Искать\n5)Вывод\n6)Выход\n");
  1027.         x=getch();
  1028.         switch (x){
  1029.             case '1':
  1030.                 add_bio();
  1031.                 break;
  1032.             case '2':
  1033.                 delete_bio();
  1034.                 break;
  1035.             case '3':
  1036.                 change_bio();
  1037.                 break;
  1038.             case '4':
  1039.                 search_bio();
  1040.                 break;
  1041.             case '5':
  1042.                 print_bio();
  1043.                 break;
  1044.             case '6':
  1045.                 flag1=0;
  1046.                 break;
  1047.             default:
  1048.                 break;
  1049.         }
  1050.     }
  1051. }
  1052. void add_bio()
  1053. {
  1054.     int i;
  1055.     cls;
  1056.     struct shablon_bio tmp;
  1057.     printf("Введите фамилию: ");
  1058.     scanf("%s", tmp.familiya);
  1059.     for (i=0;i<strlen(tmp.familiya);i++)
  1060.     {
  1061.         if(tmp.familiya[i]>47&&tmp.familiya[i]<58)
  1062.         {
  1063.             printf("Ошибка\n");
  1064.             system("pause");
  1065.             return;
  1066.         }
  1067.     }
  1068.     printf("Введите имя: ");
  1069.     scanf("%s", tmp.imya);
  1070.     for (i=0;i<strlen(tmp.imya);i++)
  1071.     {
  1072.         if(tmp.imya[i]>47&&tmp.imya[i]<58)
  1073.         {
  1074.             printf("Ошибка\n");
  1075.             system("pause");
  1076.             return;
  1077.         }
  1078.     }
  1079.     printf("Введите отчество: ");
  1080.     scanf("%s", tmp.otchestvo);
  1081.     for (i=0;i<strlen(tmp.otchestvo);i++)
  1082.     {
  1083.         if(tmp.otchestvo[i]>47&&tmp.otchestvo[i]<58)
  1084.         {
  1085.             printf("Ошибка\n");
  1086.             system("pause");
  1087.             return;
  1088.         }
  1089.     }
  1090.     printf("Введите номер телефона.Ввод должен быть в формате +375...: ");
  1091.     scanf("%s", tmp.nomer_telefona);
  1092.     if (tmp.nomer_telefona[0]!='+' || tmp.nomer_telefona[1]!='3' || tmp.nomer_telefona[2]!='7' || tmp.nomer_telefona[3]!='5'){
  1093.         printf("Неверный формат\n");
  1094.         pause;
  1095.         return;
  1096.     }
  1097.     if (strlen(tmp.familiya)>15 || strlen(tmp.nomer_telefona)>15 || strlen(tmp.imya)>15 || strlen(tmp.otchestvo)>15){
  1098.         printf("Превышена допустимая длина\n");
  1099.         pause;
  1100.         return;
  1101.     }
  1102.     tmp.bio_id=bio_id_kol;
  1103.     bio_id_kol++;
  1104.     bio[razmer_bio]=tmp;
  1105.     razmer_bio++;
  1106.     write_bio();
  1107.  
  1108. }
  1109. void delete_bio(){
  1110.     cls;
  1111.     char fam[size],name[size];
  1112.     int i,j;
  1113.     print_bio();
  1114.     printf("Введите фамилию и имя: ");
  1115.     scanf("%s %s", &fam, &name);
  1116.     for (i=0;i<razmer_bio;i++){
  1117.         if (strcmp(fam,bio[i].familiya)==0 && strcmp(name,bio[i].imya)==0){
  1118.             razmer_bio--;
  1119.             for (j=i;j<razmer_bio;j++){
  1120.                 bio[j]=bio[j+1];
  1121.             }
  1122.             write_bio();
  1123.             break;
  1124.         }
  1125.     }
  1126. }
  1127. void change_bio(){
  1128.     cls;
  1129.     char name[size],fam[size];
  1130.     int ind=-1;
  1131.     int i;
  1132.     struct shablon_bio tmp;
  1133.     print_bio();
  1134.     printf("Введите фамилию и имя: ");
  1135.     scanf("%s %s", &fam, &name);
  1136.     for (i=0;i<razmer_bio;i++){
  1137.         if (strcmp(fam,bio[i].familiya)==0 && strcmp(name,bio[i].imya)==0){
  1138.             ind=i;
  1139.             break;
  1140.         }
  1141.     }
  1142.     if (ind==-1){
  1143.         printf("Неверное имя или фамилия\n");
  1144.         pause;
  1145.         return;
  1146.     }
  1147.     int flag1=1;
  1148.     char x;
  1149.     while (flag1){
  1150.         cls;
  1151.         printf("Изменить личную информацию\n1)Фамилию\n2)Имя\n3)Отчество\n4)Номер телефона\n5)Выход\n");
  1152.         x=getch();
  1153.         switch (x){
  1154.             case '1':
  1155.                 printf("Введите новую фамилию: ");
  1156.                 scanf("%s", tmp.familiya);
  1157.                  for (i=0;i<strlen(tmp.familiya);i++)
  1158.                 {
  1159.                     if(tmp.familiya[i]>47&&tmp.familiya[i]<58)
  1160.                     {
  1161.                         printf("Ошибка\n");
  1162.                         system("pause");
  1163.                         return;
  1164.                     }          
  1165.                 }
  1166.                 if (strlen(tmp.familiya)>15){
  1167.                     printf("Превышена допустимая длина\n");
  1168.                     pause;
  1169.                     return;
  1170.                 }
  1171.                 strcpy(bio[ind].familiya,tmp.familiya);
  1172.                 write_bio();
  1173.                 break;
  1174.             case '2':
  1175.                 printf("Введите новое имя: ");
  1176.                 scanf("%s", tmp.imya);
  1177.                  for (i=0;i<strlen(tmp.imya);i++)
  1178.                 {
  1179.                     if(tmp.imya[i]>47&&tmp.imya[i]<58)
  1180.                     {
  1181.                         printf("Ошибка\n");
  1182.                         system("pause");
  1183.                         return;
  1184.                     }
  1185.                 }
  1186.                 if (strlen(tmp.imya)>15){
  1187.                     printf("Превышена допустимая длина\n");
  1188.                     pause;
  1189.                     return;
  1190.                 }
  1191.                 strcpy(bio[ind].imya,tmp.imya);
  1192.                 write_bio();
  1193.                 break;
  1194.             case '3':
  1195.                 printf("Введите новое отчество: ");
  1196.                 scanf("%s", tmp.otchestvo);
  1197.                  for (i=0;i<strlen(tmp.otchestvo);i++)
  1198.                 {
  1199.                     if(tmp.otchestvo[i]>47&&tmp.otchestvo[i]<58)
  1200.                     {
  1201.                         printf("Ошибка\n");
  1202.                         system("pause");
  1203.                         return;
  1204.                     }
  1205.                 }
  1206.                 if (strlen(tmp.otchestvo)>15){
  1207.                     printf("Превышена допустимая длина\n");
  1208.                     pause;
  1209.                     return;
  1210.                 }
  1211.                 strcpy(bio[ind].otchestvo,tmp.otchestvo);
  1212.                 write_bio();
  1213.                 break;
  1214.             case '4':
  1215.                 printf("Введите новый номер телефона: ");
  1216.                 scanf("%s", tmp.nomer_telefona);
  1217.                 if (strlen(tmp.nomer_telefona)>15){
  1218.                     printf("Превышена допустимая длина\n");
  1219.                     pause;
  1220.                     return;
  1221.                 }
  1222.                 if (tmp.nomer_telefona[0]!='+' || tmp.nomer_telefona[1]!='3' || tmp.nomer_telefona[2]!='7' || tmp.nomer_telefona[3]!='5'){
  1223.                     printf("Неверный формат\n");
  1224.                     pause;
  1225.                     return;
  1226.                 }
  1227.                 strcpy(bio[ind].nomer_telefona,tmp.nomer_telefona);
  1228.                 write_bio();
  1229.                 break;
  1230.             case '5':
  1231.                 flag1=0;
  1232.                 break;
  1233.             default:
  1234.                 break;
  1235.         }
  1236.     }
  1237. }
  1238. void search_bio(){
  1239.     struct shablon_bio tmp;
  1240.     int i;
  1241.     int flag1=1;
  1242.     int flag=0;
  1243.     char x;
  1244.     while (flag1){
  1245.         cls;
  1246.         printf("Поиск личной информации\n1)Фамилию\n2)Имя\n3)Отчество\n4)Номер телефона\n5)Выход\n");
  1247.         x=getch();
  1248.         switch (x){
  1249.             case '1':
  1250.                 flag=0;
  1251.                 printf("Введите фамилию: ");
  1252.                 scanf("%s", tmp.familiya);
  1253.                 cls;
  1254.                 for (i=0;i<razmer_bio;i++){
  1255.                     if (strcmp(tmp.familiya,bio[i].familiya)==0){
  1256.                         printf("%s %s %s\n%s\n\n", bio[i].familiya, bio[i].imya, bio[i].otchestvo, bio[i].nomer_telefona);
  1257.                         flag=1;
  1258.                     }
  1259.                 }
  1260.                 if (flag==0){
  1261.                     printf("Результатов не найдено\n");
  1262.                 }
  1263.                 pause;
  1264.                 break;
  1265.             case '2':
  1266.                 flag=0;
  1267.                 printf("Введите имя: ");
  1268.                 scanf("%s", tmp.imya);
  1269.                 cls;
  1270.                 for (i=0;i<razmer_bio;i++){
  1271.                     if (strcmp(tmp.imya,bio[i].imya)==0){
  1272.                         printf("%s %s %s\n%s\n\n", bio[i].familiya, bio[i].imya, bio[i].otchestvo, bio[i].nomer_telefona);
  1273.                         flag=1;
  1274.                     }
  1275.                 }
  1276.                 if (flag==0){
  1277.                     printf("Результатов не найдено\n");
  1278.                 }
  1279.                 pause;
  1280.                 break;
  1281.             case '3':
  1282.                 flag=0;
  1283.                 printf("Введите отчество: ");
  1284.                 scanf("%s", tmp.otchestvo);
  1285.                 cls;
  1286.                 for (i=0;i<razmer_bio;i++){
  1287.                     if (strcmp(tmp.otchestvo,bio[i].otchestvo)==0){
  1288.                         printf("%s %s %s\n%s\n\n", bio[i].familiya, bio[i].imya, bio[i].otchestvo, bio[i].nomer_telefona);
  1289.                         flag=1;
  1290.                     }
  1291.                 }
  1292.                 if (flag==0){
  1293.                     printf("Результатов не найдено\n");
  1294.                 }
  1295.                 pause;
  1296.                 break;
  1297.             case '4':
  1298.                 flag=0;
  1299.                 printf("Введите номер телефона: ");
  1300.                 scanf("%s", tmp.nomer_telefona);
  1301.                 cls;
  1302.                 for (i=0;i<razmer_bio;i++){
  1303.                     if (strcmp(tmp.nomer_telefona,bio[i].nomer_telefona)==0){
  1304.                         printf("%s %s %s\n%s\n\n", bio[i].familiya, bio[i].imya, bio[i].otchestvo, bio[i].nomer_telefona);
  1305.                         flag=1;
  1306.                     }
  1307.                 }
  1308.                 if (flag==0){
  1309.                     printf("Результатов не найдено\n");
  1310.                 }
  1311.                 pause;
  1312.                 break;
  1313.             case '5':
  1314.                 flag1=0;
  1315.                 break;
  1316.             default:
  1317.                 break;
  1318.         }
  1319.     }
  1320. }
  1321. void print_bio(){
  1322.     cls;
  1323.     int i,j;
  1324.     printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
  1325.     printf("||Фамилия        ||Имя            ||Отчество       ||Телефон        ||\n");
  1326.     printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
  1327.     for (i=0;i<razmer_bio;i++){
  1328.         printf("||%s", bio[i].familiya);
  1329.         for (j=0;j<15-strlen(bio[i].familiya);j++){
  1330.             printf(" ");
  1331.         }
  1332.         printf("||%s", bio[i].imya);
  1333.         for (j=0;j<15-strlen(bio[i].imya);j++){
  1334.             printf(" ");
  1335.         }
  1336.         printf("||%s", bio[i].otchestvo);
  1337.         for (j=0;j<15-strlen(bio[i].otchestvo);j++){
  1338.             printf(" ");
  1339.         }
  1340.         printf("||%s", bio[i].nomer_telefona);
  1341.         for (j=0;j<15-strlen(bio[i].nomer_telefona);j++){
  1342.             printf(" ");
  1343.         }
  1344.         printf("||\n");
  1345.         printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
  1346.     }
  1347.     pause;
  1348. }
  1349.  
  1350. void ind_zadanie(void){
  1351.     cls;
  1352.     int i,j,tmp,id;
  1353.     int kolichestvo[razmer_tarif];
  1354.     struct shablon_tarif temp;
  1355.     for (i=0;i<razmer_tarif;i++){
  1356.         kolichestvo[i]=0;
  1357.     }
  1358.     for (i=0;i<razmer_tarif;i++){
  1359.         for (j=0;j<razmer_abonent;j++){
  1360.             if (abonent[j].tarif_id==tarif[i].tarif_id){
  1361.                 kolichestvo[i]++;
  1362.             }
  1363.         }
  1364.     }
  1365.     for (i=0;i<razmer_tarif-1;i++){
  1366.         id=i;
  1367.         for (j=i+1;j<razmer_tarif;j++){
  1368.             if (kolichestvo[j]>kolichestvo[id]){
  1369.                 id=j;
  1370.             }
  1371.         }
  1372.         tmp=kolichestvo[id];
  1373.         temp=tarif[id];
  1374.         kolichestvo[id]=kolichestvo[i];
  1375.         tarif[id]=tarif[i];
  1376.         kolichestvo[i]=tmp;
  1377.         tarif[i]=temp;
  1378.     }
  1379.     printf("Самый популярный тариф: %s\n", tarif[0].name);
  1380.     system("pause");
  1381. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement