Delphi как новая версия компилятора языка Pascal. Знакомство с особенностями разработки программного средства "Инвентаризация незавершенного производства основных цехов в разрезе ярлыков". Характеристика этапов расчета себестоимости программного продукта.
Аннотация к работе
В рамках дипломного проектирования разрабатывается программное средство «Инвентаризация незавершенного производства основных цехов в разрезе ярлыков» реализация которого позволяет ответственным исполнителям создавать инвентаризационные ведомости в разрезе ярлыков, а так же исключить возможность появления ошибок. Требуется разработать программное средство «Инвентаризация незавершенного производства основных цехов в разрезе ярлыков», необходимо предоставить возможность формирования инвентаризационной ведомости, добавить возможность просмотра дополнительной информации по ярлыкам, а так же функцию, для корректировки результатов инвентаризации. Программное средство «Инвентаризация незавершенного производства основных цехов в разрезе ярлыков» предназначена для функционирования на предприятие ОАО «Электрокабель» Кольчугинский Завод» и должна обеспечивать выполнение следующих функций: · предоставлять возможность формирования новой или просмотра уже существующей инвентаризационной ведомости; После выбора режима «Инвентаризация по ярлыкам» показать экранную форму (рис.3) Если результат выполнения запроса 12.sql больше нуля, это означает, что ярлык не израсходован и тогда необходимо через функцию вернуть код изделия на ярлыке INVENT_YARLIKS_F.OKOD_PF, определенный следующим образом - 13.sql: SELECT KOD_IZD, PT, K_IZMСозданное программное средство позволяет освободить работников предприятия от утомительной и рутинной ручной работы, сократить время выполнения задания, предотвращает появления ошибок. Разработанная программа, может применяться на предприятие ОАО «Электрокабель Кольчугинский завод» для проведения инвентаризации.Таблица 6 YARLIKS - Шапки ярлыков (Таблица 7) Dat1 DATE "дата формирования ярлыка" Prixod NUMBER "количество намотанное" Rasxod NUMBER "количество израсходованное" INVENT - Инвентаризация незавершенного производства (Осн.Таблица) (Таблица 11).5. uses Windows, Messages, SYSUTILS, Classes, Graphics, Controls, Forms, Dialogs, 7. 26. procedure FORMACTIVATE(Sender: TOBJECT); 27. procedure FORMKEYDOWN(Sender: TOBJECT; var Key: Word; 58. procedure TFTAR.FORMKEYDOWN(Sender: TOBJECT; var Key: Word;Машинограмма Машинограмма печати дополнительных листов инвентаризационной ведомости.В поле «Цех» вводится номер цеха, если будет указан номер несуществующего цеха (например, 40), то выпадающий список поля участок будет пустым (не нашлось ни одного ярлыка в указанном цехе). В поле «Цех» введем правильный номер цеха и в выпадающем списке выберем поле «Участок» выберем 031100 «Участок по изготовлению силовых кабелей» Рис.36 эта кнопка активна, если в поле варианты выбора ведомости флажок стоит на строчке «Новая ведомость от текущего числа» иначе она не активна. Далее инвентаризационную ведомость можно распечатать в поле «Печать», нажав кнопку «Инвентаризационная ведомость», а так же можно распечатать дополнительные страницы нажав кнопку «Дополнительные страницы»указав их количество в поле «в количестве» Если не выбрать цех и участок и нажать кнопку «Инвентаризационная ведомость» в поле «печать», то появиться диалоговое окно с ошибкойНеобходимо выбрать программу «Учет выпуска продукции в цехе (фактической выработки)». При запуске программы появляется стартовое окно ORACLE LOGON где пользователь должен ввести USERNAME (имя пользователя), Password (пароль), сервер базы данных (ASTRA) определяется автоматически. После ввода данных пользователем в стартовом окне ORACLE LOGON, загружается экранная форма "Учет выпуска продукции" (основное меню). После выбора в основном меню "Учет выпуска продукции" пункт "Аналитика" загружается экранная форма "Аналитика". В окне "Варианты выбора ведомости" по умолчанию стоит "Новая ведомость от текущего числа", вариант выбора ведомости можно изменить на «Существующая ведомость».
Введение
delphi компилятор инвентаризация программный
В настоящее время вычислительные машины представляют собой одно из самых значительных достижений человека, которое оказывает огромное влияние, как на развитие научно-технического прогресса, так и любую предметную область, где используется ЭВМ. Наука и техника, культура и сельское хозяйство, быт и развлечение - во всех этих сферах человеческой деятельности компьютеры вносят свой неоценимый вклад.
Применение ЭВМ позволяет обеспечить высокую скорость выполнения сложных вычислительных операций и задач, обработку больших потоков информации, а также обеспечивает автоматизацию различных процессов. Особенно необходимым это является на производстве, поскольку оно связано с экономическим развитием общества. Современные ЭВМ могут обрабатывать информацию разных видов: текстовую, графическую, аудио, видео и т. д.
Широкое распространение ЭВМ породило индустриализацию создания и эксплуатации программного обеспечения. Работа с программным обеспечением ставится на поток, подчиняется жесткой дисциплине и технологии. Средства и методы разработки и эксплуатации программного обеспечения развиваются синхронно с совершенствованием аппаратуры.
Программное обеспечение как материальный объект в значительной мере представляется посредством различного рода документов. Качество документации является одним из весомых критериев оценки программного обеспечения и непосредственно влияет на его рейтинг, на рынке программной продукции.
Важным является овладение всеми этапами процесса создания программ, как продукции производственно-технического назначения.
В рамках дипломного проектирования разрабатывается программное средство «Инвентаризация незавершенного производства основных цехов в разрезе ярлыков» реализация которого позволяет ответственным исполнителям создавать инвентаризационные ведомости в разрезе ярлыков, а так же исключить возможность появления ошибок.
Программное средство предназначено для проведения инвентаризации на конкретных участках цехов основного производства предприятия.
1. Общая часть
1.1 Цель разработки
Целью дипломного проекта является изучить и доработать программное средство "Инвентаризация незавершенного производства основных цехов в разрезе ярлыков". Данная аналитическая программа активно используется на предприятии и поэтому ее доработка важна для получения более полной информации в разрезе ярлыковой системы.
Доработка делалась с целью: · предоставление возможности просмотра информации по концам;
· предоставление возможности просмотра информации по таре.
Данное программное средство актуально в рамках завода, так как в нем осуществляется анализ данных в реальный момент времени. А доработка программного средства необходима для получения более полной и детальной информации по ярлыкам в реальный момент времени. В настоящее время с помощью ЭВМ стало возможным более эффективно и быстро реализовать процедуру проведения инвентаризации, а так же освободить работников от утомительной и рутиной работы.
1.2 Анализ использования разработки
Программное средство "Инвентаризация незавершенного производства основных цехов в разрезе ярлыков" разработано непосредственно для ОАО «Электрокабель» Кольчугинский завод». Программное средство разработано для проведения инвентаризации на конкретных участках цехов основного производства завода.
Пользователями этой программы являются: · мастера участков;
· распределители работ;
· диспетчера.
Данное программное средство может использоваться на других предприятиях, выпускающих кабельно-проводниковую продукцию, которые имеют аналогичную организационную структуру. Но внедрение данного программного продукта на других предприятиях потребует частичной доработки и внесения изменений в БД и в базы нормативно-справочной информации.
1.3 Анализ методов решения
К методам решения данной задачи можно отнести: ручной метод и автоматизированный.
Ручным методом осуществляется ввод запросов для отображения информации: - ввод номера цеха;
- выбор участка по цеху;
- выбор даты, на которую была составлена инвентаризационная ведомость;
- выбор фильтров для сортировки (по коду изделия/полуфабриката, по дате формирования ярлыка, по номеру ярлыка);
- вариант выбора ведомости.
Автоматизированным методом осуществляется формирование данных по запросу, формирование отчетов (машинограмм - инвентаризационная ведомость на определенную дату). Алгоритм любой задачи реализуется с помощью определенных средств программирования.
1.4 Обзор средств программирования
Средства автоматизации - это и инструментальные системы, с помощью которых создаются новые программные продукты, и готовые программные комплексы, настраивающиеся на нужды конкретного пользователя. В данном случае к инструментальным системам относится язык программирования Delphi и СУБД ORACLE.
СУБД ORACLE используется в течение нескольких лет в качестве корпоративной СУБД на предприятии ОАО «Электрокабель «Кольчугинский завод». Тем не менее, стоит привести краткую характеристику особенностей СУБД ORACLE, которые сыграли доминирующую роль при выборе СУБД.
СУБД ORACLE поддерживают свыше 80 вариантов операционной среды в широком диапазоне, включая мэйнфреймы IMB, мини-компьютеры DEC VEX, мини-компьютеры с операционной системой UNIX, Windows NT и множество других платформ. Сегодня фирма ORACLE - крупнейший производитель СУБД в мире. После появления на рынке продукта ORACLE7 фирма заняла доминирующее положение в области СУБД.
ORACLE по всем параметрам является СУБД, поскольку она поддерживает словарь данных и множество уровней безопасности, предлагает средства, гарантирующие целостность данных, организует параллельный доступ и обеспечивает языковой интерфейс. ORACLE обслуживает словарь данных в схемах SYS и SYSTEM, которые сохраняются в табличном пространстве SYSTEM. ORACLE предлагает учет пользователей на уровне базы данных, идентификацию пользователей средствами операционной системы, определение и отслеживание их ролей, привилегии и профилей. Естественно, поддерживаются представления SQL. Использование ресурсов регулируется профилями.
Целостность обеспечивается с помощью механизма декларативной целостности для первичных и внешних ключей. При этом нужно просто указать ключ (тогда отпадает необходимость в написании специальных программ, которые должны были бы гарантировать целостность).
Delphi в качестве среды разработки приложений так же, как и ORACLE в качестве СУБД, является корпоративным стандартом на предприятии ОАО «Электрокабель «Кольчугинский завод».
В комплектации ORACLE Enterprise Edition поставляется программный пакет SQL Navigator, который предоставляет удобный интерфейс к БД для разработчиков и программистов.
Интерфейс пользователя с Oracle осуществляется с помощью структурированного языка запросов SQL, первоначально разработанного фирмой IBM и в настоящее время ставшего составной частью СУРБД Oracle. Этот язык данных, на котором пользователь осуществляет управление и поддержку СУРБД Oracle.
[Дейв Энсор, Йен Стивенсон. Огасlе. Проектирование баз данных: пер. c англ. -К.: Издательская группа BHV, Киев,2008]
SQL является одновременно языком интерактивных запросов и языком программирования базы данных.
Язык SQL состоит из операторов четырех основных типов: - операторы определения данных (например, CREATE), которые служат для установки и поддержания базы данных;
- операторы манипулирования данными (INSERT, UPDATE, DELETE) служат для изменения данных в базе;
- запросы. Для восстановления данных из базы данных необходимо всегда использовать запрос. Запросы всегда начинаются с зарезервированного слова SELECT, за которым следует желаемая информация и имена содержащих ее таблиц;
- операторы управления данными. Такие операторы управляют доступом к данным и определяют как, когда и кем может осуществляться манипулирование данными.
Первые три типа применяются всеми пользователями для создания и поддержки базы данных, а четвертый - администраторами баз данных.
Delphi - это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi - строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.
Delphi позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. В состав пакета включены разнообразные утилиты, обеспечивающие работу с базами данных, создание справочной системы, решение других задач. Borland Delphi может работать в среде операционных систем от Windows 98 до Windows 8.
Delphi включает в себя среду для создания программ, напоминающую Visual Basic и включающую в себя средство для наглядного создания программ и редактор для написания кода.
В Delphi практически все создаваемые программы являются объектно-ориентированными. Delphi - это не просто новая версия компилятора языка Pascal, а принципиально новый программный продукт, позволяющий создавать широкий спектр приложений для среды Microsoft Windows. Основное назначение Delphi - служить средством для быстрого создания широкого класса Windows-приложений, включая приложения, отвечающие технологи распределенной обработки данных, называемой технологией «клиент-сервер».
[Кандюзюба С.П., Громов В.Н. Delphi Базы данных и приложения. Лекции и упражнения - K.: Издательство ДИАСОФТ 2007]
2. Специальная часть
2.1 Постановка задачи
Требуется разработать программное средство «Инвентаризация незавершенного производства основных цехов в разрезе ярлыков», необходимо предоставить возможность формирования инвентаризационной ведомости, добавить возможность просмотра дополнительной информации по ярлыкам, а так же функцию, для корректировки результатов инвентаризации.
2.1.1 Назначение задачи
Программное средство «Инвентаризация незавершенного производства основных цехов в разрезе ярлыков» предназначена для функционирования на предприятие ОАО «Электрокабель» Кольчугинский Завод» и должна обеспечивать выполнение следующих функций: · предоставлять возможность формирования новой или просмотра уже существующей инвентаризационной ведомости;
· печати новой инвентаризационной ведомости или уже существующей инвентаризационной ведомости;
· предоставлять возможность просмотра информации по концам ярлыка;
· предоставлять возможность просмотра информации по таре ярлыка;
· предоставлять возможность работать с уже существующей инвентаризационной ведомостью;
· предоставлять возможность печати дополнительных листов для инвентаризационной ведомости;
· предоставлять возможность обработки результатов прошедшей инвентаризации.
Разработанное программное средство устанавливается в участках цехов основного производства, используется мастерами участков и распределителями работ периодически при возникновении необходимости проведения инвентаризации в подразделении. Схема бизнес-процессов представлена в ГРАФИЧЕСКОЙ ЧАСТИ 1.
2.1.2 Описание задачи
Входными данными будет являться ручной ввод информации в конкретные поля, после анализа информации и передачи ее все данные записываются в хранимые таблицы и пользователю предоставляется возможность работы с этими данными.
Хранимые таблицы: OBORUD - Планирование и фактический выпуск продукции;
YARLIKS - Шапки ярлыков;
OBOR_NAMOT - Спецификация ярлыка;
DVIG_YARLIKS - Таблица документов, отслеживающих движение ярлыков;
NALICH_YARLIKS - Наличие ярлыков в подразделении;
INVENT - Инвентаризация незавершенного производства (Осн. Таблица);
Справочники: KOD_PODR - Подразделения завода.
NAPF - Справочник полуфабрикатов;
POSTIZD - Справочник готовых изделий;
NAIV - Справочник единиц измерения;.
Программный модуль выполняет формирование инвентаризационной ведомости на основании входных данных.
Входные данные: · Номер цеха;
· Участок;
· Дата.
Выходные данные: Выходные данные представляют собой экранную форму и форму печати инвентаризационной ведомости (машинограмма).
Экранные формы: - ЭФ1 «Учет выпуска продукции»;
- ЭФ2 «Аналитика»;
- ЭФ3 «Инвентаризация по ярлыкам»;
- ЭФ4 «Информация по концам»;
- ЭФ5 «Информация по таре»;
- ЭФ6 «Стандартная форма просмотра и печати отчетов (машинограмм)».
Отчеты (машинограммы): - Инвентаризационная ведомость на определенную дату;
- Печать дополнительных страниц
2.1.3 Требования к программе и аппаратному обеспечению
Основные требования, предъявляемые к программному средству: · Модуль формирования инвентаризационной ведомости должен быть реализован в СУБД ORACLE, в среде программирования DELPHI 3 под управлением ОС WINDOWS, начиная с WINDOWS 95.
· работа пользователя с задачей должна осуществляться через экранные формы;
· защита информации от несанкционированного доступа и несанкционированных действий должна включать следующие этапы: защита на уровне доступа в сеть (сетевой пароль), защита на уровне доступа в задачу (пароль ORACLE);
· Модуль должен быть реализован на персональных ЭВМ (ПЭВМ) типа IBM PC, установленных непосредственно на рабочих местах работников, объединенных в информационную сеть;
· реализация алгоритмов должна осуществляться на технических средствах действующих автоматизированных рабочих мест.
Для корректного функционирования модуля необходимы следующие технические средства: Персональный компьютер, в состав которого входит: · системная плата (ASUS P5GC-VM (LGA 775, i945GC ICH7, MATX));
· жесткий диск (Seagate Barracuda 7200.10 ST380815AS 80 Гб, SERIALATA-II);
· сетевой адаптер (Realtek RTL8139 Family PCI Fast Ethernet NIC);
· корпус (ASUS TT 671, ATX, 300 Вт);
· клавиатура (Mitsumi Classic (PS/2));
· мышь (Genius XSCROLL Optical);
· программное обеспечение (Microsoft Windows XP Pro Rus).
В скобках указаны конкретные характеристики технических средств, которые используются на ОАО «Электрокабель «Кольчугинский завод».
Данный набор средств является идеальным для исправной работы разработанного модуля.
2.2 Описание алгоритма
Программный продукт "Инвентаризация незавершенного производства основных цехов в разрезе ярлыков" в своем программном содержании имеет 6 экранных форм: - «Учет выпуска продукции» (Men), которой соответствует модуль UMENU;
- «Аналитика» (FANALIT), которой соответствует модуль UANALIT;
- «Инвентаризация по ярлыкам» (FINVENT) (главная), которой соответствует модуль UINVENT;
- «Информация по концам» (FKON1), которой соответствует модуль UFKON1;
- «Инвентаризация по таре» (FTAR), которой соответствует модуль UFTAR;
- «Стандартная форма просмотра и печати отчетов (машинограмм)» (FREPVIEW), которой соответствует модуль - Repv.
В пункт меню «Аналитика» добавить режим «Инвентаризация по ярлыкам» (рис.2)
Рис. 1 - Учет выпуска продукции (основное меню)
Рис.2 - Пункт меню «Аналитика»
После выбора режима «Инвентаризация по ярлыкам» показать экранную форму (рис.3)
Рис. 3 - Экранная форма «Инвентаризация по ярлыкам»
В шапку экранной формы (рис.4) ввести запрос в виде: Цех XCEX
Участок XKOD_PODR - 1.sql: SELECT DISTINCT N.KOD_NALICH, K.NAIMP
INTO XKOD_PODR
FROM NALICH_YARLIKS N, KODPODR K
WHERE N.KOD_NALICH=K.KOD_PODR
AND N.KOD_NALICH LIKE :XCEX
Рис. 4 - Ввод информации в шапку экранной формы
После выбора из списка одного кода участка показать фильтр, для сортировки выводимой информации (рис.5).
Рис . 5 - Фильтр для сортировки
Под фильтром для сортировки поместить комментарий «В колонку 1 проставить цифры, определяющие порядок сортировки информации, помещаемой в инвентаризационную ведомость (1, 2, 3)».
Если в фильтре не указан особый принцип сортировки, по умолчанию данные сортировать следующим образом: код изделия (XKOD_PF), дата ярлыка (XDAT1), номер ярлыка (XNOMER).
После определения порядка сортировки предложить варианты выбора формирования инвентаризационной ведомости (рис.6)
Рис. 6 - Варианты выбора ведомости
Рис. 7 - Заполненная экранная форма «Инвентаризация по ярлыкам»
Если выбран пункт «Новая ведомость от текущего числа» проанализировать, не была ли уже произведена передача данных по инвентаризации за данное число - 2.sql: SELECT COUNT(*)
FROM INVENT
WHERE GOD_MES=:XGOD_MES AND KOD_PODR=:XKOD_PODR
AND TRUNC(DATV)=:XDAT AND PRIZN="Я" где XDAT - текущая дата, XGOD_MES - месяц и год текущей даты (ММГГ), XKOD_PODR - XKOD_PODR из запроса.
Если результат выполнения запроса 2.sql равен нулю, тогда в заголовок поместить системную дату (рис.8).
Дата SYSDATE
Рис. 8 - Дата формирования инвентаризационной ведомости
После определения даты поместить в экранную форму информацию следующим образом - 3.sql: SELECT N.NOMER, N.DAT1, N.KOD_PF, NRK.GET_OP_NAME_F(N.KOD_PF, N.PT, NULL), N.OST, V.N_IZM
FROM NALICH_YARLIKS N, OBOR_NAMOT O, NAIV V
WHERE N.NOMER=O.NOMER AND N.DAT1=O.DAT1
AND N.K_IZM=V.K_IZM AND N.KOD_NALICH=:XKOD_PODR
ORDER BY N.KOD_PF, N.DAT1, N.NOMER
Выбранные в запросе 3.sql данные поместить в экранную форму в виде (рис.9)
Рис.9 - Пример данных в экранной форме
Если результат выполнения запроса 2.sql больше нуля - это означает, что за текущую дату уже была сформирована инвентаризационная ведомость, и тогда выдать на экран сообщение (рис.10).
Рис
И тогда перевести фокус на пункт «Существующая ведомость», для выбора даты показать список существующих ведомостей (рис.11).
Рис. 11 - Список выбора дат
И данные в экранную форму помещать следующим образом - 4.sql: SELECT I.NOMER_YR, I.DATA_YR, I.KOD_IZD, NRK.GET_OP_NAME_F(I.KOD_IZD, I.PT, NULL), I.KOL_VO, V.N_IZM
FROM INVENT I, NAIV V
WHERE I.K_IZM=V.K_IZM AND I.GOD_MES=:XGOD_MES
AND I.KOD_PODR=:XKOD_PODR AND TRUNC(I.DAT_N)=:XDAT
Данные в экранной форме отсортировать или по выбранному принципу сортировки, если он был определен, или по умолчанию.
Рис. 12 - Экранная форма «Инвентаризация по ярлыкам» с другим вариантом выбора ведомости
Если выбран пункт «Существующая ведомость» показать список дат сформированных инвентаризационных ведомостей - 5.sql: SELECT DISTINCT TRUNC(DAT_N) DAT_N
FROM INVENT
WHERE KOD_PODR=:XKOD_PODR AND PRIZN="Я"
ORDER BY DAT_N DESC
После выбора из списка одной из дат в заголовок поместить
Дата DATE_N
И данные в экранную форму помещать следующим образом - 4.sql.
В экранную форму поместить кнопку «Передача данных» (рис.13). Если происходит работа с новой инвентаризационной ведомостью, кнопка «Передача данных» активна.
Рис. 13 - Кнопка «Передача данных» активная
Если происходит работа с уже существующей ведомостью, кнопка «Передача данных инвентаризации» не активна (рис.14).
Рис. 14 - Кнопка «Передача данных» не активная
Рис. 15 - Диалоговое окно о начале передачи данных
При нажатии кнопки «Передача данных инвентаризации» вывести на экран сообщение (рис.16)
Рис. 16 - Сообщение об успешной передачи данных
Если «Да», произвести insert в таблицу INVENT.
В таблице IVENT сформировать строки по каждому ярлыку, попавшему в ведомость, заполняя поля следующими значениями: GOD_MES месяц и год текущей даты (ММГГ)
KOD_PODR XKOD_PODR
KOD_IZD KOD_PF (3.sql)
KOL_VO OST (3.sql)
K_IZM K_IZM (3.sql)
DATV SYSDATE (с минутами и секундами)
OPERAT OPERAT.N_OPER определить по LOGNAME
PT PT (3.sql)
DAT_N SYSDATE (с минутами и секундами)
N_POS № записываемой строки по порядку
PV ‘YR’
NOMER_YR NOMER (3.sql)
DATA_YR DAT1 (3.sql)
В экранную форму поместить кнопку «Печать». (рис.17)
При нажатии кнопки «Печать» показать список для выбора: · Инвентаризационная ведомость
· Дополнительные страницы
Рис. 17 - Кнопка печати инвентаризационной ведомости и дополнительных страниц
Если выбран пункт «Инвентаризационная ведомость» сформировать машинограмму по данным из экранной формы в виде: Инвентаризационная ведомость в разрезе ярлыков по подразделению XKOD_PODR - NAIMP за DAT_N
Таблица
№ п/п № ярлыка Дата Код изделия Наименование Колво Ед.изм.
Шапка на каждой странице. Ведомость разбить на страницы. Страницы пронумеровать.
В конце каждой станицы место для подписи: Ответственный за инвентаризацию ______ /______/
В конце машинограммы: кто получил и когда - дата и время.
Данные в машинограмму помещать следующим образом - 6.sql: SELECT I.N_POS, I.NOMER_YR, I.DATA_YR, I.KOD_IZD, NRK.GET_OP_NAME_F(I.KOD_IZD, I.PT, NULL), I.KOL_VO, V.N_IZM
FROM INVENT I, NAIV V
WHERE I.K_IZM=V.K_IZM AND I.GOD_MES=:XGOD_MES
AND I.KOD_PODR=:XKOD_PODR AND TRUNC(I.DAT_N)=:XDAT
AND I.PRIZN="Я" AND (I.PV IS NULL OR I.PV="YR")
ORDER BY I.N_POS
Если в экранную форму не введен запрос и не выбраны данные, тогда при нажатии кнопки «Печать» выдать на экран сообщение (Рис18).
Рис. 18 - Диалоговое окно «ошибка печати»
Если выбран пункт «Дополнительные страницы», спросить: Введите количество страниц для печати: KOL_STR (рис. 19)
Рис. 19 - Поле печати дополнительных страниц
После ввода количества страниц сформировать машинограмму в виде (рис20).
Шапка на каждой странице. Таблицу не заполнять. Страницы пронумеровать.
В конце каждой станицы место для подписи: Ответственный за ввод _____ /______________/
2. Написать функцию, которая ответит диспетчеру, удалять ли ярлык, зафиксированный в инвентаризации, или записать ли новый ярлык, который не был записан в инвентаризационной ведомости - INVENT_YARLIKS_F - корректировка инвентаризации в разрезе ярлыков.
На вход функции подавать: VPRIZN ‘N’ - недостача или ‘I’ - излишки
VNOMER номер ярлыка
VDAT1дата формирования ярлыка
VKOL_VO количество на ярлыке
VDAT_N дата проведения инвентаризации
VKOD_PODR код подразделения
Функция вернет: OKOD_PF код изделия на ярлыке
OPT тип справочника
OK_IZM код единицы измерения
При вызове функции проверить, был ли в принципе сформирован данный ярлык - 7.sql: SELECT COUNT(*)
FROM YARLIKS
WHERE NOMER=:VNOMER AND DAT1=:VDAT1
Если результат запроса равен нулю, вернуть сообщение (рис.21) и никаких дальнейших действий не предпринимать.
Рис. 21 - Сообщение о не формировании ярлыка
Если результат запроса больше нуля, проанализировать VPRIZN.
Если VPRIZN=’I’ определить дату и время начала формирования ярлыка - 8.sql: SELECT MIN(DAT_VV_P)
INTO DAT_VV_P
FROM OBOR_NAMOT
WHERE NOMER=:VNOMER AND DAT1=:VDAT1
Сравнить полученные в результате выполнения запроса 8.sql дату и время с датой и временем VDAT_N. Если DAT_VV_P > VDAT_N, вернуть сообщение (рис.22) и никаких дальнейших действий не предпринимать.
Рис. 22 - Сообщение о формирование ярлыка, после получения ведомости
Если DAT_VV_P < VDAT_N, определить, не находился ли ярлык в другом подразделении в момент передачи данных по инвентаризации - 9.sql: SELECT *
INTO XKOD_PODR
FROM (
SELECT KOD_POTR FROM DVIG_YARLIKS
WHERE NPP_YARLIKS IN (
SELECT NPP
FROM YARLIKS
WHERE NOMER=:VNOMER AND DAT1=:VDAT1)
AND STAMP_DAT<:VDAT_N
ORDER BY STAMP_DAT DESC)
WHERE ROWNUM=1
Если запрос 9.sql вернул XKOD_PODR, сравнить его с VKOD_PODR, подаваемым на вход функции.
Если коды совпадают, определить код изделия, тип справочника и единицу измерения на ярлыке с помощью функции KOD_IZD_YARLIKS_F (см. ниже) и вернуть его через функцию INVENT_YARLIKS_F.OKOD_PF.
Если коды не совпадают, выдать сообщение (рис.23) и все дальнейшие действия прекратить.
Рис. 23 - Сообщение о нахождении ярлыка другом подразделении на момент получения ведомости
Если запрос 9.sql ничего не вернул, тогда определить, в каком подразделении был выпущен ярлык - 10.sql: SELECT DISTINCT O.KOD_PODR
INTO XKOD_PODR
FROM OBOR_NAMOT N, OBORUD O
WHERE N.GOD_MES=O.GOD_MES AND N.NOM=O.NOM
AND N.NOMER=:VNOMER AND N.DAT1=:VDAT1
Сравнить XKOD_PODR и VKOD_PODR.
Если коды совпадают, определить код изделия, тип справочника и единицу измерения на ярлыке с помощью функции KOD_IZD_YARLIKS_F (см. ниже) и вернуть его через функцию INVENT_YARLIKS_F.OKOD_PF.
Если коды не совпадают, выдать сообщение (рис.24) и все дальнейшие действия прекратить.
Рис. 24 - Сообщение о нахождении ярлыка в другом подразделении.
Если VPRIZN=’N’ определить, было ли движение ярлыка после проведения инвентаризации - 11.sql: SELECT COUNT(*)
FROM DVIG_YARLIKS
WHERE NPP_YARLIKS IN (
SELECT NPP
FROM YARLIKS
WHERE NOMER=:VNOMER AND DAT1=:VDAT1)
AND STAMP_DAT>:VDAT_N
Если результат выполнения запроса 11.sql больше нуля, это означает, что ярлык имелся в наличии на момент передачи данных, но потом был отправлен в другое подразделение. Тогда выдать сообщение(рис.25) и все дальнейшие действия прекратить.
Рис. 25 - Сообщение об отправке ярлыка в другое подразделение
Если результат выполнения запроса 11.sql равен нулю, проверить не израсходован ли ярлык полностью - 12.sql: SELECT COUNT(*)
FROM NALICH_YARLIKS
WHERE NOMER=:VNOMER AND DAT1=:VDAT1
Если результат выполнения запроса 12.sql больше нуля, это означает, что ярлык не израсходован и тогда необходимо через функцию вернуть код изделия на ярлыке INVENT_YARLIKS_F.OKOD_PF, определенный следующим образом - 13.sql: SELECT KOD_IZD, PT, K_IZM
INTO OKOD_PF, OPT, OK_IZM
FROM INVENT
WHERE NOMER_YR=:VNOMER AND DATA_YR=:VDAT1
AND DAT_N=:VDAT_N AND PRIZN="Я"
По указанному ярлыку необходимо провести корректировку количества в ноль.
Рассчитать количество, на которое должна пройти корректировка по ярлыку - 14.sql: SELECT SUM(PRIXOD)-SUM(NVL(RASXOD,0)) OST
INTO XOST
FROM OBOR_NAMOT
WHERE NOMER=:VNOMER AND DAT1=:VDAT1
Посмотреть, была ли по данному ярлыку проведена уже корректировка количества (строка с SOB=’4’).
Если была проведена корректировка количества, тогда в эту строку прибавить к полю PRIXOD полученное XOST с противоположным знаком. Если в результате значение поля PRIXOD получится равным нулю, строку с SOB=’4’ удалить.
Если не была проведена корректировка количества, тогда сформировать строку в таблице OBOR_NAMOT, заполнив следующие поля: NOMER XNOMER
N_NAM MAX(N_NAM) 1
N_KON MAX(N_KON)
SOB 4
PRIXOD XOST
DAT_VV_P SYSDATE
OPERAT_P LOGNAME
N_TAR N_TAR
DAT1 DAT1
PR_PRIXOD 1
NPP из последовательности
NOMER_PARTY NOMER_PARTY
UNION_USER UNION_USER
UNION_DAT UNION_DAT
STAMP_USER STAMP_USER
STAMP_DAT STAMP_DAT
KOD_OP_NEXT KOD_OP_NEXT
SET_PR_ID SET_PR_ID
KOD_POTR KOD_POTR
TIP_DOK TIP_DOK
PODR_FORM PODR_FORM
N_SJEM N_SJEM
Данные для записи брать из обрабатываемого ярлыка.
Если результат выполнения запроса 12.sql равен нулю, это означает, что ярлык израсходован полностью и тогда необходимо определить, была ли произведена корректировка количества на ярлыке - 15.sql: SELECT MAX(DAT_VV_P)
INTO XDAT_VV_P
FROM OBOR_NAMOT
WHERE NOMER=:VNOMER AND DAT1=:VDAT1 AND SOB="4"
Если запрос 15.sql вернул значение, тогда сравнить XDAT_VV_P и VDAT_N: Если XDAT_VV_P > VDAT_N, вернуть нормальное завершение функции.
Если XDAT_VV_P < VDAT_N, определить время проведения последнего расхода с ярлыка - 16.sql.
Если запрос 15.sql ничего не вернул, тогда определить время проведения последнего расхода с ярлыка - 16.sql: SELECT MAX(T.D_VV)
INTO D_VV
FROM OBOR_NAMOT N, TAR_TAR T
WHERE N.NPP=T.NPP2 AND N.NOMER=:VNOMER AND N.DAT1=:VDAT1
Сравнить полученные в результате выполнения запроса 16.sql дату и время с датой и временем VDAT_N.
Если D_VV > VDAT_N, выдать сообщение (рис.26) и все дальнейшие действия прекратить.
Рис. 26 - Сообщение о причине отсутствия ярлыка
Если D_VV < VDAT_N, вернуть нормальное завершение функции, но такого не должно быть!!!
Если VPRIZN=’YR’ определить, была ли произведена корректировка количества по указанному ярлыку - 17.sql: SELECT MAX(DAT_VV_P)
INTO XDAT_VV_P
FROM OBOR_NAMOT
WHERE NOMER=:VNOMER AND DAT1=:VDAT1 AND SOB="4"
Если запрос 17.sql ничего не вернул, тогда вернуть нормальное завершение функции.
Если запрос 17.sql вернул значение, тогда сравнить XDAT_VV_P и VDAT_N: Если XDAT_VV_P < VDAT_N, вернуть нормальное завершение функции.
Если XDAT_VV_P > VDAT_N, удалить строку по ярлыку с SOB=’4’ и вернуть нормальное завершение функции.
Написать функцию KOD_IZD_YARLIKS_F, определяющую последний код изделия, тип справочника и единицу измерения на ярлыке, следующим образом: Входные параметры: VNOMER номер ярлыка
VDAT1 дата ярлыка
Выходные параметры: OKOD_PF код изделия на ярлыке
OPT тип справочника
OK_IZM код единицы измерения
1. Попытаться найти этот ярлык в таблице NALICH_YARLIKS - 18.sql: SELECT KOD_PF, PT, K_IZM
INTO OKOD_PF, OPT, OK_IZM
FROM NALICH_YARLIKS
WHERE NOMER=:VNOMER AND DAT1=:VDAT1
2. Если при выполнении запроса 18.sql ярлык не найден, определить, проводилось ли по ярлыку изменение статуса - 19.sql: SELECT KOD_IZD_1, TIP_SPR_1
INTO OKOD_PF, OPT
FROM YARLIKS
WHERE NOMER=:VNOMER AND DAT1=:VDAT1
Если в результате выполнения запроса 19.sql выбрались данные, то единицу измерения определить из нижеописанных запросов - 20.sql или 21.sql или 22.sql.
3. Если изменение статуса не производилось, определить, привязан ли ярлык, к строке плана - 20.sql: SELECT O.KOD_PF, O.PT, O.NAIZM
INTO OKOD_PF, OPT, OK_IZM
FROM OBOR_NAMOT N, OBORUD O
WHERE N.GOD_MES=O.GOD_MES AND N.NOM=O.NOM AND N.NOMER=:VNOMER
AND N.DAT1=:VDAT1
4. Если ярлык не привязан к строке плана (OBOR_NAMOT.GOD_MES IS NULL AND OBOR_NAMOT.NOM IS NULL), тогда определить, с подачи какой задачи был сформирован виртуальный ярлык, и получить требуемые данные из той задачи: - если OBOR_NAMOT.N_PRG=’47’ - 21.sql: SELECT S.KOD_IZD, 93 PT, P.K_IZM
INTO OKOD_PF, OPT, OK_IZM
FROM OBOR_NAMOT N, SVOD S, POSTIZD P
WHERE N.N_ZAP=S.SPEC_ID AND N.N_TAR=S.N_TAR
AND N.NOMER_PARTY=S.N_NAKL AND S.N_ZAP_I=P.NOMER
AND N.NOMER=:VNOMER AND N.DAT1=:VDAT1
- если OBOR_NAMOT.N_PRG=’292’ - 22.sql: SELECT S.KOD_IZD, 93 PT, P.K_IZM
INTO OKOD_PF, OPT, OK_IZM
FROM OBOR_NAMOT N, SVOD S, POSTIZD P
WHERE N.N_ZAP=S.SPEC_ID AND N.N_TAR=S.N_TAR
AND N.NOMER_PARTY=S.N_NAKL AND S.N_ZAP_I=P.NOMER
AND N.NOMER=:VNOMER AND N.DAT1=:VDAT1
В экранную форму добавить кнопку « Информация по концам» (рис. 27)
Рис. 27 - Кнопка «Информация по концам»
При нажатии этой кнопки на конкретном ярлыке (NOMER, DAT1) показать форму в виде(рис. 28) :
Рис.28 - Экранная форма «Информация по концам»
Информация по концам
Таблица. Ярлык NOMER Дата ярлыка DAT1
№ конца Количество на конце
N_KON OST
Данные в экранную форму поместить следующим образом - 23.sql: SELECT NOMER, DAT1, N_KON, SUM(NVL(PRIXOD,0))-SUM(NVL(RASXOD,0)) OST
FROM OBOR_NAMOT
WHERE NOMER=:NOMER AND DAT1=:DAT1
GROUP BY NOMER, DAT1, N_KON
ORDER BY N_KON
В экранную форму добавить кнопку « Информация по таре» (рис.29).
Рис. 29 - Кнопка «Информация по таре»
При нажатии этой кнопки на конкретном ярлыке (NOMER, DAT1) показать форму в виде (рис.30).
Рис. 30 - Экранная форма «Информация по таре»
Таблица
Информация по таре
Ярлык NALICH_YARLIKS.nomer Дата NALICH_YARLIKS.dat1
Код тары NALICH_YARLIKS. Kod_tar
Наименование тары DECODE(shortname,NULL,SUBSTR(naim,1,36), shortname) from all_kod where KOD=nalich_yarliks.kod_tar
Номер тары NALICH_YARLIKS. N_tar
Данные в экранную форму поместить следующим образом: - 24 sql.
FROM YARLIKS Y, OBOR_NAMOT N, ALL_KOD A WHERE Y.NOMER=N.NOMER AND Y.DAT1=N.DAT1
AND Y.KOD_TAR=A.KOD
AND Y.NOMER=:NOMER AND N.DAT1=:DAT1
Рис. 31 -Структурная схема программы
Функции и назначение модулей программы: Функции и назначение модулей программы: - модуль UMENU: основное меню, которое было разработано работниками предприятия для облегчения доступа к конкретной задаче. Экранная форма данного меню имеет имя «Учет выпуска продукции»;
- модуль UANALIT: этот модуль обеспечивает выбор режима «Инвентаризация по ярлыкам»;
- модуль UINVENT отвечает за режим «Инвентаризация по ярлыкам»;
- модуль Repv: отвечает за просмотр и печать отчетов (машинограмм) по ведомости наличия;
- модуль UFKON1: обеспечивает просмотр информации по концам;
- модуль UFTAR: обеспечивает просмотр информации по таре;
Для доступа в разработанную задачу в основном меню необходимо выбрать пункт «Аналитика».
2.3 Текст программы с описанием
Программный продукт "Инвентаризация незавершенного производства в разрезе ярлыков" реализуется в среде СУБД «ORACLE» на языке DELPHI 3 под управлением ОС WINDOWS. Программный комплекс "Инвентаризация незавершенного производства в разрезе ярлыков", который содержит все модули программы и EXE-файл для доступа и работы с задачей на жестком диске занимает 2.23 МБ
Входными данными являются: ручная инвентаризационная ведомость, а также информация, взятая из таблиц БД связанных между собой и представляющих тем самым ER-диаграмму, которая приведена в ГРАФИЧЕСКОЙ ЧАСТИ 2.
Входные данные представлены в виде следующих таблиц: OBORUD
YARLIKS, OBOR_NAMOT, DVIG_YARLIKS, NALICH_YARLIKS, INVENT, KOD_PODR, NAPF, POSTIZD, NAIV,ALL_KOD и находится в ПРИЛОЖЕНИИ 1.
Схема алгоритма задачи (Блок схема) программного средства «Инве» находится в ГРАФИЧЕСКОЙ ЧАСТИ 3.
В ПРИЛОЖЕНИИ 2 приведен листинг программы.
Выходные данные представляют из себя машинограмму и представлены в ПРИЛОЖЕНИИ 3.
2.4 Описание процесса отладки программы и оценка результатов решения
Успешное завершение процесса компиляции не означает, что в программе нет ошибок. Чтобы убедиться в правильности работы программы необходимо выполнить процесс проверки ее работоспособности, который называется тестирование.
Редко программа начинает сразу работать как надо или работает правильно только с определенным ограниченным набором исходных данных. Это означает, что в программе есть алгоритмические ошибки. Процесс поиска и устранение ошибок называется отладкой.
Ошибки, которые могут возникнуть в программе, принято делить на три группы: - синтаксические;
- ошибки времени выполнения;
- алгоритмические.
Синтаксические ошибки, их также называют ошибками времени компиляции (Compile-time error), наиболее легко устранимы. Их обнаруживает компилятор, а программисту остается только внести изменения в текст программы и выполнить повторную компиляцию.
Ошибки времени выполнения, в Delphi они называются исключениями (exception), тоже, как правило, легко устранимы. Они обычно проявляются уже при первых запусках программы и во время тестирования.
С алгоритмическими ошибками все иначе. Компиляция программы, в которой есть алгоритмическая ошибка, завершается успешно. При пробных запусках программа отрабатывает нормально, однако при анализе результата выясняется, что он неверный. Для того чтобы устранить алгоритмическую ошибку, приходится анализировать алгоритм вручную. В ходе разработки программного средства возникали все вышеперечисленные типы ошибок.
Тестирование программного средства "Инвентаризация незавершенного производства основных цехов в разрезе ярлыков" находится в ПРИЛОЖЕНИИ 4 .
3. Экономическая часть
3.1 Расчет себестоимости программного продукта «Инвентаризация незавершенного производства основных цехов в разрезе ярлыков»
3.1.1 Расчет трудоемкости разработки
Основанием для расчета трудоемкости программного продукта «Инвентаризация незавершенного производства основных цехов в разрезе ярлыков» является нормативно-расчетная карта для разработчика и программиста ОАО «Электрокабель «Кольчугинский завод».Расчет трудоемкости данного программного продукта по стадиям представлен в таблице 1.
Таблица 1 Расчет трудоемкости
Стадия разработки программного средства Затраты времени, чел-час. № нормы из НРК
1 2 3
1. Предпроектное обследование
Разработчик: - формирование требований к ПС - изучение объекта проектирования - изучение справочного материала - анализ выполняемых функций ПС - анализ использования ПС - техническое задание 48 16
2. Постановка задачи
Разработчик: - назначение задачи - описание задачи - описание структуры программы - описание алгоритма задачи 48 5
3. Разработка программного средства
Разработчик: - Изучение экранной формы: "Инв. по ярлыкам" 2 категории сложности 8 1
Таблица
1 2 3
Разработчик: - Изучение функции: INVENT_YARLIKS_F - корректировка инвентаризации в разрезе ярлыков. 2 категории сложности 32 4
Разработчик: - Изучение функции: KOD_IZD_YARLIKS_F - определяющую последний код изделия, тип справочника и единицу измерения на ярлыке. 1 категории сложности 8 4
Разработчик: - Изучение машинограммы: а) базовая машинограмма б) печать дополнительных страниц 8 5
Разработчик: - Проектирование экранных форм: "Информация по концам" "Информация по таре" 1 категории сложности 8 1
Программист: - Создание экранных форм: "Информация по концам" "Информация по таре" 1 категории сложности 24 2
4. Отладка программного средства
Разработчик: - тестирование, 1 категории сложности 8 18
3.1.3 Расчет начислений на заработную плату (единого социального налога)
Расчет начислений осуществляется по формуле 3.5.
, (3.5) где - начисления на заработную плату исполнителя, руб.;
ЕСН - единый социальный налог
Вывод
Целью данного дипломного проекта являлась изучение и доработка программного средства "Инвентаризация незавершенного производства основных цехов в разрезе ярлыков".
Созданное программное средство позволяет освободить работников предприятия от утомительной и рутинной ручной работы, сократить время выполнения задания, предотвращает появления ошибок. Облегчает процедуру проведения инвентаризации.
Разработанная программа, может применяться на предприятие ОАО «Электрокабель Кольчугинский завод» для проведения инвентаризации.
В процессе дипломного проектирования были изучены новые возможности Delphi, ORACLE. Были изучены вопросы, касающиеся организации труда и техники безопасности на предприятии. В экономической части дипломной работы был произведен расчет себестоимости созданного программного продукта.
Список литературы
1.Кандюзюба С.П., Громов В.Н. Delphi Базы данных и приложения. Лекции и упражнения - K.: Издательство ДИАСОФТ 2007