Программное средство для обеспечения контроля над деятельностью торговых агентов ООО "Журавли плюс"

 

Содержание


Введение

1. Постановка и анализ задачи

.1 Описание предметной области

.2 Обоснование выбора средств реализации

. Анализ данных

. Анализ алгоритмов

. Модульная структура программы

. Тестирование

. Документирование

.1 Техническое задание

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

Заключение

Список литературы

Приложение



Введение


Программа была создана для решения производственных задач ООО "Журавли плюс". ООО "Журавли плюс" - это организация, деятельность которой заключается в оптовых поставках товаров из других регионов России в различные торговые точки города Читы и других населенных пунктов Забайкальского края.

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



. Постановка и анализ и задачи


.1 Описание предметной области


Представленная программа была создана для решения производственных задач ООО "Журавли плюс". ООО "Журавли плюс" - это организация, деятельность которой заключается в оптовых поставках товаров из других регионов России в различные торговые точки города Читы и других населенных пунктов Забайкальского края.

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

Файлы, отправленные агентами и полученные на сервере, в дальнейшем импортируются в Автоматизированную систему товароучета (далее АСТУ). В смартфон также загружаются файлы, экспортированные из АСТУ.

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

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


Рисунок 1 - Схема работы без промежуточной базы данных


Принимая во внимание все ранее изложенное, было принято решение создать программу, которая позволила бы использовать всего один формат обмена с АСТУ, причем данные, передаваемые при помощи этого формата, ограничивались бы лишь тем набором, который действительно необходим для ведения товароучета. При этом все "лишние" данные должны оставаться в промежуточной базе данных (далее БД) для анализа и составления отчетов. Совместимость с различными форматами КПК и АСТУ, в такой программе, может обеспечиваться за счет плагинов или модулей, подключаемых при необходимости. Таким образом, схема, описанная выше, преобразовывается в схему, которая содержит промежуточную базу данных - наш программный продукт, данная схема представлена в соответствии с рисунком 2. На основании изложенных требований и, исходя из постановки задачи, была построена диаграмма вариантов использования, которая представлена в приложении A.


Рисунок 2 - Схема работы с промежуточной БД


.2 Обоснование выбора средств реализации


Для реализации данного программного продукта был выбран кроссплатформенный инструментарий разработки программного обеспечения на языке C++ под названием "Qt". Qtпозволяет запускать написанное с его помощью ПО в большинстве современных операционных систем,с помощью простой перекомпиляции программы, без изменения исходного кода. Включает в себя все основные классы, которые могут потребоваться при разработке прикладного программного обеспечения, начиная от элементов графического интерфейса и заканчивая классами для работы с сетью, базами данных и XML. Qt является полностью объектно-ориентированным, легко расширяемым и поддерживающим технику компонентного программирования.Одним из весомых преимуществ Qt является наличие качественной и подробной документации, а статьи снабжены большим количеством примеров.

Для работы с базой данных используется система управления базами данных (далее СУБД) с поддержкой StructuredQueryLanguage (далее SQL). В нашем случае была выбрана СУБД MySQL, так как она отвечает всем необходимым требованиям и бесплатна для коммерческого использования.


2. Анализ данных


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

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

На основе всего вышеперечисленного была спроектирована база данных, которая включает 31 таблицу. Предполагается, что при добавлении плагинов, которые обеспечивают импорт и экспорт данных из и в приложения смартфонов для торговых агентов, база будет расширятся за счет появления новых типов данных из других систем. Описание таблиц базы данных представлено в приложении Б. Связитаблиц базы данных представлены в приложении В.

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

Программа работает только с файлами выгрузки в стиле автоматизированной мобильной системы "Агент +", это обусловлено широким распространением данной системы на предприятии. Формат хорошо описан и документирован, документация была взята с сайта производителя программы.

Файл, экспортированный из КПК, представляет собой XML - документ с корневым элементом "AgentPlus", в атрибутах которого передается ключевая информация о выгрузке.Существуют атрибуты, содержащие идентификатор агента, имя агента, идентификатор устройства, дату выгрузки и др. Корневой элемент может содержать несколько элементов типа "Doc", в атрибутах которого передается информация о выгружаемом документе, такая как идентификатор документа, его тип, дата создания и прочее. Каждый элемент типа "Doc" может содержать несколько элементов типа "Line", в этом элементе передается информация, содержание которой определяется типом документа.

Файл импорта в КПК представляет собой текстовый файл с расширением .dat.Первая строчка в файле - "agentp_datato_ppc", значения разделяются знаком табуляции. Затем в файле идут блоки выгрузки. Блок начинается с ключевого слова "<Begin>", за которым следует имя тэга и следом - описание структуры выгрузки, начинающееся с ключевого слова "Struct:", после этого слова указывается список полей блока выгрузки через запятую. "<Begin>", имя тэга и "Struct:" разделяются знаками табуляции. Со следующей строки указываются данные выгрузки, значения указываются в порядке, описанном в "Struct:", и разделяются знаком табуляции. Блок заканчивается ключевым словом "<End>", за которым следует знак табуляции и название завершаемого тэга.



. Анализ алгоритмов


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

Все запросы реализованы простейшими SQLконструкциями, используются четыре типа запросов[1]:


1.SELECT запрос вида:

SELECT<столбец [,<столбец>]>

FROM<таблица>[ WHERE<условие выборки> ]

2.INSERT запрос вида:

INSERTINTO<таблица>

(<столбец>[,<столбец>]) VALUES(<значение> [,<значение>])

3.DELETE запрос вида:

DELETEFROM<таблица>WHERE<условие удаления>

4.UPDATE запрос вида:

UPDATE<таблица>SET

<столбец> = <значение> [,<столбец> = <значение>]

WHERE<условие>


Для работы с БД используется инструментарий Qt, модуль QtSqlкоторый содержит классы для работы с СУБД. В программе были использованы следующие классы[2]:

1)QSqlDatabase - предоставляет средства соединения с БД;

2)QSqlQuery - предоставляет средства для выполнения SQLзапросов;

3)QSqlError -информация об ошибках SQL.

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

Qtпредлагает уже реализованные драйверы для СУБД, среди которых есть драйверы к MySQL, IBM DB2, BorlandInterBase, PostgreSql, Oracle, MicrosoftSQLServer, таким образом можно утверждать что представленное приложение работает с перечисленными СУБД при наличии соответствующих драйверов в комплекте.

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

1)QXmlAttributes -предоставляет атрибуты XMLэлемента;

2)QXmlDefaultHandler -стандартный обработчик XMLдокумента;

3)QXmlReader - интерфейс для чтения XMLдокумента;

4)QDomElement -элемент XMLдокумента;

5)QDomDocument -XML документ;

6)QDomNode -базовый класс для узлов DOMдерева;

7)QDomText -текстовые данные в XMLдокументе;

8)QDomNodeList -список объектов QDomNode.

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

Диаграмма классов представлена в приложении Г. Объявления классов представлены в приложении Д.



. Модульная структура программы


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

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

-усиление внутренних связей модулей;

-ослабление взаимосвязи между модулями.

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

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



. Тестирование


Тестирование происходило в условиях локальной сети с несколькими компьютерами. Тестовый стенд состоял из двух компьютеров: сервера и клиента. В качестве серверного оборудования использовался компьютер под управлением операционной системы DebianGNU/Linux 6.0 Squeeze с MySQLсервером версии 5.1 с настройками безопасности характерными для сетей предприятия. В качестве клиентского оборудования использовался компьютер под управлением операционной системы MicrosoftWindows 7 Professional и MicrosoftWindowsXPProfessionalSP2. При тестировании использовались только последние стабильные версии описанного программного обеспечения.

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

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

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



. Документирование


.1 Техническое задание

программа автоматизация управление файл

Введение

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

Требования к программе

Требования к функциональным характеристикам

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

-чтение файлов, полученных из смартфонов торговых агентов, с занесением информации в базу данных;

-создание файлов для загрузки в смартфоны торговых агентов;

-добавление, удаление, изменение сведений о маршрутах (идентификатор клиента, идентификатор торговой точки, время прибытия агента, комментарий);

-добавление, удаление, изменение сведений о планах продаж (название, тип, категория товаров, сумма по плану, количество по плану);

-добавление, удаление, изменение сведений о фотографиях (идентификатор документа, комментарий, дата создания);

-добавление, удаление, изменение сведений об агентах (имя, фамилия, отчество, идентификатор устройства);

-добавление, удаление, изменение сведений о заданиях (фирма, клиент, торговая точка, маршрут, номер документа);

-добавление, удаление, изменение сведений о задачах (тип, название, комментарий).

Требования к надежности

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

Требования к составу и параметрам технических средств

Программное средство должно использовать реляционную СУБД с поддержкой SQL, и возможностью доступа к ней по локальной сети.

Минимальные требования: программа должна функционировать на компьютере IBMPC с процессором класса не ниже Pentium, оперативной памятью объемом не менее 128 Мб, свободным пространством на жёстком диске не менее 100 Мб, монитором SVGA 640x480, операционная система семейства MicrosoftWindows.

Рекомендуемые требования: персональный компьютер, совместимый с IBMPC, с процессором IntelPentiumIII-400 и выше, оперативная память объемом 256 Мб и более, 20 Мбайт на жестком диске.

Требования к информационной и программной совместимости

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

Требования к программной документации

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


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


Для запуска программы в ОС Windowsнеобходимы следующие файлы библиотек: libgcc_s_dw2-1.dll, libstdc++-6.dll, mingwm10.dll, QtCore4.dll, QtGui4.dll, QtSql4.dll, QtXml4.dll. Эти файлы должны быть расположены в папке с программой, либо путь их расположения должен быть указан в переменной окружения PATH. Кроме этих библиотек, в каталоге с программой также должна присутствовать директория "sqldrivers",в которой располагаются драйверы для работы с СУБД. Драйверы СУБД, в свою очередь, могут использовать библиотеки, поставляющиеся с самой СУБД, эти файлы должны быть также расположены в папке с программой. Для работы с MySQLтребуется файл libmysql.dll.

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


Рисунок 3-Главное окно программы


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

Опишем структуру меню "Файл":

1)"Подключиться" - выполняет подключение к базе данных;

2)"Экспорт" - экспортирует информацию в файл для загрузки в КПК;

)"Импорт" - импортирует информацию из файлов с КПК;

)"Выход" - завершает работу программы.

Опишем структуру меню "Правка":

1)"Агенты" - открывает окно управления торговыми агентами;

2)"Маршруты" - открывает окно управления маршрутами;

)"Задания" - открывает окно управления заданиями для агентов;

)"Фотографии" - позволяет управлять списком фотографий в КПК;

)"Планы продаж" - управление планами продаж для агентов.

Опишем структуру меню "Вид":

1)"Вкладки" - отображать окна вкладками;

2)"Окна" - отображать в виде отдельных окон;

)"Окна каскадом" - выстраивает окна каскадом;

)"Окна рядом" - выстраивает окна рядом, заполняя все пространство.

Опишем структуру меню "Справка": содержит пункт "О программе", где можно узнать версию приложения и информацию о разработчике.

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

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


Рисунок 4 - Окно подключения к БД


Список "Драйвер" содержит наименования драйверов СУБД, которые доступны приложению, требуется выбрать тип драйвера соответственно типу СУБД, к которой производится подключение. В поле "Хост" указывается адрес подключения, может быть указан как IP адрес сервера базы данных, так и его DNSимя. Поле "Порт" содержит порт подключения, значение этого поля может изменяться от 0 до 65535 включительно. Поле "БД" содержит имя базы данных, база данных должна существовать на сервере. Поле "Логин" содержит имя пользователя БД, с помощью которого происходит подключение, пользователь должен быть зарегистрирован на сервере и должен иметь доступ к базе данных, имя которой расположено в поле "БД". В поле "Пароль" необходимо указать пароль доступа для соответствующего пользователя, пароль при вводе не отображается. Галочка "Запомнить" служит для сохранения настроек подключения в конфигурационном файле программы в случае успешного подключения к БД. При активации этой функции будут сохранены все значения полей, за исключением поля "Пароль" чтобы предотвратить возможность несанкционированного доступа к данным. После указания всех необходимых для подключения значений следует нажать кнопку "Соединение", при нажатии, программа попытается подключиться, используя введенные данные, и в случае успешного подключения появится главное окно программы. При неудачном подключении программа выдаст окно с описанием ошибки, возникшей при подключении. Кнопка "Отмена" служит для завершения работы приложения.

Общий элемент управления для всех форм представлен в соответствии с рисунком 5.


Рисунок 5 - Управление записями


Работа производится в отдельной вкладке или окне (в зависимости от настроек интерфейса), на каждой вкладке располагается таблица с данными и кнопки действий над записями в таблице. С помощью указателя мыши производится выбор необходимой строки в таблице. Выше располагаются кнопки управления. "Изменить" - редактирование выделенной записи, если выделено более одной записи, то действие выполнено не будет. "Удалить" - удаление выделенных записей, возможно удаление как одной, так и нескольких записей. "Добавить" - добавление новой записи. "Обновить" - перечитывает таблицу из БД, что позволяет актуализировать данные для работы в любой момент времени. Экспорт данных из базы данных в файл в формате, понятном для КПК осуществляется с помощью формы "Экспорт данных", представленной в соответствии с рисунком 6.


Рисунок 6 - Экспорт данных


"Путь" определяет корневой каталог, в котором будут располагаться папки из списка "Папка". Кнопка "Обзор…" открывает окно с обзором файловой системы, с помощью которого можно выбрать нужную папку в качестве корневого каталога. Кнопки рядом со списком служат для изменения содержимого списка, кнопка сохранения - сохраняет корневой каталог, список папок и название файла в конфигурационный файл. При повторном запуске информация будет восстановлена из этого файла, если она была сохранена. При нажатии кнопки "Экспортировать в файл" программа создаст файл "<Путь>\<Папка>\<Файл>", где <Путь>, <Папка> и <Файл> значения соответствующих полей формы. Если путь не существует - будут созданы все необходимые каталоги. Если файл уже существует - он будет заменен, так как предполагается что старая выгрузка потеряла актуальность. Импорт данных в базу данных из xmlфайлов осуществляется с помощью формы "Импорт данных", представленной в соответствии с рисунком 7.


Рисунок 7 - Импорт данных


В поле "Шаблон" указывается файл-шаблон с конфигурацией импортируемого файла. В поле "Файл" указывается сам импортируемый файл в формате xml. Кнопки "Обзор…" служат для обзора файловой системы и выбора файлов. Кнопка "Импортировать файл" запускает процесс импорта данных из файла в базу данных. Полоса прогресса отображает количество обработанных данных из файла. Ниже располагается отчет о выполненных запросах, зеленым цветом отмечаются успешно выполненные запросы, красным - завершившиеся неудачно.



Заключение


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

Работа программы ориентирована на программное обеспечение "Агент плюс" и "1С". Среди реализованных возможностей: чтение файлов выгрузки из автоматизированной системы товароучета с занесением данных в собственную базу данных, создание файлов для импорта в автоматизированную систему товароучета, чтение файлов выгрузки со смартфонов и создание файлов импорта для смартфонов, редактирование некоторых данных, таких как информация о торговых агентах, маршрутах, заданиях, планах продаж, фотографиях.

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



Список литературы


. Э. Джоунс, Р. Стивенз, Р. Плю, Р. Гаррет, А. Кригель Функции SQL. Справочник программиста. - М.: ООО "И.Д. Вильямс", 2007. - 768с.

.#"justify">Приложение А


Диаграмма вариантов использования

Рисунок А.1 - Диаграмма вариантов использования



Приложение Б


Таблицы базы данных


Таблица Б.1 -Договоры контрагентов

ПолеТипРазмерОписаниеAgreementIDСтрока36Идентификатор договораFirmIDСтрока36Идентификатор фирмыClientIDСтрока36Идентификатор клиентаTPointIDСтрока36Идентификатор торговой точкиNameСтрока127Наименование договораCodesListСтрока128Список допустимых кодов видов оплатPaymentTypeЧисло10.0Код вида оплаты по умолчаниюPriceTypesСтрока128Список допустимых кодов типов ценPriceTypeЧисло2.0Код типа цены по умолчаниюTimeBeginДата/ВремяДата заключения договораTimeEndДата/ВремяДата окончания срока действия договораStatusЧисло10.0Код категории (статуса) договораFltGdsCatЧисло10.0Код категории товаровFltGdsPropСтрока255Список кодов свойств товаровCommentСтрока128Комментарий к договору

Таблица Б.2 - Фирмы

ПолеТипРазмерОписаниеFirmIDСтрока36Идентификатор фирмыNameСтрока64Наименование фирмыCodesListСтрока128Список допустимых для фирмы кодов видов оплатAddressСтрока128Адрес фирмыTelephoneСтрока64Телефоны фирмыUseVATЧисло1.0Признак использования НДС в документахUseSFЧисло1.0Признак использования счетов-фактурDocPrefixСтрока15Префикс нумерации документов, закрепленный за фирмой

Таблица Б.3 - Маршруты

ПолеТипРазмерОписаниеRouteIDСтрока36Идентификатор пункта маршрутаClientIDСтрока36Идентификатор клиентаTPointIDСтрока36Идентификатор торговой точкиRouteTimeДата/ВремяДата и время желательного посещенияCommentСтрока64Комментарий к пункту маршрута

Таблица Б.4 - Склады

ПолеТипРазмерОписаниеStoreIDСтрока36Идентификатор складаNameСтрока64Наименование склада

Таблица Б.5 - Клиенты

ПолеТипРазмерОписаниеBarcodeСтрока15Штрих-код клиентаClientIDСтрока36Идентификатор клиентаFolderIDСтрока36Идентификатор группы, в которой находится клиентFirmIDСтрока36Идентификатор фирмыNameСтрока50Наименование клиентаTelephoneСтрока 50Контактные телефоныAddressСтрока50Адрес клиентаCodesListСтрока128Список допустимых для клиента кодов видов оплатPriceTypesСтрока128Список кодов типов цен доступных для клиентаFltGdsPropСтрока255Список кодов свойств товаровUsePPricesЧисло1.0Признак использования персональных ценPriceTypeЧисло2.0Код типа цены, закрепленной за клиентомStatusЧисло10.0Код статуса клиентаFltGdsCatЧисло10.0Код категории товаровADCodeЧисло10.0Код свода накопительных скидокCategoryЧисло10.0Код категории клиента DiscountЧисло8.4Скидка клиентаCreditЧисло15.2Сумма кредита клиентуDebtЧисло15.2Общий долг клиента

Таблица Б.6 - Торговые точки

ПолеТипРазмерОписаниеClientIDСтрока36Идентификатор клиентаTPointIDСтрока36Идентификатор торговой точкиNameСтрока50Наименование торговой точкиAddressСтрока64Адрес торговой точкиZoneСтрока8Номер зоны если точки классифицированы по зонам TelephoneСтрока50Номера телефоновStatusЧисло10.0Код статуса торговой точки ContactСтрока 128Контактные лицаCodesListСтрока128Список допустимых для торговой точки кодов видов оплатPriceTypesСтрока128Список кодов типов цен доступных для торговой точкиPriceTypeЧисло2.0Код типа цены, закрепленной за торговой точкойUsePPricesЧисло1.0Признак использования персональных ценFltGdsCatЧисло10.0Код категории товаровFltGdsPropСтрока255Список кодов свойств товаровBarcodeСтрока15Штрих-код торговой точкиCategoryЧисло10.0Код категории торговой точки

Таблица Б.7 - Товары

ПолеТипРазмерОписаниеGoodsIDСтрока36Идентификатор товараFolderIDСтрока36Идентификатор группы, в которой находится товарNameСтрока64Наименование товараCodeСтрока15Код товараNameUnitsСтрока11Названия единиц измерения через запятуюUnit0Число7.0Размерность первой единицы измеренияUnit1Число7.0Размерность второй единицы измеренияUnit2Число7.0Размерность третьей единицы измеренияPrice1Число12.2Первая цена товара в общем прайсеWeight0Число15.4Вес первой единицы измерения товараRestЧисло15.4Остаток товара в фирме RDiscountЧисло4.1Ограничение скидкиActionЧисло1.0Признак выделения цены товара в каталоге WeightЧисло1.0Признак, что товар является "весовым"PropListСтрока128Список кодов свойств, присвоенных товаруCommentСтрока48Комментарий к товаруVATЧисло12.2Ставка НДС в процентахCategoryЧисло10.0Код категории товараSertifIDСтрока36Идентификатор сертификата товараMinAmountЧисло15.4Минимальное количество товара допустимое для указания в документах "Заявка" и "Реализация"PriceUnitЧисло1.0Код единицы измерения, для которой указаны ценыStockUnitЧисло1.0Код единицы измерения, для которой указаны остатки

Таблица Б.8 - Документы

ПолеТипРазмерНазначениеDocTypeСтрока20Вид документаDocIDСтрока36Идентификатор документаPDAStateЧисло1.0Состояние документа в КПКCreateTimeДата/ВремяДата и время записи документа в КПКTimeCrtFormДата/ВремяДата и время начала работы с документомCreateModeСтрока10Способ создания документа в КПКNumberСтрока24Номер документа.FirmIDСтрока36Идентификатор фирмы в документеGPSLatitudeЧисло8.4Географическая широтаGPSLongtitudeЧисло8.4Географическая долготаClientIDСтрока36Идентификатор клиентаAgreementIDСтрока36Идентификатор договораTPointIDСтрока36Идентификатор торговой точкиRouteIDСтрока36Идентификатор пункта маршрутаSummaЧисло19.0Сумма в документеCommentСтрока128Комментарий к документуPaymentTypeЧисло10.0Вид оплаты документаMDocIDСтрока36Идентификатор документа-основания

Таблица Б.9 - Документ "Заказ"

ПолеТипРазмерОписаниеDocIDСтрока36Идентификатор документаDiscountЧисло4.1Скидка в документеPriceTypeЧисло2.0Тип цен в документеPriceModeЧисло1.0Режим цен в документеTimeDlvДата/ВремяДата и время желательной поставкиDocMerchIDСтрока36Идентификатор документа "Мерчендайзинг"

Таблица Б.10 - Документ "Задание"

ПолеТипРазмерОписаниеDocIDСтрока36Идентификатор документаTimeBeginДата/ВремяДата и время начала работы с документомTimeEndДата/ВремяДата и время окончания работы с документом


Таблица Б.11 - Документ "Реализация"

ПолеТипРазмерОписаниеDocIDСтрока36Идентификатор документаDiscountЧисло4.1Скидка в документеPriceTypeЧисло2.0Тип цен в документеPriceModeЧисло1.0Режим цен в документеPayDateДатаДата (срок) оплаты документаDocMerchIDСтрока36Идентификатор документа "Мерчендайзинг"SFNumСтрока25Номер счета-фактуры, закрепленного за документомUseVATЧисло1.0Признак учета в документе НДС

Таблица Б.12 - Документ "Поступление"

ПолеТипРазмерОписаниеDocIDСтрока36Идентификатор документаPriceTypeЧисло2.0Тип цен в документе

Таблица Б.13 - Документ "Перемещение"

ПолеТипРазмерОписаниеDocIDСтрока36Идентификатор документаStoreIDСтрока36Идентификатор склада-отправителя или склада-получателяMoveTypeЧисло1.0Вид перемещения

Таблица Б.14 - Документ "Инвентаризация"

ПолеТипРазмерОписаниеDocIDСтрока36Идентификатор документаPriceTypeЧисло2.0Тип цен в документеInvTypeЧисло1.0Режим изменения остатков при проведении

Таблица Б.15 - Стандартная табличная часть документов

ПолеТипРазмерОписаниеDocIDСтрока36Идентификатор документаGoodsIDСтрока36Идентификатор товараAmntЧисло15.4Количество товара в базовых единицах измеренияPriceЧисло15.2Цена товараSumЧисло15.2Стоимость товараVATЧисло15.2Сумма НДС.DscntЧисло4.1Скидка на товар WghtЧисло15.4Вес товара в строке документаUcodeЧисло1.0Код единицы измерения, в которой указаны количества в документеUDimЧисло7.0Размерность единицы измерения, в которой указаны количества в документе.

Таблица Б.16 - Табличная часть документа "Задание"

ПолеТипРазмерОписаниеDocIDСтрока36Идентификатор документаCodeЧисло10.0КодTypeЧисло10.0Код типа задачиNameСтрока64Название задачиFlagsЧисло3.0Флаги для данной задачиValblobРезультат выполнения задачи

Таблица Б.17 - Фотографии

ПолеТипРазмерОписаниеDocIDСтрока36Идентификатор документаObjectTypeЧисло10.0Зарезервировано, всегда указывается значение 1TimeCrtДата/ВремяДата и время создания фотографии в КПКFileNameСтрока63Название файла фотографииCommentСтрока254Комментарий к фотографии

Таблица Б.18 - Планы продаж

ПолеТипРазмерОписаниеPlanIDСтрока36Идентификатор пункта плана продажNameСтрока64Название пункта плана продажCodeЧисло5.0Код плана продажGoodsCatЧисло5.0Код категории товаровPlanSumЧисло15.4Планируемая сумма продаж для данной категории товаровPlanAmtЧисло15.4Планируемое количество продаж для данной категории товаров (продажи поштучно)PlanSumFЧисло15.4Фактическая сумма продаж для данной категории товаровPlanAmtFЧисло15.4Фактическое количество продаж для данной категории товаров

Таблица Б.19 - Папки

ПолеТипРазмерОписаниеFolderIDСтрока36Идентификатор папкиParentСтрока36Папка-родительNameСтрока50Название папки

Таблица Б.20 - Агенты

ПолеТипРазмерОписаниеAgentIDСтрока36Идентификатор агентаNameСтрока80Имя агентаSurnameСтрока80Фамилия агентаPatronymicСтрока80Отчество агентаTimeLoadedDataДата/ВремяПоследнее время выгрузки данных из ЦБДDeviceIDСтрока36Идентификатор дизайна

Таблица Б.21 - Штрих коды

ПолеТипРазмерОписаниеGoodsIDСтрока36Идентификатор товараNameСтрока15Штрих-кодUnitCodeЧисло1.0Код единицы измерения

Таблица Б.22 - Цены

ПолеТипРазмерОписаниеGoodsIDСтрока36Идентификатор товараPriceTypeЧисло2Тип ценыValueЧисло12.2Цена

Таблица Б.23 - Константы

ПолеТипРазмерОписаниеConstIDСтрока36Идентификатор константыNameСтрока50Название константыValueСтрока128Значение константыCommentСтрока255Комментарий


Таблица Б.24 - Сертификаты

ПолеТипРазмерОписаниеSertifIDСтрока36Идентификатор сертификатаNameСтрока64Номер сертификатаOrgSertifСтрока64Название органа сертификации, выдавшего сертификатDateBgnДатаДата начала срока действия сертификатаDateEndДатаДата окончания срока действия сертификата

Таблица Б.25 - Перечисления

ПолеТипРазмерОписаниеEnumIDСтрока36Идентификатор перечисленияNameСтрока64Название перечисленияPredefinedЧисло1Флаг предопределенного перечисления

Таблица Б.26 - Значения перечислений

ПолеТипРазмерОписаниеEnumIDСтрока36Идентификатор перечисленияNameЧисло10Код значения перечисленияValueСтрока64Значение перечисления

Таблица Б.27 - Списки сертификатов

ПолеТипРазмерОписаниеGoodsIDСтрока36Идентификатор перечисленияSertifIDСтрока36Идентификатор сертификатаObjIDСтрока36Идентификатор элемента справочникаNameСтрока64Наименование элемента справочника

Таблица Б.28 - Коэффициенты уменьшения веса товара

ПолеТипРазмерОписаниеClientIDСтрока36Идентификатор клиентаGoodsIDСтрока36Идентификатор товараFactorЧисло15.4Коэффициент уменьшения веса


Таблица Б.29 - Истории продаж товаров

ПолеТипРазмерОписаниеTPointIDСтрока36Идентификатор торговой точкиGoodsIDСтрока36Идентификатор товараSalesСтрока128История продажи товара торговой точке

Таблица Б.30 - Персональные цены

ПолеТипРазмерОписаниеClientIDСтрока36Идентификатор клиентаGoodsIDСтрока36Идентификатор товараPriceЧисло15.2Персональная цена для товараDiscountЧисло15.4Персональная скидка для товара

Таблица Б.31 - Скидки

ПараметрТипРазмерОписаниеDiscountЧисло15.4Значение скидкиBarcodeСтрока15Штрих-код скидки


Приложение В


ERдиаграмма базы данных


Рисунок В.1 - ERдиаграмма


Приложение Г


Диаграмма классов


Рисунок Г.1 - Диаграмма классов



Приложение Д


Объявления классов


classBaseEntity

{

public:

//-- Конструктор и Деструктор

BaseEntity();// конструктор по умолчанию

BaseEntity(constQUuid&id);

//-- Методыдоступа() const;// Идентификатор(constQUuid&id);// установить идентификатор();// сгенерировать идентификатор() const;// возвращает поле null

//-- Виртуальные методы

virtualvoidclear() = 0;// сбросить значения (абстрактный)

protected:

//-- Поля

bool_null;// флаг активности объекта

QUuid_id;// идентификатор

};: public BaseEntity

{:

//-- Конструктор и Деструктор

AgentEntity();(constQUuid&id);

//-- Методы доступа() const;// идентификатор устройства

QStringname() const;// имяагента

QStringsurname() const;// фамилияагента

QStringpatronymic() const;// отчествоагента

QDateTimeloadedTime() const;// времявыгрузки(constQString&name);// установитьимя(constQString&surname);// установитьфамилию(constQUuid&id);// установитьустройство(constQString&patronymic);// установитьотчество(constQDateTime&datetime);// установитьвремя

//-- Виртуальные методыclear();:

//-- Поля_devID;// идентификатор устройства_name;// имя агента_surname;// фамилия агента_patronymic;// отчество агента_loadedTime;// время выгрузки

};: public BaseEntity

{:

//-- Конструктор и деструктор();(constQUuid&id);

//-- Методы доступа(constQUuid&docID); // установить документ

voidsetFilename(constQString&filename); // установитьимяфайла

voidsetComment(constQString&comment); // установитькомментарий

voidsetDateTime(constQDateTime&datetime);// установитьвремя

QUuiddocID() const;// идентификатордокумента() const;// имяфайла() const;// комментарий() const;// времясоздания

//-- Виртуальные методыclear();:

//-- Поля_docID;// идентификатордокумента_dateTime;// времясозданияфайла_fileName;// имяфайла_comment;// комментарий

};: public BaseEntity

{:

//-- Конструктор и Деструктор();(constQUuid&id);

//-- Методыдоступа(constQString& name);// установитьназвание(inttypeCode);// установитьтипплана(intcat);// установить категорию товаров

voidsetSum(doublesum);// установить сумму по плану

voidsetSumFact(doublesum);// установить сумму по факту

voidsetAmount(doubleamount);// установить количество по плану

voidsetAmountFact(doubleamount);// установить количество по факту

QStringname() const;// название() const;// типплана() const;// категориятоваровsum() const;// суммапоплануsumFact() const;// суммапофактуamount() const;// количество по плану amountFact() const;// количество по факту

//-- Виртуальные методы

void clear();:_name;// название_typeCode;// типплана_goodsCatCode;// категория товаров_sum;// сумма по плану

double_sumF;// сумма по факту

double_amount;// количество по плану

double_amountF;// количество по факту

};: public BaseEntity

{:();

//-- Методы доступа() const;// Клиент() const;// Торговаяточки() const;// Времяпосещения() const;// Комментарий(constQString&text);// установитькомментарий(constQUuid&id);// установитьклиента(constQDateTime&dateTime);// установитьвремя(constQUuid&id);// установитьторговуюточку

//-- Виртуальные методыclear();:

//-- Поля_clientID;// кодклиента_tPointID;// кодторговойточки_dateTime;// времяпосещения_comment;// комментарий

};<class ItemType>

{:

//-- Конструктор и деструктор(QSqlDatabase* db);

//-- Abstract methodscount() const = 0;(ItemType*) const = 0;// получитьданныеизБД(constItemType&) = 0;// вставитьданныевБД(constItemType&) = 0;// удалитьданныеизБД(constItemType&) = 0;// обновитьданныевБД<ItemType>selectList() const = 0;// получитьтаблицу

//-- Методы() const; // последняяошибка() const; // последний запрос:

//-- Поля

QSqlDatabase*_db;// указатель на класс БД

QSqlError_error;// последняя ошибка

QString_query;// последний запрос

};

classAbstractModel : public QAbstractTableModel

{_OBJECT:

//-- Конструктор(QObject *parent = 0);

//-- Методы();// перечитать данные из БД

//-- Abstract methods(BaseEntity *item, int row) = 0; // Заполнить(BaseEntity *item, int row) = 0; // Изменить(BaseEntity *item) = 0; // Добавить(BaseEntity *item) = 0; // Удалить

};: public BaseEntity

{:();(constQUuid&id); // установитьфирму(constQUuid&id); // установитьклиента(constQUuid&id); // установить торговую точку(constQUuid&id); // установить соглашение(constQUuid&id); // установитьмаршрут(constQUuid&id); // установить документ-основание

voidsetTimeBegin(constQDateTime&time); //установитьвремяначала

voidsetTimeEnd(constQDateTime&time); // установитьвремяконца

voidsetCreateTime(constQDateTime&time); // установитьвремясоздания

voidsetNumber(constQString&number); // установитьномердокумента

voidsetCreateMode(constQString&mode); // установитьметодсоздания

voidsetComment(constQString&text); // установитькомментарий

voidsetState(short state); // установитьсостояние

voidsetFlags(short flags); // установитьфлаги

voidsetGPSLatitude(double coord); // установитьширотуGPS

voidsetGPSLongtitude(double coord); // установитьдолготуGPS

short state() const; // состояниеflags() const; // флаги() const; // фирма() const; // клиент() const; // торговаяточка() const; // документ-соглашение() const; // маршрут() const; // документ-основание() const; // широта() const; // долгота() const; // номер() const; // комментарий() const; // режимсоздания() const; // времяначала() const; // времяконца() const; // времясозданияclear();:_firmID;// Кодфирмы_clientID;// Кодклиента_tpointID;// Кодторговойточки_agreementID;// Кодсоглашения_routeID;// Кодмаршрута_mdocID;// Коддокумента-основания_timeBegin;// Времяначала_timeEnd;// Времяокончания_timeCrt;// Времясоздания_number;// Номердокумента_comment;// Комментарий_modeCrt;// Метод создания

short_state;// Состояние документа

short_flags;// Флагидокумента

double_gpsLatitude;// GPS широта_gpsLongtitude;// GPS долгота

};: public QWidget

{_OBJECT:

//-- Constructor(QWidget *parent = 0);

~TableView();(AbstractModel *model); // Установитьмодель(ItemViewBase* view); // Установитьформу-отображение:();// Инициализация визуальных компонент

protected slots:

voidaddAction();// Нажатие кнопки "Добавить"

voideditAction();// нажатие кнопки "Изменить"

voiddeleteAction();// Нажатие кнопки "Удалить"

voidrefreshAction();// Нажатие кнопки "Обновить"

protected:

//-- Визуальныекомпоненты

QPushButton*_addButton;// Кнопка "Добавить"

QPushButton*_delButton;// Кнопка "Удалить"

QPushButton*_edtButton;// Кнопка "Изменить"

QPushButton*_refButton;// Кнопка "Обновить"

QVBoxLayout*_vLayout;// Вертикальный выравниватель

QHBoxLayout*_hLayout;// Горизонтальный выравниватель

QTableView*_tableView;// Виджет - таблица

ItemViewBase*_itemView;// Форма для сущности

AbstractModel*_model;// Модель данных };

classItemViewBase : public QDialog

{ public:

//-- Конструктор(QWidget *parent = 0);

//-- Access methods(BaseEntity *item);// Установитьсущность* item() const;// Получить сущностьslots:();// метод успешного завершения();// метод неудачного завершения();// переместить в центр родителя

public:

virtual void entityToFields() = 0;// установитьполяформы

virtual void fieldsToEntity() = 0;// заполнитьсущностьизполей

protected:

//-- Fields*_item;// сущность*_okButton;// кнопка "ОК"*_cancelButton;// кнопка "Отмена"*_buttonBox;// группакнопок*_mainLayout;// Вертикальный выравниватель

};


Приложение Ж


Модули программы


Таблица Ж.1 - Модули программы

№МодульНазначение1ExportFile.hЗаголовочныйфайлкласса ExportFile2ExportFile.cppФайл реализации класса ExportFile3ConfigFile.hЗаголовочный файл класса ConfigFile4ConfigFile.cppФайл реализации класса ConfigFile5ImportXmlHandler.hЗаголовочный файл класса ImportXmlHandler6ImportXmlHandler.cppФайл реализации класса ImportXmlHandler7SqlBase.hЗаголовочный файлSqlBase8SqlBase.cppФайл реализации класса SqlBase9SqlAgent.hЗаголовочный файл классаSqlAgent10SqlAgent.cppФайл реализации классаSqlAgent11SqlPhotos.hЗаголовочный файл классаSqlPhotos12SqlPhotos.cppФайл реализации классаSqlPhotos13SqlPlans.hЗаголовочный файл классаSqlPlans14SqlPlans.cppФайл реализации классаSqlPlans15SqlRoutes.hЗаголовочный файл классаSqlRoutes16SqlRoutes.cppФайл реализации классаSqlRoutes17SqlTasks.hЗаголовочный файл классаSqlTasks18SqlTasks.cppФайл реализации классаSqlTasks19main.cppГлавный файл программы, точка входа20AboutForm.hОбъявление класса формы "О программе"21AboutForm.cppРеализация класса формы "О программе"22AgentItemView.hОбъявление класса формы "Агенты"23AgentItemView.cppРеализация класса формы "Агенты"24ItemViewBase.hОбъявление базового класса формы25ItemViewBase.cppРеализация базового класса формы26ConnectDialog.hОбъявление класса диалога "Подключение"27ConnectDialog.cppРеализация класса диалога "Подключение"28ExportForm.hОбъявление класса формы "Экспорт файла"29ExportForm.cppРеализация класса формы "Экспорт файла"30ImportForm.hОбъявление класса формы "Импорт файла"31ImportForm.cppРеализация класса формы "Импорт файла"32MainWindow.hОбъявление класса главного окна33MainWindow.cppРеализация класса главного окна34PhotoItemView.hОбъявление класса формы "Фотографии"35PhotoItemView.cppРеализация класса формы "Фотографии"36PlanItemView.hОбъявление класса формы "Планы продаж"37PlanItemView.cppРеализация класса формы "Планы продаж"38RouteItemView.hОбъявление класса формы "Маршруты"39RouteItemView.cppРеализация класса формы "Маршруты"40TaskItemView.hОбъявление класса формы "Задания"41TaskItemView.cppРеализация класса формы "Задания"42AbstractModel.hОбъявление класса "AbstractModel"43AbstractModel.cppРеализация класса "AbstractModel"44AgentModel.hОбъявление класса "AgentModel"45AgentModel.cppРеализация класса "AgentModel"46PhotoModel.hОбъявление класса "PhotoModel"47PhotoModel.cppРеализация класса "PhotoModel"48PlanModel.hОбъявление класса "PlanModel"49PlanModel.cppРеализация класса "PlanModel"50RouteModel.hОбъявление класса "RouteMode"51RouteModel.cppРеализация класса "RouteMode"52TaskModel.hОбъявление класса "TaskModel"53TaskModel.cppРеализация класса "TaskModel"54TableView.hОбъявление класса "TableView"55TableView.cppРеализация класса "TableView"


Приложение И


Диаграмма компонентов

Рисунок И.1 - Диаграмма компонентов


Содержание Введение 1. Постановка и анализ задачи .1 Описание предметной области .2 Обоснование выбора средств реализации . Анализ данных

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ