Мегаобучалка Главная | О нас | Обратная связь


Лабораторная работа №11



2019-12-29 203 Обсуждений (0)
Лабораторная работа №11 0.00 из 5.00 0 оценок




Тема: Файловый ввод – вывод в С++

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

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

· поэкранный вывод текстового файла

· преобразование текстового файла в двоичный файл

· вывод двоичного файла

· выполнение дополнительной операции с двоичным файлом

Для работы с файлами использовать библиотеку классов потокового ввода – вывода fstream . h.Текстовый файл создать с помощью любого текстового редактора, записав в каждую строку файла информацию об одном экземпляре объекта. Варианты заданий приведены в табл.11

Таблица 11

Варианты заданий

Объект Дополнительная операция с двоичным файлом
1 ФИО, номер подразделения, зарплата Добавление информации о работнике в конец файла
2 Табельный номер, ФИО, номер подразделения Удаление записи о работнике с заданным табельным номером
3 Наименование товара, цена, количество Поиск товара с заданным наименованием
4 Телефон, ФИО, адрес Изменение информации о владельце данного телефона
5 Шифр студента, ФИО, группа Подсчет количества студентов в заданной группе
6 Шифр студента, ФИО, средний балл Удаление записей о студентах, со средним баллом<3
7 Табельный номер, ФИО, кафедра Изменение кафедры у работника с заданным табельным номером
8 Наименование товара, цена, количество Добавление информации о товаре в конец файла
9 Шифр студента, год поступления. специальность Запись информации о студентах с заданной специальностью в новый файл
10 Шифр студента, четыре оценки Формирование нового файла, каждая запись которого содержит шифр студента и средний балл
11 ФИО, год рождения, пол Копирование файла в другой файл
12 Номер заказа, ФИО и телефон заказчика Поиск номеров заказа данного заказчика
13 Шифр группы, средний балл Поиск лучшей группы
14 Номер заказа, цена заказа, заказчик Добавление нового заказа
15 Автор, название и год издания книги Удаление книги с заданным названием и заданного автора
16 Номер задания, имя задания, количество страниц Формирование нового файла, из заданий с числом страниц, большим заданного
17 Код работника, профессия, опыт работы Изменение опыта работы у работника с заданным кодом на новое значение
18 Код детали, наименование детали Добавление новой детали
19 Табельный номер, должность, подразделение Подсчет работников из заданного подразделения
20 Авторы, название, специальность для учебного пособия Копирование файла в другой файл

 

Методические указания

В С++ для работы с файлами определены три класса потоков:

ifstream Файловый поток ввода (чтения) данных из файла
ofstream Файловый поток вывода (записи) данных в файл
fstream Файловый поток ввода и вывода данных

Объявления этих классов находятся в заголовочном файле <fstream.h>.

 Основные компонентные функции классов-потоков приведены в табл. 12.

Таблица 12

Компонентные функции классов-потоков

Функция Описание функции
void open(«Внешнее имя файла»[, режим]) Открывает файл
ostream& write(const signed char*, int n)   Выводит в выходной поток n символов из массива, на который указывает первый параметр
istream& read (const signed char*, int n)   Читает из входного потока n символов в массив, на который указывает первый параметр
int eof(void) Тестирует конец файла (1- конец файла)
void close(void) Закрывает поток (файл)
ostream& seekp (смещение, точка отсчета)   Смещает указатель записи выходного потока на заданное число байтов от точки отсчета (0-начало, 1-текщая позиция, 2-конец потока)
istream& seekg (смещение, точка отсчета)   Смещает указатель записи входного потока на заданное число байтов от точки отсчета (0-начало, 1-текщая позиция, 2-конец потока)
long tellg() Возвращает текущую позицию указателя чтения входного потока
long tellp() Возвращает текущую позицию указателя записи выходного потока

 

Значения параметра «режим» функции открытия файла приведены в табл. 13.

Таблица 13

Режимы открытия файла

Значение параметра «режим» Описание параметра
ios::in Задает режим открытия файла для ввода
ios::out Задает режим открытия файла для вывода
ios::ate Задает режим открытия файла для добавления в конец файла
ios::app Задает режим открытия файла для добавления в конец файла
ios::trunc Удаляет содержимое файла
ios::binary Задает режим открытия файла в двоичном режиме

 

Для обмена данными с двоичными файлами используются компонентные функции read и  write, а для работы с текстовыми файлами - перегруженные операции >> и <<. На рис. 18 приведена программа, которая создает текстовый файл и записывает в него данные. Пример программы чтения записи с заданным номером из двоичного файла приведен на рис. 19.

 

#include <conio.h>

#include <fstream.h>

#include <stdlib.h>

struct rab

{

long nom;

char fam[15];

char name[15];

int zar;

int nal;

};

void main(void)

{

rab r;

ofstream f;     // выходной поток

char name[12]; // имя файла

cout<<"Введите имя файла";

cin>>name;

f.open(name); //открытие файла для записи

if(!f)               //проверка выполнения операции открытия

{ cout<<"Ошибка"; getch(); exit(1); }

for(int i=1;i<=10;i++) //цикл ввода данных и записи в файл

{cout<<"? "; cin>>r.nom>>r.fam>>r.name>>r.zar>>r.nal;

f<<r.nom<<" "<<r.fam<<" "<<r.name<<" "<<r.zar<<" "<<r.nal <<endl;}

f.close();        

}

 Рис. 18. Создание текстового файла

 

#include <iostream.h>

#include <fstream.h>

#include <stdlib.h>

struct rab

{

long nom;

char fam[15];

char name[15];

int zar;

int nal;

};

void main(void)

{

rab r;

int n;

ifstream f;      //входной поток

f.open("d:\\user\\b.dat",ios::binary| ios::in);

if(!f)

{ cout<<"Ошибка"; getch(); exit(1);}

cout<<"n ? "; cin>>n;

f.seekg((n-1)*sizeof(r));      // перемещение указателя на запись

f.read((char*)&r,sizeof(r)); //чтение записи в структуру cout<<r.nom<<" "<<r.fam<<" "<<r.name<<" "<<r.zar<<" "<<r.nal <<endl;

f.close();

}

Рис. 19. Чтение из двоичного файла

 

 



2019-12-29 203 Обсуждений (0)
Лабораторная работа №11 0.00 из 5.00 0 оценок









Обсуждение в статье: Лабораторная работа №11

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (203)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)