검색어 입력폼

가상디스크에서 파일의 레코드 관리기

저작시기 2006.11 |등록일 2006.12.17 파일확장자압축파일 (zip) | 19페이지 | 가격 2,000원

소개글

가상디스크를 생성하여 파일의 생성,삭제,수정,탐색을 하게 해줍니다.
디렉토리롤 파일을 관리합니다.
가상디스크의 블록은 FAT로 관리되어 파일이 이용하고 있는 블록을 알수 있게 해줍니다.
파일이 생성되면 200개의 가변길이 레코드가 생성되어 디스크에 저장됩니다.
각 블록에는 후미에 Slot을 두어 레코드의 키값에 따라 정렬되면서 들어간 위치를 가지고
있습니다. 레코드가 지정된 블록에 삽입될때 공간이 부족하면 기존에 있던 레코드들과 함께
분할되면서 다음 블록 및 현재 블록에 들어갑니다.
레코드에 관해서는 탐색,삭제,생성,수정 등이 가능 합니다.

컴파일 실행환경

C++

본문내용

Ⅰ. 레코드관리기 알고리즘 개요
1. 블록상의 slot을 위한 클래스 정의
각 블록에는 레코드의 시작 주소 및 키 값을 저장하고 있는 slot이 후미에서부터 동적으로 생성된다. 이를 위하여 클래스 상에는 레코드의 시작 주소를 저장할 Raddr 및 키 값을 저장 할 Rkey 배열을 선언하고, 해당 레코드에 대하여 slot상에 상기 두 배열의 인덱스를 저장하여 관리한다. 이에대한 클래스 정의는 아래와 같다.

class DataBlock{
friend vDisk;
protected:
char DataSaveSpace[MaxBlk];
private:
int freespace; // 자유공간을 표시하는 변수
int Raddr[20]; // 레코드의 시작 인덱스를 저장할 배열
int Rkey[20]; // 레코드의 키 값을 저장할 배열
};

2. 레코더 생성 시 버퍼로 활용할 클래스 정의
각 레코드는 char형의 키 값 저장을 위한 배열 및 레코드의 길이를 저장 할 int형 변수, 데이터를 저장할 공간이 필요하다. 레코드에는 그 길이를 데이터블록의 첫 4byte에 저장한다. 이를 위한 클래스 선언은 아래와 같다.

class RecordBlock:public DataBlock{
friend vDisk;
private:
char KeyNum[4]; // 레코드의 키 값을 저장할 배열
int len; // 레코드의 길이를 저장 할 변수
};

위 레코드를 위한 클래스는 디스크 블록을 위한 클래스를 상속하는 것으로서, DataSavaSpace를 사용 할 수 있다. 이 배열에는 해당 레코드의 데이터 값들이 저장된다.

압축파일내 파일목록

RID.dsw
RID.ncb
RID.plg
Disk
RID.dsp
search.jpg
create2.jpg
create1.jpg
삭제확인.jpg
생성.jpg
출력.jpg
수정.jpg
파일생성.jpg
파일생성2.jpg
디스크초기화.jpg
레코드생성.jpg
슬롯설정.jpg
레코드삽입과정.jpg
삽입후자유공간.jpg
스프릿처리를위한레코드삭제.jpg
스프릿처리를위한레코드삭제2.jpg
스프릿처리를위해레코드를모두꺼냄.jpg
스프릿처리를위해새로운블럭할당.jpg
새로운레코드삽입을위한레코드이동.jpg
레코드출력을위한버퍼저장.jpg
레코드내용변경과정.jpg
레코드삭제후이동.jpg
레코드삭제후슬롯주소해제.jpg
Thumbs.db
rid.cpp.bak
rid.cpp
RID.opt
레코드관리기.hwp
Debug/vc60.idb
Debug/vc60.pdb
Debug/RID.pch
Debug/RID.exe
Debug/RID.pdb
Debug/rid.obj
Debug/RID.ilk
다운로드 맨위로