Описание процедур, функций и модулей. Системное программное обеспечение пк Структурная схема приложения

КУРСОВОЙ ПРОЕКТ

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

Разработка программного средства для долговременного хранения и обработки информации на примере игры «Скачки»

Пояснительная записка

ОГУ 27.03.03.0316.000ПЗ

Руководитель

преподаватель

В. В. Чекрыгина «___»_____________ 2016 г.

Студент группы 14САУ(ба)САУИТ _______ _________И.О. Фамилия

«___»_____________ 2016 г.

Оренбург 2016


Аннотация

Курсовая работа содержит 18 страницы, в том числе 4 рисунка, 5 источников и листинг программы.

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


Введение. 5

1 Техническое задание. 6

2 Описание программы.. 7

3 Руководство пользователю.. 9

4 Тестирование программы.. 10

Заключение. 11

Список использованных источников. 12

Приложение А.. 13


Введение

В настоящее время среди широкого круга пользователей популярна система объектно-ориентированного программирования Delphi, основу которой составляет язык Оbject Pascal, который изначально был разработан Н. Виртом в начале 60–х годов прошлого века специально как язык обучения программированию. Delphi позволяет быстро создавать приложения различной степени сложности на основе технологии визуального программирования.



Система Delphi воплощает в себе лучшие достижения современной теории программирования. Эта интегрированная среда объединяет в себе множество полезных инструментов и готовых компонентов, из которых собираются пользовательские программы – проекты. Delphi – это визуальная среда разработки программ. Это означает, что внешний вид каждой программы (интерфейс) создаётся простым перемещением компонентов.

Базовым языком программирования служит язык Object Pascal – объектно-ориентированный Паскаль. Принципиальное различие систем программирования Delphi и Turbo Pascal (Turbo – торговая марка разработчика системы фирмы Borland International, Inc.(США)) состоит в использовании экранного режима монитора: Turbo Pascal – ориентирован на текстовый режим системы DOS, а Delphi, как и Windows – на графический. Поэтому одна из последних версий Delphi 7 уже может создавать приложения для новейшей среды.NET. Причём последние версии позволяет программировать и для операционной системы Linux.

Система Delphi реализует технологию объектно-ориентированного виртуального программирования (ООП). От всех других языков программирования его отличают строгость в определении всех переменных и констант, модульность программирования, широкие возможности в создании собственных структур данных, использование объектно-ориентированного программирования, отсутствие машинно-ориентированных конструкций. Корпорация Borland, которая является родоначальником Delphi, с самого начала сделала ставку на визуальное объектно–ориентированное программирование с предоставлением возможности работы с любыми базами данных. В настоящее время система программирования Delphi ни в чем не уступает по своим возможностям таким языкам программирования, как C++, С#, Visual C++, C–Builder, Visual Basic и др.


1 Техническое задание

Была поставлена задача: разработать игру на тему скачек на ипподроме в среде Delphi с организованным тотализатором.

В процессе решения данной задачи получили следующее приложение:

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

Задача играющего: выиграть как можно больше «денег» на тотализаторе.

Минимальные требования для работы с программой: IBM-совместимый 486dx или выше, 5 мб. свободного пространства на жестком диске, ОС Win9x/Me, Win2000/XP/Vista/Seven.

В программе предусмотрено:

Возможность при нулевом балансе можно взять долг;

Лошади движутся с разными скоростями и узнать победителя заранее невозможно.


2 Описание программы

Структурная схема программы

На рисунке 1 показано, расположение основных элементов программы, так выглядит основное окно программного продукта.

Рисунок 1 – Основное окно программы

3. СТРУКТУРНАЯ СХЕМА ПРОГРАММЫ

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

1)Отображение данных пользователя в виде таблицы и работа с ней.

2)Добавления и удаления типов объектов.

3)Графическое представление плана с возможностью масштабирования.

4)Работа с файлами и вывод результатов на печать.

5)Удобный пользовательский интерфейс.

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

Рис. 3.1. Функциональная структура программы.

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


4. ОСНОВНЫЕ АЛГОРИТМЫ

Основным является алгоритм построения изображения по данным из главной таблицы, реализованный в виде метода plandraw().

Ниже приведены его блок-схема и описание.

4.1 Описание алгоритма

Если не активирована вкладка, на которой находится наше изображение плана, мы ее активируем.

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

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

С помощью свойства таблицы RecordCount находим количество строк в главной таблице.

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

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

Если номер маршрута равен нулю, тогда выполняется условие рисования координатной сетки – меридианов и параллелей. Сначала выполняется цикл рисования меридианов – мы проходим от 0 до 360 градусов с шагом, зависящим от степени увеличения (15, 6, 3, или 1 градусов), причем возле каждого меридиана подписывается соответствующий ему градус долготы (восточная долгота – со знаком "+", западная – со знаком "-"). Нулевой меридиан изображается черным цветом. Аналогичные действия осуществляются и в цикле рисования параллелей, единственное отличие – цикл проходит от 0 до 180 градусов. Со знаком "+" обозначается северная широта, со знаком "-" - южная.

Меняем толщину линии на 2, для изображения линий маршрутов.

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

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

Задаем цвет линии в зависимости от номера маршрута. И организуем цикл, рисующий линии.

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

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

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

Рассматриваются три случая:

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

2)если точки находятся на одинаковой широте, то тут его определение тоже не представляет сложности – он равен разности между большим и меньшим значением долготы, умноженной на поправку cos(f), где f – текущая широта.

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

Сначала находим разность долгот точек, как если бы они находились на одной широте, помножаем на поправку cos(f), и вычисляем линейное расстояние между ними по теореме косинусов (другие две стороны треугольника – радиусы Земли). Таким же образом рассчитываем расстояние между точками, как если бы они находились на одной долготе. Эти расстояния обозначим l1 и l2.

Теперь у нас есть прямоугольный треугольник с катетами l1, l2, гипотенузой которого является расстояние l3. Вычисляем ее по теореме Пифагора. Нашей целью является найти угол a. С помощью теоремы косинусов находим косинус этого угла. Вычислив по нему арккосинус, мы получаем угол! Ниже приводится поясняющий рисунок.


Рис. 4.1. Пояснение к расчету расстояния на различных широте и долготе.

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

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

Все упомянутые формулы даны в Приложении Д.

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

Также на карте отображаются тип объекта для данной точки, если флажок "показывать тип объекта" установлен.

Если флажок "не показывать таблицу расстояний" отключен, делаем ее видимой.

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


4.2 Блок-схема алгоритма

Рис. 4.2. Блок-схема алгоритма рисования плана.


5. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ 5.1 Выбор среды разработки программы

Как уже говорилось в "Постановке задачи", для создания этой программы была выбрана среда разработки Borland C++Builder 5. Это решение обуславливается тем, что в ней процесс создания интерфейса не представляет труда даже для программиста, столкнувшегося с Builder’ом впервые, и там хорошо поставлена работа с базами данных и графикой, что как раз и нужно для разработки нашей программы.

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

Кроме того в Builder хорошо и то, что компоненты обладают множеством свойств, которые можно менять не только при конструировании, но и при выполнении программы, что деалет раоту с ними более гибкой.

5.2 Работа с таблицами

В качестве драйвера базы данных используем Paradox. Этот тип базы данных был выбран, во-первых, потому, что Builder имеет встроенные средства для работы с таблицами Paradox, такие как Borland Database Engine, а также с ним поставляется программа Database Desktop. Во-вторых, преимущество Paradox состоит еще и в том, что в качестве имени базы данных можно указывать путь к каталогу, где находится файл таблицы, причем все таблицы хранятся в отдельных файлах. В третьих, они занимают мало места и являются наиболее простыми из локальных таблиц. В-четвертых, именно таблицы Paradox позволяют создавать ключевые поля.

Чтобы обеспечить работу с таблицей мы установили на форме следующие компоненты:

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

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

Навигатор DBNavigator – с помощью него можно удалять, добавлять, редактировать записи в таблице, а также перемещаться по ним. Связываем его с сеткой, в которой будет отображаться наша таблица.

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

1)Active – показывает, активна ли таблица. Если попытаться обратиться к ней, если это свойство отключено, то программа выдаст ошибку "Cannot perform this operation on closed dataset". При тестировании все возможные ситуации, которые могли привести к этой ошибке, были отслежены и обработаны.

2)DatabaseName – имя базы данных, в качестве него берется путь к каталогу, из которого открыта или создана таблица.

3)TableName – имя таблицы - файл с расширением.db, в котором храниться таблица.

Все эти свойства меняются в процессе выполнения программы.

Компонент Table нужен нам для того, чтобы избавиться от конкретизации. Те мы можем под видом Table открыть любую конкретную таблицу, и изменить при этом только свойства Table, не затрагивая других компонентов. Например, при открытии таблицы мы закрываем и дезактивируем предыдущую, при этом имя базы данных и имя таблицы в свойствах компонента Table удаляются, и открываем и активируем новую, при открытии записав в DatabaseName и TableName новые имена каталога и файла. (См. методы TBOpenFileClick и TBCloseFileClick в Приложении А).

Компоненты DataSourse и Table располагаются на форме, но они видны только при работе с программой в Builder’е.

5.3 Работа с графикой

Для рисования плана мы используем компонент Image. Этот объект обладает двумя важными свойствами:

1)Picture – представляет собой объект класса TPicture, который является контейнером для графики любого вида. Т.е. этот компонент может хранить bitmap-графику, иконку или другой вид графики, определенный пользователем. В Picture как раз и находится наш рисунок. С его помощью мы сохраняем в файл полученный рисунок. (См Приложение А, метод TBSaveFileClick). Также следует учесть, что размер Picture и Image могут не совпадать. Об этой проблеме более подробно будет рассказано ниже.

2)Canvas – канва. Весь процесс рисования осуществляется именно на канве компонента Image. Canvas позволяет устанавливать параметры пера, кисти, шрифта, выполнять рисование таких объектов, как линии, прямоугольники, эллипсы, а также выводить текст.

В нашей программе мы используем рисование линий с помощью методов канвы MoveTo и LineTo, рисование точек с помощью Ellipse, а также вывод текста методом TextOut. (см. Приложение А, plandraw).

Т.е. канва позволяет нам работать с функциями Windows GDI, не обращаясь к ним непосредственно, что значительно упрощает работу с графикой.


5.4 Разработка интерфейса

Разработке интерфейса также следует уделить особое внимание, так как необходимо сделать его удобным для пользователя. Средства Builder"а позволяют легко реализовать интерфейс в стандартах Windows.

Основные элементы стандартного интерфейса Windows-программ:

1) Меню - обеспечивают простой путь для выполнения пользователями логически сгруппированных команд.

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

2) Панель инструментов - содержит кнопки инструментов, которые соответствуют элементам в меню программы и дают пользователю большее количество прямого доступа к ее командам.

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

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

В соответствие со стандартом Windows, я создала на панели кнопки, соответствующие пунктам меню "Новый", "Открыть", "Сохранить", "Печать".

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

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

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

К тому же на них можно сделать подписи, объясняющие их назначение, что тоже удобн.

Кнопка создается размещением на форме компонента Button. При разработке программы используется его свойство Caption – надпись на кнопке, а во время выполнения - свойство Enabled, чтобы сделать кнопку неактивной или наоборот активировать ее. (см. Приложение А, HideButtons() и ShowButtons()). Например, при открытии таблицы мы активируем кнопки рисования плана, а при закрытии – делаем их неактивными.

4) Выпадающие списки – применяются, чтобы пользователь мог выбрать элемент из списка. Это гораздо удобнее, чем вводить его вручную.

В данной программе поле со списком используется для внесения типа объекта в таблицу (DBComboBox, о нем говорилось выше), и для удаления типа объекта из таблицы объектов (ComboBox).

Отличие DBComboBox от ComboBox заключается в том, что первый связан с полем таблицы, а второй является простым списком. Использование простого списка ComboBox позволяет решить проблемы взаимодействия с таблицей и DBComboBox, которые возникают при удалении объекта из таблицы.

5) Полосы прокрутки – реализуются с помощью компонента ScrollBox, в нашем случае они необходимы для прокрутки изображения плана при его увеличении. В программе осуществляется изменение в зависимости от масштаба параметра Max, который определяет максимальную величину прокрутки.

6) Флажки (переключатели) – определяют, включена или нет представляемая ими опция.

В Builder’e это компонент CheckBox.

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

Рисование линий маршрутов;

Отображение расстояния на плане;

Отображение типа объекта на плане;

Показать таблицу расстояний.

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

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

В Builder есть два типа вкладок: TabControl и PageControl.

В программе используется PageControl, так как в отличие от первого, этот компонент может содержать на вкладках разнородные элементы управления. У TabControl все страницы одинаковы.

8) Диалоги – очень удобное средство, помогающее реализовать такие диалоги с пользователем, как используемые в данной программе сохранение, открытие файла, печать и выбор цвета.

Все необходимые диалоги размещаются на форме, но для пользователя остаются невидимыми. Они вызываются программой и реализуют стандартный интерфейс Explorer’а.

С помощью диалогов OpenDialog и SaveDialog программа получает имя файла и каталога, который выбирает пользователь. С помощью диалога печати PrintDialog вызываются настройки печати. А ColorDialog помогает выбрать цвет (он используется для выбора цвета фона рисунка).

Назначение каждого видимого для пользователя компонента интерфейса описано в руководстве пользователя.

Стоит заметить, что у каждого объекта интерфейса есть такое свойство, как Align – выравнивание. Оно позволяет выровнять элемент управления по правой, левой, верхней или нижней стороне формы и панели, причем элемент остается там, даже если размер формы меняется. Например, панель с кнопками возле рисунка выровнена по правому краю, таблица расстояний – по левому, а поле рисунка выровнено по alClient, те занимает все свободное пространство между таблицей и панелью. При растягивании форму эти элементы управления тоже будут растягиваться, оставаясь при этом на своих местах.

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

5.5 Некоторые особенности алгоритмов

Алгоритм рисования

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

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

Расстояния же рассчитываются в реальных размерах.

Алгоритм расчета расстояния.

О нем также подробно рассказывается в "Описании алгоритма". Он является частью алгоритма рисования.

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

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

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

Создание таблицы

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

Но все-таки этот алгоритм был найден в помощи Builder’а, хотя там он содержал ошибки.

В программе же представлен его рабочий пример (см. Приложение А, TBNewFileClick).

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

Проблема размера графики

При разработки программы возникла довольно-таки серьезная проблема с рисованием картинки – при изменении размеров формы должен был меняться и размер картинки, но этого не происходило.

Причиной было то, что размер компонента Image все-таки изменялся, а вот размер картинки Picture оставался прежним. В связи с этим была создана процедура ResizeForm (см. Приложение А), которая реагировала на изменение размеров формы и менял размер картинки в соответствии с изменившимся размером компонента Image.

5.6 Тестирование

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

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

Еще одной важной ошибкой, которая была устранена – проблема размера графики (см. выше).

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

Важнейшей стороной тестирования была проверка работоспособности программы на компьютере, на котором не установлен Builder. Это помогло определить следующее:

1) при компиляции программы необходимо включить в нее все используемые библиотеки. Это достигается с помощью отключения двух опций в настройках компилятора. Исполняемый код программы при этом становится больше, но зато она сможет работать и на машине без Builder’а.

2) для работы программы требуется Borland Database Engine. Если его нет на компьютере, его необходимо установить.


6. ОПИСАНИЕ ПРОГРАММЫ

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

Программа создана для операционной системы Windows, и обладает стандартизованным под нее и удобным для пользователя интерфейсом. Вместе с ней поставляется пример в виде таблицы с маршрутами поездов.


7. ИНСТРУКЦИЯ ПО УСТАНОВКЕ

Для установки программы должны быть выполнены требования: процессор 233МГц и выше, оперативная память от 16Мб, ОС Windows98 и выше.

Чтобы установить программу, необходимо проделать следующие действия:

1) Создать новую папку для программы.

2) С носителя, на котором находится архив программы (дискета или диск), скопировать его в эту папку.

3) Распаковать архив в эту папку.

4) Убедитесь, что фалы objects.db и rasst.db находятся в той же папке, что и программа.

5) Убедитесь, что у этих файлов снят атрибут "Только чтение". Если нет, снимите его.

6) Распакуйте архив с библиотеками в папку Windows.

7) Теперь можно запустить программу и пользоваться ею.


8. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ 8.1 Главное меню Меню "Файл"

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

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

"Новый" - создание новой таблицы. Вызывается диалог, в котором пользователь задает имя новой таблицы.

"Печать" - в зависимости от открытой вкладки печатает рисунок или таблицу. При выборе этого пункта открывается диалоговое окно настройки печати, после нажатия кнопки "ОК", задание отправляется на печать.

Меню "Таблица"

"Построить план" - если таблица открыта, активирует вкладку "План" и рисует план.

"Добавить тип объекта" - вызывает форму добавления типа объекта.

"Удалить тип объекта" - вызывает форму удаления типа объекта.

Меню "Помощь"

"О программе" - выводит название программы и сведения об авторе.


8.2 Панель быстрых кнопок

Действия этих кнопок аналогичны одноименным пунктам меню "Файл".

- "Новый" - создание новой таблицы.

- "Открыть" - открыть уже существующую таблицу.

- "Печать" - вывести на печать рисунок или таблицу.

8.3 Вкладка "Таблица"

Сетка таблицы – в нее загружается таблица. С помощью этой сетки пользователь может редактировать и просматривать записи таблицы.

Навигатор – располагается под сеткой, позволяет редактировать и просматривать таблицу.

Кнопки навигатора

- "Первая запись" - выполняет переход на первую запись в таблице.

- "Предыдущая запись" - выполняет переход на предыдущую запись в таблице.

- "Следующая запись" - выполняет переход на следующую запись в таблице.

- "Последняя запись" - выполняет переход на последнюю запись в таблице.

- "Добавить запись" - таблица переводится в режим редактирования, перед активной записью вставляется новая пустая запись.

- "Удалить запись" - удаляет текущую запись, предварительно запросив подтверждение.

- "Редактировать" - редактирование текущей записи.

- "Отменить изменения" - отменяет изменения текущей записи, возвращая ее предыдущее значение.

- "Обновить". Обновляет таблицу в сетке.

Под навигатором находятся Список объектов и кнопки удаления и добавления объектов.

Список объектов – содержит перечень типов объектов. При выборе типа из списка, он заносится в текущую запись в таблице.

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

Удалить тип объекта – вызывает форму удаления типа объекта.

Форма добавления типа объекта

Содержит поле редактирования для ввода текста, в которое заносится название нового типа.

"Добавить" - добавляет тип объекта к списку и в таблицу, не закрывая форму.

"Ок" - если объект не был добавлен, заносит его в список и таблицу, и закрывает форму.

"Отмена" - закрывает форм без добавления.

Форма удаления типа объекта

Список объектов – из него пользователь выбирает, какой объект нужно удалить.

"Удалить" - удаляет выбранный тип объекта из таблицы и списка.

"Удалить все" - полностью очищает таблицу объектов и списки.

"ОК" - закрывает форму.


8.4 Вкладка "План"

Поле рисунка – область, на которую выводится рисунок плана.

Полосы прокрутки – появляются при увеличении изображения нажатием на кнопку "Увеличить". Позволяют прокручивать увеличенное изображение.

Таблица расстояний – показывает для каждого маршрута его номер и длины отрезков, в километрах. Таблица видима, если снят флажок "Скрыть таблицу расстояний".

"Очистка карты" - очищает поле рисунка.

"Нарисовать" - рисует план.

"Цвет фона" - позволяет выбрать цвет фона рисунка. При нажатии на эту кнопку выводится диалоговое окно выбора цвета.

"+ Увеличить" - увеличивает изображение на плане.

"- Уменьшить" - уменьшение изображения на плане. Эта кнопка становиться активной при нажатии кнопки увеличения.

"По умолчанию" - устанавливает изначальный размер изображения.

"Рисовать линии маршрутов" - если он установлен, на плане будут рисоваться маршруты, если нет – будут обозначаться только точки.

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

"Показывать тип объекта на карте" - если флажок установлен, рядом с каждой точкой выводится тип объекта.

"Скрыть таблицу расстояний" - если флажок установлен, таблица расстояний невидима. Если снят, таблица появится справа от поля рисунка.

Все флажки по умолчанию установлены.


9. КОНТРОЛЬНЫЙ ПРИМЕР

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

Возьмем следующие поезда:

N 497Г Горький-Моск - Адлер

N 471Г Горький-Моск - Новороссийск

N 431Г Горький-Моск - Адлер

N 367Г Горький-Моск - Самара

N 059A Горький-Моск - Санкт-Петербург-Главн

N 039Г Горький-Моск - Москва Курская

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

Рис. 9.1. Общий вид программы на вкладке "Таблица", ввод в запись названия объекта с помощью списка.


Ранее мы занесли в таблицу объектов станцию Красный Узел, но так как она нам не понадобиться, мы ее удалим.

Рис. 9.2. Удаление типа объекта.

При наборе маршрута поезда 431 нам понадобиться Владимир. Так как его нет в списке, нужно его добавить.

Рис. 9.3. Добавление типа объекта.


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

Рис. 9.4. Таблица

Теперь по нашей табличке построим план.

Рис. 9.5. Изображение плана со всеми надписями.


По умолчанию у нас отображаются и линии, и расстояния, и названия городов.

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

Рис. 9.6. Изображение плана без всех надписей.

Теперь посмотрим только расстояния.

Рис. 9.7. Изображение плана только с расстояниями.


На самом деле они рассчитаны не очень точно, но это оттого, что мы учли не все пункты этих маршрутов, а также координаты взяты не совсем верные - они были определены по карте "на глаз".

Теперь посмотрим наш план только с названиями городов.

Рис. 9.8. Изображение плана с выводом только типов объектов.

Рис. 9.9. Изображение плана в виде точек со всеми подписями.


Можно посмотреть и таблицу расстояний.

Рис. 9.11. Общий вид программы на вкладке "План" с видимой таблицей расстояний.


ЗАКЛЮЧЕНИЕ

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

Работа пользователя программы осуществляется с помощью несложного интерфейса, выполненного по стандартам интерфейса программ Windows.

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


СПИСОК ЛИТЕРАТУРЫ

1. П. Густавсон, М. Кэшмэн, Б. Сворт, Дж. Холингворт. Borland C++ Builder 6. Руководство разработчика. – Вильямс, 2004.

2. А. Архангельский. Программирование в C++ Builder 6. – Бином, 2002.

3. Т.А. Павловская. С/С++. Программирование на языке высокого уровня. – Питер, 2001.


ПРИЛОЖЕНИЕ ПРИЛОЖЕНИЕ Е. Картографические проекции и координатная сетка

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

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

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

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

Равноугольные, сохраняющие равенство углов, между направлениями на карте и в натуре. На рис.Е.1 показана карта мира, на которой картографическая сетка сохраняет свойство равноугольности. На карте сохранено подобие углов, но искажены размеры площадей. Например, площади Гренландии и Африки на карте почти одинаковы, а в действительности площадь Африки примерно в 15 раз больше площади Гренландии.

Рис.Е.1 Карта мира в равноугольной проекции.

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

Равнопромежуточные, сохраняющие постоянство масштаба по какому-либо направлению;

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


Рис. Е. 2 Карта мира в равновеликой проекции.

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

Личных подсобных хозяйств Агинского Бурятского автономного округа на 2005 - 2010 гг.», который подготовлен в проектом варианте. 4. Основные направления совершенствования деятельности органов государственного управления по поддержке личных подсобных хозяйств сельского населения в Агинском Бурятском автономном округе 4.1 Проблемы и приоритеты развития личных подсобных хозяйств в Агинском...

Изучения семей привели к разработке таких психологических, педагогических, социологических методов, которые углубляют и расширяют представления о современной семье. ГЛАВА 3. СОЦИАЛЬНЫЕ ПРОБЛЕМЫ И ПЕРСПЕКТИВЫ СОЦИАЛЬНОЙ РАБОТЫ С МОЛОДЫМИ СЕМЬЯМИ СЕЛА ВОРОНОВКА 3.1 Общая характеристика с. Вороновка Шегарского района Томской области Шегарский район расположен в южной части Томской...




Положения и поддержку детей; - в настоящее время в России разработан и реализован механизм финансирования целевых программ по поддержке материнства и детства. 2. Финансовый механизм реализации государственной политики по поддержке материнства и детства 2.1 Порядок и условия выплаты социальных пособий К настоящему времени в России сложилась достаточно развитая система пособий, ...

Тема 3. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ

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


Структура программного обеспечения

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

· на обеспечение устойчивой работы компьютера и вычислительной сети;

· на создание условий для нормальной работы прикладных про­грамм;

· на выполнение вспомогательных операций;

· на диагностику аппаратной части компьюте­ра и вычислительной сети;

Все множество системных программ можно разделить на две большие группы: базовое ПО и сервисные системы . Базовое программное обеспе­че­ние - это мини­мальный набор про­граммных средств, обеспечивающих ра­боту компьютера.

Базовый подкласс ПО включает:

· операционные системы(ОС) - комплекс программ, управляющих про­цес­сом вы­пол­нения прикладных программ, планированием и управлением вычис­литель­ными ресур­сами ПК (ОС берет на себя выполне­ние таких операций, как кон­троль работоспо­собности оборудова­ния ПК; выпол­не­ние проце­дуры на­чальной за­грузки; управле­ние работой всех уст­ройств ПК; управле­ние фай­ловой систе­мой; взаимодействие пользователя с ПК; за­грузка и выполне­ние при­клад­ных про­грамм; распределение ресурсов ПК - опе­ративной памяти, процессорного вре­мени и пери­ферийных уст­ройств между при­кладными програм­мами ).

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



· сетевые операционные системы - комплекс программ, обес­печивающих обра­ботку, передачу и хранение данных в сети.

До недавнего времени на большинстве ПК была установлена операци­онная сис­тема MS DOS , которая была создана в 1981 г. фир­мой Microsoft (заметим, что она не была ори­гинальной разработкой самой Microsoft - ком­пания Билла Гейтса лишь дорабо­тала «операци­онку» под названием QDOS, созданную другой компанией ). До появления Windows дисковая операцион­ная система MS DOS была самой популярной и массовой в применении. В ее среде создано целое поколение программного продукта. На основе MS DOS в процессе развития компьютерных технологий появился Windows (с 1996 г. MS DOS включена в состав операционной среды Windows 95 ). Основные компоненты ОС, развитые в среде MS DOS, являются классикой, и орга­нично включены в Windows на новом этапе раз­вития программного обеспе­чения в целом и его сердцевины - операционных систем.

MS DOS 16-разрядная однозадачная операционная сис­тема, обладающая «интер­фейсом ко­манд­ной строки», компактна, предъяв­ляет скром­ные требо­ва­ния к аппаратуре и вы­полняет необ­ходимый мини­мум функций для поль­зователей и программ. Основ­ные недос­татки DOS:

· главным ее уяз­вимым ме­стом является работа с ограниченной оператив­ной памятью (в эпоху созда­ния MS-DOS оперативная па­мять большин­ства компьюте­ров не превышала 256 ки­лобайт. DOS мог­ла работать с 640 ки­лобай­тами ОП, и Билл Гейтс ут­верждал, что никому и никогда не понадо­бится больший объем, но время шло и появились программы, ко­то­рым требовался для работы больший объем опера­тив­ной памяти и при­ходи­лось ис­пользовать специальные про­граммы - ме­неджеры памяти, но и они не ре­шали проблему );

· вторым недос­татком DOS была не­возможность работы в полно­ценном гра­фическом ре­жиме (хотя то­гдашние ком­пь­ютеры уже могли бы обеспе­чить его под­держку );

· третьим недостат­ком MS-DOS была однозадачность.

Операционные системы се­мейства DOS, несмотря на свою про­стоту и экономичность, мо­рально устарели, и на смену им пришли опе­рацион­ные системы нового поко­ления. К числу таких ОС относятся операционные сис­темы се­мейства Windows , операци­онные системы семейства Unix и др.

Сервисные системы - предназначены для обслуживания компьютера (расши­ряют возможности базового ПО ). По функциональному признаку среди сервисного ПО можно выделить:

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

· антивирусные программы (обеспечивающие защиту компь­ютера, обнаруже­ние и восстановление зараженных файлов );

· программы архивирования данных (обеспечивают процесс сжатия ин­форма­ции в файлах с целью уменьше­ния объема памяти для ее хранения );

· программы обслуживания сети.

· программы диагностики работоспособности компьютера;

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

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

· локальные средства, обеспечивающие выполнение отдельных работ по созда­нию программ;

· интегрированные среды разработчиков программ, обеспечивающие вы­полне­ние комплекса взаимосвязанных работ по созданию программ.

Локальные средства разработки про­грамм включают языки и системы про­грам­мирования, а также инструментальную среду пользователя. Сущест­вуют ма­шинные языки программирования (воспринимаемые аппаратной ча­стью компью­тера ма­шин­ные коды ), машинно-ориентированные языки (языки программирова­ния, кото­рые отражают структуру конкретного типа компью­тера – ассемб­леры ), алго­ритмические (универсальные ) языки, не зависящие от архитектуры компьютера, напри­мер, Фор­тран (Fortran ), Ко­бол (Cobol ), Алгол (Algol ), Пас­каль (Pascal ), Бейсик (Basic ), Си (C ), Си++ (C++ ) и др.; процедурно-ориентированные языки (где име­ется возмож­ность описания про­граммы как совокупности процедур – подпро­граммы ), про­блемно-ориен­тированные языки (предназначенные для решения задач оп­реде­ленного класса ), интегрирован­ные системы программирования. Заметим, что класси­фикация языков программирования не закреплена ГОСТами (в учебных це­лях обычно проводится их классификация по различным призна­кам ). Про­грамма, подго­товленная на языке программи­рования, проходит этап трансля­ции, отладки и тести­рования.

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

Кроме того, существуют средства для создания сложных информацион­ных сис­тем (CASE – технология ). Проектирование информационных систем представ­ляет собой трудоемкую и дли­тельную работу, требующую высокой ква­лификации участ­вующих в ней специалистов. В недале­ком прошлом про­ектирование нередко выпол­нялось на интуитивном уровне неформализован­ными методами, включаю­щими в себя элементы искусства, практический опыт, экспертные оценки и дорого­стоящие экспериментальные проверки ка­чества функционирования. В начале 70-х гг. в США был отмечен кризис про­граммирования (software crisis ). Это выра­жалось в том, что боль­шие проекты стали выполняться с отставанием от гра­фика или с превышением сметы рас­хо­дов, разработанный продукт не обладал тре­буемыми функцио­нальными возможностями, произ­водительность его была низка, ка­чество получаемого про­граммного обеспечения не устраивало потре­бителей. Потребность кон­тролировать процесс разработки ПО, прогнози­ровать и гаран­тировать стои­мость разработки, сроки и качество ре­зультатов привела к необ­ходимости пере­хода от кус­тарных к индустриальным способам создания ПО и по­явле­нию совокупности инже­нерных методов и средств создания ПО, объеди­нен­ных общим названием «программная инжене­рия» (software engineering ). В основе про­граммной инженерии лежит сле­дующая идея: проектиро­вание ПО является фор­мальным процессом, который можно изучать и совершенство­вать. К концу 80-х гг. было проведено много исследований в области про­грамми­рования (разработка и внедрение языков высокого уровня, мето­дов струк­турного и модульного програм­мирования, языков проектирова­ния и средств их под­держки, формальных и нефор­мальных языков описания сис­темных требований и спецификаций и т. д. ). Термин CASE (Computer Aided Software Engineering ) имеет весьма широкое толкование. Первоначально зна­чение термина CASE ограни­чива­лось вопросами автоматизации раз­работки только лишь программного обеспече­ния, а в на­стоящее вре­мя оно при­обрело новый смысл и охватывает про­цесс разра­ботки сложных инфор­мационных систем в целом. CASE-технология представляет собой совокупность методов про­ектирования информационных сис­тем, а также набор инструментальных средств, позво­ляющих в наглядной форме моделировать предметную об­ласть, ана­лизиро­вать эту модель на всех ста­диях раз­работки и со­провожде­ния, разрабатывать приложения в соответствии с информаци­он­ны­ми потреб­ностями пользователей. Большинство существующих CASE-средств осно­вано на методах структурного или объектно-ори­ентированного анализа и проек­тирования, использую­щих специфи­кации в виде диаграмм или текстов для описания внешних требова­ний, свя­зей между моделями системы, дина­мики поведе­ния сис­темы и архитектуры про­граммных средств.

Прикладные программы - предназна­чены для реше­ния прикладных задач пользо­вателя (обеспечивает выполнение необходи­мых пользова­телю за­дач на ком­пью­тере ). Условно (по их назначению ) можно выделить следую­щие под­классы:

· программы обработки текстов;

· графические редакторы;

· программы обработки фото- и видеоизображений;

· программы подготовки презентаций;

· электронные таблицы;

· системы управления базами данных;

· программы эко­номического и статистического анализа;

· сис­темы автомати­зированного проектирования (САПР);

· информационно-поисковые системы;

· сетевое программное обеспечение (программы для работы с электронной почтой, доступ к ви­деоконференциям, браузеры Интернет и т.д. );

· игровые программы.

Прикладное программное обеспе­че­ние состоит из пакетов прикладных про­грамм (ППП) и прикладных про­грамм пользователя.

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

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

Разработка структуры программного обеспечения

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

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

Система состоит из трех взаимосвязанных программных модулей:

модуль личного кабинета;

Модуль отображения расписания предназначен для приема от пользователя информации о запрашиваемом расписании и выводе его на дисплей или на печать.

Полная структурная схема проектируемого программного обеспечения представлена на рисунке 2.1.

Рисунок 2.1 - Структурная схема программного обеспечения

Детальное рассмотрение каждого модуля позволяет ее представить в виде следующих элементов:

«Ввод параметров запроса» - позволяет указывать данные для запроса.

«Отображение страницы расписания» - формирование страницы с запрошенными данными на экране.

«Формирование электронных документов» - формирование файлов с запрошенными данными.

«Отправка расписания» - отправка при изменениях, данных с изменениями.

Разработка функциональной схемы

Функциональная схема или схема данных (ГОСТ 19.701-90) - схема взаимодействия компонентов программного обеспечения с описанием информационных потоков, состава данных в потоках и указанием используемых файлов и устройств. Для изображения функциональных схем используют специальные обозначения, установленные стандартом.

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

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

модуль отображения расписания;

модуль личного кабинета;

Функциональная схема программного обеспечения общего вида представлена на рисунке 2.2.

Рисунок 2.2 - Функциональная схема программного обеспечения


Шаг 1. Определяем структуру управляющей программы, которая для нашего случая реализует работу с меню через клавиатуру: Программа
Шаг 2. Детализируем операцию Выполнить команду: Выполнить Команду
Подобный материал:
  • Н. Э. Баумана Факультет Информатики и систем управления Кафедра Компьютерные системы , 254.77kb.
  • Н. Э. Баумана Кафедра Компьютерные системы и сети Г. С. Иванова, Т. Н. Ничушкина Оформление , 109.65kb.
  • Н. Э. Баумана Факультет "Инженерный бизнес и менеджмент" Кафедра "Менеджмент" , 786.11kb.
  • Примерная программа наименование дисциплины Проектирование и архитектура программных , 182.2kb.
  • С. В. Чувиков Метрология и сертификация программного обеспечения Учебное пособие , 1298.56kb.
  • Электронное гиперссылочное учебное пособие по дисциплине «Основы теории управления» , 57.71kb.
  • Н. Э. Баумана Факультет "Информатика и системы управления" Кафедра "Системы обработки , 128.07kb.
  • М. В. Красильникова проектирование информационных систем раздел: Теоретические основы , 1088.26kb.
  • Программа вступительных испытаний (собеседования) для поступающих в магистратуру , 87.89kb.
  • Учебное пособие, 2003 г. Учебное пособие разработано ведущим специалистом учебно-методического , 454.51kb.

4.Проектирование программного обеспечения при структурном подходе

4.1.Разработка структурной и функциональной схем

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

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

Самый простой вид ПО – программа в качестве структурных компонентов может включать только подпрограммы и библиотеки ресурсов. Разработка структурной схемы программы обычно выполняется методом пошаговой детализации (см. § 4.2).

Структурными компонентами программной системы или программного комплекса могут служить программы, подсистемы, базы данных, библиотеки ресурсов и т. п. Так структурная схема программной системы, как правило, показывает наличие подсистем или других структурных компонентов (рис. 4.1).

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

Функциональная схема. Функциональная схема или схема данных (ГОСТ 19.701–90) – схема взаимодействия компонентов ПО с описанием информационных потоков, состава данных в потоках и указанием используемых файлов и устройств. Для изображения функциональных схем используют специальные обозначения, установленные стандартом.

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

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

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

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

Метод пошаговой детализации реализует нисходящий подход и базируется на основных конструкциях структурного программирования. Он предполагает пошаговую разработку алгоритма. Каждый шаг при этом включает разложение функции на подфункции. Так на первом этапе описывают решение поставленной задачи, выделяя общие подзадачи. На следующем аналогично описывают решение подзадач, формулируя уже подзадачи следующего уровня. Таким образом, на каждом шаге происходит уточнение функций проектируемого ПО. Процесс продолжают, пока не доходят до подзадач, алгоритмы решения которых очевидны.

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

Кроме этого целесообразно придерживаться следующих рекомендаций:

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

Пример 4.2. Разработать алгоритм программы построения графиков функций одной переменной на заданном интервале изменения аргумента при условии непрерывности функции на всем интервале определения.

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

Для того чтобы построить график необходимо задать функцию, интервал изменения аргумента , на котором функция непрерывна, количество точек графика n, размер и положение окна экрана, в котором необходимо построить график: wx1, wy1, wx2, wy2 и количество линий сетки по горизонтали и вертикали nlx, nly. Значения wx1, wy1, wx2, wy2, nlx, nly можно задать, исходя из размера экрана, а интервал и число точек графика надо вводить.

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

Примем, что программа будет взаимодействовать с пользователем через традиционное иерархическое меню, которое содержит пункты: «Формула», «Отрезок», «Шаг», «Вид результата» и «Выход». Для каждого пункта этого меню необходимо реализовать сценарий, предусмотренный в техническом задании.

Шаг 1. Определяем структуру управляющей программы, которая для нашего случая реализует работу с меню через клавиатуру:

Программа.

Инициализировать глобальные переменные

Вывести заголовок и меню

Выполнять

Если выбрана Команда

то Выполнить Команду

иначе

Все-если

до Команда=Выход

Конец.

Очистка экрана, вывод заголовка и меню, а также выбор Команды – операции сравнительно простые, следовательно, их можно не детализировать.

Шаг 2. Детализируем операцию Выполнить команду:

Выполнить Команду:

Выбор Команда

Функция:

Выполнить разбор формулы

Отрезок:

Ввести значения x1,x2

Ввести значение h

Вид результата:

Ввести вид_результата

Если Вид_результата=График

то Построить график

иначе Вывести таблицу

все-если

Все-выбор

Определим, какие фрагменты имеет смысл реализовать в виде подпрограмм. Во-первых, фрагмент Вывод заголовка и меню, так как это достаточно длинная линейная последовательность операторов и ее выделение в отдельную процедуру позволит сократить управляющую программу. Во-вторых, фрагменты Разбор формулы, Расчет значений функции, Построение графика и Вывод таблицы, так как это достаточно сложные операции. Это – подпрограммы первого уровня, которые в основном определяют структуру программы (рис. 4.4).

Определим для этих подпрограмм интерфейсы по данным с основной программой, т.е. в данном случае списки параметров.

Подпрограмма Вывод заголовка и меню параметров не имеет.

Подпрограмма Разбор формулы должна иметь два параметра: Fun – аналитическое задание функции, Tree – возвращаемый параметр – адрес дерева разбора.

Подпрограмма Расчет Значений функции должна получать адрес дерева разбора Tree, отрезок x1 и x2, а также шаг h. Обратно в программу она должна возвращать таблицу значений функции X(n) и Y(n), где n – количество точек функции.

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

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

Программа.

Вывод заголовка и меню

Выполнять

Если выбрана Команда

то

Выбор Команда

Функция:

Ввести или выбрать формулу Fun

Разбор формулы (Fun; Var Tree)

Отрезок:

Ввести значения x1,x2

Ввести значения h

Вид результата:

Ввести Вид_результата

Выполнить:

Расчет таблицы(x1,x2,h,Tree; Var X, Y, n)

Если Вид_результата=График

то Построение графика(X, Y, n)

иначе Вывеод таблицы(X, Y, n)

все-если

Все-выбор

иначе Обработать нажатие клавиш управления

Все-если

до Команда=Выход

Конец.

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

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

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

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

Вверх