Разработка программного обеспечения модулей системы инвентаризации
Основные процессы учёта имущества и трудности, связанные с ними. Требования к модулям системы инвентаризации. Стандарт, алгоритм и программы распознавания QR-кода. Разработка программного обеспечения для генерации QR-кода на языке программирования Python.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 07.08.2018 |
Размер файла | 5,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Федеральное агентство связи
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Поволжский государственный университет телекоммуникаций и информатики»
Факультет Заочного обучения
Направление Информатика и вычислительная техника
Кафедра Программного обеспечения и управления в технических системах
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
Разработка программного обеспечения модулей системы инвентаризации
Разработал А.И. Бур
Самара 2017
Отзыв руководителя
Актуальность темы. Бакалаврская работа студента Бура Алексея Ивановича направлена на разработку программного обеспечения для модулей системы инвентаризации. Оно позволит автоматизировать и оптимизировать данный процесс. Актуальность настоящей работы обусловлена тем, что результаты разработки могут быть использованы в работе любого предприятия или организации. Для студента же эта работа является хорошей учебной площадкой для отработки навыков по разработке программного обеспечения.
Оценка содержания работы. Бакалаврская работа состоит из введения, основной части, заключения, списка литературы и приложений. Основная часть диплома состоит из 3 глав. В первой главе представлен анализ предметной области, процессы, протекающие при инвентаризации и учете имущества. Во второй главе проводится обзор технологии QR-кодов. Приводится обзор средств считывания QR-кода. В третьей главе описана структура разработанного программного обеспечения для генерации QR-кода, описывается выбранный язык программирования Python. В Заключении приводятся основные результаты и выводы по работе. Приложения содержат: исходный код (Приложение А), презентационный материал (Приложение Б).
Степень достижения цели и практическая значимость. Бакалаврская работа выполнена в соответствии с заданием. Задачи, поставленные перед студентом, были проделаны в полном объеме, работа имеет практическую ценность в области разработки программного обеспечения. Результаты, полученные при разработке ПО по генерации QR-кода, могут быть внедрены в любую организацию для автоматизации системы инвентаризации.
Заключения по представленной работе. При выполнении работы, связанной с тематикой бакалаврской работы, Бур Алексей Иванович проявил себя как хороший программист, способный решить самостоятельно поставленные перед ним задачи. В ходе выполнения работы продемонстрирован достаточный уровень знаний и специальной подготовки в профессиональной области.
Считаю, что бакалаврская работа заслуживает оценки «отлично», а студенту Буру Алексею Ивановичу может быть присвоена степень «бакалавра» по специальности - «Информатика и вычислительная техника».
Аннотация
Бакалаврская работа заключается в разработке программного обеспечения модулей системы инвентаризации. Основные задачи, которые будет выполнять программный продукт - это генерация QR-кода, при помощи которого и будет осуществляться учет. Языком программирования был выбран Python.
алгоритм инвентаризация код программирование
Введение
Различного рода предприятия нередко сталкиваются с трудностями в учёте и организации процессов управления объектов собственности. В особенности, для государственных и муниципальных учреждений такого рода учёт становится обязательным, строгим, структурированным. На лиц, заведующих имуществом, ложится серьезная ответственность, поэтому возникает надобность держать все под контролем и в строгом порядке. Зачастую информация по объектам необходима в ограниченные сроки, и ее непросто найти. Материально ответственным лицам необходимо постоянно контролировать состояние объектов, их местоположение, перемещения, учитывать срок полезного использования и характеристики имущества организации. Вся информация должна быть свежей и актуальной.
Объектом исследования является разработка программного обеспечения в рамках задания ВКР. Предметом исследования проектирование программного обеспечения и процесс учёта имущества путем создания информационной системы.
Таким образом, целью данной дипломной работы является разработка программного обеспечения системы инвентаризации. Основные задачи, которые будет выполнять программный продукт - это генерация QR-кода, при помощи которого и будет осуществляться учет.
Для достижения поставленной цели были сформулированы следующие задачи:
· описать процессы, протекающие при инвентаризации и учете имущества;
· провести обзор существующих решений по учету и инвентаризации имущества;
· провести анализ ПО для считывания QR-кода;
· изучить язык программирования Python;
· изучить технологию QR-кода;
· разработать программное обеспечение для генерации QR-кода;
· описать разработанное ПО.
Языком программирования был выбран Python, его основы были прекрасно описаны в книге Марка Лутца «Изучаем Python». В рамках данной исследовательской работы использовались так же и электронные ресурсы удаленного доступа, а для анализа предметной области использовались приказы министерства финансов РФ и постановления правительства РФ.
Бакалаврская работа состоит из введения, основной части, заключения, списка литературы и приложений. Основная часть диплома состоит из 3 глав. В первой главе представлен анализ предметной области, процессы, протекающие при инвентаризации и учете имущества. Во второй главе проводится обзор технологии QR-кодов. Приводится обзор средств считывания QR-кода. В третьей главе описана структура разработанного программного обеспечения для генерации QR-кода, описывается выбранный язык программирования Python. В Заключении приводятся основные результаты и выводы по работе. Приложения содержат: исходный код (Приложение А), презентационный материал (Приложение Б).
Разработанное программное обеспечение может быть использовано в системах учета имущества и инвентаризации в любых организациях и учреждениях.
1. Анализ предметной области
В данной главе описаны проблемы инвентаризации объектов учета и способы их решения. А именно, выявляются трудности, связанные с процессом учёта имущества и рассматриваются некоторых программные комплексы, существующие на рынке, которые автоматизируют данный процесс.
- 1.1 Основные процессы учёта имущества и трудности, связанные с ними
Имущество организации является основным объектом бухгалтерского учёта, а регистрация, сбор и обобщение информации о таковом - основной его задачей. Для его учёта существуют четкие правила и обязательные для проведения мероприятия, которые сопровождаются строгой отчетностью. Под имуществом в данном контексте понимается совокупность материальных, финансовых и нематериальных активов, принадлежащих предприятию и предназначенных для осуществления его деятельности [1].
В данной бакалаврской работе рассматривается только материально-вещественное имущество, которое вверяется материально ответственному лицу. С этого момента у такого сотрудника появляется обязанность собирать информацию о подотчётном имуществе и отслеживать его состояние. Именно такого рода учёт является основным объектом внимания настоящей бакалаврской работы.
На большинстве предприятий и в учреждениях учёт имущества ведется в рукописных журналах, что затрудняет предоставлять актуальную информацию о его состоянии. В связи с этим было принято решение рассмотреть основные процессы, с которыми сталкивается материально ответственное лицо при учёте вверенного имущества на предприятии и автоматизировать их с целью упрощения учёта и решения проблемы об актуальности информации. Следует отметить, что данные процессы неразрывно связаны с работой бухгалтерии, которая уже может быть успешно автоматизирована и не является объектом внимания данной работы. Далее будут рассмотрены процессы, связанные с инвентаризацией и учетом имущества.
Все бизнес-процессы легко описать с помощью диаграмм IDEF0. Существует ряд правил составления IDEF0 диаграмм [2]:
· все функции и интерфейсы представлены как блоки и дуги;
· место соединения дуги с блоком определяет тип интерфейса:
-управляющая информация входит в блок сверху,
-входная информация входит в блок слева,
- результаты выходят из блока справа,
- механизм (человек или автоматизированная система), который осуществляет операцию, входит в блок снизу.
1. Поступление объектов имущества
Данный процесс возникает при необходимости в получении нового оборудования на предприятии по запросу материально ответственного лица. Далее запрос обрабатывается, покупается оборудование, ставится на учёт в бухгалтерии и ему присваиваются инвентарные номера. Затем новое оборудование передается на предприятие, где на него наносится маркировка. Последним этапом переданное оборудование закрепляется за определенным рабочим местом, где оно и будет находиться [3].
Процесс поступления имущества показан на рис. 1.1 и рис.1.2.
В данном бизнес-процессе для материально ответственного лица важно отразить новое оборудование у себя в учёте, оформить его маркировку и закрепить за рабочим местом.
2. Инвентаризация имущества
Данное мероприятие обычно проводится по инициативе бухгалтерии в назначенные ею сроки. Материально ответственному лицу поступает инвентаризационная ведомость или список, в котором отображено все инвентарное имущество, числящееся за ним. Проводится осмотр наличия объектов имущества и соответствие их наличия спискам. Заполненная ведомость передается обратно в бухгалтерию. Наглядно данный процесс изображен следующим образом (рис. 1.3, рис. 1.4).
Рис. 1.1 - Диаграмма IDEF0 «Поступление имущества» (базовый уровень)
Рис. 1.2 - Диаграмма IDEF0 «Поступление имущества» (детализация)
Для процесса инвентаризации материально ответственному лицу важно знать реальное место нахождения имущества, а для его ускорения и исключения ошибок, связанных с человеческим фактором, необходимо применение оборудования, с помощью которого бы было отмечено наличие или отсутствие инвентарного имущества на рабочем месте.
Рис. 1.3 - Диаграмма IDEF0 «Инвентаризация» (базовый уровень)
Рис. 1.4 - Диаграмма IDEF0 «Инвентаризация» (детализация)
3. Списание имущества
Когда имущество больше не способно приносить пользу оно подвергается процедуре списания. В результате инвентарный объект снимается с баланса и с подотчетности материально ответственного лица [4].
Такая ситуация возникает в случае поломки имущества, которое не подлежит восстановлению. Данное состояние должно быть подтверждено заключением экспертизы о неисправной поломке [5]. Кроме того, основанием к списанию может служить моральный и физический износ имущества.
Процесс списания имущества отображен на рис. 1.5 и рис. 1.6.
Рис. 1.5 - Диаграмма IDEF0 «Списание имущества» (базовый уровень)
Кроме основных процессов инвентарное имущество при использовании подвергается таким операциям, как:
· перемещение на другое рабочее место, о котором материально ответственное лицо должно быть информировано;
· текущие ремонты, которые тоже должны быть объектом внимания материально ответственного лица.
Таким образом, можно сделать вывод о том, что материально ответственному лицу непросто собирать информацию, отражающую действительное состояние и текущее местоположение имущества, если вести учёт в рукописных журналах. Такая информация теряется, устаревает или не отражается совсем. Все это затрудняет дальнейший поиск имущества и восстановление полного представления о его состоянии. Исходя из этого, проблемы, связанные с инвентаризацией имущества, легко решить при внедрении программного обеспечения, которое позволит автоматизировать процесс.
Рис. 1.6 - Диаграмма IDEF0 «Списание имущества» (детальный уровень)
1.2 Обзор существующих программных продуктов
1.2.1 «1С: Предприятие 8. Инвентаризация и управление имуществом»
Данное программное решение разработано в целях автоматизации бизнес-процессов по управлению объектами имущества для снижения материальных и временных затрат.
Функциональность конфигурации "Инвентаризация и управление имуществом" определяется списком подсистем, которые входят в ее состав [6]:
1. управление имуществом:
· поступление имущества;
· выдача со склада;
· списание имущества;
· передача имущества;
· возврат на склад;
· присвоение имуществу штрих-кода и (или) RFID-метки;
2. управление инвентаризациями;
3. плановые осмотры;
4. мобильные приложения:
· присвоение штрих-кода и (или) RFID-метки объектам имущества;
· получение информации об объекте имущества по ранее присвоенному штрих-коду и (или) RFID-метке;
· доступ к списку справочников имущества непосредственно с КПК;
· создание документов выдачи, возврата, передачи имущества и присвоения меток;
5. выполнение заданий инвентаризации и осмотра имущества;
6. аналитическая отчетность.
1.2.2 Программно-аппаратный комплекс «KEEP COUNT Основные средства»
Программная разработка компании «САОТРОН» для учета имущества и проведения инвентаризации с помощью терминала сбора данных.
Функциональные возможности [7]:
· инвентаризация основных средств с помощью терминала сбора данных;
· ведение основных справочников;
· ввод данных о поступлении, отпуске или перемещении имущества;
· учёт срока эксплуатации и своевременное выявление его истечения;
· печать этикеток, содержащих инвентарные номера, наименование, штриховой код и другую информацию.
1.2.3 Программный комплекс «icControl 5.0»
Данное решение для управления имуществом предприятия создано на базе технологий автоматической идентификации и web-технологий.
Функционал программы весьма обширен. К основным функциям относятся [8]:
· полный учёт и контроль имущества - контроль за движением и состоянием объектов учёта всех структурных подразделений, настройка иерархии местоположения объекта вплоть до конкретного рабочего места (рис. 1.7);
· разделение прав доступа - механизм разграничения прав доступа обеспечивает возможность безопасной работы каждого структурного подразделения со своими данными;
· автоматизация процесса инвентаризации путем сканирования штрих-кодов;
· предотвращение хищений - контроль несанкционированного перемещения объектов учёта при использовании RFID-меток, позволяющих дистанционно идентифицировать объект и его перемещение (требуется дополнительное оборудование);
· отслеживание и сопровождение - контроль соблюдения сроков эксплуатации. Отслеживание профилактических и ремонтных работ объектов учёта;
· паспорт объекта - возможность привязки к объекту учёта файлов произвольного формата (фото объекта, скан-копия лицензии и т.п.);
· отчетность и аналитика - формирование отчетных документов, представление отчетной информации в виде таблиц и графиков;
· веб-технология - вход в систему осуществляется через web-браузер из любой точки. Система не требует установки на компьютеры пользователей.
Рис. 1.7 - Модуль «Учет»
1.2.4 «Управление имуществом 1.0»
Программа предназначена для инвентаризации и контроля использования технических устройств, например, компьютеров, принтеров, телефонов и прочих технических средств компании. Основными функциями программы являются прием и списание, инвентаризация технических устройств с указанием материально-ответственных лиц, передача техники в эксплуатацию (контроль использования) сотрудникам компании, формирование отчетности (книги имущества, книги инвентаризации, карточки пользователей) [9]. Интерфейс программы представлен на рис.1.8.
Рис. 1.8 - Основное окно программы «Управление имуществом 1.0»
1.3 Сравнительный анализ функциональных возможностей систем автоматизации
В ходе обзора были выбраны программные продукты, которые обладают сходным функционалом, позволяющим автоматизировать процесс управления имуществом. По результатам отбора был проведен сравнительный анализ, итоги которого приведены в табл. 1.1.
Таблица 1.1 Сравнительный анализ программных продуктов для автоматизации управления имуществом
1С:Предприятие Инвентаризация и управление имуществом |
Программно-аппаратный комплекс «KEEP COUNT Основные средства» |
Программный комплекс icControl 5.0 |
Управление имуществом 1.0 |
||
Реестр имущества, контроль за движением и состоянием объектов |
+ |
+ |
+ |
+ |
|
Контроль соблюдения сроков эксплуатации |
+ |
+ |
+ |
- |
|
Отчеты |
+ |
+ |
+ |
+ |
|
Инвентаризация по средствам штрих кодирования |
+ |
+ |
+ |
- |
|
Внешнее считывающее устройство |
терминал сбора данных |
терминал сбора данных |
планшет iPad |
- |
|
Стоимость |
50 000 р. (5 рабочих мест) |
35 500р. |
34 000р. |
бесплатно |
1.4 Требования к разрабатываемым модулям системы инвентаризации
В рамках задач бакалаврской работы необходимо разработать модули системы инвентаризации, что позволит оптимизировать и автоматизировать процесс учета объектов предприятия.
В результате анализа предметной области модули системы инвентаризации должны проводить учет имущества по QR-коду. Таким образом, информация об объекте не потеряется, всегда будет понятна, не сотрется, и его с легкостью можно будет идентифицировать. На каждый объект крепится QR-метка, которая содержит информацию:
· об идентификационном номере единицы учета;
· о ее названии;
· о материально ответственном лице.
Данный QR-код легко распознать с помощью мобильного устройства (телефона, планшета). Тем самым в процессе инвентаризации (рис. 1.3 и рис. 1.4), этап со сверкой со списком происходит гораздо быстрее. На сегодняшний день существует множество мобильных приложений для разных операционных систем по сканированию и распознаванию QR-кода. Анализ их будет произведен во второй главе бакалаврской работы. Поэтому главной задачей считается написание модуля генерации QR-кода для учета имущества, а не его считывание. Далее сгенерированный код распечатывается на принтере и крепится к объекту учета.
Следовательно, к модулям разрабатываемой системы инвентаризации были предъявлены следующие требования:
· генерирование и печать QR-кодов на основе инвентарного номера; названия и материально ответвленного лица;
· проведение инвентаризации с помощью считывателя QR-кодов на мобильном телефоне.
2. Технология QR-кода
Главные задачи, которые ставятся перед разрабатываемым программным обеспечением, это генерация и считывание QR-кода, которым маркируется объект инвентаризации и учета. В этой части дипломной работы будет подробно рассмотрена данная технология.
"Аббревиатура QR означает «Quick Response», что переводится на русский язык как «быстрый отклик» или как «быстро распознаваемый» - это двухмерный штрих - код (Bar-код), предоставляющий информацию для быстрого ее распознавания с помощью камеры на мобильном телефоне"[10].
"Система QR была разработана в Японии в 1994 году компанией Denso - Wave, входящей в состав организации Toyota. Необходимость их разработки появилась в 80-х годах, в связи с повышением требований к машиночитаемым кодам японской промышленностью. Задача этих кодов обусловлена хранением большого объема информации на небольшой площади поверхности. При этом сканированию не должны препятствовать поверхностные повреждения и частичные загрязнения кода. Изначально QR-кода использовали исключительно в промышленных целях. После, область их применения была значительно расширена, заняв определенное место в нашей жизни"[10].
2.1 Информация, содержащаяся в QR-коде
В наше время QR-код можно встретить на рекламных щитах, на улицах города, в магазинах, на упаковках продуктов питания и на любой другой продукции. Потому что в QR-коде может содержаться разнообразная информация: буквы, цифры, знаки. В данной технологии есть различные варианты изменения текста. Благодаря этому факту устройство, которое сканирует QR-код, безошибочно определяет хранящую информацию. Наиболее распространены форматы, которые могут храниться в QR-коде [11]:
1. Интернет-адрес. QR-код, хранящий в себе ссылку на интернет-ресурс чаще всего находится в газетах и на рекламных объявления. После распознавания данного кода считывающее устройство откроет пользователю сайт. Тем самым избавляя пользователя кропотливо вводить интернет-адрес в строку браузера. Сайт может содержать, например, информацию о каком-либо продукте или более обширную информацию о какой-либо статье.
2. Контактные данные. QR-код, содержащий ту или иную контактную информацию чаще всего можно увидеть на визитках. Просканировав QR-код с данной информацией, пользователь может сохранить считанные данные на мобильное устройство. Таким образом, пользователь экономит время на ввод контактных данных.
3. Адрес электронной почты. QR-код может содержать адрес электронной почты и имя адресата. Считав QR-код с такой информацией пользователю не понадобиться вручную, вводить адрес, чтобы отправить электронное письмо, а надо после считывания QR-кода нажать на одну кнопку и письмо будет отправлено.
4. SMS. Часто для участия в акции надо отправить SMS. QR-код избавит от необходимости набора номера телефона и самого текста сообщения. Необходимо считать QR-код и на дисплее телефона увидите готовое сообщение, после чего следует нажать на кнопку «Отправить».
5. "Геоданные. QR-код может содержать геоданные. Это позволяет посмотреть расположение интересующего объекта на карте, например, в «Картах Google»".
6. Текст. QR-код, хранящий текст может быть пригоден для разных целей. Например, для хранения стихотворения.
7. Телефонные номера. QR-код может хранить номер телефона. При сканировании такой информации пользователь может сохранить номер телефона, а так же сразу сделать звонок, если программа-сканер позволяет.
2.2 Стандарт QR-кода
"Термин QR-code на данный момент является зарегистрированной торговой маркой DENSO Corporation, использование кодов не облагается никакими лицензионными отчислениями, а сами они описаны и опубликованы в качестве стандартов ISO/IEC 18004:200. В данном стандарте описываются версии. В данном случае понятие «версия» подразумевает размер символа (квадрата) QR-кода"[10].
Всего существует 40 версий. Первая имеет размер 21х21 точек, каждая следующая на 4 больше. Максимальный размер QR-кода: 177х177 точек. "Информация в QR-коде располагается в двух направлениях - как по горизонтали, так и по вертикали, в то время как в штрих-коде информация размещается только в одном направлении. В отличие от обычных штрих-кодов, которые хранят максимум 20 символов, QR-код способен хранить во много раз больше информации. Это практически все типы данных: цифровые и буквенные знаки, несколько разновидностей иероглифов, символы и т.д" [12].
Максимальное количество символов, которые помещаются в один QR-код [12]:
· цифры - 7089;
· цифры и буквы (включая кириллицу) - 4296;
· двоичный код - 2953 байт;
· иероглифы - 1817.
Еще одно преимущество QR-кода - его способность восстанавливать содержащуюся в нем информацию. Даже если символ частично загрязнен или поврежден, с помощью системы коррекции ошибок на базе кодов Рида-Соломона (пункт 2.4.1), который рассмотрен ниже восстановлению подлежит до 30% кодовых слов. В табл. 2.1 значения качества коррекции ошибок QR-кода в зависимости от уровня.
Таблица 2.1 Качество коррекции ошибок QR- кода
Уровень L |
~ 7% |
|
Уровень M |
~ 15% |
|
Уровень Q |
~ 25% |
|
Уровень H |
~ 30% |
"Уровень Lотлично подходит для веб QR-кодов, которые не могут повредиться.
Уровень М подходит для обычного использования. Например, печати на визитках, плакатах.
Уровни Qи H подходят для использования на наклейках или упаковках, у которых вероятность повредиться более высокая"[12].
2.3 Структура символа
Любой кодовый символ QR (рис.2.1) строится из номинально квадратных модулей, находящихся в квадратном множестве, и состоящих изобластей: quiet zona (тихая зона), position detection patterns (образцы обнаружения положения), separators for position detection patterns (сепараторы для образцов обнаружения положения), timing patterns (временные шаблоны), alignment patterns (выравнивающие шаблоны), format information (информация о формате), versionin formation (информация о версии), data and error correction code words (информация и кодовые слова для исправления ошибок).
Есть сорок размеров кодового символа QR, называемого Версией 1, Версией 2... Версия 40. Версия 1 измеряет 21 модуль x 21 модуль, Версия 2 измеряет 25 модулей x 25 модулей, и так далее увеличивающихся в шагах 4 модулей за сторону до Версии 40, которая измеряет 177 модулей x 177 модулей. Рис.2.2 - рис. 2.7 иллюстрируют структуру Версий 1, 2, 6, 7, 14 и 21.
Рис. 2.1 - Структура Кодового символа QR
Рис. 2.2 - 1 и 2 версии
На рис. 2.2 - рис. 2.6 наглядно показан матричный способ разбиения картинки кода. Блоки необязательно должны быть квадратными, в версиях более высокого уровня имеют еще более замысловатую форму и их плотность увеличивается. Расположение блоков с данными может варьироваться друг относительно друг. Чтобы распределить блоков с данными равномерно по полю, используются маски.
Рис. 2.3 - Версия 6
Рис. 2.4 - Версия 7
Рис. 2.5 - Версия 14
Рис. 2.6 - Версия 21
Существуют восемь стандартных масок (табл. 2.2[1]):
Таблица 2.2 Комбинации масок
Маска |
Состояние |
|
000 |
(i+ j) mod 2 = 0 |
|
001 |
i mod 2 = 0 |
|
010 |
j mod 3 = 0 |
|
011 |
( i + j ) mod 3 = 0 |
|
100 |
(( i div 2) +(j div 3)) mod 2 = 0 |
|
101 |
(i j) mod 2 +(i j) mod 3 = 0 |
|
110 |
((i j) mod 2 +(i j) mod 3) mod 2 = 0 |
|
111 |
((i j) mod 3 + (i + j) mod 3) mod 2 = 0 |
На рис. 2.7 представлено более наглядное изображение структуры QR-кода, где разными цветами показаны его функциональные составляющие, о которых говорилось ранее.
Рис. 2.7 - Наглядное представление структуры символа
Для считывания заложенной информации в QR-коде, он строится по определенному шаблону. Рассмотрим его составляющие более подробно.
Шаблон поиска - Finder pattern
Шаблон поиска (образец искателя) должен состоять из трех идентичных «Образцов Обнаружения Положения». Они располагаются в верхнем левом, верхнем правом и в нижнем левом углах символа как показано на рис. 2.1 и рис. 2.7. Они могут рассматриваться, как три добавленных квадрата, и построены из трех модулей: темный 7х7, светлый 5х5 и темный 3х3. Отношение ширин модуля 1:1:3:1:1 как показано на рис. 2.8. Идентификация трех «Образцов Обнаружения Положения» однозначно определяет местоположение и ориентацию символа в поле зрения.
Рис. 2.8 - Структура шаблона поиска
Выравнивающий шаблон - Alignment pattern
Каждый шаблон выравнивания или направления состоит из трех квадратов, расположенных друг в друге: темного размерность 5х5 модулей, светлого 3х3 и одного центрального темного. Данный шаблон используется, начиная со второй версии (чем выше версия, тем выравнивающих шаблонов больше). Выравнивающий шаблон QR-кода помогает при декодировании. Декодер с помощью этих шаблонов преобразует перекошенный QR-код в виртуальную сетку данных. На рис. 2.9 изображено считывание QR-кода, где 1,2,3 - шаблон поиска (Finder pattern), а 4 - выравнивающий шаблон (Alignment pattern).
Сепаратор - Separator
Сепаратор - это белая линия с одной стороны между информацией о формате и шаблоном поиска, а с другой между информацией о версии и шаблоном поиска. Этот светлый модуль необходим для отделения шаблона поиска рис. 2.1 и рис. 2.7.
Рис. 2.9 - Считывание QR-кода, где 1,2,3 - шаблон поиска (Finder pattern), а 4 - выравнивающий шаблон (Alignment pattern)
Временные шаблоны - Timing pattern
Временные шаблоны (синяя линия рис. 2.7, штрихпунктирная линия рис. 2.1) расположены горизонтально и вертикально. Соответственно они состоят из одного модуля, или широкой строки, или широкого столбца переменно чередую темный и светлый модуль, начиная и заканчивая темным. Рисунок горизонтального временного шаблона проходит по 6 строке символов между сепараторами верхнего уровня, которые определяю положение. Рисунок вертикального временного шаблона проходит точно так же как и горизонтальный только между верхним и нижним сепараторами по левой стороне QR-кода. Благодаря временным шаблонам можно определить местоположение версии информации и информацию о формате.
Информация о формате - Format information (красная линия рис. 2.7)
Содержит информацию об уровне коррекции и коде маски, облегчает сканирование кода. Данные в символах маскируются путем изменения модуля в определенных позициях. Выбранные маски хранятся в двух местах вместе с версией коррекции ошибок, чтобы декодер «узнавал» какие модули ему считывать. После того, как информация о формате данных закодирована в 15 бит, она располагается в двух местах в символе.
Информация о версии - Version information (желтые прямоугольники рис. 2.7)
Эта часть кода содержит номер используемой версии QR-кода. Она занимает 18 модулей и находится слева в верхнем правом углу рядом с шаблоном поиска. Эта информация находится в блоке размером 3 модуля в ширину и 6 модулей в длину. Дубликат версии помещается напротив левой стороны символа, чуть выше правого нижнего шаблона поиска - 3 модуля в высоту и 6 модулей в ширину.
Информация и кодовые слова для исправления ошибок - Data and Error Correction Cowards (серый узор рис. 2.7)
После кодирования данных, применяется алгоритм коррекции ошибок, чтобы считать данные с QR-кода. Это позволяет работать с нечеткими частями QR-кода. Этот узор содержит основные данные, зашифрованные в коде.
Тихая зона - Quiet zone (зеленая линия рис. 2.7)
Отступ вокруг кода важен для того, чтобы считывающее устройство могло отличить код от окружающей информации. Это «пустое» пространство составляет четыре модуля по всему символу.
2.4 Алгоритм QR-кода
"Особенность данного типа кодов в том, что они легко расшифровываются не только посредством специального сканера, но и с помощью любого смартфона, оснащенного фотокамерой и достаточно простым программным обеспечение, что открывает перспективы его применения в повседневной жизни. Так же данный код можно прочитать вручную"[12].
Далее будет рассмотрен алгоритм декодирования информации через QR.
"Данные, которые необходимо закодировать, разбиваются на блоки. К разбитым по блокам данным прибавляется заголовок, указывающий режим и количество блоков. На случай некорректного чтения данных применяются специальные коды, которые способны исправить недочеты при чтении. Это так называемые коды Рида-Соломона (RS) (описаны ниже) записываются после всех информационных данных"[12].
Данные с RS-кодами перед записью в QR-код «перемешиваются». Для этих целей используются маски. Существует 8 алгоритмов, среди которых выбирается наилучший. Критерии выбора основаны на системе штрафов [12].
Процедура декодирования символа:
1) Найти и получить изображения символа. Преобразовать темные и светлые модули в виде массива “0” и “1” бит.
2) Определяется (читается) формат информации. На данном этапе выполняются следующие шаги: определения маскировки символа, коррекция ошибок.
3) Определяется версия символа.
4) Выполняется маскировка по XOR битной кодировке области маскировки символа.
5) Читается символ в символе в соответствии с правилами размещения информации в структуре QR-кода.
6) Обнаружение ошибок с помощью кодовых слов коррекции ошибок. Если ошибка обнаружена, то происходит ее исправление.
7) Разделение данных кодового слова на сегменты в соответствии с режимом.
8) Вывод результата.
Информацию можно разбить на две части: системная информация и данные. Существует информация о версии кода. От версии кода зависит максимальный объем данных, которые могут быть записаны в код.
Рис. 2.10 - Алгоритм извлечения данных
2.4.1 Алгоритм Рида-Соломона
"Кодировщик представляет собой совокупность сдвиговых регистров (shift registers), которые объединены с помощью сумматоров и множителей. Данные операции проводятся на основе арифметики Галуа. Сдвиговый регистр представляет собой последовательность ячеек памяти, называемых разрядами, каждый из которых содержит один элемент поля Галуа GF(q). Содержащийся в разряде символ, покидая этот разряд, «выстреливается» на выходную линию. Одновременно с этим разряд «засасывает» символ, находящийся на входе. Замещение символов происходит дискретно, в строго определенные промежутки времени, называемые тактами"[13].
При аппаратной реализации сдвигового регистра его элементы могут быть объединены как последовательно, так и параллельно. Блок-схема цепи, осуществляющего деление полинома на константу, приведена на рис. 2.11.
Рис. 2.11 - Устройство простейшего кодера Рида-Соломона
Деление реализуется с помощью умножения и сложения. Данный способ основывается на вычислении системы двух рекуррентных равенств:
(2.1)
"Где Q(r)(x) и R(r)(x)- соответственно частное и остаток на r-шаге рекурсии"[13].
"Поскольку сложение и вычитание, выполняемое по модулю два, тождественны друг другу, для реализации делителя нам достаточно иметь всего два устройства - устройство сложения и устройство умножения, а без устройства вычитания можно обойтись. Формула (2.1) предназначена для деления полинома на константу посредством умножения и сложения" [13].
" После n-сдвигов на выходе регистра появляется частное, а в самом регистре окажется остаток, который и представляет собой рассчитанные символы четности (они же - коды Рида-Соломона), а коэффициенты умножения с g0 по g(2t - 1) напрямую соответствуют коэффициентам умножения порожденного полинома" [13].
2.5 Программы - распознавания QR-кода
На сегодняшний день существует огромное количество мобильных приложений для распознавания QR-кода. Ниже перечислены только некоторые из них в соответствии с мобильной операционной системой или моделью телефона [14]:
1. BeeTagg - Android OS, iPhone, Symbian, Windows Mobile, Windows Phone, Java, Palm OS, Blackberry.
2. QuickMark - Windows Mobile, Windows Phone, Symbian, Android OS, iPhone, Bada.
3. I-nigma - Windows Mobile, Windows Phone, iPhone, Android OS, Blackberry, Symbian, Java, Bada.
4. Kaywa reader - J2ME,Symbian, Windows Mobile, iPhone, Android OS.
5. Scan Life - Windows Mobile, Blackberry, Android OS, iPhone, Java.
6. Upcode reader - UIQ, Windows mobile, Iphone, Blackberry, Android OS, Java, Symbian.
7. Barcodes Scanner - iPhone.
8. Barcode Scanner - Android OS.
9. Data Symbol - Android OS, iPhone, Symbian, Windows Mobile.
10. Microsoft Tag - Android OS, iPhone, Symbian, Windows Mobile, Windows Phone, Java, Blackberry
11. Neo Reader - Android OS, iPhone, Symbian, Windows Mobile, Windows Phone, Java, Blackberry.
12. QR Scanner+ - Windows 10, Windows 8.1, Windows 10 Mobile, Windows Phone 8.1, Windows Phone 8.
13. QR Scanner RS (Free) - Windows 10, Windows 8.1, Windows 10 Mobile, Windows Phone 8.1, Windows Phone 8.
Поскольку на сегодняшний день самыми распространенными и бюджетными мобильными устройствами являются смартфоны и планшеты на базе операционной системы Android OS, приведем более подробное сравнение программ QR-декодеров [15].
Scan Life Barcode QR Reader (рис. 2.12) -- довольно хороший сканер, распознающий многие виды как штрих-кодов, так и QR-кодов. Результаты поиска показывает, что многие люди пользуются именно этим приложением, однако Scan Life работает медленно, но в отличие от того Neo Reader поддерживает EZcode.
Рис. 2.12 - Scan Life Barcode QR Reader
Neo Reader (рис. 2.13) -- одна из самых простых программ для чтения QR-кодов, к тому же довольно быстрая и бесплатная. Распознает как 1D-коды (EAN, UPC), так и 2D (Data Matrix, QR, Aztec, PDF417). Имеется возможность вручную ввести цифры со штрих-кода, а также сканировать сохраненное ранее изображение. Есть журнал сканированных кодов. И возможность делиться результатами сканирования через SMS-сообщения.
Рис. 2.13 - Neo Reader
Quick Mark -- позволяет сканировать штрих-код с помощью камеры, либо в файле рисунка, либо прочитать штрих-код с веб-страницы, а также имеет возможность ручного ввода кода. В этом приложении также есть журнал сканирований. Плюс, с помощью Quick Mark можно создать QR-код с контактом из адресной книги, со ссылкой на приложение или адрес в сети, с указанием местоположения на карте, либо код для быстрой отправки смс или мейла.
Rate&Goods (рис. 2.15) - это не просто сканер штрих-кодов, но и полноценная база данных о товарах, включающая более пяти миллионов наименований. Преимущество данной программы в том, что здесь вы сами можете оставить отзыв о товаре, который сканируете, а так же посмотреть отзывы других людей.
Рис. 2.14 - Quick Mark
Рис. 2.15 - Rate&Goods
QR Droid (рис. 2.16) -- одно из мощнейших приложений для создания и распознавания QR-кодов. Программа распознает коды с камеры, из сети, рисунка. Можно создавать свои коды, как и в Quick Mark, плюс коды для оплаты в Pay Pal, для создания событий в календаре. Также программа обладает одним из лучших показателей скорости считывания.
Все программы из данного списка могут считывать достаточное количество различных форматов штих-кодов и QR-кодов. Однако QR Droid и Quick Mark все же превосходят остальные приложения в функциональности.
Рис. 2.16 - QR Droid
Из сделанного выше анализа следует, что на рынке представлено большое количество бесплатного программного обеспечения, позволяющего сканировать QR-код и получать информацию, зашифрованную в нем. Поэтому для проведения инвентаризации достаточно обеспечить материально ответственное лицо мобильным телефоном и загрузить туда соответствующее приложение. Основной задачей бакалаврской работы будет являться разработка программного обеспечения по генерации QR-кода, где будет заложена основная информация об объекте учета.
3. Разработка программного обеспечения
Для автоматизации и оптимизации процессов, протекающих при инвентаризации и учете имущества, целесообразно маркировать QR-кодом объекты учета. Тем самым мероприятия по инвентаризации имущества происходят гораздо быстрее, с легкостью можно узнать инвентарный номер, наименование объекта и материально ответственное лицо. В результате проведенного анализа во второй главе данной работы, было принято решение по разработке программного обеспечения для генерации QR-кодов, которыми будут маркироваться объекты инвентаризации. Далее будут рассмотрены средства разработки, и описана структура ПО.
3.1 Язык программирования Python
В качестве языка программирования было решено использовать Python.
3.1.1 Общие сведения о Python. Достоинства и недостатки
Python[16] является интерпретируемым, изначально объектно-ориентированным языком программирования. Он чрезвычайно прост и содержит небольшое число ключевых слов, вместе с тем очень гибок и выразителен. Это язык более высокого уровня, нежели Pascal, C++ и, естественно C, что достигается, в основном, за счет встроенных высокоуровневых структур данных (списки, словари, тьюплы).
Достоинства языка.
1. Несомненным достоинством является то, что интерпретатор Python реализован практически на всех платформах и операционных системах. Первым таким языком был C, однако его типы данных на разных машинах могли занимать разное количество памяти, и это служило некоторым препятствием при написании действительно переносимой программы. Python же таким недостатком не обладает.
2. Следующая немаловажная черта - расширяемость языка, этому придается большое значение и, как пишет сам автор, язык был задуман именно как расширяемый. Это означает, что имеется возможность совершенствования языка всеми заинтересованными программистами. Интерпретатор написан на С и исходный код доступен для любых манипуляций. В случае необходимости, можно вставить его в свою программу и использовать как встроенную оболочку. Или же, написав на C свои дополнения к Python и скомпилировав программу, получить "расширенный" интерпретатор с новыми возможностями.
3. Следующее достоинство - наличие большого числа подключаемых к программе модулей, обеспечивающих различные дополнительные возможности. Такие модули пишутся на С и на самом Python и могут быть разработаны всеми достаточно квалифицированными программистами. В качестве примера можно привести следующие модули:
4. Numerical Python - расширенные математические возможности, такие как манипуляции с целыми векторами и матрицами;
5. Tkinter - построение приложений с использованием графического пользовательского интерфейса (GUI) на основе широко распространенного на X-Windows Tk-интерфейса;
6. Open GL - использование обширной библиотеки графического моделирования двух- и трехмерных объектов Open Graphics Library фирмы Silicon Graphics Inc. Данный стандарт поддерживается, в том числе, в таких распространенных операционных системах как Microsoft Windows 95 OSR 2, 98 и Windows NT 4.0.
7. Недостатки языка.
8. Единственным недостатком, указанным рядомпрограмистов, является сравнительно невысокая скорость выполнения Python-программы, что обусловлено ее интерпретируемостью.
Разрабатываемое ПО является не очень критичных к скорости выполнения, поэтому язык Python будем считать подходящим.
3.1.2 Обзор особенностей
1. Python, в отличие от многих языков (Pascal, C++, Java, и т.д.), не требует описания переменных. Они создаются в месте их инициализации, т.е. при первом присваивании переменной какого-либо значения. Значит, тип переменной определяется типом присваиваемого значения. В этом отношении Python напоминает Basic.
Тип переменной не является неизменным. Любое присваивание для нее корректно и это приводит лишь к тому, что типом переменной становится тип нового присваиваемого значения.
2. В таких языках как Pascal, C, C++ организация списков представляла некоторые трудности. Для их реализации приходилось хорошо изучать принципы работы с указателями и динамической памятью. И даже имея хорошую квалификацию, программист, каждый раз заново реализуя механизмы создания, работы и уничтожения списков, мог легко допустить трудноуловимые ошибки. Ввиду этого были созданы некоторые средства для работы со списками. Например, в Delphi Pascal имеется класс TList, реализующий списки; для С++ разработана библиотека STL (Standard Template Library), содержащая такие структуры как векторы, списки, множества, словари, стеки и очереди. Однако, такие средства имеются не во всех языках и их реализациях.
Одной из отличительных черт Python является наличие таких встроенных в сам язык структур как тьюплы (tuple), списки (list) и словари (dictionary), которые иногда называют картами (map). Рассмотрим их поподробней.
Тьюпл. Он чем-то напоминает массив: состоит из элементов и имеет строго определенную длину. Элементами могут быть любые значения - простые константы или объекты. В отличие от массива, элементы тьюпла не обязательно однородны. А тем, что отличает тьюпл от списка (list) является то, что тьюпл не может быть изменен, т.е. мы не можем i-тому элементу тьюпла присвоить что-то новое и не можем добавлять новые элементы. Таким образом, тьюпл можно назвать списком-константой. Синтаксически тьюпл задается путем перечисления через запятую всех элементов, и все это заключено в круглые скобки:
(1, 2, 5, 8)
(3.14, ` string ', -4)
Все элементы индексируются с нуля. Для получения i-го элемента необходимо указать имя тьюпла затем индекс i в квадратных скобках. Пример:
t = (0, 1, 2, 3, 4)
print t[0], t[-1], t[-3]
Результат: 0 4 2
Таким образом, тьюпл можно было назвать вектором-константой, если бы его элементы всегда были однородными.
Список. Хорошим, частным примером списка может служить строка (string) языка Turbo Pascal. Элементами строки являются одиночные символы, ее длина не фиксирована, имеется возможность удалять элементы или, напротив, вставлять их в любом месте строки. Элементами же списка могут быть произвольные объекты не обязательно одного и того же типа. Чтобы создать список, достаточно перечислить его элементы через запятую, заключив все это в квадратные скобки:
[3, 5.14, `s']
[`string', (0,1,8), [1,1]]
В отличие от тьюпла, списки можно модифицировать по своему желанию. Доступ к элементам осуществляется также как и в тьюплах. Пример:
l = [1, `s', (2,8), [0,3,4]]
print l[0], l[1], l[-2], l[-1][0]
Результат: 1 s (2,8) 0
Словарь. Напоминает тип запись (record) в Pascal или структуры (structure) в С. Однако, вместо схемы "поле записи"-"значение" здесь применяется "ключ"-"значение". Словарь представляет собой набор пар "ключ"-"значение". Здесь "ключ" - константа любого типа (но преимущественно применяются строки), он служит для именования (индексирования) некоторого соответствующего ему значения (которое можно менять).
Словарь создается путем перечисления его элементов (пар "ключ"-"значение", разделенных двоеточием), через запятую и заключения всего этого в фигурные скобки. Для получения доступа к некоторому значению необходимо, после имени словаря, в квадратных скобках записать соответствующий ключ. Пример:
d = {'a': 1, 'b': 3, 5: 3.14, 'name': 'John'}
d['b'] = d[5]
print d['a'], d['b'], d[5], d['name']
Результат: 1 3.14 3.14 John
Для добавления новой пары "ключ"-"значение" достаточно присвоить элементу с новым ключом соответствующее значение:
d['new'] = 'new value'
print d
Результат: {'a':1, 'b':3, 5:3.14, 'name':'John', 'new':'new value'}
3. Python в отличие от Pascal, C, C++ не поддерживает работу с указателями, динамической памятью и адресную арифметику. В этом он похож на Java. Как известно, указатели служат источником трудноуловимых ошибок, и работа с ними относится больше к программированию на низком уровне. Для обеспечения большей надежности и простоты они небыли включены в Python.
4. Одним из особенностей Python является то, как происходит присваивание одной переменной другой, т.е. когда по обе стороны от оператора "=" стоят переменные.
Следуя Тимоти Бадду ([17]), будем называть семантикой указателей случай, когда присваивание приводит лишь к присваиванию ссылки (указателя), т.е. новая переменная становится лишь другим именем, обозначающим тот же участок памяти, что и старая переменная. При этом изменение значения, обозначаемого новой переменной, приведет к изменению значения старой, т.к. они, фактически, означают одно и то же.
Когда же присваивание приводит к созданию нового объекта (здесь объект - в смысле участка памяти для хранения значения какого-либо типа) и копированию в него содержимого присваиваемой переменной, этот случай назовем семантикой копирования. Таким образом, если при копировании действует семантика копирования, то переменные по обе стороны от знака "=" будут означать два независимых объекта с одинаковым содержанием. И здесь последующее изменение одной переменной никак не скажется на другой.
Присваивание в Python происходит следующим образом: если присваеваемый объект является экземпляром таких типов как числа или строки, то действует семантика копирования, если же в правой части стоит экземпляр класса, список, словарь или тьюпл, то действует семантика указателей. Пример:
a = 2; b = a; b = 3
print ' семантикакопирования: a=', a, 'b=', b
a = [2,5]; b = a; b[0] = 3
print ' семантикауказателей: a=', a, 'b=', b
Результат:
семантика копирования: a= 2 b= 3
семантика указателей: a= [3,5] b= [3,5]
Посмотрим с другой стороны на присваивание в Python. Если в таких языках как Basic, Pascal, C/C++ приходится иметь дело с переменными - "емкостями", и хранимыми в них константами (числовыми, символьными, строковыми - не суть важно), а операция присваивания означала "занесение" константы в присваиваемую переменную, то в Python работают с переменными - "именами" и именуемыми ими объектами. Что же такое Объектом в Python является все то, чему можно дать имя: числа, строки, списки, словари, экземпляры классов (которые в Object Pascal и называются объектами), сами классы, функции, модули и т.д. Так вот, при присваивании переменной некоторого объекта, переменная становится его "именем", причем таких "имен" объект может иметь сколько угодно и все они никак не зависят друг от друга.
Теперь, объекты делятся на модифицируемые (мутируемые) и неизменные. Мутируемые - это те объекты , которые могут изменить свое "внутреннее содержание", например, списки, словари, экземпляры классов. А неизменные - это такие объекты, как числа, тьюплы, строки (переменной можно присвоить новую строку, полученную из старой, но саму старую строку модифицировать не получится).
Так вот, если, например:
a = [2,5]; b = a; b[0] = 3,
Python это интерпретирует так:
дать объекту "список [2,5]" имя a ;
дать этому объекту еще одно имя - b ;
модифицировать нулевой элемент объекта.
Это и является "псевдо" семантика указателей. И последнее, что стоит отметить, хотя нет возможности изменения структуры тьюпла, но содержащиеся в нем мутируемые компоненты по-прежнему доступны для модификации:
t = (1, 2, [7,5], 'string')
t[0] = 6 # так нельзя
del t[1] # тоже ошибка
t[2][1] = 0 # допустимо, теперь третья компонента - список [7,0]
t[3][0] = 'S' # ошибка: строки не мутируемы
5. Весьма оригинальным является то, как в Python группируются операторы. В Pascal для этого служат операторные скобки begin-end, в C, C++, Java - фигурные скобки {}, в Basic применяются закрывающие окончания конструкций языка (NEXT, WEND, END IF, END SUB).
В языке Python все гораздо проще: выделение блока операторов осуществляется путем сдвига выделяемой группы на один или более пробелов или символов табуляции вправо относительно заголовка конструкции к которой и будет относиться данный блок. Например:
if x > 0:
print ` x > 0 '
x = x - 8
else:
print ` x <= 0 '
x = 0
Тем самым, хороший стиль записи программ, к которому призывают преподаватели языков Pascal, C++, Java и т.д., здесь приобретается с самого начала, поскольку, по-другому невозможно.
3.2 Структура разработанного ПО
Основной задачей перед разработанным программным обеспечением ставиться генерация QR-кода. Генерация QR-кода, для маркировки объектов учета, возможна на любом персональным компьютером с любой операционной системойкак на Windows, так и на Mac и Linux.
3.2.1 Описание используемых библиотек и модулей
В разработанном приложении будут использоваться библиотеки Python Imaging Library [18] и wxPython [19], и модули python-qrcode[20] и pyqrnative [21].
Рассмотрим более подробно библиотеки.
PythonImagingLibrary
PIL(python imaging library) [22] -- библиотека Python предназначена для работы с растровой графикой.
Возможности:
· поддержка бинарных, полутоновых, индексированных, полноцветных и CMYK изображений;
· поддержка форматов BMP, EPS, GIF, JPEG, PDF, PNG, PNM, TIFF и некоторых других на чтение и запись;
· поддержка множества форматов (ICO, MPEG, PCX, PSD, WMF и др.) только для чтения;
· конвертирование изображений из одного формата в другой;
· редактирование изображений (использование различных фильтров, масштабирование, рисование, матричные операции и т. д.).
Рассмотрим пример создания изображения:
import Image, ImageDraw
text = "Python Imaging Library in Habr :)"
color = (0, 0, 120)
img = Image.new('RGB', (100, 50), color)
imgDrawer = ImageDraw.Draw(img)
imgDrawer.text((10, 20), text)
img.save("pil-example.png")
Выводим формат, тип, размер изображения:
import Image, ImageDraw
img = Image.open('test.png') #открываемкартинку
size = img.size #размеркартинки
format = img.format #форматкартинки
mode = img.mode #мод(RGBA...)
arr = [] #создаем пустой массив
arr.append(size) #добавляем размер в массив
arr.append(format) #добавляем формат в массив
arr.append(mode) #добавляем мод в массив
print arr #выводим массив
Выводим информацию о изображении:
...Подобные документы
Основные функции автоматизированной системы "Решатель математических формул". Требования к техническим средствам, информационной и программной совместимости. Стратегии конструирования программного обеспечения. Проектирование, разработка программного кода.
курсовая работа [600,0 K], добавлен 25.02.2012Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Разработка спецификации программного обеспечения и на ее основе кода программного продукта. Отладка программы "трассировкой", ее тестирование и оптимизация.
курсовая работа [501,4 K], добавлен 07.12.2016Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Отладка программных модулей с использованием специализированных программных средств. Тестирование программного обеспечения. Оптимизация программного кода.
курсовая работа [974,0 K], добавлен 21.12.2016Создание электронного учебника, написанного на языке гипертекстовой разметки HTML. Характеристика программного обеспечения ЭВМ, необходимого для создания и эксплуатации информационной системы. Алгоритм функционирования системы, отладка программы.
курсовая работа [1,0 M], добавлен 22.12.2012Обоснование выбора языка программирования. Анализ входных и выходных документов. Логическая структура базы данных. Разработка алгоритма работы программы. Написание программного кода. Тестирование программного продукта. Стоимость программного продукта.
дипломная работа [1008,9 K], добавлен 13.10.2013Реализация программного средства "Действия над матрицами". Разработка кода программного продукта на основе готовой спецификации на уровне модуля. Использование инструментальных средств на этапе отладки программного модуля. Выбор стратегии тестирования.
отчет по практике [296,1 K], добавлен 19.04.2015Изучение возможностей среды программирования delphi при разработке приложения с визуальным интерфейсом. Отладка программных модулей с использованием специализированных средств. Способы работы с динамическими массивами. Оптимизация программного кода.
курсовая работа [1,0 M], добавлен 23.12.2016Реализация линейных списков в языке программирования C++. Основные операции при работе с ними. Разработка интерфейса и алгоритмов. Описание работы программы на псевдокоде. Составление программного кода. Тестирование, отладка и результат работы программы.
курсовая работа [1,1 M], добавлен 07.01.2014Порядок автоматизации расчетов себестоимости и длительности программного обеспечения производственного предприятия. Выбор языка программирования и системы управления базами данных. Разработка алгоритмов расчета себестоимости программного обеспечения.
дипломная работа [1,7 M], добавлен 13.06.2017Выбор системы программирования. Разработка программного обеспечения для ведения складского учета (инвентаризации) персональных компьютеров и комплектующих на предприятии. Обоснование даталогической модели данных. Рекомендации по применению программы.
курсовая работа [1,9 M], добавлен 14.01.2013Разработка системы бережливого производства на ООО "Нижегородские моторы", создание программного обеспечения для станка с ЧПУ FMS-3200. Технология решения задачи, функциональные возможности и структура программы. Язык программирования электроавтоматики.
отчет по практике [555,3 K], добавлен 27.05.2014Характеристика объектно-ориентированного, процедурного, функционального программирования. Выбор языка программирования для создания программного обеспечения для управления справочником "Спортсмены". Алгоритм работы приложения, пользовательский интерфейс.
курсовая работа [1,6 M], добавлен 23.02.2016Анализ технических средств и современных технологий разработки программного обеспечения. Разработка программы для упрощения поиска студентов. Создание учетных записей администратора и обычного пользователя. Изучение правил построения программного кода.
курсовая работа [1,9 M], добавлен 30.09.2016Основание и назначение программного кода для работы распределительной станции FESTO, требования к информационной и программной совместимости. Параметры технических средств, язык программирования AWL. Расчет затрат и экономической эффективности проекта.
дипломная работа [2,4 M], добавлен 11.03.2012Общие сведения об исследуемой организации, направления ее хозяйственной деятельности, характеристика используемой вычислительной техники и программного обеспечения. Разработка пользовательского интерфейса, шаблонов, отладка и тестирование программы.
отчет по практике [159,3 K], добавлен 11.04.2016Структурные подразделения и отделы организации, ее технические программные средства. Разработка приложений обработки данных на ассемблере, языке программирования высокого уровня. Тестирование и оптимизация программных модулей. Разработка документации.
отчет по практике [175,0 K], добавлен 30.09.2022Исследование объектно-ориентированного подхода к проектированию программного обеспечения будильника. Модель программного обеспечения. Взаимодействие между пользователями и системой. Диаграммы и генерация программного кода при помощи средств Rational Rose.
курсовая работа [355,8 K], добавлен 26.09.2014Современные инструменты разработки программного обеспечения для СУТП. Универсальные языки программирования и сравнение их со SCADA-системами. Разработка программного обеспечения с использованием многоканальных измерительных преобразователей Ш9327.
дипломная работа [2,3 M], добавлен 13.07.2011Автоматизация учёта поступления и обучения детей в "Доме детского творчества". Проектирование программного продукта ИС; выбор системы управления базы данных, языка программирования. Разработка концептуальной, логической и физической моделей данных.
дипломная работа [1,5 M], добавлен 10.10.2015Набор требований к программному продукту "Калькулятор". Тестовые сценарии для модульного тестирования. Использование системы визуального проектирования. Разработка программного кода. Вычисление цикломатического числа и построение графы каждого модуля.
контрольная работа [170,4 K], добавлен 04.11.2014