Індувідуальне завдання #include <stdio.h> #include <string.h> #include <conio.h> #include <stdlib.h> #define ROWS 0 #define MAXNAME 40 #define MAXSERVICE 20 #define MAXCOOPERATION 30 #define MAXRECREATION 30 #define MAXSITE 10 #define MAXPHONENUMBER 20 #define MAXMAIL 20 #define MAXFAXNUMBER 10 #define MAXADDRESS 10 char nameOfDatabase[20]; FILE *f; FILE *fTemp; struct travel { int ID; char name[MAXNAME]; char cooperation[MAXCOOPERATION]; char recreation[MAXRECREATION]; char service[MAXSERVICE]; char phone_number[MAXPHONENUMBER]; char mail[MAXMAIL]; char site[MAXSITE]; int founded_in; char fax_number[MAXFAXNUMBER]; int rate; char address[MAXADDRESS]; }; struct travelM2Edit { int ID; char name[MAXNAME]; char cooperation[MAXCOOPERATION]; char recreation[MAXRECREATION]; char service[MAXSERVICE]; char phone_number[MAXPHONENUMBER]; char mail[MAXMAIL]; char site[MAXSITE]; int founded_in; char fax_number[MAXFAXNUMBER]; int rate; char address[MAXADDRESS]; int what; int whatEdit; }; void addElementInDatabase(struct travel addTravel); void deleteElementInDatabase(int); void edit(int,int,struct travel addTravel); void revision(); void search(int,struct travel addTravel); int main(void) { int methodBool=0; //Змінна для перевірки вибору методу. int back=1; //Змінна для перевірки чи потрібно виводити головне меню. int method; //method - змінна для збереження вибору методу. int menuItem,menuExit=7,menuExit2=5;// menuItem - змінна для зберігання вибору пункту головного меню, menuExit - змінна для перевірки виходу з програми. int menuItemP; //Змінна для зберігання вибору підменю кожного меню. int yes_no; //Змінна для перевірки вибору меню кожного підменю. int backGo; //Змінна для перевірки нажато "0" для виходу в гол. меню. int yes_norate=0; //Змінна для перевірки вибору оцінки гри. int ID; //ID - елемента, який потрібно видалити або редагувати. char nameOfFile[20]; //Змінна для збереження назви нової бази даних. FILE *fileDatabase; //Мітка для файлу ств. бази даних. struct travel workTravel; system("cls"); //***Вибір методу роботи з файлом бази даних. printf("Choose the method of work with the database:\n\n"); printf("1. Sequential access to the file.\n"); printf("2. Access to the files with the batch-processing of information.\n\n"); printf("Choose and enter one of menu items: "); scanf("%d",&method); //**Перевірка вибраний пункт меню чи ні. do { if (method==1 || method==2) { methodBool=1; } else { printf("You have not chosen any menu item. Please enter once again: "); scanf("%d",&method); } } while (methodBool != 1); //**Кінець - Перевірка вибраний пункт меню чи ні. //***Кінець - Вибір методу роботи з файлом бази даних. //***Перший метод. if (method==1) { //***Перевірка виходу з програми. do { //***Перевірка виводу головного меню. if (back==1) { system("cls"); printf(" You chosen a method 1.\n"); printf(" Menu:\n1. Creation a database.\n2. Insert the element in a database (ID).\n3. Delete of element. \n4. Editing is after the key field. \n5. Revision bases given. \n6. Search in the database. \n7. Close a programm.\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItem); } //***Кінець - Перевірка виводу головного меню. //**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ВИБІР ПУНКТУ '1'.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ if (menuItem==1) { menuItemP=0; printf("\n Do you want to create a new database? The old database will be deleted.\n"); printf("1. Yes\n2. No\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemP); //**Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1 || menuItemP==2) { yes_no=1; } else { yes_no=0; } //*Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. while (yes_no!=1) { printf("You have not chosen any menu item. Please enter once again: "); scanf("%d",&menuItemP); if (menuItemP==1 || menuItemP==2) { yes_no=1; } } //*Кінець - Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. //**Кінець - Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1) { //Потрібно створювати базу даних??? printf("\nEnter name of the file (MAX-20): "); scanf("%s",&nameOfFile); //Введення назви файлу бази даних. strcat(nameOfFile,".txt"); //Додавання розширення .txt до імені. //**Перевірка чи створений файл бази даних чи ні та виведення результату. if ((fileDatabase=fopen(nameOfFile,"w")) == NULL) { printf("\nAn error is at creation of file. %s.",nameOfFile); } else { printf("\nA file is successfully creation. Name of file %s.",nameOfFile); } //**Кінець - Перевірка чи створений файл бази даних чи ні та виведення результату. //*Перевірка чи закритий файл бази даних чи ні та виведення результату. if (fclose(fileDatabase) != 0) { printf("\nAn error is at closing of file %s.",nameOfFile); } else { printf("\nA file is successfully closed."); } //*Кінець - Перевірка чи закритий файл бази даних чи ні та виведення результату. } //**Повернення в головне меню. printf("\nEnter '0' for returning in a main menu: "); scanf("%d",&backGo); while (backGo!=0) { printf("You have not enter '0'. Please enter once again: "); scanf("%d",&backGo); } //**Кінець - Повернення в головне меню. back=1; //Вивід головного меню дозволений. } //**Кінець - Вибір пункту 1. //**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ВИБІР ПУНКТУ '2'.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. else if (menuItem==2) { menuItemP=0; printf("\n Do you want to insert a new element in a database?\n"); printf("1. Yes\n2. No\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemP); //**Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1 || menuItemP==2) { yes_no=1; } else { yes_no=0; } //*Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. while (yes_no!=1) { printf("You have not chosen any menu item. Please enter once again: "); scanf("%d",&menuItemP); if (menuItemP==1 || menuItemP==2) { yes_no=1; } } //*Кінець - Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. //**Кінець - Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1) { printf("\nEnter the name database which you want to open (MAX-20): "); scanf("%s",&nameOfDatabase); //Введення назви файлу бази даних. strcat(nameOfDatabase,".txt"); //Додавання розширення .txt до імені. //***Введення даних. printf("\nEnter next information for a record in a database."); printf("\n1. Enter ID of travel agency: "); scanf("%d",&workTravel.ID); printf("2. Enter name of the travel company (MAX-40): "); scanf("%s",&workTravel.name); printf("3. Enter service (MAX-10): "); scanf("%s",&workTravel.service); printf("4. Enter cooperation (MAX-30): "); scanf("%s",&workTravel.cooperation); printf("5. Enter recreation (MAX-30): "); scanf("%s",&workTravel.recreation); printf("6. Enter the site (MAX-10): "); scanf("%s",&workTravel.site); printf("7. Enter phone number (MAX-20): "); scanf("%s",&workTravel.phone_number); printf("8. Enter mail (MAX-20): "); scanf("%s",&workTravel.mail); printf("9. Enter fax number (MAX-10): "); scanf("%s",&workTravel.fax_number); printf("10. Enter address (MAX-10): "); scanf("%s",&workTravel.address); printf("11. Enter founded in (MAX-3): "); scanf("%d",&workTravel.founded_in); printf("12. Enter rate (1,2,3,4,5) : "); scanf("%d",&workTravel.rate); if (workTravel.rate==1 || workTravel.rate==2 || workTravel.rate==3 || workTravel.rate==4 || workTravel.rate== 5) { yes_norate=1; } while (yes_norate!=1) { printf("You have not enter 1, 2, 3, 4 or 5. Please enter once again: "); scanf("%d",&workTravel.rate); if (workTravel.rate==1 || workTravel.rate==2 || workTravel.rate==3 || workTravel.rate==4 || workTravel.rate== 5) { yes_norate=1; } } //***Кінець - Введення даних. //**Вивід даних. printf("\n----------------------------------"); printf("\nYour dates:\n"); printf("\nID: %d\nservice: %s\nName: %s\ncooperation: %s\nrecreation: %s\nThe site: %s\nPhone number: %s\nMail: %s\nFax number: %s\nAddress: %s\nFounded IN: %d\nRate: %d\n",workTravel.ID,workTravel.service,workTravel.name,workTravel.cooperation,workTravel.recreation,workTravel.site,workTravel.phone_number,workTravel.mail,workTravel.fax_number,workTravel.address,workTravel.founded_in,workTravel.rate); printf("\n----------------------------------\n"); //**Кінець - Вивід даних. addElementInDatabase(workTravel); } //**Повернення в головне меню. printf("\nEnter '0' for returning in a main menu: "); scanf("%d",&backGo); while (backGo!=0) { printf("You have not enter '0'. Please enter once again: "); scanf("%d",&backGo); } //**Кінець - Повернення в головне меню. back=1; } //**Кінець - Вибір пункту 2. //**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ВИБІР ПУНКТУ '3'.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. else if (menuItem==3) { menuItemP=0; printf("\n Do you want to delete an element in a database?\n"); printf("1. Yes\n2. No\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemP); //**Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1 || menuItemP==2) { yes_no=1; } else { yes_no=0; } //*Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. while (yes_no!=1) { printf("You have not chosen any menu item. Please enter once again: "); scanf("%d",&menuItemP); if (menuItemP==1 || menuItemP==2) { yes_no=1; } } //*Кінець - Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. //**Кінець - Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1) { printf("\nEnter the name database which you want to open (MAX-20): "); scanf("%s",&nameOfDatabase); //Введення назви файлу бази даних. strcat(nameOfDatabase,".txt"); //Додавання розширення .txt до імені. //***Введення даних. printf("\nEnter ID of element to delete: "); scanf("%d",&ID); deleteElementInDatabase(ID); } //**Повернення в головне меню. printf("\nEnter '0' for returning in a main menu: "); scanf("%d",&backGo); while (backGo!=0) { printf("You have not enter '0'. Please enter once again: "); scanf("%d",&backGo); } //**Кінець - Повернення в головне меню. back=1; } //**Кінець - Вибір пункту 3. //**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ВИБІР ПУНКТУ '4'.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. else if (menuItem==4) { menuItemP=0; printf("\n Do you want to edit an element in a database?\n"); printf("1. Yes\n2. No\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemP); //**Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1 || menuItemP==2) { yes_no=1; } else { yes_no=0; } //*Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. while (yes_no!=1) { printf("You have not chosen any menu item. Please enter once again: "); scanf("%d",&menuItemP); if (menuItemP==1 || menuItemP==2) { yes_no=1; } } //*Кінець - Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. //**Кінець - Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1) { printf("\nEnter the name database which you want to open (MAX-20): "); scanf("%s",&nameOfDatabase); //Введення назви файлу бази даних. strcat(nameOfDatabase,".txt"); //Додавання розширення .txt до імені. //***Введення даних. printf("\nEnter ID of element to edit: "); scanf("%d",&ID); yes_no=0; int menuItemEdit; //Змінна для збереження вибору меню. int elemEdit=0; //Який елемент маэ бути відредагований. while (yes_no!=1) { system("cls"); printf("\nWhat you want to edit: "); printf("\n1. service\n2. Name\n3. cooperation\n4. recreation\n5. The site\n6. Phone number\n7. Mail\n8. Fax number\n9. Address\n10. Founded in\n11. Rate\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemEdit); if (menuItemEdit==1) { printf("Enter service (MAX-10): "); scanf("%s",&workTravel.service); elemEdit=1; edit(ID,elemEdit,workTravel); } else if (menuItemEdit==2) { printf("Enter name (MAX-40): "); scanf("%s",&workTravel.name); elemEdit=2; edit(ID,elemEdit,workTravel); } else if (menuItemEdit==3) { printf("Enter cooperation (MAX-30): "); scanf("%s",&workTravel.cooperation); elemEdit=3; edit(ID,elemEdit,workTravel); } else if (menuItemEdit==4) { printf("Enter recreation (MAX-30): "); scanf("%s",&workTravel.recreation); elemEdit=4; edit(ID,elemEdit,workTravel); } else if (menuItemEdit==5) { printf("Enter site (MAX-10): "); scanf("%s",&workTravel.site); elemEdit=5; edit(ID,elemEdit,workTravel); } else if (menuItemEdit==6) { printf("Enter phone number (MAX-20): "); scanf("%s",&workTravel.phone_number); elemEdit=6; edit(ID,elemEdit,workTravel); } else if (menuItemEdit==7) { printf("Enter mail (MAX-20): "); scanf("%s",&workTravel.mail); elemEdit=7; edit(ID,elemEdit,workTravel); } else if (menuItemEdit==8) { printf("Enter fax number (MAX-10): "); scanf("%s",&workTravel.fax_number); elemEdit=8; edit(ID,elemEdit,workTravel); } else if (menuItemEdit==9) { printf("Enter address (MAX-10): "); scanf("%s",&workTravel.address); elemEdit=9; edit(ID,elemEdit,workTravel); } else if (menuItemEdit==10) { printf("Enter date : "); scanf("%d",&workTravel.founded_in); elemEdit=10; edit(ID,elemEdit,workTravel); } else if (menuItemEdit==11) { printf("Enter rate: "); scanf("%d",&workTravel.rate); elemEdit=11; edit(ID,elemEdit,workTravel); } yes_no=1; } } //**Повернення в головне меню. printf("\nEnter '0' for returning in a main menu: "); scanf("%d",&backGo); while (backGo!=0) { printf("You have not enter '0'. Please enter once again: "); scanf("%d",&backGo); } //**Кінець - Повернення в головне меню. back=1; } //**Кінець - Вибір пункту 4. //**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ВИБІР ПУНКТУ '5'.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. else if (menuItem==5) { menuItemP=0; printf("\n Do you want to revision a database?\n"); printf("1. Yes\n2. No\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemP); //**Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1 || menuItemP==2) { yes_no=1; } else { yes_no=0; } //*Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. while (yes_no!=1) { printf("You have not chosen any menu item. Please enter once again: "); scanf("%d",&menuItemP); if (menuItemP==1 || menuItemP==2) { yes_no=1; } } //*Кінець - Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. //**Кінець - Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1) { printf("\nEnter the name database which you want to open (MAX-20): "); scanf("%s",&nameOfDatabase); //Введення назви файлу бази даних. strcat(nameOfDatabase,".txt"); //Додавання розширення .txt до імені. //***Введення даних. revision(); } //**Повернення в головне меню. printf("\nEnter '0' for returning in a main menu: "); scanf("%d",&backGo); while (backGo!=0) { printf("You have not enter '0'. Please enter once again: "); scanf("%d",&backGo); } //**Кінець - Повернення в головне меню. back=1; } //**Кінець - Вибір пункту 5. //**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ВИБІР ПУНКТУ '6'.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. else if (menuItem==6) { menuItemP=0; printf("\n Do you want to search in database?\n"); printf("1. Yes\n2. No\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemP); //**Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1 || menuItemP==2) { yes_no=1; } else { yes_no=0; } //*Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. while (yes_no!=1) { printf("You have not chosen any menu item. Please enter once again: "); scanf("%d",&menuItemP); if (menuItemP==1 || menuItemP==2) { yes_no=1; } } //*Кінець - Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. //**Кінець - Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1) { printf("\nEnter the name database which you want to open (MAX-20): "); scanf("%s",&nameOfDatabase); //Введення назви файлу бази даних. strcat(nameOfDatabase,".txt"); //Додавання розширення .txt до імені. //***Введення даних. yes_no=0; int menuItemSearch; //Змінна для збереження вибору меню. int elemSearch=0; //Який елемент маэ бути відредагований. while (yes_no!=1) { system("cls"); printf("\nWhat you want to edit: "); printf("\n1. service\n2. Name\n3. cooperation\n4. recreation\n5. the site\n6. phone_number\n7. mail\n8. fax_number\n9. address\n10. founded_in\n11. rate\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemSearch); if (menuItemSearch==1) { printf("Enter service (MAX-10): "); scanf("%s",&workTravel.service); elemSearch=1; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==2) { printf("Enter name (MAX-40): "); scanf("%s",&workTravel.name); elemSearch=2; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==3) { printf("Enter cooperation (MAX-30): "); scanf("%s",&workTravel.cooperation); elemSearch=3; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==4) { printf("Enter recreation (MAX-30): "); scanf("%s",&workTravel.recreation); elemSearch=4; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==5) { printf("Enter the site (MAX-10): "); scanf("%s",&workTravel.site); elemSearch=5; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==6) { printf("Enter phone number (MAX-20): "); scanf("%s",&workTravel.phone_number); elemSearch=6; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==7) { printf("Enter mail (MAX-20): "); scanf("%s",&workTravel.mail); elemSearch=7; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==8) { printf("Enter fax number (MAX-10): "); scanf("%s",&workTravel.fax_number); elemSearch=8; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==9) { printf("Enter address (MAX-10): "); scanf("%s",&workTravel.address); elemSearch=9; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==10) { printf("Enter year: "); scanf("%d",&workTravel.founded_in); elemSearch=10; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==11) { printf("Enter rate: "); scanf("%d",&workTravel.rate); elemSearch=11; search(elemSearch,workTravel); yes_no=1; } } } //**Повернення в головне меню. printf("\nEnter '0' for returning in a main menu: "); scanf("%d",&backGo); while (backGo!=0) { printf("You have not enter '0'. Please enter once again: "); scanf("%d",&backGo); } //**Кінець - Повернення в головне меню. back=1; } //**Кінець - Вибір пункту 6. //**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ВИБІР ПУНКТУ '7'.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. else if (menuItem==7) { printf("Thanks for using a programm. Good bye!!!\n"); } //**Кінець - Вибір пункту 7. //**Не вибрано жодного пункту. else { printf("You have not chosen any menu item. Please enter once again: "); scanf("%d",&menuItem); back=0; } //**Кінець - Не вибрано жодного пункту. } while (menuItem != menuExit); //***Кінець - Перевірка виходу з програми. } //***Кінець - Перший метод. //?????????????????????????????????????????????????????????????????????????????????????????????? //Другий метод else if (method==2) { do { //***Перевірка виводу головного меню. if (back==1) { system("cls"); printf(" You chosen a method 1.\n"); printf(" Menu:\n1. Creat a new database.\n2. Main funcions. \n3. Revision bases given. \n4. Search in the database. \n5. Close a programm.\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItem); } //***Кінець - Перевірка виводу головного меню. //**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ВИБІР ПУНКТУ '1'.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ if (menuItem==1) { menuItemP=0; printf("\n Do you want to create a new database? The old database will be deleted.\n"); printf("1. Yes\n2. No\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemP); //**Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1 || menuItemP==2) { yes_no=1; } else { yes_no=0; } //*Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. while (yes_no!=1) { printf("You have not chosen any menu item. Please enter once again: "); scanf("%d",&menuItemP); if (menuItemP==1 || menuItemP==2) { yes_no=1; } } //*Кінець - Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. //**Кінець - Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1) { //Потрібно створювати базу даних??? printf("\nEnter name of the file (MAX-20): "); scanf("%s",&nameOfFile); //Введення назви файлу бази даних. strcat(nameOfFile,".txt"); //Додавання розширення .txt до імені. //**Перевірка чи створений файл бази даних чи ні та виведення результату. if ((fileDatabase=fopen(nameOfFile,"w")) == NULL) { printf("\nAn error is at creation of file. %s.",nameOfFile); } else { printf("\nA file is successfully creation. Name of file %s.",nameOfFile); } //**Кінець - Перевірка чи створений файл бази даних чи ні та виведення результату. //*Перевірка чи закритий файл бази даних чи ні та виведення результату. if (fclose(fileDatabase) != 0) { printf("\nAn error is at closing of file %s.",nameOfFile); } else { printf("\nA file is successfully closed."); } //*Кінець - Перевірка чи закритий файл бази даних чи ні та виведення результату. } //**Повернення в головне меню. printf("\nEnter '0' for returning in a main menu: "); scanf("%d",&backGo); while (backGo!=0) { printf("You have not enter '0'. Please enter once again: "); scanf("%d",&backGo); } //**Кінець - Повернення в головне меню. back=1; //Вивід головного меню дозволений. } //**Кінець - Вибір пункту 1. //**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ВИБІР ПУНКТУ '2'.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. else if (menuItem==2) { menuItemP=0; char words[250]; int n=0; FILE *fGr; printf("\nEnter the name database which you want to open (MAX-20): "); scanf("%s",&nameOfDatabase); //Введення назви файлу бази даних. strcat(nameOfDatabase,".txt"); //Додавання розширення .txt до імені. if ((fileDatabase=fopen(nameOfDatabase,"r+")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } while(fgets(words,250,fileDatabase) != NULL && words[0] != '\n') { n++; } if (fclose(fileDatabase) != 0) { printf("\nAn error is at closing of file %s.",nameOfDatabase); } if ((f=fopen(nameOfDatabase,"r+")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } if ((fTemp=fopen("temp.txt","w")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } if ((fGr=fopen("gr.txt","w")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } yes_no=0; int menuItemF; //Змінна для збереження вибору меню. int nOp=0; //Змінна для збереження операції, яку потрібно зробити(вставка, редагування, видалення) int yes_norate=0; //Змінна для вибору оцінки гри. struct travelM2Edit zenTravel; //Структура потрібна для сортування структур. while (yes_no!=1) { system("cls"); printf("\nWhat you want to do: "); printf("\n1. Add an element.\n2. Edit an element.\n3. Delete an element.\n4. Start a modification of database.\n5. Back.\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemF); //***Введення даних. if (menuItemF==1) { printf("\nEnter next information for a record in a database."); printf("\n1. Enter ID of the travel agency: "); scanf("%d",&zenTravel.ID); printf("2. Enter service (MAX-10): "); scanf("%s",&zenTravel.service); printf("3. Enter name (MAX-40): "); scanf("%s",&zenTravel.name); printf("4. Enter cooperation (MAX-30): "); scanf("%s",&zenTravel.cooperation); printf("5. Enter recreation (MAX-30): "); scanf("%s",&zenTravel.recreation); printf("6. Enter the site (MAX-10): "); scanf("%s",&zenTravel.site); printf("7. Enter phone number (MAX-20): "); scanf("%s",&zenTravel.phone_number); printf("8. Enter mail (MAX-20): "); scanf("%s",&zenTravel.mail); printf("9. Enter fax number (MAX-10): "); scanf("%s",&zenTravel.fax_number); printf("10. Enter address (MAX-10): "); scanf("%s",&zenTravel.address); printf("11. Enter year (MAX-3): "); scanf("%d",&zenTravel.founded_in); printf("12. Enter rate (1,2,3,4 or 5): "); scanf("%d",&zenTravel.rate); if (zenTravel.rate==1 || zenTravel.rate==2 || zenTravel.rate==3 || zenTravel.rate==4 || zenTravel.rate== 5) { yes_norate=1; } while (yes_norate!=1) { printf("You have not enter 1, 2, 3, 4 or 5. Please enter once again: "); scanf("%d",&zenTravel.rate); if (zenTravel.rate==1 || zenTravel.rate==2 || zenTravel.rate==3 || zenTravel.rate==4 || zenTravel.rate== 5) { yes_norate=1; } } //***Кінець - Введення даних. zenTravel.what=1; //Зберігання, що потрібно робити зі структурою. //**Вивід даних. printf("\n----------------------------------"); printf("\nYour dates:\n"); printf("\nID: %d\nservice: %s\nName: %s\ncooperation: %s\nrecreation: %s\nthe site: %s\nphone_number: %s\nmail: %s\nfax_number: %s\naddress: %s\nfounded_in: %d\nrate: %d\nDo: %d\n",zenTravel.ID,zenTravel.service,zenTravel.name,zenTravel.cooperation,zenTravel.recreation,zenTravel.site,zenTravel.phone_number,zenTravel.mail,zenTravel.fax_number,zenTravel.address,zenTravel.founded_in,zenTravel.rate,zenTravel.what); printf("\n----------------------------------\n"); //**Кінець - Вивід даних. nOp++; fprintf(fGr,"%d %d %s ",zenTravel.what, zenTravel.ID,zenTravel.service); fprintf(fGr,"%s %s ",zenTravel.name,zenTravel.cooperation); fprintf(fGr,"%s %s ",zenTravel.recreation,zenTravel.site); fprintf(fGr,"%s %s ",zenTravel.phone_number,zenTravel.mail); fprintf(fGr,"%s %s ",zenTravel.fax_number,zenTravel.address); fprintf(fGr,"%d %d\n",zenTravel.founded_in,zenTravel.rate); } else if (menuItemF==2) { printf("\nEnter ID of element to edit: "); scanf("%d",&zenTravel.ID); zenTravel.what=2; fprintf(fGr,"%d %d ",zenTravel.what, zenTravel.ID); yes_no=0; int menuItemEdit; //Змінна для збереження вибору меню. int yes_noP=0; while (yes_noP!=1) { system("cls"); printf("%d\n",nOp); printf("\nWhat you want to edit: "); printf("\n1. Service\n2. Name\n3. Cooperation\n4. Recreation\n5. The site\n6. Phone number\n7. Mail\n8. Fax number\n9. Address\n10. Founded IN\n11. Rate\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemEdit); if (menuItemEdit==1) { printf("Enter service (MAX-10): "); scanf("%s",&zenTravel.service); zenTravel.whatEdit=1; fprintf(fGr,"%d %s\n",zenTravel.whatEdit, zenTravel.service); yes_noP=1; } else if (menuItemEdit==2) { printf("Enter name (MAX-40): "); scanf("%s",&zenTravel.name); zenTravel.whatEdit=2; fprintf(fGr,"%d %s\n",zenTravel.whatEdit, zenTravel.name); yes_noP=1; } else if (menuItemEdit==3) { printf("Enter cooperation (MAX-30): "); scanf("%s",&zenTravel.cooperation); zenTravel.whatEdit=3; fprintf(fGr,"%d %s\n",zenTravel.whatEdit, zenTravel.cooperation); yes_noP=1; } else if (menuItemEdit==4) { printf("Enter recreation (MAX-30): "); scanf("%s",&zenTravel.recreation); zenTravel.whatEdit=4; fprintf(fGr,"%d %s\n",zenTravel.whatEdit, zenTravel.recreation); yes_noP=1; } else if (menuItemEdit==5) { printf("Enter the site (MAX-10): "); scanf("%s",&zenTravel.site); zenTravel.whatEdit=5; fprintf(fGr,"%d %s\n",zenTravel.whatEdit, zenTravel.site); yes_noP=1; } else if (menuItemEdit==6) { printf("Enter phone number (MAX-20): "); scanf("%s",&zenTravel.phone_number); zenTravel.whatEdit=6; fprintf(fGr,"%d %s\n",zenTravel.whatEdit, zenTravel.phone_number); yes_noP=1; } else if (menuItemEdit==7) { printf("Enter mail (MAX-20): "); scanf("%s",&zenTravel.mail); zenTravel.whatEdit=7; fprintf(fGr,"%d %s\n",zenTravel.whatEdit, zenTravel.mail); yes_noP=1; } else if (menuItemEdit==8) { printf("Enter fax number (MAX-10): "); scanf("%s",&zenTravel.fax_number); zenTravel.whatEdit=8; fprintf(fGr,"%d %s\n",zenTravel.whatEdit, zenTravel.fax_number); yes_noP=1; } else if (menuItemEdit==9) { printf("Enter address (MAX-10): "); scanf("%s",&zenTravel.address); zenTravel.whatEdit=9; fprintf(fGr,"%d %s\n",zenTravel.whatEdit, zenTravel.address); yes_noP=1; } else if (menuItemEdit==10) { printf("Enter year: "); scanf("%d",&zenTravel.founded_in); zenTravel.whatEdit=10; fprintf(fGr,"%d %d\n",zenTravel.whatEdit, zenTravel.founded_in); yes_noP=1; } else if (menuItemEdit==11) { printf("Enter rate: "); scanf("%d",&zenTravel.rate); zenTravel.whatEdit=11; fprintf(fGr,"%d %d\n",zenTravel.whatEdit, zenTravel.rate); yes_noP=1; } } nOp++; } else if (menuItemF==3) { printf("\nEnter ID of element to delete: "); scanf("%d",&zenTravel.ID); zenTravel.what=3; fprintf(fGr,"%d %d\n",zenTravel.what, zenTravel.ID); nOp++; } else if (menuItemF==4) { int i,j; struct travelM2Edit allTravel[20]; //Масив структур для збереження даних; if (fclose(fGr) != 0) { printf("\nAn error is at closing of file gr.txt."); } if ((fGr=fopen("gr.txt","r+")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } printf("\nnOp = %d\n",nOp); for (i=0; i<nOp; i++) { char one[40]; char *end; fscanf(fGr,"%s",&one); allTravel[i].what=strtol(one,&end,10); fscanf(fGr,"%c"); if (allTravel[i].what==1) { for (j=0;j<12;j++) { fscanf(fGr,"%s",&one); if (j==0) { allTravel[i].ID=strtol(one,&end,10); fscanf(fGr,"%c"); } else if (j==1) { strcpy(allTravel[i].service,one); fscanf(fGr,"%c"); } else if (j==2) { strcpy(allTravel[i].name,one); fscanf(fGr,"%c"); } else if (j==3) { strcpy(allTravel[i].cooperation,one); fscanf(fGr,"%c"); } else if (j==4) { strcpy(allTravel[i].recreation,one); fscanf(fGr,"%c"); } else if (j==5) { strcpy(allTravel[i].site,one); fscanf(fGr,"%c"); } else if (j==6) { strcpy(allTravel[i].phone_number,one); fscanf(fGr,"%c"); } else if (j==7) { strcpy(allTravel[i].mail,one); fscanf(fGr,"%c"); } else if (j==8) { strcpy(allTravel[i].fax_number,one); fscanf(fGr,"%c"); } else if (j==9) { strcpy(allTravel[i].address,one); fscanf(fGr,"%c"); } else if (j==10) { allTravel[i].founded_in=strtol(one,&end,10); fscanf(fGr,"%c"); } else if (j==11) { allTravel[i].rate=strtol(one,&end,10); } } } else if (allTravel[i].what==2) { fscanf(fGr,"%s",&one); allTravel[i].ID=strtol(one,&end,10); fscanf(fGr,"%c"); fscanf(fGr,"%s",&one); allTravel[i].whatEdit=strtol(one,&end,10); fscanf(fGr,"%c"); fscanf(fGr,"%s",&one); if (allTravel[i].whatEdit==0) { } else if (allTravel[i].whatEdit==1) { strcpy(allTravel[i].service,one); fscanf(fGr,"%c"); } else if (allTravel[i].whatEdit==2) { strcpy(allTravel[i].name,one); fscanf(fGr,"%c"); } else if (allTravel[i].whatEdit==3) { strcpy(allTravel[i].cooperation,one); fscanf(fGr,"%c"); } else if (allTravel[i].whatEdit==4) { strcpy(allTravel[i].recreation,one); fscanf(fGr,"%c"); } else if (allTravel[i].whatEdit==5) { strcpy(allTravel[i].site,one); fscanf(fGr,"%c"); } else if (allTravel[i].whatEdit==6) { strcpy(allTravel[i].phone_number,one); fscanf(fGr,"%c"); } else if (allTravel[i].whatEdit==7) { strcpy(allTravel[i].mail,one); fscanf(fGr,"%c"); } else if (allTravel[i].whatEdit==8) { strcpy(allTravel[i].fax_number,one); fscanf(fGr,"%c"); } else if (allTravel[i].whatEdit==9) { strcpy(allTravel[i].address,one); fscanf(fGr,"%c"); } else if (allTravel[i].whatEdit==10) { allTravel[i].founded_in=strtol(one,&end,10); fscanf(fGr,"%c"); } else if (allTravel[i].whatEdit==11) { allTravel[i].rate=strtol(one,&end,10); } } else if (allTravel[i].what==3) { fscanf(fGr,"%s",&one); allTravel[i].ID=strtol(one,&end,10); } } if (fclose(fGr) != 0) { printf("\nAn error is at closing of file gr.txt."); } //***Сортування for (i=0; i<nOp; i++) { for (j=0; j<nOp-1; j++) { if (allTravel[j].ID>allTravel[j+1].ID) { zenTravel.ID=allTravel[j].ID; strcpy(zenTravel.service,allTravel[j].service); strcpy(zenTravel.name,allTravel[j].name); strcpy(zenTravel.cooperation,allTravel[j].cooperation); strcpy(zenTravel.recreation,allTravel[j].recreation); strcpy(zenTravel.site,allTravel[j].site); strcpy(zenTravel.phone_number,allTravel[j].phone_number); strcpy(zenTravel.mail,allTravel[j].mail); strcpy(zenTravel.fax_number,allTravel[j].fax_number); strcpy(zenTravel.address,allTravel[j].address); zenTravel.founded_in=allTravel[j].founded_in; zenTravel.rate=allTravel[j].rate; zenTravel.what=allTravel[j].what; zenTravel.whatEdit=allTravel[j].whatEdit; allTravel[j].ID=allTravel[j+1].ID; strcpy(allTravel[j].service,allTravel[j+1].service); strcpy(allTravel[j].name,allTravel[j+1].name); strcpy(allTravel[j].cooperation,allTravel[j+1].cooperation); strcpy(allTravel[j].recreation,allTravel[j+1].recreation); strcpy(allTravel[j].site,allTravel[j+1].site); strcpy(allTravel[j].phone_number,allTravel[j+1].phone_number); strcpy(allTravel[j].mail,allTravel[j+1].mail); strcpy(allTravel[j].fax_number,allTravel[j+1].fax_number); strcpy(allTravel[j].address,allTravel[j+1].address); allTravel[j].founded_in=allTravel[j+1].founded_in; allTravel[j].rate=allTravel[j+1].rate; allTravel[j].what=allTravel[j+1].what; allTravel[j].whatEdit=allTravel[j+1].whatEdit; allTravel[j+1].ID=zenTravel.ID; strcpy(allTravel[j+1].service,zenTravel.service); strcpy(allTravel[j+1].name,zenTravel.name); strcpy(allTravel[j+1].cooperation,zenTravel.cooperation); strcpy(allTravel[j+1].recreation,zenTravel.recreation); strcpy(allTravel[j+1].site,zenTravel.site); strcpy(allTravel[j+1].phone_number,zenTravel.phone_number); strcpy(allTravel[j+1].mail,zenTravel.mail); strcpy(allTravel[j+1].fax_number,zenTravel.fax_number); strcpy(allTravel[j+1].address,zenTravel.address); allTravel[j+1].founded_in=zenTravel.founded_in; allTravel[j+1].rate=zenTravel.rate; allTravel[j+1].what=zenTravel.what; allTravel[j+1].whatEdit=zenTravel.whatEdit; } } } //**Кінець - Сортування структур. //***Вивід даних, якими потрібно модифікувати базу даних. int m; if ((fGr=fopen("gr.txt","w")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } if (nOp>0) { for (m=0; m<nOp; m++) { if (allTravel[m].what==1) { //Додавання запису. printf("\n%d. Add a record:\n",m); //**Вивід даних. printf("\n----------------------------------"); printf("\nYour dates:\n"); printf("\nID: %d\nService: %s\nName: %s\nCooperation: %s\nRecreation: %s\nThe site: %s\nPhone pumber: %s\nMail: %s\nFax number: %s\nAddress: %s\nFounded in: %d\nRate: %d\n",allTravel[m].ID,allTravel[m].service,allTravel[m].name,allTravel[m].cooperation,allTravel[m].recreation,allTravel[m].site,allTravel[m].phone_number,allTravel[m].mail,allTravel[m].fax_number,allTravel[m].address,allTravel[m].founded_in,allTravel[m].rate); printf("\n----------------------------------\n"); fprintf(fGr,"%d %d %s ",allTravel[m].ID,allTravel[m].what,allTravel[m].service); fprintf(fGr,"%s %s ",allTravel[m].name,allTravel[m].cooperation); fprintf(fGr,"%s %s ",allTravel[m].recreation,allTravel[m].site); fprintf(fGr,"%s %s ",allTravel[m].phone_number,allTravel[m].mail); fprintf(fGr,"%s %s ",allTravel[m].fax_number,allTravel[m].address); fprintf(fGr,"%d %d\n",allTravel[m].founded_in,allTravel[m].rate); //**Кінець - Вивід даних. } else if (allTravel[m].what==2) {//Редагування запису. printf("\n%d. Edit a record:\n",m); printf("\nID: %d\n",allTravel[m].ID); fprintf(fGr,"%d %d ",allTravel[m].ID,allTravel[m].what); if (allTravel[m].whatEdit==1) { printf("\nservice: %s\n",allTravel[m].service); fprintf(fGr,"%d %s\n",allTravel[m].whatEdit,allTravel[m].service); } else if (allTravel[m].whatEdit==2) { printf("\nName: %s\n",allTravel[m].name); fprintf(fGr,"%d %s\n",allTravel[m].whatEdit,allTravel[m].name); } else if (allTravel[m].whatEdit==3) { printf("\ncooperation: %s\n",allTravel[m].cooperation); fprintf(fGr,"%d %s\n",allTravel[m].whatEdit,allTravel[m].cooperation); } else if (allTravel[m].whatEdit==4) { printf("\nrecreation: %s\n",allTravel[m].recreation); fprintf(fGr,"%d %s\n",allTravel[m].whatEdit,allTravel[m].recreation); } else if (allTravel[m].whatEdit==5) { printf("\nsite: %s\n",allTravel[m].site); fprintf(fGr,"%d %s\n",allTravel[m].whatEdit,allTravel[m].site); } else if (allTravel[m].whatEdit==6) { printf("\nphone_number: %s\n",allTravel[m].phone_number); fprintf(fGr,"%d %s\n",allTravel[m].whatEdit,allTravel[m].phone_number); } else if (allTravel[m].whatEdit==7) { printf("\nmail: %s\n",allTravel[m].mail); fprintf(fGr,"%d %s\n",allTravel[m].whatEdit,allTravel[m].mail); } else if (allTravel[m].whatEdit==8) { printf("\nfax_number: %s\n",allTravel[m].fax_number); fprintf(fGr,"%d %s\n",allTravel[m].whatEdit,allTravel[m].fax_number); } else if (allTravel[m].whatEdit==9) { printf("\naddress: %s\n",allTravel[m].address); fprintf(fGr,"%d %s\n",allTravel[m].whatEdit,allTravel[m].address); } else if (allTravel[m].whatEdit==10) { printf("\nfounded_in: %d\n",allTravel[m].founded_in); fprintf(fGr,"%d %d\n",allTravel[m].whatEdit,allTravel[m].founded_in); } else if (allTravel[m].whatEdit==11) { printf("\nrate: %d\n",allTravel[m].rate); fprintf(fGr,"%d %d\n",allTravel[m].whatEdit,allTravel[m].rate); } } else if (allTravel[m].what==3) { //Видалення запису. printf("\n%d. Delete a record:\n",m); printf("\nID: %d\n",allTravel[m].ID); fprintf(fGr,"%d %d\n",allTravel[m].ID,allTravel[m].what); } } } if (fclose(fGr) != 0) { printf("\nAn error is at closing of file gr.txt."); } //***Кінець - Вивід даних, якими потрібно модифікувати базу даних. int i_vn=0; //Змінна для зберігання скільки записів додано, редаговано, видалено. for (m=0; m<n; m++) { char one[40]; char *end; //Зчитування з файлу запису. for (j=0;j<12;j++) { fscanf(f,"%s",&one); if (j==0) { zenTravel.ID=strtol(one,&end,10); fscanf(f,"%c"); } else if (j==1) { strcpy(zenTravel.service,one); fscanf(f,"%c"); } else if (j==2) { strcpy(zenTravel.name,one); fscanf(f,"%c"); } else if (j==3) { strcpy(zenTravel.cooperation,one); fscanf(f,"%c"); } else if (j==4) { strcpy(zenTravel.recreation,one); fscanf(f,"%c"); } else if (j==5) { strcpy(zenTravel.site,one); fscanf(f,"%c"); } else if (j==6) { strcpy(zenTravel.phone_number,one); fscanf(f,"%c"); } else if (j==7) { strcpy(zenTravel.mail,one); fscanf(f,"%c"); } else if (j==8) { strcpy(zenTravel.fax_number,one); fscanf(f,"%c"); } else if (j==9) { strcpy(zenTravel.address,one); fscanf(f,"%c"); } else if (j==10) { zenTravel.founded_in=strtol(one,&end,10); fscanf(f,"%c"); } else if (j==11) { zenTravel.rate=strtol(one,&end,10); } } //Кінець - Зчитування з файлу запису. //***Модифікація бази даних. if (allTravel[i_vn].ID<=zenTravel.ID) { //Якщо ID менший або рівний, інакше записати в temp. if (i_vn<nOp) { //Всі записи пройдені, інакше записати в temp. printf("\ni_vn = %d",i_vn); //Якщо 3 ID рівні. if (allTravel[i_vn].ID==allTravel[i_vn+1].ID && allTravel[i_vn].ID==allTravel[i_vn+2].ID) { if (allTravel[i_vn+2].what==3) { printf("\nAdd, edit, delete. Nichoho ne potribno robutu"); } i_vn=i_vn+3; //Пройдені 3 записи. } //Якщо 2 ID рівні. else if (allTravel[i_vn].ID==allTravel[i_vn+1].ID) { //Додати редагувати?? if (allTravel[i_vn].what==1 && allTravel[i_vn+1].what==2) { printf("\nAdd, edit."); if (allTravel[i_vn+1].whatEdit==1) { strcpy(allTravel[i_vn].service,allTravel[i_vn+1].service); } else if (allTravel[i_vn+1].whatEdit==2) { strcpy(allTravel[i_vn].name,allTravel[i_vn+1].name); } else if (allTravel[i_vn+1].whatEdit==3) { strcpy(allTravel[i_vn].cooperation,allTravel[i_vn+1].cooperation); } else if (allTravel[i_vn+1].whatEdit==4) { strcpy(allTravel[i_vn].recreation,allTravel[i_vn+1].recreation); } else if (allTravel[i_vn+1].whatEdit==5) { strcpy(allTravel[i_vn].site,allTravel[i_vn+1].site); } else if (allTravel[i_vn+1].whatEdit==6) { strcpy(allTravel[i_vn].phone_number,allTravel[i_vn+1].phone_number); } else if (allTravel[i_vn+1].whatEdit==7) { strcpy(allTravel[i_vn].mail,allTravel[i_vn+1].mail); } else if (allTravel[i_vn+1].whatEdit==8) { strcpy(allTravel[i_vn].fax_number,allTravel[i_vn+1].fax_number); } else if (allTravel[i_vn+1].whatEdit==9) { strcpy(allTravel[i_vn].address,allTravel[i_vn+1].address); } else if (allTravel[i_vn+1].whatEdit==10) { allTravel[i_vn].founded_in=allTravel[i_vn+1].founded_in; } else if (allTravel[i_vn+1].whatEdit==11) { allTravel[i_vn].rate=allTravel[i_vn+1].rate; } fprintf(fTemp,"%d %s ",allTravel[i_vn].ID,allTravel[i_vn].service); fprintf(fTemp,"%s %s ",allTravel[i_vn].name,allTravel[i_vn].cooperation); fprintf(fTemp,"%s %s ",allTravel[i_vn].recreation,allTravel[i_vn].site); fprintf(fTemp,"%s %s ",allTravel[i_vn].phone_number,allTravel[i_vn].mail); fprintf(fTemp,"%s %s ",allTravel[i_vn].fax_number,allTravel[i_vn].address); fprintf(fTemp,"%d %d\n",allTravel[i_vn].founded_in,allTravel[i_vn].rate); fprintf(fTemp,"%d %s ",zenTravel.ID,zenTravel.service); fprintf(fTemp,"%s %s ",zenTravel.name,zenTravel.cooperation); fprintf(fTemp,"%s %s ",zenTravel.recreation,zenTravel.site); fprintf(fTemp,"%s %s ",zenTravel.phone_number,zenTravel.mail); fprintf(fTemp,"%s %s ",zenTravel.fax_number,zenTravel.address); fprintf(fTemp,"%d %d\n",zenTravel.founded_in,zenTravel.rate); } //Додати і видалити?? else if (allTravel[i_vn].what==1 && allTravel[i_vn+1].what==3) { printf("\nAdd, delete: nichoho ne potribno robutu"); } //Редагувати і видалити?? else if (allTravel[i_vn].what==2 && allTravel[i_vn+1].what==3) { printf("\nEdit, delete: nichoho ne potribno robutu"); } i_vn=i_vn+2; //2 записи пройдені. } else { if (allTravel[i_vn].ID<zenTravel.ID) { //ID менший??? if (allTravel[i_vn].what==1) { //Додати запис?? printf("\nAdd element."); fprintf(fTemp,"%d %s ",allTravel[i_vn].ID,allTravel[i_vn].service); fprintf(fTemp,"%s %s ",allTravel[i_vn].name,allTravel[i_vn].cooperation); fprintf(fTemp,"%s %s ",allTravel[i_vn].recreation,allTravel[i_vn].site); fprintf(fTemp,"%s %s ",allTravel[i_vn].phone_number,allTravel[i_vn].mail); fprintf(fTemp,"%s %s ",allTravel[i_vn].fax_number,allTravel[i_vn].address); fprintf(fTemp,"%d %d\n",allTravel[i_vn].founded_in,allTravel[i_vn].rate); fprintf(fTemp,"%d %s ",zenTravel.ID,zenTravel.service); fprintf(fTemp,"%s %s ",zenTravel.name,zenTravel.cooperation); fprintf(fTemp,"%s %s ",zenTravel.recreation,zenTravel.site); fprintf(fTemp,"%s %s ",zenTravel.phone_number,zenTravel.mail); fprintf(fTemp,"%s %s ",zenTravel.fax_number,zenTravel.address); fprintf(fTemp,"%d %d\n",zenTravel.founded_in,zenTravel.rate); } else if (allTravel[i_vn].what==2 || allTravel[i_vn].what==3) { printf("\nSuch element is not in a database."); } } else if (allTravel[i_vn].ID==zenTravel.ID) { if (allTravel[i_vn].what==2) { //Редагувати запис?? printf("\nEdit element."); if (allTravel[i_vn].whatEdit==1) { strcpy(zenTravel.service,allTravel[i_vn].service); } else if (allTravel[i_vn].whatEdit==2) { strcpy(zenTravel.name,allTravel[i_vn].name); } else if (allTravel[i_vn].whatEdit==3) { strcpy(zenTravel.cooperation,allTravel[i_vn].cooperation); } else if (allTravel[i_vn].whatEdit==4) { strcpy(zenTravel.recreation,allTravel[i_vn].recreation); } else if (allTravel[i_vn].whatEdit==5) { strcpy(zenTravel.site,allTravel[i_vn].site); } else if (allTravel[i_vn].whatEdit==6) { strcpy(zenTravel.phone_number,allTravel[i_vn].phone_number); } else if (allTravel[i_vn].whatEdit==7) { strcpy(zenTravel.mail,allTravel[i_vn].mail); } else if (allTravel[i_vn].whatEdit==8) { strcpy(zenTravel.fax_number,allTravel[i_vn].fax_number); } else if (allTravel[i_vn].whatEdit==9) { strcpy(zenTravel.address,allTravel[i_vn].address); } else if (allTravel[i_vn].whatEdit==10) { zenTravel.founded_in=allTravel[i_vn].founded_in; } else if (allTravel[i_vn].whatEdit==11) { zenTravel.rate=allTravel[i_vn].rate; } fprintf(fTemp,"%d %s ",zenTravel.ID,zenTravel.service); fprintf(fTemp,"%s %s ",zenTravel.name,zenTravel.cooperation); fprintf(fTemp,"%s %s ",zenTravel.recreation,zenTravel.site); fprintf(fTemp,"%s %s ",zenTravel.phone_number,zenTravel.mail); fprintf(fTemp,"%s %s ",zenTravel.fax_number,zenTravel.address); fprintf(fTemp,"%d %d\n",zenTravel.founded_in,zenTravel.rate); } else if (allTravel[i_vn].what==3) { //Видалити запис?? printf("\nDelete element."); } } i_vn++; //1 запис пройдено. } } else { fprintf(fTemp,"%d %s ",zenTravel.ID,zenTravel.service); fprintf(fTemp,"%s %s ",zenTravel.name,zenTravel.cooperation); fprintf(fTemp,"%s %s ",zenTravel.recreation,zenTravel.site); fprintf(fTemp,"%s %s ",zenTravel.phone_number,zenTravel.mail); fprintf(fTemp,"%s %s ",zenTravel.fax_number,zenTravel.address); fprintf(fTemp,"%d %d\n",zenTravel.founded_in,zenTravel.rate); } } else { fprintf(fTemp,"%d %s ",zenTravel.ID,zenTravel.service); fprintf(fTemp,"%s %s ",zenTravel.name,zenTravel.cooperation); fprintf(fTemp,"%s %s ",zenTravel.recreation,zenTravel.site); fprintf(fTemp,"%s %s ",zenTravel.phone_number,zenTravel.mail); fprintf(fTemp,"%s %s ",zenTravel.fax_number,zenTravel.address); fprintf(fTemp,"%d %d\n",zenTravel.founded_in,zenTravel.rate); } } //**Якщо файл пустий, то додати в кінець файла. if (zenTravel.ID<allTravel[i_vn].ID) { printf("\nAdd element."); fprintf(fTemp,"%d %s ",allTravel[i_vn].ID,allTravel[i_vn].service); fprintf(fTemp,"%s %s ",allTravel[i_vn].name,allTravel[i_vn].cooperation); fprintf(fTemp,"%s %s ",allTravel[i_vn].recreation,allTravel[i_vn].site); fprintf(fTemp,"%s %s ",allTravel[i_vn].phone_number,allTravel[i_vn].mail); fprintf(fTemp,"%s %s ",allTravel[i_vn].fax_number,allTravel[i_vn].address); fprintf(fTemp,"%d %d\n",allTravel[i_vn].founded_in,allTravel[i_vn].rate); } //**Кінець - Якщо файл пустий, то додати в кінець файла. //***Кінець - Модифікація бази даних. //*Перевірка чи закритий файл бази даних чи ні та виведення результату. if (fclose(f) != 0) { printf("\nAn error is at closing of file %s.",nameOfDatabase); } if (fclose(fTemp) != 0) { printf("\nAn error is at closing of file temp.txt."); } //*Кінець - Перевірка чи закритий файл бази даних чи ні та виведення результату. remove(nameOfDatabase); rename("temp.txt",nameOfDatabase); nOp=0; printf("\nEnter '0' for returning in a main menu: "); scanf("%d",&backGo); while (backGo!=0) { printf("You have not enter '0'. Please enter once again: "); scanf("%d",&backGo); } //**Кінець - Повернення в головне меню. back=1; } else if (menuItemF==5) { yes_no=1; } } //**Повернення в головне меню. } //**Кінець - Вибір пункту 2. //**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ВИБІР ПУНКТУ '3'.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. else if (menuItem==3) { menuItemP=0; printf("\n Do you want to revision a database?\n"); printf("1. Yes\n2. No\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemP); //**Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1 || menuItemP==2) { yes_no=1; } else { yes_no=0; } //*Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. while (yes_no!=1) { printf("You have not chosen any menu item. Please enter once again: "); scanf("%d",&menuItemP); if (menuItemP==1 || menuItemP==2) { yes_no=1; } } //*Кінець - Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. //**Кінець - Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1) { printf("\nEnter the name database which you want to open (MAX-20): "); scanf("%s",&nameOfDatabase); //Введення назви файлу бази даних. strcat(nameOfDatabase,".txt"); //Додавання розширення .txt до імені. //***Введення даних. revision(); } //**Повернення в головне меню. printf("\nEnter '0' for returning in a main menu: "); scanf("%d",&backGo); while (backGo!=0) { printf("You have not enter '0'. Please enter once again: "); scanf("%d",&backGo); } //**Кінець - Повернення в головне меню. back=1; } //**Кінець - Вибір пункту 3. //**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ВИБІР ПУНКТУ '4'.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. else if (menuItem==4) { menuItemP=0; printf("\n Do you want to search in database?\n"); printf("1. Yes\n2. No\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemP); //**Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1 || menuItemP==2) { yes_no=1; } else { yes_no=0; } //*Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. while (yes_no!=1) { printf("You have not chosen any menu item. Please enter once again: "); scanf("%d",&menuItemP); if (menuItemP==1 || menuItemP==2) { yes_no=1; } } //*Кінець - Перевірка чи потрібно виконувати цикл, якщо не вибраний пункт підменю. //**Кінець - Перевірка вибраний пункт підменю головного меню чи ні. if (menuItemP==1) { printf("\nEnter the name database which you want to open (MAX-20): "); scanf("%s",&nameOfDatabase); //Введення назви файлу бази даних. strcat(nameOfDatabase,".txt"); //Додавання розширення .txt до імені. //***Введення даних. yes_no=0; int menuItemSearch; //Змінна для збереження вибору меню. int elemSearch=0; //Який елемент маэ бути відредагований. while (yes_no!=1) { system("cls"); printf("\nWhat you want to edit: "); printf("\n1. Service\n2. Name\n3. Cooperation\n4. Recreation\n5. The site\n6. Phone number\n7. Mail\n8. Fax number\n9. Address\n10. Founded IN\n11. Rate\n"); printf("Choose and enter one of menu items: "); scanf("%d",&menuItemSearch); if (menuItemSearch==1) { printf("Enter service (MAX-10): "); scanf("%s",&workTravel.service); elemSearch=1; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==2) { printf("Enter name (MAX-40): "); scanf("%s",&workTravel.name); elemSearch=2; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==3) { printf("Enter cooperation (MAX-30): "); scanf("%s",&workTravel.cooperation); elemSearch=3; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==4) { printf("Enter recreation (MAX-30): "); scanf("%s",&workTravel.recreation); elemSearch=4; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==5) { printf("Enter the site (MAX-10): "); scanf("%s",&workTravel.site); elemSearch=5; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==6) { printf("Enter phone number (MAX-20): "); scanf("%s",&workTravel.phone_number); elemSearch=6; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==7) { printf("Enter mail (MAX-20): "); scanf("%s",&workTravel.mail); elemSearch=7; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==8) { printf("Enter fax number (MAX-10): "); scanf("%s",&workTravel.fax_number); elemSearch=8; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==9) { printf("Enter address (MAX-10): "); scanf("%s",&workTravel.address); elemSearch=9; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==10) { printf("Enter year: "); scanf("%d",&workTravel.founded_in); elemSearch=10; search(elemSearch,workTravel); yes_no=1; } else if (menuItemSearch==11) { printf("Enter rate: "); scanf("%d",&workTravel.rate); elemSearch=11; search(elemSearch,workTravel); yes_no=1; } } } //**Повернення в головне меню. printf("\nEnter '0' for returning in a main menu: "); scanf("%d",&backGo); while (backGo!=0) { printf("You have not enter '0'. Please enter once again: "); scanf("%d",&backGo); } //**Кінець - Повернення в головне меню. back=1; } //**Кінець - Вибір пункту 4. //**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ВИБІР ПУНКТУ '5'.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. else if (menuItem==5) { printf("Thanks for using a programm. Good bye!!!\n"); } //**Кінець - Вибір пункту 5. //**Не вибрано жодного пункту. else { printf("You have not chosen any menu item. Please enter once again: "); scanf("%d",&menuItem); back=0; } //**Кінець - Не вибрано жодного пункту. } while (menuItem != menuExit2); //***Кінець - Перевірка виходу з програми. } //Кінець - Другий метод return 0; } //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ФУНКЦІЇ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ //-------------------------------------------------- //***Функція додавання нового елемента в базу даних. void addElementInDatabase(struct travel addTravel) { FILE *fileOldDatabase; //Мітка для файлу старої (створеної) бази даних. FILE *fileTemp; //Мітка для файлу тимчасової бази даних. char words[250]; //Масив символів для зберігання стрічки, яку зчитуєм з файлу. int i=0,n=0,k,j; //i - Змінна для перевірки чи добавлений новий запис чи ні, n - к-ть записів. char *end; //Вказівник для закінчення визначення цифр зі стрічки. struct travel oldTravel; //Структура для зберігання запису з бази даних. //***Перевірка чи файл відкритий без помилок і вивід резульату. if ((fileOldDatabase=fopen(nameOfDatabase,"r+")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } while(fgets(words,250,fileOldDatabase) != NULL && words[0] != '\n') { n++; } if (fclose(fileOldDatabase) != 0) { printf("\nAn error is at closing of file %s.",nameOfDatabase); } //***Кінець - Перевірка чи файл відкритий без помилок і вивід резульату. //***Ввід запису в базу даних. if ((fileOldDatabase=fopen(nameOfDatabase,"r+")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } if ((fileTemp=fopen("temp.txt","w")) == NULL) { printf("\nAn error is at opening of database temp.txt."); } i=1; //Запис не доданий. for (k=0;k<n;k++) { char one[40]; //Масив для збереження зчитуваного елемента. for (j=0;j<12;j++) { //Цикл по к-ті елементів. fscanf(fileOldDatabase,"%s",&one); //Зчитування з файлу перший елемент. //Збереження елементів в структуру. if (j==0) { oldTravel.ID=strtol(one,&end,10); fscanf(fileOldDatabase,"%c"); } else if (j==1) { strcpy(oldTravel.service,one); fscanf(fileOldDatabase,"%c"); } else if (j==2) { strcpy(oldTravel.name,one); fscanf(fileOldDatabase,"%c"); } else if (j==3) { strcpy(oldTravel.cooperation,one); fscanf(fileOldDatabase,"%c"); } else if (j==4) { strcpy(oldTravel.recreation,one); fscanf(fileOldDatabase,"%c"); } else if (j==5) { strcpy(oldTravel.site,one); fscanf(fileOldDatabase,"%c"); } else if (j==6) { strcpy(oldTravel.phone_number,one); fscanf(fileOldDatabase,"%c"); } else if (j==7) { strcpy(oldTravel.mail,one); fscanf(fileOldDatabase,"%c"); } else if (j==8) { strcpy(oldTravel.fax_number,one); fscanf(fileOldDatabase,"%c"); } else if (j==9) { strcpy(oldTravel.address,one); fscanf(fileOldDatabase,"%c"); } else if (j==10) { oldTravel.founded_in=strtol(one,&end,10); fscanf(fileOldDatabase,"%c"); } else if (j==11) { oldTravel.rate=strtol(one,&end,10); fscanf(fileOldDatabase,"%c"); } //Кінець - Збереження елементів в структуру. } if (addTravel.ID<oldTravel.ID && i==1) { //Якщо ID запису, який потрібно додати менший від того що в базі даних. //Дадання нового запису. fprintf(fileTemp,"%d %s ",addTravel.ID,addTravel.service); fprintf(fileTemp,"%s %s ",addTravel.name,addTravel.cooperation); fprintf(fileTemp,"%s %s ",addTravel.recreation,addTravel.site); fprintf(fileTemp,"%s %s ",addTravel.phone_number,addTravel.mail); fprintf(fileTemp,"%s %s ",addTravel.fax_number,addTravel.address); fprintf(fileTemp,"%d %d\n",addTravel.founded_in,addTravel.rate); //Кінець - Дадання нового запису. fprintf(fileTemp,"%d %s ",oldTravel.ID,oldTravel.service); fprintf(fileTemp,"%s %s ",oldTravel.name,oldTravel.cooperation); fprintf(fileTemp,"%s %s ",oldTravel.recreation,oldTravel.site); fprintf(fileTemp,"%s %s ",oldTravel.phone_number,oldTravel.mail); fprintf(fileTemp,"%s %s ",oldTravel.fax_number,oldTravel.address); fprintf(fileTemp,"%d %d\n",oldTravel.founded_in,oldTravel.rate); i++; //Запич доданий } else if (addTravel.ID==oldTravel.ID) { printf("Such record in a database is already. It will not be added."); fprintf(fileTemp,"%d %s ",oldTravel.ID,oldTravel.service); fprintf(fileTemp,"%s %s ",oldTravel.name,oldTravel.cooperation); fprintf(fileTemp,"%s %s ",oldTravel.recreation,oldTravel.site); fprintf(fileTemp,"%s %s ",oldTravel.phone_number,oldTravel.mail); fprintf(fileTemp,"%s %s ",oldTravel.fax_number,oldTravel.address); fprintf(fileTemp,"%d %d\n",oldTravel.founded_in,oldTravel.rate); i++; } else { fprintf(fileTemp,"%d %s ",oldTravel.ID,oldTravel.service); fprintf(fileTemp,"%s %s ",oldTravel.name,oldTravel.cooperation); fprintf(fileTemp,"%s %s ",oldTravel.recreation,oldTravel.site); fprintf(fileTemp,"%s %s ",oldTravel.phone_number,oldTravel.mail); fprintf(fileTemp,"%s %s ",oldTravel.fax_number,oldTravel.address); fprintf(fileTemp,"%d %d\n",oldTravel.founded_in,oldTravel.rate); } } if (i==1) { //Якщо запис не доданий, його в кінець бази даних. fprintf(fileTemp,"%d %s ",addTravel.ID,addTravel.service); fprintf(fileTemp,"%s %s ",addTravel.name,addTravel.cooperation); fprintf(fileTemp,"%s %s ",addTravel.recreation,addTravel.site); fprintf(fileTemp,"%s %s ",addTravel.phone_number,addTravel.mail); fprintf(fileTemp,"%s %s ",addTravel.fax_number,addTravel.address); fprintf(fileTemp,"%d %d",addTravel.founded_in,addTravel.rate); } //*Перевірка чи закритий файл бази даних чи ні та виведення результату. if (fclose(fileOldDatabase) != 0) { printf("\nAn error is at closing of file %s.",nameOfDatabase); } if (fclose(fileTemp) != 0) { printf("\nAn error is at closing of file temp.txt."); } //*Кінець - Перевірка чи закритий файл бази даних чи ні та виведення результату. remove(nameOfDatabase); rename("temp.txt",nameOfDatabase); //***Кінець - Якщо вибраний метод 1 то запис запису у файл } //***Кінець - Функція додавання нового елемента в базу даних. //-------------------------------------------------- //***Функція видалення елемента з бази даних. void deleteElementInDatabase(int ID) { FILE *fileOldDatabase; //Мітка для файлу старої (створеної) бази даних. FILE *fileTemp; //Мітка для файлу тимчасової бази даних. char words[250]; //Масив символів для зберігання стрічки, яку зчитуєм з файлу. int i=0,n=0,k,j; //i - Змінна для перевірки видалений файл чи ні, n - к-ть записів. char *end; //Вказівник для закінчення визначення цифр зі стрічки. struct travel oldTravel; //Структура для зберігання запису з бази даних. //***Перевірка чи файл відкритий без помилок і вивід резульату. if ((fileOldDatabase=fopen(nameOfDatabase,"r+")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } while(fgets(words,250,fileOldDatabase) != NULL && words[0] != '\n') { n++; } if (fclose(fileOldDatabase) != 0) { printf("\nAn error is at closing of file %s.",nameOfDatabase); } //***Кінець - Перевірка чи файл відкритий без помилок і вивід резульату. //***Ввід запису в базу даних. if ((fileOldDatabase=fopen(nameOfDatabase,"r+")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } if ((fileTemp=fopen("temp.txt","w")) == NULL) { printf("\nAn error is at opening of database temp.txt."); } for (k=0;k<n;k++) { char one[40]; for (j=0;j<12;j++) { fscanf(fileOldDatabase,"%s",&one); if (j==0) { oldTravel.ID=strtol(one,&end,10); fscanf(fileOldDatabase,"%c"); } else if (j==1) { strcpy(oldTravel.service,one); fscanf(fileOldDatabase,"%c"); } else if (j==2) { strcpy(oldTravel.name,one); fscanf(fileOldDatabase,"%c"); } else if (j==3) { strcpy(oldTravel.cooperation,one); fscanf(fileOldDatabase,"%c"); } else if (j==4) { strcpy(oldTravel.recreation,one); fscanf(fileOldDatabase,"%c"); } else if (j==5) { strcpy(oldTravel.site,one); fscanf(fileOldDatabase,"%c"); } else if (j==6) { strcpy(oldTravel.phone_number,one); fscanf(fileOldDatabase,"%c"); } else if (j==7) { strcpy(oldTravel.mail,one); fscanf(fileOldDatabase,"%c"); } else if (j==8) { strcpy(oldTravel.fax_number,one); fscanf(fileOldDatabase,"%c"); } else if (j==9) { strcpy(oldTravel.address,one); fscanf(fileOldDatabase,"%c"); } else if (j==10) { oldTravel.founded_in=strtol(one,&end,10); fscanf(fileOldDatabase,"%c"); } else if (j==11) { oldTravel.rate=strtol(one,&end,10); } } if (ID==oldTravel.ID) { //Якщо ID рівні. i=1; printf("Element was deleted."); } else { //Інакше зберегти старий запис. fprintf(fileTemp,"%d %s ",oldTravel.ID,oldTravel.service); fprintf(fileTemp,"%s %s ",oldTravel.name,oldTravel.cooperation); fprintf(fileTemp,"%s %s ",oldTravel.recreation,oldTravel.site); fprintf(fileTemp,"%s %s ",oldTravel.phone_number,oldTravel.mail); fprintf(fileTemp,"%s %s ",oldTravel.fax_number,oldTravel.address); fprintf(fileTemp,"%d %d\n",oldTravel.founded_in,oldTravel.rate); } } if (i==0) { printf("There is not such ID in the database."); } //*Перевірка чи закритий файл бази даних чи ні та виведення результату. if (fclose(fileOldDatabase) != 0) { printf("\nAn error is at closing of file %s.",nameOfDatabase); } if (fclose(fileTemp) != 0) { printf("\nAn error is at closing of file temp.txt."); } //*Кінець - Перевірка чи закритий файл бази даних чи ні та виведення результату. remove(nameOfDatabase); rename("temp.txt",nameOfDatabase); //***Кінець - Якщо вибраний метод 1 то запис запису у файл } //***Кінець - Функція видалення елемента з бази даних. //***Функція редагування елемента в базі даних. void edit(int ID, int elem, struct travel editTravel) { FILE *fileOldDatabase; //Мітка для файлу старої (створеної) бази даних. FILE *fileTemp; //Мітка для файлу тимчасової бази даних. char words[250]; //Масив символів для зберігання стрічки, яку зчитуєм з файлу. int i=0,n=0,k,j; //i - Змінна для перевірки видалений файл чи ні, n - к-ть записів. char *end; //Вказівник для закінчення визначення цифр зі стрічки. struct travel oldTravel; //Структура для зберігання запису з бази даних. //***Перевірка чи файл відкритий без помилок і вивід резульату. if ((fileOldDatabase=fopen(nameOfDatabase,"r+")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } while(fgets(words,250,fileOldDatabase) != NULL && words[0] != '\n') { n++; } if (fclose(fileOldDatabase) != 0) { printf("\nAn error is at closing of file %s.",nameOfDatabase); } //***Кінець - Перевірка чи файл відкритий без помилок і вивід резульату. //***Редагування бази даних. if ((fileOldDatabase=fopen(nameOfDatabase,"r+")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } if ((fileTemp=fopen("temp.txt","w")) == NULL) { printf("\nAn error is at opening of database temp.txt."); } for (k=0;k<n;k++) { char one[40]; for (j=0;j<12;j++) { fscanf(fileOldDatabase,"%s",&one); if (j==0) { oldTravel.ID=strtol(one,&end,10); fscanf(fileOldDatabase,"%c"); } else if (j==1) { strcpy(oldTravel.service,one); fscanf(fileOldDatabase,"%c"); } else if (j==2) { strcpy(oldTravel.name,one); fscanf(fileOldDatabase,"%c"); } else if (j==3) { strcpy(oldTravel.cooperation,one); fscanf(fileOldDatabase,"%c"); } else if (j==4) { strcpy(oldTravel.recreation,one); fscanf(fileOldDatabase,"%c"); } else if (j==5) { strcpy(oldTravel.site,one); fscanf(fileOldDatabase,"%c"); } else if (j==6) { strcpy(oldTravel.phone_number,one); fscanf(fileOldDatabase,"%c"); } else if (j==7) { strcpy(oldTravel.mail,one); fscanf(fileOldDatabase,"%c"); } else if (j==8) { strcpy(oldTravel.fax_number,one); fscanf(fileOldDatabase,"%c"); } else if (j==9) { strcpy(oldTravel.address,one); fscanf(fileOldDatabase,"%c"); } else if (j==10) { oldTravel.founded_in=strtol(one,&end,10); fscanf(fileOldDatabase,"%c"); } else if (j==11) { oldTravel.rate=strtol(one,&end,10); } } if (ID==oldTravel.ID) { //Якщо ID рівні. i=1; if (elem==1) { strcpy(oldTravel.service,editTravel.service); } else if (elem==2) { strcpy(oldTravel.name,editTravel.name); } else if (elem==3) { strcpy(oldTravel.cooperation,editTravel.cooperation); } else if (elem==4) { strcpy(oldTravel.recreation,editTravel.recreation); } else if (elem==5) { strcpy(oldTravel.site,editTravel.site); } else if (elem==6) { strcpy(oldTravel.phone_number,editTravel.phone_number); } else if (elem==7) { strcpy(oldTravel.mail,editTravel.mail); } else if (elem==8) { strcpy(oldTravel.fax_number,editTravel.fax_number); } else if (elem==9) { strcpy(oldTravel.address,editTravel.address); } else if (elem==10) { oldTravel.founded_in=editTravel.founded_in; } else if (elem==11) { oldTravel.rate=editTravel.rate; } fprintf(fileTemp,"%d %s ",oldTravel.ID,oldTravel.service); fprintf(fileTemp,"%s %s ",oldTravel.name,oldTravel.cooperation); fprintf(fileTemp,"%s %s ",oldTravel.recreation,oldTravel.site); fprintf(fileTemp,"%s %s ",oldTravel.phone_number,oldTravel.mail); fprintf(fileTemp,"%s %s ",oldTravel.fax_number,oldTravel.address); fprintf(fileTemp,"%d %d\n",oldTravel.founded_in,oldTravel.rate); printf("\nElement was edited."); } else { //Інакше зберегти старий запис. fprintf(fileTemp,"%d %s ",oldTravel.ID,oldTravel.service); fprintf(fileTemp,"%s %s ",oldTravel.name,oldTravel.cooperation); fprintf(fileTemp,"%s %s ",oldTravel.recreation,oldTravel.site); fprintf(fileTemp,"%s %s ",oldTravel.phone_number,oldTravel.mail); fprintf(fileTemp,"%s %s ",oldTravel.fax_number,oldTravel.address); fprintf(fileTemp,"%d %d\n",oldTravel.founded_in,oldTravel.rate); } } if (i==0) { printf("There is not such ID in the database."); } //*Перевірка чи закритий файл бази даних чи ні та виведення результату. if (fclose(fileOldDatabase) != 0) { printf("\nAn error is at closing of file %s.",nameOfDatabase); } if (fclose(fileTemp) != 0) { printf("\nAn error is at closing of file temp.txt."); } //*Кінець - Перевірка чи закритий файл бази даних чи ні та виведення результату. remove(nameOfDatabase); rename("temp.txt",nameOfDatabase); //***Кінець - Якщо вибраний метод 1 то запис запису у файл } //***Кінець - Функція редагування елемента в базі даних. //-------------------------------------------------- //***Функція перегляду бази даних. void revision() { FILE *fileOldDatabase; //Мітка для файлу старої (створеної) бази даних. char words[250]; //Масив символів для зберігання стрічки, яку зчитуєм з файлу. int n=0,k,j; //n - к-ть записів. char *end; //Вказівник для закінчення визначення цифр зі стрічки. struct travel oldTravel; //Структура для зберігання запису з бази даних. //***Перевірка чи файл відкритий без помилок і вивід резульату. if ((fileOldDatabase=fopen(nameOfDatabase,"r+")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } while(fgets(words,250,fileOldDatabase) != NULL && words[0] != '\n') { n++; } if (fclose(fileOldDatabase) != 0) { printf("\nAn error is at closing of file %s.",nameOfDatabase); } //***Кінець - Перевірка чи файл відкритий без помилок і вивід резульату. //***Ввід запису в базу даних. if ((fileOldDatabase=fopen(nameOfDatabase,"r+")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } for (k=0;k<n;k++) { char one[40]; for (j=0;j<12;j++) { fscanf(fileOldDatabase,"%s",&one); if (j==0) { oldTravel.ID=strtol(one,&end,10); fscanf(fileOldDatabase,"%c"); } else if (j==1) { strcpy(oldTravel.service,one); fscanf(fileOldDatabase,"%c"); } else if (j==2) { strcpy(oldTravel.name,one); fscanf(fileOldDatabase,"%c"); } else if (j==3) { strcpy(oldTravel.cooperation,one); fscanf(fileOldDatabase,"%c"); } else if (j==4) { strcpy(oldTravel.recreation,one); fscanf(fileOldDatabase,"%c"); } else if (j==5) { strcpy(oldTravel.site,one); fscanf(fileOldDatabase,"%c"); } else if (j==6) { strcpy(oldTravel.phone_number,one); fscanf(fileOldDatabase,"%c"); } else if (j==7) { strcpy(oldTravel.mail,one); fscanf(fileOldDatabase,"%c"); } else if (j==8) { strcpy(oldTravel.fax_number,one); fscanf(fileOldDatabase,"%c"); } else if (j==9) { strcpy(oldTravel.address,one); fscanf(fileOldDatabase,"%c"); } else if (j==10) { oldTravel.founded_in=strtol(one,&end,10); fscanf(fileOldDatabase,"%c"); } else if (j==11) { oldTravel.rate=strtol(one,&end,10); } } printf("\n"); printf("\n|----------------------------------"); printf("\n| Record - %d",(k)); printf("\n| Your dates: "); printf("\n| ID: %d\n| Service: %s\n| Name: %s\n| Cooperation: %s\n| Recreation: %s\n| The site: %s\n| Phone number: %s\n| Mail: %s\n| Fax number: %s\n| Address: %s\n| Founded in: %d\n| Rate: %d\n",oldTravel.ID,oldTravel.service,oldTravel.name,oldTravel.cooperation,oldTravel.recreation,oldTravel.site,oldTravel.phone_number,oldTravel.mail,oldTravel.fax_number,oldTravel.address,oldTravel.founded_in,oldTravel.rate); printf("\n| ----------------------------------\n"); } printf("\n___________________________\n"); printf("_____ Records: %d _______",n); printf("\n___________________________\n"); if (fclose(fileOldDatabase) != 0) { printf("\nAn error is at closing of file %s.",nameOfDatabase); } } //***Кінець - Функція перегляду бази даних. void search(int elem, struct travel searchTravel) { FILE *fileOldDatabase; //Мітка для файлу старої (створеної) бази даних. char words[250]; //Масив символів для зберігання стрічки, яку зчитуєм з файлу. int i=0,n=0,k,j; //i - Змінна для перевірки видалений файл чи ні, n - к-ть записів. char *end; //Вказівник для закінчення визначення цифр зі стрічки. struct travel oldTravel; //Структура для зберігання запису з бази даних. //***Перевірка чи файл відкритий без помилок і вивід резульату. if ((fileOldDatabase=fopen(nameOfDatabase,"r+")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } while(fgets(words,250,fileOldDatabase) != NULL && words[0] != '\n') { n++; } if (fclose(fileOldDatabase) != 0) { printf("\nAn error is at closing of file %s.",nameOfDatabase); } //***Кінець - Перевірка чи файл відкритий без помилок і вивід резульату. //***Пошук в базі даних. if ((fileOldDatabase=fopen(nameOfDatabase,"r+")) == NULL) { printf("\nAn error is at opening of database. %s.",nameOfDatabase); } for (k=0;k<n;k++) { char one[40]; //Зчитування з файлу запису. for (j=0;j<12;j++) { fscanf(fileOldDatabase,"%s",&one); if (j==0) { oldTravel.ID=strtol(one,&end,10); fscanf(fileOldDatabase,"%c"); } else if (j==1) { strcpy(oldTravel.service,one); fscanf(fileOldDatabase,"%c"); } else if (j==2) { strcpy(oldTravel.name,one); fscanf(fileOldDatabase,"%c"); } else if (j==3) { strcpy(oldTravel.cooperation,one); fscanf(fileOldDatabase,"%c"); } else if (j==4) { strcpy(oldTravel.recreation,one); fscanf(fileOldDatabase,"%c"); } else if (j==5) { strcpy(oldTravel.site,one); fscanf(fileOldDatabase,"%c"); } else if (j==6) { strcpy(oldTravel.phone_number,one); fscanf(fileOldDatabase,"%c"); } else if (j==7) { strcpy(oldTravel.mail,one); fscanf(fileOldDatabase,"%c"); } else if (j==8) { strcpy(oldTravel.fax_number,one); fscanf(fileOldDatabase,"%c"); } else if (j==9) { strcpy(oldTravel.address,one); fscanf(fileOldDatabase,"%c"); } else if (j==10) { oldTravel.founded_in=strtol(one,&end,10); fscanf(fileOldDatabase,"%c"); } else if (j==11) { oldTravel.rate=strtol(one,&end,10); } } //Кінець - Зчитування з файлу запису. i=0; int nStr; //Порівння шуканого елемента в записі в залежності від поля пошуку. if (elem==1) { nStr=strlen(searchTravel.service); if (strncmp(oldTravel.service,searchTravel.service,nStr) == 0) { i=1; } } else if (elem==2) { nStr=strlen(searchTravel.name); if (strncmp(oldTravel.name,searchTravel.name,nStr) == 0) { i=1; } } else if (elem==3) { nStr=strlen(searchTravel.cooperation); if (strncmp(oldTravel.cooperation,searchTravel.cooperation,nStr) == 0) { i=1; } } else if (elem==4) { nStr=strlen(searchTravel.recreation); if (strncmp(oldTravel.recreation,searchTravel.recreation,nStr) == 0) { i=1; } } else if (elem==5) { nStr=strlen(searchTravel.site); if (strncmp(oldTravel.site,searchTravel.site,nStr) == 0) { i=1; } } else if (elem==6) { nStr=strlen(searchTravel.phone_number); if (strncmp(oldTravel.phone_number,searchTravel.phone_number,nStr) == 0) { i=1; } } else if (elem==7) { nStr=strlen(searchTravel.mail); if (strncmp(oldTravel.mail,searchTravel.mail,nStr) == 0) { i=1; } } else if (elem==8) { nStr=strlen(searchTravel.fax_number); if (strncmp(oldTravel.fax_number,searchTravel.fax_number,nStr) == 0) { i=1; } } else if (elem==9) { nStr=strlen(searchTravel.address); if (strncmp(oldTravel.address,searchTravel.address,nStr) == 0) { i=1; } } else if (elem==10) { if (oldTravel.founded_in==searchTravel.founded_in) { i=1; } } else if (elem==11) { if (oldTravel.rate==searchTravel.rate) { i=1; } } //Кінець - Порівння шуканого елемента в записі в залежності від поля пошуку. if (i==1) { //Якщо елемент знайдений вивести запис, інакше вивести повідомлення про його відсутність. printf("\n"); printf("\n----------------------------------"); printf("\nRecord - %d",(k)); printf("\nYour dates:\n"); printf("\nID: %d\nservice: %s\nName: %s\ncooperation: %s\nrecreation: %s\nthe site: %s\nphone_number: %s\nmail: %s\nfax_number: %s\naddress: %s\nfounded_in: %d\nrate: %d\n",oldTravel.ID,oldTravel.service,oldTravel.name,oldTravel.cooperation,oldTravel.recreation,oldTravel.site,oldTravel.phone_number,oldTravel.mail,oldTravel.fax_number,oldTravel.address,oldTravel.founded_in,oldTravel.rate); printf("\n----------------------------------\n"); } } if (i==0) { printf("\nThismelement is not un database."); } //*Перевірка чи закритий файл бази даних чи ні та виведення результату. if (fclose(fileOldDatabase) != 0) { printf("\nAn error is at closing of file %s.",nameOfDatabase); } //***Кінець - Якщо вибраний метод 1 то запис запису у файл } //***Кінець - Функція редагування елемента в базі даних. Результати виконання програми Запуск програми