Фрагмент для ознакомления
getline(str, 100); cin.getline(str, 100);book = db.getBook(str);if (book == -1) { cout << "Книга " << str << "ненайдена" << endl; break; }cout << book << " " << (string)book << endl;for (size_t j = 0; j < book.getCount(); j++)cout << db.getAuthor(book[j]) << ((j != book.getCount() - 1) ? ", " : "");cout << endl;break;case 8:// Добавлениечитателяcout << "Введитефамилию: "; cin.getline(str, 100); cin.getline(str, 100); st[0] = ltrim(str);cout << "Введитеимя: "; cin.getline(str, 100); st[1] = ltrim(str);cout << "Введитеотчество: "; cin.getline(str, 100); st[2] = ltrim(str);cout << "Телефон: "; cin.getline(str, 100); st[3] = ltrim(str);cout<< "Номер билета: "; cin >> nbil;db.addReader(eReader(nbil, st[0], st[1], st[2], st[3]));break;case 9:// ДобавлениекнигиaddBook();break;}}}intmain(){SetConsoleCP(811);// для Русского текста или 1251SetConsoleOutputCP(811);setlocale(LC_ALL, "rus");//system("chcp 1251");db.Load();showMenu();db.Save();}ИнтерфейсклассакнигeBook:Books.h#ifndefBooksH#define BooksH#include #include using namespace std;class eBook {private:__int64 nbook;// Инвентарныйномерstringcapt;// Наименованиеvector <__int64> authors;// Авторыpublic:// КонструкторыeBook() { nbook = -1; capt = ""; authors.clear(); }// ПустойконструкторeBook(__int64 _nbook, string _capt);eBook(__int64 _nbook, string _capt, int _author);eBook(__int64 _nbook, string _capt, vector<__int64> _authors);// ДобавитьавтораvoidaddAuthor(__int64 _author) { authors.push_back(_author); }operator __int64() { return nbook; }// Перегрузкапреобразованиятипаoperator string() { return capt; }__int64 operator[](size_t n) { return getAuthor(n); }// Операториндексирования__int64 getN() { return nbook; }// ГеттерыstringgetCapt() { return capt; }__int64 getAuthor(size_t n) { return (n _authors) {nbook = _nbook; capt = _capt; authors.clear(); authors.assign(_authors.begin(), _authors.end());}Интерфейс класса читателей eReader :Readers.h#ifndefReadersH#define ReadersH#include using namespace std;classeReader {// Читателиprivate:__int64 nbil;// НомербилетаstringrName;// ИмяstringrSurn;// ФамилияstringrMidl;// Отчествоstring phone; // Телефонpublic:eReader() { nbil = -1; rSurn = ""; rName = ""; rMidl = ""; phone = ""; }// ПустойконструкторeReader(__int64 _nbil, string _rSurn, string _rName, string _rMidl, string _phone);operator __int64() { return nbil; }// Перегрузкапреобразованиятипаoperator string() { return rSurn+" "+rName; }// Перегрузкапреобразованиятипа__int64 getBil() { return nbil; }// ГеттерыstringgetName() { return rName; }stringgetSurn() { return rSurn; }stringgetMidl() { return rMidl; }stringgetPhone() { return phone; }};#endifРеализацияклассачитателейeReader: Readers.cpp#include "pch.h"// Для visual studio 2017#include #include "Readers.h"using namespace std;// КонструкторeReader::eReader(__int64 _nbil, string _rSurn, string _rName, string _rMidl, string _phone) {nbil = _nbil;rName = _rName; rSurn = _rSurn; rMidl = _rMidl; ; phone = _phone;}Интерфейс класса выдачи книг eRental: Rental.h#ifndefrentalH#define rentalH#include #include using namespace std;classeRental {// Выдачакнигиprivate:__int64 rId;// Читатель__int64 bId;// Книгаtime_tissue;// Датавыдачиintdays;// Количество днейpublic:eRental() { rId = -1; bId = -1; days = 0; }eRental(__int64 _rd, __int64 _bk, time_t _issue, int _days);operator string();__int64 getReader() { return rId; }__int64 getBook() { return bId; }time_tgetIssue() { return issue; }intgetDays() { return days; }stringgetReturn();voidextendTo(int _days) { days += _days; }// Продлениевыдачи};#endifРеализация класса выдачи книг eRental: Rental.cpp#include "pch.h"// Для visual studio 2017#define _CRT_SECURE_NO_WARNINGS// Дляработысдатойв VS 2017#include #include #include "rental.h"using namespace std;eRental::eRental(__int64 _rd, __int64 _bk, time_t _issue, int _days){rId = _rd; bId = _bk; issue = _issue; days = _days;}eRental::operator string() {char s[40];tm *now = localtime(&issue);strftime(s, 40, "%d.%m.%Y (%a)", now);return s; }stringeRental::getReturn() {char s[40];time_t ret = issue;ret += days * 24 * 60 * 60;tm *now = localtime(&ret);strftime(s, 40, "%d.%m.%Y (%a)", now);return s;}Интерфейсклассабазыданныхmdb: mdb.h#ifndefmdbH#define mdbH#include
МБУ «Городская библиотека». URL: https://library-snz.chel.muzkult.ru/
ООП. URL: https://blog.skillfactory.ru/glossary/oop-obektno-orientirovannoe-programmirovanie/
Как ООП помогает разработчикам писать код быстрее и проще. URL: https://practicum.yandex.ru/blog/obektno-orientirovannoe-programmirovanie/
Коротко об истории объектно-ориентированного программирования. URL: https://habr.com/ru/post/107940/
Раздел 10. «Эпизодическое» объектно-ориентированное программирование. URL: http://ermak.cs.nstu.ru/cprog/html/101.htm
Что такое объекты и классы: 1‑я часть гайда по ООП. URL: https://skillbox.ru/media/code/oop_chast_1_chto_takoe_klassy_i_obekty/?ysclid=lfvf0552x4622996203
Особенности моделирования предметной области с помощью ООП. URL: https://habr.com/ru/post/249165/
Объектно-ориентированное программирование. URL: https://prog-cpp.ru/oop/
Полиморфизм. URL: https://learn.microsoft.com/ru-ru/dotnet/csharp/fundamentals/object-oriented/polymorphism
Проектирование классов и наследование. URL: http://www.programmer-lib.ru/cstandart_page.php?id=15
Построение иерархии классов и проектирование приложения. URL: https://foxford.ru/wiki/informatika/postroenie-ierarhii-klassov-i-proektirovanie-prilozheniya
Стандартная библиотека шаблонов STL. URL: http://techn.sstu.ru/kafedri/%D0%BF%D0%BE%D0%B4%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F/1/MetMat/murashev/oop/lec/lec11.htm
Класс vector. URL: https://learn.microsoft.com/ru-ru/cpp/standard-library/vector-class?view=msvc-170
Класс map. URL: https://learn.microsoft.com/ru-ru/cpp/standard-library/map-class?view=msvc-170