/* В заданиях 19-26 необходимо создать программу ведения базы данных, реализованной в виде двоичного файла. Записи базы должны быть представлены в виде структур (struct). Для каждой базы должна быть реализована возможность добавления новой записи или удаления существующей. Также программа должна обеспечивать вывод результатов запросов, указанных в задании. Создать программу ведения базы данных личной библиотеки. Программа должна обеспечивать: ввод и корректировку информации о новых книгах; поиск информации о книгах определенного автора; поиск информации о книгах определенного жанра. */ #include "stdafx.h" #include #include #include #include #include #include using namespace std; const int SIZE=100; struct inv_type { char name[15]; // Название книги char author[15]; // Автор char genre[15]; // Жанр char description[45]; //Описание }invtry[SIZE] ; void enter(); void init_list(); void display(); void update(); void remove(); void author(); void genre(); void input(int i); int menu(); void title(); void dis(int i); void saveToFile(); void loadFromFile(); int main() { setlocale(LC_ALL,"Russian"); char choice; init_list(); for(;;) { choice = menu(); switch(choice) { case '1': author(); break; case '2': genre(); break; case 'e': enter(); break; case 'd': display(); break; case 'u': update(); break; case 'r': remove(); break; case 's':saveToFile(); break; case 'l':loadFromFile(); break; case 'q': return 0; } } } //вывод названия столбцов void title() { int width=15; cout<< left // выравнивание по левому краю << setw(width)<<"Название" << setw(width)<<"Автор" << setw(width)<<"Жанр" << setw(width*3)<<"Описание"<< endl; } //Вывод на экран строк void dis(int i) { int width=15; cout<< left // выравнивание по левому краю << setw(width)<>ch; } while(!strchr("eduqr12sl", tolower(ch))); return tolower(ch); } // проверка для ввода информации(input). void enter() { int i; // Находим первую свободную структуру. for(i=0; i>invtry[i].name; cout<< "Автор: "; cin>>invtry[i].author; cout<<"Жанр: "; cin>>invtry[i].genre; cout<<"Описание: "; cin>>invtry[i].description; } //Изменение элемента. void update() { int i; char name [15]; cout<<"Введите название книги: "; cin>>name; for(i=0; i>name; for(i=0; i>author; for(i=0; i>genre; for(i=0; i #include #include #include #include #include #include #include using namespace std; const int n=90; struct diskType { char name[20]; // Название фильма char owner[15]; char whomGiven[15]; // кому отдан char genre[15]; // Жанр char date[9] ; // дата возврата в формате ДД.ММ.ГГ }disks[n] ; void loadFromFile(); void saveToFile(); void display(); void checkAndInputDisk(); void inputDisk(int); void remove(); void update(); void findDisk(); void genre(); void date(); void clear(); void displayDisk(int i); int menu(); int convertDate(char date[15]); int kol; //количество дисков int main() { setlocale(LC_ALL,"Russian"); char action; clear(); for(;;) { action = menu(); switch(action) { case '1': loadFromFile(); break; case '2': saveToFile(); break; case '3': display(); break; case '4': checkAndInputDisk(); break; case '5': remove(); break; case '6': update(); break; case '7': findDisk(); break; case '8':genre(); break; case '9':date(); break; case '0': return 0; } } } //------------------------------------------------------------------------- //вывод названия столбцов void displayTitle() { cout<< left // выравнивание по левому краю << setw(20)<<"Название" << setw(15)<<"Владелец" << setw(15)<<"Кому отдан" << setw(15)<<"Жанр" << setw(9)<<"Дата возврата\n"<< endl; } //------------------------------------------------------------------------- //Вывод на экран i-го диска void displayDisk(int i) { cout<< left // выравнивание по левому краю << setw(20)<'9') { cout<<"1 - Загрузить базу из файла\n"; cout<<"2 - Сохранить базу в файл\n"; cout<<"3 - Вывести базу дисков на экран\n"; cout<<"4 - Добавить новый диск\n"; cout<<"5 - Удалить диск\n"; cout<<"6 - Изменить данные о диске\n"; cout<<"7 - Поиск диска\n"; cout<<"8 - Поиск жанра\n"; cout<<"9 - Диски, необходимые вернуть в течение недели\n"; cout<<"0 - Выход\n\n"; cout<<"Выберите команду: "; cin>>ch; if (ch<'0' || ch>'9') cout<<"Ошибка ввода. Попробуйте еще раз.\n"; } return ch; } //------------------------------------------------------------------------- // добавление нового диска c консоли (проверка) void checkAndInputDisk() { // проверка того, что база не полна if(kol==n) { cout << "База заполнена. Диск не может быть добавлен\n"; return; } inputDisk(kol); kol++; } //------------------------------------------------------------------------- //запись вводимого с консоли диска под номером i void inputDisk(int i) { cout<<"Введите информацию о диске: \n"; cout<<"Название: "; cin>>disks[i].name; cout<<"Владелец: "; cin>>disks[i].owner; cout<<"Кому отдан диск: "; cin>>disks[i].whomGiven; cout<<"Жанр: "; cin>>disks[i].genre; cout<<"Дата возврата (ДД.ММ.ГГ): "; cin>>disks[i].date; cout<>name; bool found=false; int i; for(i=0; i>name; bool found=false; for(i=0; i>genre; displayTitle(); for(int i=0; i>name; bool found=false; while (iconvertDate(disks[i].date)+6) { displayDisk(i); found=true; } } if (!found) cout<<"Таких дисков нет.\n"; }