МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра САПР
Звіт
до лабораторної роботи №1
на тему:
«Послідовний метод доступу до файлів на зовнішніх запам’ятовуючих пристроях»
Текст програми:
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#define ROWS 0
#define MAXNAME 40
#define MAXPLATFORM 20
#define MAXDEVELOPER 30
#define MAXPUBLISHER 30
#define MAXRELEASEDATE 10
#define MAXGENRE 20
#define MAXHOMEPAGE 20
#define MAXTRANSMITTER 10
#define MAXGRAPHICS 10
char nameOfDatabase[20];
FILE *f;
FILE *fTemp;
struct game {
int ID;
char name[MAXNAME];
char developer[MAXDEVELOPER];
char publisher[MAXPUBLISHER];
char platform[MAXPLATFORM];
char genre[MAXGENRE];
char homepage[MAXHOMEPAGE];
char releaseDate[MAXRELEASEDATE];
int age;
char transmitter[MAXTRANSMITTER];
int gameRate;
char graphics[MAXGRAPHICS];
};
struct gameM2Edit {
int ID;
char name[MAXNAME];
char developer[MAXDEVELOPER];
char publisher[MAXPUBLISHER];
char platform[MAXPLATFORM];
char genre[MAXGENRE];
char homepage[MAXHOMEPAGE];
char releaseDate[MAXRELEASEDATE];
int age;
char transmitter[MAXTRANSMITTER];
int gameRate;
char graphics[MAXGRAPHICS];
int what;
int whatEdit;
};
void addElementInDatabase(struct game addGame);
void deleteElementInDatabase(int);
void edit(int,int,struct game addGame);
void revision();
void search(int,struct game addGame);
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_noGameRate=0; //Змінна для перевірки вибору оцінки гри.
int ID; //ID - елемента, який потрібно видалити або редагувати.
char nameOfFile[20]; //Змінна для збереження назви нової бази даних.
FILE *fileDatabase; //Мітка для файлу ств. бази даних.
struct game workGame;
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 the game: ");
scanf("%d",&workGame.ID);
printf("2. Enter platform (MAX-10): ");
scanf("%s",&workGame.platform);
printf("3. Enter name of the game (MAX-40): ");
scanf("%s",&workGame.name);
printf("4. Enter developer (MAX-30): ");
scanf("%s",&workGame.developer);
printf("5. Enter publisher (MAX-30): ");
scanf("%s",&workGame.publisher);
printf("6. Enter release date (MAX-10): ");
scanf("%s",&workGame.releaseDate);
printf("7. Enter genre (MAX-20): ");
scanf("%s",&workGame.genre);
printf("8. Enter homepage (MAX-20): ");
scanf("%s",&workGame.homepage);
printf("9. Enter transmitter (MAX-10): ");
scanf("%s",&workGame.transmitter);
printf("10. Enter graphics (MAX-10): ");
scanf("%s",&workGame.graphics);
printf("11. Enter age (MAX-3): ");
scanf("%d",&workGame.age);
printf("12. Enter game rate (1,2,3,4 or 5): ");
scanf("%d",&workGame.gameRate);
if (workGame.gameRate==1 || workGame.gameRate==2 || workGame.gameRate==3 || workGame.gameRate==4 || workGame.gameRate== 5) {
yes_noGameRate=1;
}
while (yes_noGameRate!=1) {
printf("You have not enter 1, 2, 3, 4 or 5. Please enter once again: ");
scanf("%d",&workGame.gameRate);
if (workGame.gameRate==1 || workGame.gameRate==2 || workGame.gameRate==3 || workGame.gameRate==4 || workGame.gameRate== 5) {
yes_noGameRate=1;
}
}
//***Кінець - Введення даних.
//**Вивід даних.
printf("\n----------------------------------");
printf("\nYour dates:\n");
printf("\nID: %d\nPlatform: %s\nName: %s\nDeveloper: %s\nPublisher: %s\nRelease date: %s\nGenre: %s\nHomepage: %s\nTransmitter: %s\nGraphics: %s\nAge: %d\nGame rate: %d\n",workGame.ID,workGame.platform,workGame.name,workGame.developer,workGame.publisher,workGame.releaseDate,workGame.genre,workGame.homepage,workGame.transmitter,workGame.graphics,workGame.age,workGame.gameRate);
printf("\n----------------------------------\n");
//**Кінець - Вивід даних.
addElementInDatabase(workGame);
}
//**Повернення в головне меню.
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. Platform\n2. Name\n3. Developer\n4. Publisher\n5. Release date\n6. Genre\n7. Homepage\n8. Transmitter\n9. Graphics\n10. Age\n11. Game rate\n");
printf("Choose and enter one of menu items: ");
scanf("%d",&menuItemEdit);
if (menuItemEdit==1) {
printf("Enter platform (MAX-10): ");
scanf("%s",&workGame.platform);
elemEdit=1;
edit(ID,elemEdit,workGame);
}
else if (menuItemEdit==2) {
printf("Enter name (MAX-40): ");
scanf("%s",&workGame.name);
elemEdit=2;
edit(ID,elemEdit,workGame);
}
else if (menuItemEdit==3) {
printf("Enter Developer (MAX-30): ");
scanf("%s",&workGame.developer);
elemEdit=3;
edit(ID,elemEdit,workGame);
}
else if (menuItemEdit==4) {
printf("Enter Publisher (MAX-30): ");
scanf("%s",&workGame.publisher);
elemEdit=4;
edit(ID,elemEdit,workGame);
}
else if (menuItemEdit==5) {
printf("Enter Release date (MAX-10): ");
scanf("%s",&workGame.releaseDate);
elemEdit=5;
edit(ID,elemEdit,workGame);
}
else if (menuItemEdit==6) {
printf("Enter Genre (MAX-20): ");
scanf("%s",&workGame.genre);
elemEdit=6;
edit(ID,elemEdit,workGame);
}
else if (menuItemEdit==7) {
printf("Enter Homepage (MAX-20): ");
scanf("%s",&workGame.homepage);
elemEdit=7;
edit(ID,elemEdit,workGame);
}
else if (menuItemEdit==8) {
printf("Enter Transmitter (MAX-10): ");
scanf("%s",&workGame.transmitter);
elemEdit=8;
edit(ID,elemEdit,workGame);
}
else if (menuItemEdit==9) {
printf("Enter Graphics (MAX-10): ");
scanf("%s",&workGame.graphics);
elemEdit=9;
edit(ID,elemEdit,workGame);
}
else if (menuItemEdit==10) {
printf("Enter Age: ");
scanf("%d",&workGame.age);
elemEdit=10;
edit(ID,elemEdit,workGame);
}
else if (menuItemEdit==11) {
printf("Enter Game Rate: ");
scanf("%d",&workGame.gameRate);
elemEdit=11;
edit(ID,elemEdit,workGame);
}
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. Platform\n2. Name\n3. Developer\n4. Publisher\n5. Release date\n6. Genre\n7. Homepage\n8. Transmitter\n9. Graphics\n10. Age\n11. Game rate\n");
printf("Choose and enter one of menu items: ");
scanf("%d",&menuItemSearch);
if (menuItemSearch==1) {
printf("Enter platform (MAX-10): ");
scanf("%s",&workGame.platform);
elemSearch=1;
search(elemSearch,workGame);
yes_no=1;
}
else if (menuItemSearch==2) {
printf("Enter name (MAX-40): ");
scanf("%s",&workGame.name);
elemSearch=2;
search(elemSearch,workGame);
yes_no=1;
}
else if (menuItemSearch==3) {
printf("Enter Developer (MAX-30): ");
scanf("%s",&workGame.developer);
elemSearch=3;
search(elemSearch,workGame);
yes_no=1;
}
else if (menuItemSearch==4) {
printf("Enter Publisher (MAX-30): ");
scanf("%s",&workGame.publisher);
elemSearch=4;
search(elemSearch,workGame);
yes_no=1;
}
else if (menuItemSearch==5) {
printf("Enter Release date (MAX-10): ");
scanf("%s",&workGame.releaseDate);
elemSearch=5;
search(elemSearch,workGame);
yes_no=1;
}
else if (menuItemSearch==6) {
printf("Enter Genre (MAX-20): ");
scanf("%s",&workGame.genre);
elemSearch=6;
search(elemSearch,workGame);
yes_no=1;
}
else if (menuItemSearch==7) {
printf("Enter Homepage (MAX-20): ");
scanf("%s",&workGame.homepage);
elemSearch=7;
search(elemSearch,workGame);
yes_no=1;
}
else if (menuItemSearch==8) {
printf("Enter Transmitter (MAX-10): ");
scanf("%s",&workGame.transmitter);
elemSearch=8;
search(elemSearch,workGame);
yes_no=1;
}
else if (menuItemSearch==9) {
printf("Enter Graphics (MAX-10): ");
scanf("%s",&workGame.graphics);
elemSearch=9;
search(elemSearch,workGame);
yes_no=1;
}
else if (menuItemSearch==10) {
printf("Enter Age: ");
scanf("%d",&workGame.age);
elemSearch=10;
search(elemSearch,workGame);
yes_no=1;
}
else if (menuItemSearch==11) {
printf("Enter Game Rate: ");
scanf("%d",&workGame.gameRate);
elemSearch=11;
search(elemSearch,workGame);
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_noGameRate=0; //Змінна для вибору оцінки гри.
struct gameM2Edit zenGame; //Структура потрібна для сортування структур.
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 game: ");
scanf("%d",&zenGame.ID);
printf("2. Enter platform (MAX-10): ");
scanf("%s",&zenGame.platform);
printf("3. Enter name of the game (MAX-40): ");
scanf("%s",&zenGame.name);
printf("4. Enter developer (MAX-30): ");
scanf("%s",&zenGame.developer);
printf("5. Enter publisher (MAX-30): ");
scanf("%s",&zenGame.publisher);
printf("6. Enter release date (MAX-10): ");
scanf("%s",&zenGame.releaseDate);
printf("7. Enter genre (MAX-20): ");
scanf("%s",&zenGame.genre);
printf("8. Enter homepage (MAX-20): ");
scanf("%s",&zenGame.homepage);
printf("9. Enter transmitter (MAX-10): ");
scanf("%s",&zenGame.transmitter);
printf("10. Enter graphics (MAX-10): ");
scanf("%s",&zenGame.graphics);
printf("11. Enter age (MAX-3): ");
scanf("%d",&zenGame.age);
printf("12. Enter game rate (1,2,3,4 or 5): ");
scanf("%d",&zenGame.gameRate);
if (zenGame.gameRate==1 || zenGame.gameRate==2 || zenGame.gameRate==3 || zenGame.gameRate==4 || zenGame.gameRate== 5) {
yes_noGameRate=1;
}
while (yes_noGameRate!=1) {
printf("You have not enter 1, 2, 3, 4 or 5. Please enter once again: ");
scanf("%d",&zenGame.gameRate);
if (zenGame.gameRate==1 || zenGame.gameRate==2 || zenGame.gameRate==3 || zenGame.gameRate==4 || zenGame.gameRate== 5) {
yes_noGameRate=1;
}
}
//***Кінець - Введення даних.
zenGame.what=1; //Зберігання, що потрібно робити зі структурою.
//**Вивід даних.
printf("\n----------------------------------");
printf("\nYour dates:\n");
printf("\nID: %d\nPlatform: %s\nName: %s\nDeveloper: %s\nPublisher: %s\nRelease date: %s\nGenre: %s\nHomepage: %s\nTransmitter: %s\nGraphics: %s\nAge: %d\nGame rate: %d\nDo: %d\n",zenGame.ID,zenGame.platform,zenGame.name,zenGame.developer,zenGame.publisher,zenGame.releaseDate,zenGame.genre,zenGame.homepage,zenGame.transmitter,zenGame.graphics,zenGame.age,zenGame.gameRate,zenGame.what);
printf("\n----------------------------------\n");
//**Кінець - Вивід даних.
nOp++;
fprintf(fGr,"%d %d %s ",zenGame.what, zenGame.ID,zenGame.platform);
fprintf(fGr,"%s %s ",zenGame.name,zenGame.developer);
fprintf(fGr,"%s %s ",zenGame.publisher,zenGame.releaseDate);
fprintf(fGr,"%s %s ",zenGame.genre,zenGame.homepage);
fprintf(fGr,"%s %s ",zenGame.transmitter,zenGame.graphics);
fprintf(fGr,"%d %d\n",zenGame.age,zenGame.gameRate);
}
else if (menuItemF==2) {
printf("\nEnter ID of element to edit: ");
scanf("%d",&zenGame.ID);
zenGame.what=2;
fprintf(fGr,"%d %d ",zenGame.what, zenGame.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. Platform\n2. Name\n3. Developer\n4. Publisher\n5. Release date\n6. Genre\n7. Homepage\n8. Transmitter\n9. Graphics\n10. Age\n11. Game rate\n");
printf("Choose and enter one of menu items: ");
scanf("%d",&menuItemEdit);
if (menuItemEdit==1) {
printf("Enter platform (MAX-10): ");
scanf("%s",&zenGame.platform);
zenGame.whatEdit=1;
fprintf(fGr,"%d %s\n",zenGame.whatEdit, zenGame.platform);
yes_noP=1;
}
else if (menuItemEdit==2) {
printf("Enter name (MAX-40): ");
scanf("%s",&zenGame.name);
zenGame.whatEdit=2;
fprintf(fGr,"%d %s\n",zenGame.whatEdit, zenGame.name);
yes_noP=1;
}
else if (menuItemEdit==3) {
printf("Enter Developer (MAX-30): ");
scanf("%s",&zenGame.developer);
zenGame.whatEdit=3;
fprintf(fGr,"%d %s\n",zenGame.whatEdit, zenGame.developer);
yes_noP=1;
}
else if (menuItemEdit==4) {
printf("Enter Publisher (MAX-30): ");
scanf("%s",&zenGame.publisher);
zenGame.whatEdit=4;
fprintf(fGr,"%d %s\n",zenGame.whatEdit, zenGame.publisher);
yes_noP=1;
}
else if (menuItemEdit==5) {
printf("Enter Release date (MAX-10): ");
scanf("%s",&zenGame.releaseDate);
zenGame.whatEdit=5;
fprintf(fGr,"%d %s\n",zenGame.whatEdit, zenGame.releaseDate);
yes_noP=1;
}
else if (menuItemEdit==6) {
printf("Enter Genre (MAX-20): ");
scanf("%s",&zenGame.genre);
zenGame.whatEdit=6;
fprintf(fGr,"%d %s\n",zenGame.whatEdit, zenGame.genre);
yes_noP=1;
}
else if (menuItemEdit==7) {
printf("Enter Homepage (MAX-20): ");
scanf("%s",&zenGame.homepage);
zenGame.whatEdit=7;
fprintf(fGr,"%d %s\n",zenGame.whatEdit, zenGame.homepage);
yes_noP=1;
}
else if (menuItemEdit==8) {
printf("Enter Transmitter (MAX-10): ");
scanf("%s",&zenGame.transmitter);
zenGame.whatEdit=8;
fprintf(fGr,"%d %s\n",zenGame.whatEdit, zenGame.transmitter);
yes_noP=1;
}
else if (menuItemEdit==9) {
printf("Enter Graphics (MAX-10): ");
scanf("%s",&zenGame.graphics);
zenGame.whatEdit=9;
fprintf(fGr,"%d %s\n",zenGame.whatEdit, zenGame.graphics);
yes_noP=1;
}
else if (menuItemEdit==10) {
printf("Enter Age: ");
scanf("%d",&zenGame.age);
zenGame.whatEdit=10;
fprintf(fGr,"%d %d\n",zenGame.whatEdit, zenGame.age);
yes_noP=1;
}
else if (menuItemEdit==11) {
printf("Enter Game Rate: ");
scanf("%d",&zenGame.gameRate);
zenGame.whatEdit=11;
fprintf(fGr,"%d %d\n",zenGame.whatEdit, zenGame.gameRate);
yes_noP=1;
}
}
nOp++;
}
else if (menuItemF==3) {
printf("\nEnter ID of element to delete: ");
scanf("%d",&zenGame.ID);
zenGame.what=3;
fprintf(fGr,"%d %d\n",zenGame.what, zenGame.ID);
nOp++;
}
else if (menuItemF==4) {
int i,j;
struct gameM2Edit allGame[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);
allGame[i].what=strtol(one,&end,10);
fscanf(fGr,"%c");
if (allGame[i].what==1) {
for (j=0;j<12;j++) {
fscanf(fGr,"%s",&one);
if (j==0) {
allGame[i].ID=strtol(one,&end,10);
fscanf(fGr,"%c");
}
else if (j==1) {
strcpy(allGame[i].platform,one);
fscanf(fGr,"%c");
}
else if (j==2) {
strcpy(allGame[i].name,one);
fscanf(fGr,"%c");
}
else if (j==3) {
strcpy(allGame[i].developer,one);
fscanf(fGr,"%c");
}
else if (j==4) {
strcpy(allGame[i].publisher,one);
fscanf(fGr,"%c");
}
else if (j==5) {
strcpy(allGame[i].releaseDate,one);
fscanf(fGr,"%c");
}
else if (j==6) {
strcpy(allGame[i].genre,one);
fscanf(fGr,"%c");
}
else if (j==7) {
strcpy(allGame[i].homepage,one);
fscanf(fGr,"%c");
}
else if (j==8) {
strcpy(allGame[i].transmitter,one);
fscanf(fGr,"%c");
}
else if (j==9) {
strcpy(allGame[i].graphics,one);
fscanf(fGr,"%c");
}
else if (j==10) {
allGame[i].age=strtol(one,&end,10);
fscanf(fGr,"%c");
}
else if (j==11) {
allGame[i].gameRate=strtol(one,&end,10);
}
}
}
else if (allGame[i].what==2) {
fscanf(fGr,"%s",&one);
allGame[i].ID=strtol(one,&end,10);
fscanf(fGr,"%c");
fscanf(fGr,"%s",&one);
allGame[i].whatEdit=strtol(one,&end,10);
fscanf(fGr,"%c");
fscanf(fGr,"%s",&one);
if (allGame[i].whatEdit==0) {
}
else if (allGame[i].whatEdit==1) {
strcpy(allGame[i].platform,one);
fscanf(fGr,"%c");
}
else if (allGame[i].whatEdit==2) {
strcpy(allGame[i].name,one);
fscanf(fGr,"%c");
}
else if (allGame[i].whatEdit==3) {
strcpy(allGame[i].developer,one);
fscanf(fGr,"%c");
}
else if (allGame[i].whatEdit==4) {
strcpy(allGame[i].publisher,one);
fscanf(fGr,"%c");
}
else if (allGame[i].whatEdit==5) {
strcpy(allGame[i].releaseDate,one);
fscanf(fGr,"%c");
}
else if (allGame[i].whatEdit==6) {
strcpy(allGame[i].genre,one);
fscanf(fGr,"%c");
}
else if (allGame[i].whatEdit==7) {
strcpy(allGame[i].homepage,one);
fscanf(fGr,"%c");
}
else if (allGame[i].whatEdit==8) {
strcpy(allGame[i].transmitter,one);
fscanf(fGr,"%c");
}
else if (allGame[i].whatEdit==9) {
strcpy(allGame[i].graphics,one);
fscanf(fGr,"%c");
}
else if (allGame[i].whatEdit==10) {
allGame[i].age=strtol(one,&end,10);
fscanf(fGr,"%c");
}
else if (allGame[i].whatEdit==11) {
allGame[i].gameRate=strtol(one,&end,10);
}
}
else if (allGame[i].what==3) {
fscanf(fGr,"%s",&one);
allGame[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 (allGame[j].ID>allGame[j+1].ID) {
zenGame.ID=allGame[j].ID;
strcpy(zenGame.platform,allGame[j].platform);
strcpy(zenGame.name,allGame[j].name);
strcpy(zenGame.developer,allGame[j].developer);
strcpy(zenGame.publisher,allGame[j].publisher);
strcpy(zenGame.releaseDate,allGame[j].releaseDate);
strcpy(zenGame.genre,allGame[j].genre);
strcpy(zenGame.homepage,allGame[j].homepage);
strcpy(zenGame.transmitter,allGame[j].transmitter);
strcpy(zenGame.graphics,allGame[j].graphics);
zenGame.age=allGame[j].age;
zenGame.gameRate=allGame[j].gameRate;
zenGame.what=allGame[j].what;
zenGame.whatEdit=allGame[j].whatEdit;
allGame[j].ID=allGame[j+1].ID;
strcpy(allGame[j].platform,allGame[j+1].platform);
strcpy(allGame[j].name,allGame[j+1].name);
strcpy(allGame[j].developer,allGame[j+1].developer);
strcpy(allGame[j].publisher,allGame[j+1].publisher);
strcpy(allGame[j].releaseDate,allGame[j+1].releaseDate);
strcpy(allGame[j].genre,allGame[j+1].genre);
strcpy(allGame[j].homepage,allGame[j+1].homepage);
strcpy(allGame[j].transmitter,allGame[j+1].transmitter);
strcpy(allGame[j].graphics,allGame[j+1].graphics);
allGame[j].age=allGame[j+1].age;
allGame[j].gameRate=allGame[j+1].gameRate;
allGame[j].what=allGame[j+1].what;
allGame[j].whatEdit=allGame[j+1].whatEdit;
allGame[j+1].ID=zenGame.ID;
strcpy(allGame[j+1].platform,zenGame.platform);
strcpy(allGame[j+1].name,zenGame.name);
strcpy(allGame[j+1].developer,zenGame.developer);
strcpy(allGame[j+1].publisher,zenGame.publisher);
strcpy(allGame[j+1].releaseDate,zenGame.releaseDate);
strcpy(allGame[j+1].genre,zenGame.genre);
strcpy(allGame[j+1].homepage,zenGame.homepage);
strcpy(allGame[j+1].transmitter,zenGame.transmitter);
strcpy(allGame[j+1].graphics,zenGame.graphics);
allGame[j+1].age=zenGame.age;
allGame[j+1].gameRate=zenGame.gameRate;
allGame[j+1].what=zenGame.what;
allGame[j+1].whatEdit=zenGame.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 (allGame[m].what==1) { //Додавання запису.
printf("\n%d. Add a record:\n",m);
//**Вивід даних.
printf("\n----------------------------------");
printf("\nYour dates:\n");
printf("\nID: %d\nPlatform: %s\nName: %s\nDeveloper: %s\nPublisher: %s\nRelease date: %s\nGenre: %s\nHomepage: %s\nTransmitter: %s\nGraphics: %s\nAge: %d\nGame rate: %d\n",allGame[m].ID,allGame[m].platform,allGame[m].name,allGame[m].developer,allGame[m].publisher,allGame[m].releaseDate,allGame[m].genre,allGame[m].homepage,allGame[m].transmitter,allGame[m].graphics,allGame[m].age,allGame[m].gameRate);
printf("\n----------------------------------\n");
fprintf(fGr,"%d %d %s ",allGame[m].ID,allGame[m].what,allGame[m].platform);
fprintf(fGr,"%s %s ",allGame[m].name,allGame[m].developer);
fprintf(fGr,"%s %s ",allGame[m].publisher,allGame[m].releaseDate);
fprintf(fGr,"%s %s ",allGame[m].genre,allGame[m].homepage);
fprintf(fGr,"%s %s ",allGame[m].transmitter,allGame[m].graphics);
fprintf(fGr,"%d %d\n",allGame[m].ag...