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

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,8 Мб
  • Опубликовано:
    2012-09-11
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

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

Содержание

Введение

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с.

.#"551756.files/image008.gif">

Рисунок А.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

Флаги для данной задачи

Val

blob


Результат выполнения задачи


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

Поле

Тип

Размер

Описание

DocID

Строка

36

Идентификатор документа

ObjectType

Число

10.0

Зарезервировано, всегда указывается значение 1

TimeCrt

Дата/Время


Дата и время создания фотографии в КПК

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

Наименование элемента справочника

Поле

Тип

Размер

Описание

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 - Модули программы

Модуль

Назначение

1

ExportFile.h

Заголовочныйфайлкласса ExportFile

2

ExportFile.cpp

Файл реализации класса ExportFile

3

ConfigFile.h

Заголовочный файл класса ConfigFile

4

ConfigFile.cpp

Файл реализации класса ConfigFile

5

ImportXmlHandler.h

Заголовочный файл класса ImportXmlHandler

6

ImportXmlHandler.cpp

Файл реализации класса ImportXmlHandler

7

SqlBase.h

Заголовочный файлSqlBase

8

SqlBase.cpp

Файл реализации класса SqlBase

9

SqlAgent.h

Заголовочный файл классаSqlAgent

10

SqlAgent.cpp

Файл реализации классаSqlAgent

11

SqlPhotos.h

Заголовочный файл классаSqlPhotos

12

SqlPhotos.cpp

Файл реализации классаSqlPhotos

13

SqlPlans.h

Заголовочный файл классаSqlPlans

14

SqlPlans.cpp

Файл реализации классаSqlPlans

15

SqlRoutes.h

Заголовочный файл классаSqlRoutes

16

SqlRoutes.cpp

Файл реализации классаSqlRoutes

17

SqlTasks.h

Заголовочный файл классаSqlTasks

18

SqlTasks.cpp

Файл реализации классаSqlTasks

19

main.cpp

Главный файл программы, точка входа

20

AboutForm.h

Объявление класса формы "О программе"

21

AboutForm.cpp

Реализация класса формы "О программе"

22

AgentItemView.h

Объявление класса формы "Агенты"

23

AgentItemView.cpp

Реализация класса формы "Агенты"

24

ItemViewBase.h

Объявление базового класса формы

25

ItemViewBase.cpp

Реализация базового класса формы

26

ConnectDialog.h

Объявление класса диалога "Подключение"

27

ConnectDialog.cpp

Реализация класса диалога "Подключение"

28

ExportForm.h

Объявление класса формы "Экспорт файла"

29

ExportForm.cpp

Реализация класса формы "Экспорт файла"

30

ImportForm.h

Объявление класса формы "Импорт файла"

31

ImportForm.cpp

Реализация класса формы "Импорт файла"

32

MainWindow.h

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

33

MainWindow.cpp

Реализация класса главного окна

34

PhotoItemView.h

Объявление класса формы "Фотографии"

35

PhotoItemView.cpp

Реализация класса формы "Фотографии"

36

PlanItemView.h

Объявление класса формы "Планы продаж"

37

PlanItemView.cpp

Реализация класса формы "Планы продаж"

38

RouteItemView.h

Объявление класса формы "Маршруты"

39

RouteItemView.cpp

Реализация класса формы "Маршруты"

40

TaskItemView.h

Объявление класса формы "Задания"

41

TaskItemView.cpp

Реализация класса формы "Задания"

42

AbstractModel.h

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

43

AbstractModel.cpp

Реализация класса "AbstractModel"

44

AgentModel.h

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

45

AgentModel.cpp

Реализация класса "AgentModel"

46

PhotoModel.h

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

47

PhotoModel.cpp

Реализация класса "PhotoModel"

48

PlanModel.h

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

49

PlanModel.cpp

Реализация класса "PlanModel"

50

RouteModel.h

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

51

RouteModel.cpp

Реализация класса "RouteMode"

TaskModel.h

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

53

TaskModel.cpp

Реализация класса "TaskModel"

54

TableView.h

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

55

TableView.cpp

Реализация класса "TableView"



Приложение И

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

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

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

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!