Введение
В этой статье я хочу вам предложить задание для начинающих изачать C#. Задание не сложное, но отнеситесь к нему серъёзно. Не забывайте комментировать свой код.,
Немного теории
Создание решения в Visual Sudio .NET:
Пример программы представляет из себя отдельный проект. В Visual Sudio .NET проекты обычно группируются в решения. Для создания нового проекта выберите в меню File|New| Project. В диалоговом окне New Project выберите:
- Project Types: Visual C# Projects;
- Templates: Windows Application или Console Application;
- Name: имя решения;
- Location: его местоположение на диске.
Cтруктура простейшей программы на C#:
using <ИспользуемоеПространствоИмён1>;
// ...
using <ИспользуемоеПространствоИмёнN>;
namespace <ИмяПространстваИмён>
{
public class <ИмяКласса>
{
// Список переменных
// Методов
// и т.д...
// Конструктор класса
public <ИмяКласса1>()
{
}
static void Main()
{
}
}
public class <ИмяКлассаN>
{
// ...
}
}
Варианты
1. Консольное приложение
Написать приложение, которое будет искать в файлах с заданной маской в заданном каталоге указаную строку.
Требования:
1. Возможность задачи параметров через командную строку.
2. Результаты: имя файла, № строки, содержимое строки с совпадением.
3. Результаты должны выводиться на консоль.
2. Графическое приложение (Windows Forms)
Написать приложение с графическим интерфейсом (Windows.Forms), которое
будет искать в файлах с заданной маской в заданном каталоге указаную строку.
Требования:
1. Возможность задачи параметров через командную строку.
2. Результаты: имя файла, № строки, содержимое строки с совпадением.
3. Результаты должны выводиться в многострочный TextBox.
3. Графическое приложение с дополнительными функциями
Написать приложение с графическим интерфейсом (Windows.Forms), которое
будет искать в файлах с заданной маской в заданном каталоге указанные
строки (аналогично grep в UNIX).
Требования:
1. Локализация формы: по умолчанию - английская, при возможности - русская.
2. Возможность задачи параметров через командную строку.
3. Результаты: имя файла, № строки, содержимое строки с совпадением.
4. Результаты должны выводиться в многострочный TextBox.
5. Применение текущей темы Windows XP.
Полный разбор варианта №1
using System;
using System.IO;
namespace Lab2CSharp_L1
{
class FindFiles
{
private static void FindFile(string findLine, string mask, string
dirName)
{
string[] filesName; // = new string[1];
try
{
filesName = Directory.GetFiles(dirName, (mask.Trim() == "") ?
("*.*") : (mask.Trim()));
}
catch (Exception e)
{
Console.WriteLine("Error: The file could not be read: " +
e.Message);
return;
}
foreach(string oneFileName in filesName)
{
if(findLine.Trim() == "")
{
Console.WriteLine(oneFileName + " \n");
}
else
{
try
{
using (StreamReader sr = new
StreamReader(oneFileName))
{
String line;
long Num = 1;
while ((line = sr.ReadLine()) != null)
{
Console.WriteLine(oneFileName + ",
Line(" + Num + "): \"" + line + "\" \n");
Num++;
}
sr.Close();
}
}
catch (Exception e)
{
Console.WriteLine("Error: The file could not be
read: " + e.Message);
return;
}
}
}
}
[STAThread]
static void Main(string[] args)
{
if(args.Length == 3)
{
FindFile(args[2], args[1], args[0]);
}
else if(args.Length == 0)
{
string findLine;
string mask;
string dirName = "";
Console.WriteLine("Поиск в файлах с заданной маской в
заданном каталоге указанной строки.");
do{
Console.WriteLine("\nВведите путь поиска: ");
dirName = Console.ReadLine();
}while(dirName == "");
Console.WriteLine("\nВведите искомую строку: ");
findLine = Console.ReadLine();
Console.WriteLine("\nВведите маску поиска: ");
mask = Console.ReadLine();
FindFile(findLine, mask, dirName);
Console.Read();
}
else
{
Console.WriteLine("FORMAT: ProgName Path Mask FindWhat");
}
Console.Read();
}
}
}
Попробуйте сначала решить задание сами и не смотреть на моё, или можете для примера рассмотреть первый вариант, а потом второй и третий решить сами.
Комментариев нет:
Отправить комментарий