|
Министерство образования и науки РФ Тверской государственный технический университет Кафедра электронных вычислительных машин Отчёт к лабораторной работе №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(); } } } Результаты выполнения программы: ![]() ![]() ![]() ФИО: Иванова Марина Евгеньевна Группа: ВМКСС 1004
Подпись: __________________ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Линия отрыва - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ФИО:Иванова Марина Евгеньевна Группа: ВМКСС 1004
Подпись: __________________ |
![]() | Отчет по лабораторной работе №4 Тема: «Программирование контроллера прерываний» При этом необходимо написать обработчики аппаратных прерываний, которые будут установлены на используемые пользовательские прерывания... | ![]() | Редактор Visual Basic.(12) Vba считается стандартным языком написания сценариев для приложения Microsoft и в настоящее время он входит в состав всех приложений Office. Vbe (Visual Basic Editor) специальная программа Эвм. Они подразделены на языки низкого (система двоичных или 16-ых команд, написанная в машинных кодах) и высокого (Pascal, Basic... |
![]() | Отчет по лабораторной работе №2 по дисциплине «Базы знаний и экспертные системы» Основная цель работы это сделать модель предметной области «Музыкальные инструменты» | ![]() | Формирование навыков мышления высокого уровня на уроках английского языка Поэтому движение в области академических стандартов в последнее десятилетие значительно сместилось в сторону формирования у студентов... |
![]() | Отчет по лабораторной работе №4 Тема: «Оценка качества классификации» Исследовать и сравнить два любых построенных в предыдущих работах классификатора | ![]() | Государственное образовательное учреждение высшего профессионального образования «Российский экономический университет им. Г. В. Плеханова» Целью курса «Языки программирования» является формирование у будущих специалистов фундамента современной информационной культуры,... |
![]() | Отчёт по лабораторной работе №1 После окончания всех переходных процессов связанных с дешифрацией и пересылкой данных, процессор формирует управляющий сигнал wr,... | ![]() | Отчет по лабораторной работе №2 тема: Применение case-средств для описания документооборота Целью проведения работы является закрепление теоретических знаний по моделированию процессов обработки документов, совершенствование... |
![]() | Механизм абстракции и повторного использования кода Данные обрабатываются функцией высокого уровня с помощью вызова функций низкого уровня. Обычно такой подход используется в объектно-ориентированном... | ![]() | Отчет по лабораторной работе №2 Тема: «Стекло и строительные материалы на основе минеральных вяжущих» Упругие свойства делают стекло сходным с твёрдыми кристаллическими телами, а отсутствие кристаллографической симметрии (и связанная... |