“数据库系统原理课程设计”总结报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

“数据库系统原理课程设计”总结报告

学院

年级

专业

学号

姓名

报告日期

成绩

1、开发环境

Win7操作系统,Visual C++6.0.

2、DBMS系统架构

3、DBMS主要功能模块

1、实现SQL的建库语句,建立相应的数据库表。

2、实现表模式的修改功能:

①能够为已建立的表添加属性。

②能够从已建立的表中删除属性。

3、实现删除表功能。

4、实现创建索引的功能。

5、修改表中的数据。

6、实现SELECT语句:实现单表上的选择和投影操作。

7、建立访问权限,设定用户名及密码。

3.1 SQL语言的词法和语法分析

(1)功能介绍

基于SQL语句的词法及语法分析。

(2)相关理论

实现对输入语句的词法及语法分析。

(3)算法描述

利用SLR1文法对输入的SQL语句进行词法及语法分析(4)程序流程图

(5)测试用例与实验结果

3.2创建数据库及数据操作功能(1)功能介绍

1、实现建立数据库表结构的功能。

(1)支持整型、符点型、字符型数据。(2)以文件形式保存基本表。

2、实现输入数据库记录的功能。

3、实现删除数据库记录的功能。

4、实现修改数据库记录的功能。

5、实现显示数据库结构和内容。

6、实现在已有的关系中添加属性的功能;

7、实现从已有的关系中删除属性的功能;

8、实现删除表的功能。

(2)相关理论

主要是对文件操作,读文件、写文件的运用,验证输入的语句是否符合相应文法的规范。

(3)算法描述

创建表源代码如下:

//create table a ( name char age int )

string order;

*DB >> order;

if ( order == "create" )

{

string temp,tName,tyTemp,tyName;// tName 表名tyTemp 类型tyName 类型变量

int dataNum;

*DB >> temp;

if ( temp == "table" )

{

///create table tablename ( xx xxxx xx xxxx )

*DB >> tName;

for (list > > > >::iterator ftName = DBase.begin(); ftName != DBase.end(); ++ftName)

{

//判断表是否存在

if ( tName == ftName->first )

{

cout << "表已存在,请勿重复创建!" << endl;

cout << endl;

return 0;

}

else

{

continue;

}

}

if ( order != "(" )

{

list > > attribute;//属性名+数据

vector tyData;//数据

*DB >> temp;

if ( temp == "(" )

{

*DB >> tyName;

while( tyName != ")" )

{

*DB >> tyTemp;

if ( tyTemp != "int" && tyTemp != "char" && tyTemp != "float" && tyTemp != "double" )

{

cout << "数据类型错误!" << endl;

cout << endl;

return 0;

}

attribute.push_back(make_pair(tyName,tyData));//绑定属性名+数据

*DB >> tyName;

}

DBase.push_back(make_pair(tName,attribute));//绑定表名+(属性名+数据)

cSaveTable << tName << endl;

cout << "表" << " " << "《" << tName << "》" << " " << "创建成功!" << endl;

cout << "数据保存完毕!" << endl;

cout << endl;

return 0;

}

else

{

cout << "Error:缺少符号" << endl;

cout << endl;

return 0;

}

}

else

{

cout << "Error:缺少表名!" << endl;

cout << endl;

return 0;

}

}

插入数据源代码如下:

else

{

if ( order == "insert" )

{

//insert into a values ( xx xx )

string temp,itName,ityData;

*DB >> temp;

if ( temp == "into" )

{

*DB >> itName;

list

list > > > >::iterator _itable = DBase.begin();

for ( ; _itable != DBase.end(); ++_itable )

{//寻找要插入数据的表名

if ( _itable->first == itName )

{//如果相同

*DB >> temp;

if ( temp == "values" )

{

*DB >> temp;

if ( temp == "(" )

{

list< pair > >::iterator _itype = _itable->second.begin();

for ( ; _itype != _itable->second.end();

相关文档
最新文档