Файл: Курсовая ООП Выдача книг в библиотеке.docx

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Программирование

Добавлен: 28.11.2018

Просмотров: 1246

Скачиваний: 17

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Словарь действий, которыми пользуется библиотекарь можно увидеть на табл.2.1

Табл. 2.1. Таблица действий.

Действие

Описание действия

Вносит

Действие, направленное на занесение новых данных систему

Удаляет

Действие удаления найденной записи

Выбирает

Действие на выбор данных из представленного списка

Ищет

Действие, направленное на поиск в системе

Указывает

Действие для выбора каких-то конкретных параметров





3. Описание кода



#include <clocale>

#include <stdlib.h>

#include <iostream>

#include <string>

#include <clocale>

Включение этого заголовка гарантирует, что имена, объявленные с помощью внешней компоновки в заголовке стандартной библиотеки C, объявляются в пространстве имен std.

#include <stdlib.h>

  Заголовочный файл стандартной библиотеки языка Си, который содержит в себе функции, занимающиеся выделением памяти, контролем процесса выполнения программы, преобразованием типов и другие. Заголовок вполне совместим с C++ и известен в нём как cstdlib Название «stdlib» расшифровывается как «standard library» (стандартная библиотека).

#include <iostream>

Объявляет объекты, управляющие чтением из стандартных потоков и записью в них. Зачастую для ввода и вывода из программы на языке С++ нужно включить только заголовок.


#include <string>


Класс с методами и переменными для организации работы со строками в языке программирования C++. Он включён в стандартную библиотеку C++.



#define SIZE 1000


Директива #define создает макрос, представляющий собой ассоциацию обычного или параметризованного идентификатора со строкой токена.

Мáкрос - программный объект, который во время вычисления заменяется на новый объект, создаваемый определением макроса на основе его аргументов, затем выражается обычным образом.


Класс lib, выполняет операции с книгами в библиотеке


class lib

{

int num = 0, id[SIZE], hand[SIZE]; //количество книг, массив id книг, массив книг на руках

string author[SIZE], title[SIZE]; //авторы, названия


bool libis(); //отображает сообщение если книг в библиотеке нет


public:

bool is(int n); //поиск книги по id

int qnty();

void show(int n); //отображение книги

void showall(); //отображение все книги

int store(string auth, string tit, int hd); //добавление книги

void del(int n); //удаление книги

void give(int n); //книга выдали на руки

void bring(int n); //книга вернули в библиотеку

};

int - значит "целое число"

bool имеет значения true и false (см. листинг 3.1).



Проверка на наличие книг. Листинг 3.1



Исходный код меню программы показан на рис. 3.2, Вы можете увидеть, как код выглядит в консоли:


void mainscreen()

{

setlocale(LC_ALL, "Russian");

cls();

cout << "Программа библиотека\n";

cout << "1 - Общее количество книг\n";

cout << "2 - Показать все книги\n";

cout << "3 - Добавить книгу\n";

cout << "4 - Удалить книгу\n";

cout << "5 - Выдать книгу\n";

cout << "6 - Принять книгу\n";

cout << "9 - Выход\n";


}




Рис 3.2. Меню программы в консоли.



Исходный код списка книг, которые находятся в программе «библиотека»

На Рис 3.3 показан список авторов книг в консоли

int main()

{


int i, j, k, hand, command;

string author;

string title;

lib mylib;

setlocale(LC_ALL, "Russian");

mylib.store("Толстой", "Казаки", 1);

mylib.store("Некрасов", "Сборник стихов", 0);

mylib.store("Маяковский", "Стихи", 0);

mylib.store("Карамзин", "История государства Российского", 0);

mylib.store("А.С.Пушкин", "Стихи", 0);

mylib.store("Сильвия Лайм", "Фентези", 0);

mylib.store("Николай Гоголь", "Мертвые души", 0);

mylib.store("Антон Чехов", "Палата №6", 0);

mylib.store("Михаил Булгаков", "Мастер и Маргарита", 0);

mylib.store("Иван Тургенев", "Отци и дети", 0);

mylib.store("Александр Дюма", "Три мушкерера", 0);

mylib.store("Эрнест Хемингуэй", "Старик и море", 0);

mylib.store("Виктор Гюго", "Отверженные", 0);

mylib.store("Михаил Шолохов", "Тихий дон", 0);

mylib.store("Джек Лондон", "Белий клык", 0);

mylib.store("Артур Конан Дойль", "Приключение Шерлока Холмса", 0);

mylib.store("Михаил Лермонтов", "Маскарад", 0);

mylib.store("Уильям Шекспир", "Гамлет", 0);

mylib.store("Марк Твен", "Приключение Тома Соера", 0);

mylib.store("Жюль Верн", "Дети капиана Гранта", 0);


Рис 3.3. Список литературы в консоли.



Заключение

В данном курсовом проекте была разработана программа «Библиотека» обеспечивающая выдача книг. Программа полностью автоматизирует труд библиотекаря и организует надежное хранение и обработку данных. Плюсы и минусы программы.

Плюсами является:

  • Быстрый поиск книг библиотекарем

  • Удаление и добавление литературы

  • Выдача книг пользователям

Минусами является:

  • Отсутствует информация о читателях




Список литературы:



  • Гради Буч Объектно-ориентированный анализ и проектирование с примерами приложений на C++, 2-e издание

  • http://cppstudio.com/post/439/

  • http://cppstudio.com/cat/274/281/




Приложение A.



#include <clocale>

#include <stdlib.h>

#include <iostream>

#include <string>


using namespace std;


#define SIZE 1000 //Максимальное количество книг


void cls()

{

if (system("clear")) system("cls"); //обновление экрана

}


class lib

{

int num = 0, id[SIZE], hand[SIZE]; //количество книг, массив id книг, массив книг на руках

string author[SIZE], title[SIZE]; //авторы, названия


bool libis(); //отображает сообщение если книг в библиотеке нет


public:

bool is(int n); //поиск книги по id

int qnty();

void show(int n); //отображение книги

void showall(); //отображение все книги

int store(string auth, string tit, int hd); //добавление книги

void del(int n); //удаление книги

void give(int n); //книга выдали на руки

void bring(int n); //книга вернули в библиотеку

};


bool lib::libis()

{

if (num == 0) {

cout << "Книг нет!\n";

return false;

}

return true;

}


bool lib::is(int n)

{

int i;

for (i = 0;i<num;i++) {

if (i == n) return true;

}

return false;

}


int lib::qnty()

{

if ((num - 1) >= 0) return num - 1;

else return 0;

}


void lib::show(int n)

{

if ((n >= 0) && (n<num)) {

cout << "id: " << id[n] << " Автор: " << author[n] << endl;

cout << "Название: " << title[n] << endl;

cout << "Выдано: " << hand[n] << endl;

return;


}

else cout << "Книги с таким id не найдено. id: " << n << endl;

}


void lib::showall()

{

int i;

libis();

for (i = 0;i<num;i++) {

cout << "id: " << id[i] << " Автор: " << author[i] << endl;

cout << "Название: " << title[i] << endl;

}

}


int lib::store(string auth, string tit, int hd)

{

if (num == SIZE) {

cout << "В библиотеке нет места!" << num << "книг:"<< endl;

cout << "Нельзя добавить больше книг\n";

return -1;

}

id[num] = num;

cout << "id: " << id[num] << endl;

author[num] = auth;

title[num] = tit;

hand[num] = hd;

num = num + 1;

return id[num];

}


void lib::del(int n)

{

int i, j = 0;

libis();

if (!is(n)) {

cout << "Книги с таким id не найдено. id: " << n << endl;

return;

}

for (i = 0;i<num;i++) {

if (i == n) {

continue;

}

else {

id[j] = j;

author[j] = author[i];

title[j] = title[i];

hand[j] = hand[i];

j++;

}

}

num--;

}


void lib::give(int n)

{

libis();

is(n);

hand[n]++;

}


void lib::bring(int n)

{

libis();

is(n);

if (hand[n] == 0) {

cout << "Не было информации о том, что книга была выдана";

}

else hand[n]--;

}


void mainscreen()

{

setlocale(LC_ALL, "Russian");

cls();

cout << "Программа библиотека\n";

cout << "1 - Общее количество книг\n";

cout << "2 - Показать все книги\n";

cout << "3 - Добавить книгу\n";

cout << "4 - Удалить книгу\n";

cout << "5 - Выдать книгу\n";

cout << "6 - Принять книгу\n";

cout << "9 - Выход\n";


}


int main()

{


int i, j, k, hand, command;

string author;

string title;

lib mylib;

setlocale(LC_ALL, "Russian");

mylib.store("Толстой", "Казаки", 1);

mylib.store("Некрасов", "Сборник стихов", 0);

mylib.store("Маяковский", "Стихи", 0);

mylib.store("Карамзин", "История государства Российского", 0);

mylib.store("А.С.Пушкин", "Стихи", 0);

mylib.store("Сильвия Лайм", "Фентези", 0);

mylib.store("Николай Гоголь", "Мертвые души", 0);

mylib.store("Антон Чехов", "Палата №6", 0);

mylib.store("Михаил Булгаков", "Мастер и Маргарита", 0);

mylib.store("Иван Тургенев", "Отци и дети", 0);

mylib.store("Александр Дюма", "Три мушкерера", 0);

mylib.store("Эрнест Хемингуэй", "Старик и море", 0);

mylib.store("Виктор Гюго", "Отверженные", 0);

mylib.store("Михаил Шолохов", "Тихий дон", 0);

mylib.store("Джек Лондон", "Белий клык", 0);

mylib.store("Артур Конан Дойль", "Приключение Шерлока Холмса", 0);

mylib.store("Михаил Лермонтов", "Маскарад", 0);

mylib.store("Уильям Шекспир", "Гамлет", 0);

mylib.store("Марк Твен", "Приключение Тома Соера", 0);

mylib.store("Жюль Верн", "Дети капиана Гранта", 0);



while (1) {

mainscreen();

cout << "Номер меню: ";

cin >> command;

switch (command) {


case 1:

cout << "Книг в библиотеке: " << mylib.qnty()+1 << endl;;

break;


case 2:

if (mylib.qnty() <= 0) {

cout << "В библиотеке нет книг.\n";

break;

}

cls();

cout << "Книги библиотеки\n";

cout << "Сколько Вы хотите увидеть книг на экране? Введите 0,1,2,...\n";