Курсовая работа на тему Обработка динамических структур

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

Московский авиационный институт

филиал Восход

Кафедра МиПОИС

Отчет

по курсовой работе

"Обработка динамических структур"

по дисциплине: Программирование на языках высокого уровня

Студента гр. ДА 2-40 Воронцов О. В.

Байконур 2006г.


Аннотация

В данной курсовой работе представлена реализация программы, для обработки динамической структуры данных, содержащей сведения об авторах книг. Программа, разработанная в среде TurboC++ 3.0, моделирует работу со структурой как с базой данных.


Содержание

Введение

1. Постановка задачи

2. Метод решения

2.1 Общая схема работы программы

2.2 Метод сортировки

3. Разработка алгоритмов решения задачи

3.1 Общая схема алгоритма

3.2 Стандартные процедуры и функции, используемые в программе

3.3 работы пользовательских подпрограмм

3.3.1 работы подпрограммы vvodSp

3.3.2 работы подпрограммы loadIT

3.3.3 работы подпрограммы sort

3.3.4 работы подпрограммы vivodSp

3.3.5 работы подпрограммы dobEl

3.3.6 работы подпрограммы delel

3.3.7 работы подпрограммы vidacha

3.3.8 работы подпрограммы vozvrat

3.3.9 работы подпрограммы saveIT

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

4. Руководство пользователя

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

Заключение

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

Приложения


Введение

В данном отчёте представлено решение задачи с помощью языка программирования С.

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


1. Постановка задачи

Требуется сделать обработку картотеки библиотеки. Для этого следует:

а) Создать список (не менее 10 записей) со следующей структурой:

- фамилия и инициалы автора

- название книги

- год издания

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

Использовать двусвязный список.

б) Реализовать следующие действия:

- Отсортировать список по фамилиям авторов книг методом простого обмена;

- Добавить в картотеку новую книгу, не нарушая алфавитный порядок;

- Удалить из картотеки книги заданного автора;

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

- По фамилии автора и названию книги возвратить книгу в библиотеку, отслеживая количество книг в обоих списках;

- Сохранить полученные списки в файл.

в) Действия со списком оформить в виде отдельных функций.


2. Методы решения задачи

2.1 Общая схема работы программы

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

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

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

В процессе создания списка будут заполняться информационные поля каждого элемента. Информационные поля будут включать данные об авторе книги, её названии, годе издания и количестве экземпляров в библиотеке. Более подробно создание списка описано в пункте 3.3.1.

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

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

Введите номер пункта для выполнения

1. Заполнить список

2. Загрузить списки из файлов

3. Отсортировать текущий список

4. Вывести текущий список

5. Вывести текущий список выданных на руки книг

6. Добавить новый элемент

7. Удалить из списка книги заданного автора

8. Выдать книгу на руки

9. Вернуть книгу в библиотеку

10. Сохранить списки в файл

11. Выход из программы

Ваш выбор:

2.2 Метод сортировки

Сортировка методом простого выбора один из наиболее простых способов сортировки. Алгоритм состоит в повторяющихся проходах по сортируемому списку. За каждый проход элементы последовательно будут сравниваться попарно и, в случае если последующий элемент меньше предыдущего (то есть порядок в паре неверный), будет выполняться обмен элементов. Проходы по списку будут повторяться до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает, что список отсортирован.

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


3. Разработка алгоритмов решения задачи

3.1 Схема работы программы

Считать номер n пункта меню:

1. Если n=1, вызвать функцию vvodSp. Формирование списка.

2. Если n=2, вызвать функцию loadIT. Считывание списков из файлов.

3. Если n=3 , вызвать функцию sort. Сортировка первого списка по фамилиям автора.

4. Если n=4, вызвать функцию vivodSp. Вывод первого (текущего) списка на печать.

5. Если n=5, вызвать функцию vivodSp. Вывод второго списка (выданных на руки книг) на печать.

6. Если n=6, вызвать функцию dobEl. Добавление нового элемента в конец списка и последующая сортировка по имени автора.

7. Если n=7, вызвать функцию delel. Удаление всех записей с введённой фамилией автора.

8. Если n=8, вызвать функцию vidacha. Добавление книги во второй список, удаление из первого.

9. Если n=9, вызвать функцию vozvrat. Удаление книги из второго списка, добавление в первый.

10. Если n=10, вызвать функцию saveIT. Запись данных первого и второго списков в файлы.

11. Если n=11, выполнить выход из программы.

Блок схемы основной программы и функций vvodSp, dobEl, delel представлены в приложениях соответственно А, Б, В, Г.


3.2 Стандартные процедуры и функции, используемые в программе

В процессе разработки программы были использованы стандартные модули языка программирования С: stdio.h, alloc.h, conio.h, string.h,.

Модуль stdio.h позволяет работать с потоками (строки, файлы). Данный модуль включает такие необходимые функции как scanf(), printf(), gets(), puts(), и набор функций для работы с файлами.

Модуль alloc.h предназначен для работы с динамической памятью, в нем содержатся функции calloc(), malloc(), free() и константа NULL.

Модуль string.h предназначен для работы со строками, точнее строковым типом данных. В нем находятся функции для копирования, сравнения, склеивания, и поиска подстроки. В программе используются две стандартные функции этого модуля: strwr и strcmp. Первая преобразует строчные символы строки в прописные. Данная функция необходима для предотвращения ошибок ввода из-за восприимчивости программы к регистру. Функция strcmp(Строка1, Строка2) сравнивает строки Строка1 и Строка2, возвращает 0, если строки равны; число меньше нуля, если первая строка меньше второй; число больше нуля, если первая строка больше второй.Модуль conio.h предназначен для работы с экраном в текстовом режиме. В нем хранятся функции для очистки экрана, изменения цвета текста и фона, атрибутов текста, процедуры для буферизированного и небуферизированного ввода с клавиатуры.

3.3 работы пользовательских подпрограмм

3.3.1 работы подпрограммы vvodSp

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

1. Обнулить указатели на начала и хвосты обоих списков.

2. Пока не будет введено "no" выполнять:

2.1 Динамически выделить память под указатель на текущий элемент.

2.2 Обнулить указатель на следующий за текущим элемент.

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

2.4 Если указатель на начало списка обнулён, то присвоить вершине списка адрес текущего элемента, то есть текущий элемент становится вершиной.

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

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

Аналогичные действия проводятся со вторым списком. Далее:

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

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

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

2.10 Считать значение s.

3. Вернуть указатель на начало первого списка.

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

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

Похожие рефераты:

Учебное пособие: Объектно-ориентированная среда программирования "Object Pascal" в профильном курсе информатики Учебное пособие: Операционные системы "тонких" клиентов Курсовая работа на тему Операційна система Linux Контрольная работа на тему Основные возможности Microsoft Оffice Outlook Курсовая работа на тему Основы криптологии Отчет по практике: Основы программирования в среде Delphi Контрольная работа на тему Отчеты Microsoft Office Access Курсовая работа на тему Оформление служебных документов Реферат на тему Плоттеры нового поколения Курсовая работа на тему Построение компоненты в Builder C++ Курсовая работа на тему Потоковое видео и открытые системы Курсовая работа на тему Предметная область "тестирование" Реферат на тему Применение компьютерных технологий при проектировании нефтеперерабатывающего завода Контрольная работа на тему Проведение АВС анализа в среде MS EXCEL Курсовая работа на тему Проектування каталогу мобільних телефонів у Access Курсовая работа на тему Проектування офісу САПР-одяг Курсовая работа на тему Разработка автоматизированной системы управления "Трехмерная печать" Контрольная работа на тему Разработка информационной системы "Производство продукции/услуг" Курсовая работа на тему Разработка мультимедийного сайта Курсовая работа на тему Разработка приложения средствами VBA Курсовая работа на тему Разработка программного обеспечения виртуальной библиотеки Курсовая работа на тему Разработка программы сжатия и восстановления файлов с помощью фиксированного блочного кода постоянного смещения Курсовая работа на тему Разработка специализированного процессора для исполнения элементарных функций Курсовая работа на тему Разработка устройства "Светодиодный пробник p-n переходов" Курсовая работа на тему Решение проблемы топологии и установки устройств физического уровня Курсовая работа на тему Решение транспортной задачи Лабораторная работа на тему Решение уравнений, неравенств и их систем Курсовая работа на тему Розвиток сучасних структур програмного забезпечення Реферат на тему Середовище навчання Moodle. Його переваги та недоліки Курсовая работа на тему Система баз данных MS SQL Server 2000 Реферат на тему Система непрерывной подачи чернил Курсовая работа на тему Система съема данных с оптопар Доклад: Сканеры и принтеры, сфера их применения Курсовая работа на тему Современные информационные системы управления государством Реферат на тему Современный уровень развития переносной флэш-памяти и USB-брелков Курсовая работа на тему Создание базы данных "Аттестация сотрудников" Контрольная работа на тему Создание презентации Курсовая работа на тему Спортивная программа и организация базы данных Курсовая работа на тему Суперэлементное моделирование пространственной системы "плита грунтовое основание" Курсовая работа на тему Сутність та принципи роботи ЕОМ Курсовая работа на тему Сучасне інтерактивне спілкування Реферат на тему Сучасний стан інформаційної безпеки. Проблеми захисту комп'ютерної інформації Реферат на тему Сучасні антивірусні програми та принцип їх роботи Реферат на тему Сучасні комп'ютерні технології Курсовая работа на тему Сучасні операційні системи, архітектура, відмінні характеристики, функціональність, виробництво і перспективи розвитку Реферат на тему Сучасні програмні продукти для управління маркетинговою діяльністю Контрольная работа на тему Сучасні системи автоматизованого проектування графічних проектів Реферат на тему Сущность алгоритмов Контрольная работа на тему Сущность защиты информации Реферат на тему Сущность искусственного интеллекта Курсовая работа на тему Схема електрична принципова модуля на базі 8-розрядного мікропроцесора Контрольная работа на тему Схема контроллера Реферат на тему Схема радиомодема Реферат на тему Схемы шифрования AES, RC4, RC5, RC6, Twofish, Mars Курсовая работа на тему Счетчик обратного отсчета Курсовая работа на тему Технологии компьютерных игр Реферат на тему Функции и возможности текстового редактора Дипломная работа на тему Функціонування системи інформаційного обслуговування користувачів бібліотек у сучасних умовах Реферат на тему Характеристика качества ПО "практичность" Курсовая работа на тему Цвет и графика на ЭВМ Реферат на тему Что такое компьютерная сеть. Виды сетей Контрольная работа на тему Экономические информационные системы Дипломная работа на тему Электронная почта Курсовая работа на тему Язык программирования высокого уровня С++ Курсовая работа на тему Языки программирования Контрольная работа на тему Установка и настройка программного обеспечения локальной сети Курсовая работа на тему Датчики скорости коррозии как элементы АСУ общей системы мониторинга Курсовая работа на тему Динамическое формирование и преобразование списков и структур Шпаргалка: Дискретная техника Реферат на тему Устройство персонального компьютера Курсовая работа на тему Устройство управления системой измерения веса Контрольная работа на тему Утилиты, буфер обмена, автоформат MS Excel Доклад: Файловая система для операционной системы Windows Лабораторная работа на тему Дослідження файлової структури Курсовая работа на тему Економічні задачі лінійного програмування і методи їх вирішення Курсовая работа на тему Емпіричне дослідження програмного забезпечення Курсовая работа на тему Автоматизация системы управления холодильной установкой Курсовая работа на тему Автоматизированная система управления климатом в тепличных хозяйствах Реферат на тему Автомобильная электроника Курсовая работа на тему Анализ доходов отдела фирмы, занимающейся розничной торговлей офисной мебелью Курсовая работа на тему База данных "Магазин по продаже дисков" Курсовая работа на тему Безпровідна мережа Wi-Fi, її будування Контрольная работа на тему Компьютерная графика Реферат на тему Компьютерная графика Контрольная работа на тему Компьютерная графика Реферат на тему Компьютерная графика и решаемые ею задачи Курсовая работа на тему Компьютерная лингвистика Дипломная работа на тему Компьютерная модель СГ в координатах d, q, 0 в режиме ХХ Курсовая работа на тему Назначение и возможности 3d's МАХ 9.0 Реферат на тему Назначение и основные функции электронных таблиц Лабораторная работа на тему Настройка ОС Windows Контрольная работа на тему Методы информационных технологий в делопроизводстве Учебное пособие: Методы исследования операций Курсовая работа на тему Применение пакетов прикладных программ в экономике Контрольная работа на тему Применение программы Ехсеl для определения заработка водителей такси Курсовая работа на тему Применение симплекс-метода Курсовая работа на тему Проблемы документационного обеспечения управления и использования электронной цифровой подписи Контрольная работа на тему Проблемы защиты информации Курсовая работа на тему Проблемы защиты информации в компьютерных сетях Дипломная работа на тему Проблемы и перспективы развития федеральной целевой программы "Электронная Россия"