Разработка автоматизированной системы классификации товаров по изображениям
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
?тема классификации товаров была внедрена и используется для осуществления коммерческой деятельности на предприятии ООО "Алсени".
Список использованной литературы
1.Абрамян М. Visual C# на примерах. - Санкт Петербург: BHV-Санкт-Петербург, 2008 - 496с.
2.Евсеева О.Н., Шамшев А.Б. Работа с базами данных на языке C#. Технология ADO.net. - Ульяновск: УлГТУ, 2009 - 176с.
.Комарцова Л.Г., Максимов А.В. Нейрокомпьютеры. - М.: МГТУ им. Н.Э. Баумана, 2004. - 400с.
.Круглов В.В., Борисов В.В. Искусственные нейронные сети. Теория и практика. - М.: Горячая линия - Телеком, 2001. - 382с.
5.-..">Хабрахабр [Электронный ресурс]: Распараллеливание задач. Случай "идеальной параллельности". Часть 1. Режим доступа: - Загл. с экрана.
.-..">Хабрахабр [Электронный ресурс]: Распараллеливание задач. Случай "идеальной параллельности". Часть 2. Режим доступа: - Загл. с экрана.
.Эндрю Троелсен. Язык программирования C# 2010 и платформа.net 4. - М.: Вильямс, 2010. - 1392с.
. - Загл. с экрана.">MS Geeks [Электронный ресурс]: Регулярные выражения в C#. Режим доступа:
Приложение
Листинг программы
Модуль Threading
using System;System. Collections. Generic;System. Linq;System. Text;grabberMolotok. Threading
{class ThreadHelper
{static List list, int splits)
{count = list. Count;(count < splits)
{ [count];(int i = 0; i < count; 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)
{connection = new SqlConnection (connectionString); ();getCommand = new SqlCommand ("SELECT * FROM " + tableName, connection);. Open ();reader = getCommand. ExecuteReader ();(reader. Read ())
{. Add (GetFromReader (reader));
}. Close ();categoryList;
}
}Category GetById (int id)
{(this)
{c = null;connection = new SqlConnection (connectionString); ();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; // количество потоков получения товаровint GetItemThreadCount
{{ return getItemThreadCount; }{ getItemThreadCount = value; }
}saveImageCounter; // счетчик сохранения изображенийsaveItemWorkAmount; // объём работы сохранения изображенийsaveItemThreadCount; // количество потоков сохранения изображений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 ()
{. CategoryParseCompletedEvent += new Category. CategoryParseCompletedEventHandler (this. OnCategoryParseComplete);. CategoryImageSaveCompletedEvent += new Category. CategoryImageSaveCompletedEventHandler (this. OnCategoryImageSaveComplete);= new DBEngine. DBEngine ();= new List ();= 0;= - 1;= 8;= 0;= - 1;= 8;
}
// /
// / Получает список категорий с молотка
// / void GetCategories ()
columnDivList=null;<HtmlElement>categoriesHtmlList=newList<HtmlElement>();=wB.WaitElement("pagecontent1",10000)">{. WriteL