Информационная система для автоматизации операций в отношениях между поставщиком и заказчиком

Информационная система для автоматизации операций в отношениях между поставщиком и заказчиком

Содержание

Введение

1. Функциональная и организационная структура ОАО молочный комбинат «Воронежский»

2. Организация информационной базы предмета разработки

3. Математическая модель, предмета разработки и алгоритм ее решения 

4. Технология разработки программного продукта

Заключение

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

Приложение



Введение

Функциональная подсистема «Сбыта», предназначена для решения комплекса задач, связанного с планированием и управлением потоками производства, рекламы, и продажи продукции. В качестве примера для отслеживания подобных процессов выбираем холдинг «Молвест».

«Молвест является одной из крупнейших компаний пищевой промышленности Центрально-Черноземного региона и объединяет ряд предприятий, расположенных в европейской части России. Главным предприятием является ОАО молочный комбинат «Воронежский».

Компания «Молвест» активно развивается и уделяет особое внимание вопросам качества продукции, расширению торговли в Воронеже и регионах, а также новым технологиям производства. Предприятие состоит в партнерских отношениях с крупнейшими российскими и международными торговыми сетями, такими как: «Aushan», «Metro», «Седьмой Континент», «Перекресток», «Пятерочка», «Магнит». 

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

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



1. Функциональная и организационная структура ОАО молочный комбинат «Воронежский»

Комбинат основан на базе Воронежского Гормолзавода №1, который сдан в эксплуатацию 29 декабря 1969 года с проектной мощностью 225 т переработанного молока в смену. В 1992 году молкомбинат реорганизованв ОАО Молочный комбинат «Воронежский». Входит в состав холдинга «Молвест».

Стратегическими партнерами ОАО Молочный комбинат «Воронежский» являются крупнейшие международные компании-производители упаковки. С 1993 года комбинат успешно сотрудничает со шведской фирмой «Теtrа Рак» — лидером в производстве упаковки и оборудования для пищевой и перерабатывающей промышленности. С 1999 года ОАО Молочный комбинат «Воронежский» работает со шведской компанией «Есоlеап», на оборудовании которой производятся молочные продукты в упаковке «кувшин». По данным «Есоlеап», в настоящий момент Воронежский комбинат является мировым лидером по продажам молочных продуктов. в данной упаковке: компания «Молвест» сбывает более двух кувшинов ежесекундно.

В 2001 году на комбинате была запущена французская линия по розливу молока в пластиковые бутылки. В ноябре 2004 года запущена новейшая производственная линия по розливу питьевых йогуртов в пластиковые бутылки. Сейчас на этой линии выпускают питьевые йогурты «Сан Круи» и «Фруате». В 2008 году объем инвестиций предприятия превысил 200 млн. рублей. Большая часть этих средств была израсходована на приобретение современного высокотехнологичного оборудования. Сегодня на заводах компании «Молвест» в общей сложности перерабатывается более 180 000 тонн молока в год. Ассортимент компании «Молвест» насчитывает около 200 наименований молочной продукции в различных типах упаковки: молоко пастеризованное и стерилизованное, кисломолочная продукция, йогурты питьевые, мягкие творога, сыры и другая продукция.

ЗАО «Молвест» поставляет свою продукцию в более чем 30 регионов РФ. Среди них Центральное Черноземье и Москва, Санкт-Петербург, Ростов-на-Дону, Волгоград, Самара, Саратов и Краснодарский край.

Золотые медали, завоеванные на наиболее престижных международных выставках в России – «WorldFood» и «Продэкспо», — подтверждают высокое качество продукции, а уверенный рост продаж говорит о стабильности предприятия и высокой лояльности к продукции со стороны покупателей. Предприятие продолжает наращивать темпы регионального расширения. За 2007-2008 годы ЗАО «Молвест» укрепил свои позиции на рынках молочной продукции 20 регионов европейской части России и Приволжского Федерального Округа, а также в 6 регионах Украины, проведя ряд эффективных маркетинговых кампаний. Главной торговой маркой ЗАО «Молвест» является ТМ «Вкуснотеево», которой удалось стать брендом национального уровня. Значительные инвестиции осуществляются в разработку и продвижение других торговых марок комбината: «Фруате», «Ералаш», «Иван Поддубный», «Сан Круи», «Волжские просторы», «Кубанский Хуторок».

Стратегические цели молочного комбината:

ü   Увеличение объемов переработки молока

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

ü   Расширение рынков сбыта

ü   Снижение издержек производства

ü   Эффективное использование оборотного капитала

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



Рис.1 Функциональный тип организационной структуры



Рис.2 Организационная структура завода по производству молока

Проанализировав цели и деятельность, а также функциональную и организационные структуры переходим к разработке подсистемы «Сбыта». Выделим следующие ИС Автоматизации:

ü   ИС Автоматизации организации управления выбора поставщиков и потребителей;

ü   ИС Автоматизации организации перевозок;

ü   ИС Автоматизация планирования накладной на продукцию.

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

Для реализации, вышеперечисленных ИС Автоматизации, потребуются следующие программы:

ü   Word

ü   Access

ü   Delphi

2 Организация информационной базы предмета разработки

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

Основные компоненты MS Access:

-    построитель таблиц;

-    построитель экранных форм;

-    построитель SQL-запросов (язык SQL в MS Access не соответствует стандарту ANSI);

-    построитель отчётов, выводимых на печать.

Мы будем работать с таблицами. Интерфейс пользователя MS Access – это комплекс программ, который реализует диалог в процессе работы пользователя с приложением Access.

После загрузки MS Access на экране появится главное окно, в котором размещается окно базы данных. При первом запуске Access в главном окне выводится область задач в режиме «Приступая к работе», с помощью которой можно открыть существующие БД и «Создать файл». При выборе команды «Создать файл» в области задач изменится режим на «Создание файла».

При выборе команды «Новая база данных» откроется окно диалога «Файл новой базы данных», в котором необходимо выбрать имя диска и директории для хранения БД, а также имя БД (тип файла устанавливается по умолчанию «Базы данных Microsoft Office Access») и щелкнуть на кнопке «Создать», будет сохранен файл с расширением.mdb.

Команды панели инструментов окна БД:

 Открыть – открытие выделенного объекта (таблицы, запроса, формы и т.д.) в режиме страницы;

 Конструктор - открытие выделенного объекта в режиме конструктора;

 Создать – создание объекта базы данных;

 Удалить – Удаление выделенного объекта;

 Крупные значки; Мелкие значки; Список; Таблица – представление объектов базы данных в окне базы данных в соответствующем виде.

Панель "Объекты":

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

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

 Форма – средство, которое позволяет упростить процесс ввода или изменения данных в таблицах БД, что обеспечивает ввод данных персоналом невысокой квалификации.

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

 Страницы - страницы доступа к данным представляют собой специальную Web-страницу, предназначенную для просмотра и работы через Интернет или интрасеть с данными, которые хранятся в базах данных Microsoft Access или БД MS SQL Server.

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

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

Работа с таблицами в Access

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

В программе предусмотрены возможности:

·           Различные способы создания таблиц, которые предоставляет Access

·           Определение полей в таблице, свойства полей, а также свойства самих таблиц

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

·           Определение ключевых полей, установка связей между таблицами, работа со схемой данных

·           Создание и использование индексов

·           Способы добавления, обновления, замены и удаления записей при работе с таблицами

·           Способы сортировки данных в таблице

·           Возможности поиска записей по значению поля, а также замены вхождений образца в поле

·           Способы отбора данных при помощи фильтров, копирования, экспорта и рассылки отсортированных и отфильтрованных данных

Создаем следующие таблицы

Содержимое таблиц Ассеss

Основные элементы таблиц Ассеss это:  • поля;  • записи;  • первичный ключ.

Поле — это наименьший блок данных в базе. При разработке таблиц Ассеss создается необходимое количество полей.

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

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

Создание простой таблицы

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

 • ввод данных в пустую таблицу — поля в таблице создаются Access (метод хорошо знаком пользователям программы Microsoft Excel);

 • использование мастера — мастер позволяет поэтапно создавать таблицу определенного типа;

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

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

1.Запустите Access.

2. На панели задач Создание файла выберите ссылку Новая база данных. Присвойте файлу базы данных имя Растения.mdb и щелкните на кнопке Создать.

3. В окне Растения: база данных щелкните на ссылке Таблицы.

4. Дважды щелкните на ссылке Создание таблицы путем ввода данных для открытия пустой таблицы.

5. Щелкните на первой строке базы данных и введите значение. 

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

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

Будем использовать создание таблиц с помощью конструктора.

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

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

1. Щелкните на ссылке Таблицы в окне База данных.

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

3. Щелкните на поле Номер типа. Слева от имени поля появится значок с изображением черного треугольника. 

4. На панели задач щелкните на кнопке Ключевое поле, чтобы выбрать данное поле в качестве первичного ключа таблицы (пример того, как Access позволяет делать одну задачу несколькими способами). 

5. Выберите команду Файл ->Сохранить или же щелкните на кнопке Сохранить, расположенной на панели задач Access.

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

С помощью конструктора создадим 6 таблиц (рис.3).



Рис.3 Таблицы БД





Рис.4 Таблица в режиме конструктор



Рис.5 Вид таблицы 



Рис.6 Таблица в режиме конструктор



Рис.7 Вид таблицы 



Рис.8 Таблица в режиме конструктор





Рис.9 Вид таблицы 



Рис.10 Таблица в режиме конструктор



Рис.11 Вид таблицы 



Рис.12 Таблица в режиме конструктор



Рис.13 Вид таблицы 





Рис.14 Таблица в режиме конструктор



Рис.15 Вид таблицы 

3. Математическая модель, предмета разработки и алгоритм ее решения

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

Однородный груз сосредоточен у m поставщиков в объемах a1, a2,... am. Данный груз необходимо доставить n потребителям в объемах b1, b2... bn. Известны Cij, i=1,2,...m; j=1,2,...n — стоимости перевозки единиц груза от каждого i-го поставщика каждому j-му потребителю. Требуется составить такой план перевозок, при котором запасы всех поставщиков вывозятся полностью, запросы всех потребителей удовлетворяются полностью, и суммарные затраты на перевозку всех грузов являются минимальными.

Исходные данные транспортной задачи записываются в виде таблицы:



 

Исходные данные задачи могут быть представлены в виде:

-    вектора А=(a1,a2,...,am) запасов поставщиков

-    вектора B=(b1,b2,...,bn) запросов потребителей

-    матрицы стоимостей:



Переменными (неизвестными) транспортной задачи являются xij, i=1,2,...,m j=1,2,...,n — объемы перевозок от i-го поставщика каждому j-му потребителю. Эти переменные могут быть записаны в виде матрицы перевозок:





Так как произведение Cij*Xij определяет затраты на перевозку груза от i-го поставщика j-му потребителю, то суммарные затраты на перевозку всех грузов равны: 

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



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



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



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





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



 

Математическая формулировка транспортной задачи такова: найти переменные задачи X=(xij), i=1,2,...,m; j=1,2,...,n, удовлетворяющие системе ограничений (цифра 2 на математической модели), условиям неотрицательности и обеспечивающие минимум целевой функции.

4. Технология разработки программного продукта

Программный продукт будет разрабатываться в программе Delphi7 Delphi — среда программирования, в которой используется язык программирования Object Pascal. Язык программирования - произошел от turbo pascal, и создавался изначально - для windows, но позже появились и среды разработки под linux. Создадим формы, в соответствие с ИС Автоматизации. Компонент Form1 появляется автоматически после запуска Delphi. Чтобы добавить ещё один Form, нужно перейти в File->New->Form Систему необходимо будет защитить от несанкционированного доступа логином и паролем (рис.16). 



Рис.16 Вид первой формы.



На форму добавляем следующие компоненты:

ü   Label, Labe2 - Метка (пояснительный текст) на Форме. указывает пользователю, что именно он должен ввести в поле ввода. Для этого достаточно в Инспекторе объектов в свойстве Caption ввести нужный текст.

ü   Edit1, Edit2 - представляет собой однострочное текстовое поле, служащее для ввода данных пользователем. Основным свойством компонента Delphi Edit, передающим введённую информацию, является свойство Edit1.Text типа String.

ü   Button1, Button2 - Компонент Delphi Button это простая командная кнопка. Командная кнопка Delphi Button используется для реализации в программе команд с помощью обработчика события OnClick этого компонента.

В Unit1 заносим программный код:

procedure TForm1.Button2Click(Sender: TObject);

begin

 Form1.Close;

end;

procedure TForm1.Button1Click(Sender: TObject);

const

 log='admin';

 pas='505';

var log0,pas0:string;

begin

 log0:=edit1.Text;

 pas0:=edit2.Text;

 if (log=log0) and (pas=pas0) then begin Form2.show; form1.Hide; end else

 if (log<>log0) or (pas<>pas0) then showmessage('введены не верно login\password ');

end; end.

Затем создаем Form2, в ней будет представлена в табличном виде информация о выпускаемом ассортименте. Эта форма будет представлять ИС Автоматизации организации управления выбора поставщиков и потребителей (рис.17). Заказчик с помощью этой ИС сможет получить необходимые сведения как в целом о выпускаемом ассортименте, так и конкретно по видам продукции. Так у администраторов которые будут обслуживать эту ИС будет возможность оперативно добавить новые сведения, изменить их, или удалить.



Рис.17 Вид второй формы.



Рис.18 Вид второй закладки второй формы.



Рис.19 Вид третьей закладки второй формы.



Рис.20 Вид четвертой закладки второй формы.





Рис.21 Вид пятой закладки второй формы.



Рис.22 Вид шестой закладки второй формы.

На форму добавляем следующие компоненты:

ü   DBEdit1-25 - это окно редактирования. DBEdit – связанный с данными аналог обычного окна редактирования Edit. Он позволяет отображать и редактировать данные полей различных типов: строка, число, булева величина. Преобразование значения поля в строку текста, отображаемую в DBEdit, производится автоматически.

ü   DBNavigator1-6 для добавления, редактирования, и удаления строк таблицы. 

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

ü   Image1- рисунок. Выводится логотип бренда «Вкуснотеево».

ü   ADOConnection1 – компонент используется для соединяться с источником данных.

ü   DataSource1-6 - Источник данных. Связывает компоненты доступа данных и компоненты отображения данных.

ü   ADOTable1-6 - Таблица. Служит мощным средством доступа к файлам баз данных (к таблицам).

В Unit2 заносим программный код:

procedure TForm2.Button1Click(Sender: TObject);

begin

Form2.Close;

 Form1.Close;

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

form3.showmodal;

end;

end.

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



Рис.23 Вид третей формы.



На форму добавляем следующие компоненты:

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

В Unit3 заносим программный код:

procedure TForm3.Button1Click(Sender: TObject);

begin

Form1.Close;

Form2.Close;

Form3.Close;

end;

procedure TForm3.FormActivate(Sender: TObject)

 begin

 tabl.Cells[0,0]:= Заказчик';

 tabl.Cells[1,0]:='Расстояние (km)';

 tabl.Cells[0,1]:='Гипермаркет «Линия» ';

 tabl.Cells[0,2]:='Супермаркет «Европа» ';

 tabl.Cells[0,3]:='Торговый центр «Поиск»';

 tabl.Cells[0,4]:='777';

end;

procedure TForm3.Button2Click(Sender: TObject);

var

c,r:integer; 

 s:integer; 

 p:integer; 

 m:integer; 

 buf:array[0..5] of string; 

 i:integer; 

begin

 for r:=1 to tabl.rowcount do /

 begin

 for c:=1 to 3 do

  if tabl.cells[c,r] <> ''

  then s:=s+StrToInt(tabl.cells[c,r])

  else tabl.cells[c,r]:='0';

 p:=7*StrToInt(tabl.cells[1,r])+

  6*StrToInt(tabl.cells[2,r])+

  5*StrToInt(tabl.cells[3,r]);

 tabl.cells[4,r]:=IntToStr(s); // âñåãî ìåäàëåé

 tabl.cells[5,r]:=IntToStr(p); // î÷êîâ

 end;

 for r:=1 to tabl.rowcount-1 do

 begin

 m:=r; // for i:=r to tabl.rowcount-1 do

  if StrToInt(tabl.cells[5,i])>StrToInt(tabl.cells[5,m])

  then m:=i;

 if r <> m then

 begin 

  for c:=0 to 5 do

  begin

   buf[c]:=tabl.Cells[c,r];

   tabl.Cells[c,r]:=tabl.Cells[c,m];

   tabl.Cells[c,m]:=buf[c];

  end;

 end;

 end;

end;

procedure TForm3.Button3Click(Sender: TObject);

begin

form4.showmodal;

end; end.

Завершающей формой будет четвертая форма (Form4), которая будет формировать ИС Автоматизация планирования накладной на продукцию (рис.24). Ознакомившись с продукцией производителя, заказчик сможет сделать заказ, для этого клиент, ориентируясь на таблицу Ассортимента, введет Наименование необходимой продукции и Количество. Данные заказа автоматически передадутся в текстовый документ более удобный для печати. 



Рис.24 Вид четвертой формы.

На форму добавляем следующие компоненты:

ü   LabeledEdit1-2 - комбинация однострочного редактора и метки. Впервые введен в версии 6.

ü   WordApplication1 - запуск и соединение с сервером.

ü   WordParagraphFormat1 - Для создания документа Microsoft Word из Delphi.

ü   SaveDialog - диалог «Сохранить файл как...».

В Unit4 заносим программный код:

procedure TForm4.Button1Click(Sender: TObject);

begin

Form1.Close;

Form2.Close;

Form3.Close;

Form4.Close;

end;

procedure TForm4.FormCreate(Sender: TObject);

var TS: OleVariant;

 NT: OleVariant;

begin

WordApplication1.Connect; 

 TS:='Normal';      

 NT:=FALSE;       

 WordApplication1.Documents.AddOld(TS,NT);   

 WordApplication1.ActiveDocument.PageSetup.LeftMargin:=15.0; 

 WordApplication1.ActiveDocument.PageSetup.TopMargin:=10.0; 

 WordApplication1.ActiveDocument.PageSetup.RightMargin:=10.0; 

 WordApplication1.ActiveDocument.PageSetup.BottomMargin:=10.0; // end;

procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);

begin

WordApplication1.Disconnect

end;

procedure TForm4.Button2Click(Sender: TObject);

 var CD: OleVariant;

 FN: OleVariant;

 FT: OleVariant;

 begin

if SaveDialog.Execute then

 begin

 CD:=wdCollapseEnd;

 FN:=SaveDialog.FileName;

 FT:=wdFormatDocument;

WordApplication1.Selection.ParagraphFormat.Alignment:=wdAlignParagraphCenter;  WordApplication1.Selection.InsertBefore(labeledEdit1.text+' '+ #30);

 WordApplication1.Selection.Collapse(CD);     WordApplication1.Selection.InsertBefore(LabeledEdit2.Text+#13);

 WordApplication1.Selection.Collapse(CD);     WordApplication1.ActiveDocument.SaveAs(FN,FT,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

 WordApplication1.Visible:=TRUE

 end

end;

procedure TForm4.WordApplicationQuit(Sender: TObject);

begin

Close

end; end.

5. Результат машинного эксперимента и их анализ

После того как программа полностью составлена, производим ее отладку и запуск (рис.25). 



Рис.25 Вход в систему



Администратор при каждом входе в систему должен вводить логин, который используется для идентификации, и пароль (рис.26). 



Рис.26 Ввод данных для идентификации 

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



Рис.27 Наглядное представление информации производителя 

По необходимости, данные о производимой продукции могут меняться не только через программу Access, но и в Delphi в режиме on-line (рис.28). Мы с помощью панели управления выбираем необходимое действие (добавить, удалить строку, перемещение по значениям таблицы), и производим операции с данными в DBEdit. Также можно просто удалить всю строку. Или с помощью стрелочек просмотреть всю таблицу. При необходимости пользователь может завершить работу с программой воспользовавшись кнопкой Выход.





Рис.28 Внесение новых данных

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



Рис.29 Нахождение оптимального пути 

После нажатия на кнопку Накладная пользователь перейдет на четвертую форму, предназначенную для Автоматизации планирования накладной на продукцию (рис.30).





Рис.30 Внесение данных в накладную.

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



Рис. 31 Сохранение накладной

После того как список сформирован в документе можно просмотреть следующие данные:

Кефир 5

Сметана 7

Йогурт 25

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

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

ü   Word 2003

ü   Access2003

ü   Delphi 7

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



Заключение

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

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

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

Функциональная подсистема «Сбыта» представлена как вариант решения сложившихся проблем. Она имеет гибкий интерфейс, проста в обслуживании, и защищена от несанкционированного доступа.

информационный учет программный алгоритм



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

1.   Багиев, Георгий Леонидович. Маркетинг: Учеб. Для вузов / Багиев, Георгий Леонидович, Тарасевич, Валентина Михайловна, Анн, Холгер; Под ред. Г.Л. Багиева. – 2-е изд., перераб. И доп. – М.: Экономика, 2005. - 736 с.

2.   Сафаров А., Тина Бабенкова. Контроллинг: история внедрения// Управление компанией. – 2005. - № 8. – 30 с.

3.   Герчикова Н.И. Менеджмент: Учебник. - М., Банки и биржи, ЮНИТИ, 1994. - 685 с.

4.    Курочкин А.С. Организация управления предприятием: Учебник. – К.: МАУП, 2001.

5.   Delhphi 6.5, Дарахвелидзе П.Г., Марков Е. П. 2002, 816 с.

6.   1. А. Архангельский, В. Ильин, М. Тагин

7.   Русская справка (HELP) по Delphi 5 и Object Pascal (32 стр. с CD-ROM) Бином, ISBN 5-7989-0168-8.

8.   А. Архангельский. Программирование в Delphi 5 Бином, ISBN 5-7989-0104-1.

9.   А. Архангельский. Программирование в Delphi 6 Бином, ISBN 5-7989-0227-7.

10.                  П.Даpахвелидзе, Е.Маpков Delphi 4 в подлиннике.



Приложение

program Project1;

uses

 Forms,

 Unit1 in 'Unit1.pas' {Form1},

 Unit2 in 'Unit2.pas' {Form2},

 Unit3 in 'Unit3.pas' {Form3},

 Unit4 in 'Unit4.pas' {Form4};

{$R *.res}

begin

 Application.Initialize;

 Application.CreateForm(TForm1, Form1);

 Application.CreateForm(TForm2, Form2);

 Application.CreateForm(TForm3, Form3);

 Application.CreateForm(TForm4, Form4);

 Application.Run;

end.

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls;

type

 TForm1 = class(TForm)

 Label1: TLabel;

 Label2: TLabel;

 Edit1: TEdit;

 Edit2: TEdit;

 Button1: TButton;

 Button2: TButton;

 procedure Button2Click(Sender: TObject);

 procedure Button1Click(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);

begin

 Form1.Close;

end;

procedure TForm1.Button1Click(Sender: TObject);

const

 log='admin';

 pas='505';

var log0,pas0:string;

begin

 log0:=edit1.Text;

 pas0:=edit2.Text;

 if (log=log0) and (pas=pas0) then begin Form2.show; form1.Hide; end else

 if (log<>log0) or (pas<>pas0) then showmessage('введены не верно login\password ');

end;

unit Unit2;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, DB, ADODB, ExtCtrls, DBCtrls, Mask, Grids, DBGrids,

 XPMan, ComCtrls, jpeg;

type

 TForm2 = class(TForm)

 PageControl1: TPageControl;

 TabSheet1: TTabSheet;

 TabSheet2: TTabSheet;

 TabSheet3: TTabSheet;

 TabSheet4: TTabSheet;

 TabSheet5: TTabSheet;

 TabSheet6: TTabSheet;

 GroupBox1: TGroupBox;

 Button1: TButton;

 XPManifest1: TXPManifest;

 DBGrid1: TDBGrid;

 Label1: TLabel;

 Label2: TLabel;

 Label3: TLabel;

 Label4: TLabel;

 Label5: TLabel;

 DBEdit1: TDBEdit;

 DBEdit2: TDBEdit;

 DBEdit3: TDBEdit;

 DBEdit4: TDBEdit;

 DBEdit5: TDBEdit;

 DBNavigator1: TDBNavigator;

 ADOConnection1: TADOConnection;

 ADOTable1: TADOTable;

 GroupBox2: TGroupBox;

 GroupBox3: TGroupBox;

 GroupBox4: TGroupBox;

 GroupBox5: TGroupBox;

 DBGrid2: TDBGrid;

 DBGrid3: TDBGrid;

 GroupBox6: TGroupBox;

 DBGrid4: TDBGrid;

 DBGrid5: TDBGrid;

 DBGrid6: TDBGrid;

 Label6: TLabel;

 Label7: TLabel;

 Label8: TLabel;

 Label9: TLabel;

 DBEdit6: TDBEdit;

 DBEdit7: TDBEdit;

 DBEdit8: TDBEdit;

 DBEdit9: TDBEdit;

 Label10: TLabel;

 Label11: TLabel;

 Label12: TLabel;

 Label13: TLabel;

 DBEdit10: TDBEdit;

 DBEdit11: TDBEdit;

 DBEdit12: TDBEdit;

 DBEdit13: TDBEdit;

 Label14: TLabel;

 Label15: TLabel;

 Label16: TLabel;

 Label17: TLabel;

 DBEdit14: TDBEdit;

 DBEdit15: TDBEdit;

 DBEdit16: TDBEdit;

 DBEdit17: TDBEdit;

 DBEdit18: TDBEdit;

 DBEdit19: TDBEdit;

 DBEdit20: TDBEdit;

 DBEdit21: TDBEdit;

 Label18: TLabel;

 Label19: TLabel;

 Label20: TLabel;

 Label21: TLabel;

 Label22: TLabel;

 Label23: TLabel;

 Label24: TLabel;

 Label25: TLabel;

 DBEdit22: TDBEdit;

 DBEdit23: TDBEdit;

 DBEdit24: TDBEdit;

 DBEdit25: TDBEdit;

 DBNavigator2: TDBNavigator;

 DBNavigator3: TDBNavigator;

 DBNavigator4: TDBNavigator;

 DBNavigator5: TDBNavigator;

 DBNavigator6: TDBNavigator;

 ADOTable2: TADOTable;

 ADOTable3: TADOTable;

 ADOTable4: TADOTable;

 ADOTable5: TADOTable;

 ADOTable6: TADOTable;

 DataSource1: TDataSource;

 DataSource2: TDataSource;

 DataSource3: TDataSource;

 DataSource4: TDataSource;

 DataSource5: TDataSource;

 DataSource6: TDataSource;

 Image1: TImage;

 Button2: TButton;

 procedure Button1Click(Sender: TObject);

 procedure Button2Click(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 Form2: TForm2;

implementation

uses Unit1, Unit3;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

Form2.Close;

 Form1.Close;

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

form3.showmodal;

end;

unit Unit3;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, Grids;

type

 TForm3 = class(TForm)

 Button1: TButton;

 tabl: TStringGrid;

 Label1: TLabel;

 Button2: TButton;

 Button3: TButton;

 procedure Button1Click(Sender: TObject);

 procedure FormActivate(Sender: TObject);

 procedure Button2Click(Sender: TObject);

 procedure Button3Click(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var Form3: TForm3;

implementation

uses Unit1, Unit2, Unit4;

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);

begin

Form1.Close;

Form2.Close;

Form3.Close;

end;

procedure TForm3.FormActivate(Sender: TObject)

 begin

 tabl.Cells[0,0]:= Заказчик';

 tabl.Cells[1,0]:='Расстояние (km)';

 tabl.Cells[0,1]:='Гипермаркет «Линия» ';

 tabl.Cells[0,2]:='Супермаркет «Европа» ';

 tabl.Cells[0,3]:='Торговый центр «Поиск»';

 tabl.Cells[0,4]:='777';

end;

procedure TForm3.Button2Click(Sender: TObject);

var

c,r:integer; 

 s:integer; 

 p:integer; 

 m:integer; 

 buf:array[0..5] of string; 

 i:integer; 

begin

 for r:=1 to tabl.rowcount do /

 begin

 for c:=1 to 3 do

  if tabl.cells[c,r] <> ''

  then s:=s+StrToInt(tabl.cells[c,r])

  else tabl.cells[c,r]:='0';

 p:=7*StrToInt(tabl.cells[1,r])+

  6*StrToInt(tabl.cells[2,r])+

  5*StrToInt(tabl.cells[3,r]);

 tabl.cells[4,r]:=IntToStr(s); // âñåãî ìåäàëåé

 tabl.cells[5,r]:=IntToStr(p); // î÷êîâ

 end;

 for r:=1 to tabl.rowcount-1 do

 begin

 m:=r; // ìàêñèìàëüíûé ýëåìåíò - â r-îé ñòðîêå

 for i:=r to tabl.rowcount-1 do

  if StrToInt(tabl.cells[5,i])>StrToInt(tabl.cells[5,m])

  then m:=i;

 if r <> m then

 begin 

  for c:=0 to 5 do

  begin

   buf[c]:=tabl.Cells[c,r];

   tabl.Cells[c,r]:=tabl.Cells[c,m];

   tabl.Cells[c,m]:=buf[c];

  end;

 end;

 end;

end;

procedure TForm3.Button3Click(Sender: TObject);

begin

form4.showmodal;

end;

unit Unit4;

interface

uses

Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,

 Buttons, ExtCtrls, Menus, Dialogs, Mask, ShellApi, Grids, DBGrids, DB,

 ADODB, WordXP, OleServer, Messages, Variants,ComObj;

type

 TForm4 = class(TForm)

 Button1: TButton;

 ADOConnection1: TADOConnection;

 ADOTable1: TADOTable;

 DataSource1: TDataSource;

 Button2: TButton;

 WordApplication1: TWordApplication;

 WordParagraphFormat1: TWordParagraphFormat;

 SaveDialog: TSaveDialog;

 GroupBox1: TGroupBox;

 DBGrid1: TDBGrid;

 LabeledEdit1: TLabeledEdit;

 LabeledEdit2: TLabeledEdit;

 procedure Button1Click(Sender: TObject);

 procedure FormCreate(Sender: TObject);

 procedure FormClose(Sender: TObject; var Action: TCloseAction);

 procedure Button2Click(Sender: TObject);

 procedure WordApplicationQuit(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 Form4: TForm4;

implementation

uses Unit1, Unit2, Unit3;

{$R *.dfm}

procedure TForm4.Button1Click(Sender: TObject);

begin

Form1.Close;

Form2.Close;

Form3.Close;

Form4.Close;

end;

procedure TForm4.FormCreate(Sender: TObject);

var TS: OleVariant;

 NT: OleVariant;

begin

WordApplication1.Connect; 

 TS:='Normal';      

 NT:=FALSE;       

 WordApplication1.Documents.AddOld(TS,NT);   

 WordApplication1.ActiveDocument.PageSetup.LeftMargin:=15.0; 

 WordApplication1.ActiveDocument.PageSetup.TopMargin:=10.0; 

 WordApplication1.ActiveDocument.PageSetup.RightMargin:=10.0; 

 WordApplication1.ActiveDocument.PageSetup.BottomMargin:=10.0; // end;

procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);

begin

WordApplication1.Disconnect

end;

procedure TForm4.Button2Click(Sender: TObject);

 var CD: OleVariant;

 FN: OleVariant;

 FT: OleVariant;

 begin

if SaveDialog.Execute then

 begin

 CD:=wdCollapseEnd;

 FN:=SaveDialog.FileName;

 FT:=wdFormatDocument;

 WordApplication1.Selection.ParagraphFormat.Alignment:=wdAlignParagraphCenter;  WordApplication1.Selection.InsertBefore(labeledEdit1.text+' '+ #30);

 WordApplication1.Selection.Collapse(CD);     WordApplication1.Selection.InsertBefore(LabeledEdit2.Text+#13);

 WordApplication1.Selection.Collapse(CD);     WordApplication1.ActiveDocument.SaveAs(FN,FT,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);

 WordApplication1.Visible:=TRUE

 end

end;

procedure TForm4.WordApplicationQuit(Sender: TObject);

begin

Close

end; end.