数据库课程设计文档文档格式.docx
- 文档编号:14188067
- 上传时间:2022-10-19
- 格式:DOCX
- 页数:15
- 大小:166.64KB
数据库课程设计文档文档格式.docx
《数据库课程设计文档文档格式.docx》由会员分享,可在线阅读,更多相关《数据库课程设计文档文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
(5)delete
删除数据,以行为单位,权限为“1”
(6)update
修改数据,权限为1
(7)select
查询操作,权限为“0”,“1”,“2”都可以
(8)createindex
建立索引
(9)dropindex
删除索引
(10)createuser
添加用户,权限为“0”
三、DBMS算法实现
算法描述
char*bdsctq(chara[],charb)
表达式串提取,根据第二参数为‘l’或‘r’,提取表达式左部或又部串
char*ctq(chara[],intb)
关键字串提取,根据字符个数提取关键字
voiddgxty(charch1[],charc[],intb)
单关系投影,参数为:
关系属性表名,关系数据表名,投影所在列
voiddgxxz(charch[],charch1[],charch2[],charch3[],charch4[],inta1,inta2)
单关系选择,参数为:
关系数据表名,选择值1,选择值2,and或or,选择后生成表名,选择属性所在列1,所在列2
voiddgxyhxz(charch[],charch1[],charch2[],inta1)
单关系优化选择,与上述函数类似,只不过上述函数比较两列,此函数只比较一列
char*dhctq(chara[],intb)
根据逗号提取串,根据第i个逗号提取i到i+1间的串
intgxcz(charz[],chara[])
关系查找,根据关系属性表和属性名的匹配,返回此属性名所在的列数
char*gxmtq(chara[],intb)
新建模式关系名提取
voidgxxg(charp[],chara[])
关系属性修改,根据关系属性表和属性名的匹配,并将其删除,保留其它属性
char*kgctq(chara[],intb)
根据空格提取串
voidlgxlj(charch[],charch1[],charch2[],charch3[],inta1,inta2,charch4[],charch5[])
两关系连接,参数为:
连接数据表1,连接数据表2,连接后生成的属性表名,连接后生成的数据表名,连接属性在原属性表列数1,连接属性在原属性表列数2,原属性表1,原属性表2。
三关系连接时两次调用
voidlgxsylj(chara[],chara1[],chara2[],chara3[],chara4[])
两关系索引连接,参数为:
连接数据表1,连接数据表2,索引表1,索引表2,连接后生成的数据表名
char*lmtq(chara[])
列名提取,提取括号内字符,数据插入时也可用
voidsgxty(charch[],charch1[],inta,inta1,inta2)
三关系投影,参数为:
投影属性表名,投影数据表名,三个属性所在列
voidshop1(chara[])
属性表文件输出
voidshop2(chara[])
数据表文件输出
voidsjsc(charch[],charch1[],inta1)
数据删除,参数为:
数据表名,所要删除的数据值,所要删除值所在的属性列
voidsjsy(chara[],chara1[],intb1)
数据索引,参数为:
要建索引的原数据表名,索引表名,
要建索引的数据所在列
voidsjxg(charch[],charch1[],charch2[],inta1,inta2)
数据修改,参数为:
所要修改的数据表名,修改的判断属性值,要修改的值,修改的判断属性所在列,要修改的属性所在列
voidtjsxsjxg(charch[])
添加相应数据,添加属性时调用,在相应数据表里添加一列新数据,对应新属性
char*yhpp(charch[],charch1[])
用户匹配,参数为:
用户名,用户口令,匹配成功后,以字符串形式返回其相应权限
voidyhty(charch[],charch1[],inta1,inta2,inta3,charch3[],charch4[])
优化投影,参数为:
属性表名,数据表名,投影的三个属性所在列,投影后生成的属性表名,生成的数据表名
voidzdcrxg(chara[])
字典插入修改,新建关系时,修改字典内容
intzdcz(chara[])
字典查找,查找关系名是否存在,存在,返回“0”,否则返回“1”
voidzdsysc(chara1[])
字典索引删除,删除索引时,修改字典内容
voidzdsyxg(chara1[],chara2[])
字典索引修改,添加索引时,修改字典内容
voidzfsr(chara[])
字符输入,以分号为结束标志,输入有回车时,转换为空格处理,当检测到有多空格时,只保留一空格
程序流程图
附下页
图1.1算法流程
四、实验测试用例与结果
注:
篇幅所限,只列举一些操作用例,具体功能可运行程序测试
数据字典和三张要操作的基本表:
以user1管理员登陆:
管理员权限可进行的相应操作:
建表,插入数据:
修改数据:
添加属性:
删除数据:
查询,多关系,多条件的连接,选择,投影操作:
查询优化,执行结果与上述一致:
下页续…
建立索引,第一列为索引数据,第二列为索引域值:
实现索引上的连接,连接后的数在索引属性上据是有序的:
以后台管理员登陆,可以添加用户:
五、关键技术
列举两个较关键,比较难一点的处理函数
voidsjxg(charch[],charch1[],charch2[],inta1,inta2)//数据修改
{
FILE*f1;
charb,b2[200][200],b3[50][50],b4[200],b5[200];
inti=0,j=0,k=0,n=0;
f1=fopen(ch,"
r"
);
//要修改的数据读入二维数组
b=fgetc(f1);
while(b!
=EOF)
{
while(b!
='
\n'
)
{
b2[i][j]=b;
b=fgetc(f1);
j++;
}
b2[i][j]='
\0'
;
i++;
j=0;
b=fgetc(f1);
}
strcpy(b2[i],"
$"
//加结尾符
fclose(f1);
i=0;
while(strcmp(b2[i],"
)!
=0)//判断是否到达文件末尾
if(strcmp(dhctq(b2[i],a1),ch1)==0)//判断条件值所在行
n=0;
j=0;
strcpy(b5,b2[i]);
//提取条件值所在行
while(b5[j]!
)//扫描所在行
{
while(b5[j]!
'
{
if(b5[j]=='
{
j--;
break;
}
b3[n][k]=b5[j];
//将其以单个数据为单位,存入另一个二维数组,每行对应一个数据,这样方便对串处理
j++;
k++;
}
b3[n][k]='
n++;
k=0;
j++;
strcpy(b3[n],"
strcpy(b3[a2],ch2);
//将要修改的值直接覆盖到要修改的数据位置
}
while(strcmp(b3[n],"
=0)
strcat(b4,b3[n]);
strcat(b4,"
"
}//修改完成,把二维数组连回一维数组
strcpy(b2[i],b4);
//并将其覆盖到原数据条件值所在行,完成第一次
//进行第二行比较,直到结束
w"
=0)//将修改后的数组覆盖写回原数据文件
fputs(b2[i],f1);
fputc('
f1);
printf("
数据已修改!
\n"
}
voidsjsy(chara[],chara1[],intb1)//数据索引
charb3[200][200],b,b2[200][200],b4[200];
inti=0,n=0,j=0;
f1=fopen(a,"
=EOF)//原数据读入内存,二维数组
f1=fopen(a1,"
w+"
i=0,n=0;
while(strcmpi(b2[i],"
strcpy(b3[i],dhctq(b2[i],b1));
//将索引值所在列的第一个索引值赋给二维数组第零行
n=i;
//记录索引值所在原数据的位置
strcat(b3[i],"
itoa(n,b4,10);
//将其位置由整形转换为字符串
strcat(b3[i],b4);
//将其连到索引值后面,形成索引域值
//进行下一个索引值处理
strcpy(b3[i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 课程设计 文档
