| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Data.SqlClient;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace Швейная_фабрика
- {
- public partial class FormLeven : Form
- {
- public FormLeven()
- {
- InitializeComponent();
- }
- /// <summary>
- /// Расстояние Левенштейна
- /// </summary>
- /// <param name="txt1">Первая строка</param>
- /// <param name="txt2">Вторая строка</param>
- /// <returns>Расстояние Левенштейна между двумя строками</returns>
- static int Levenshtein(string txt1, string txt2)
- {
- string t1 = txt1.ToLower().Trim();
- string t2 = txt2.ToLower().Trim();
- int CntLev = Math.Abs(t1.Length - t2.Length);
- // перебор до последнего символа более короткой строки
- for (int i = 0; i <= Math.Min(t1.Length, t2.Length) - 1; i++)
- {
- if (t1[i] != t2[i])
- CntLev++;
- }
- return CntLev;
- }
- List<string> LstTkani = new List<string>();
- /// <summary>
- /// Отобразить весь список тканей
- /// </summary>
- private void BtnShowAll_Click(object sender, EventArgs e)
- {
- DgvTkani.Rows.Clear();
- foreach (string Tkan in LstTkani)
- DgvTkani.Rows.Add(Tkan);
- }
- /// <summary>
- /// На момент открытия формы сформировать список с названиями тканей
- /// и заполнить DataGridView
- /// </summary>
- private void FormLeven_Load(object sender, EventArgs e)
- {
- SqlConnection con = new SqlConnection("Data Source=213.155.192.79,3002;Initial Catalog=СlothesFactoryLG;Persist Security Info=True;User ID=u21lebed;Password=hgm8");
- con.Open();
- string TxtQuery = "select Title from Tkan";
- SqlCommand query1 = new SqlCommand(TxtQuery, con);
- // выполнить запрос
- SqlDataReader res = query1.ExecuteReader();
- while (res.Read())
- LstTkani.Add(res["Title"].ToString());
- con.Close();
- BtnShowAll_Click(sender, e);
- }
- /// <summary>
- /// Поиск с учетом расстояния Левенштейна
- /// </summary>
- private void BtnFind_Click(object sender, EventArgs e)
- {
- DgvTkani.Rows.Clear();
- foreach (string Tkan in LstTkani)
- if (Levenshtein(Tkan, TbxFind.Text) <= 3)
- DgvTkani.Rows.Add(Tkan);
- }
- }
- }
|