Динамические структуры данных

Автор: Пользователь скрыл имя, 10 Марта 2013 в 15:34, курсовая работа

Краткое описание

Составить программу, которая содержит текущую информацию о книгах в библиотеке. Сведения о книгах содержат: • номер УДК; •фамилию и инициалы автора; •название; •год издания; •количество экземпляров данной книги в библиотеке. Программа должна обеспечивать: •начальное формирование данных обо всех книгах в библиотеке в виде списка; •при взятии каждой книги вводится номер УДК, и программа уменьшает значение количества книг на единицу или выдает сообщение о том, что требуемой книги в библиотеке нет, или требуемая книга находится на руках; •при возвращении каждой книги вводится номер УДК, и программа увеличивает значение количества книг на единицу; по запросу выдаются сведения о наличии книг в библиотеке.

Оглавление

1. Формулировка задания. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2. Анализ задания. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3. Блок-схема решения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4. Код программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …
5. Пример выполнения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..
6. Выводы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7. Список использованной литературы. . . . . . . . . . . . . . . . . . . . . . . . . . .

Файлы: 1 файл

Пояснительная записка Жукова.doc

— 434.00 Кб (Скачать)

Министерство образования  и науки РФ

Федеральное государственное  бюджетное образовательное учреждение

высшего профессионального  образования

"Нижегородский коммерческий  институт"

 

 

Кафедра информационных технологий

 

 

КУРСОВАЯ РАБОТА

 

 

По дисциплине

 «Информационные технологии»

 

на тему «Динамические структуры данных» 

 

 

 

 

 

Выполнила: Жукова И. В.

группа: 2-ИЭ

 

проверил: Штанюк А.А.

работа защищена _____

с оценкой ____________

подпись _____________

 

 

 

 

 

 

 

Н. Новгород

2012

Содержание:

1. Формулировка задания. . . . . . . . . . . . . . . . . . . .  . . . . . . . . . . . . . . . . . . .

3

2. Анализ задания. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

3. Блок-схема решения  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

4. Код программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …

10

5. Пример выполнения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..

13

6. Выводы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

7. Список использованной литературы. . . . . . . . . . . . . . . . . . . . . . . . . . .

17

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Формулировка задания

Составить программу, которая  содержит текущую информацию о книгах в библиотеке.

Сведения о книгах содержат:

  • номер УДК;
  • фамилию и инициалы автора;
  • название;
  • год издания;
  • количество экземпляров данной книги в библиотеке.

Программа должна обеспечивать:

  • начальное формирование данных обо всех книгах в библиотеке в виде списка;
  • при взятии каждой книги вводится номер УДК, и программа уменьшает значение количества книг на единицу или выдает сообщение о том, что требуемой книги в библиотеке нет, или требуемая книга находится на руках;
  • при возвращении каждой книги вводится номер УДК, и программа увеличивает значение количества книг на единицу;
  • по запросу выдаются сведения о наличии книг в библиотеке.

 

 

 

 

 

 

  1. Анализ задания

Разработка алгоритма  решения задачи , или алгоритмизация задачи представляет собой первый этап программирования. В процессе его выполнения устанавливается необходимая последовательность арифметических и логических действий, с помощью которых данная задача может быть реализована.

В данной работе используется графическая запись алгоритма, представленная в виде блок-схемы.

Поэтому в качестве первоочередной задачи ставится разработка алгоритма решения в виде блок-схем.

Алгоритм, предназначенный  для исполнения на ЭВМ, должен быть записан на языке программирования. Язык программирования представляет собой совокупность символов и правил их использования для описания процессов решения задач на ЭВМ. Если разработка алгоритма выполнена хорошо, то программирование принципиальных трудностей не вызывает.

В качестве среды разработки данной программы используется Microsoft Visual C++ 9.0.

Значит второй задачей является запись алгоритма на языке программирования С++, то есть разработка программы.

Данная программа должна формировать, добавлять, выводить текущую информацию о книгах в библиотеке. Для этого мы используем технологию связанных списков. То есть структуру данных, хранящую указатель на заявку (структуру) и указатель на следующий элемент того же типа, как и она сама, а так же функций, для осуществления операций.

Однако в процессе разработки программы могли быть допущены ошибки, которые сохранились  и в результирующей программе.

Отладка программы необходима для выявления и устранения ошибок в программе. Часть ошибок формального  характера, допущенных при написании программы, обнаруживает транслятор, производя синтаксический анализ.

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

Программа, прошедшая  отладку, готова для практического  использования, то есть для решения задачи на ЭВМ. Решение задачи является итогом выполнения всех предыдущих этапов и служит подтверждением (или опровержением) их правомерности.

Поэтому последней задачей работы является проверка выполнения программы как подтверждения правомерности предыдущих этапов разработки.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Блок-схема решения

Блок-схема главной  функции int main ()

 

 

 

 

 

 

Блок схема функции  добавления addbook (BOOK)

 

 

 

Блок-схема функции  показа элементов Showall ()

 

Блок-схема функции trytotake (int) для поиска сведений о данных книгах и учета выданных книг.

 

 

 

Блок-схема функции returnbook (int) для учета книг, которые вернули в библиотеку.

 

 

Блок-схема решения представляет собой организованную основную функцию  main, которая отвечает за работу данной программы.  Так, например, при выборе 1 программа обращается к функции addbook, которая добавляет данные о новых книгах. При выборе 2 программа обращается к функции showal, выводящяя данные о всех книгах. При выборе 3 задействуется функция trytotake, которая ищет книгу по номеру УДК, проверяет наличие данной книги в библиотеке, и учитывает количество книг, если книга выдана на руки. При выборе 4 задействуется функция returnbook, которая при возврате книги, также учитывает их количество,и выводит сообщение об ошибке, если книги с введенным УДК не существует. Main будет работать циклично до тех пор, пока пользователь не выберет 5. Тогда программа завершится. 

 

 

 

  1. Код программы

#include <iostream>

 

using namespace std;

 

struct BOOK //Структура, содержащая элементы

{

int number;

char author[20];

char name[20];

int year;

int count;

BOOK *next;//указатель на последний элемент списка

}buf;//Буффер для "прецепления" элементов

 

BOOK *head;//Указатель на первый элемент

 

// Прототипы  функций

void addbook(BOOK);//Функция добавления элемента в список

void showall(); // Функция, показывающая все элементы

void trytotake(int); //Функция, для поиска сведений о данных книгах и учета выданных книг

void returnbook(int); // Функция, для учета книг, которые вернули в библиотеку

 

void main()//Главная функция

{

int UserCommand,udc;//Команда от пользователя

head=new BOOK;//выделяем память под первый элемент списка

head->next = NULL;// следующий элемент зануляем

while(1) 

{

cout<<"1: Add book; 2: Show all books; 3: Try to take book; 4: Return book;\n";

cin>>UserCommand;// Спрашиваем, что хочет пользователь

switch(UserCommand)// Проверяем, что он ввел

{

case 1://Добавляем элемент

cout<<"Book name?\n";//Спрашиваем

cin.ignore();//Разделяем getline-ы

cin.getline(buf.name,20);

cout<<"Author?\n";

cin.getline(buf.author,20);

cout<<"Year?\n";

cin>>buf.year;

cout<<"UDC number?\n";

cin>>buf.number;

cout<<"Count?\n";

cin>>buf.count;

addbook(buf);//вызываем функцию добавления элемента

break;

case 2://показываем все

showall();

break;

case 3:

cout<<"UDC:\n";//ищем книгу по введенному УДК

cin>>udc;

trytotake(udc);//вызываем функцию, для поиска сведений о данных книгах и учета выданных книг

break;

case 4:

cout<<"UDC:\n";//ищем книгу по введенному УДК

cin>>udc;

returnbook(udc); // вызываем функцию, для учета книг, которые вернули в библиотеку

break;

default://в противном случае выводим сообщение о неправильной команде

cout<<"Check the command list attentively, there's no such command\n";

break;

}

}

}

 

//Добавление  элемента в список

void addbook(BOOK ToAdd)

{

BOOK *pointer = head;//начиная с первого элемента

//Движемся вперед, пока  следующий элемент не будет  нулевым

while(pointer->next)

pointer=pointer->next;

pointer->next = new BOOK;//Выделяем память для нового элемента

pointer->next->count=ToAdd.count;

strcpy(pointer->next->author,ToAdd.author);

strcpy(pointer->next->name,ToAdd.name);

pointer->next->number=ToAdd.number;

pointer->next->year=ToAdd.year;

//Делаем следующий после  добавленного элемент нулевым

pointer->next->next = NULL;

}

 

//Вывод всех элементов на экран

void showall()

{

BOOK *pointer = head->next;//Объявляем указатель на первый элемент списка

while(pointer)

{

cout<<pointer->name<<", "<<pointer->author<<", "<<pointer->year<<endl<<"UDC: "<<pointer->number<<", "<<pointer->count<<" ex's\n\n";

pointer=pointer->next;//после вывода переходим к следующему

}

}

 

void trytotake(int udc)

{

   BOOK *pointer = head;

   bool fg=false;

   while(pointer)

   {

      if (pointer->number==udc)

     {

           fg=true;

           if (pointer->count>0)

           {

                  cout<<"Book is taken.\n";

                  pointer->count--;

   }

      else

      cout<<"This book is already taken.\n";

      break;

      }

      pointer=pointer->next;

    }

      if(fg==false)

      cout<<"Sorry, there's no record for this book\n";

}

 

void returnbook(int udc)

{

bool fg=false;

BOOK *pointer = head;//Указатель на  первый элемент

while(pointer)

{

if (pointer->number==udc)//если введенный номер равен номеру УДК

{

cout<<"Book returned.\n";

pointer->count++;//книга возвращена, прибывляем количество книг на 1

fg=true;

break;

}

pointer=pointer->next;

}

if(fg==false)

cout<<"Sorry, there's no record for this book\n";


5. Пример выполнения

При запуске программы  на экране появляется меню и строка приглашения, предлагающая ввести выбранный пользователем пункт меню:

 

 

При выборе пункта 1 программа предлагает ввести название книги, автора, номер УДК, год издания, количество экземпляров данной книги в библиотеке.

При выборе пункта 2 программа выводит данные обо всех книгах:

 

 

При выборе пункта 3 программа  просит ввести УДК книги и, если такая книга есть, книга выдается на руки и программа уменьшает значение количества книг на единицу или выдает сообщение о том, что требуемой книги в библиотеке нет, или требуемая книга находится на руках.

 

При возвращении каждой книги пользователь выбирает пункт 4, программа просит ввести УДК книги и программа увеличивает значение количества книг на единицу, и выводим сообщение о том, что книга возвращена, в случае если УДК введен не правильно, программа выводит сообщение о том, что книга с таким УДК в библиотеке нет.

 

 

 

 

 

 

 

 

 

 

 

 

6. Выводы

В данной работе я подробно описала решение задачи по разработке небольшой информационной системы, осуществляющей начальное формирование данных  о книгах в библиотеке в виде списка, добавление данных о книгах, выдача и возврат книг по номеру УДК.

Поставленные мною задачи реализованы.

Достоинства программы:

    • рациональное использование памяти;
    • программа доступна пользователям в понимании;
    • количество записей ограниченно только количеством оперативной памяти.

Недостатки программы:

    • низкая скорость доступа к элементам списка.

Не исключена выработка  дальнейших рекомендаций по усовершенствованию данной информационной системы.

Эволюция информационных технологий настолько тесно связана  с развитием новых моделей  корпоративного бизнеса, что эти  процессы нередко воспринимаются как единое целое.

 Стремление компаний  повысить эффективность ИС стимулирует  появление более совершенных аппаратных и программных средств, которые, в свою очередь, подталкивают пользователей к дальнейшей модернизации ИС.

 

 

 

 

 

 

7. Список использованной литературы

 

  1. Павловская Т.А., Щупак Ю.А. «С/С++. Структурное и объектно-ориентированное программирование: практикум», издательство Питер, 2010 год
  2. http://ru.wikipedia.org/wiki/Связный_список
  3. УМК «Основы алгоритмизации».
  4. Интернет-ресурсы.

 

 

 


Информация о работе Динамические структуры данных