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

OOP4

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

Міністерство освіти і науки України

Запорізький національний технічний університет

Кафедра програмних засобів

Звіт

з лабораторної роботи №4

«Введення/виведення потоками. робота з файлами»

Виконав

ст. гр. КНТ-423 В.В. Білевський

Прийняв

ст. викл. Н. О. Миронова

Запоріжжя, 2014

4.1Мета роботи: Навчитись маніпулювати потоками введення/виведення, працювати з файлами та форматувати дані при введенні/виведенні

4.2 Завдання до роботи: Створити динамічний клас Catalog, що базується на зв’язаному списку, де кожний елемент списку – структура типа Book. Клас повинен містити наступні операції реалізувати методи консольного та файлового введення/виведення, створити маніпулятори insetup та outsetup для форматування відповідно потоків введення/виведення.

add_book() – додавання книги у каталог;

del_book() – видалення книги з каталогу;

find_by_autor() – пошук книги у каталозі за автором;

show_cataloque() - відображення каталогу книг.

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

#include<iostream>

#include<fstream>

#include<stdio.h>

using namespace std;

class catalog{

struct books{

char name[20];

char autor[10];

};

struct elem{

books data;

elem *pnext;

};

public:

void add();

void show();

void find_by_autor(char *autor);

void dell();

void ofs();

void ifs();

elem *plist=NULL,*pfirst;

};

void catalog::add() {

elem * tmp = new elem;

cout << "input name of book ";

cin >> tmp -> data.name;

cout << "input autor of book ";

cin >> tmp -> data.autor;

tmp->pnext=NULL;

if (!plist) {

plist = tmp;

pfirst = plist;

} else {

plist->pnext = tmp;

plist = tmp;

}

}

void catalog::ofs(){

ofstream file;

file.open("1.txt");

elem *tmp=pfirst;

while(tmp){

file<<tmp->data.autor<<" "<<tmp->data.name<<'\n';

tmp=tmp->pnext;

}

file.close();

}

void catalog::ifs(){

ifstream ifs;

while(ifs){

elem *tmp=new elem;

ifs>>tmp->data.autor;

ifs>>tmp->data.name;

tmp->pnext=NULL;

if (!plist) {

plist = tmp;

pfirst = plist;

} else {

plist->pnext = tmp;

plist = tmp;

}

}

ifs.close();

}

void catalog::show(){

elem *tmp=pfirst;

while(tmp){

cout<<"Book name:"<<tmp->data.name<<" "<<"Autor name:"<<tmp->data.autor<<endl;

tmp=tmp->pnext;

}

}

void catalog::find_by_autor(char *autor){

elem *tmp=pfirst;

while(tmp){

if(*autor==*tmp->data.autor)

cout<<"book name: "<<tmp->data.name<<" "<<"Autor name: "<< tmp->data.autor<<endl;

tmp=tmp->pnext;}

}

void catalog::dell() {

elem *el=pfirst;

delete el;

pfirst=el->pnext;

}

int main(){

catalog c;

c.ifs();

int a;

char name[20];

int n=1;

for(int i=0;i<n;i++){

cout<<"Enter value:\n"<<"1:Add new book\n"<<"2:Dell book\n"<<"3:Find by autor\n"<<"4:Show all books\n"<<"5:exit"<<endl;

cin>>a;

switch (a) {

case 1:

c.add();

break;

case 2:

c.dell();

break;

case 3:

cout<<"Enter autor name:";

cin>>name;

c.find_by_autor(name);

break;

case 4:

c.show();

break;

}

if(a==5){

c.ofs();

break;}

n++;

a=0;

cout<<"-------------------------------------------------"<<endl;}

}

4.4 Знімки з єкрану:

Рисунок 4.1- Робота програми

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]