Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<conio.h>
- #include<fstream>
- #pragma warning(disable:4996)
- #pragma warning(disable:4703)
- #pragma warning(disable:4326)
- using namespace std;
- int len;
- void exits() {
- exit(1);
- }
- struct biblio_card {
- int shifr, kol_str, year;
- char author[32], name[32], izdat[16];
- };
- //---Очистить-массив--------------------------------------------------------------------------------------------------------------------------------------
- void ClearCards(biblio_card **card) {
- card = (biblio_card **)realloc(card, 0);
- len == 0;
- }
- //---Добавление-карточки----------------------------------------------------------------------------------------------------------------------------------
- biblio_card **AddCard(biblio_card **card) {
- card = (biblio_card **)realloc(card, sizeof(biblio_card*)*(++len));
- biblio_card *tmp = new biblio_card;
- cout << "Введите шифр :";
- cin >> tmp->shifr;
- //scanf("%i", &tmp->shifr);
- cout << "Введите автора :";
- //cin >> tmp->author;
- scanf("%s", tmp->author);
- cout << "Введите название книги :";
- //cin >> tmp->name;
- scanf("%s", tmp->name);
- cout << "Введите количество страниц :";
- //cin >> tmp->kol_str;
- scanf("%i", &tmp->kol_str);
- cout << "Введите год издания :";
- //cin >> tmp->year;
- scanf("%i", &tmp->year);
- cout << "Введите издательство :";
- //cin >> tmp->izdat;
- scanf("%s", tmp->izdat);
- card[len - 1] = tmp;
- return card;
- }
- //---Запись-в-файл----------------------------------------------------------------------------------------------------------------------------------------
- void FprintfCards(biblio_card **card) {
- char file[32];
- cout << "Введите имя файла: "; cin >> file;
- FILE *f = fopen(file, "w");
- fprintf(f, "%i\n", len);
- for (int i = 0; i < len; i++) {
- fprintf(f, "%i %s %s %i %i %s\n", card[i]->shifr, card[i]->author, card[i]->name, card[i]->kol_str, card[i]->year, card[i]->izdat);
- }
- fclose(f);
- }
- //---Чтение-из-файла--------------------------------------------------------------------------------------------------------------------------------------
- biblio_card **FreadCards(biblio_card **card) {
- char file[32];
- cout << "Введите имя файла: "; cin >> file;
- FILE *f = fopen(file, "r");
- fscanf(f, "%i\n", &len);
- card = (biblio_card **)realloc(card, sizeof(biblio_card*)*len);
- for (int i = 0; i < len; i++) {
- fscanf(f, "%i %s %s %i %i %s\n", &card[i]->shifr, card[i]->author, card[i]->name, &card[i]->kol_str, &card[i]->year, card[i]->izdat);
- }
- return card;
- }
- //---Вывод-карточки-в-консоль-----------------------------------------------------------------------------------------------------------------------------
- void PrintCard(biblio_card *card) {
- cout << endl << "Шифр: " << (card->shifr) << endl;
- cout << "Автор: " << card->author << endl;
- cout << "Наименование книги: " << card->name << endl;
- cout << "Количество страниц: " << card->kol_str << endl;
- cout << "Год издания: " << card->year << endl;
- cout << "Издательство: " << card->izdat << endl;
- }
- //---Поиск-по-году----------------------------------------------------------------------------------------------------------------------------------------
- void Find_year(biblio_card **card)
- {
- int year;
- cout << "Введите год :"; cin >> year;
- for (int i = 0; i < len; i++)
- {
- if (card[i]->year == year)
- {
- PrintCard(card[i]);
- }
- }
- }
- //---Поиск-по-автору--------------------------------------------------------------------------------------------------------------------------------------
- void Find_author(biblio_card **card)
- {
- char author[32];
- cout << "Введите год :"; cin >> author;
- for (int i = 0; i <len; i++)
- {
- if (card[i]->author == author)
- {
- PrintCard(card[i]);
- }
- }
- }
- //---Вывод-всех-карточек----------------------------------------------------------------------------------------------------------------------------------
- void PrintCards(biblio_card **card) {
- for (int i = 0; i < len; i++) {
- PrintCard(card[i]);
- }
- }
- //--------------------------------------------------------------------------------------------------------------------------------------------------------
- int main()
- {
- setlocale(LC_ALL, "Russian");
- system("chcp 1251");
- biblio_card **card = (biblio_card**)malloc(0);
- int key;
- for (;;) {
- do {
- cout << "-----------------------Меню программы-----------------------\n" << endl;
- cout << "1) Чтение карточек из файла" << endl;
- cout << "2) Добавление карточки" << endl;
- cout << "3) Вывод карточек в файл" << endl;
- cout << "4) Поиск по автору" << endl;
- cout << "5) Поиск по году" << endl;
- cout << "6) Вывод карточек в консоль" << endl;
- cout << "7) Очистить массив" << endl;
- cout << "0) Выход из программы" << endl;
- cout << ">>> ";
- cin >> key;
- if (key == 0) exits();
- if (key != 1 && key != 2 && key != 3 && key != 4 && key != 5 && key != 6 && key != 7)
- cout << "введите правильный номер пункта меню" << endl;
- } while ((key != 1 && key != 2 && key != 3 && key != 4 && key != 5 && key != 6 && key != 7));
- switch (key)
- {
- case 1:
- card = FreadCards(card);
- break;
- case 2:
- card = AddCard(card);
- break;
- case 3:
- FprintfCards(card);
- break;
- case 4:
- Find_author(card);
- break;
- case 5:
- Find_year(card);
- break;
- case 6:
- PrintCards(card);
- break;
- case 7:
- ClearCards(card);
- break;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement