OOP4
.docxМіністерство освіти і науки України
Запорізький національний технічний університет
Кафедра програмних засобів
Звіт
з лабораторної роботи №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- Робота програми