Files
UP01/ConsoleApp1/ConsoleApp1/Program.cs
GitLab-Admin 147acc195d Second push
2026-03-31 09:52:37 +05:00

129 lines
6.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VIN_LIB;
using REG_MARK_LIB;
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
string[] testVins = new string[]
{
// РОССИЯ (XTA - АвтоВАЗ, X7L - Renault)
"XTA210700L1234567", "XTA211400M1234567", "X7LHSR450J1234567", "XTA11183091234567", "XTA210900V1234567",
// ГЕРМАНИЯ (WBA - BMW, WVG - VW, WDC - Mercedes)
"WBA316000K1234567", "WVWZZZ1JZ1W123456", "WDC1690311J123456", "WBA530D00L1234567", "WVGZZZ5NZCW123456",
// США (1FA - Ford, 1GC - Chevrolet)
"1FA6P8CF0E1234567", "1G6AF57V041234567", "1FMEU34E071234567", "1GCGK23G0B1234567", "1FM5K8GT0H1234567",
// ЯПОНИЯ (JTD - Toyota, JHM - Honda)
"JTD12345678123456", "JHMRE485081234567", "JTDKB22U001234567", "JHMCV1650C1234567", "JTDGX31P0E1234567",
// ЮЖНАЯ КОРЕЯ (KNA - Kia, KMH - Hyundai)
"KNAJP241261234567", "KMHCT41M0A1234567", "KNAKU4120D1234567", "KMHSH51J0B1234567", "KNAJX5240L1234567",
// МАЛЫЕ ПРОИЗВОДИТЕЛИ (3-й символ '9')
// Здесь страна определяется по 12-14 символам (в примерах это X39 - Россия)
"X3912345678X39456", "W0912345678W09123", "Y9912345678Y99123", "Z9912345678Z99123", "99912345678999123",
// ФРАНЦИЯ И ИТАЛИЯ (VF3 - Peugeot, ZFA - Fiat)
"VF3CC8HZB81234567", "ZFA18200001234567", "VF7LC5FW091234567", "ZAR93900001234567", "VF32CKFVC21234567",
// РАЗНЫЕ РЕГИОНЫ (Китай, Великобритания, Швеция)
"LSV12345678123456", "SAL12345678123456", "YS312345678123456", "LNV12345678123456", "SAB12345678123456",
// ДОПОЛНИТЕЛЬНЫЕ (Казахстан, Узбекистан, Чехия)
"KS112345678123456", "XWB12345678123456", "TMB12345678123456", "KZC12345678123456", "XW812345678123456",
"3HG12345678123456", "8AW12345678123456", "Z1B12345678123456", "Z5S12345678123456", "VF112345678123456"
};
string[] testMarks = {
// 1. Последовательная серия (проверка инкремента цифр)
"A001AA77", "A002AA77", "A003AA77", "A010AA77", "A099AA77", "A100AA77", "A500AA77", "A998AA77", "A999AA77",
// 2. Граничные переходы букв (A999AA -> B001AA)
"B999AA77", "X999AA77", "A999BA77", "A999XA77", "A999AX77", "X999XX77",
// 3. Разные регионы (2 и 3 знака)
"E555KK01", "M100HH02", "B777BB16", "T001TT99", "A123AA102", "X888XX177", "K001MK799", "C500CC190",
// 4. Группа случайных номеров для массовой проверки
"K123AB77", "M456BC77", "H789CE77", "P012EK77", "C345KH77", "T678HM77", "Y901MO77", "O234OP77",
"A567PC77", "B890CT77", "E111TY77", "K222YX77", "M333XA77", "H444XB77", "P555XE77", "C666XK77",
"T777XM77", "Y888XH77", "O999XO77", "A001XP77", "B010XC77", "E100XT77", "K200XY77", "M300XX77",
// 5. Номера с разными буквами (все 12 разрешенных)
"A111AA11", "B222BB22", "E333EE33", "K444KK44", "M555MM55", "H666HH66", "O777OO77", "P888PP88",
"C999CC99", "T100TT01", "Y200YY02", "X300XX03",
// 6. Еще немного из разных регионов (от 04 до 197)
"A001AA04", "B002BB05", "E003EE06", "K004KK07", "M005MM08", "H006HH09", "O007OO10", "P008PP11",
"C009CC12", "T010TT13", "Y011YY14", "X012XX15", "A013AA16", "B014BB17", "E015EE18", "K016KK19",
"M017MM21", "H018HH22", "O019OO23", "P020PP24", "C021CC25", "T022TT26", "Y023YY27", "X024XX28",
"A025AA29", "B026BB30", "E027EE31", "K028KK32", "M029MM33", "H030HH34", "O031OO35", "P032PP36",
"C033CC37", "T034TT38", "Y035YY39", "X036XX40", "A037AA41", "B038BB42", "E039EE43", "K040KK44",
"M041MM45", "H042HH46", "O043OO47", "P044PP48", "C045CC49", "T046TT50", "Y047YY51", "X048XX52",
"A100AA177", "B200BB197", "E300EE199", "K400KK777"
};
/*
int i = 0;
int j = 0;
foreach (string v in testVins)
{
if (VIN_LIB.VIN.CheckVIN(v))
i++;
else
j++;
Console.WriteLine($"Страна: {VIN_LIB.VIN.GetVINCountry(v)}");
Console.WriteLine($"Вин номер: {(VIN_LIB.VIN.CheckVIN(v) ? "Верный" : "Не верный")}");
Console.WriteLine($"Год: {VIN_LIB.VIN.GetTransportYear(v)}");
}
Console.WriteLine($"Успешно: {i}");
Console.WriteLine($"Не успешно: {j}");
Console.ReadLine();
*/
int i = 0;
int j = 0;
foreach (string v in testMarks)
{
bool isValid = REG_MARK_LIB.REG_MARK.CheckMark(v);
if (isValid)
{
i++;
// Генерируем границу: берем текущую серию (буквы) и ставим 999
// Пример: если v = "A123BC77", то rangeEnd будет "A999BC77"
string rangeEnd = $"{v[0]}999{v.Substring(4)}";
string nextMark = REG_MARK_LIB.REG_MARK.GetNextMarkAfter(v);
// В качестве rangeStart для метода логично передать сам v или следующий за ним
string nextInRange = REG_MARK_LIB.REG_MARK.GetNextMarkAfterInRange(v, v, rangeEnd);
Console.WriteLine($"Номер ТС: Верный");
Console.WriteLine($"Текущая марка: {v} \t Следующая марка: {nextMark}");
Console.WriteLine($"Интервал до {rangeEnd}: {nextInRange}");
}
else
{
j++;
Console.WriteLine($"Номер ТС: Не верный ({v})");
}
Console.WriteLine("--------------------------------------------------");
}
Console.WriteLine($"Успешно: {i}");
Console.WriteLine($"Не успешно: {j}");
Console.ReadLine();
}
}
}