Практическая работа №29, 30, 31, 32

Название практической работы:создание проектов с использованием текстовых файлов.

Создание проектов на обработку текстовых файлов

Цель работы: 1) освоить приемы работы с текстовыми файлами;

знания (актуализация)

· понятие файла;

· правила организации доступа к файловым данным;

· причины возникновения распространенных ошибок при работе с файлами;

умения:

· создавать проекты для работы с текстовыми файлами.

Теоретический материал

Файл — это именованная структура данных, представляющая собой последовательность элементов данных, причем количество элементов последовательности практически не ограничено. В первом приближении файл можно рассматривать как массив переменной длины неограниченного размера.

В пространстве имен System.IO предусмотрено четыре класса, которые предназначены для работы с файловой системой компьютера, т.е для создания, удаления переноса и т.д. файлов и каталогов:

- Directory и Fi1е реализуют свои возможности с помощью статических методов, поэтому данные классы можно использовать без создания соответствующих объектов (экземпляров классов);

- DirectoryInfo и FileInfo обладают схожими функциональными возможностями c Directory и Fi1е, но порождены от класса FileSystemInfo и поэтому реализуются путем создания соответствующих экземпляров классов.

Для записи и чтения текстовых файлов очень удобно использовать классы StreamWriter и StreamReader.

Примерчтения и записи текстовых файлов

// Подключаем пространство имен System.IO:

using System.IO;

// Работаем с файлом

private void buttonlO_Click(object sender, EventArgs e)

{

string fileName = @"c:\wutemp\text.txt";

// Если файл с указанным именем существует – прекращаем с ним работу

if (File.Exists(fileName))

{

MessageBox.Show("Указанный файл уже существует.", fileName);

return;

}

// Создаем новый файл и записываем в него информацию

StreamWriter sr = File.CreateText(fileName);

sr.WriteLine("Раз, два, три, четыре, пять");

sr.WriteLine("1, 2, 3. 9 1/2 и так далее");

sr.WriteLine("Я изучаю {0} и {1}.", "С#", "Visual Basic");

sr.Close();

}

Пример добавления текста в существующий файл:

private void buttonll_Click(object sender, EventArgs e)

{

string fileName = @"c:\wutemp\text.txt";

// Добавляем одну строчку в текстовый файл

using (StreamWriter sw = File.AppendText(fileName))

{

sw.WriteLine("Добавили еще одну строчку");

}

}

Примерпострочного чтения текстового файла

private void buttonl2_Click(object sender, EventArgs e)

{

// 1 способ

using (StreamReader sr= new StreamReader (@"c:\ text.txt"))

{ string line;

// Читаем каждую строку, пока не достигнем конца файла

while ((line = sr.ReadLine()) != null)

{

listBox1.Items.Add(line);

}

// 2 способ

using (StreamReader sr = File.OpenText (fileName) )

{

string s = "";

while ((s = sr.ReadLine()) != null)

{

listBox1.Items.Add(line);

}

}

}

Ход работы

1. Создайте проект для решения предложенных ниже задач.

Рекомендации: старайтесь работать с данными из файлов с использованием классов.

Написать программу, которая создает файл «числа.txt» и записывает в него 5 введенных пользователем целых чисел. Убедитесь, что каждое число находится в отдельной строке. Определите сумму и произведение этих чисел. Результат допишите в другой файл.
Написать программу, которая вычисляет среднее арифметическое чисел, находящихся в файле.
На городской олимпиаде по информатике участникам было предложено выполнить 3 задания, каждое из которых оценивалось по 25-балльной шкале. Известно, что общее количество участников первого тура олимпиады не превосходит 250 человек. На вход программы подаются сведения о результатах олимпиады. В первой строке вводится количество участников N. Далее следуют N строк, имеющих следующий формат: <Фамилия> <Имя> <Баллы> Здесь: - <Фамилия> – строка, состоящая не более чем из 20 символов; - <Имя> – строка, состоящая не более чем из 15 символов; - <Баллы> – строка, содержащая три целых числа, соответствующих баллам, полученным участником за каждое задание первого тура. При этом <Фамилия> и <Имя>, <Имя> и <Баллы> могут быть разделены пробелами и символами табуляции (разным количеством). Примеры входных строк: Петрова Ольга 25 18 16 Калиниченко Иван 14 19 15 Определите фамилию и имя участника, набравшего максимальное количество баллов. Если среди остальных участников есть ученики, набравшие такое же количество баллов, то их фамилии и имена также следует вывести. При этом имена и фамилии можно выводить в произвольном порядке.
На вход программы подаются сведения о результатах соревнований по студенческому многоборью. Многоборье состоит из соревнований по четырем видам спорта, участие в каждом из которых оценивается баллами от 0 до 10 (0 баллов получает ученик, не принимавший участия в соревнованиях по данному виду спорта). Победители определяются по наибольшей сумме набранных баллов. Известно, что общее количество участников соревнований не превосходит 100. В первой строке вводится количество учеников, принимавших участие в соревнованиях, N. Далее следуют N строк, имеющих следующий формат: <Фамилия> <Имя> <Баллы> Здесь: - <Фамилия> – строка, состоящая не более чем из 20 символов; - <Имя> – строка, состоящая не более чем из 15 символов; - <Баллы> - строка, содержащая четыре целых числа, соответствующих баллам, полученным на соревнованиях по каждому из четырех видов спорта. При этом <Фамилия> и <Имя>, <Имя> и <Баллы> могут быть разделены пробелами и символами табуляции (разным количеством). Примеры входных строк: Иванова Мария 5 8 6 3 Петров Сергей 9 9 5 7 Напишите программу, которая будет выводить на экран фамилии и имена трех лучших участников многоборья. Если среди остальных участников есть ученики, набравшие то же количество баллов, что и один из трех лучших, то их фамилии и имена также следует вывести. При этом имена и фамилии можно выводить в произвольном порядке.
В некотором вузе абитуриенты проходят предварительное тестирование, по результатам которого могут быть допущены к сдаче вступительных экзаменов в первом потоке. Тестирование проводится по двум предметам, по каждому предмету абитуриент может набрать от 0 до 100 баллов. При этом к сдаче экзаменов в первом потоке допускаются абитуриенты, набравшие по результатам тестирования не менее 30 баллов по каждому из двух предметов. На вход программы подаются сведения о результатах предварительного тестирования. Известно, что общее количество участников тестирования не превосходит 500. В первой строке вводится количество абитуриентов, принимавших участие в тестировании, N. Далее следуют N строк, имеющих следующий формат: <Фамилия> <Имя> <Баллы> Здесь: - <Фамилия> – строка, состоящая не более чем из 20 символов; - <Имя> – строка, состоящая не более чем из 15 символов; - <Баллы> – строка, содержащая два целых числа, соответствующих баллам, полученным на тестировании по каждому из двух предметов. При этом <Фамилия> и <Имя>, <Имя> и <Баллы> могут быть разделены пробелами и символами табуляции (разным количеством). Примеры входных строк: Ветров Роман 68 59 Анисимова Екатерина 64 88 Напишите программу, которая будет выводить на экран фамилии и имена абитуриентов, потерпевших неудачу, то есть не допущенных к сдаче экзаменов в первом потоке. При этом фамилии должны выводиться в алфавитном порядке.
Напишите программу, которая дописывает в файл «phone.txt» фамилию, имя, и номер телефона, например, вашего товарища. Если файла на диске нет, то программа должна создать его. Добавьте в проект возможность поиска нужных данных как по телефону, так и по фамилии человека. Если в справочнике есть люди с одинаковыми фамилиями, то программа должна выводить список всех этих людей со своими телефонами.


2. Ответьте на контрольные вопросы:

- Что такое файл? В чем заключаются особенности текстового файла?

- В чем преимущество использования файлов по сравнению с массивами?

- Какие операции можно производить с файлами?

- Может ли файл состоять из одного элемента?

- Какой файл называется текстовым?

- Можно ли текстовый файл открыть одновременно для чтения и для записи?

3. Оформите и сдайте отчет преподавателю.

Наши рекомендации