Слайд 2Классы для работы с файлами
Для работы с классами необходимо подключить
пространство имен System.IO
using System.IO
Классы:
StreamWriter - Реализует TextWriter для записи символов
в поток в определенной кодировке.
StreamReader - Реализует TextReader, который считывает символы из потока байтов в определенной кодировке.
File - Предоставляет статические методы для создания, копирования, удаления, перемещения и открытия файлов
Слайд 3Методы класса File
CreateText - Создается или открывается файл для записи
текста в кодировке UTF-8.
AppendText - Создает StreamWriter добавляющий в существующий
файл текст в кодировке UTF-8.
OpenText - Открывает для чтения существующий файл, содержащий текст в кодировке UTF-8.
Exists - Определяет, существует ли заданный файл.
ReadAllText(String) - Открывает текстовый файл, считывает все строки файла и затем закрывает файл
ReadAllLines(String) - Открывает текстовый файл, считывает все строки файла и затем закрывает файл.
WriteAllText(String, String) - Создает новый файл, записывает в него указанную строку и затем закрывает файл. Если целевой файл уже существует, он будет переопределен.
WriteAllLines(String, String[]) - Создает новый файл, записывает в него указанный массив строк и затем закрывает файл.
Слайд 4Методы класса StreamWriter
StreamWriter(String) - Инициализирует новый экземпляр класса StreamWriter для
указанного файла с помощью кодировки по умолчанию и размера буфера.
Write(String) - Записывает в поток строку.
WriteLine(String) - Записывает в текстовую строку или поток строку, за которой следует признак конца строки.
Close - Закрывает текущий объект StreamWriter и базовый поток.
Слайд 5Методы и свойства класса StreamReader
StreamReader(String) - Инициализирует новый экземпляр
класса StreamReader для указанного имени файла.
ReadToEnd - Считывает все
символы, начиная с текущей позиции до конца потока.
ReadLine - Выполняет чтение строки символов из текущего потока и возвращает данные в виде строки.
EndOfStream - Получает значение, определяющее, находится ли позиция текущего потока в конце потока.
Слайд 6Примеры
Создание или открытие файла и построчное добавление записей
if(File.Exists(@"d:\vbbook.txt"))
writefl = File.AppendText(@"d:\vbbook.txt");
else
writefl = File.CreateText(@"d:\vbbook.txt");
writefl описан начале как
StreamWriter writefl;
Слайд 7Примеры
Построчная запись в файл
writefl.WriteLine(textBox1.Text);
В конце записи следует закрыть файл:
writefl.Close();
Слайд 8Примеры
Открытие файла для чтения
if (File.Exists(@"d:\vbbook.txt"))
readfl = new StreamReader(@"d:\vbbook.txt");
else MessageBox.Show("файла нет");
В
начале readfl описан как
StreamReader readfl;
Слайд 9Примеры
Построчное чтение из файла
if (readfl.EndOfStream == false)
label1.Text = readfl.ReadLine();
else label1.Text = "end";
В конце чтения надо закрыть файл:
readfl.Close();
Слайд 10Примеры
Чтение файла в массив строк
strmas = File.ReadAllLines(@"d:\vbbook.txt");
В начале массив описан
как:
string[] strmas ;
Слайд 11Примеры
Запись текста из текстового поля в файл
File.WriteAllText(@"d:\vbbook.txt",textBox1.Text);
Слайд 13Структура текстового файла с тестом test.txt
Вопрос1
ответ1
3
ответ2
4
ответ3
5
Вопрос2
ответ4
6
ответ5
2
ответ6
3
Вопрос3
ответ7
4
ответ8
3
ответ9
5
Слайд 15Описание структуры
struct vopros
{public string vopr;
public string otv1;
public int
bal1;
public string otv2;
public int bal2;
public string otv3;
public int bal3;
};
Слайд 16Описание данных
public partial class Form1 : Form
{
vopros[] Test;
int k,i,sum,summax;
Слайд 17Начало тестирования
string[] str;
str
= File.ReadAllLines(@"d:\test.txt");
int n =
str.Length;
k = n / 7;
Test = new vopros[k];
int m = 0;
for (int j = 0; j < k; j++)
{
Test[j].vopr = str[m]; m++;
Test[j].otv1 = str[m]; m++;
Test[j].bal1 = Convert.ToInt32(str[m]); m++;
Test[j].otv2 = str[m]; m++;
Test[j].bal2 = Convert.ToInt32(str[m]); m++;
Test[j].otv3 = str[m]; m++;
Test[j].bal3 = Convert.ToInt32(str[m]); m++;
}
i = 0;
sum = 0;
summax = 0;
vivod();
Слайд 18Процедура Vivod
void vivod()
{
label1.Text = Test[i].vopr;
radioButton1.Text = Test[i].otv1;
radioButton2.Text = Test[i].otv2;
radioButton3.Text = Test[i].otv3;
if (Test[i].bal1>Test[i].bal2 && Test[i].bal1>Test[i].bal3) summax+=Test[i].bal1;
if (Test[i].bal2>Test[i].bal2 && Test[i].bal2>Test[i].bal3) summax+=Test[i].bal2;
if (Test[i].bal3>Test[i].bal1 && Test[i].bal3>Test[i].bal2) summax+=Test[i].bal3;
radioButton1.Checked = false;
radioButton2.Checked = false;
radioButton3.Checked = false;
}
Слайд 19Кнопка Далее
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked) sum
+= Test[i].bal1;
if (radioButton2.Checked) sum += Test[i].bal2;
if (radioButton3.Checked) sum += Test[i].bal3;
i++;
if (i < k) vivod();
else
{
button1.Enabled = false;
}
}
Слайд 20Кнопка Результат
private void button2_Click(object sender, EventArgs e)
{
double rez;
rez=(double)sum/summax*100;
MessageBox.Show("Вы получили "+Convert.ToString(rez)+"%");
}