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

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 22.03.2016
Размер файла 188,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

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

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

Наиболее распространенные последовательные конфигурации -- “кольцо”, “цепочка”, “звезда с интеллектуальным центром”, “снежинка”.

В конфигурациях “кольцо” и “цепочка” для правильного функционирования ЛВС необходима постоянная работа всех блоков РМА. Чтобы уменьшить эту зависимость, в каждый из блоков включается реле, блокирующее блок при неисправностях. Для упрощения разработки РМА и ПК сигналы обычно передаются по кольцу только в одном направлении. Каждая станция ЛВС располагает памятью объемом от нескольких битов до целого пакета. Наличие памяти замедляет передачу данных в кольце и обусловливает задержку, длительность которой зависит от числа станций. возвращаясь снова к станции - отправителю, отправитель в ходе обрпаботки пакета может установить некоторый индикатор подтверждения. Этот индикатор может служить для управления потоком и (или) квитирования, и должен как можно быстрее вернуться к источнику. Управление потоком предполагает удаление пакетов из кольца станцией - получателем или после завершения полного круга -- станцией - отправителем. Поскольку любая станция может выйти из строя и пакет может не попасть по назначению, обычно бывает необходим специальный “сборщик мусора”, который опознает и уничтожает такие “заблудившиеся” пакеты.

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

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

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

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

2.3 Общие принципы функционирования ЛВС типа Ethernet

Сети этого типа являются наиболее распространенными. Кроме того, сеть Ethernet фирмы Xerox можно считать родоначальницей всех ЛВС, так как это была первая действующая сеть, появившаяся в 1972 г.. Удачные проектные решения быстро сделали ее популярной, особенно после того, как вокруг проекта Ethernet, объединились фирмы DEC, Intel и Xerox (DIX). В 1982 г. эта сеть была принята в качестве основного стандарта, сначала комитетом 802 IEEE, а затем -- ассоциацией ЕСМА (European Computer Manufactures Association).

Сети данного типа имеют топологию типа “шина”. Средой передачи является коаксиальный кабель сопротивлением 50 Ом. Скорость передачи информации -- 10 Мбит/с. Метод доступа -- недетерминированный, CSMA/CD. Максимальная, теоретически возможная длина таких сетей не может превышать 6,5 км, а на практике составляет около 1 -- 1,25 км. Эти ограничения связаны с особенностями метода доступа. Узлы сети являются равноправными и подключаются к общему кабелю, благодаря которому все узлы практически одновременно “слышат” передаваемую по нему информацию, однако, получает ее только тот узел, которому она адресована. Термин “слышат” использован не случайно, так как сети данного типа ведут начало от радиосетей типа ALOHA.

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

Специфика метода CSMA/CD ракладывает известные ограничения на реализацию продуктов на этих сетях и их применение. Ясно, что при большом числе станций и их интенсивной работе, вероятность возникновения коллизий резко возрастает, а КПД сети падает. Как видно из приведенной ниже таблицы, длина информации в пакете Ethernet может составлять от 64 до 1518 байт.

Различная длина объясняется особенностями протокола CSMA/CD. В принципе, этот протокол не накладывает ограничений на максимальную длину пакета. Однако, если пакеты будут очень длинные, это резко увеличит вероятность коллизий. Поэтому и установлена максимальная разумная длина, равная 1518 байтам. От минимальной длины пакета решающим образом зависит общая протяженность сети. При минимальной длине пакета, равной 64 байтам, (или 64 х 8 = 512 битам), и скорости передачи 10 Мбит/с, время передачи пакета равно 51,2 мкс. Условия установления коллизии в протоколе CSMA/CD требуют, чтобы время время передачи пакета было более чем вдвое больше, чем время распространения сигнала между наиболее удаленными станциями. При минимальной длине пакета в 64 байта максимальное расстояние между станциями составляет около 2,8 км.

Следует отметить, что существуют два варианта пакета Ethernet:

“толстый” Ethernet (Thick Ethernet). Он предполагает использование в качестве средв передачи специального толстого (отсюда и его название) коаксиального кабеля диаметром около 2,5 см. Этот кабель нетехнологичен, требует дополнительного оборудования, но зато позволяет увеличить расстояние между абонентами сети:

500 м -- при использовании стандартных приемопередатчиков;

1000 м -- при использовании приемопередатчиков фирмы 3Com;

“тонкий” Ethernet (Thin Ethernet). Этот вариант Ethernet предполагает использование в качестве среды передачи тонкого коаксиального кабеля марки RG-58A/U. Этот тип Ethernet считается классическим и наиболее распространенным. Используемый в нем кабель хорошо гнется, поэтому его можно подвести непосредственно к компьютерам и подключить к сетевым платам с помощью Т- коннекторов. Однако, он может обеспечить меньшие расстояния между абонентами по сравнению с “толстым” Ethernet:

185 м -- при использовании стандартных приемопередатчиков;

304 м -- при использовании приемопередатчиков фирмы 3Com.

В настоящее время наиболее распространенными сетями типа Ethernet для ПК являются сети Ethernet фирмы 3Com (США) и Novell Ethernet фирмы Novell (США). Обе сети подходят для создания различных офис-систем. В данном проекте рассматривается использование ЛВС типа Ethernet в качестве аппаратной среды функционирования системы. Определяющим фактором при выборе типа ЛВС послужило оптимальное соотношение цена - производительность , а также высокая степень ремонтопригодности ввиду доступности адаптеров .

2.4 Выбор операционной системы для оффисной ЛВС

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

В простых локальных сетях функции выполняются не на серверной основе, а по принципу соединения рабочих станций друг с другом (каждый с каждым). Примерами таких сетей являются LANtastic компании Artisoft, LANstart компании D-Link System, NET/30 компании Invisible Software, сетевая ОС WebNos компании Websorp. Эти сетевые серверы предназначены для компьютеров IBM PC, а также их аналогов, и представляют собой надстройку над операционной системой MS DOS. Все они дают возможность группам пользователей совместно применять накопители на жестких дисках и принтеры, не приобретая специальные файловые серверы (файл-серверы) и дорогое сетевое программное обеспечение.

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

В нашей стране получила распространение сеть NetWare Lite фирмы Novell. Эта сеть предназначена для поддержки систем малого бизнеса (небольшие офисы, больницы, брокерские конторы, сберегательные банки и т.п.). Они представляют собой децентрализованную сетевую систему с равными правами всех сетевых станций. В сеть соединяются 2 -- 25 пользователей не на серверной основе. Каждая рабочая станция может быть одновременно сервером для одной или нескольких рабочих станций. Преимуществом реализации такой системы является то, что сеть может иметь столько серверов, сколько требуется, причем количество пользователей (клиентов) и серверов может меняться изо дня в день в соответствии с потребностями рабочей группы.

В качестве рабочих станций в NetWare Lite могут быть использованы любые компьютеры, совместимые с IBM PC XT/AT. Система ориентирована на MS DOS (версии 3.Х, 4.Х, 5.0, 6.0), поддерживает MS Windows, очень проста в инсталляции и эксплуатации, дает возможность использовать такие общие ресурсы, как программы, файлы и принтеры. В то же время эта сетевая ОС имеет достаточно развитую систему защиты с помощью паролей и привилегий пользователя. NetWare Lite поддерживает протоколы IPX/SPX, а также, NetBIOS, поэтому легко стыкуется с другими системами NetWare.

Система NetWare Lite может функционировать на сетях типа Ethernet и Arcnet.

В ЛВС развитой архитектуры функции управления выполняет сетевая операционная система, устанавливаемая на более мощном, чем рабочие станции, компьютере -- файловом сервере. Серверные сети можно разделить на сети среднего класса (до 100 рабочих станций) и мощные (корпоративные) ЛВС, объединяющие до 250 рабочих станций и более. Основным разработчиком сетевых программных продуктов для серверных ЛВС является фирма Novell. Семейство основных сетевых операционных систем этой фирмы содержит продукты NetWare версий 2.Х, 3.Х.

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

2.5 Разработка программного обеспечения для системы управления работой коммерческой компании

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

2.5.1 возможности программы

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

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

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

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

2.5.3 Требования к аппаратуре

IBM PC XT/AT совместимый компьютер;

Печатающее устройство совместимое с EPSON;

MS-DOS 3.31 и выше;

700Kb свободного пространства на диске;

Наличие в файле CONFIG.SYS строки FILES=NN, где NN - число не более 50.

2.5.4 Установка программы

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

2.5.5 Работа с данными

1. Меню установки

Включает следующие подменю :

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

реквизиты - изменения реквизитов коммерческой компании.

курс доллара - ввод курса валюты.

2. Поступление нового товара на склад.

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

3. Выписка накладных

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

4. Просмотр данных.

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

склад - служит для просмотра имеющегося товара на складе.

сделки - содержит информацию о накладных.

приходы - информация о приходах товара.

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

выручка - подсчет кассы по заданной дате.

5. Работа с архивом.

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

2.6 Средства разработки

2.6.1 Компилятор Borland Pascal 7.0

Компилятор Borland Pascal 7.0 позволяет создавать программы, которые могут выполнятся в реальном и защищенном режимах DOS и в среде WINDOWS. Таким образом, эту версию компилятора могут использовать программисты, на любом типе ЭВМ, включая IBM PC/XT. Нопомню, что с шестой версии комилятора BP введена такая новинка, как объектно-ориентированная библиотека Turbo Vision 2.0, постовляемая вместе с компилятором, для создания DOS приложений.

2.6.2 Объектно-ориентированная библиотека Turbo Vision

Новая версия объекно-ориентированной библиотеки для создания DOS-приложений TURBO VISION 2.0 содержит ряд новых объектов и изменений : объект TValidator и объекты построенные на его основе, испольэуются совместно со строками ввода для проверки введенных данных. Реализованы объекты для проверки вхождения данных в указанный диапозон, ограничения вводимых данных, но самое ценное - это объекты, позволяющие вводить информацию на основе шаблонов, задаваемых в формате Paradox и dBASE.

И все же, что такое Turbo Visoin 2.0 ? TV - это мощная объектно-ориентированная оболочка для оконных программ. Borland International создала Turbo Vision, чтобы убереч программистов от бесконечного создания оболочек для построения прикладных программ.

Turbo Vision - это объектно-ориентированная библиотека, включающая:

многократные перекрывающиеся окна с изменяемыми размерами;

выпадающие меню;

поддержку мыши;

диалоговые окна;

кнопки, полосы скроллинга, окна ввода, зависимые и независимые кнопки;

Используя TV можно разрабатывать программы с незначительными усилиями.

2.6.3 Элементы Turbo Vision

Turbo Vision - это объединение видимых элементов, событий и невидимых объектов.

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

Панель экрана - это объект TDesktop, создающий фоновое изображение рабочей панели экрана. Заполнение панели экрана осуществляется другими видимыми элементами, такими как TWindow, TDialog и т.п. Обычно владельцем группы TDesktop является объект TApplication или его потомки.

Окна. Для создания и использования окон в Turbo Vision предусмотрен объект TWindow. Обычно этот объект владеет объектом TFrame и поэтому очерчивается прямоугольной рамкой со стандартными кнопками изменения размера и закрытия. Если окно имеет несколько видимых элементов, его обработчик событий интерпре-тирует нажатие на клавиши Tab и Shift-Tab как команду активизации следующего (предыдущего) видимого элемента.

Диалоговые окна. Объект TDialog порожден от TWindow и предназначен для реализации взаимодействия с пользователем. В отличие от TWindow диалоговое окно не может изменять свой размер, но может перемещаться по экрану. Его обработчик событий генерирует команду cmCancel в ответ на нажатие клавиши Esc (или воздействие мыши на кнопку закрытия) и команду cmDefault в ответ на нажатие Enter.

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

Строки ввода. Для ввода различных текстовых строк с клавиатуры используется объект TInputLine. Использование этого объекта дает в распоряжение пользователя мощные возможности встроенного редактора, обрабатывающего алфавитно-цифровые клавиши, клавиши перемещения курсора влево/вправо, а также клавиши Backspace, Delete, Insert, Home, End.

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

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

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

Например, клавиша F1 вызывает диалоговое окно, содержащее подсказку о создании программы.

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

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

Для создания системы управления работой коммерческой компании (СУРКК) ипользовалась стандартнаю объектно-ориентированную библиотека TURBO VISION. Именно она, поскольку без особых усилий была создана диалоговая программа с пользовательским интерфейсом высокого уровня, облегчившая взаимодеуствие пользователя с данными.

2.6.4 Описание процесса разработки

Начало создания.

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

BEGIN

{Подготовка к работе}

{Работа}

{Завершить работу}

END.

Если попытаться выполнить эту программу, ничего не произойдет. Так обстоит дело с Borland Pascal'ем, но не так в Turbo Vision ! Для любой прикладной программы Turbo Vision создает минимальную программную реализацию, которую затем можно постепенно наращивать в ходе детализации программы. Вот начальный вариант программы с использованием Turbo Vision.

Uses App;

Var

SklVks : TSklVks;

Begin

SklVks.Init;

SklVks.Run;

SklVks.Done;

End.

В этой программе объявлено использование стандартного для Turbo Vision модуля APP (от Application - прикладная программа). Такое объявление открыло доступ к мощным возможностям Turbo Vision. Затем объявили экземпляр объекта TApplication, т.е. объединение данных и методов обработки этик данных (процедур, функций, конструкторов, деструкторов). В объекте TApplication предусмотрены методы INIT, RUN и DONE. Вызов этих методов и составляет исполняемую часть программы. Если запустить эту программу, то на экран появится изображение (см. рис 1):

Как видно, даже простейшая программа “знает”, как создать экран, распознать команду ALT-X и может работать с мышью. Совсем не плохо для трех исполняемых операторов, не так ли ? Такие возможности доступны потому, что в объекте TApplication предусмотрены соответствующие методы.

Простейшая программа не может выполнять никаких других действий, кроме уже перечисленных, так как именно эти действия запрограммированы в методах Init и Run объекта TApplication. В ходе их выполнения на экране создается изображение, имеющее три зоны : верхняя строка (строка меню), нижняя строка (строка статуса) и вся остальная часть (рабочая область).

Формирование меню и строки статуса.

Теперь нужно создать основные элементы программы - строку меню и строку состояния. Для этого я модифицировал стандартное поведение объекта SKLVKS. Я перекрыл (переопределил) унаследованные от TApplication методы InitStatusLine и InitMenuBar. Метод InitStatusLine я перекрыл так, чтобы программа в строке состояния вывела подсказки : выхода из программы, справка и меню. При нажатии мышкой или при нажатии горячей клавишу на соответствующую надпись ваполнится связанная с ней процедура. Например при нажатии на F1 на экране появится сообщение о создании СУРКК или при нажатии на F10 активизируется строка меню. Метод InitMenuBar перекрал так, чтобы организовать меню для работы с данными. (см. рис 2)

USES APP,OBJECTS,MENUS,DRIVERS,VIEWS;

Const

cmPrnSklad = 200;

cmSklad = 201;

cmZak = 203;

cmPriceLst = 204;

cmHelp_About = 205;

cmPrint = 206;

cmPrihod = 207;

cmSbros = 208;

cmNext = 209;

cmMore = 213;

cmSKL = 214;

cmDostup = 215;

cmDobavka = 216;

cmRekviz = 217;

cmKurs = 218;

cmTemp = 219;

cmPriceList = 220;

cmSdelka = 221;

cmPrih = 222;

cmVozvrat = 223;

cmKorPrihod = 224;

cmDolgi = 225;

cmUdal = 226;

cmMoney = 227;

cmArchive = 228;

Type

TSklVks = object(TApplication)

Procedure InitStatusLine ; Virtual;

Procedure InitMenuBar ; Virtual;

End;

Procedure TSklVks.InitStatusLine; { создает строку статуса }

var

R: Trect;

Begin

GetExtent(R);

R.A.Y:=pred(R.B.Y); { координаты строки статуса }

StatusLine:=New(PStatusLine,Init(R,NewStatusDef(0,$ffff,

NewStatusKey(' ~ALT-X~-Конец работы',kbAltX,cmQuit,

NewStatusKey(' ~F1~-Справка',kbf1,cmHelp_About,

NewStatusKey(' ~F10~-Меню',kbf10,cmMenu,

nil))),nil)));

END;

Procedure TSklVks.InitMenuBar; { Создает строку меню }

var

R: Trect;

Begin

GetExtent(R);

R.B.Y :=succ(R.A.Y); { координаты строки меню }

MenuBar:=New(PMenuBar,Init(R,NewMenu(NewSubMenu('~Д~анные',hcNoContext,

NewMenu(

NewItem('~С~клад',' ',kbNokey,cmSklad,hcNoContext,

NewItem('С~д~елки',' ',kbNoKey,cmSdelka,hcNoContext,

NewItem('~П~риходы',' ',kbNoKey,cmPrih,hcNoContext,

NewItem('Дол~г~и',' ',kbNoKey,cmDolgi,hcNoContext,

NewItem('Выруч~к~а',' ',kbNoKey,cmMoney,hcNoContext,

NewLine(

NewItem('~В~ыход','ALT-X',kbAltX,cmQuit,hcNoContext,nil)))))))),

NewSubMenu('~К~лиент',hcNoContext,(NewMenu(

NewItem('~П~родажа','',kbNoKey,cmZak,hcNoConText,

NewItem('~В~озврат','',kbNoKey,cmVozvrat,hcNoConText,

nil)))),

NewSubMenu('~П~оставщик',hcNoContext,NewMenu(

NewItem('Новый при~х~од','',kbNoKey,cmPrihod,hcNoContext,

NewItem('~К~орректировка прихода','',KbNoKey,cmKorPrihod,hcNoContext,

nil))),

NewSubMenu('Пе~ч~ать',hcNoContext,NewMenu(

NewItem('~О~тчет о наличии товара',' ',kbNoKey,cmPrnSklad,hcNoContext,

NewItem('Прайс ~л~ист',' ',KbNoKey,cmPriceList,hcNoContext,

nil))),

NewSubMenu('~А~рхив',hcNoContext,NewMenu(NewItem('~Р~абота с архивом',

' ',kbNokey,cmArchive,hcNoContext,nil)),

NewSubMenu('~У~становки',hcNoContext,NewMenu(

NewItem('~П~ароль',' ',kbNoKey,cmDostup,hcNoContext,

NewItem('Рекви~з~иты',' ',kbNoKey,cmRekviz,hcNoContext,

NewItem('Кур~с~ доллара',' ',kbNoKey,cmKurs,hcNocontext,

nil)))),

NewSubMenu('~И~нформация',hcNoContext,NewMenu(

NewItem('О Скла~д~е ... ','',kbNokey,cmHelp_About,hcNoContext,

nil)),

nil))))))))));

end;

Var

SKLVKS : TSKLVKS;

BEGIN { Основная программа }

SklVks.Init;

SklVks.Run;

SklVks.Done;

END. { Конец основной программы }

Обработка команд

Теперь нужно сделать так, чтобы при выборе какого-либо пункта меню выполнялась соответсвующая процедура. При выборе пунктов меню генерирует событие, которое обрабатывается подпрограммой - обработчиком событий. Для этого ч перекрыл стандартный обработчик событий HandleEvent объекта TApplication. Для этого в описании объекта TSklVks добавил еще одну строку ...

Type

TSklVks = Object(TApplication)

Procedure HandleEvent(var Event : Tevent); virtual;

End;

и поместил в раздел объявлений текс новой подпрограммы :

Procedure TSklVks.HandleEvent(var Event : TEvent);

Begin

TApplication.HandleEvent(Event);

if Event.What = evCommand then

case Event.Command of

cmPrnSklad : Begin

PrintSklad;

End;

cmSklad : begin

Sklad;

end;

cmZak : Begin

Zak;

End;

cmHelp_About : Begin

Help_About;

End;

cmPrihod : Begin

Prihod;

End;

cmPrih : Begin

Prih;

End;

cmDostup : begin

Dostup;

end;

cmRekviz : begin;

rekviz;

end;

cmKurs : Begin

Kurs;

end;

cmPriceList : Begin

GetDate(yyyy,mm,dd,ww);

PriceList(dd,mm,yyyy);

ClearEvent(Event);

end;

cmSdelka : Begin

Sdelki;

End;

cmVozvrat : Begin

Vozvrat;

End;

cmKorPrihod : Begin

KorPrihod;

End;

cmDolgi : Begin

Dolgi;

End;

cmMoney : Begin

Money;

End;

cmArchive : Begin

Arc_;

End;

else

ClearEvent(Event);

end;

ClearEvent(Event)

End;

Программирование диалоговых запросов

В обработчике событий TSklVks.HandleEvent я предусмотрел вызов нескольких процедур, с помощью которых реализуются конкретные действия. Начну с процедуры Prih. Ее задача - ввести данные о новом приходе. Очевидно, что данные будут храниться в файле, поэтому опишу сразу структуру данных. Данные выглядят в виде записи, которые состоят из полей. Например структура данных для приходов выглядит следующим образом :

(* Структура приходов *)

Type PPP = record

Number : LongInt; { номер прихода}

FirmName : String[22]; { фирма поставщик }

Date : String[10]; { дата прихода }

Kurs : Real;{ курс доллара ЦБ РФ на день прихода}

TotalItems : LongInt; { кол-во пришедших наименований}

SebSumma : Real;{ общая сумма прихода }

End;

(* Структура приходов для наименования}

Type PPPItems = Record

Number : LongInt; {ноиер наименования }

PrihodNum : LongInt; {номер прихода}

SkladNum : LongInt; {номер наименования на складе}

Name : String[lpname]; {наименование}

Rasf : String[lprasf]; {расфасовка}

Box : Integer; {кол-во штук в упаковке}

Kolvo : LongInt; {кол-во поступившего наименования}

SebPrice : Real; {себестоимость наименования}

Price : Real; {стоимость наименования}

SellTimes : Boolean; {зарезервировано}

End;

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

Var {ТИП ДАННЫХ}

PrihodData : PPP;

PrihodItemsData : PPPItems;

....{ТИП ДАННЫХ В ФАЙЛЕ}

PrihodFile : File of PPP;

PrihodItemsFile : File of PPPItems;

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

Ниже приведу текст модуля, cодержащего код для создания диалогового окна.

unit PRIHOD1;

interface

uses Drivers, Objects, Views, Dialogs, Validate;

type

PrihodDataRec = record

Field1 : String[10];

Field3 : String[13];

Field2 : String[22];

end;

PPrihodDataRec = ^PrihodDataRec;

{ TPrihodDataDialog }

PPrihodDataDialog = ^TPrihodDataDialog;

TPrihodDataDialog = object(TDialog)

constructor Init;

constructor Load(var S: TStream);

procedure HandleEvent(var Event: TEvent); virtual;

procedure Store(var S: TStream);

function Valid(Command : word): boolean; virtual;

destructor Done; virtual;

end;

Var

PRD : PrihodDataRec;

Const

RPrihodDataDialog : TStreamRec = (

ObjType: 12345; {<-- Insert a unique number >= 100 here!!}

VmtLink: Ofs(Typeof(TPrihodDataDialog)^);

Load : @TPrihodDataDialog.Load;

Store : @TPrihodDataDialog.Store);

implementation

{ TPrihodDataDialog }

constructor TPrihodDataDialog.Init;

var

R: TRect;

Control : PView;

begin

R.Assign(13, 3, 66, 17);

inherited Init(R, 'Приход / Ввод данных');

Flags := Flags and not wfMove;

R.Assign(24, 3, 36, 4);

Control := New(PInputLine, Init(R, 10));

Insert(Control);

PInputLine(Control)^.Validator := New(PPXPictureValidator, Init('{##}/{##}/{####}', true));

R.Assign(5, 3, 24, 4);

Insert(New(PLabel, Init(R, 'Дата : ', Control)));

R.Assign(24, 5, 39, 6);

Control := New(PInputLine, Init(R, 13));

Insert(Control);

PInputLine(Control)^.Validator := New(PPXPictureValidator, Init('*#[.#][#]', False));

R.Assign(5, 5, 24, 6);

Insert(New(PLabel, Init(R, 'Курс прихода : ', Control)));

R.Assign(24, 7, 48, 8);

Control := New(PInputLine, Init(R, 22));

Insert(Control);

R.Assign(5, 7, 24, 8);

Insert(New(PLabel, Init(R, 'Фирма поставщик : ', Control)));

R.Assign(7, 10, 18, 12);

Control := New(PButton, Init(R, '~С~брос', cmCancel, bfNormal));

Insert(Control);

R.Assign(23, 10, 41, 12);

Control := New(PButton, Init(R, '~Н~аименования', cmOK, bfDefault));

Insert(Control);

R.Assign(37, 3, 51, 4);

Control := New(PStaticText, Init(R, '[ ДД/ММ/ГГГГ ]'));

Insert(Control);

SelectNext(False);

end;

constructor TPrihodDataDialog.Load(var S: TStream);

begin

inherited Load(S);

end;

procedure TPrihodDataDialog.HandleEvent(var Event: TEvent);

begin

(*--

if Event.What = evMessage then

case Event.Command of

end; -*)

inherited HandleEvent(Event);

(*--

if Event.What = evMessage then

case Event.Command of

end; -*)

end;

procedure TPrihodDataDialog.Store(var S: TStream);

begin

inherited Store(S);

end;

function TPrihodDataDialog.Valid(Command : word): boolean;

var

Result : boolean;

begin

Result := inherited Valid(Command);

Valid := Result;

end;

destructor TPrihodDataDialog.Done;

begin

inherited Done;

end;

end.

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

PRD.Field1:=ShowDate; { Дата прихода - текущая дата}

Str(GetKurs:-1:2,PRD.Field3); { Курс прихода - текущий курс }

FillChar(PRD.Field2[1],22,' '); {Онулить фирму поставщика}

c1:=ExecuteDialog(New(PPrihodDataDialog,Init),@PRD); Метод ExecuteDialog (введен в седьмой версии Borlan Pascal) очень удобен для отображения диалоговых окон, т.к. он осуществляет автоматическую вставку и получения данных в ходе создания и закрвтия панели диалога. { Ввести на экран панель диалога}

После ввода курса, даты и фирмы поставщика нужно ввести собственно наименования. Для этого я создал диалоговое окно (см. модуль PRIH2.PAS), где вводится информации о наименовании (название, расфасовка, стоимость, себестоимость и т.д.). (см. рис. 3)

Введя данные, их надо сохранить. Чтобы это сделать надо сначала открыть файл, затем в его конец записать данные и в конце этот файл закрыть. Это делается приблизительно так ( подробно см. файл FIRMA.PAS):

OpenPrihodFile; { Процедура открытия файла см.модуль SklFiles.Pas}

Seek(PrihodFile,FileSize(PrihodFile)-1);

Write(PrihodFile,PrihodData);

ClosePrihodFile; { см. модуль SklFiles.Pas}

Если нажимается кнопка СБРОС, то вызывается процедура сброса прихода в которой все задействованные файлы данных усекаются до предыдущей длина (в начале процедуры PRIH запоминаются текущие длины файлов) при помощи стандартной процедуры TRUNCATE.

После успешного ввода данных появляется запрос о печати приходной накладной. Печать осуществляется стандартными средствами (см. процедуры PrintPrihodNakl и PrintEndOfPrihodNakl в модуле SklUnit). С помощью константы LST, компьютер связывается с печатающим устройством на LPT1, затем процедурами Writeln(LST,`строка для печати') данные выводятся на принтер. Все введенные данные помещаются в файлы данных : SKLAD.001 (Товар на складе) , PRIHOD.001 (Заголовки приходов), PRIHOD.002 (Пришедшие наименования). Затем пользователь получает доступ к следующим командам меню : Данные-Склад, Данные-Приходы, Печать-Прайс-Лист, Печать-Отчет о наличии товара на складе, Клиент-Продажа. Основной из вышеперечисленных команд является Клиент-Продажа. При помощи этой команды пользователь должен выписать накладную по заказу клиента. Реализовал эту команду так : Появляется диалоговое окно со списком наименований, имеющихся на складе (В нем пользователь выбирает продаваемые наименования и их количества). Затем при нажатии на кнопку ОПЛАТА появляется окно со списком всех выбранных наименований (накладная) в котором предоставляется возможность отредактировать введенные данные (изменить количество каждого наименования, его стоимость и курс доллара). Далее после нажатия на ОПЛАТА на экране появляется диалоговое окно для ввода следующей информации : реквизиты клиента, форма сделки (реализация), округление суммы накладной, дата накладной. После нажатия на ВЫПИСАТЬ НАКЛАДНУЮ у пользователя программы спрашивает, нужно ли печатать накладную и если товар дается клиенту не на реализацию, то спрашивается, нужно ли печатать приходный кассовый ордер. Все введенные данные помещаются в файлы данных: SDELKA.001 (Заголовки сделок), SDELKA.002 (Наименования сделок), в файле SKLAD.001 делаются соответствующие изменения по количеству оставшегося товара.

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

Data1:=New(PStrSor,Init(10,1)); {Указатель на коллекцию }

For N:=0 to FileSize(DataFile)-1 do {Каждую позицию проверить, если нулевая то не вносить в коллекцию)

begin {1}

Seek(DataFile,n);

Read(DataFile,Data); {Считываем данные}

val(Data.ProductOst,tempccc,code);

Str(Data1^.Count+1,Numm);

if tempccc=0 then goto ccc; { Если нулевая позиция, то не вносить в коллекцию }

o[0]:=chr(57);

FillChar(o[1],57,' ');

with data do

begin {Создание строки типа : Номер, Наименование, Расфасовка}

move(Numm[1],o[2],Length(Numm));

move(ProductName[1],o[succ(lpnum-1)+4],Length(Data.ProductName));

move(ProductRasf[1],o[succ(lpnum+lpname)+5],Length(Data.ProductRasf)

move(ProductNumber[1],o[50],Length(Data.ProductNumber));

end;

Data1^.Insert(NewStr(o)); {Помещаю ее в коллекцию строк}

ccc:

end; {1}

Для реализации списка строк в Turbo Vision предусмотрен объект TListBox. Это объект создает специальное окно скроллера с указателем на текущий элемент. Наименования я поместил в вышеописанную коллекцию строк, указатель на которую передал объекту с помощью метода TListBox.NewList.

Var

SCR : PScrollBar ;

LIST : PLitstBox;

Begin

RR.Assign(50,05,51,17); {Координаты скроллера}

Scr:=New(PscrollBar,Init(RR)); {Указатель на полосу скроллера}

Insert(Scr); {Создаем скроллер}

R.Assign(03,05,50,17); {Координаты окна со списком}

List:=New(PMyListBox,Init(R,1,scr)); {Указатель на окно со списком}

List^.NewList(Data1); {Связывание окна со коллекцией строк}

Insert(list); {Создаем окно со списком }

End;

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

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

После ввода при нажатии на кнопку ПОКАЗАТЬ ЗА ПЕРИОД разворачивается окно со списком сделок (накладных) относящихся к введенному периоду. Это реализованно следующим образом. При соэдании коллекции строк с накладными сравниваютя дата сделки, нижняя и верхняя границы периода при помощи написанной прцедуоы DATECOMP из модуля DATES.PAS. Но для того, чтобы накладные распологались по порядку (по дате) мне пришлось перекрыть метод сортировки коллекции (см. модуль SKLSTR.PAS). После того, как создано диалоговое окно, пользователю предоставляется возможность распечатать выбранную накладную, соответствующую накладную по себестоимости и если накладная оплачена, то и приходный кассовый ордер.

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

В основном, вывод осуществляется стандартными процедурами Borland Pascal. Но например для печати приходного кассового ордера мне пришлось создать функцию для перевода суммы в слова (123 рубля в сто двадцать три рубля). Эта функция находится в модуле NUMSTR.PAS. Или для большей читабельности документов написал функцию для преобразования строки типа 1000000.00 в строку типа 1,000,000.00. Эта функция так же находится в модуле NUMSTR.PAS.

Архивирование данных.

Для того, чтобы в списке сделок не появлялись уже не нужные данные я написал подпрограмму для архивирования данных. При выборе команды меню АРХИВ-РАБОТА С АРХИВОМ на экране появляется диалоговое окно с двумя списками строк. В первом списке (СКЛАД) распологаются периоды сделок (месяц, год), которые доступны пользователю для просмотра, а во втором смиске (АРХИВ) сделки которые находятся в АРХИВЕ. Для архивации периода сделок использовал следующий алгоритм: При выборе периода для архивации, программа проверяет каждую сделку на принадлежность к этому периоду. Ecли сделка попадает а него, то поле SDELKA.ARCHIVE устанавливается в TRUE. При выборе периода для деархивации прграмма устанавливает поля SDELKA.ARCHIVE соответствующих сделок в FALSE. Подпрограмма архивации также увеличивает быстродействие программмы за счет уменьшения количества выводимых сделок.

Ввод установок.

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

Type {Структура данных для конфигурационного файла}

ConfigFileStructure = record

CassName : String[22]; { ФИО Кассира}

BuhName : String[30]; { ФИО бухгалтера}

GenName : String[30]; { ФИО коммерческого директора}

UserName : String[30]; { ФИО пользователя}

Signature : String[10]; { Сюда пишется дата BIOS'а }

Reserved1 : String[10]; { }

Reserved2 : String[10]; {Зарезервировано }

Reserved3 : String[20]; { }

Password : String[10]; {Пароль}

FirmName : String[60]; {Реквизиты фирмы}

Kurs : Real; {Курс доллара}

end;

При начальном запуске пароль не установлен. При необходимости из меню УСТАНОВКИ-ПАРОЛЬ можно установить пароль. Опишу реальзацию подпрограмму для его установки. Создается диалоговое окно со строкой ввода. Для того, чтобы привводе пароля на экране не отображались вводимые символы, был перекрыт метод TInputLine.HandelEvent так, что бы каждый введенный символ помещался в отдельную строку, а отображался `*' (звездочкой). Для детального просмотра алгоритма см. модуль PASSWORD.PAS. После введения пароля и нажатия на кнопку OK появляется диалоговое окно для проверки введенного пароля. Если оба введеных пароля совпадают, то он записывается в файл FIRMA.DAT в поле Password. Если они не совпадают, то пароль не устанавливается.

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

Паролирование.

Для того, чтобы предотвратить доступ к данным я решил создать пароль, который запрашивался бы каждый раз при запуске программы. Для этого в записи ConfigFileStructure и добавил поле PassWord типа String[10];

Type

ConfigFileStructure = record

Password : String[10];

End;

Затем в меню УСТАНОВКИ добавил подменю УСТАНОВКИ-ПАРОЛЬ и связал с ним комманду cmDostup, которая вызывает процедуру ввода пароля Dostup из модуля SETUP.PAS. Эта процедура реализована так: На экране появляется диалоговое окно со строкой ввода :

Введите пароль . В ней вводится пароль и при нажатии на кнопку OK появляется следующее окно для проверки введенного пароля. Если во втором окне введенный пароль соответствует введенному паролю в первом окне, то этот пароль кодируется и записывается в файл FIRMA.DAT. Кодирование происходит следующим образом. Каждый символ пароля умножается на число (58+номер символа)*2. При запуске программы появляется диалоговое окно со сторокой ввода Введите пароль . Если введенный пароль в закодированном виде соответствует установленному закодированному паролю, то программа продолжает функционировать , а если не соответсвуют, то выводится сообщение о не правильно введенном пароле и программа прекращает функционировать.

Структура баз данных (БД).

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

она может содержать все данные, необходимые для данной системой и связь между разными БД осуществляется довольно простым путем.

Основной БД является БД, которая содержит информацию о наименованиях, имеющихся на складе (о количестве, о стоимости и т.д.). Она имеет следующую структуру :

Type

DataType = record { Структура складских данных}

ProductNumber : String[5];{Номер}

ProductName : String[22];{Наименование}

ProductRasf : String[10];{Расфасовка}

PieceInBox : String[5];{Кол-во штук в упаковке}

ProductPrice : String[12]; { Себестоимость }

ProductKol : String[12];{Поставленное количество}

ProductFirm : String[22];{Фирма поставщик}

ProductDate : String[l10];{Дата прихода}

ProductOST : String[12];{Осталось на складе}

ProductKurs : Real; { Курс прихода }

ProductSellPrice : Real; { Стоимость }

ProductVozvrat : LongInt; {Возврат}

end;

Var

Data : DataType;

DataFile : File of DataType; {Файл SKLAD.001}

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

Открыть файл данных.

Поместить указатель положения в файле на нужную запись.

Для записи данных - каждому полю записи Data присвоить соответствующие данные, затем их записать в файл данных Write(DataFile,Data). Для считывания данных - Считать данные из файла Read(DataFile,Data);

Закрыть файл данных.

Более интересной структурой является структура сделок. :

Type {Заголовок сделки}

SdelkaInfo = record

SdelkaNumber : LongInt; {Номер сделки }

Reserved : Word;

Archive : Boolean; {Флаг архива}

ItemIndex : LongInt; {Индекс в наименованиях}

ItemsTaken : LongInt; {Всего наименований}

FirmName : String[22]; {Фирма}

Date : String[10]; {Дата выписки накладной}

OplataDate : String[10]; {Дата полной оплаты}

Summa : Real; {Сумма}

Kurs : Real; {Курс доллара}

SummaSkidka : Real; {Сумма со скидкой}

Oplata : Boolean; {TRUE - если оплачено полностью}

End;

Type

OneItemInfo = record { Наименования}

Number : LongInt;

SdelkaNumber : LongInt;

SklNum : LongInt;

Name : String[22];

Rasf : String[10];

Box : Integer;

KolVo : LongInt;

SBPrice : Real;

Price : Real;

Vozvrat : LongInt;

End;

Var

Sdelka : SdelkaInfo;

SdelkaFile : File of SdelkaInfo; {Файл SDELKA.001}

Item : OneitemInfo;

ItemsFile : File of OneItemInfo; {Файл SDELKA.002}

Структура состоит из заголовка и собстенно наименований. В заголовке содержатся следующие данные : Фирма покупатель, Дата накладной, Дата оплаты, Сумма накладной в долларах США , Сумма накладной со скидкой (в рублях), Курс доллара на момент ваписки накладной, Флаг архива, Количество проданных наименований, Индекс в БД с наименованиями.

В БД наименований находится информация о каждом наименовании, относящегося к соответствующей сделки.

Например, если нужно считать сделку, то надо:

Открыть файлы данных SdelkaFile и ItemsFile;;

Поместить указатель на нужную сделку в файле SdelkaFile (Seek(SdelkaFile,n));

Считать сделку из файла (Read(SdelkaFile,Sdelka);

Поместить указтель на наименование, численно равный Sdelka.ItemIndex в файл ItemsFile и для каждого наименования (от Sdelka.ItemsIndex до Sdelka.ItemsIndex+Sdelka.ItemsTaken) считывать данные. (Read(ItemsFile,Item);

Закрыть файлы данных SdelkaFile и ItemsFile;

На Borland Pascal это выглядит следующим образом:

OpenSdelkaFile;

OpenItemsFile; {Открытие файлов: процедуры находятся в модуле SKLFILES.PAS}

Seek(SdelkaFile,нужная сделка); {Указываю на нужную сделку}

Read(SdelkaFile,Sdelka); {и считываю ее заголовок}

for n:=Sdelka.ItemIndex to Sdelka.ItemsTaken do {Считывание инф-ции о наименованиях}

Begin

Seek(ItemsFile,n);

Read(ItemsFile,Items);

операции над считанными данными (вставка в коллекцию строк)

End;

CloseItemsFile;

CloseSdelkaFile {Закратие файлов};

Структура приходов описана также , как и структура сделок.

Используя мощные возможности компилятора BORLAND PASCAL 7.0 и объектно-ориентированной библиотеки TURBO VISION для написания системы управления работой коммерческой компании мне удалось за очень сжатые сроки создать довольно гибкую программу с пользовательским интерфейсом очень высокого класса.

2.7 Безопасность информации в ЛВС

2.7.1 Общая характеристика угроз, служб и механизмов безопасности

Комплексное рассмотрение вопросов обеспечения безопасности ЛВС нашло свое отражение в так называемой архитектуре безопасности, в рамках которой различают угрозы безопасности, а также услуги (службы) и механизмы ее обеспечения.

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

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

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

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

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

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

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

...

Подобные документы

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

    дипломная работа [2,5 M], добавлен 08.07.2012

  • Системы управления базами данных. Разработка основной программы и вспомогательного программного обеспечения по учету товаров в коммерческой фирме по продаже аудиотехники. Комплекс программ и средств взаимодействия с электронной вычислительной машиной.

    курсовая работа [11,4 K], добавлен 08.02.2012

  • Характеристика системы управления современным предприятием. Анализ технико-экономических показателей производственно-хозяйственной деятельности коммерческой организации. Автоматизирование отделов компании с помощью программного продукта 1С Бухгалтерия.

    отчет по практике [184,1 K], добавлен 18.04.2015

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

    курсовая работа [405,4 K], добавлен 08.02.2016

  • Разработка информационной системы программного обеспечения "Учет полисов в страховой компании". Проверка программы с помощью встроенного языка Delphi; создание загрузочного модуля. Функции системы: ведение справочников, ввод данных, формирование отчетов.

    отчет по практике [1,4 M], добавлен 01.02.2015

  • Анализ предметной области. Технико-экономическое обоснование внедрения системы управления взаимоотношениями в информационную среду транспортной компании. Функциональные требования по проектированию CRM-системы. Разработка форм отчетности и аналитики.

    дипломная работа [1,9 M], добавлен 31.03.2018

  • Модернизация локальной сети офиса компании "Деревянные конструкции". Установка операционной системы. Создание домена, групп пользователей, общих ресурсов. Реализация системы безопасности и управления сетевым доступом. Экономическое обоснование проекта.

    дипломная работа [5,9 M], добавлен 31.03.2012

  • Разработка устройства управления многофункциональной системы пожарной сигнализации на основе микроконтроллера PIC16F73. Конструкторско-технологический, электрический расчет элементов печатного монтажа. Экономические и потребительские показатели прибора.

    дипломная работа [5,9 M], добавлен 19.10.2010

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

    курсовая работа [3,0 M], добавлен 15.10.2013

  • Разработка системы управления проектами для компании ЗАО "Диакон". Экономические параметры разработки и внедрения электронной информационной системы. Технология разработки программного обеспечения. Выбор типа графического интерфейса, его составляющие.

    дипломная работа [1,4 M], добавлен 10.06.2014

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

    контрольная работа [294,8 K], добавлен 18.01.2011

  • Разработка информационного и программного обеспечения предметной области, связанной с работой магазина по продаже сувениров. Построение функциональной и информационной модели. Управление базой данных с помощью системы приложения Microsoft SQL Server 6.0.

    курсовая работа [2,7 M], добавлен 25.01.2010

  • Организация хранения информации на накопителях. Цели и задачи файловой системы, ее физическая организация и адресация файла. Виды файловых систем. Проектирование символов для матричных принтеров. Приемы управления работой печатающих устройств в MS-DOS.

    курсовая работа [1,7 M], добавлен 22.06.2011

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

    контрольная работа [30,6 K], добавлен 16.10.2010

  • Описание структуры управления компании. Структура программно-аппаратных средств. Анализ технического задания. Расчет обобщенного критерия эффективности информационной системы ведения проектов строительной компании. Выбор языка программирования и СУБД.

    дипломная работа [2,1 M], добавлен 29.06.2013

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

    дипломная работа [306,6 K], добавлен 28.08.2014

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

    реферат [28,4 K], добавлен 18.11.2010

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

    дипломная работа [3,2 M], добавлен 18.05.2014

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

    курсовая работа [1,2 M], добавлен 22.06.2011

  • Обзор подхода к разработке системы управления персоналом. Формирование требований к системе, выбор методологии построения системы. Автоматизация работы алгоритма подсчета мощности. Практическая реализация подхода на примере компании ООО "Новая медицина".

    дипломная работа [3,3 M], добавлен 03.07.2017

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.