Автоматизированное рабочее место автопарка

Тип работы:
Дипломная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Введение

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

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

Несколько лет назад рядовому программисту оставалось только мечтать о создании собственных программ, работающих в среде Windows, т.к. единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом.

Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую «быструю разработку», среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD_систем, Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий. Производительность программиста при использовании RAD_систем — фантастическая!

Delphi — это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi — строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.

В настоящее время программистам стала доступна очередная версия пакета Delphi — Borland Delphi 7 Studio. Как и предыдущие версии, Borland Delphi 7 Studio позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. В состав пакета включены разнообразные утилиты, обеспечивающие работу с базами данных, XML_документами, создание справочной системы, решение других задач. Отличительной особенностью седьмой версии является поддержка технологии. NET.

Borland Delphi 7 Studio может работать в среде операционных систем от Windows 98 до Windows XP. Особых требований, по современным меркам, к ресурсам компьютера пакет не предъявляет: процессор должен быть типа Pentium или Celeron с тактовой частотой не ниже 166 МГц (рекомендуется Pentium II 400 МГц), оперативной памяти — 128 Мбайт рекомендуется 256 мб.

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

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

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

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

Склады могут иметь разные конструкции: размещаться в отдельных помещениях (закрытые), иметь только крышу или крышу и одну, две или три стены (полузакрытые). Некоторые грузы хранятся вообще вне помещений на специально оборудованных площадках, в так называемых открытых складах.

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

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

Различаются склады и по степени механизации складских операций: немеханизированные, механизированные, комплексномеханизированные, автоматизированные и автоматические.

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

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

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

— временное размещение и хранение материальных запасов;

— преобразование материальных потоков;

— обеспечение логистического сервиса в системе обслуживания.

Любой склад обрабатывает, по меньшей мере, три вида материальных потоков: входной, выходной и внутренний.

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

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

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

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

Склад компании «LogyCom» — это целый город высококачественной техники, благодаря которому наши работники могут удовлетворить любой ваш каприз. Если бы вы могли, хотя бы одним глазком взглянуть на этот огромный мир, то вы пришли бы в полный восторг. Масштабы склада удивят любого человека: все разложено аккуратно по полочкам, каждый вид товара хранится отдельно. Многие люди думают что заказать доставку техники домой это просто, но, это не так. Для того чтоб техника попала с витрины магазина к вам домой происходит огромное количество действий.

1. Сначала продавец помогает вам определиться с выбором, и оформить договор доставки.

2. Затем договор доставки в электронном виде попадает в центральный офис, где менеджеры сверяют все данные клиентов (контактные номера телефонов, стоимость того или иного товара, наличие этого товара на складе, модели), и после передают ваш заказ в службу доставки. 3. В свою очередь менеджеры отдела доставки рассчитывают объем загружаемой техники в кубических метрах и только после этого формируют экипажи по адресам и районам города. Вы только представьте себе, что в одну машину марки «Газель» вмещается 11 кубов техники — это, к примеру, целых 50 процессорных блоков или 12 компьютерных столов. Или более 100 мониторов! И таких загруженных «Газелей» со склада выезжает ежедневно около 35. 5. Вы только представьте себе, что ежедневно со склада вывозится около 400 кубов самой разной техники. Для того чтобы найти весь товар своевременно для того или иного экипажа проделывается огромная работа. Все товары на складе разложены по категориям, (крупная техника, мелкая, множество компьютеров, комплектующее устройства и аудио-видео товары).

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

1. Общая часть

1. 1 Описание программного обеспечения

— Среда разработки Borland Delphi 7 Enterprise - интегрированная среда разработки ПО для Microsoft Windows на языке Delphi (ранее носившем название Object Pascal), созданная первоначально фирмой Borland;

- BDE Administrator (сокр. от англ. Borland Database Engine - «движок баз данных Borland») - 32_битный движок баз данных под Microsoft Windows для доступа к базам данных из Borland Delphi, C++ Builder, IntraBuilder, Paradox for Windows и Visual dBASE for Windows.

Описание операционной системы Windows 7

Windows 7 была выпущена в свободную продажу осенью 2009 года и за прошедшее время успела стать самой популярной из всех операционных систем компании Microsoft.

Улучшения и новшества

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

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

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

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

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

Windows 7 получила измененную, более удобную и функциональную панель задач. Теперь на панели отображаются только иконки без подписей, что позволяет одновременно уместить на ней гораздо больше приложений. Кроме того, на панели появилась кнопка «Свернуть все окна».

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

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

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

Интерфейс Aero, известный пользователям по предыдущей версии операционной системы Windows Vista, стал поддерживать несколько вариантов оформления. Кроме того, в него добавлены новые функции, которые позволяют легко управлять расположением и размером окон на рабочем столе.

Безопасность

В Windows 7 реализованы более широкие возможности для обеспечения безопасности персонального компьютера. Теперь пользователю доступна функция запрещения запуска отдельных приложений при помощи сервиса AppLocker. Технология шифрования BitLocker подверглась существенной доработке и теперь позволяет шифровать информацию на съемных носителях. Значительно улучшен брэндмауэр Windows, теперь он уведомляет пользователя о блокировке приложений. Благодаря функции DirectAccess стало возможно установить безопасное соединение с удаленным сервером без участия пользователя.

Редакции

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

Следующая редакция носит название Windows 7 Home Basic и также имеет весьма ограниченный набор возможностей. Она не поддерживает фирменный интерфейс Windows Aero и технологию Multitouch, имеет малый функционал при работе с локальными сетями. Предназначена для OEM_продаж и поставок на развивающиеся рынки.

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

Максимальный набор возможностей предоставляют версии Windows 7 Ultimate и Enterprise. Они идентичны по функционалу, но первая версия предназначена для розничных продаж, а вторая — для поставок корпоративным клиентам. Windows 7 Максимальная является топовой версией системы, которая включает в себя абсолютно все возможности, заложенные разработчиками компании Microsoft.

Аппаратные требования

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

- Процессор с частотой не менее 1 ГГц;

— 1 гигабайт оперативной памяти (2 гигабайта для 64_битной версии);

— Видеоадаптер с объемом не менее 128 мегабайт (необходимо для включения интерфейса Aero) и поддержкой DirectX9;

— 16 гигабайт свободного пространства на жестком диске (20 гигабайт для 64_битной версии).

Среда программирования Delphi

Delphi это высокопроизводительный инструмент создания приложений. Исторически существует множество версий Delphi, начиная от 16_разрядного компилятора для создания программ, работающих в среде Windows 95/98 (Delphi 2. 0), которая появилась в начале 1996 года, и включает полный 32_разрядный компилятор для использования в Windows 95 или в Windows NT.

Последней версией (на 2012 год) является Embarcadero Delphi XE2.

Для запуска Delphi требуется как минимум 386 компьютер с 4MB памяти. Более подходящей машиной будет 486DX 66MHz с 8MB ОЗУ и естественно все более мощные современные компьютеры.

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

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

1.2 Описание языка программирования

Delphi (Демлфи, произносится /?d?l?fi: /) - императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal. Начиная со среды разработки Delphi 7. 0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями (например, с развитием платформы. NET) развития языков программирования: появились class helpers, перегрузки операторов и другое.

Изначально среда разработки была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован также для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и, вскоре после этого, было объявлено о поддержке Microsoft. NET.

Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.

Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора [источник не указан 1246 дней] для GCC.

Объектно-ориентированные особенности языка

Инкапсуляция

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

Наследование

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

Полиморфизм

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

Основные типы данных

К основным типам данных языка Delphi относятся:

- целые числа (integer);

— дробные числа (real);

— символы (char);

— строки (string);

— логический тип (boolean).

Целые числа:

— Shortint [-128. 127]

— Integer [-32 768. 32 767]

— Longint [-2 147 483 648. 2 147 483 647]

— Byte [0. 255]

— Word [0. 65 535]

Числа с плавающей точкой:

— Real [2,9e39. 1,7e38]

— Single [1,5e45. 3,4e38]

— Double [5,0e324. 1,7e308]

— Extended [3,4e_4932. 1,1e4932]

Основные операторы

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

— оператора присваивания;

— условного оператора;

— оператора цикла.

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

Условный оператор позволяет изменить порядок выполнения операторов в зависимости от выполнения некоторого условия. Вот как он записывается:

if условие then действие else альтернатива;

Слова if (если), then (тогда), else (иначе) — зарезервированные. Действие и else альтернатива — это любые операторы Delphi, или несколько операторов, заключённых в логические скобки begin/end, или вызов подпрограммы. Если условие истинно, то выполняется действие, если ложно, то выполняется альтернатива.

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

Таблица 1.1 — Операции

Знак

операции

Название операции

Логические операции могут комбинироваться с помощью связок:

and (логическое И)

or (логическое ИЛИ)

xor (исключающее ИЛИ)

Для некоторых типов данных есть дополнительные операции. Например, для множеств — оператор in, которая проверяет, входит ли некоторое значение в множество. Например:

X:= [2, 4, 5, 7, 8, 10];

Выражение 2 in X истинно (true);

Выражение 6 in X ложно (false);

=

Равно

< >

Не равно

>

Больше

<

Меньше

> =

Больше или равно

< =

Меньше или равно

not

Логическое Не — отрицание

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

Результат выполнения операции логического ИЛИ равен true, если хотя бы один из операндов равен true.

Результат выполнения операции исключающего ИЛИ равен true, если операнды не равны друг другу.

Операторы цикла позволяют организовать многократное повторение одной и той же последовательности действий. В Delphi имеются три оператора, позволяющих это сделать:

— простой оператор цикла;

— условный оператор цикла;

— условный оператор повторения.

Простой оператор цикла применяется, когда известно количество повторений цикла. Он записывается так:

for счётчик:= выражение1 to выражение2 do действие;

Счётчик — это переменная, которая должна быть объявлена перед логическим блоком, в котором оператор цикла расположен, и её тип должен относиться к одному из перечислимых типов, обычно Integer.

Выражение1 и выражение2 могут быть как константой или идентификатором, так и вызовом функции.

Действие — один или несколько операторов Delphi. Если это группа операторов, то они должны быть заключены в логические скобки begin/end.

В начале работы оператора переменная-счётчик получает значение выражения1. Если при этом значение счётчика окажется меньше или равно значению выражения2, то выполняются операторы, входящие в действие. Это и есть один цикл. Затем переменная-счётчик принимает значение, следующее за текущим, и начинается новый цикл, то есть сравнение счётчика и выражения2, выполнение действия, и так далее, до тех пор, пока значение переменной-счётчика не превысит значение выражения2.

Возможна работа оператора цикла, при котором переменная-счётчик будет не увеличиваться, а уменьшаться. В этом случае ключевое слово to заменяется на downto:

for счётчик:= выражение1 downto выражение2 do действие;

Соответственно, выражение1 должно быть больше или равно выражению2.

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

while условие do

тело цикла;

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

Нужно очень внимательно следить за написанием условия и контролем завершения цикла, так как в результате ошибки цикл while будет повторяться бесконечное количество раз, что приведёт к «зацикливанию» и «зависанию» программы.

Условный оператор повторения сначала выполняет тело цикла, а затем уже проверяет выполнение условия:

repeat

тело цикла

until условие

Таким образом, этот вариант цикла гарантирует, что тело цикла будет выполнен по крайней мере один раз. И будет выполняться до тех пор, пока условие не станет истинным (т.е. true). Стоит отметить, что это единственный оператор Delphi, в котором тело цикла не требуется заключать в логические скобки begin/end. Начало и конец тела цикла определяются по ключевым словам repeat и until. Вместе с операторами цикла используются специальные команды:

— команда прерывания цикла;

— команда продолжения цикла.

Команда прерывания цикла применяется, если в процессе выполнения операторов тела цикла выясняется необходимость его завершения. Вот эта команда: Break;

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

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

Вот эта команда: Continue;

Справедливости ради стоит рассказать об ещё одном операторе, позволяющем изменить последовательность выполнения программы. Это оператор перехода: goto метка;

В качестве метки может использоваться любой допустимый идентификатор или число в диапазоне от 0 до 9999. Метку предварительно необходимо объявить в разделе описания переменных, но с помощью не ключевого слова var, а ключевого слова label:

label меткa;

или

label список меток;

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

Операторы организации ветвлений

Оператор ветвления if — одно из самых популярных средств, изменяющих естественный порядок выполнения операторов программы. Вот его общий вид:

if < условие> then

< оператор 1>

else

< оператор 2> ;

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

Логика работы оператора if очевидна: выполнить оператор 1, если условие истинно, и оператор 2, если условие ложно. Поясним сказанное на примере:

program Console;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

A, B, C: Integer;

begin

A:= 2;

B:= 8;

if A > B then

C:= A

else

C:= B;

Writeln ('C=', C);

Writeln ('Press Enter to exit…');

Readln;

end.

В данном случае значение выражения, А > В ложно, следовательно на экране появится сообщение C=8.

У оператора if существует и другая форма, в которой else отсутствует:

if < условие> then < оператор>;

Логика работы этого оператора if еще проще: выполнить оператор, если условие истинно, и пропустить оператор, если оно ложно. Поясним сказанное на примере:

program Console;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

A, B, C: Integer;

begin

A:= 2;

B:= 8;

C:= 0;

if A > B then C:= A + B;

Writeln ('C=', C);

Writeln ('Press Enter to exit…');

Readln;

end.

В результате на экране появится сообщение С=0, поскольку выражение, А > В ложно и присваивание С:= А + В пропускается.

Один оператор if может входить в состав другого оператора if. В таком случае говорят о вложенности операторов. При вложенности операторов каждое else соответствует тому then, которое непосредственно ему предшествует. Например:

program Console;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

A: Integer;

begin

Readln (A);

if A >= 0 then

if A <= 100 then

Writeln ('A попадает в диапазон 0 — 100. ')

else

Writeln ('A больше 100. ')

else

Writeln ('A меньше 0. ');

Writeln ('Press Enter to exit…');

Readln;

end.

Оператор ветвления case:

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

case < переключатель> of

< список? 1 значений переключателя>: < оператор 1> ;

< список? 2 значений переключателя>: < оператор 2> ;

< список? N значений переключателя>: < оператор N> ;

else < оператор N+1>

end;

Оператор case вычисляет значение переключателя (который может быть задан выражением), затем последовательно просматривает списки его допустимых значений в поисках вычисленного значения и, если это значение найдено, выполняет соответствующий ему оператор. Если переключатель не попадает ни в один из списков, выполняется оператор, стоящий за словом else. Если часть else отсутствует, управление передается следующему за словом end оператору.

Переключатель должен принадлежать порядковому типу данных. Использовать вещественные и строковые типы в качестве переключателя не допускается.

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

program Console;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

Day: 1. 31;

begin

Readln (Day);

case Day of

20. 31: Writeln ('День попадает в диапазон 20 — 31. ');

1, 5. 10: Writeln ('День попадает в диапазон 1, 5 — 10. ');

else Writeln ('День не попадает в заданные диапазоны. ');

end;

Writeln ('Press Enter to exit…');

Readln;

end.

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

program Console;

{$APPTYPE CONSOLE}

uses

SysUtils;

var

Day: 1. 31;

begin

Readln (Day);

case Day of

1, 5. 10: Writeln ('День попадает в диапазон 1, 5 — 10. ');

20. 31: Writeln ('День попадает в диапазон 20 — 31. ');

else Writeln ('День не попадает в заданные диапазоны. ');

end;

Writeln ('Press Enter to exit…');

Readln;

end.

Операторы организации цикла

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

Цикл можно организовать при помощи условного оператора и оператора GOTO. Для этого, например, в процедуре можно объявить целочисленную переменную, которая будет служить счетчиком. Перед входом в группу операторов, подлежащих многократному выполнению (такая группа операторов называется телом цикла), счетчику присваивается значение 0. Затем следуют операторы тела цикла, среди которых необходимо обязательно разместить оператор, увеличивающий значение счетчика на 1. Завершает всю конструкцию условный оператор, в котором проверяется значение счетчика. Если оно еще не превышает заранее заданного предельного значения, то при помощи оператора GOTO осуществляется переход к первому оператору тела цикла. Операторы тела цикла выполнятся еще раз, и так будет продолжаться до тех пор, пока значение счетчика не превысит заданный предел.

Однако, как уже говорилось выше, оператор безусловного перехода GOTO является своего рода операторным изгоем и применять его благопристойным программистам не рекомендуется. Кроме того, Visual Basic содержит четыре удобных в использовании оператора цикла: FOR NEXT, FOR EACH NEXT, DO LOOP и WHILE WEND. Некоторые из этих операторов имеют несколько вариантов синтаксиса и позволяют организовать какие угодно циклы, так что вам нет необходимости пользоваться неправильным оператором GOTO. Далее в этом разделе будут описаны все упомянутые конструкции.

Оператор цикла FOR NEXT повторяет группу операторов указанное количество раз. Ниже приведен его полный синтаксис.

FOR счетчик = начало ТО конец [STEP шаг]

[операторы]

[EXIT FOR]

[операторы]

NEXT [счетчик]

где:

счетчик — обязательный элемент; переменная числового типа, используемая в качестве счетчика цикла; переменная не может быть типа Boolean и не может быть элементом массива.

начало и конец — обязательные элементы; выражения, задающие начальное и конечное значение счетчика цикла.

шаг — необязательный элемент; если он используется, то указывается после ключевого слова STEP; этот элемент задает величину приращения счетчика, то есть при каждом прохождении цикла счетчик будет увеличиваться на шаг, пока не достигает значения 1 конец; приращение шаг может быть как положительным, так «и отрицательным; значение 0 задает бесконечный цикл (в этом случае нужно предусмотреть свой собственный вариант выхода из цикла); если шаг не указан, то приращение считается равным 1.

операторы — блок операторов, составляющих тело цикла; ни один из операторов тела цикла не должен менять значение счетчика цикла (это может привести к непредсказуемым последствиям);

EXIT FOR — необязательная конструкция; если присутствует, то при получении управления осуществляет переход за пределы оператора FOR NEXT (прерывает выполнение оператора цикла); при помощи конструкции EXIT FOR можно запрограммировать альтернативный вариант выхода из цикла (например, при достижении какоголибо условия, в том числе для выхода из бесконечных циклов); используется в сочетании с условными операторами.

Конструкция NEXT служит для завершения оператора цикла. После ключевого слова NEXT можно указать переменную цикла счетчик, ту же самую, что и в заголовке цикла (после ключевого слова FOR). Это делать не обязательно, но настоятельно рекомендуется. Иначе вы обязательно запутаетесь, особенно при использовании вложенных циклов.

Оператор цикла FOR EACH NEXT выполняет блок операторов, составляющих тело цикла, для всех элементов массива или набора (коллекции). Синтаксис этого оператора следующий:

FOR EACH элемент IN группа

[операторы]

[EXIT FOR]

[операторы]

NEXT [элемент]

где:

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

группа — имя массива или коллекции (набора).

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

В этом примере оператор цикла FOR EACH NEXT используется для итерации по элементам набора открытых в данный момент форм. Переменная цикла MyForm объявлена как переменная объектного типа FORM. Коллекция всех открытых форм называется FORMS. Таким образом, в приведенном выше примере в операторе цикла проверяется свойство Caption всех открытых в данный момент форм. Если среди открытых форм есть форма, имеющая подпись (Caption) Форма2, то на экран выдается соответствующее сообщение и цикл прерывается.

Наиболее гибким и удобным в семействе операторов цикла является оператор DO… LOOP. Существует два варианта синтаксиса этого оператора.

DO [WHILE условие] 'Первый вариант

[операторы]

[EXIT DO]

[операторы]

LOOP

DO 'Второй вариант

[операторы]

[EXIT DO]

[операторы]

LOOP [WHILE условие]

Процедуры и функции

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

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

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

— заголовка подпрограммы;

— раздела объявления меток;

— раздела объявления констант;

— раздела объявления типов;

— раздела объявления переменных;

— раздела процедур и функций;

— тела подпрограммы.

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

Заголовок процедуры имеет вид: Procedure имя (параметры);

Заголовок функции: Function имя (параметры): тип;

Слова Procedure и Function являются зарезервированными.

Массивы

Объявление массива.

Массив, как и любая переменная программы, перед использованием должен быть объявлен в разделе объявления переменных.

В общем виде инструкция объявления одномерного массива выглядит следующим образом:

имя — имя массива;

array — зарезервированное слово языка Delphi, обозначающее, что объявляемое имя является именем массива;

нижний_индекс и верхний_индекс — целые константы, определяющие диапазон изменения индекса элементов массива и, неявно, количество элементов (размер) массива;

тип — тип элементов массива.

В общем виде инструкция объявления двумерного массива выглядит так:

Имя: array [НижняяГраница1. ВерхняяГраница1, НижняяГраница2. ВерхняяГраница2] of Тип;

Имя — имя массива;

array — слово языка Delphi, указывающее, что объявляемый элемент данных является массивом;

НижняяГраница1, ВерхняяГраница1, НижпяяГраница2, ВерхняяГраница2 — целые константы, определяющие диапазон изменения индексов и, следовательно, число элементов массива;

Тип — тип элементов массива.

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

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

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

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

Имя: array [нижний_индекс. верхний_индекс] of тип = (список); список — разделенные запятыми значения элементов массива.

Операции с массивами

Типичными операциями при работе с массивами являются:

— вывод массива;

— ввод массива;

— поиск максимального или минимального элемента массива;

— поиск заданного элемента массива;

— сортировка массива.

Вывод массива

Под выводом массива понимается вывод на экран монитора (в диалоговое окно) значений элементов массива.

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

Пример:

const

NT = 5;

var

team: array [1. NT] of string[10] =('Зенит', 'Динамо', 'Ротор', 'Спартак', 'СКА'

procedure TForml. ButtonlClick (Sender: TObject);

var

st: string;

i: integer;

begin

for i: =l to NT do

st:= st + IntToStr (i)+ ' '+ team[i] + #13;

end;

Ввод (вывод) массива

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

Данны в массив можно вводить (выводить) с помощью компонентов StringGrid и Memo (вкладка Additional).

Записи

Ключевое слово Record один из самых полезных, и отличительных особенностей Delphi (и языка Паскаля). Оно обеспечивает средство сбора в одну структуру набора различных типов данных.

На каждое поле в записи ссылаются следующим способом record. field.

Когда объявлено, опция Packed, Delphi минимизирует память, отведенную под запись.

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

Есть два основных типа полей записи, как показано в двух синтаксических типах:

1. Простое объявление поля

Это стандартные объявления переменных Delphi, типа:

size: Integer;

за исключением того, что их размер должен быть определен. Например:

description: string[20];

потому, что Delphi должен знать точный объём памяти необходимый этому полю в записи.

2. Выбираемые (Различные) разделы поля

Они должны всегда следовать за любыми основными объявлениями полей (ключевое слово Case не имеет закончившего слова End;).

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

По умолчанию, поля в записи выравниваются по Byte и Word границам. Для обоих типов записи, опция packed позволяет ей быть изменённой, чтобы уменьшить требуемый объём памяти.

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

В отличие от Объектно-ориентированных языков подобно Java, Тип Record в Delphi обеспечивает лучший механизм выполнения для передачи подобных групп данных чем классы данных.

Указатели

Указатель — величина, которая указывает на некий адрес в памяти, где хранятся некоторые данные. Указатели бывают двух видов: типизированные, указывающие на данные определенного типа, и нетипизированные (типа pointer), которые могут указывать на данные произвольного типа. Наиболее часто указатели используются при работе:

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

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

Для первого случая выделение памяти можно осуществить при помощи процедуры: procedure New < имя указателя>); Во втором случае выделение памяти для новой записи воспользуемся New (pr), соответственно описать ее:

New (pr);

With pr^ do

Begin

R1: =… ;

R2: =… ;

S: =… ;

End;

В Object Pascal существует предопределенные типы указателей переменных: AnsiString, ByteArray, Currency Extended, Ole Variant, ShortString, TVarRec, Variant, WideString, TWordArray. Для обозначения типа указателя достаточно соответственно поставить «P» перед типом переменной (пример: PByteArray).

Для объявления своего указателя на любой тип используется конструкция вида: type < имя указателя> = ^< тип данных>.

Списки

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

В частности объекты TList могут быть отсортированы. Эта сортировка может быть с использованием любых выбранных критериев. Например, список может содержать набор объектов, которые имеют строку и численные поля. Вы можете отсортировать список по строке, по числу, по обоим, с возрастанием или убыванием, как Вы желаете. И пересортировать позже по другим критериям.

Показанный пример кода показывает такую сортировку.

Ключевые свойства и методы упомянуты ниже.

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

Свойство Count — Число элементов (указателей) в списке. Может быть прочитано или записано. Если размер уменьшен в результате изменения значения Count, то удаляются элементы в конце списка.

Свойство Items — Позволяет обращаться к элементам в списке. Например, myList. Items[2]; возвращает 3_ий элемент в списке. Это свойство, заданное по умолчанию, вышеупомянутое может быть упрощено до myList[2];.

Свойство List — Возвращает элементы в массиве.

Метод Add — Добавляет элемент в конец списока.

Метод Assign — Заменяет список содержанием другого списка.

Метод Clear — Удаляет все элементы списка, устанавливая Count в 0.

Метод Delete — Удаляет элемент из списка по его позиции в списке.

Метод Remove — Удаляет элемент из списка по его объектному указателю.

Метод Exchange — Меняет позиции двух элементов

Метод Move — Перемещает элемент в новую позицию списка.

Метод Insert — Вставляет новый элемент в список в данную позицию.

Метод First — Получает первый элемент в списке.

Метод Last — Получает последний элемент в списке.

Метод Sort — Сортирует список в соответствии с вашими указанными критериями. Сортировка списка проводится внутри TList, но каждая пара элемента сравнивается, вызывая функцию, которую вы указали для этого метода.

Метод IndexOf — Выдает позицию указанного объекта в списке.

Модули

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

К системным модулям относятся System, SysUtils, ShareMem, Math. В них содержатся наиболее часто используемые в программах типы данных, константы, переменные, процедуры и функции. Модуль System — это сердце среды Delphi; содержащиеся в нем подпрограммы обеспечивают работу всех остальных модулей системы. Модуль System подсоединяется автоматически к каждой программе и его не надо указывать в операторе uses.

Модули визуальных компонентов (VCL — Visual Component Library) используются для визуальной разработки полнофункциональных GUI_приложений — приложений с графическим пользовательским интерфейсом (Graphical User Interface). Эти модули в совокупности представляют собой высокоуровневую объектно-ориентированную библиотеку со всевозможными элементами пользовательского интерфейса: кнопками, надписями, меню, панелями и т. д. Кроме того, модули этой библиотеки содержат простые и эффективные средства доступа к базам данных. Данные модули подключаются автоматически при помещении компонентов на форму, поэтому вам об этом заботиться не надо. Их список слишком велик, поэтому мы его не приводим.

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

2. Специальная часть

2.1 Общая постановка задачи

Разработать программный комплекс «Автоматизирываное рабочие место дистпечера автопарка», который обеспечит создание и все операции по ведению базы данных, включающих в себя следующие файлы:

1. Сотрудники (Фамилия Имя Очество, Дата рождения, должность, образование, стаж);

2. Зарплата (Фамилия Имя Очество, должност, зарплата за год, зарплата за месяц);

3. Маршруты (номер маршрута, маршрут, начальная и коечная станции, Время начало и окончания следования)

4. Машины (Модели, дата поступления, последние ТО).

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

1. Поиск сотрудника по следующим полям: Ф.И.О., адресс, должность;

2. Вывод количества сотрудников;

3. Вывод максимального стажа среди сотрудников;

4. Вывод максимальной зарплаты за месяц;

5. Распечатка необходимых машин на принтере.

Описание программ и процедур комплекса

Описание процедур и функций комплекса приведено в таблице 2.1.

Таблица 2.1. — Описание процедур и функций программного комплекса

Процедура/программа

Назначение

Unit1

Окно ввода пароля

Unit2

Основное окно программы

Unit3

Бд сотрудников

Unit4

Бд Зарплаты

Unit5

Бд Машин

Unit6

Бд маршрутов

Описание наборов данных

Описание наборов данных представлены в таблице 2. 2

Таблица 2.2 - Описание наборов данных

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

Физическое имя

Название

Тип

Том

Marsh

Marsh. DB

Маршруты

Типизированный

Record

C:

mashini

mashini. DB

Машины автопарка

Типизированный

Record

C:

zarplata

Zarplata. DB

Зарплта сотрудников

Типизированный

Record

C:

Sotrdniki

Sotrudniki. DB

Сотрудники

Типизированный

Record

C:

Структура записей файлов

Структура записей файла «БД сотрудники» описана в таблице 3.

Таблица 2.3 - Структура записи файла

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

Назначение

Тип

Длина

F.I. O

Фамилия Имя Отчество

String

30 байт

Data_rozhdeniya

Дата Рождения

Real

16 байт

Telephone

Тедефон

String

8 байт

Dolzhnost

Должность

String

15 байт

Obraz

Образование

String

10 байт

Adress

Адресс

String

30 байт

Структура записей файла «Б Д Марка Авто» описана в таблице 4.

Таблица 2. 4 - Структура записи файла

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

Назначение

Тип

Длина

Data postuplenya

Дата поступления

String

15 байта

Data posled TO

Дата последнего ТО

String

4 байт

Model

Модель

String

15 байт

Структура записей файла «БД Поставщики» описана в таблице 5.

Таблица 2.5 — Структура записи файла

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

ПоказатьСвернуть
Заполнить форму текущей работой