“数据库系统原理课程设计”总结报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
{
//判断表是否存在
if ( tName == ftName->first )
{
cout << "表已存在,请勿重复创建!" << endl;
cout << endl;
return 0;
}
else
{
continue;
}
}
if ( order != "(" )
{
list
vector
*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 for ( ; _itable != DBase.end(); ++_itable ) {//寻找要插入数据的表名 if ( _itable->first == itName ) {//如果相同 *DB >> temp; if ( temp == "values" ) { *DB >> temp; if ( temp == "(" ) { list< pair for ( ; _itype != _itable->second.end();