49784 (Обработка динамических структур), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Обработка динамических структур", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49784"

Текст 2 страницы из документа "49784"

3.3.5 Описание работы подпрограммы dobEl

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

1. В циклах "пока указатель на последующий элемент первого и второго списков не пустой"

1.2 Выделить динамически память под добавляемые элементы.

1.3 Считать информационные поля добавляемого элемента.

1.4 Приравнять информационные поля элементов первого списка к информационным полям второго.

1.5 Обнулить поле количества книг.

1.6 Для обоих списков обнулить указатель на следующий за добавляемым элемент.

1.7 Приравнять добавленный элемент в первом и втором списках к указателю на последний элемент.

1.8 Присвоить указателю на предыдущий элемент значение последнего элемента.

1.9 Присвоить адрес добавленного элемента последнему.

Таблица 3.3.4-Локальные идентификаторы функции dobEl

Идентификатор

Тип

Назначение

x, x2

el

новый элемент

3.3.6 Описание работы подпрограммы delel

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

1. В цикле "пока не конец файла":

1.1 Если информационное поле автора у элемента совпадает с введённым именем, то рассматриваются три случая.

1.1.1 Если удаляемый элемент стоит в начале списка, то присвоить указателю на начало списка указатель на следующий за ним элемент списка.

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

1.1.3 Проделать аналогичные действия над вторым списком.

1.2.1 Если следующий элемент за текущим равен нулю, то удаляемый элемент находится в конце списка.

1.2.2 Для обоих списков обнулить ссылку предыдущего элемента на следующий.

1.3.1 Если удаляемый элемент находится в середине списка, то присвоить указатель на предыдущий элемент ссылке на предыдущий элемент у следующего элемента.

1.3.2 Приравнять ссылку на следующий элемент к ссылке на следующий элемент у предыдущего элемента.

Таблица 3.3.5-Локальные идентификаторы функции delel

Идентификатор

Тип

Назначение

cur, cur2

el*

указатели на текущий элемент списка

n

int

результат поиска

isk

char

строка с фамилией автора

3.3.7 Описание работы подпрограммы vidacha

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

Входные параметры функции – указатели на текущие элементы первого и второго списков.

1. Считать фамилию автора и название книги.

2. В цикле "пока не конец списка"

2.1 Если фамилия автора и название книги совпадает с введёнными и количество книг больше 0, то:

2.1.1 Уменьшить на единицу значение количества в информационном поле первого списка

2.1.2 Увеличить на единицу значение количества в поле второго списка

3. Перейти к следующему элементу

Таблица 3.3.6-Локальные идентификаторы функции vidacha

Идентификатор

Тип

Назначение

iskA

char

строка с некоторым автором

iskN

char

строка с некоторой книгой

isk

char

записывает результат поиска

n

int

записывает результат поиска

3.3.8 Описание работы подпрограммы vozvrat

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

1. Считать фамилию автора и название книги.

2. В цикле "пока не конец списка"

2.1 Если фамилия автора и название книги совпадает с введёнными и количество книг больше 0, то:

2.1.1 Уменьшить на единицу значение количества в поле второго списка.

2.1.2 Увеличить на единицу значение количества в поле первого списка.

3. Перейти к следующему элементу.

Таблица 3.3.7-Локальные идентификаторы функции vozvrat

Идентификатор

Тип

Назначение

iskA

char

строка с некоторым автором

iskN

char

строка с некоторой книгой

isk

char

записывает результат поиска

n

int

записывает результат поиска

3.3.9 Описание работы подпрограммы saveIT

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

1. Открыть файлы для чтения.

2. В цикле "пока не конец списка" произвести запись данных текущего элемента в файл для обоих списков.

3. Перейти к следующему элементу списка.

Таблица 3.3.8-Локальные идентификаторы функции saveIT

Идентификатор

Тип

Назначение

zap, zap2

book

вспомогательная переменная

f1, f2

FILE

переменная связанная с файлами

3.3.10 Описание работы основной программы

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

4. Инструкция по пользованию программой

При запуске программы на экране появляется графический интерфейс (главное меню программы). У пользователя появляется выбор в формировании списка: либо загрузить список авторов книг из файла (для чего выбирается пункт меню "2" – "Загрузить списки из файлов"), либо самостоятельно ввести его с клавиатуры (для чего выбирается пункт "1" главного меню). В первом случае должен иметься предварительный надел (заранее составленная база данных, записанная в файл). Во втором случае пользователю будет предложено ввести фамилию и инициалы автора книги, её название, год издания и количество в прокате. При завершении составления одной записи появляется строка, в которой пользователю предлагается заполнить ещё один элемент списка или выйти в главное меню. Для этого пользователь должен ввести соответственно слова "yes" или "no".

После выполнения операций создания списка пользователь может приступить к действиям над составленным списком.

Если пользователь выберет пункт "3" главного меню, то произойдёт сортировка базы данных по именам авторов в алфавитном порядке. В этом можно убедиться при выборе пункта "4", после чего на экран выводится содержимое всей базы данных.

Также пользователь может выдать книгу определённого автора на руки, вследствие чего количество книг в общей базе данных уменьшается на единицу. Это происходит при выборе пункта "8" главного меню. При выборе данной опции пользователю предлагается ввести фамилию и инициалы автора, а также название его книги. Если данная книга по картотеке не числится, то соответствующая строка упоминает об этом. При выборе пункта "5" на печать выводится список книг, которые были выписаны из картотеки. Книгу можно возвратить в библиотеку посредством пункта "9" главного меню. При выполнении данной операции пользователю предлагается ввести фамилию и инициалы автора, а также название книги. В случае неверного ввода программа извещает пользователя об этом.

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

Помимо этого, пользователь может удалить все книги автора. Достигается это путём выбора пункта "7" главного меню. Предлагается ввести фамилию автора, а после ввода сообщается об удалении всех книг данного автора и приводится число таковых.

В заключение стоит отметить, что если ввести новые данные, а затем вызвать пункт 2 главного меню, то последние введённые данные будут безвозмездно потеряны.

При выборе пункта "11" графический интерфейс исчезает, процесс компиляции завершается.

5. Анализ результатов

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

Были добавлены новые элементы в основной список, при этом не был нарушен алфавитный порядок. Помимо основного списка был сформирован список с книгами, выданными на руки. При выдаче книги на руки количество книг в библиотеки сокращалось на 1. Оба эти списка были занесены в файлы. Кроме того, было реализовано решение задачи по возвращению взятой на руки книги.

Также была реализована возможность удаления всех книг автора из картотеки по его фамилии.

Блок-схемы алгоритмов программы и основных подпрограмм представлены в приложениях А, Б, В, Г. Листинг программы представлен в приложении Д, а результаты работы программы в приложении Е.

Заключение

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

Анализируя полученное задание, я выбрал метод решения поставленной задачи, на основе которого получил алгоритмы в виде блок-схем (приложения А, Б, В, Г, Д). Преимущество блок-схем состоит в их наглядности. Кодирование алгоритмов осуществлено на языке программирования С. Листинг программы представлен в приложении Д.

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

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

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

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

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

1. Н. Б. Культин, С/С++ в задачах и примерах, СПб: БХВ-Петербург, 2001.

2. А. Б. Крупник, Изучаем С++, Спб: Питер, 2003.

3. С. Р. Дэвис, С++ для "чайников", М.: "Вильямс", 2004.

4. Т.А. Павловская, С/С++. Программирование на языке высокого уровня, Спб: Питер, 2005.

Приложение А

Листинг программы

#include

#include

#include

#include

typedef struct AsFalonour //создание нового типа запись для хранения информационных полей элемента списка

{

int kol; //количество книг в картотеке

char nazv[20]; //название книги

int god; //год издания

char avt[20]; //фамилия автора книги

} book; //имя созданного типа

typedef struct spisok //создание нового типа запись для хранения информации элемента списка

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Нет! Мы не выполняем работы на заказ, однако Вы можете попросить что-то выложить в наших социальных сетях.
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
4100
Авторов
на СтудИзбе
670
Средний доход
с одного платного файла
Обучение Подробнее