Professional Documents
Culture Documents
бд 1
бд 1
бд 1
КАФЕДРА САПР
ЗВІТ
До лабораторної роботи №1
«ПОСЛІДОВНИЙ МЕТОД ДОСТУПУ ДО ФАЙЛІВ
НА ЗОВНІШНІХ ЗАПАМ’ЯТОВУЮЧИХ ПРИСТРОЯХ»
З дисципліни
"Організація баз даних і знань "
Виконав:
Студент групи КН-24
Дикий Н. В.
Перевірив:
Головацький Р. І.
Львів-2015
ТЕМА РОБОТИ
Послідовний метод доступу до файлів на зовнішніх запам’ятовуючих
пристроях .
МЕТА РОБОТИ
ТЕОРЕТИЧНI ВIДОМОСТI
Будь-який обмiн даними передбачає присутнiсть джерела iнформацiї,
каналу передачi та її приймача. У випадку обмiну даними мiж програмою i
периферiйним пристроєм одним кiнцем каналу обмiну даними завжди є
оперативна пам’ять ПЕОМ. Другий кiнець цього каналу у бiльшостi мов
програмування визначений як файл.
Поняття файла достатньо широке. Це може бути комунiкацiйний порт,
пристрiй друку. У данiй роботi розглядається файл даних.
Одним iз головних чинникiв, що впливає на продуктивнiсть програм, якi
взаємодiють iз базою даних, є спосiб зберiгання i доступу до файлiв даних:
послiдовний, iндексно-послiдовний, індексно-довiльний, прямий, хешування.
Усi методи розглядаються за двома критерiями:
1. Ефективнiсть доступу - величина, обернена середнiй кiлькостi
фiзичних звертань, необхiдних для логiчного доступу, тобто запиту
конкретного запису бази даних. Фiзичнi звертання забезпечують задоволення
запиту. Наприклад, якщо для пошуку потрiбного запису система звертається до
двох записiв, то ефективнiсть доступу дорiвнює 0,5.
2. Ефективнiсть зберiгання - величина, обернена середнiй кiлькостi байтiв
поля вторинної пам’ятi, яка необхiдна для зберiгання одного байта вхiдних
даних.
Крiм вхiдних даних, пам’ять займають таблицi, керуюча iнформацiя, вiльна
пам’ять, яка резервується для розширень, i дiлянка, яка не використовується
через фрагментацiю.
2.1. ДОСТУП ДО ЗАПИСІВ
#include <fstream>
#include "CField.h"
class CDataBase
{ #include <string> CDataBase::CDataBase()
CDataBase(const CDataBase }
&db);
class CField
~CDataBase();
{ CDataBase::CDataBase(const CDataBase
&db)
public:
void AddField(); {
CField(string NameField);
void DeleteField(); m_sNameBase =
CField(const CField & fld); db.m_sNameBase;
vector<CField> m_vBase; }
HelperAddField("ID: ");
}; }
}
}
CField.h
for (int i = 2; i < {
m_vBase.size(); i++)
void CDataBase::DeleteField()
{
{ int itmp;
cout << "Enter " <<
int itmp; m_vBase[i].GetNameField() << ":"; while (true)
{
OutputBase();
m_vBase[i].AddElement(stmp);
cout <<
} "Enter item`s you want to delete Number:
";
for (int i = 2; i <
m_vBase.size(); i++) cin >>
itmp;
{ m_vBase[0].AddElement(to_string(m_vB if ((itmp
ase[2].GetBaseElementSize()-1));///----баг >= 0) && (itmp <
cout <<
"(" << i - 2 << ")" << m_vBase[0].GetBaseElementSize()))
m_vBase[i].GetNameField() << endl;
{
}
//---------------------------
cout << "(" << Генерація унікального номера for (int i = 1; i <
m_vBase.size()-2 << ")" << "Exit" << m_vBase.size(); i++)
endl; ifstream fin;
if (itmp == m_vBase[1].AddElement(stmp);
m_vBase[i].DeleteElement(itmp);
m_vBase.size()-2)
fin.close();
{
}
break;
int counter = atoi(stmp.c_str());
}
counter++;
itmp += 2;
stmp = to_string(counter);
if ((itmp>=2) && m_vBase[0].DeleteElement(m_vBase[0].
(itmp<m_vBase.size())) GetBaseElementSize()-1);
ofstream fout;
{
fout.open("ID.txt"); cout << "Delete is success!!"
<< endl;
fout << stmp;
m_vBase.erase(m_vBase.begin() + itmp);
fout.close();
break;
break;
//------------------------------------
}
} ---------------------
else
else
{
{
cout <<
"Incorrect input!!!\n"; cout << "Incorrect input!!!\n";
} }
cout << "\n Input success!!!\n";
} }
}
} }
else
void
void CDataBase::AddItemToDataBase() CDataBase::DeleteItemFromDataBase() {
{ m_vBase[i].AddElement(stmp);
if (!m_vBase.empty()) bool CDataBase::RreadFromFile(string
NameFile)
{ }
{
fin.open(NameFile); break;
fout.open(NameFile);
if (fin)
fout <<
m_sNameBase << endl; { }
if (stmp
== "/*/")
for (int i = 0; i < fin >>
m_vBase.size(); i++) m_sNameBase;
{ break;
fout << }
fin >> stmp;
m_vBase[i].GetNameField() << " ";
fin >> stmp;
}
fin.close();
return true;
while (true)
fout <<
"/*/";/////////// }
{
else
fout << {
m_vBase[j].GetElement(i) << " "; break;
cout << "--------------" <<
} } m_sNameBase << "-----------------" <<
endl;
}
for (int i = 0; i <
fout << while (true)
GetSizeBase(); i++)
"/*/";////////////
{
{
fout.close();
for (int i
= 0; i < m_vBase.size(); i++)
HelperOutputItem(i);
{
}
} }
fin >> stmp;
else
cout<<m_vBase[i].GetElement(Position)<
for (int i = 2; i <
<endl; HelperOutputItem(i); m_vBase.size(); i++)
} btmp = {
true;
cout <<
cout <<
"---------------------------------------" << } "(" << i - 2 << ")" <<
endl;
m_vBase[i].GetNameField() << endl;
}
}
}
if (!btmp)
cout << "(" <<
cout << "Element m_vBase.size()-2 << ")" << "Exit" <<
int CDataBase::GetSizeBase() does not exist!!!" << endl; endl;
{ } cout << "Enter
return element`s you want to delete Number: "
m_vBase[2].GetBaseElementSize(); << endl;
CField CDataBase::GetField(int Position)
} cin >> itmp;
{
if (itmp ==
return m_vBase[Position]; m_vBase.size()-2)
void CDataBase::FindID(int ID)
} return
{ true;
{ } {
int itmp;
HelperOutputItem(i); m_vBase[itmp].SetElement(tmp, stmp);
string stmp;
btmp = }
true; while (true)
else
} {
{
} system("cls");
cout <<
if (!btmp) OutputBase(); "Incorrect input!!!\n";
cout << "Element cout << "Enter }
with the ID does not exist!!!" << endl; item`s number for edit it: ";
} cin >> tmp;
}
CField::CField(const CField &fld)
m_sNameField = {
} fld.m_sNameField;
m_vsElement =
m_vsElement.erase(m_vsElement.begin()
fld.m_vsElement;
void CDataBase::clear() + Position);
}
{ }
for (int i = 0;
i<m_vBase.size(); i++) CField::~CField()
string CField::GetElement(int Position)
{ {
{
return m_vsElement[Position];
m_vBase[i].ClearField();
}
}
}
}
void CField::SetElement(int posistion,
} string CField::GetNameField()
string NewInformation)
CField.cpp {
{
return m_sNameField;
#include "CField.h" m_vsElement[posistion] =
} NewInformation;
}
CField::CField(string NameField)
void CField::AddElement(string Element)
{
{
m_sNameField = NameField;
void CField::ClearField()
}
m_vsElement.push_back(Element); {
} m_vsElement.clear();
Main.cpp
#include "CDataBase.h"
int main()
string sChoose;
CDataBase Bicycle;
while (true)
string FileName;
system("cls");
//------------------------------------------------------Program 1
if (sChoose == "0")
while (true)
system("cls");
//-----------------------------------------------------------Load Base
if (sChoose == "0")
system("cls");
Bicycle.clear();
while (true)
if (Bicycle.RreadFromFile(FileName))
system("pause");
break;
}
Bicycle.clear();
else
//-----------------------------------------------------------
//-----------------------------------------------------------Output database
if (sChoose == "1")
system("cls");
Bicycle.RreadFromFile(FileName);
Bicycle.OutputBase();
Bicycle.WriteToFile(FileName);
Bicycle.clear();
system("pause");
else
//-----------------------------------------------------------
if (sChoose == "2")
system("cls");
Bicycle.RreadFromFile(FileName);
Bicycle.AddField();
Bicycle.WriteToFile(FileName);
Bicycle.clear();
system("pause");
else
//------------------------------------------------------------
if (sChoose == "3")
system("cls");
Bicycle.RreadFromFile(FileName);
Bicycle.DeleteField();
Bicycle.WriteToFile(FileName);
Bicycle.clear();
system("pause");
else
//------------------------------------------------------------
//------------------------------------------------------------Add item to database
if (sChoose == "4")
system("cls");
Bicycle.RreadFromFile(FileName);
Bicycle.AddItemToDataBase();
Bicycle.WriteToFile(FileName);
Bicycle.clear();
system("pause");
else
//------------------------------------------------------------
//------------------------------------------------------------
if (sChoose == "5")
system("cls");
Bicycle.RreadFromFile(FileName);
Bicycle.DeleteItemFromDataBase();
Bicycle.WriteToFile(FileName);
Bicycle.clear();
system("pause");
else
//------------------------------------------------------------
//------------------------------------------------------------
if (sChoose == "6")
Bicycle.RreadFromFile(FileName);
string sID;
int iID;
system("cls");
while (true)
if (sID == "-1")
break;
iID = atoi(sID.c_str());
Bicycle.FindID(iID);
}
Bicycle.WriteToFile(FileName);
Bicycle.clear();
system("pause");
else
//------------------------------------------------------------
//------------------------------------------------------------
if (sChoose == "7")
Bicycle.RreadFromFile(FileName);
string sTmp;
int iTmp;
while (true)
system("cls");
cout << "Enter field`s Number for find element" << endl;
cout << "(" << i << ")" << Bicycle.GetField(i).GetNameField() << endl;
break;
else
system("cls");
cout << "You choose field '" << Bicycle.GetField(iTmp).GetNameField() << "'!!! " << endl;
cout << "Please enter " << Bicycle.GetField(iTmp).GetNameField() << " what you search!!!"
<< endl;;
Bicycle.FindField(iTmp, sTmp);
Bicycle.WriteToFile(FileName);
Bicycle.clear();
system("pause");
else
//-----------------------------------------------------------------
//-----------------------------------------------------------------
if (sChoose == "8")
{
string tmp;
Bicycle.RreadFromFile(FileName);
Bicycle.EditItem();
Bicycle.WriteToFile(FileName);
Bicycle.clear();
system("pause");
else
//------------------------------------------------------------------
//------------------------------------------------------------------
if (sChoose == "9")
Bicycle.RreadFromFile(FileName);
string stmp;
system("cls");
Bicycle.WriteToFile(stmp);
Bicycle.WriteToFile(FileName);
Bicycle.clear();
system("pause");
else
//--------------------------------------------------------------------
//--------------------------------------------------------------------
if (sChoose == "10")
Bicycle.clear();
break;
//--------------------------------------------------------------------
else
//------------------------------------------------------
//------------------------------------------------------Program2
if (sChoose == "1")
while (true)
{
system("cls");
//-----------------------------------------------------------Load Base
if (sChoose == "0")
system("cls");
Bicycle.clear();
while (true)
if (Bicycle.RreadFromFile(FileName))
system("pause");
break;
else
//-----------------------------------------------------------
//-----------------------------------------------------------Output database
if (sChoose == "1")
system("cls");
Bicycle.OutputBase();
system("pause");
else
//-----------------------------------------------------------
if (sChoose == "2")
system("cls");
Bicycle.AddField();
system("pause");
else
//------------------------------------------------------------
if (sChoose == "3")
system("cls");
Bicycle.DeleteField();
system("pause");
else
//------------------------------------------------------------
if (sChoose == "4")
system("cls");
Bicycle.AddItemToDataBase();
system("pause");
else
//------------------------------------------------------------
//------------------------------------------------------------
if (sChoose == "5")
system("cls");
Bicycle.DeleteItemFromDataBase();
system("pause");
else
//------------------------------------------------------------
//------------------------------------------------------------
if (sChoose == "6")
string sID;
int iID;
system("cls");
while (true)
if (sID == "-1")
break;
iID = atoi(sID.c_str());
Bicycle.FindID(iID);
system("pause");
else
//------------------------------------------------------------
//------------------------------------------------------------
if (sChoose == "7")
string sTmp;
int iTmp;
while (true)
system("cls");
cout << "Enter field`s Number for find element" << endl;
cout << "(" << i << ")" << Bicycle.GetField(i).GetNameField() << endl;
break;
else
}
system("cls");
cout << "You choose field '" << Bicycle.GetField(iTmp).GetNameField() << "'!!! " << endl;
cout << "Please enter " << Bicycle.GetField(iTmp).GetNameField() << " what you search!!!"
<< endl;;
Bicycle.FindField(iTmp, sTmp);
system("pause");
else
//-----------------------------------------------------------------
//-----------------------------------------------------------------
if (sChoose == "8")
string tmp;
system("cls");
Bicycle.EditItem();
system("pause");
else
//------------------------------------------------------------------
//------------------------------------------------------------------
if (sChoose == "9")
string stmp;
system("cls");
Bicycle.WriteToFile(stmp);
system("pause");
else
//--------------------------------------------------------------------
//--------------------------------------------------------------------
if (sChoose == "11")
Bicycle.WriteToFile(FileName);
Bicycle.clear();
break;
else
//--------------------------------------------------------------------
//--------------------------------------------------------------------
if (sChoose == "10")
Bicycle.WriteToFile(FileName);
system("pause");
else
if (sChoose == "2")
break;
system("pause");
return 0;
}
5. АНАЛІЗ РЕЗУЛЬТАТІВ ТА ВИСНОВКИ
Я розглянув органiзацiю i ведення файлiв послiдовного доступу; набув
практичнi навички у програмуваннi алгоритмiв роботи з файлами послiдовного
доступу.