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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Тема роботи
  2. Мета роботи
  3. Лабораторне завдання
  4. Короткі теоретичні відомості
  5. Текст програми
  6. Результати виконання програми
  7. Висновки
Для кого:Студенти технічних спеціальностей та виші
Викладачі:Викладач кафедри

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

прямий доступхешуванняфайлструктура данихзаписбаза данихалгоритмпошукмодифікація

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

Міністерство освіти і науки України Національний університет «Львівська політехніка» Кафедра САПР ЗВІТ про виконання лабораторної роботи №2 на тему: «Прямий метод доступу до файлів на зовнішніх запам’ятовуючих пристроях» з курсу: «Організація баз даних і знань» Львів 2008 Тема роботи Прямий метод доступу до файлів на зовнішніх запам’ятовуючих пристроях Мета роботи Розглянути органiзацiю i ведення файлів прямого доступу; набути практичні навички у програмуванні алгоритмів доступу з хешуванням. Лабораторне завдання Тема завдання: Персонал школи 1. Написати програму методу зв’язаних блоків, яка реалізує такі функції: 1. Друк бази даних. 2. Зчитування запису. 3. Введення запису. 4. Видалення запису. 5. Модифікація запису. 6. Пошук запису. 7. Вихід. Короткі теоретичні відомості Текст програми #include <stdio.h> #include <conio.h> #include <string.h> struct DB { int id; char name[12]; char lname[9]; char pname[13]; char datan[11]; char posada[10]; char tel[9]; float zarplata; }; struct DB db1,db2; FILE *f1; char fn[50]="db2.txt"; int h(int param) { int k; k=param%10; return k*sizeof(struct DB)*10; } void insert() { int hesh,o; printf("Uvedit ID (0 dla zaverszennia vvodu)\nІ "); scanf("%d", &db1.id); while (db1.id!=0) { o=0; hesh=h(db1.id); fseek(f1,hesh, SEEK_SET); fread(&db2, sizeof(struct DB),1,f1); while((db2.id>0)&&(o<10)) { if(db2.id==db1.id) { printf("\n***ERROR:Zapus z ID %d vze isnuje!!\nVvedit inshyj ID\n",db1.id); goto error; } hesh=hesh+sizeof(struct DB); fseek(f1, hesh, SEEK_SET); fread(&db2, sizeof(struct DB),1,f1); o++; } fseek(f1, hesh, SEEK_SET); if (o<=10) { printf("Uvedit'\nPrizvyshche(11), Imja(8), Po-bat'kovi(12), d/n(10), posadu(9), telefon(8), zarplatu\n"); scanf("%s%s%s%s%s%s%f", db1.name, db1.lname, db1.pname, db1.datan, db1.posada, db1.tel, &db1.zarplata); fwrite(&db1, sizeof(struct DB), 1, f1); printf("***Zapys dodano***\n"); } error: printf("Uvedit' ID\nІ "); scanf("%d", &db1.id); } } void ins2() { int hesh=0,i; fseek(f1,0, SEEK_SET); fwrite(&db2, sizeof(struct DB),1,f1); for(i=0;i<100;i++) { hesh=hesh+sizeof(struct DB); fseek(f1, hesh, SEEK_SET); fwrite(&db2, sizeof(struct DB),1,f1); } } void vyvid() { int i,j=0,k=0,l=0; clrscr(); fseek(f1,0, SEEK_SET); fread(&db2,sizeof(struct DB),1,f1); for(i=1;i<=100;i++) { if (k==0) { getch(); clrscr(); printf(" єBLOK N%dє\n",j); printf("ЙННННЛНННННННННННЛННННННННЛНННННННННКННЛННННКНННННЛНННННННННЛННННННННЛННННННННН»"); printf("є IDєPRIZVYSHCHEєIMJA єPO-BAT'KOVI єDATA NAR. єPOSADA єTELEFON єZARPLATA є"); printf("МННННОНННННННННННОННННННННОННННННННННННОННННННННННОНННННННННОННННННННОННННННННН№"); } printf("є%4dє%-11sє%-8sє%-12sє%-10sє%-9sє%-8sє%9.2fє",db2.id, db2.name, db2.lname, db2.pname, db2.datan, db2.posada, db2.tel, db2.zarplata); if(l<9) printf("ЗДДДДЧДДДДДДДДДДДЧДДДДДДДДЧДДДДДДДДДДДДЧДДДДДДДДДДЧДДДДДДДДДЧДДДДДДДДЧДДДДДДДДД¶"); fseek(f1,i*sizeof(struct DB), SEEK_SET); fread(&db2,sizeof(struct DB),1,f1); k=i%10; j=i/10; l++; if(l==10) { printf("ИННННКНННННННННННКННННННННКННННННННННННКННННННННННКНННННННННКННННННННКНННННННННј"); l=0; } } getch(); } ////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ void del() { struct DB db2={0, NULL, NULL, NULL, NULL, NULL, NULL, 0.00}; int hesh,o,id; printf("Uvedit ID (0 dla zaverszennia vvodu)\nІ "); scanf("%d", &id); while (id>0) { o=0; hesh=h(id); fseek(f1,hesh, SEEK_SET); fread(&db1, sizeof(struct DB),1,f1); while((db1.id!=id)&&(o<10)) { hesh=hesh+sizeof(struct DB); fseek(f1, hesh, SEEK_SET); fread(&db1, sizeof(struct DB),1,f1); o++; } fseek(f1, hesh, SEEK_SET); if ((o<=10)&&(db1.id>0)) { fwrite(&db2, sizeof(struct DB), 1, f1); printf("\n****Zapys vydaleno****"); } else printf("\n***ERROR: Ne isnuje zapysu, jakyj vy hochete vydalyty\n"); printf("\nVvedit' ID dla vydalennia\n?І "); scanf("%d",&id); } } void modify() { struct DB db2; int hesh,o; printf("Uvedit ID (0 dla zaverszennia vvodu)\nІ "); scanf("%d", &db2.id); while (db2.id>0) { o=0; hesh=h(db2.id); fseek(f1,hesh, SEEK_SET); fread(&db1, sizeof(struct DB),1,f1); while((db1.id!=db2.id)&&(o<10)) { hesh=hesh+sizeof(struct DB); fseek(f1, hesh, SEEK_SET); fread(&db1, sizeof(struct DB),1,f1); o++; } fseek(f1, hesh, SEEK_SET); if ((o<=10)&&(db1.id>0)) { printf("Uvedit' novi dani \nPrizvyshche(11), Imja(8), Po-bat'kovi(12), d/n(10), posadu(9), telefon(8), zarplatu\n"); scanf("%s%s%s%s%s%s%f", db2.name, db2.lname, db2.pname, db2.datan, db2.posada, db2.tel, &db2.zarplata); fwrite(&db2, sizeof(struct DB), 1, f1); printf("\n****Zapys modyfikovano****"); } else printf("\n***ERROR: Ne isnuje zapysu, jakyj vy hochete modyfikuvaty\n"); printf("\nVvedit' ID dla modyfikaciji\nІ "); scanf("%d",&db2.id); } } void search() { int choice; err:printf("\nDla poshuku po ID vvedit '1'\nDla poshuku po Prizvyshcsu vvedit '2' "); scanf("%d",&choice); if (choice==1) search1(); else if(choice==2) search2(); else {printf("\nPotribno vvesty '1' abo '2'");goto err; } } search1() { int hesh,o,id; printf("Uvedit ID dla poshuku (dla zavershennia vvedit 0)\nІ "); scanf("%d", &id); while (id>0) { o=0; hesh=h(id); fseek(f1,hesh, SEEK_SET); fread(&db1, sizeof(struct DB),1,f1); while((db1.id!=id)&&(o<10)) { hesh=hesh+sizeof(struct DB); fseek(f1, hesh, SEEK_SET); fread(&db1, sizeof(struct DB),1,f1); o++; } fseek(f1, hesh, SEEK_SET); if ((o<=10)&&(db1.id>0)) { printf("Rezultat: \n"); printf("%3d %-11s %-8s %-12s %-10s %-9s %-8s %-6.2f",db1.id, db1.name, db1.lname, db1.pname, db1.datan, db1.posada, db1.tel, db1.zarplata); } else printf("\n***ERROR: Ne isnuje zapysu, jakyj vy hochete znajtu"); printf("\nVvedit' ID dla poshuku\nІ "); scanf("%d",&id); } return 0; } search2() { int hesh=0,i,k,l=0; char name[12]; printf("\n Vvedit' prizvyshche dla poshuku\nІ "); scanf("%s",name); fseek(f1,0, SEEK_SET); fread(&db1, sizeof(struct DB),1,f1); printf("REZULTAT:\n"); while(!feof(f1)) { for(k=0;k<=strlen(db1.name);k++) if (db1.name[k]==name[k])l=1; else{l=0;break;} if (l==1) printf("\n%3d %-11s %-8s %-12s %-10s %-9s %-8s %-6.2f",db1.id, db1.name, db1.lname, db1.pname, db1.datan, db1.posada, db1.tel, db1.zarplata); hesh=hesh+sizeof(struct DB); fseek(f1, hesh, SEEK_SET); fread(&db1, sizeof(struct DB),1,f1); } getch(); return 0; } /* void sortvyvid() { int i,j,hesh=0; struct DB db2[100],db3; fseek(f1,0, SEEK_SET); fread(&db1, sizeof(struct DB),1,f1); for(i=0;i<100;i++) { if (db1.id>0) db2[i]=db1; hesh=hesh+sizeof(struct DB); fseek(f1, hesh, SEEK_SET); fread(&db1, sizeof(struct DB),1,f1); } for(j=0;j<99;j++) for(i=0;i<100;i++) { //printf("\n%3d %-11s %-8s %-12s %-10s %-9s %-8s %-6.2f",db1.id, db1.name, db1.lname, db1.pname, db1.datan, db1.posada, db1.tel, db1.zarplata); if(db2[i].id>db2[i+1].id) { db3=db2[i]; db2[i]=db2[i+1]; db2[i+1]=db3; } } for(i=0;i<100;i++) if(db2[i].id>0) printf("\n%3d %-11s %-8s %-12s %-10s %-9s %-8s %-6.2f",db1.id, db1.name, db1.lname, db1.pname, db1.datan, db1.posada, db1.tel, db1.zarplata); getch(); } */ void main() { int choice; f1=fopen(fn,"r+"); textcolor(BLUE); textbackground(YELLOW); clrscr(); for(;;) { clrscr(); printf("ЙННННННННННННННННННННННННННННННННННННННННСНННННННННННННН»\n"); printf("є Druk bazy danyh і natysnit <1> є\n"); printf("ЗДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД¶\n"); printf("є Poshuk zapysu za vvedenym kluchem і natysnit <2> є\n"); printf("ЗДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД¶\n"); printf("є Vudalennia zapysu za vvedenym kluchem і natysnit <3> є\n"); printf("ЗДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД¶\n"); printf("є Vstavka zapysu і natysnit <4> є\n"); printf("ЗДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД¶\n"); printf("є Modyfikacija zapysu і natysnit <5> є\n"); printf("ЗДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДДДДДДД¶\n"); printf("є Vyhid z programy і natysnit <0> є\n"); printf("ИННННННННННННННННННННННННННННННННННННННННПННННННННННННННј\n"); printf("Vy vvely: "); scanf("%d",&choice); printf("\n\n"); switch (choice) { case 0: {exit(1); break;} case 1: {vyvid(); break;} case 2: {search();break;} case 3: {del(); break;} case 4: {insert();break;} case 5: {modify();break;} case 91:{ins2(); break;} default:{printf("\n\nPOTRIBNO VVESTU CHYSLO VID 0 DO 4\n"); getch();continue;} } } fclose(f1); } Результати виконання програми Головне меню: ╔════════════════════════════════════════╤══════════════╗ ║ Druk bazy danyh │ natysnit <1> ║ ╟────────────────────────────────────────┼──────────────╢ ║ Poshuk zapysu za vvedenym kluchem │ natysnit <2> ║ ╟────────────────────────────────────────┼──────────────╢ ║ Vudalennia zapysu za vvedenym kluchem │ natysnit <3> ║ ╟────────────────────────────────────────┼──────────────╢ ║ Vstavka zapysu │ natysnit <4> ║ ╟────────────────────────────────────────┼──────────────╢ ║ Modyfikacija zapysu │ natysnit <5> ║ ╟────────────────────────────────────────┼──────────────╢ ║ Vyhid z programy │ natysnit <0> ║ ╚════════════════════════════════════════╧══════════════╝ Vy vvely: Вивід бази даних: ║BLOK N0║ ╔════╦═══════════╦════════╦═════════╩══╦════╩═════╦═════════╦════════╦═════════╗ ║ ID║PRIZVYSHCHE║IMJA ║PO-BAT'KOVI ║DATA NAR. ║POSADA ║TELEFON ║ZARPLATA ║ ╠════╬═══════════╬════════╬════════════╬══════════╬═════════╬════════╬═════════╣ ║ 0║ ║ ║ ║ ║ ║ ║ 0.00║ ╟────╫───────────╫────────╫────────────╫──────────╫─────────╫────────╫─────────╢ ║ 80║Spryns'ka ║Zoriana ║Vasylivna ║12.04.1981║Vchytel ║5-25-38 ║ 1350.00║ ╟────╫───────────╫────────╫────────────╫──────────╫─────────╫────────╫─────────╢ ║ 20║Jarish ║Andrij ║Rostyslav. ║26.01.1988║San/teh. ║42-105 ║ 885.00║ ╟────╫───────────╫────────╫────────────╫──────────╫─────────╫────────╫─────────╢ ║ 50║Bukliv ║Pavlo ║Jaroslavov. ║31.05.1988║Vchytel ║42-235 ║ 1455.50║ ╟────╫───────────╫────────╫────────────╫──────────╫─────────╫────────╫─────────╢ ║ 60║Glunchak ║Pavlo ║Myronovych ║21.02.1989║Teh.prac.║42-211 ║ 885.90║ ╟────╫───────────╫────────╫────────────╫──────────╫─────────╫────────╫─────────╢ ║ 0║ ║ ║ ║ ║ ║ ║ 0.00║ ╟────╫───────────╫────────╫────────────╫──────────╫─────────╫────────╫─────────╢ ║ 0║ ║ ║ ║ ║ ║ ║ 0.00║ ╟────╫───────────╫────────╫────────────╫──────────╫─────────╫────────╫─────────╢ ║ 0║ ║ ║ ║ ║ ║ ║ 0.00║ ╟────╫───────────╫────────╫────────────╫──────────╫─────────╫────────╫─────────╢ ║ 0║ ║ ║ ║ ║ ║ ║ 0.00║ ╟────╫───────────╫────────╫────────────╫──────────╫─────────╫────────╫─────────╢ ║ 0║ ║ ║ ║ ║ ║ ║ 0.00║ ╚════╩═══════════╩════════╩════════════╩══════════╩═════════╩════════╩═════════╝ Пошук запису у базі даних: Dla poshuku po ID vvedit '1' Dla poshuku po Prizvyshcsu vvedit '2' 2 Vvedit' prizvyshche dla poshuku ▓ Omelchuk REZULTAT: 11 Omelchuk Petro Petrovuch 26.11.1964 Zast.dyr. 2558025 1600.00 23 Omelchuk Marija Petrivna 15.04.1987 Vchytel 2558025 1525.29 Видалення запису з бази даних: Uvedit ID (0 dla zaverszennia vvodu) ▓ 27 ****Zapys vydaleno**** Vvedit' ID dla vydalennia ?▓ Вставка запису у базу даних: Uvedit ID (0 dla zaverszennia vvodu) ▓ 10 Uvedit' Prizvyshche(11), Imja(8), Po-bat'kovi(12), d/n(10), posadu(9), telefon(8), zarpl atu Zaritslyj Ivan Mykhailovyc 06.07.1989 Vchytel 42-221 1150.00 ***Zapys dodano*** Модифікація запису у базі даних: Uvedit ID (0 dla zaverszennia vvodu) ▓ 47 Uvedit' novi dani Prizvyshche(11), Imja(8), Po-bat'kovi(12), d/n(10), posadu(9), telefon(8), zarpl atu Kalytka Pavlo Petrovych 30.03.1971 Vchytel 44-669 1400.20 ****Zapys modyfikovano**** Vvedit' ID dla modyfikaciji ▓ Висновки На цій лабораторній роботі я розглянув органiзацiю i ведення файлiв прямого доступу; набув практичнi навички у програмуваннi алгоритмiв доступу хешуванням.
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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