Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified DBMS/DBMS.sdf
Binary file not shown.
Binary file modified DBMS/DBMS.v11.suo
Binary file not shown.
3 changes: 1 addition & 2 deletions DBMS/DBMS/DBMS.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="BPlusTree.cpp" />
<ClCompile Include="btree.cpp" />
<ClCompile Include="data_utility.cpp" />
<ClCompile Include="fileManage.cpp" />
Expand All @@ -74,11 +73,11 @@
<ClCompile Include="recordManage.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="BPlusTree.h" />
<ClInclude Include="btree.h" />
<ClInclude Include="data_utility.h" />
<ClInclude Include="fileManage.h" />
<ClInclude Include="globalVariable.h" />
<ClInclude Include="databaseManage.h" />
<ClInclude Include="node.h" />
<ClInclude Include="pageManage.h" />
<ClInclude Include="recordManage.h" />
Expand Down
9 changes: 3 additions & 6 deletions DBMS/DBMS/DBMS.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,6 @@
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="BPlusTree.cpp">
<Filter>源文件</Filter>
</ClCompile>
<ClCompile Include="btree.cpp">
<Filter>源文件</Filter>
</ClCompile>
Expand All @@ -38,9 +35,6 @@
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="BPlusTree.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="btree.h">
<Filter>头文件</Filter>
</ClInclude>
Expand All @@ -62,5 +56,8 @@
<ClInclude Include="recordManage.h">
<Filter>头文件</Filter>
</ClInclude>
<ClInclude Include="databaseManage.h">
<Filter>头文件</Filter>
</ClInclude>
</ItemGroup>
</Project>
Binary file modified DBMS/DBMS/Debug/CL.read.1.tlog
Binary file not shown.
Binary file modified DBMS/DBMS/Debug/CL.write.1.tlog
Binary file not shown.
2 changes: 1 addition & 1 deletion DBMS/DBMS/Debug/DBMS.lastbuildstate
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
#v4.0:v110:false
Debug|Win32|D:\wq\four_grade\database\DBMS\|
Debug|Win32|D:\Programme\Github\databaseManageSystem\DBMS\|
47 changes: 14 additions & 33 deletions DBMS/DBMS/Debug/DBMS.log
Original file line number Diff line number Diff line change
@@ -1,33 +1,14 @@
生成启动时间为 2014/12/29 20:31:35。
1>项目“D:\wq\four_grade\database\DBMS\DBMS\DBMS.vcxproj”在节点 2 上(Build 个目标)。
1>ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\CL.exe /c /ZI /nologo /W3 /WX- /sdl /Od /Oy- /D _CRT_SECURE_NO_WARNINGS /D _MBCS /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug\\" /Fd"Debug\vc110.pdb" /Gd /TP /analyze- /errorReport:prompt BPlusTree.cpp btree.cpp data_utility.cpp fileManage.cpp main.cpp node.cpp recordManage.cpp
recordManage.cpp
1>d:\wq\four_grade\database\dbms\dbms\recordmanage.cpp(33): warning C4018: “<”: 有符号/无符号不匹配
1>d:\wq\four_grade\database\dbms\dbms\recordmanage.cpp(36): warning C4018: “<”: 有符号/无符号不匹配
node.cpp
main.cpp
fileManage.cpp
data_utility.cpp
1>d:\wq\four_grade\database\dbms\dbms\data_utility.cpp(23): warning C4018: “<”: 有符号/无符号不匹配
1>d:\wq\four_grade\database\dbms\dbms\data_utility.cpp(49): warning C4018: “<”: 有符号/无符号不匹配
1>d:\wq\four_grade\database\dbms\dbms\data_utility.cpp(81): warning C4018: “<”: 有符号/无符号不匹配
btree.cpp
BPlusTree.cpp
1>d:\wq\four_grade\database\dbms\dbms\bplustree.h(11): warning C4091: “typedef ”: 没有声明变量时忽略“record”的左侧
1>d:\wq\four_grade\database\dbms\dbms\bplustree.h(20): warning C4091: “typedef ”: 没有声明变量时忽略“node”的左侧
正在生成代码...
Link:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"D:\wq\four_grade\database\DBMS\Debug\DBMS.exe" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /DEBUG /PDB:"D:\wq\four_grade\database\DBMS\Debug\DBMS.pdb" /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"D:\wq\four_grade\database\DBMS\Debug\DBMS.lib" /MACHINE:X86 Debug\BPlusTree.obj
Debug\btree.obj
Debug\data_utility.obj
Debug\fileManage.obj
Debug\main.obj
Debug\node.obj
Debug\recordManage.obj
DBMS.vcxproj -> D:\wq\four_grade\database\DBMS\Debug\DBMS.exe
1>已完成生成项目“D:\wq\four_grade\database\DBMS\DBMS\DBMS.vcxproj”(Build 个目标)的操作。

生成成功。

已用时间 00:00:02.47
 recordManage.cpp
d:\programme\github\databasemanagesystem\dbms\dbms\recordmanage.cpp(33): warning C4018: '<' : signed/unsigned mismatch
d:\programme\github\databasemanagesystem\dbms\dbms\recordmanage.cpp(36): warning C4018: '<' : signed/unsigned mismatch
main.cpp
fileManage.cpp
data_utility.cpp
d:\programme\github\databasemanagesystem\dbms\dbms\data_utility.cpp(31): warning C4018: '<' : signed/unsigned mismatch
d:\programme\github\databasemanagesystem\dbms\dbms\data_utility.cpp(56): warning C4018: '<' : signed/unsigned mismatch
d:\programme\github\databasemanagesystem\dbms\dbms\data_utility.cpp(88): warning C4018: '<' : signed/unsigned mismatch
Generating Code...
fileManage.obj : error LNK2019: unresolved external symbol "public: static char * __cdecl dataUtility::data_to_char<class dbPage>(class dbPage)" (??$data_to_char@VdbPage@@@dataUtility@@SAPADVdbPage@@@Z) referenced in function "public: static void __cdecl FileManage::writePageToFile(int,class dbPage,char *)" (?writePageToFile@FileManage@@SAXHVdbPage@@PAD@Z)
recordManage.obj : error LNK2019: unresolved external symbol "public: static char * __cdecl dataUtility::data_to_char<int>(int)" (??$data_to_char@H@dataUtility@@SAPADH@Z) referenced in function "public: char * __thiscall recordEntry::getRecord(struct recordEntry *)" (?getRecord@recordEntry@@QAEPADPAU1@@Z)
recordManage.obj : error LNK2019: unresolved external symbol "public: static char * __cdecl dataUtility::data_to_char<class attr>(class attr)" (??$data_to_char@Vattr@@@dataUtility@@SAPADVattr@@@Z) referenced in function "public: void __thiscall DBStorage::createTable(char *,char *,class attr)" (?createTable@DBStorage@@QAEXPAD0Vattr@@@Z)
D:\Programme\Github\databaseManageSystem\DBMS\Debug\DBMS.exe : fatal error LNK1120: 3 unresolved externals
Empty file.
Binary file modified DBMS/DBMS/Debug/btree.obj
Binary file not shown.
Binary file modified DBMS/DBMS/Debug/cl.command.1.tlog
Binary file not shown.
Binary file modified DBMS/DBMS/Debug/data_utility.obj
Binary file not shown.
Binary file modified DBMS/DBMS/Debug/fileManage.obj
Binary file not shown.
1 change: 1 addition & 0 deletions DBMS/DBMS/Debug/link.11680-cvtres.read.1.tlog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
��
1 change: 1 addition & 0 deletions DBMS/DBMS/Debug/link.11680-cvtres.write.1.tlog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
��
1 change: 1 addition & 0 deletions DBMS/DBMS/Debug/link.11680-rc.read.1.tlog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
��
1 change: 1 addition & 0 deletions DBMS/DBMS/Debug/link.11680-rc.write.1.tlog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
��
1 change: 1 addition & 0 deletions DBMS/DBMS/Debug/link.11680.read.1.tlog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
��
1 change: 1 addition & 0 deletions DBMS/DBMS/Debug/link.11680.write.1.tlog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
��
1 change: 1 addition & 0 deletions DBMS/DBMS/Debug/link.27656-cvtres.read.1.tlog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
��
1 change: 1 addition & 0 deletions DBMS/DBMS/Debug/link.27656-cvtres.write.1.tlog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
��
1 change: 1 addition & 0 deletions DBMS/DBMS/Debug/link.27656-rc.read.1.tlog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
��
1 change: 1 addition & 0 deletions DBMS/DBMS/Debug/link.27656-rc.write.1.tlog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
��
1 change: 1 addition & 0 deletions DBMS/DBMS/Debug/link.27656.read.1.tlog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
��
1 change: 1 addition & 0 deletions DBMS/DBMS/Debug/link.27656.write.1.tlog
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
��
Binary file modified DBMS/DBMS/Debug/link.read.1.tlog
Binary file not shown.
Binary file modified DBMS/DBMS/Debug/link.write.1.tlog
Binary file not shown.
Binary file modified DBMS/DBMS/Debug/main.obj
Binary file not shown.
Binary file modified DBMS/DBMS/Debug/node.obj
Binary file not shown.
Binary file modified DBMS/DBMS/Debug/recordManage.obj
Binary file not shown.
Binary file modified DBMS/DBMS/Debug/vc110.idb
Binary file not shown.
Binary file modified DBMS/DBMS/Debug/vc110.pdb
Binary file not shown.
23 changes: 8 additions & 15 deletions DBMS/DBMS/data_utility.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@
#ifndef DATA_UTILITY_H_
#define DATA_UTILITY_H_
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include "pageManage.h"

using namespace std;

Expand All @@ -20,8 +19,7 @@ class dataUtility {
static char* data_to_char(T ori){
char* data = (char*) malloc(sizeof(T));
memcpy(data, &ori, sizeof(T));
cout << "size: " << sizeof(T) << "data size " << strlen(data)<< endl;
data[sizeof(T)] = '\0';
cout << "size: " << sizeof(T) << " data size " << strlen(data)<< endl;
return data;
};

Expand All @@ -32,28 +30,23 @@ class dataUtility {
return data;
};

static char* int_to_char(int data);
static int* char_to_int(char* data);
static int char2int(char* data);
static double* char_to_double(char* data);
static float* char_to_float(char* data);

template<typename T>
static T* char_to_class(char* data) {
T* pageinfo = (T*) malloc(sizeof(T));
memcpy(pageinfo, data, sizeof(T));
return pageinfo;
}

static char* getbyte(char* src, int start, int length);
static char* int_to_char(int data);
static int* char_to_int(char* data);
static int char2int(char* data);
static double* char_to_double(char* data);
static float* char_to_float(char* data);

static char* getbyte(char* src, int start, int length);
static void printChars(char* data);

static void bytefillbyte(char* src, char* dst, int index);
static void bytefillbyte(char* src, char* dst, int start, int length); //some characters in src are replaced by in dst.
static char bool_to_byte(bool data);
};



#endif /* DATA_UTILITY_H_ */
11 changes: 2 additions & 9 deletions DBMS/DBMS/fileManage.cpp
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
#include "fileManage.h"
#include "globalVariable.h"
#include "data_utility.h"
#include <iostream>
#include <stdio.h>
#include <direct.h>
#include <stdlib.h>
#include <string.h>
using namespace std;

void FileManage::writePageToFile(int pageid, dbPage pagedata, char* filename){
FILE* originfilestream;
FILE* updatefilestream;
char* writedata = dataUtility::data_to_char<dbPage>(pagedata);
writedata[sizeof(dbPage)-1]='\0';
const char* updatefilename = "newfile.txt";
originfilestream = fopen(filename,"r");
updatefilestream = fopen(updatefilename, "w+");
Expand Down Expand Up @@ -44,6 +36,7 @@ void FileManage::writePageToFile(int pageid, dbPage pagedata, char* filename){
remove(filename);
rename(updatefilename, filename);
}

void FileManage::readPageFromFile(int pageid, dbPage* pageinfo, char* filename){
FILE* filestream;
char* data = new char[sizeof(dbPage)];
Expand All @@ -58,7 +51,6 @@ void FileManage::readPageFromFile(int pageid, dbPage* pageinfo, char* filename){
fclose(filestream);
}


int FileManage::createFileFolder(char* filefoldername) {
int status = _mkdir(filefoldername);
if (status == 0) {
Expand All @@ -68,6 +60,7 @@ int FileManage::createFileFolder(char* filefoldername) {
}
return status;
}

int FileManage::deleteFileFolder(char* filefoldername) {
int status = _rmdir(filefoldername);
if (status == 0) {
Expand Down
2 changes: 1 addition & 1 deletion DBMS/DBMS/fileManage.h
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#ifndef _FILEMANAGE_H
#define _FILEMANAGE_H
#include "globalVariable.h"
#include "pageManage.h"

class FileManage {
public:
static void writePageToFile(int pageid, dbPage pageinfo, char* filename);
Expand Down
27 changes: 4 additions & 23 deletions DBMS/DBMS/globalVariable.h
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
#ifndef _GLOBALVARIABLE_H
#define _GLOBALVARIABLE_H

#include <iostream>
#include <stdio.h>
#include <string>

using namespace std;
const int PAGE_SIZE = 8192;
typedef unsigned int UINT;
typedef unsigned int UINT;
typedef unsigned short USRT;
typedef unsigned char BYTE;

#define PAGE_SIZE 8192-sizeof(pageHeader)
#define INT_TYPE 0
#define DOUBLE_TYPE 1
#define FLOAT_TYPE 2
Expand All @@ -17,20 +14,4 @@ typedef unsigned int UINT;
#define VARCHAR_TYPE 5
#define BOOLEAN_TYPE 6

class attr{
public:
int num;
string *colname;
int* coltype; //0-int 1-double 2-float 3-char 4-string 5-varchar 6-boolean
int* collen;
bool* colIsNull;
int primaryId;
attr(int num_v){
num = num_v;
colname = new string[num];
coltype = new int[num];
collen = new int[num];
colIsNull = new bool[num];
}
};
#endif
41 changes: 18 additions & 23 deletions DBMS/DBMS/node.cpp
Original file line number Diff line number Diff line change
@@ -1,50 +1,45 @@
#include "node.h"
#include "fileManage.h"
#include <fstream>

FileBuffer::FileBuffer(int max){
header = new Node();
trailor = new Node();
header -> next = trailor;
trailor -> pre = header;
head = new Node();
pointer = new Node();
head -> next = pointer;
pointer -> pre = head;

maxpagenum = max;
usepagenum = 0;
maxPage = max;
usedPage = 0;
}


Node* FileBuffer::remove(){
if (usepagenum <= 0) return NULL;
if (!usedPage) return NULL;

Node* cur = trailor -> pre;
(cur -> pre) -> next = trailor;
trailor -> pre = cur -> pre;
Node* cur = pointer -> pre;
(cur -> pre) -> next = pointer;
pointer -> pre = cur -> pre;

if (cur -> dirty)
if (cur -> dirty) {
//FileManage::writePageToFile(cur -> pageid, cur -> data, filename);

}
bufmap.erase(cur -> pageid);
usepagenum --;

usedPage--;
return cur;
}

void FileBuffer::insert(Node* cur){
if (usepagenum == maxpagenum) {
if ( usedPage == maxPage ) {
cout << "buffer is full" << endl;
remove();
insert(cur);
return;
}

cur -> next = header -> next;
cur -> pre = header;
header -> next = cur;
cur -> next = head -> next;
cur -> pre = head;
head -> next = cur;
(cur -> next) -> pre = cur;

bufmap.insert(map<int, Node*>::value_type(cur -> pageid, cur));

usepagenum ++;
usedPage++;
}

Node* FileBuffer::find(int pageid){
Expand Down
8 changes: 5 additions & 3 deletions DBMS/DBMS/node.h
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
#ifndef __NODE__H__
#define __NODE__H__

#include "fileManage.h"
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <map>

using namespace std;
Expand Down Expand Up @@ -31,10 +33,10 @@ struct Node{

//���ÿ���ļ�һ������
class FileBuffer{
Node *header, *trailor;
Node *head, *pointer;
char* filename;
int maxpagenum;
int usepagenum;
int maxPage;
int usedPage;
map<int, Node*> bufmap; //�ܹ�����pageid�����ҵ�Node
public:
FileBuffer(int max);
Expand Down
Loading