资源简介
用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个文件信息
- 上一篇:C++ Template 完全导引简体中文版
- 下一篇:C++蚁群算法求解TSP问题
相关资源
- C++蚁群算法求解TSP问题
- C++ Template 完全导引简体中文版
- 中国象棋对弈(MFC单机版)
- IP包流量分析程序.rar含程序+源码WIN
- 基于C_S结构的Socket程序设计(含源码
- MFC使用WebBrowser控件调用百度地图API案
- msvcr80d.dll msvcp80d.dll mfc80d.dll Microsoft
- mfc开发的虚拟列表控件(包含3个)
- MFC教师课程管理系统+mysql
- UG二次来发 外部模式
- MFC实现的仿QQ的抽屉效果
- MFC中改变list control满足条件的某一行
- MFC的CStatic子类化,解决背景透明,文
- 谭浩强c++第二章例题源码
- C++远控源码demo
- 经典中的经典 c语言教程——窗口图形
- mschart vs2010 mfc源码
- MFC做的仓库管理系统
- Seamless R and C++ Integration with Rcpp
- 用vc++6.0mfc对话框做的钟表
- C++绘制地图
- 《数据结构》C语言版算法源码及运行
- 工业组态软件VC++简单实现
- 基于opencv C++实现毛衣衣服的瑕疵检测
- apriori 算法 c++ 实现 文件读入
- MFC读取文本文件方法
- VC++USB通讯
- 基于对话框的多线程进度条更新
- 时间片轮转法RRC++实现
- 五子棋MFC 五子棋MFC 五子棋MFC
评论
共有 条评论