Разработка автоматизированной веб-ориентированной системы составления каталога товаров при поиске по изображениям

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



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

Класс ShopParser предназначен для асинхронного извлечения товарных позиций из магазина.

Класс ParseSession предназначен для запоминания и управления данными о процессе парса, для возможности продолжения его в случае отключения электроэнергии или в других нештатных ситуациях.

Класс AliExpressParser, содержащий объекты классов ParallelShopValidater, ShopParser, DBWorker предназначен для инициализации и управления этими объектами.

Класс FindWorker предназначен для поиска товаров в базе по изображениям.

Приведем структуру класса Shop:

class Shop

{id; // идентификатор магазинаstartParse=false; // флаг начала парса

bool endParse = false; // флагокончания парса

List subCategories; // подкатегории

магазина, определенные сайтом

List categoriesInShop; // подкатегории

магазина, придуманные саммим сайтом

List products; // коллекция товаров магазина

}

Приведем структуру класса Product

class Product

{

int id; // идентификатор товара

int subCategoryId; // айди подкатегории товара

int categoryIdInShop; // айди подкатегории товара,

определнной магазином

int shopId; // айди магазина

float price; // цена

float dostavkaPrice; // цена доставки

float totalPrice; // общая ценаname; // имя товара url; // ссылка на товар

string structurePath; // логический путь к товару на сайте

string itemSpecifics; // список основных

характеристик товараdescription; // другие характеристики товара

string html; // хтмл страницы

string mainImagePath; // путь к главной картинки

List images; // картинки товара

List feedbacks; // отзывы о товаре

List buyers; // покупатели, оставившие отзывы

}

Приведем структуру класса SubCategory

class SubCategory

{

string name = ""; // название категории

int id = 0; // идентификатор категорииurl = ""; // ссылка на категорию

}

Приведем структуру класса MarketUser:

class MarketUser

{

int newId; // айди

int id; // идентификатор покупателя

string name; // имя покупателя

string country; // страна покупателя

}

Приведем структуру класса MarketUser:

class Feedback

{

int newId;

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

int userId; // идентификатор покупателя

int productId; // идентификатор товара

int mark; // оценка

string coment; // текст коментария

int quantity; // количество купленного

}

Приведем структуру класса ProductImage

class ProductImage

{int id; // идентификатор изображенияint productId; // идентификатор товараstring path=""; // путьstring url=""; // ссылка на изобржение

}

Приведем структуру класса ProductInfoForCompare

class ProductInfoForCompare

{

int productId; // идентификатор товара

int shopId; // идентификатор магазина

int subCategoryId; // идентификатор категории

string name=""; // имя товара

string imagePath = ""; // путь к картинки

Bitmap image=null; // изображение

float [] [] descriptors = null; // дескрипторы изображения

bool findGroup = false;

}

Приведем структуру класса IdenticalProductGroup

class IdenticalProductGroup

{

int id; // идентификатор группы

int subCategoryId; // категория группы

bool validated; // флаг проверки группы при составлении

групп одинаковых товаров

List products; // товары группы

List etalonProducts;

// эталонные товары группы

List newEtalonProducts; // новые

эталонные товары группы

}

Описание интерфейса работы программы.

При запуска программы появляется главное окно приложения:

Рис. 7. Главное окно приложения

Приведем описание интерфейса

1.Вкладка "Парс" позволяет производить парс магазинов сайта.

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

Возможны 2 варианта: задание диапазона и задание через список.

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

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

.Вкладка "Группировка" позволяет разбить товары в базе на группы одинаковых.

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

b)Процент удачного сравнения - минимальный процент совпавших точек 2х изображений, при котором они считаются одинаковыми.)Количество эталонов в группе - каждая группа одинаковости содержит некоторое количество эталонных товаров, которые её определяют, этот параметр ограничивает их максимальное количество.

После нажатия на кнопку "Запуск" начинается процедура составления дескрипторов и группировка товаров. Т.к. процедура длинная на форме предусмотрены 2 элемента ProgressBar отображающие ход работы.

.Вкладка "Обзор" позволяет просмотреть созданные группы.

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

В таблице снизу появляются группы одинаковости для этой категории. В таблице только один столбец - id этой группы.

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

.Вкладка "Поиск" позволяет производить поиск в базе по изображениям.

Для начала можно изме