DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт до лабораторної роботи №1 з курсу «Організація баз даних і знань» на тему: «Послідовний метод доступу до файлів на зовнішніх запам’ятовуючих пристроях»

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Інститут комп’ютерних наук та інформаційних технологій
Факультет:
КН
Кафедра:
Кафедра САПР

Інформація про роботу

Рік:
2017
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Організація баз даних і знань
Група:
КН-31
Коротко про документ

Про що ця робота

У звіті розглядається організація та ведення файлів послідовного доступу на зовнішніх носіях. Наведено практичну реалізацію програми на C++ для керування базою даних.

У роботі розглядаються

  • Послідовний метод доступу
  • Бази даних
  • Файлова система
  • Мова програмування C++
  • Алгоритми пошуку та сортування
  • Структури даних

Зміст і розділи

  1. Теоретичні відомості
  2. Завдання
  3. Текст програми
  4. Результат роботи
  5. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів
Викладачі:Головацький Р. І.

Ключові поняття

послідовний файлбаза данихзаписключфайлова структурапошукмодифікаціявставкаC++зовнішні запам'ятовуючі пристрої

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра САПР Звіт до лабораторної роботи №1 з курсу: «Організація баз даних і знань» на тему: Послідовний метод доступу до файлів на зовнішних запам’ятовуючих пристроях доступу; набути практичнi навички у програмуваннi алгоритмiв роботи з файлами послiдовного доступу. Теоретичні відомості Записи у простому послiдовному файлi доступнi лише послiдовно один за одним. Наприклад, можна звернутися до n-го запису тiльки пiсля звертання до 1, 2 , ... , n-1 запис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, який складається з N записiв, необхiдно переглянути у середньому N/2 записiв. Ефективність використання пам'ятi близька до 100%. Зберiгання фiзичних записiв у логiчнiй послiдовностi можна використовувати для прискорення доступу, якщо перед звертанням до власне записiв бази даних перевiряти значення ключiв. Завдання Створити програму яка реалізує БД на тему “Кафедра САПР” для підтримки послідовного методу доступу до файлу бази даних, яка реалізовує наступні функції: Створення файлу бази даних Друк бази даних Пошук запису за введеним ключем Видалення запису за введеним ключем Вставлення запису Модифікація запису Оптимізувати розроблену програму шляхом створення файлу групової обробки та реалізацією наступних додаткових функцій: Створення файлу групової обробки Внесення змін у файл бази даних ТЕКСТ ПРОГРАМИ #include <iostream> #include <fstream> #include <string.h> using namespace std; class Record{ private: char name[15], surname[15], futhername[15], tel[11], adress[15], viddil[15], color[15]; int id, age, stage; public: void whrite(char* im){ ofstream f(im); int stop = 1; while(stop == 1) { cout << "Введiть id, iм'я, прiзвище, по-батьковi, телефон, адресу, вiддiл, вiк, стаж, посаду:" << endl; cin >> id >> name >> surname >> futhername >> tel >> adress >> viddil >> age >> stage >> color; f << id << "\t" << name << "\t" << surname << "\t" << futhername << "\t" << tel << "\t" << adress << "\t" << viddil << "\t" << age << "\t" << stage << "\t" << color; cout << "1 - ввести ще:"; cin >> stop; if(stop == 1) f << "\n"; } f.close(); } void read(char* im){ cout << "||||||||||||||||||||||||||||||||||||||" << endl; int nam0, nam7, nam8; char nam1[15], nam2[15], nam3[15], nam4[15], nam5[15], nam6[15], nam9[15]; ifstream f(im); while(!f.eof()) { f >> nam0 >> nam1 >> nam2 >> nam3 >> nam4 >> nam5 >> nam6 >> nam7 >> nam8 >> nam9; cout << nam0 << "\t" << nam1 << "\t" << nam2 << "\t" << nam3 << "\t" << nam4 << "\t" << nam5 << "\t" << nam6 << "\t" << nam7 << "\t" << nam8 << "\t" << nam9 << endl; } f.close(); cout << "||||||||||||||||||||||||||||||||||||||" << endl; } void find(char* im){ int c=0; cout << "Введiть ключ шуканого поля:" << endl; int n; cin >> n; int nam0, nam7, nam8; char nam1[15], nam2[15], nam3[15], nam4[15], nam5[15], nam6[15], nam9[15]; ifstream f(im); while(!f.eof()) { f >> nam0 >> nam1 >> nam2 >> nam3 >> nam4 >> nam5 >> nam6 >> nam7 >> nam8 >> nam9; if(nam0 == n) { cout << nam0 << "\t" << nam1 << "\t" << nam2 << "\t" << nam3 << "\t" << nam4 << "\t" << nam5 << "\t" << nam6 << "\t" << nam7 << "\t" << nam8 << "\t" << nam9 << endl; c=10; } } if(c == 0) cout << " Файл не знайдено " << endl; f.close(); } void del(char* im, char *group_file){ cout << "Введiть ключ видаляючого поля:" << endl; int n; cin >> n; int nam0, nam7, nam8; char nam1[15], nam2[15], nam3[15], nam4[15], nam5[15], nam6[15], nam9[15]; ifstream f(im); ofstream f1(group_file); while(!f.eof()) { f >> nam0 >> nam1 >> nam2 >> nam3 >> nam4 >> nam5 >> nam6 >> nam7 >> nam8 >> nam9; if(nam0 != n) { f1 << nam0 << "\t" << nam1 << "\t" << nam2 << "\t" << nam3 << "\t" << nam4 << "\t" << nam5 << "\t" << nam6 << "\t" << nam7 << "\t" << nam8 << "\t" << nam9; if(!f.eof()) f1 << "\n"; } } f.close(); f1.close(); remove(im); rename(group_file, im); } void change(char* im, char *group_file){ cout << "Введiть ключ змiнюючого поля:" << endl; int n; cin >> n; int nam0, nam7, nam8; char nam1[15], nam2[15], nam3[15], nam4[15], nam5[15], nam6[15], nam9[15]; ifstream f(im); ofstream f1(group_file); while(!f.eof()) { f >> nam0 >> nam1 >> nam2 >> nam3 >> nam4 >> nam5 >> nam6 >> nam7 >> nam8 >> nam9; if(nam0 != n) { f1 << nam0 << "\t" << nam1 << "\t" << nam2 << "\t" << nam3 << "\t" << nam4 << "\t" << nam5 << "\t" << nam6 << "\t" << nam7 << "\t" << nam8 << "\t" << nam9; if(!f.eof()) f1 << "\n"; } else if(nam0 == n) { cin >> nam0 >> nam1 >> nam2 >> nam3 >> nam4 >> nam5 >> nam6 >> nam7 >> nam8 >> nam9; int n=1; while(n !=0) f1 << nam0 << "\t" << nam1 << "\t" << nam2 << "\t" << nam3 << "\t" << nam4 << "\t" << nam5 << "\t" << nam6 << "\t" << nam7 << "\t" << nam8 << "\t" << nam9; if(!f.eof()) f1 << "\n"; } } f.close(); f1.close(); rename(group_file, im); } void ins(char* im, char* new_im){ int c=0; cout << "Введiть нове поле:" << endl; int n0, n7, n8; char n1[15], n2[15], n3[15], n4[15], n5[15], n6[15], n9[15]; cin >> n0 >> n1 >> n2 >> n3 >> n4 >> n5 >> n6 >> n7 >> n8 >> n9; int nam0, nam7, nam8; char nam1[15], nam2[15], nam3[15], nam4[15], nam5[15], nam6[15], nam9[15]; ifstream f(im); ofstream f1(new_im); while(!f.eof()) { f >> nam0 >> nam1 >> nam2 >> nam3 >> nam4 >> nam5 >> nam6 >> nam7 >> nam8 >> nam9; if(nam0 == n0) cout << "Таке поле існує" << endl; else if(nam0 > n0 && c==0) { f1 << n0 << "\t" << n1 << "\t" << n2 << "\t" << n3 << "\t" << n4 << "\t" << n5 << "\t" << n6 << "\t" << n7 << "\t" << n8 << "\t" << n9; if(!f.eof()) f1 << "\n"; c++; f1 << nam0 << "\t" << nam1 << "\t" << nam2 << "\t" << nam3 << "\t" << nam4 << "\t" << nam5 << "\t" << nam6 << "\t" << nam7 << "\t" << nam8 << "\t" << nam9; if(!f.eof()) f1 << "\n"; } else { f1 << nam0 << "\t" << nam1 << "\t" << nam2 << "\t" << nam3 << "\t" << nam4 << "\t" << nam5 << "\t" << nam6 << "\t" << nam7 << "\t" << nam8 << "\t" << nam9; if(!f.eof()) f1 << "\n"; } } if(!f.eof()) f1 << "\n"; f.close(); f1.close(); remove(im); rename(new_im, im); } }; int main() { setlocale(LC_ALL, "rus"); char seller[] = {"D:\\Seller.txt"}; char new_seller[] = {"D:\\Seller2.txt"}; Record DB; int n = 1; while(n!=0) { cout << "\nМЕНЮ:\n" << endl; cout << " 1 - створити БД" << endl; cout << " 2 - вивести БД" << endl; cout << " 3 - знайти поле" << endl; cout << " 4 - видалити поле" << endl; cout << " 5 - змiнити поле" << endl; cout << " 6 - ввести поле" << endl; cout << " 0 - вихiд" << endl; cout << "-----------------------------------" << endl; cin >> n; cout << "-----------------------------------" << endl; switch(n){ case 1: DB.whrite(seller); break; case 2: DB.read(seller); break; case 3: DB.find(seller); break; case 4: DB.del(seller, new_seller); break; case 5: DB.change(seller, new_seller); break; case 6: DB.ins(seller, new_seller); break; case 0: break; default: break; } } return 0; } Результат роботи База даних / Функція пошуку по ID / Модифікація запису / Висновок: під час виконання даної лабораторної роботи я розглянув органiзацiю i ведення файлiв послiдовного доступу; набув практичних навички у програмуваннi алгоритмiв роботи з файлами послiдовного доступу, реалізував програму для ведення бази даних на відповідну тематику.
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!