Послідовний метод доступу до файлів на зовнішних

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

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

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

Рік:
2024
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Організація баз даних і знань

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ „ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра САПР Звіт до лабораторної роботи №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довного доступу, реалізував програму для ведення бази даних на відповідну тематику.
Антиботан аватар за замовчуванням

08.05.2017 20:05-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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