Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- void read_bio(){
- int i,j;
- biofile=fopen("bio", "rb");
- fread(&razmer_bio,sizeof(int),1,biofile);
- fread(&bio_id_kol,sizeof(int),1,biofile);
- for (i=0;i<razmer_bio;i++){
- fread(&bio[i],sizeof(struct shablon_bio),1,biofile);
- }
- fclose(biofile);
- for (i=0;i<razmer_bio;i++){
- bio[i].bio_id-=kodirovka;
- for (j=0;j<size;j++){
- bio[i].familiya[j]-=kodirovka;
- bio[i].imya[j]-=kodirovka;
- bio[i].otchestvo[j]-=kodirovka;
- bio[i].nomer_telefona[j]-=kodirovka;
- }
- }
- }
- void read_tarif(){
- int i,j;
- tariffile=fopen("tarif", "rb");
- fread(&razmer_tarif,sizeof(int),1,tariffile);
- fread(&tarif_id_kol,sizeof(int),1,tariffile);
- for (i=0;i<razmer_tarif;i++){
- fread(&tarif[i],sizeof(struct shablon_tarif),1,tariffile);
- }
- fclose(tariffile);
- for (i=0;i<razmer_tarif;i++){
- tarif[i].tarif_id-=kodirovka;
- tarif[i].minut-=kodirovka;
- tarif[i].megabyte-=kodirovka;
- tarif[i].sms-=kodirovka;
- tarif[i].plata-=kodirovka;
- for (j=0;j<size;j++){
- tarif[i].name[j]-=kodirovka;
- }
- }
- }
- void read_abonent(){
- int i,j;
- abonentfile=fopen("abonent", "rb");
- fread(&razmer_abonent,sizeof(int),1,abonentfile);
- for (i=0;i<razmer_abonent;i++){
- fread(&abonent[i],sizeof(struct shablon_abonent),1,abonentfile);
- }
- fclose(abonentfile);
- for (i=0;i<razmer_abonent;i++){
- abonent[i].balans-=kodirovka;
- abonent[i].bio_id-=kodirovka;
- abonent[i].tarif_id-=kodirovka;
- for (j=0;j<size;j++){
- abonent[i].data.data_podkl[j]-=kodirovka;
- }
- }
- }
- void write_abonent(){
- int i,j;
- for (i=0;i<razmer_abonent;i++){
- abonent[i].balans+=kodirovka;
- abonent[i].bio_id+=kodirovka;
- abonent[i].tarif_id+=kodirovka;
- for (j=0;j<size;j++){
- abonent[i].data.data_podkl[j]+=kodirovka;
- }
- }
- abonentfile=fopen("abonent", "w+b");
- fwrite(&razmer_abonent,sizeof(int),1,abonentfile);
- for (i=0;i<razmer_abonent;i++){
- fwrite(&abonent[i],sizeof(struct shablon_abonent),1,abonentfile);
- }
- fclose(abonentfile);
- for (i=0;i<razmer_abonent;i++){
- abonent[i].balans-=kodirovka;
- abonent[i].bio_id-=kodirovka;
- abonent[i].tarif_id-=kodirovka;
- for (j=0;j<size;j++){
- abonent[i].data.data_podkl[j]-=kodirovka;
- }
- }
- }
- void write_bio(){
- int i,j;
- for (i=0;i<razmer_bio;i++){
- bio[i].bio_id+=kodirovka;
- for (j=0;j<size;j++){
- bio[i].familiya[j]+=kodirovka;
- bio[i].imya[j]+=kodirovka;
- bio[i].otchestvo[j]+=kodirovka;
- bio[i].nomer_telefona[j]+=kodirovka;
- }
- }
- biofile=fopen("bio", "w+b");
- fwrite(&razmer_bio,sizeof(int),1,biofile);
- fwrite(&bio_id_kol,sizeof(int),1,biofile);
- for (i=0;i<razmer_bio;i++){
- fwrite(&bio[i],sizeof(struct shablon_bio),1,biofile);
- }
- fclose(biofile);
- for (i=0;i<razmer_bio;i++){
- bio[i].bio_id-=kodirovka;
- for (j=0;j<size;j++){
- bio[i].familiya[j]-=kodirovka;
- bio[i].imya[j]-=kodirovka;
- bio[i].otchestvo[j]-=kodirovka;
- bio[i].nomer_telefona[j]-=kodirovka;
- }
- }
- }
- void write_tarif(){
- int i,j;
- for (i=0;i<razmer_tarif;i++){
- tarif[i].tarif_id+=kodirovka;
- tarif[i].minut+=kodirovka;
- tarif[i].megabyte+=kodirovka;
- tarif[i].sms+=kodirovka;
- tarif[i].plata+=kodirovka;
- for (j=0;j<size;j++){
- tarif[i].name[j]+=kodirovka;
- }
- }
- tariffile=fopen("tarif", "w+b");
- fwrite(&razmer_tarif,sizeof(int),1,tariffile);
- fwrite(&tarif_id_kol,sizeof(int),1,tariffile);
- for (i=0;i<razmer_tarif;i++){
- fwrite(&tarif[i],sizeof(struct shablon_tarif),1,tariffile);
- }
- fclose(tariffile);
- for (i=0;i<razmer_tarif;i++){
- tarif[i].tarif_id-=kodirovka;
- tarif[i].minut-=kodirovka;
- tarif[i].megabyte-=kodirovka;
- tarif[i].sms-=kodirovka;
- tarif[i].plata-=kodirovka;
- for (j=0;j<size;j++){
- tarif[i].name[j]-=kodirovka;
- }
- }
- }
- void add_bio();
- void delete_bio();
- void change_bio();
- void search_bio();
- void print_bio();
- //проверка на дату
- //проверка мобилы
- void add_tarif();
- void delete_tarif();
- void change_tarif();
- void search_tarif();
- void print_tarif();
- //
- void add_abonent();
- void delete_abonent();
- void change_abonent();
- void search_abonent();
- void print_abonent();
- void ind_zadanie(void);
- //
- void menu_abonent(){
- int flag1=1;
- char x;
- while (flag1){
- cls;
- printf("Меню абонентов\n1)Добавить\n2)Удалить\n3)Изменить\n4)Искать\n5)Вывод\n6)Выход\n");
- x=getch();
- switch (x){
- case '1':
- add_abonent();
- break;
- case '2':
- delete_abonent();
- break;
- case '3':
- change_abonent();
- break;
- case '4':
- search_abonent();
- break;
- case '5':
- print_abonent();
- break;
- case '6':
- flag1=0;
- break;
- default:
- break;
- }
- }
- }
- void add_abonent(){
- print_bio();
- char name[size],fam[size],tarifname[size];
- char str[size];
- struct shablon_abonent tmp;
- int i,j;
- printf("Введите фамилию и имя: ");
- tmp.bio_id=-1;
- scanf("%s %s", &fam, &name);
- for (i=0;i<razmer_bio;i++){
- if (strcmp(fam,bio[i].familiya)==0 && strcmp(name,bio[i].imya)==0){
- tmp.bio_id=bio[i].bio_id;
- break;
- }
- }
- if (tmp.bio_id==-1){
- printf("Неверные данные\n");
- pause;
- return;
- }
- print_tarif();
- printf("Введите название тарифа: ");
- tmp.tarif_id=-1;
- scanf("%s", &tarifname);
- for (i=0;i<razmer_tarif;i++){
- if (strcmp(tarif[i].name,tarifname)==0){
- tmp.tarif_id=tarif[i].tarif_id;
- break;
- }
- }
- if (tmp.tarif_id==-1){
- printf("Неверные данные\n");
- pause;
- return;
- }
- printf("Введите баланс: ");
- double floattmp;
- fflush(stdin);
- if (scanf("%lf", &floattmp)!=1){
- printf("Ошибка\n");
- fflush(stdin);
- pause;
- return;
- }
- tmp.balans=floattmp;
- printf("Введите дату подключения: ");
- scanf("%s", &tmp.data.data_podkl);
- if (tmp.data.data_podkl[2]!='.' || tmp.data.data_podkl[5]!='.' || strlen(tmp.data.data_podkl)!=10){
- printf("Неверный формат\n");
- pause;
- return;
- }
- if (tmp.data.data_podkl[3]=='0' && tmp.data.data_podkl[4]=='2' && tmp.data.data_podkl[0]>'2'){
- printf("Неверная дата\n");
- pause;
- return;
- }
- else if (tmp.data.data_podkl[0]>'3' || (tmp.data.data_podkl[0]=='3' && tmp.data.data_podkl[1]>'1')){
- printf("Неверная дата\n");
- pause;
- return;
- }
- if (tmp.data.data_podkl[3]>'1' || (tmp.data.data_podkl[3]=='1' && tmp.data.data_podkl[4]>'2')){
- printf("Неверная дата\n");
- pause;
- return;
- }
- if (tmp.data.data_podkl[6]!='2' || (tmp.data.data_podkl[6]=='2' && tmp.data.data_podkl[7]!='0')){
- printf("Неверная дата\n");
- pause;
- return;
- }
- if (strlen(tmp.data.data_podkl)>10){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- tmp.balans=atof(str);
- abonent[razmer_abonent]=tmp;
- razmer_abonent++;
- write_abonent();
- }
- void delete_abonent(){
- print_abonent();
- char fam[size],name[size];
- printf("Введите фамилию и имя: ");
- scanf("%s%s", &fam,&name);
- int i,j,k;
- for (i=0;i<razmer_bio;i++){
- if (strcmp(name,bio[i].imya)==0 && strcmp(fam,bio[i].familiya)==0){
- for (j=0;j<razmer_abonent;j++){
- if (abonent[j].bio_id==bio[i].bio_id){
- razmer_abonent--;
- for (k=j;k<razmer_abonent;k++){
- abonent[k]=abonent[k+1];
- }
- break;
- }
- }
- write_abonent();
- return;
- }
- }
- }
- void change_abonent(){
- cls;
- double floattmp;
- char name[size],fam[size];
- char str[size];
- int ind=-1;
- int i,j,k;
- struct shablon_abonent tmp;
- char tarifname[size];
- print_bio();
- printf("Введите фамилию и имя: ");
- scanf("%s %s", &fam, &name);
- for (i=0;i<razmer_bio;i++){
- if (strcmp(name,bio[i].imya)==0 && strcmp(fam,bio[i].familiya)==0){
- for (j=0;j<razmer_abonent;j++){
- if (abonent[j].bio_id==bio[i].bio_id){
- ind=j;
- break;
- }
- }
- }
- }
- if (ind==-1){
- printf("Неверное фамилия и имя\n");
- pause;
- return;
- }
- int flag1=1;
- char x;
- int floating=0;
- while (flag1){
- cls;
- printf("Изменить абонента\n1)Личную информацию\n2)Тариф\n3)Баланс\n4)Дату подключения\n5)Выход\n");
- x=getch();
- switch (x){
- case '1':
- print_bio();
- printf("Введите фамилию и имя: ");
- tmp.bio_id=-1;
- scanf("%s %s", &fam, &name);
- for (i=0;i<razmer_bio;i++){
- if (strcmp(fam,bio[i].familiya)==0 && strcmp(name,bio[i].imya)==0){
- tmp.bio_id=bio[i].bio_id;
- break;
- }
- }
- if (tmp.bio_id==-1){
- printf("Неверные данные\n");
- pause;
- return;
- }
- abonent[ind].bio_id=tmp.bio_id;
- write_abonent();
- break;
- case '2':
- print_tarif();
- printf("Введите название тарифа: ");
- tmp.tarif_id=-1;
- scanf("%s", &tarifname);
- for (i=0;i<razmer_tarif;i++){
- if (strcmp(tarif[i].name,tarifname)==0){
- tmp.tarif_id=tarif[i].tarif_id;
- break;
- }
- }
- if (tmp.tarif_id==-1){
- printf("Неверные данные\n");
- pause;
- return;
- }
- abonent[ind].tarif_id=tmp.tarif_id;
- write_abonent();
- break;
- case '3':
- printf("Введите баланс: ");
- fflush(stdin);
- if (scanf("%lf", &floattmp)!=1){
- printf("Ошибка\n");
- fflush(stdin);
- pause;
- return;
- }
- tmp.balans=floattmp;
- abonent[ind].balans=tmp.balans;
- write_abonent();
- break;
- case '4':
- printf("Введите дату подключения: ");
- scanf("%s", &tmp.data.data_podkl);
- if (tmp.data.data_podkl[2]!='.' || tmp.data.data_podkl[5]!='.' || strlen(tmp.data.data_podkl)!=10){
- printf("Неверный формат\n");
- pause;
- return;
- }
- if (strlen(tmp.data.data_podkl)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- strcpy(abonent[ind].data.data_podkl,tmp.data.data_podkl);
- write_abonent();
- break;
- case '5':
- flag1=0;
- break;
- default:
- break;
- }
- }
- }
- void search_abonent(){
- cls;
- char str[size];
- int i,j,k;
- char tmp[size];
- int flag1=1;
- int flag=0;
- char x;
- double tmpdouble;
- while (flag1){
- cls;
- printf("Поиск абонента\n1)По фамилии\n2)По имени\n3)По отчеству\n4)По тарифу\n5)По балансу\n6)По дате подключения\n7)Выход\n");
- x=getch();
- switch (x){
- case '1':
- flag=0;
- printf("Введите фамилию: ");
- scanf("%s", &tmp);
- cls;
- for (i=0;i<razmer_bio;i++){
- if (strcmp(tmp,bio[i].familiya)==0){
- for (j=0;j<razmer_abonent;j++){
- if (abonent[j].bio_id==bio[i].bio_id){
- for (k=0;k<razmer_tarif;k++){
- if (tarif[k].tarif_id==abonent[j].tarif_id){
- 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);
- flag=1;
- break;
- }
- }
- }
- }
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '2':
- flag=0;
- printf("Введите имя: ");
- scanf("%s", &tmp);
- cls;
- for (i=0;i<razmer_bio;i++){
- if (strcmp(tmp,bio[i].imya)==0){
- for (j=0;j<razmer_abonent;j++){
- if (abonent[j].bio_id==bio[i].bio_id){
- for (k=0;k<razmer_tarif;k++){
- if (tarif[k].tarif_id==abonent[j].tarif_id){
- 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);
- flag=1;
- break;
- }
- }
- }
- }
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '3':
- flag=0;
- printf("Введите отчество: ");
- scanf("%s", &tmp);
- cls;
- for (i=0;i<razmer_bio;i++){
- if (strcmp(tmp,bio[i].otchestvo)==0){
- for (j=0;j<razmer_abonent;j++){
- if (abonent[j].bio_id==bio[i].bio_id){
- for (k=0;k<razmer_tarif;k++){
- if (tarif[k].tarif_id==abonent[j].tarif_id){
- 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);
- flag=1;
- break;
- }
- }
- }
- }
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '4':
- flag=0;
- printf("Введите название тарифа: ");
- scanf("%s", &tmp);
- cls;
- for (i=0;i<razmer_tarif;i++){
- if (strcmp(tmp,tarif[i].name)==0){
- for (j=0;j<razmer_abonent;j++){
- if (abonent[j].tarif_id==tarif[i].tarif_id){
- for (k=0;k<razmer_bio;k++){
- if (bio[k].bio_id==abonent[j].bio_id){
- 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);
- flag=1;
- break;
- }
- }
- }
- }
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '5':
- flag=0;
- printf("Введите баланс: ");
- scanf("%lf", &tmpdouble);
- fflush(stdin);
- cls;
- for (i=0;i<razmer_abonent;i++){
- if (abonent[i].balans==tmpdouble){
- for (j=0;j<razmer_bio;j++){
- if (bio[j].bio_id==abonent[i].bio_id){
- for (k=0;k<razmer_tarif;k++){
- if (tarif[k].tarif_id==abonent[j].tarif_id){
- 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);
- flag=1;
- break;
- }
- }
- }
- }
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '6':
- flag=0;
- printf("Введите дату подключения: ");
- scanf("%s", &tmp);
- cls;
- for (i=0;i<razmer_abonent;i++){
- if (strcmp(abonent[i].data.data_podkl,tmp)==0){
- for (j=0;j<razmer_bio;j++){
- if (bio[j].bio_id==abonent[i].bio_id){
- for (k=0;k<razmer_tarif;k++){
- if (tarif[k].tarif_id==abonent[j].tarif_id){
- 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);
- flag=1;
- break;
- }
- }
- }
- }
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '7':
- flag1=0;
- break;
- default:
- break;
- }
- }
- }
- void print_abonent(){
- cls;
- int i,j;
- char str[size];
- int bioID,tarifID;
- printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
- printf("||Ф.И.О. ||Название тарифа||Баланс ||Дата подключения ||\n");
- printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
- for (i=0;i<razmer_abonent;i++){
- bioID=-1;
- tarifID=-1;
- for (j=0;j<razmer_bio;j++){
- if (bio[j].bio_id==abonent[i].bio_id){
- bioID=j;
- }
- }
- for (j=0;j<razmer_tarif;j++){
- if (tarif[j].tarif_id==abonent[i].tarif_id){
- tarifID=j;
- }
- }
- if (bioID==-1 || tarifID==-1){
- continue;
- }
- printf("||%s %s %s", bio[bioID].familiya, bio[bioID].imya, bio[bioID].otchestvo);
- for (j=0;j<43-(strlen(bio[bioID].familiya)+strlen(bio[bioID].imya)+strlen(bio[bioID].otchestvo));j++){
- printf(" ");
- }
- printf("||%s", tarif[tarifID].name);
- for (j=0;j<15-strlen(tarif[tarifID].name);j++){
- printf(" ");
- }
- sprintf(str,"%.2lf", abonent[i].balans);
- printf("||%s", str);
- for (j=0;j<15-strlen(str);j++){
- printf(" ");
- }
- printf("||%s", abonent[i].data.data_podkl);
- for (j=0;j<20-strlen(abonent[i].data.data_podkl);j++){
- printf(" ");
- }
- printf("||\n");
- printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
- }
- pause;
- }
- //
- void menu_tarif(){
- int flag1=1;
- char x;
- while (flag1){
- cls;
- printf("Меню тарифов\n1)Добавить\n2)Удалить\n3)Изменить\n4)Искать\n5)Вывод\n6)Выход\n");
- x=getch();
- switch (x){
- case '1':
- add_tarif();
- break;
- case '2':
- delete_tarif();
- break;
- case '3':
- change_tarif();
- break;
- case '4':
- search_tarif();
- break;
- case '5':
- print_tarif();
- break;
- case '6':
- flag1=0;
- break;
- default:
- break;
- }
- }
- }
- void add_tarif(){
- cls;
- struct shablon_tarif tmp;
- char str[size];
- int i;
- printf("Введите название тарифа: ");
- scanf("%s", &tmp.name);
- for (i=0;i<strlen(tmp.name);i++)
- {
- if(tmp.name[i]>47&&tmp.name[i]<58)
- {
- printf("Ошибка\n");
- system("pause");
- return;
- }
- }
- if (strlen(tmp.name)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- printf("Введите абонентскую плату: ");
- double floattmp;
- fflush(stdin);
- if (scanf("%lf", &floattmp)!=1){
- printf("Ошибка\n");
- fflush(stdin);
- pause;
- return;
- }
- tmp.plata=floattmp;
- printf("Введите количество мегабайт: ");
- scanf("%s", &str);
- if (strlen(str)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- for (i=0;i<strlen(str);i++){
- if (str[i]<48 || str[i]>57){
- printf("Введены неверные символы\n");
- pause;
- return;
- }
- }
- tmp.megabyte=atoi(str);
- printf("Введите количество минут: ");
- scanf("%s", &str);
- if (strlen(str)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- for (i=0;i<strlen(str);i++){
- if (str[i]<48 || str[i]>57){
- printf("Введены неверные символы\n");
- pause;
- return;
- }
- }
- tmp.minut=atoi(str);
- printf("Введите количество смс: ");
- scanf("%s", &str);
- if (strlen(str)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- for (i=0;i<strlen(str);i++){
- if (str[i]<48 || str[i]>57){
- printf("Введены неверные символы\n");
- pause;
- return;
- }
- }
- tmp.sms=atoi(str);
- tmp.tarif_id=tarif_id_kol;
- tarif_id_kol++;
- tarif[razmer_tarif]=tmp;
- razmer_tarif++;
- write_tarif();
- }
- void delete_tarif(){
- cls;
- int i,j;
- char name[size];
- print_tarif();
- printf("Введите название удаляемого тарфиа: ");
- scanf("%s", &name);
- for (i=0;i<razmer_tarif;i++){
- if (strcmp(name,tarif[i].name)==0){
- razmer_tarif--;
- for (j=i;j<razmer_tarif;j++){
- tarif[j]=tarif[j+1];
- }
- write_tarif();
- break;
- }
- }
- }
- void change_tarif(){
- cls;
- double floattmp;
- char name[size];
- char str[size];
- int ind=-1;
- int i;
- struct shablon_tarif tmp;
- int floating=0;
- print_tarif();
- printf("Введите название: ");
- scanf("%s", &name);
- for (i=0;i<razmer_tarif;i++){
- if (strcmp(name,tarif[i].name)==0){
- ind=i;
- break;
- }
- }
- if (ind==-1){
- printf("Неверное название\n");
- pause;
- return;
- }
- int flag1=1;
- char x;
- while (flag1){
- cls;
- printf("Изменить тариф\n1)Название\n2)Плату\n3)Мегабайты\n4)Минуты\n5)СМС\n6)Выход\n");
- x=getch();
- switch (x){
- case '1':
- printf("Введите новое название: ");
- scanf("%s", tmp.name);
- if (strlen(tmp.name)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- strcpy(tarif[ind].name,tmp.name);
- write_tarif();
- break;
- case '2':
- printf("Введите новую абонентскую плату: ");
- fflush(stdin);
- if (scanf("%lf", &floattmp)!=1){
- printf("Ошибка\n");
- fflush(stdin);
- pause;
- return;
- }
- tmp.plata=floattmp;
- tarif[ind].plata=tmp.plata;
- write_tarif();
- break;
- case '3':
- printf("Введите новое количество мегабайт: ");
- scanf("%s", &str);
- if (strlen(str)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- for (i=0;i<strlen(str);i++){
- if (str[i]<48 || str[i]>57){
- printf("Введены неверные символы\n");
- pause;
- return;
- }
- }
- tmp.megabyte=atoi(str);
- tarif[ind].megabyte=tmp.megabyte;
- write_tarif();
- break;
- case '4':
- printf("Введите новое количество минут: ");
- scanf("%s", &str);
- if (strlen(str)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- for (i=0;i<strlen(str);i++){
- if (str[i]<48 || str[i]>57){
- printf("Введены неверные символы\n");
- pause;
- return;
- }
- }
- tmp.minut=atoi(str);
- tarif[ind].minut=tmp.minut;
- write_tarif();
- break;
- case '5':
- printf("Введите новое количество смс: ");
- scanf("%s", &str);
- if (strlen(str)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- for (i=0;i<strlen(str);i++){
- if (str[i]<48 || str[i]>57){
- printf("Введены неверные символы\n");
- pause;
- return;
- }
- }
- tmp.sms=atoi(str);
- tarif[ind].sms=tmp.sms;
- write_tarif();
- break;
- case '6':
- flag1=0;
- break;
- default:
- break;
- }
- }
- }
- void search_tarif(){
- cls;
- char str[size];
- int i;
- struct shablon_tarif tmp;
- int flag1=1;
- int flag=0;
- char x;
- while (flag1){
- cls;
- printf("Поиск тарифа\n1)Название\n2)Плату\n3)Мегабайты\n4)Минуты\n5)СМС\n6)Выход\n");
- x=getch();
- switch (x){
- case '1':
- flag=0;
- printf("Введите название: ");
- scanf("%s", tmp.name);
- fflush(stdin);
- cls;
- for (i=0;i<razmer_tarif;i++){
- if (strcmp(tmp.name,tarif[i].name)==0){
- 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);
- flag=1;
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '2':
- flag=0;
- printf("Введите плату: ");
- scanf("%lf", &tmp.plata);
- fflush(stdin);
- cls;
- for (i=0;i<razmer_tarif;i++){
- if (tmp.plata==tarif[i].plata){
- 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);
- flag=1;
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '3':
- flag=0;
- printf("Введите количество мегабайт: ");
- scanf("%d", &tmp.megabyte);
- fflush(stdin);
- cls;
- for (i=0;i<razmer_tarif;i++){
- if (tmp.megabyte==tarif[i].megabyte){
- 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);
- flag=1;
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '4':
- flag=0;
- printf("Введите количество минут: ");
- scanf("%d", &tmp.minut);
- fflush(stdin);
- cls;
- for (i=0;i<razmer_tarif;i++){
- if (tmp.minut==tarif[i].minut){
- 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);
- flag=1;
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '5':
- flag=0;
- printf("Введите количество смс: ");
- scanf("%d", &tmp.sms);
- fflush(stdin);
- cls;
- for (i=0;i<razmer_tarif;i++){
- if (tmp.sms==tarif[i].sms){
- 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);
- flag=1;
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '6':
- flag1=0;
- break;
- default:
- break;
- }
- }
- }
- void print_tarif(){
- cls;
- int i,j;
- char str[size];
- printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
- printf("||Название ||Плата ||Мегабайт ||Минут ||СМС ||\n");
- printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
- for (i=0;i<razmer_tarif;i++){
- printf("||%s", tarif[i].name);
- for (j=0;j<15-strlen(tarif[i].name);j++){
- printf(" ");
- }
- sprintf(str,"%.2lf", tarif[i].plata);
- printf("||%s", str);
- for (j=0;j<15-strlen(str);j++){
- printf(" ");
- }
- itoa(tarif[i].megabyte,str,10);
- printf("||%s", str);
- for (j=0;j<10-strlen(str);j++){
- printf(" ");
- }
- itoa(tarif[i].minut,str,10);
- printf("||%s", str);
- for (j=0;j<10-strlen(str);j++){
- printf(" ");
- }
- itoa(tarif[i].sms,str,10);
- printf("||%s", str);
- for (j=0;j<10-strlen(str);j++){
- printf(" ");
- }
- printf("||\n");
- printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
- }
- pause;
- }
- //
- void menu_bio(){
- int flag1=1;
- char x;
- while (flag1){
- cls;
- printf("Меню личной информации\n1)Добавить\n2)Удалить\n3)Изменить\n4)Искать\n5)Вывод\n6)Выход\n");
- x=getch();
- switch (x){
- case '1':
- add_bio();
- break;
- case '2':
- delete_bio();
- break;
- case '3':
- change_bio();
- break;
- case '4':
- search_bio();
- break;
- case '5':
- print_bio();
- break;
- case '6':
- flag1=0;
- break;
- default:
- break;
- }
- }
- }
- void add_bio()
- {
- int i;
- cls;
- struct shablon_bio tmp;
- printf("Введите фамилию: ");
- scanf("%s", tmp.familiya);
- for (i=0;i<strlen(tmp.familiya);i++)
- {
- if(tmp.familiya[i]>47&&tmp.familiya[i]<58)
- {
- printf("Ошибка\n");
- system("pause");
- return;
- }
- }
- printf("Введите имя: ");
- scanf("%s", tmp.imya);
- for (i=0;i<strlen(tmp.imya);i++)
- {
- if(tmp.imya[i]>47&&tmp.imya[i]<58)
- {
- printf("Ошибка\n");
- system("pause");
- return;
- }
- }
- printf("Введите отчество: ");
- scanf("%s", tmp.otchestvo);
- for (i=0;i<strlen(tmp.otchestvo);i++)
- {
- if(tmp.otchestvo[i]>47&&tmp.otchestvo[i]<58)
- {
- printf("Ошибка\n");
- system("pause");
- return;
- }
- }
- printf("Введите номер телефона.Ввод должен быть в формате +375...: ");
- scanf("%s", tmp.nomer_telefona);
- if (tmp.nomer_telefona[0]!='+' || tmp.nomer_telefona[1]!='3' || tmp.nomer_telefona[2]!='7' || tmp.nomer_telefona[3]!='5'){
- printf("Неверный формат\n");
- pause;
- return;
- }
- if (strlen(tmp.familiya)>15 || strlen(tmp.nomer_telefona)>15 || strlen(tmp.imya)>15 || strlen(tmp.otchestvo)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- tmp.bio_id=bio_id_kol;
- bio_id_kol++;
- bio[razmer_bio]=tmp;
- razmer_bio++;
- write_bio();
- }
- void delete_bio(){
- cls;
- char fam[size],name[size];
- int i,j;
- print_bio();
- printf("Введите фамилию и имя: ");
- scanf("%s %s", &fam, &name);
- for (i=0;i<razmer_bio;i++){
- if (strcmp(fam,bio[i].familiya)==0 && strcmp(name,bio[i].imya)==0){
- razmer_bio--;
- for (j=i;j<razmer_bio;j++){
- bio[j]=bio[j+1];
- }
- write_bio();
- break;
- }
- }
- }
- void change_bio(){
- cls;
- char name[size],fam[size];
- int ind=-1;
- int i;
- struct shablon_bio tmp;
- print_bio();
- printf("Введите фамилию и имя: ");
- scanf("%s %s", &fam, &name);
- for (i=0;i<razmer_bio;i++){
- if (strcmp(fam,bio[i].familiya)==0 && strcmp(name,bio[i].imya)==0){
- ind=i;
- break;
- }
- }
- if (ind==-1){
- printf("Неверное имя или фамилия\n");
- pause;
- return;
- }
- int flag1=1;
- char x;
- while (flag1){
- cls;
- printf("Изменить личную информацию\n1)Фамилию\n2)Имя\n3)Отчество\n4)Номер телефона\n5)Выход\n");
- x=getch();
- switch (x){
- case '1':
- printf("Введите новую фамилию: ");
- scanf("%s", tmp.familiya);
- for (i=0;i<strlen(tmp.familiya);i++)
- {
- if(tmp.familiya[i]>47&&tmp.familiya[i]<58)
- {
- printf("Ошибка\n");
- system("pause");
- return;
- }
- }
- if (strlen(tmp.familiya)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- strcpy(bio[ind].familiya,tmp.familiya);
- write_bio();
- break;
- case '2':
- printf("Введите новое имя: ");
- scanf("%s", tmp.imya);
- for (i=0;i<strlen(tmp.imya);i++)
- {
- if(tmp.imya[i]>47&&tmp.imya[i]<58)
- {
- printf("Ошибка\n");
- system("pause");
- return;
- }
- }
- if (strlen(tmp.imya)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- strcpy(bio[ind].imya,tmp.imya);
- write_bio();
- break;
- case '3':
- printf("Введите новое отчество: ");
- scanf("%s", tmp.otchestvo);
- for (i=0;i<strlen(tmp.otchestvo);i++)
- {
- if(tmp.otchestvo[i]>47&&tmp.otchestvo[i]<58)
- {
- printf("Ошибка\n");
- system("pause");
- return;
- }
- }
- if (strlen(tmp.otchestvo)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- strcpy(bio[ind].otchestvo,tmp.otchestvo);
- write_bio();
- break;
- case '4':
- printf("Введите новый номер телефона: ");
- scanf("%s", tmp.nomer_telefona);
- if (strlen(tmp.nomer_telefona)>15){
- printf("Превышена допустимая длина\n");
- pause;
- return;
- }
- if (tmp.nomer_telefona[0]!='+' || tmp.nomer_telefona[1]!='3' || tmp.nomer_telefona[2]!='7' || tmp.nomer_telefona[3]!='5'){
- printf("Неверный формат\n");
- pause;
- return;
- }
- strcpy(bio[ind].nomer_telefona,tmp.nomer_telefona);
- write_bio();
- break;
- case '5':
- flag1=0;
- break;
- default:
- break;
- }
- }
- }
- void search_bio(){
- struct shablon_bio tmp;
- int i;
- int flag1=1;
- int flag=0;
- char x;
- while (flag1){
- cls;
- printf("Поиск личной информации\n1)Фамилию\n2)Имя\n3)Отчество\n4)Номер телефона\n5)Выход\n");
- x=getch();
- switch (x){
- case '1':
- flag=0;
- printf("Введите фамилию: ");
- scanf("%s", tmp.familiya);
- cls;
- for (i=0;i<razmer_bio;i++){
- if (strcmp(tmp.familiya,bio[i].familiya)==0){
- printf("%s %s %s\n%s\n\n", bio[i].familiya, bio[i].imya, bio[i].otchestvo, bio[i].nomer_telefona);
- flag=1;
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '2':
- flag=0;
- printf("Введите имя: ");
- scanf("%s", tmp.imya);
- cls;
- for (i=0;i<razmer_bio;i++){
- if (strcmp(tmp.imya,bio[i].imya)==0){
- printf("%s %s %s\n%s\n\n", bio[i].familiya, bio[i].imya, bio[i].otchestvo, bio[i].nomer_telefona);
- flag=1;
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '3':
- flag=0;
- printf("Введите отчество: ");
- scanf("%s", tmp.otchestvo);
- cls;
- for (i=0;i<razmer_bio;i++){
- if (strcmp(tmp.otchestvo,bio[i].otchestvo)==0){
- printf("%s %s %s\n%s\n\n", bio[i].familiya, bio[i].imya, bio[i].otchestvo, bio[i].nomer_telefona);
- flag=1;
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '4':
- flag=0;
- printf("Введите номер телефона: ");
- scanf("%s", tmp.nomer_telefona);
- cls;
- for (i=0;i<razmer_bio;i++){
- if (strcmp(tmp.nomer_telefona,bio[i].nomer_telefona)==0){
- printf("%s %s %s\n%s\n\n", bio[i].familiya, bio[i].imya, bio[i].otchestvo, bio[i].nomer_telefona);
- flag=1;
- }
- }
- if (flag==0){
- printf("Результатов не найдено\n");
- }
- pause;
- break;
- case '5':
- flag1=0;
- break;
- default:
- break;
- }
- }
- }
- void print_bio(){
- cls;
- int i,j;
- printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
- printf("||Фамилия ||Имя ||Отчество ||Телефон ||\n");
- printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
- for (i=0;i<razmer_bio;i++){
- printf("||%s", bio[i].familiya);
- for (j=0;j<15-strlen(bio[i].familiya);j++){
- printf(" ");
- }
- printf("||%s", bio[i].imya);
- for (j=0;j<15-strlen(bio[i].imya);j++){
- printf(" ");
- }
- printf("||%s", bio[i].otchestvo);
- for (j=0;j<15-strlen(bio[i].otchestvo);j++){
- printf(" ");
- }
- printf("||%s", bio[i].nomer_telefona);
- for (j=0;j<15-strlen(bio[i].nomer_telefona);j++){
- printf(" ");
- }
- printf("||\n");
- printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
- }
- pause;
- }
- void ind_zadanie(void){
- cls;
- int i,j,tmp,id;
- int kolichestvo[razmer_tarif];
- struct shablon_tarif temp;
- for (i=0;i<razmer_tarif;i++){
- kolichestvo[i]=0;
- }
- for (i=0;i<razmer_tarif;i++){
- for (j=0;j<razmer_abonent;j++){
- if (abonent[j].tarif_id==tarif[i].tarif_id){
- kolichestvo[i]++;
- }
- }
- }
- for (i=0;i<razmer_tarif-1;i++){
- id=i;
- for (j=i+1;j<razmer_tarif;j++){
- if (kolichestvo[j]>kolichestvo[id]){
- id=j;
- }
- }
- tmp=kolichestvo[id];
- temp=tarif[id];
- kolichestvo[id]=kolichestvo[i];
- tarif[id]=tarif[i];
- kolichestvo[i]=tmp;
- tarif[i]=temp;
- }
- printf("Самый популярный тариф: %s\n", tarif[0].name);
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement