
- •Внешние устройства
- •Символьные данные
- •Разработка приложений с графическим интерфейсом пользователя Windows. Экранные формы
- •Работа с элементом управления TextBox.
- •Работа с элементом управления Button
- •Работа с элементом управления RichTextBox
- •Работа с элементами формы
- •Вызов элемента TextBox
- •Вызов элемента Button
- •Работа с элементом управления RichTextBox
- •Создание объекта Graphics пространства имен System.Drawing для рисования
- •Visual c# вставил метод с именем Form1_Paint, который выполняется при перерисовке элемента управления. Далее необходимо получить ссылку на объект Graphics из объекта PaintEventArgs в событии Paint:
Внешние устройства
Программа использует данные, которые расположены на внешнем устройстве (диск, дискета, флеш-диск, CD-диск) или получает результаты, которые необходимо записать на внешнее устройство. Считывание (запись) выполняет из файла (в файл), который и будет содержать данные на внешних устройствах. Файл данных – это совокупность (последовательность) компонент, имеющая имя, расположенная на внешнем носителе. Файлы могут быть объединены в каталоги (директории, папки), также имеющие имя. Использование файлов данных позволяет хранить данные на внешнем носителе, обрабатывая при необходимости порциями, многократно использовать один и тот же набор данных, а также использовать результаты выполнения одной программы как входные данные при выполнении другой программы и т.п.
Для существующего файла данных, который хранится на внешнем носителе и имеет имя, при обращении к файлу создается поток с целью сохранения данных.
Потоки включают основные операции:
чтение из потока – перенос информации из потока в оперативную память. Класс StreamReader предназначен для чтения из текстового файла;
запись в поток – передача данных из памяти в поток. Класс SrteamWriter предназначен для записи в текстовый файл.
Стандартные потоки связаны с консолью и клавиатурой. Для вывода данных в стандартный поток вывода и для ввода из стандартного потока ввода используются методы класса Console:
Console.ReadLine, Console.Write и Console.WriteLine.
Для ввода из файла (созданного заранее в текстовом редакторе) необходимо вначале открыть поток StreamReader, связав его с файлом. Открытие потока и его привязка к файлу осуществляются с помощью конструктора:
StreamReader sr = new StreamReader(path);
где sr - экземпляр класса StreamReader, а аргумент path передает строку, содержащую полный путь к файлу, который показывает месторасположение данных на внешнем носителе. Далее строки из файла по очереди считываются в переменную line, из которой далее извлекаются отдельные значения.
После окончания работы с объявленным потоком, его следует закрыть методом Close: sr.Close();
При выводе в файл необходимо открыть поток класса SrteamWriter, задав имя потока и связав его с файлом, предназначенным для размещения выводимых результатов, вывести в этот поток (т.е. указанный файл) необходимые результаты и закрыть поток методом Close(). Открытие потока и его привязка к файлу осуществляются с помощью конструктора:
SrteamWriter sw = new SrteamWriter(path);
Пример 1. Результаты соревнований по прыжкам в длину определяется по лучшей попытке из 3-х попыток. Информация о результатах соревнований включает:
фамилию и инициалы спортсмена,
результаты трех попыток.
Результаты записаны в виде текстового файла на «флешке» "F:\\Prshk.txt":
Иванченко_Ф.И. 5,8 6,0 5,7 0
Соколов_А.В. 6,2 5,8 6,8 0
Рыбаков_С.П. 5,9 6,4 7,3 0
Улыбин_Н.В. 5,6 5,3 5,2 0
Цыплаков_Р.Д. 6,4 6,8 6,2 0
Игнатович_Т.О. 5,9 6,5 6,4 0
Андреев_Н.Р. 7,0 7,2 6,8 0
Яковлев_М.А. 6,9 7,1 6,6 0
Шарипов_В.Я. 5,8 5,4 5,6 0
Задорнов_Л.Д. 6,0 6,1 6,0 0
Селезнев_О.Г. 5,3 5,8 5,4 0
Коробков_Н.Н. 6,5 6,8 6,4 0
Васильев_К.Ф. 5,9 6,7 6,4 0
Цирульников_Б.Т. 5,9 6,3 6,6 0
Зарипов_М.М 6,4 6,8 6,7 0
Считать из файла, расположить спортсменов в порядке занятых мест по лучшей попытке и записать в другой файл.
Программа на алгоритмическом языке C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
namespace ConsoleApplication1
{
struct Prsh
{
public string Fam; // Фамилия спортсмена
public double r1; // Результат 1-ой попытки
public double r2; // Результат 2-ой попытки
public double r3; // Результат 3-ой попытки
public double res; // Лучший результат, //вычисляется в программе
}
class Program
{
static void Main(string[] args)
{
Prsh[] Dln = new Prsh[25];
Prsh temp;
int i, j, n, k;
double max;
string path = "F:\\Prshk.txt";
StreamReader sr = new StreamReader(path, Encoding.GetEncoding(1251));
string line;
i = 0;
// Считываем из файла
while ((line = sr.ReadLine()) != null)
{
string[] str = line.Split(' ');
Dln[i].Fam = str[0];
Dln[i].r1 = double.Parse(str[1]);
Dln[i].r2 = double.Parse(str[2]);
Dln[i].r3 = double.Parse(str[3]);
// Вычисление лучшей попытки
Dln[i].res = Math.Max(Dln[i].r1, Math.Max(Dln[i].r2, Dln[i].r3));
Console.WriteLine(" {0} {1:f1} {2:f1} {3:f1} {4:f1}", Dln[i].Fam, Dln[i].r1, Dln[i].r2, Dln[i].r3, Dln[i].res);
i++;
}
n = i;
sr.Close();
// Расположение спортсменов в порядке занятых мест
for (i = 0; i < n-1; i++)
{
max = Dln[i].res; k = i;
for (j = i + 1; j < n; j++)
if (Dln[j].res > max)
{
max = Dln[j].res;
k = j;
}
temp = Dln[k];
Dln[k] = Dln[i];
Dln[i] = temp;
}
Console.WriteLine(" Фамилия Попытки Лучшая попытка");
for(i=0; i<n; i++)
Console.WriteLine(" {0} {1:f1} {2:f1} {3:f1} {4:f1}", Dln[i].Fam, Dln[i].r1, Dln[i].r2, Dln[i].r3, Dln[i].res);
string path1 = "F:\\Prshk1.txt";
StreamWriter sw = new StreamWriter(path1);
// Запись в новый файл "F:\\Prshk1.txt"
for(i=0; i<n; i++)
sw.WriteLine(" {0} {1:f1} {2:f1} {3:f1} {4:f1}", Dln[i].Fam, Dln[i].r1, Dln[i].r2, Dln[i].r3, Dln[i].res);
sw.Close();
}
}
}
Файл "F:\\Prshk1.txt", содержащий результаты спортсменов в порядке занятых //мест.
Рыбаков_С.П. 5,9 6,4 7,3 7,3
Андреев_Н.Р. 7,0 7,2 6,8 7,2
Яковлев_М.А. 6,9 7,1 6,6 7,1
Цыплаков_Р.Д. 6,4 6,8 6,2 6,8
Соколов_А.В. 6,2 5,8 6,8 6,8
Коробков_Н.Н. 6,5 6,8 6,4 6,8
Зарипов_М.М 6,4 6,8 6,7 6,8
Васильев_К.Ф. 5,9 6,7 6,4 6,7
Цирульников_Б.Т. 5,9 6,3 6,6 6,6
Игнатович_Т.О. 5,9 6,5 6,4 6,5
Задорнов_Л.Д. 6,0 6,1 6,0 6,1
Иванченко_Ф.И. 5,8 6,0 5,7 6,0
Селезнев_О.Г. 5,3 5,8 5,4 5,8
Шарипов_В.Я. 5,8 5,4 5,6 5,8
Улыбин_Н.В. 5,6 5,3 5,2 5,6
Пример 2. Расписание вылета самолетов из аэропорта заранее набрано в текстовом редакторе и в виде файла записано на «флешке»: “F:\\Rasp.txt”.
Расписание состоит из записей. Каждая запись состоит из следующих полей:
Номер Рейса |
Пункт Назначения |
Время Отправления |
Время прибытия |
Вывести на экран дисплея расписание вылета самолетов до заданного пункта назначения.
using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string line;
int nomr;
string Punct, Psd;
double Votp;
double Vprb;
string path = "F:\\Rasp.txt";
StreamReader sr = new StreamReader(path, Encoding.GetEncoding(1251));
Console.WriteLine(“ Введите заданный пункт назначения”);
Psd = Console.ReadLine();
while ((line = sr.ReadLine()) != null)
{
string[] spr = line.Split(' ');
nomr = int.Parse(spr[0]);
Punct = spr[1];
Votp = double.Parse(spr[2]);
Vprb = double.Parse(spr[3]);
if(Punct == Psd)
Console.WriteLine(" {0:d4} {1} {2:f4} {3:f4}", nomr, Punct, Votp, Vprb);
}
}
}
}