Отчёт к лабораторной работе №8 по дисциплине «Программирование на языках высокого уровня» Обработка двоичных файлов icon

Отчёт к лабораторной работе №8 по дисциплине «Программирование на языках высокого уровня» Обработка двоичных файлов



НазваниеОтчёт к лабораторной работе №8 по дисциплине «Программирование на языках высокого уровня» Обработка двоичных файлов
Борисов Н.А
Дата17.10.2016
Размер
ТипОтчет

Министерство образования и науки РФ

Тверской государственный технический университет

Кафедра электронных вычислительных машин


Отчёт к лабораторной работе №8

по дисциплине «Программирование на языках высокого уровня»

Обработка двоичных файлов


Выполнила: студентка группы 1004

Иванова М.Е

Принял: доцент кафедры ЭВМ

Борисов Н.А.


Тверь, 2010

Тема работы:

Обработка двоичных файлов.

Цель работы:


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

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

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

  • Вывод содержимого файла на экран

  • Выполнение индивидуального задания на обработку файла согласно выданному преподавателем варианту задания

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


Задание на работу:

Создать двоичный файл, содержащий записи следующей структуры для хранения информации о поезде:

  • Название пункта отправления поезда

  • Название пункта назначения поезда

  • Количество вагонов поезда

  • Номер поезда

  • Время в пути

Дополнительный уровень сложности 3. Вариант 25.

Задание:

Для заданного номера поезда вывести на экран все поезда, имеющие время в пути меньше, чем у заданного в виде:

  • Номер поезда

  • Название пункта отправления

  • Название пункта назначения

  • Время в пути


Алгоритм программы:


Структура Файл

Функция заполнение(BinaryReader br1)

Начало

пункт_отправления = br1.ReadString()

пункт_прибытие = br1.ReadString()

Число_вагонов = br1.ReadInt32()

номер = br1.ReadInt32()

[] Время = br1.ReadString().Split(':')

Для i = 0 до < 2

Время в пути[i]=System.Convert.ToInt32(Время[i])

Всё i-цикл

Конец


Конец структуры Файл


Алгоритм main

Начало

создание ()

FileStream fs=new FileStream("input.dat", FileMode.Open, FileAccess.Read)

BinaryReader br = new BinaryReader(fs)

Если (проверка (br) == ложь), то

Печать("исходный файл пуст")

Возврат

Всё если

печать (br)

br.закрыть()

fs.закрыть()

задание () //выполнение заданного варианта задания

FileStream fs1=new FileStream("output.dat", FileMode.Open, FileAccess.Read)

BinaryReader br1 = new BinaryReader(fs1)

Если (проверка(br1) == истина), то

Печать("ничего не записано")

Возврат

Печать_Нового(br1)

br1.закрыть()

fs1.закрыть()

Конец


Алгорим функции Печать_Нового(BinaryReader br1)


Начало

пока (br1.PeekChar() > -1)

Печать(br1.ReadString()+" "+br1.ReadInt32()+" "+br1.ReadString())

всё пока

Конец


Алгоритм функции Печать (BinaryReader br1)


Начало

пока (br1.PeekChar() > -1)

Печать(br1.ReadString()+" "+br1.ReadString()+" "+br1.ReadInt32()+ " "+br1.ReadInt32()+" "+br1.ReadString())

всё пока

Конец


Алгоритм функции задание()

Начало

FileStream fs1 = new FileStream("output.dat", FileMode.Создать, FileAccess.Write)

BinaryWriter bw = new BinaryWriter(fs1)

FileStream fs = new FileStream("input.dat", FileMode.Открыть, FileAccess.Читать)

BinaryReader br = new BinaryReader(fs)

файл Поезд = new файл()

Печать ("введите номер поезда: ")

Ввод n

пока (br.PeekChar() > -1)

Поезд.Заполнение (br)

Если (Поезд.пункт_отправления == ""), то

Выход из цикла

Все Если

Если (n=Поезд.номер),то

время = Поезд.время_пути

выход из цикла

Все Если

Все пока

br.закрыть()

fs.закрыть()

FileStream fs2 = new FileStream("input.dat", FileMode.Open, FileAccess.Read);

BinaryReader br1 = new BinaryReader(fs2);

Пока (истина)

Поезд.заполнение(br1)

Если (Поезд.пункт_отправления == ""), то

Выход из цикла

Все Если

Если(Поезд.номер != n и Поезд.время_пути[0] < время[0]или Поезд.время_пути[0] = время[0] и Поезд.время_пути[1] <= время[1]),то

s= Поезд.время_пути[0] + ":" + Поезд.время_пути[1]; запись(Поезд.номер);

запись(Поезд.пункт_отправления);

запись(Поезд.пункт_прибытия);

запись(s); Всё Если

Всё Пока

Закрыть br1; fs2; bw; fs1


Алгоритм функции проверка (BinaryReader br)


Начало

Если (br.PeekChar() > -1), то

вернуть истина

Всё Если

вернуть ложь

Конец


Алгоритм функции создание ()


Начало

FileStream fs = new FileStream("input.dat", FileMode.создание);

BinaryWriter bw = new BinaryWriter(fs);

string s = null;

Пока (истина)

Печать(("Введите пункт отправления( или ничего если всё): ")

Ввод s

Если (s != ""), то

bw.Печать(s)

Печать("Введите пункт прибытия: ")

Ввод П

bw.Печать(П)

Печать("Введите количество вагонов: ")

Ввод В

bw.Печать(В)

Печать("Введите номер поезда: ")

Ввод Н

bw.Печать(Н)

Печать("Введите время в пути: ")

Ввод Вр

bw.Печать(Вр)

Всё если

Иначе

Break

Всё иначе

Всё пока

bw.закрыть()

fs.закрыть()

Конец


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


using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;


namespace ConsoleApplication10

{

class Program

{

struct Файл

{

public string пункт_отправления;

public string пункт_прибытия;

public int вагонов;

public int номер;

public int[] время_пути;

public void Заполнение(BinaryReader br1)

{

if (br1.PeekChar() > -1)

{

время_пути = new int[2];

пункт_отправления = br1.ReadString();

пункт_прибытия = br1.ReadString();

число_вагонов = br1.ReadInt32(); ;

номер = br1.ReadInt32();

string[] время = br1.ReadString().Split(':');

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

{

время_пути[i] = Convert.ToInt32(время[i]);

}

}

else

пункт_отправления = "";

}

}


static void Main(string[] args)

{

создание();

FileStream fs = new FileStream("input.dat", FileMode.Open, FileAccess.Read);

BinaryReader br = new BinaryReader(fs);

if (Проверка(br) == false)

{

Console.WriteLine("исходный файл пуст");

return;

}

Печать(br);

br.Close(); fs.Close();

задание();

FileStream fs1 = new FileStream("output.dat", FileMode.Open, FileAccess.Read);

BinaryReader br1 = new BinaryReader(fs1);

if (Проверка(br1) == false)

{

Console.WriteLine("Ничего не записано");

return;

}

Печать_Нового(br1);

br1.Close(); fs1.Close();

}


private static void Печать_Нового(BinaryReader br1)

{

while (br1.PeekChar() > -1)

{

Console.WriteLine(br1.ReadInt32() + " " + br1.ReadString() + " " + br1.ReadString() + " " + br1.ReadString());

}

}


private static void Печать(BinaryReader br1)

{

while (br1.PeekChar() > -1)

{

Console.WriteLine(br1.ReadString() + " " + br1.ReadString() + " " + br1.ReadInt32() + " " + br1.ReadInt32() + " " + br1.ReadString());

}

}


private static void задание()

{

FileStream fs1 = new FileStream("output.dat", FileMode.Create, FileAccess.Write);

BinaryWriter bw = new BinaryWriter(fs1);

FileStream fs = new FileStream("input.dat", FileMode.Open, FileAccess.Read);

BinaryReader br = new BinaryReader(fs);

Файл Поезд = new Файл();

Console.Write("введите номер поезда: ");

int n = Convert.ToInt32(Console.ReadLine());

int[] время = new int[2];

while (true)

{

Поезд.Заполнение(br);

if (Поезд.пункт_отправления == "")

break;

if (n == Поезд.номер)

{

время = Поезд.время_пути;

break;

}

}

br.Close(); fs.Close();

FileStream fs2 = new FileStream("input.dat", FileMode.Open, FileAccess.Read);

BinaryReader br1 = new BinaryReader(fs2);

while (true)

{

Поезд.Заполнение(br1);

if (Поезд.пункт_отправления == "")

break;

if (Поезд.номер != n && ((Поезд.время_пути[0] < время[0]) || (Поезд.время_пути[0] == время[0] && Поезд.время_пути[1] <= время[1])))

{

string s = Поезд.время_пути[0] + ":" + Поезд.время_пути[1];

bw.Write(Поезд.номер);

bw.Write(Поезд.пункт_отправления);

bw.Write(Поезд.пункт_прибытия);

bw.Write(s);

}

}

br1.Close(); fs2.Close(); bw.Close(); fs1.Close();

}


static bool Проверка(BinaryReader br)

{

if (br.PeekChar() > -1)

return true;

return false;

}


static void создание()

{

FileStream fs = new FileStream("input.dat", FileMode.Create);

BinaryWriter bw = new BinaryWriter(fs);

string s = null;

while (true)

{

Console.Write("Введите пункт отправления( или ничего если всё): ");

s = Console.ReadLine();

if (s != "")

{

bw.Write(s);

Console.Write("Введите пункт прибытия: ");

string П = Console.ReadLine();

bw.Write(П);

Console.Write("Введите количество вагонов: ");

int В = Convert.ToInt32(Console.ReadLine());

bw.Write(В);

Console.Write("Введите номер поезда: ");

int Н = Convert.ToInt32(Console.ReadLine());

bw.Write(Н);

Console.Write("Введите время в пути: ");

string Вр = Console.ReadLine();

bw.Write(Вр);

}

else

break;

}

bw.Close();

fs.Close();


}

}

}


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


c:\users\андрей\pictures\у.jpg


c:\users\андрей\pictures\щш.jpg





ФИО: Иванова Марина Евгеньевна Группа: ВМКСС 1004

Номер попытки:




Дата сдачи:




Дней от срока сдачи:




Уровень сложности:










Критерий

Замечания

1

Соответствие заданию




2

Оформление отчета




3

Описание алгоритма




4

Качество алгоритма




5

Качество исходного текста




6

Надежность программы




7

Стилистика кода






Подпись: __________________


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Линия отрыва - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


ФИО:Иванова Марина Евгеньевна Группа: ВМКСС 1004

Номер попытки:




Дата сдачи:




Дней от срока сдачи:




Уровень сложности:










Критерий

Замечания

1

Соответствие заданию




2

Оформление отчета




3

Описание алгоритма




4

Качество алгоритма




5

Качество исходного текста




6

Надежность программы




7

Стилистика кода






Подпись: __________________



Похожие:

Отчёт к лабораторной работе №8 по дисциплине «Программирование на языках высокого уровня» Обработка двоичных файлов iconОтчет по лабораторной работе №4 Тема: «Программирование контроллера прерываний»
При этом необходимо написать обработчики аппаратных прерываний, которые будут установлены на используемые пользовательские прерывания...
Отчёт к лабораторной работе №8 по дисциплине «Программирование на языках высокого уровня» Обработка двоичных файлов iconРедактор Visual Basic.(12) Vba считается стандартным языком написания сценариев для приложения Microsoft и в настоящее время он входит в состав всех приложений Office. Vbe (Visual Basic Editor) специальная программа
Эвм. Они подразделены на языки низкого (система двоичных или 16-ых команд, написанная в машинных кодах) и высокого (Pascal, Basic...
Отчёт к лабораторной работе №8 по дисциплине «Программирование на языках высокого уровня» Обработка двоичных файлов iconОтчет по лабораторной работе №2 по дисциплине «Базы знаний и экспертные системы»
Основная цель работы это сделать модель предметной области «Музыкальные инструменты»
Отчёт к лабораторной работе №8 по дисциплине «Программирование на языках высокого уровня» Обработка двоичных файлов iconФормирование навыков мышления высокого уровня на уроках английского языка
Поэтому движение в области академических стандартов в последнее десятилетие значительно сместилось в сторону формирования у студентов...
Отчёт к лабораторной работе №8 по дисциплине «Программирование на языках высокого уровня» Обработка двоичных файлов iconОтчет по лабораторной работе №4 Тема: «Оценка качества классификации»
Исследовать и сравнить два любых построенных в предыдущих работах классификатора
Отчёт к лабораторной работе №8 по дисциплине «Программирование на языках высокого уровня» Обработка двоичных файлов iconГосударственное образовательное учреждение высшего профессионального образования «Российский экономический университет им. Г. В. Плеханова»
Целью курса «Языки программирования» является формирование у будущих специалистов фундамента современной информационной культуры,...
Отчёт к лабораторной работе №8 по дисциплине «Программирование на языках высокого уровня» Обработка двоичных файлов iconОтчёт по лабораторной работе №1
После окончания всех переходных процессов связанных с дешифрацией и пересылкой данных, процессор формирует управляющий сигнал wr,...
Отчёт к лабораторной работе №8 по дисциплине «Программирование на языках высокого уровня» Обработка двоичных файлов iconОтчет по лабораторной работе №2 тема: Применение case-средств для описания документооборота
Целью проведения работы является закрепление теоретических знаний по моделированию процессов обработки документов, совершенствование...
Отчёт к лабораторной работе №8 по дисциплине «Программирование на языках высокого уровня» Обработка двоичных файлов iconМеханизм абстракции и повторного использования кода
Данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня. Обычно такой подход используется в объектно-ориентированном...
Отчёт к лабораторной работе №8 по дисциплине «Программирование на языках высокого уровня» Обработка двоичных файлов iconОтчет по лабораторной работе №2 Тема: «Стекло и строительные материалы на основе минеральных вяжущих»
Упругие свойства делают стекло сходным с твёрдыми кристаллическими телами, а отсутствие кристаллографической симметрии (и связанная...
Разместите ссылку на наш сайт:
Справочники, творчество


База данных защищена авторским правом ©dmee.ru 2000-2014
При копировании материала обязательно указание активной ссылки открытой для индексации.
контакты