超经典miniDBMS-含文档和源代码.docVIP

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

《数据库管理系统原理与设计》课程设计

华中农业大学计算机科学系11级

学号:20113102005**姓名:魏*

20113102005**何*

20113102005**陶*

一、系统主要功能模块

CreateSchemaRcg():识别CREATESCHEMA语句,并记录紧跟其后的模式(将被创立文件夹)名称。

CreateTableRcg():识别CREATETABLE语句,记录紧跟其后的表名称并修改标志Flag。

CREATETABLE():根据CreateTableRcg()记录的表名在指定目录下创立文本以保存表的根本信息。

InsertRcg():识别ISERT语句,记录被插入表的表名并修改标志Flag。

INSERT():根据InsertRcg()中记录的表名,在相应表〔文本〕中按一定的规定插入相关信息。

SelectRcg():识别SELECT语句,记录要选的属性及所属表的表名,并且修改标志Flag。

SELECT():根据SelectRcg()中记录的相关内容在指定目录下创立文本以保存查询的内容。

DropTableRcg():识别DROP语句,记录要删除的表的表名并且修改标志Flag。

DROPTABLE():根据DropTableRcg()中的记录删除相应得表〔文本〕。

DropSchemaRcg():识别DROPSCHEMA语句,记录要删除的模式名称并修改标志Flag。

DROPSCHEMA():根据DropSchemaRcg()中的记录删除相应的模式。

EXIT():识别EXIT语句并修改标志Flag。

简单的异常处理机制,如有语法错误提示错误并给用户重新输入的时机。

二、技术路线和实现方法

技术:1.字符串处理:SQL语句以字符串形式接受,然后进行匹配,匹配失败提示错误信息,假设匹配成功那么进入相应功能模块,对字符串进行解析,抽取其中关键单词存入事先定义好的容器内,然后进行相应操作。

2.文件操作:创立目录〔创立文件夹〕、在指定目录下创立文本文件、向指定目录下的文件内写入内容、从指定目录下的文本中读取内容、在指定目录下删除指定文件、删除指定目录〔该目录必须为空,否那么先递归删除目录下的文件或文件夹,再删除该目录〕。

3.参数的传递:全局变量,局部变量交替使用,地址传递和值传递。

4.程序整体架构模块化思路清晰,对于每个操作都有功能两个模块,一个进行匹配,一个那么在匹配成功的根底上完成操作。

5.其中参加一些包括路径的拼接、界面简单处理等

实现方法:1.对字符串的解析:程序内部有事先定义好的标准语句

如CREATESCHEMAschemaname

CREATETABLEtablename

INSERT等。

在接受字符串后,将标准语句放到字符串中匹配,如果匹配成功就返回程序要选择的操作类型和相关文件信息。在操作模块中再对语句进行深度剖析,抽取要进行操作的详细信息。如:CREATETABLESTUDENT

(

IDCHAR(10),

NAMECHAR(12),

AGEINT,

MERCHAR(5),

COURSECHAR(10)

);

创立一个结构体数组

structList{

charListName[10];//存放ID,NAME等属性信息;

charValueType[10];//存放属性对应值的类型如CHAR或INT;

intLen;//记录值的大小长度如char(10)长度限制为10个字符;

};

根据语句规那么从中抽取出相关信息存放到结构体数组中,接下来就能从数组中取出相关信息进行具体操作。

文件操作:这其实是一件相当麻烦的一件事情,难点在于我们抽取得到的文件夹和文件路径都存在字符串变量中,并且仅仅是文件和文件夹得最后一层目录,要得到文件、文件夹的完整目录就要对目录进行拼接,所以先给模式指定一个目录,之后该模式下建的表就存在该目录下,再对文件操作的过程中一般参数都是直接路径而不是变量表示,可以用fstream文件流操作,也可以用系统命令system等其他方法。

在对匹配成功后选择操作过程采用switchcase结构:减少了不必要的匹配过程和操作过程降低了时间复杂度

文档评论(0)

liuzhouzhong + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档