Анализ и создание программного обеспечения электронного документооборота

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 01.10.2015
Размер файла 2,6 M

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

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

* 3 шаг

* Здесь расчет реализ. продукции за указ. период согласно калькуляции

Select sklad_р

Set Order To 1 && TITLE

Set Filter To sklad_р.дата >= date1 AND sklad_р.дата <= date2 AND реал = .t.

* Расчитанная согласно кальк. реализованная продукция в отчет

SELECT количественный

kol = 0

SCAN

* Приход на склад сырья за указанный период

SELECT sklad_р

LOCATE FOR sklad_р.title = ALLTRIM(количественный.наим)

DO WHILE FOUND()

kol = kol + sklad_р.quantity

CONTINUE

ENDDO

SELECT количественный&& Заносим в отчет

Replace количественный.реал_кол WITH kol&& В отчет кол-во

Replace количественный.реал_сум WITH kol * количественный.цена&& В отчет сумму прихода

kol = 0

ENDSCAN

* Расчитали согласно калькуляции реализованную продукцию и отправили в отчет

* 4 шаг

* Расчет «Остатка на конец»

SELECT количественный

SCAN

* количество

REPLACE количественный.остат_кол WITH количественный.ост_кол + количественный.пр_кол - количественный.рас_кол - количественный.реал_кол

* сумма

REPLACE количественный.остат_сум WITH количественный.ост_сум + количественный.пр_сум - количественный.рас_сум - количественный.реал_сум

ENDSCAN

*Рассчитали

* Фильтруем нулевые значения

*SET FILTER TO количественный.ост_кол <> 0 OR количественный.пр_кол <> 0 OR количественный.рас_кол <> 0

*SET FILTER TO количественный.остат_кол <> 0

CALCULATE sum(количественный.ост_кол) TO ThisForm.TxtОстКол.Value

CALCULATE sum(количественный.ост_сум) TO ThisForm.TxtОстСумма.Value

CALCULATE sum(количественный.пр_кол) TO ThisForm.TxtПрКол.Value

CALCULATE sum(количественный.пр_сум) TO ThisForm.TxtПрСумма.Value

CALCULATE sum(количественный.рас_кол) TO ThisForm.TxtРасКол.Value

CALCULATE sum(количественный.рас_сум) TO ThisForm.TxtРасСумма.Value

CALCULATE sum(количественный.реал_кол) TO ThisForm.TxtРеалКол.Value

CALCULATE sum(количественный.реал_сум) TO ThisForm.TxtРеалСумма.Value

CALCULATE sum(количественный.остат_кол) TO ThisForm.TxtОстатКол.Value

CALCULATE sum(количественный.остат_сум) TO ThisForm.TxtОстатСумма.Value

SET ORDER TO наим

GO TOP IN количественный

ThisForm.Refresh

WAIT CLEAR

Ниже приведена процедура вычисления сличительного расчета.

WAIT [Идут вычисления]+CHR(13)+[Пожалуйста подождите] WINDOW NOWAIT

ThisForm.Label18.Caption = 'СЛИЧИТЕЛЬНАЯ ведомость ' + otv_fio + ' за период с '+ DTOC(date1) + ' по ' + DTOC(date2)

mReport = 'Сличительная'

SELECT kalk

SCAN

REPLACE kalk.кол_во WITH 0.0000

REPLACE kalk.сумма WITH 0.0000

ENDSCAN

* Формируем список сырья и цен

SELECT table2

SCAN

INSERT INTO количественный(наим, цена) VALUES (table2.сырье, table2.цена)

ENDSCAN

* Сформировали

* Действия по шагам

* 1 шагРасчет остатка по отчету

* 2 шагРасчет фактического сырья на складе по ревизии

* 3 шаг

* 1 шаг расчет остатка по отчету

* Расчет остатка на начало

SELECT количественный

SET FILTER TO IN количественный

kol = 0

kol_r = 0

SCAN

* Приход на начало периода

SELECT sklad

SET FILTER TO sklad.дата < date1&& IN sklad

LOCATE FOR sklad.title = ALLTRIM(количественный.наим)

DO WHILE FOUND()

kol = kol + sklad.quantity

CONTINUE

ENDDO

* Расход на начало периода

SELECT sklad_р

SELECT * FROM sklad_р WHERE sklad_р.дата <= date1-1 ;

UNION ALL ;

SELECT * FROM sklad_р WHERE sklad_р.дата = date1 AND день = .T. INTO CURSOR расход_со_склада

SELECT расход_со_склада

LOCATE FOR расход_со_склада.title = ALLTRIM(количественный.наим)

DO WHILE FOUND()

kol_r = kol_r + расход_со_склада.quantity

CONTINUE

ENDDO

* Остаток на начало периода

SELECT количественный&& Заносим в отчет

Replace количественный.ост_кол WITH kol - kol_r&& остаток,

Replace количественный.ост_сум WITH (kol - kol_r)* количественный.цена&& сумму

kol = 0

kol_r = 0

ENDSCAN

* Рассчитали

* Расчет прихода и расхода

SELECT количественный

kol = 0

kol_r = 0

SCAN

* Приход на склад сырья за указанный период

SELECT sklad

SET FILTER TO sklad.дата >= date1 AND sklad.дата <= date2

LOCATE FOR sklad.title = ALLTRIM(количественный.наим)

DO WHILE FOUND()

kol = kol + sklad.quantity

CONTINUE

ENDDO

SELECT количественный&& Заносим в отчет

Replace количественный.пр_кол WITH kol&& В отчет кол-во

Replace количественный.пр_сум WITH kol * количественный.цена&& В отчет сумму прихода

* Расход со склада сырья за указанный период

SELECT sklad_р

*SET FILTER TO sklad_р.дата >= date1 AND sklad_р.дата <= date2 AND sklad_р.реал = .f.

SELECT * FROM sklad_р WHERE sklad_р.дата = date1 AND день = .F. AND реал = .F. ;

UNION ALL ;

SELECT * FROM sklad_р WHERE sklad_р.дата >= date1+1 AND sklad_р.дата <= date2-1 AND реал = .F. ;

UNION ALL ;

SELECT * FROM sklad_р WHERE sklad_р.дата = date2 AND день = .T. AND реал = .F. INTO CURSOR расход_со_склада

SELECT расход_со_склада

LOCATE FOR расход_со_склада.title = ALLTRIM(количественный.наим)

DO WHILE FOUND()

kol_r = kol_r + расход_со_склада.quantity

CONTINUE

ENDDO

SELECT количественный

Replace количественный.рас_кол WITH kol_r&& В отчет кол-во

Replace количественный.рас_сум WITH kol_r * количественный.цена&& В отчет сумму расхода

kol = 0

kol_r = 0

ENDSCAN

* Рассчитали

* Здесь расчет реализованной продукции за указ. период согласно калькуляции

SELECT sklad_р

SET ORDER TO 1 && TITLE

SET FILTER TO sklad_р.дата >= date1 AND sklad_р.дата <= date2 AND реал = .T.

* Рассчитанная согласно кальк. реализованная продукция в отчет

SELECT количественный

kol = 0

SCAN

* Приход на склад сырья за указанный период

SELECT sklad_р

LOCATE FOR sklad_р.title = ALLTRIM(количественный.наим)

DO WHILE FOUND()

kol = kol + sklad_р.quantity

CONTINUE

ENDDO

SELECT количественный&& Заносим в отчет

Replace количественный.реал_кол WITH kol&& В отчет кол-во

Replace количественный.реал_сум WITH kol * количественный.цена&& В отчет сумму прихода

kol = 0

ENDSCAN

* Расчитали согласно кальк. реализованную продукцию и отправили в отчет

* Расчет ОСТАТКА НА КОНЕЦ

SELECT количественный

SCAN

* количество

REPLACE количественный.остат_кол WITH количественный.ост_кол + количественный.пр_кол - количественный.рас_кол - количественный.реал_кол

* сумма

Replace количественный.остат_сум WITH количественный.ост_сум + количественный.пр_сум - количественный.рас_сум - количественный.реал_сум

ENDSCAN

* Рассчитали остаток по отчету

* Переносим остаток по отчету из количественного в сличительную ведомость

SCAN

INSERT INTO сличительная (наим, цена, остат_кол, остат_сум) VALUES (количественный.наим, количественный.цена, количественный.остат_кол, количественный.остат_сум)

ENDSCAN

* 2 шаг Расчет фактического сырья на складе по ревизии

SELECT ревизия

SET FILTER TO ревизия.дата >= date1 AND ревизия.дата <= date2 AND ревизия.прод = .F.

SELECT сличительная

kol = 0.0000

kol_r = 0.0000

SCAN

* Приход на склад сырья за указанный период

SELECT ревизия

LOCATE FOR ALLTRIM(ревизия.наим) == ALLTRIM(сличительная.наим)

DO WHILE FOUND()

kol = kol + ревизия.кол_во

CONTINUE

ENDDO

SELECT сличительная

&& Заносим в отчет

Replace сличительная.фсыр_кол WITH kol&& В отчет кол-во

&& В отчет сумму прихода

Replace сличительная.фсыр_сум WITH kol * сличительная.цена

kol = 0.0000

kol_r = 0.0000

ENDSCAN

* Рассчитали

* 3 шаг * Расчет излишков и недостачи

SELECT сличительная

SCAN

IF сличительная.остат_кол - сличительная.фсыр_кол < 0

REPLACE сличительная.излиш_кол WITH сличительная.фсыр_кол - сличительная.остат_кол

REPLACE сличительная.излиш_сум WITH (сличительная.фсыр_кол - сличительная.остат_кол) * сличительная.цена

ENDIF

IF сличительная.остат_кол - сличительная.фсыр_кол > 0

REPLACE сличительная.недост_кол WITH сличительная.остат_кол - сличительная.фсыр_кол

REPLACE сличительная.недост_сум WITH (сличительная.остат_кол - сличительная.фсыр_кол) * сличительная.цена

ENDIF

ENDSCAN

* расчет по столбцам

CALCULATE sum(сличительная.остат_кол) TO ThisForm.TxtОстКол.Value

CALCULATE sum(сличительная.остат_сум) TO ThisForm.TxtОстСумма.Value

CALCULATE sum(сличительная.фсыр_кол) TO ThisForm.TxtРасКол.Value

CALCULATE sum(сличительная.фсыр_сум) TO ThisForm.TxtРасСумма.Value

CALCULATE sum(сличительная.недост_кол) TO ThisForm.TxtРеалКол.Value

CALCULATE sum(сличительная.недост_сум) TO ThisForm.TxtРеалСумма.Value

CALCULATE sum(сличительная.излиш_кол) TO ThisForm.TxtОстатКол.Value

CALCULATE sum(сличительная.излиш_сум) TO ThisForm.TxtОстатСумма.Value

GO TOP IN количественный

SELECT сличительная

SET ORDER TO наим

GO TOP

ThisForm.Refresh

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

3.1 Информационная модель и ее описание

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

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

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

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

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

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

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

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

- для планировании закупки упаковки составляется график закупки упаковки.

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

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

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

Рисунок 3. Местоположение программы для эффективной работы

3.2 Состав пакета программы

В состав пакета входят 30 таблиц вместе со своими индексными файлами расположенные в поддиректории “Tables”, 42 графических файла расположенные в поддиректории “Graphics”, 27 стационарных отчета расположенные в поддиректории “Reports” и 40 форм - папка “Forms”. Главным загрузчиком программы является файл Магазин.exe.

Также в состав пакета входят библиотеки Visual FoxPro, без которых работа приложения не возможна (рисунок 4).

Рисунок 4. Расположение и структура файлов программы.

3.3 Выполнение программы

Загрузка программы начинается с вызова файла «магазин.exe». После запуска программы открывается главная форма, показанная на Рисунке 5.

Рисунок 5. Главная форма.

На главной форме расположена панель главного меню, панель инструментов. Панель инструментов находится на доработке и поэтому она отключена. Главное меню имеет 10 пунктов (см. Рисунок 6).

Рисунок 6. Главное меню.

При выборе меню склад распахивается ниспадающее popup-меню, в которое включено 5 пунктов: приход на склад, расход со склада, остаток на складе, реализация, ревизия.

Приход на склад

При вызове пункта меню «Приход на склад» открывается экранная форма, показанная на Рисунке 7.

Рисунок 7. Форма прихода на склад на фоне главной формы.

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

Кнопка «период» позволяет задать период отображения поступившего сырья или продукции.

Кнопка «Добавить» позволяет открыть диалоговое окно ввода сырья или продукции в базу.

Кнопка «Печать» позволяет вывести на печатающее устройство текущие записи таблицы.

Кнопка «Удалить» позволяет удалить текущую запись.

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

В форму также включено 3 текстовых объекта textbox в которых отображаются текущие суммы по складу.

Форма ввода данных в приход на склад

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

Рисунок 8. Форма ввода сырья или продукции в базу прихода на склад.

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

Расход со склада

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

Рисунок 9. Форма расхода со склада на фоне главной формы.

Форма ввода данных в расход со склада

Форма ввода данных в расход со склада вызывается из формы расхода со склада путем нажатия кнопки «Добавить». На экране появится диалоговое окно ввода данных (см. Рисунок 10). После добавления запись заносится в базу данных расхода. Параллельно с этим она поступает на приход в указанный цех. Ниже приведена процедура разноски по цехам магазина.

DO CASE

CASE ALLTRIM(ThisForm.Combo2.Value)='Пекарня'

INSERT INTO pek_pr_сырье (дата, день, сырье, кол_во, ед_изм, принял);

VALUES (sklad_р.дата, sklad_р.день, sklad_р.title,

sklad_р.quantity, sklad_р.edenizm, sklad_р.принял)

CASE ALLTRIM(ThisForm.Combo2.Value)='Полуфабрикаты'

INSERT INTO пол_пр_сырье(дата, день, сырье, кол_во, ед_изм, принял);

VALUES (sklad_р.дата, sklad_р.день, sklad_р.title,

sklad_р.quantity, sklad_р.edenizm, sklad_р.принял)

CASE ALLTRIM(ThisForm.Combo2.Value)='Кондитерские изд. (торты)'

INSERT INTO kon_tort_pr_сырье(дата, день, сырье, кол_во, ед_изм,принял);

VALUES (sklad_р.дата, sklad_р.день, sklad_р.title,

sklad_р.quantity, sklad_р.edenizm, sklad_р.принял)

CASE ALLTRIM(ThisForm.Combo2.Value)='Кондитерские изд. (штучно)'

INSERT INTO kon_шт_pr_сырье(дата, день, сырье, кол_во, ед_изм, принял);

VALUES (sklad_р.дата, sklad_р.день, sklad_р.title,

sklad_р.quantity, sklad_р.edenizm, sklad_р.принял)

ENDCASE

Рисунок 10. Окно ввода данных в расход со склада.

Остаток сырья на складе

На Рисунке 11 изображена форма остатка на складе.

Рисунок 11. Окно остатка сырья на складе на фоне главной формы.

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

Ниже приводится фрагмент программного кода расчета остатков в форме расположенного в событии «init» формы.

* Подготовка таблиц для остатка

SELECT table2&& сырья

SET FILTER TO

SCAN

replace table2.количество WITH 0

ENDSCAN

SELECT продукция&& продукции

SET FILTER TO

SCAN

replace продукция.кол_во WITH 0

ENDSCAN

* РАСЧЕТ ОСТАТКА СЫРЬЯ

SELECT table2

SCAN

kol_pr = 0

kol_ras = 0

* приход сырья

SET FILTER TO sklad.title = ALLTRIM(table2.сырье) IN sklad

GO TOP IN sklad

DO WHILE !EOF('sklad') && Просматривается вся таблица

kol_pr = kol_pr + sklad.quantity

SKIP IN sklad

ENDDO

* расход сырья

SET FILTER TO sklad_р.title = ALLT(table2.сырье) IN sklad_р

GO TOP IN sklad_р

DO WHILE !EOF('sklad_р')

kol_ras = kol_ras + sklad_р.quantity

SKIP IN sklad_р

ENDDO

* остаток сырья

Replace table2.количество WITH kol_pr - kol_ras

ENDSCAN

SET FILTER TO table2.количество <> 0

GO TOP

* РАСЧЕТ ОСТАТКА ПРОДУКЦИИ

SELECT продукция

SCAN

kol_pr = 0

kol_ras = 0

* приход продукции

SET FILTER TO sklad.title = продукция.продукция IN sklad

GO TOP IN sklad

DO WHILE !EOF('sklad') && Просматривается вся таблица

kol_pr = kol_pr + sklad.quantity

SKIP IN sklad

ENDDO

* расход продукции

SET FILTER TO sklad_р.title = продукция.продукция IN sklad_р

GO TOP IN sklad_р

DO WHILE !EOF('sklad_р') && Просматривается вся таблица

kol_ras = kol_ras + sklad_р.quantity

SKIP IN sklad_р

ENDDO

* остаток продукции

Replace продукция.кол_во WITH kol_pr - kol_ras

ENDSCAN

GO TOP

SET FILTER TO продукция.кол_во <> 0

ThisForm.Refresh

Цеха магазина

Пункт меню «Цех» имеет четыре подпункта, по одному для каждого цеха магазина и пункт внутреннего перемещения сырья: «Пекарня», «Кондитерские изд. (торты)», «Кондитерские изд. (штучно)» и «Внутренние перемещения».

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

В форме имеются четыре вкладки: свод сырья, приход, расход, остаток фактический.

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

Рисунок 12. Форма пекарни.

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

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

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

При снятии галочки с опции «фильтр» фильтры отключаются и значения переводятся в исходное состояние.

Неактивные кнопки «добавить остаток», «редактировать остаток», «удалить остаток» и «оприходовать/списать» доступны только во вкладке «остаток фактический».

При реализации фильтров используются SQL запросы и динамические фильтры. Ниже приведен фрагмент исходного кода загружаемого при инициализации (событие Init) формы «Пекарня»:

ThisForm.Label18.Caption = mes_svod

ThisForm.Label19.Caption = 'рабочий период: ' + DTOC(date1)+' - '+DTOC(date2)

* формирование промежуточного хранилища остатка на начало

* нулевые значения указывать обязательно, так как они используются в

* последующих подзапросах

* подзапрос формирования промежуточного хранилища остатка на начало

SELECT a.сырье, sum(a.кол_во) as Остаток_на_начало,

000000000000.0000 as приход, 000000000000.0000 as расход,

000000000000.0000 as остаток_на_конец ;

FROM &TableName1 a WHERE &filter1 GROUP BY a.сырье ;

UNION ;

* подзапрос формирования прихода

SELECT a.сырье, -sum(a.кол_во) as Остаток_на_начало,

000000000000.0000 as приход, 000000000000.0000 as расход,

000000000000.0000 as остаток_на_конец ;

FROM &TableName2 a WHERE &filter1 GROUP BY a.сырье ;

UNION ;

* подзапрос формирования остатка на начало

SELECT a.сырье, sum(a.кол_во) as Остаток_на_начало,

000000000000.0000 as приход, 000000000000.0000 as расход,

000000000000.0000 as остаток_на_конец ;

FROM &TableName1 a WHERE &filter2 GROUP BY a.сырье ;

UNION ;

SELECT a.сырье, -sum(a.кол_во) as Остаток_на_начало,

000000000000.0000 as приход, 000000000000.0000 as расход,

000000000000.0000 as остаток_на_конец ;

FROM &TableName2 a WHERE &filter2 GROUP BY a.сырье INTO CURSOR query1

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

SELECT a.сырье, sum(a.Остаток_на_начало) as Остаток_на_начало,

000000000000.0000 as приход, 000000000000.0000 as расход,

000000000000.0000 as остаток_на_конец ;

FROM query1 a GROUP BY a.сырье ;&& остаток на начало

UNION ;

SELECT a.сырье, 000000000000.0000, sum(a.кол_во) as приход,

000000000000.0000 as расход, 000000000000.0000 as остаток_на_конец;

FROM &TableName1 a WHERE &filter3_1 GROUP BY a.сырье ;&& приход

UNION ;

SELECT a.сырье, 000000000000.0000, sum(a.кол_во) as приход,

000000000000.0000 as расход, 000000000000.0000 as остаток_на_конец;

FROM &TableName1 a WHERE &filter4_1 GROUP BY a.сырье ;&& приход

UNION ;

SELECT a.сырье, 000000000000.0000, 000000000000.0000 as приход,

sum(a.кол_во) as расход, 000000000000.0000 as остаток_на_конец ;

FROM &TableName2 a WHERE &filter3_2 GROUP BY a.сырье ;&& расход

UNION ;

SELECT a.сырье, 000000000000.0000, 000000000000.0000 as приход,

sum(a.кол_во) as расход, 000000000000.0000 as остаток_на_конец ;

FROM &TableName2 a WHERE &filter4_2 GROUP BY a.сырье

INTO CURSOR query1&& расход

Итак в промежуточном хранилище набора данных остатка на начало сформированы приходная и расходная части выборки. Далее формируется набор данных остатка на конец.

* остаток_на_конец

SELECT a.сырье, sum(a.Остаток_на_начало) as Остаток_на_начало,

sum(a.приход) as приход, sum(a.расход) as расход,

sum(a.Остаток_на_начало)+sum(a.приход)-sum(a.расход) as остаток_на_конец;

FROM query1 a GROUP BY a.сырье INTO CURSOR свод

ThisForm.Pageframe1.свод.Grid1.RecordSource = [свод]

ThisForm.Pageframe1.свод.Init

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

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

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

Внутреннее перемещение сырья

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

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

Рисунок 13. Форма перевода сырья из одного цеха в другой.

Для того чтобы перевести сырье необходимо:

указать переводимое сырье в списке сырья;

указать дату перевода;

указать цех-источник;

указать цех-приемник;

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

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

IF MESSAGEBOX("Вы действительно хотите передать " + ;

ALLTRIM(ThisForm.List1.Value) + " из " + ThisForm.Combo1.Value+" в "+ ;

ThisForm.Combo2.Value + " ?", 4+32+256, "Передача сырья") = 6

* списываем в расход источника

INSERT INTO (table1)(дата, сырье, кол_во, принял);

VALUES (ThisForm.Text1.Value, ALLTRIM(ThisForm.List1.Value), ;

ThisForm.Text2.Value, "Перевод")

* списываем в приход приемника

INSERT INTO (table2)(дата, сырье, кол_во, принял) ;

VALUES (ThisForm.Text1.Value, ALLTRIM(ThisForm.List1.Value), ;

ThisForm.Text2.Value, "Перевод")

MESSAGEBOX("Передача завершена",64, "Передача сырья", 1)

ENDIF

Наряд-заказ

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

Рисунок 14. Ввод даты заказа.

После ввода даты осуществляется проверка корректности введенной даты, и если нет ошибок, запускается диалоговое окно ввода наряд-заказа (см. Рисунок 15).

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

Кнопка «Сформировать карточку» необходима для распечатки списка заказанной продукции и количества необходимого для реализации данного заказа продукции. Печатная карточка показана на Рисунке 16.

Рисунок 15. Окно ввода наряд-заказа.

Рисунок 16. Карточка наряд-заказа.

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

Изготовленная продукция

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

Рисунок 17. Форма отображения изготовленной продукции.

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

Касса

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

На Рисунке 18 изображена форма прихода денег в кассу.

Рисунок 18. Форма прихода в кассу.

Для того чтобы добавить запись в приход по кассе необходимо нажать кнопку «Добавить». После нажатия программа выведет на экран форму ввода в приход (см. Рисунок 19).

Рисунок 19. Форма ввода денег в приход кассы.

На Рисунках 20 и 21 изображены соответственно форма расходной части кассы и форма ввода в расходную часть кассы. Как в приходной форме, так и в расходной форме имеется возможность задания фильтров по различным параметрам. На пример можно задать интересующий Вас период или отфильтровать записи по поставщикам в расходе или покупателям в приходе. Имеется также возможность задания одновременно нескольких фильтров, например по поставщикам или покупателям в соответствии с заданным периодом.

Рисунок 20. Форма расхода из кассы

Рисунок 21. Форма ввода денег в расход кассы.

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

Рисунок 22. Отчет по приходу

Рисунок 23. Отчет по расходу

Отчеты

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

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

Рисунок 24. Окно ввода отчетного периода

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

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

Рисунок 25. Форма сличительного отчета.

Рисунок 26 - Форма количественного отчета

Сервис

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

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

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

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

Помощь

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

Во включенной в программу форме «о программе» находиться справочная информация о разработчике данной программы (см. Рисунок 27).

Рисунок 27. О программе

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

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

Procedure mClose

IF MESSAGEBOX('Вы уверены?',32+4,'Внимание!')=6

Close databases

Clear all

_Screen.ActiveForm.Release

ELSE

_Screen.ActiveForm.Refresh

EndIf

EndProc

Заключение

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

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

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

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

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

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

Список использованной литературы

1. Трудовой Кодекс Республики Казахстан (с изменениями и дополнениями по состоянию на 17.02.2012 год);

2. Генкин Б.М. Экономика и социология труда. Учебник для вузов, 1998. 384 с.

3. Организация и нормирование труда. Учебник для вузов/ Под ред. Ю.Г. Одегова - М.: Издательство «Экзамен», 2003. - 464с.;

4. Рофе А.И. Организация и нормирование труда: Учебник для вузов. - М.: Издательство «МИК», 2003. - 368с.

5. Зудина Л.Н. Организация управленческого труда: Учеб. пособие. - М.: ИНФРА-М; Новосибирск: НГАЭ и У, 1997. - 256с.;

6. Егоршин А.П., Зайцев А.К. Организация труда персонала: Учебник. - М.: ИНФРА-М, 2008. - 320с.;

7. Зудина Л.Н. Организация управленческого труда: Учеб. пособие. - М.: ИНФРА-М; Новосибирск: НГАЭ и У, 1997. - 256с.;

8. Хомоненко А.Д., Цыганков В.М, Мальцев М.Г. Базы данных. /Учебник для вузов. - СПб.: Корона-принт, 2002.

9. Григорьев Ю. А., Ревунков Г.И. Банки данных. / Учебник для вузов. - М.: Издательство МГТУ им. И.Э.Баумана, 2002.

10. Дейт К. Введение в системы баз данных. /Пер. с англ. - М.: Вильямс, 2001.

11. Когаловский М-Р. Энциклопедия технологий баз данных. - М.: Финансы и статистика, 2002.

12. Мейер Д. Теория реляционных баз данных. Alep. с англ,- М.: Мир,1987.

13. Хансен Г., Хансен Д. Базы данных. Разработка и управление. /Пер. с англ. -М.: Бином, 2000.

14. Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. /Пер. с англ.-М.: Вильямс, 2003.

15. Сичкаренко В.А. SQL-99. Руководство разработчика баз данных. - СПб-ДиаСофт, 2002.

16. Горев А., Ахаян Р., Макашарипов С. Эффективная работа с СУБД. - СПб.: Питер, 1997.

17. Мамаев Е.В. Microsoft SQL Server. - СПб.: БХВ-Санкт-Петербург, 2001.

18. Пэддок Р., Петерсен Дж., Тэлмейдж Р., Ренфт Э. Visual FoxPro 6. Разработка корпоративных приложений./Пер- с англ. -М.: ДМК, 1999.

19. Омельченко Л. Самоучитель Visual FoxPro 7.0. - СПб.: БХВ - Сапкт-Петсрбург, 2002.

20. Бэлсон Дон, Гокмен Марк, Ингрем Джонатан. Внутренний мир ORACLE 8. Проектирование и настройка. /Пер. с англ. - К.: ДиаСофт, 2000.

21. Фролов А., Фролов Г. Базы данных в Интернете: практическое руководство по созданию Web-приложений с базами данных. - М.: Русская редакция, 2000.

22. Мещеряков А.Е., Хомоненко А.Д. Публикация баз данных в Интернете. -СПб.: БХВ-Санкт-Петербург,2001.

23. Харрингтон Дж. Проектирование объектно-ориентированных баз данных. -/Пер. с англ. - М.: ДМК, 2001.

24. Цикритзис Д., Лоховски Ф. Модели данных. - М: Финансы и статистика, 1985.

25. Бойко В.В., Савинков B.В. Проектирование баз данных информационных систем. - М: Финансы и статистика, 1989.

26. Замулин А. Системы программирования баз данных и знаний. - Новосибирск: Наука. Сибирское отделение, 1990.

27. Дейт К. Введение в системы баз данных. - M: Мир, 1980.

28. Тиори Т., Фрай Дж. Проектирование структур баз данных в двух книгах. - М: Мир, 1985.

29. «Руководство разработчика баз данных». Шумаков, Фаронов.

30. «SQL Server 7.0» Ю.Тихомиров.

31. Бемер. С. FoxPro 2.6 для Windows. - Киев.: ВHV, 1995.

32. Long Jeb. FoxPro 2.6 for Windows. - Sams Pudlishing, 1994.

33. А.А.Попов. FoxPro 2.5/2.6. Создание приложений для FoxPro в DOS и Windows. ООО "ДЕСС". M.1997.

34. Попов А.А. Программирование в среде СУБД 2.0. Построение систем обработки данных. М., Радио и связь,1994.

35. Четвериков В.Н., Ревунков Г.И., Самохвалов Э.Н. Базы и банки данных. М.,Высшая школа,1987.

36. Лес Принтер. Разработка приложений в Microsoft FoxPro 2.5. M., TOO ЭДЕЛЬ, 1995.

37. FoxPro. Language Refrence.- Microsoft Corp.,1994.

38. Каратыгин С.А., Тихонов А.Ф., Тихонова Л.Н. Программирование в FoxPro для Windows на примерах . - М.: Бином,1995.

39. Бакуменко Л.П., Кудрявцева Ж.А. dBase. Практический курс для начинающих. Йошкар - Ола,1991.

40. Тони Лима. Введение в dBaseIV.M., Радио и связь, 1993.

Размещено на Allbest.ru


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

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