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

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

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



i++)

{[i] = new List();[i].Add(list[i]);

}resultList;

}[splits];splitSize = count / splits;lastSplit = count% splits;(int i = 0; i < splits - 1; i++)

{[i] = new List();(int j = 0; j < splitSize; j++)

{[i].Add(list[i * splitSize + j]);

}

}[splits - 1] = new List();(int j = 0; j < splitSize + lastSplit; j++)

{[splits - 1].Add(list[splits - 1 * splitSize + j]);

}splittedList;

}static int CountWorkAmount[] list)

{counter = 0;(var l in list)(var el in l)++;counter;

}

}

}

МодульDBWorker

using System;System.Collections.Generic;System.Linq;System.Text;System.Data;System.Data.SqlClient;grabberMolotok.DBEngine

{class DBEngine

{connectionString; //строка подключенияCategoryTable categoryTable; //таблица категорийImageTable imageTable; //таблица изображенийSettingsTable settingsTable; //таблица настроекDBEngine()

{builder = new SqlConnectionStringBuilder();.DataSource = ".\\SQLExpress";.InitialCatalog = "molotokdb";.IntegratedSecurity = true;= builder.ToString();();

}InitTables()

{= new CategoryTable(connectionString);= new ImageTable(connectionString);= new SettingsTable(connectionString);

}void ClearTables()

{.Clear();.Clear();

}

}

}System;System.Collections.Generic;System.Linq;System.Text;System.Data;System.Data.SqlClient;grabberMolotok.DBEngine

{class CategoryTable : EngineTable

{CategoryTable(string connectionString)

{.tableName = "Categories";.connectionString = connectionString;

}void Insert(List categories)

{(this)

{connection = new SqlConnection(connectionString);insertCategoryCommand = new SqlCommand("sp_InsertCategory", connection);.CommandType = CommandType.StoredProcedure;.UpdatedRowSource = UpdateRowSource.OutputParameters;(insertCategoryCommand.Parameters);.Open();(var category in categories)

{(insertCategoryCommand.Parameters, category);.ExecuteNonQuery();

}.Close();

}

}void Insert(Category c)

{(this)

{connection = new SqlConnection(connectionString);insertCategoryCommand = new SqlCommand("sp_InsertCategory", connection);.CommandType = CommandType.StoredProcedure;.UpdatedRowSource = UpdateRowSource.OutputParameters;(insertCategoryCommand.Parameters);.Open();(insertCategoryCommand.Parameters, c);.ExecuteNonQuery();.Close();

}

}List GetAll()

{(this)

categoryList=newList();getCommand = new SqlCommand("SELECT * FROM " + tableName, connection);.Open();reader = getCommand.ExecuteReader();(reader.Read())

{.Add(GetFromReader(reader));

}.Close();categoryList;

}

}Category GetById(int id)

{(this)

categoryList=newList();getCommand = new SqlCommand("SELECT * FROM " + tableName + " WHERE id=@id", connection);.Parameters.Add(new SqlParameter("@id", id));.Open();reader = getCommand.ExecuteReader();(reader.Read())= GetFromReader(reader);.Close();c;

}

}

#region Мелкие функцииCategory GetFromReader(SqlDataReader reader)

{c = new Category();.id = (int)reader["id"];.level = (int)reader["level"];.name = (string)reader["name"];.url = (string)reader["url"];.parentURL = (string)reader["parentUrl"];c;

}void GetCommandParameters(SqlParameterCollection parameters)

{.Clear();.Add("@id", SqlDbType.Int);.Add("@level", SqlDbType.Int);.Add("@name", SqlDbType.VarChar);.Add("@url", SqlDbType.VarChar);.Add("@parentUrl", SqlDbType.VarChar);

}void FillCommandParameters(SqlParameterCollection parameters, Category c)

{["@id"].Value = c.id;["@level"].Value = c.level;["@name"].Value = c.name;["@url"].Value = c.url;["@parentUrl"].Value = c.parentURL;

}

#endregion

}

}

Модуль Grabber

using System;System.Collections.Generic;System.Linq;System.Text;System.Net;System.IO;System.Windows.Forms;System.Text.RegularExpressions;System.Threading;System.Diagnostics;grabberMolotok.Threading;grabberMolotok

{Grabber

{.DBEngine dbEngine; //движок БД categories; //категорииgetItemCounter; //счетчик получения товаров getItemWorkAmount; //объём работы получения товаровgetItemThreadCount; //количество потоков получения товаров

public int GetItemThreadCount

{{ return getItemThreadCount; }{ getItemThreadCount = value; }

}saveImageCounter; //счетчик сохранения изображений saveItemWorkAmount; //объём работы сохранения изображенийsaveItemThreadCount; //количество потоков сохранения изображений

public int SaveItemThreadCount

{{ return saveItemThreadCount; }{ saveItemThreadCount = value; }

}

#region Событияdelegate void AllCategoriesParseCompletedEventHandler();static event AllCategoriesParseCompletedEventHandler AllCategoriesParseCompletedEvent;delegate void AllCategoriesImageSaveCompletedEventHandler();static event AllCategoriesImageSaveCompletedEventHandler AllCategoriesImageSaveCompletedEvent;delegate void CategoriesGotEventHandler();static event CategoriesGotEventHandler CategoriesGotEvent;OnCategoryParseComplete()

{++;(getItemCounter == getItemWorkAmount)

{();

}

}OnCategoryImageSaveComplete()

{++;(saveImageCounter == saveItemWorkAmount)

{(AllCategoriesImageSaveCompletedEvent != null)();

}

}

#endregion СобытияGrabber()

();=0;=-1;=8;=0;=-1;">{.CategoryParseCompletedEvent += new Category.CategoryParseCompletedEventHandler(this.OnCategoryParseComplete);.CategoryImageSaveCompletedEvent += new Category.CategoryImageSaveCompletedEventHandler(this.OnCategoryImageSaveComplete);= new DBEngine.DBEngine();= new List();= 0;= -1;= 8;= 0;= -1;

saveItemThreadCount = 8;

}

///

/// Получает список категорий с молотка

/// void GetCategories()

{.WriteLine("Получение категорий с сайта");

columnDivList=null;();= wB.WaitElement("pagecontent1", 10000)

.GetInnerElements("table", 0)

.GetInnerElements("tbody", 0)

.GetInnerElements("tr", 3)

.GetInnerElements("td", 1)

.GetInnerElements("div");(var columnDiv in columnDivList)

{.AddRange(columnDiv.GetInnerElements("div"));

}.WriteLine("Категории получены с сайта");

ParseCategories(categoriesHtmlList);(CategoriesGotEvent != null)

CategoriesGotEvent();

}

///

/// Парсит полученные с молотка категории

///

/// categoriesHtmlList)

{.WriteLine("Начался парс категорий");

string[] LastLevelURL = new string[4];catName;catURL;catClass;catLevel;catSiteId;wholeStopwatch = Stopwatch.StartNew();(var categoryHtml in categoriesHtmlList)

{

//Stopwatch stopwatch = Stopwatch.StartNew();= GetName(categoryHtml);= GetURL(categoryHtml);= GetClass(categoryHtml);= GetLevel(catClass);= GetSiteID(categoryHtml);c = null;(catLevel)

{0:

{= new Category(catURL, "this is root", catName, 0, catLevel);[0] = catURL;.Add(c);;

}1:

{= new Category(catURL, LastLevelURL[0], catName, catSiteId, catLevel);[1] = catURL;.Add(c);;

}2:

{= new Category(catURL, LastLevelURL[1], catName, catSiteId, catLevel);[2] = catURL;.Add(c);;

}3:

{= new Category(catURL, LastLevelURL[2], catName, catSiteId, catLevel);[3] = catURL;.Add(c);;

}4:

{= new Category(catURL, LastLevelURL[3], catName, catSiteId, catLevel);.Add(c);;

}: { break; }

}

//stopwatch.Stop();

//Debug.Writ