Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

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

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

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

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

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

Частина тексту файла

МIНIСТЕРСТВО ОСВIТИ І НАУКИ УКРАЇНИ Національний університет «Львiвська полiтехнiка» Звіт до лабораторної роботи №2 на тему «Прямий метод доступу до файлів на зовнішніх запам’ятовуючих пристроях» з курсу "Організація баз даних і знань " Львів 2016 Тема Прямий метод доступу до файлів на зовнішніх запам’ятовуючих пристроях. Мета роботи Розглянути органiзацiю i ведення файлiв прямого доступу; набути практичнi навички у програмуваннi алгоритмiв доступу хешуванням. Завдання: 1. Написати програму методу прогресуючого переповнення, яка реалiзує такi функцiї: 1. Друк бази даних. 2. Зчитування запису. 3. Введення запису. 4. Видалення запису. 5. Модифiкацiя запису. 6. Вихід. 2. Написати програму методу зв'язаних блокiв, яка реалiзує такi функцiї: 1. Друк бази даних. 2. Зчитування запису. 3. Введення запису. 4. Видалення запису. 5. Модифiкацiя запису. 6. Вихід. Індивідуальне завдання: Магазин будівельних матеріалів Текст програми: #include <stdio.h> #include <conio.h> #include <string.h> #include <math.h> #include <iostream.h> #pragma hdrstop #include <tchar.h> //--------------------------------------------------------------------------- #define BLOCKS 10 #define BLOCK_ROWS 6 #pragma argsused // global vars FILE *db; char file_name[100]; struct data{ int id, Number, securityDet, lifetimeDet, salesDet; int priceDet; char company[20], nameDet[20], categoryDet[20], returnDet[20]; }; struct data parser(char *s); int hash(int id){ return (id % BLOCKS)-1; } void read_row(char *buf){ int i=0 ; for (i = 0;i<255&&!feof(db); i++){ //??????? ????? fscanf(db,"%c",&buf[i]); buf[i+1]='\0'; if(buf[i]=='\n'){ buf[i]='\0'; break; } } } void write_row(FILE *f, struct data row){ fprintf(f,"%i|%i|%i|%i|%i|",row.id,row.Number,row.priceDet,row.securityDet,row.lifetimeDet); fprintf(f,"%i|%s|%s|%s|%s|\n",row.salesDet,row.company,row.nameDet,row.categoryDet,row.returnDet); } void block_read(struct data block[]){ int i=0; char buf[255]; for (i = 0; i < BLOCKS; i++) { block[i].id=0; } for (i = 0; i < BLOCK_ROWS && !feof(db); i++) { read_row(buf); block[i]=parser(buf); } } void block_write(FILE *f, struct data *block){ int i=0; for (i = 0; i < BLOCK_ROWS; i++) { if(block[i].id==0){ fprintf(f,"0||||||||||\n"); }else{ write_row(f,block[i]); } } } int db_conect(void){ int i; char c; system("pause"); for (i=0;i<sizeof(file_name);i++){file_name[i]='\0';} printf("Database adress: "); fflush(stdin); /** file_name[0]='f'; file_name[1]='1'; file_name[2]='.'; file_name[3]='d'; file_name[4]='b'; **/ scanf("%s",&file_name); db=fopen(file_name,"r"); if(db==0){ printf("\ndatabase not find!\n 1- insert new database adress\n 2- exit\n"); c=getchar(); if(c=='1')db_conect();else if(c!='1')return 0; } return 1; } struct data parser(char *s){ char b[255]; struct data row; int i=0, tmp=0,y,bi=0; row.id=0; while(s[i]!='\0'&&s[i]!='\n'){ if(s[i]=='|'){ switch (tmp) { case 0:{row.id=atoi(b);break;} case 1:{row.Number=atoi(b);break;} case 2:{row.priceDet=atoi(b);break;} case 3:{row.securityDet=atoi(b);break;} case 4:{row.lifetimeDet=atoi(b);break;} case 5:{row.salesDet=atoi(b);break;} case 6:{for(y=0;y<sizeof(row.company);y++)row.company[y]=b[y];break;} case 7:{for(y=0;y<sizeof(row.nameDet);y++)row.nameDet[y]=b[y];break;} case 8:{for(y=0;y<sizeof(row.categoryDet);y++)row.categoryDet[y]=b[y];break;} case 9:{for(y=0;y<sizeof(row.returnDet);y++)row.returnDet[y]=b[y];break;} default:break; } for (bi = 0; bi < sizeof(b); bi++)b[bi]='\0'; bi=0; tmp++; }else{ b[bi]=s[i]; bi++; } i++; } return row; } void print_shapka(void){ //printf("ID | Remains |Security | Price | Lifetime | Sales | Company | NameDet | Category | ReturnDet\n"); printf("***Output***\n"); } void print_row(struct data row){ //printf("%3i|%8i|%8i|%8i|%5i|%4i|%6...
Антиботан аватар за замовчуванням

25.05.2016 15:05

Коментарі

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

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

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

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

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини