• 大小: 1.04MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-17
  • 语言: C/C++
  • 标签: C  C++  MBMS  

资源简介

用C语言写的一个DBMS,可以帮助开始学数据库的同学了解数据库的原理。

资源截图

代码片段和文件信息

#include “stdio.h“
#include “stdlib.h“
#include “string.h“
#include “conio.h“
#include “windows.h“
#include “iostream.h“
#include “power.h“

#define MAX_PROLEN 10 //最大属性字符长度
#define MAX_PRONUM 8 //最大属性个数
#define MAX_RECNUM 30 //最大记录个数 
#define MAX_TNAME 15 //最长表名
#define MAX_TNUM 15 //最大表个数 
#define MAX_VIEWNUM 15 //最大表个数
#define MAX_USERLEN 10 //用户名长度
#define MAX_PWDLEN 18 //密码最大长度
#define MAX_USERNUM 10 //用户名最大个数

//***************************
typedef struct
{
int re_num; //记录的个数
int pro_num; //属性个数
int key_no; //规定关键字是第几个属性使用的是下标从0开始
//int pro_len[MAX_PRONUM]; //属性长度
char key[MAX_PROLEN]; //定义关键字关键字也是一个属性
char tname[MAX_TNAME]; //表名
char proname[MAX_PRONUM][MAX_PROLEN]; //属性的名字
char protype[MAX_PRONUM]; //属性的类型
char record[MAX_RECNUM][MAX_PRONUM][MAX_PROLEN]; //三维表保存的内容是记录的值
}table;

typedef struct
{
char proname[MAX_PRONUM][MAX_PROLEN]; //可见的属性
int prono[MAX_PRONUM]; //可见属性的下标
char tname[MAX_TNAME]; //对应的表名
char vname[MAX_TNAME]; //视图名
int pro_num;
}view; //视图,该试图对应一个表,一个表可以对应多个视图

typedef struct
{
char iname[MAX_TNAME]; //一个索引对应一个表
int key_num;
char key[MAX_RECNUM][MAX_PROLEN]; //
}index;
typedef struct
{
char username[MAX_USERLEN];
char pwd[MAX_PWDLEN];
int revoke; //0是glz,1是nb
}user;

table NULLTABLE; //空表,初始化的时候定义NULLTABLE.key_no=-1
table t[MAX_TNUM];
view vi[MAX_VIEWNUM];
index ind[MAX_TNUM];

user u[MAX_USERNUM];
FILE *alfp;

int t_num=0;
int i_num=0;
int v_num=0;
int u_num=0;

int CURRENTREVOKE;
int speedfactor=10;

bool dbislock()
{
int databaselock;
FILE *fp;
if((fp=fopen(“dblock.db““rb“))==NULL)
{
printf(“不存在锁文件请检查后再使用.\a“);
fclose(fp);
exit(-1);
}
fread(&databaselocksizeof(int)1fp);
fclose(fp);
if(databaselock==1)
return true;
else 
return false;
}
void dblock()
{
int databaselock=1;
FILE *fp;
if((fp=fopen(“dblock.db““wb“))==NULL)
{
printf(“不存在锁文件请检查后再使用.\a“);
fclose(fp);
exit(-1);

fwrite(&databaselocksizeof(int)1fp);
fclose(fp);
}
void dbunlock()
{
int databaselock=0;
FILE *fp;
if((fp=fopen(“dblock.db““wb“))==NULL)
{
printf(“不存在锁文件请检查后再使用.\a“);
fclose(fp);
exit(-1);
}
fwrite(&databaselocksizeof(int)1fp);
fclose(fp);
}
void BackUp()
{
if(CURRENTREVOKE==0)
{
gotoxy(124);printf(“\a对不起您的权限不允许这项操作.按任意键返回...“);
getch();
return;
}
if(!dbislock()) //没有锁,那就加锁@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
dblock(); //dblock();     dbunlock();
else
{
clrscr();
printf(“数据库处于锁状态,即使超级用户也不能进行修改!\a“);
printf(“\n按任意键返回...“);
getch();
return;
}
char filename[20];
clrscr();
PrintColorStringXY(367014015“数据的备份“);
Drawframe(2060514);
gotoxy(279); printf(“输入备份数据的文件名:“);
gotoxy(2710);
gets(filename);
FILE *fp;
if((fp=fopen(filename“wb“))==NULL)
fp=fopen(filename“wb+“);
//以下共6个文件提供全体打包保存dblock.dbtable.dbindex.dbview.dbdic.dblog.txt
//*****************对dblock.db的备份****

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      46072  2008-07-20 11:11  20050675_段金晟_数据库原理实验\可执行文件\backup.db

     文件          0  2008-07-22 10:54  20050675_段金晟_数据库原理实验\可执行文件\config.db

     文件          4  2010-05-10 18:52  20050675_段金晟_数据库原理实验\可执行文件\dblock.db

     文件     290921  2008-07-23 10:59  20050675_段金晟_数据库原理实验\可执行文件\DBMS.exe

     文件        659  2008-07-23 10:34  20050675_段金晟_数据库原理实验\可执行文件\dic.db

     文件       4804  2008-07-23 10:34  20050675_段金晟_数据库原理实验\可执行文件\index.db

     文件       2802  2010-01-06 20:19  20050675_段金晟_数据库原理实验\可执行文件\log.txt

     文件        316  2008-07-23 10:58  20050675_段金晟_数据库原理实验\可执行文件\READ_ME_BEFORE_RUN.txt

     文件      37924  2008-07-23 10:34  20050675_段金晟_数据库原理实验\可执行文件\table.db

     文件       2224  2008-07-23 10:34  20050675_段金晟_数据库原理实验\可执行文件\view.db

     文件     195072  2008-07-23 10:07  20050675_段金晟_数据库原理实验\实验报告4--7\20050675_段金晟_E4_数据库原理实验.doc

     文件      48640  2008-07-23 10:20  20050675_段金晟_数据库原理实验\实验报告4--7\20050675_段金晟_E5_数据库原理实验.doc

     文件      27648  2008-07-23 10:49  20050675_段金晟_数据库原理实验\实验报告4--7\20050675_段金晟_E6_数据库原理实验.doc

     文件     524288  2008-07-23 10:45  20050675_段金晟_数据库原理实验\实验报告4--7\20050675_段金晟_E7_数据库原理实验.doc

    ..A..H.       162  2010-05-15 13:07  20050675_段金晟_数据库原理实验\整体文档实验8\~$库课程设计报告.doc

     文件      46072  2008-07-20 11:11  20050675_段金晟_数据库原理实验\源程序\backup.db

     文件          0  2008-07-22 10:54  20050675_段金晟_数据库原理实验\源程序\config.db

     文件      74689  2008-07-23 10:11  20050675_段金晟_数据库原理实验\源程序\db2.cpp

     文件          4  2008-07-23 10:34  20050675_段金晟_数据库原理实验\源程序\dblock.db

     文件        659  2008-07-23 10:34  20050675_段金晟_数据库原理实验\源程序\dic.db

     文件       4804  2008-07-23 10:34  20050675_段金晟_数据库原理实验\源程序\index.db

     文件       2152  2008-07-23 10:34  20050675_段金晟_数据库原理实验\源程序\log.txt

     文件       8679  2008-07-22 10:33  20050675_段金晟_数据库原理实验\源程序\power.h

     文件        352  2008-07-23 10:56  20050675_段金晟_数据库原理实验\源程序\READ_ME_BEFORE_RUN.txt

     文件      37924  2008-07-23 10:34  20050675_段金晟_数据库原理实验\源程序\table.db

     文件       2224  2008-07-23 10:34  20050675_段金晟_数据库原理实验\源程序\view.db

     目录          0  2008-09-03 10:41  20050675_段金晟_数据库原理实验\可执行文件

     目录          0  2010-05-15 13:52  20050675_段金晟_数据库原理实验\实验报告4--7

     目录          0  2010-05-16 14:01  20050675_段金晟_数据库原理实验\整体文档实验8

     目录          0  2008-09-03 10:41  20050675_段金晟_数据库原理实验\源程序

............此处省略5个文件信息

评论

共有 条评论