Как выполнить поиск по текстовому файлу?
Делаю лабораторную по базам данных, C#. Нужно создать базу данных автосалона (реализовать методы записи, считывания и тому подобное).
Реализовалл весь необходимый функционал, кроме поиска (метод Search). Суть метода заключается в поиске элемента по номеру или же другим способом.
Пытался найти информацию про передачу массива как аргумента функции, но возникло исключение, у которого нет описания на MSDN.
Так как передать массив не получилось, я решил пойти другим способом - подключить директорию внутри метода и весь текст в файле считать в массив. Я создал, цикл в котором перебираю весь массив, и внутри цикла проверяется условие массив[i] == номер, при выполнении которого, должен делаться вывод в консоль. Но условие не срабаывает.
Метод поиска:
static void Search()
{
string pathToFile = @ "D:\Laboratory(OOP)\2.5\main\input.txt";
string[] readText = File.ReadAllLines(pathToFile);
int s;
Console.WriteLine("[0] - По номеру\n[1] - По найбільшій кількості машин\n [2] - По найменуванні");
Console.Write("Виберіть спосіб пошуку: ");
s = Convert.ToInt32(Console.ReadLine());
switch (s)
{
case 0:
int number;
Console.WriteLine("Введіть номер: ");
number = Convert.ToInt32(Console.ReadLine());
string _num = number.ToString();
for (int i = 0; i < readText.Length; i++)
{
if (readText[i] == _num)
{
Console.WriteLine(readText[i]);
}
}
Menu();
break;
}
}
Полный код:
using System;
using System.IO;
using System.Text;
namespace Data
{
public class DataStream
{
static void Search()
{
string pathToFile = @"D:\Laboratory(OOP)\2.5\main\input.txt";
string[] readText = File.ReadAllLines(pathToFile);
int s;
Console.WriteLine("[0] - По номеру\n[1] - По найбільшій кількості машин\n [2] - По найменуванні");
Console.Write("Виберіть спосіб пошуку: ");
s = Convert.ToInt32(Console.ReadLine());
switch (s)
{
case 0:
int number;
Console.WriteLine("Введіть номер: ");
number = Convert.ToInt32(Console.ReadLine());
string _num = number.ToString();
for (int i = 0; i < readText.Length; i++)
{
if(readText[i] == _num)
{
Console.WriteLine(readText[i]);
}
}
Menu();
break;
}
}
static void Readfile()
{
string pathToFile = @"D:\Laboratory(OOP)\2.5\main\input.txt";
int num;
Console.WriteLine("[0] - Прочитати з файла [1] - прочитати з консолі");
Console.Write("Виберіть як ви хочете прочитати файл: ");
num = Convert.ToInt32(Console.ReadLine());
switch (num)
{
case 0:
Console.WriteLine("Зчитування файлу...");
File.OpenRead(pathToFile);
Menu();
System.Threading.Thread.Sleep(10000);
Console.Clear();
break;
case 1:
Console.WriteLine("Відкриття файлу...");
using (StreamReader reader = new StreamReader(pathToFile))
{
string? line;
while ((line = reader.ReadLine()) != null)
{
Console.WriteLine(line);
}
}
break;
}
Menu();
}
public static void Entry()
{
string pathToFile = @"D:\Laboratory(OOP)\2.5\main\input.txt"; // Файл
// БД
string Name;
int price;
int current;
string set;
int day, month, year;
// БД
int n; // Розмір масиву
string[] str_d; // Массив данних
Console.Write("Введiтьк кiлькiсть автомобiлiв: ");
n = Convert.ToInt32(Console.ReadLine());
str_d = new string[n]; // Створення масиву
StreamWriter str = new StreamWriter(pathToFile); // відкривання файлу для запису
for (int i = 0; i < n; i++) // цикл
{
Console.WriteLine("#" + i + "-----------------");
str.WriteLine("Номер " + i);
Console.Write("Найменування: ");
Name = Console.ReadLine();
str_d[i] = Name;
str.WriteLine("Найменування:" + str_d[i]);
Console.Write("Цiна одиницi: ");
price = Convert.ToInt32(Console.ReadLine());
string _price = price.ToString();
str_d[i] = _price;
str.WriteLine("Цiна одиницi: " + str_d[i]);
Console.Write("Кiлькiсть: ");
current = Convert.ToInt32(Console.ReadLine());
string _current = current.ToString();
str_d[i] = _current;
str.WriteLine("Кiлькiсть: " + str_d[i]);
Console.Write("Комплектацiя: ");
set = Console.ReadLine();
str_d[i] = set;
str.WriteLine("Комплектацiя: " + str_d[i]);
Console.WriteLine("Дата останнього привозу: ");
Console.Write("День: ");
day = Convert.ToInt32(Console.ReadLine());
Console.Write("Місяць(номер): ");
month = Convert.ToInt32(Console.ReadLine());
Console.Write("Рік: ");
year = Convert.ToInt32(Console.ReadLine());
string _day = day.ToString();
string _month = month.ToString();
string _year = year.ToString();
str.Write("Дата останнього привозу: ");
str_d[i] = _day;
str.Write(str_d[i] + ".");
str_d[i] = _month;
str.Write(str_d[i] + ".");
str_d[i] = _year;
str.WriteLine(str_d[i]);
str.WriteLine("-----------------------------------");
}
str.Close();
Console.Clear();
Menu();
}
public static void Menu() // початок програми
{
int _choose;
Console.WriteLine("База данних автосалона");
Console.WriteLine("[0] - Вихiд\n[1] - Створити новий список автомобiлiв\n[2] - Читати iнформацiю\n[3] - Пошук\n[4] - Сортування");
_choose = Convert.ToInt32(Console.ReadLine());
switch (_choose)
{
case 0: return; break; // Вихыд
case 1: Entry(); break; // Заповнення масиву
case 2: Readfile(); break; // Читати файл
case 3: Search(); break; // Пошук
}
}
public static void Main(string[] argrs) // точка входу
{
Menu(); // Виклик
}
}
}