Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ТооП / Тооп(5)

.docx
Скачиваний:
10
Добавлен:
31.05.2018
Размер:
992.42 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

НАБЕРЕЖНОЧЕЛНИНСКИЙ ИНСТИТУТ (ФИЛИАЛ)

КАФЕДРА ИНФОРМАЦИОННЫХ СИСТЕМ

ЛАБОРАТОРНАЯ РАБОТА №5

«Сохранение текущего состояние объектов в файлах»

По дисциплине

«Объектно-ориентированное программирование»

Выполнил:

Студент группы 2161121

Золотых С.В.

Проверил:

Илюхин А.Н.

Набережные Челны

2017

  1. Цель работы

Получение навыков в разработке программ с использованием файлов, сохранения информации в них и работы с ними.

  1. Постановка задачи

Создать объекты класса <имя класса> (класс и его поля задаются в соответствии с выбранным вариантом в лабораторной работе 1), причем объекты класса должны хранить данные о предметной области, связанные со свойствами предмета задания по варианту. Сохранить данные объекты в файле. Причем сохранить необходимо как отдельные объекты, так объект контейнерного типа, полученный в лабораторной работе 4. Считать сохраненные данные из файла и вывести их на экран.

№ варианта

Имя класса

Поле 1

Поле 2

Поле 3

3

Процессор

Фирма производитель

Количество ядер

Тактовая частота

  1. Текст программы

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.IO;

namespace ТООП_4_

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

class Processor_2//класс для частоты

{

public int n;

public double[] b;

public Processor_2(int n)

{

this.n = n;

b = new double[this.n];

}

public double this[int n]

{

get { return b[this.n-1]; }

set { b[this.n-1] = value; }

}

}

class Processor_3//класс для Фирмы

{

public string[] a;

public int n;

public Processor_3(int n)

{

this.n = n;

a= new string[this.n];

}

public string this[int n]

{

get { return a[this.n-1]; }

set { a[this.n - 1] = value; }

}

}

class Processor_4//класс для ядер

{

public int[] a;

public int n;

public Processor_4(int n)

{

this.n = n;

a = new int[this.n];

}

public int this[int n]

{

get { return a[this.n-1]; }

set { a[this.n-1] = value; }

}

}

private void button1_Click(object sender, EventArgs e)

{

int n = Convert.ToInt32(textBox4.Text);

Processor_3 A = new Processor_3(n);

for (int i = 0; i < A.n-1; i++) {

A[i] = textBox1.Text.Split(',')[i];

dataGridView1.Rows.Add(A[i]);

}

textBox1.Clear();//очищаем текстбокс

}

private void button2_Click(object sender, EventArgs e)

{

int n = Convert.ToInt32(textBox4.Text);

Processor_4 F = new Processor_4(n);

for (int i = 0; i < F.n-1; i++)

{

F[i] = Convert.ToInt32(textBox2.Text.Split(',')[i]);

dataGridView1.Rows[i].Cells[1].Value = F[i];

}

textBox2 .Clear();//очищаем текстбокс

}

private void button3_Click(object sender, EventArgs e)

{

int n = Convert.ToInt32(textBox4.Text);

Processor_2 B = new Processor_2(n);

for (int i = 0; i < B.n-1; i++)

{

B[i] = Convert.ToDouble(textBox3.Text.Split(';')[i]);

dataGridView1.Rows[i].Cells[2].Value = B[i]+" GHz";

}

textBox3.Clear();//очищаем текстбокс

textBox4.Clear();

}

private void button4_Click_1(object sender, EventArgs e)

{

Application.Exit();

}

private void button5_Click(object sender, EventArgs e)

{

dataGridView1.Rows.Clear();

}

private void button6_Click(object sender, EventArgs e) //открытие файла для считывания из него информации

{

Stream myStream = null;

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

if ((myStream = openFileDialog1.OpenFile()) != null)

{

StreamReader myread = new StreamReader(mystr);

string[] str;

int num = 0;

try

{

string[] str1 = myread.ReadToEnd().Split('\n');

num = str1.Count();

dataGridView1.RowCount = num;

for (int i = 0; i < num; i++)

{

str = str1[i].Split(' ');

for (int j = 0; j < dataGridView1.ColumnCount; j++)

{

try

{

dataGridView1.Rows[i].Cells[j].Value = str[j];

}

catch { }

}

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

myread.Close();

}

myStream.Close();

}

}

}

private void button7_Click(object sender, EventArgs e) //сохранение данных в файл

{

Stream myStream;

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

if ((myStream = saveFileDialog1.OpenFile()) != null)

{

StreamWriter myWrite = new StreamWriter(mystream);

try

{

for (int i = 0; i < dataGridView1.RowCount - 1; i++)

{

for (int j = 0; j < dataGridView1.ColumnCount; j++)

{

myWrite.Write(dataGridView1.Rows[i].Cells[j].Value.ToString() + ' ');

}

myWrite.WriteLine();

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

finally

{

myWrite.Close();

}

myStream.Close();

}

}

}

}

}

  1. Результат выполнения программы

Исходный файл с данными:

Открытие файла и перенос данных в таблицу:

Сохранение данных в файл:

Перезаписанный файл:

  1. Блок-схема

  2. Вывод

В связи с поставленной задачей был создан класс для заполнения таблицы на основе 4 лабораторной работы. Были реализованы кнопки сохранения данных в файл и открытия их из файла. Для этого были использованы потоки StreamReader и StreamWriter, а также диалоговые окна OpenFileDialog и SaveFileDialog для самого поиска файла, его открытия и сохранения данных. Помимо этого, были сгенерированы исключения для возможного нахождения пустого файла или его отсутствия. Чтение файла и перенос его данных был произведён с помощью метода ReadToEnd, а его запись с помощью методов Write и WriteLine.

Эта лабораторная работа помогла освоить начальную работу с текстовыми файлами.

Соседние файлы в папке ТооП