1、1山 东 科 技 大 学课 程 设 计 任 务 书软件工程 专业 2011 级 2 班一、课程设计题目: 数据库系统课程设计 二、设计原始资料: 数据库系统概论 三、设计应解决下列各主要问题: 1.选择一种高级语言实现下列语句的功能:CREATE TABLE (, )ALTER TABLE ADD DROPMODIFY 四、设计说明书应有下列图纸: 1.实现界面图 2.流程图 3.功能结构图 五、命题发出日期: 2013 年 03 月 27 日 设计应完成日期: 2013 年 06 月 21 日 设计指导教师(签章): 系主任(签章): 2指导教师对课程的评语指导教师(签章): 年 月 日1摘
2、要本课程设计实现的是用 C+实现 SQL 语句中的 CREATE TABLE 以及 ALTER TABLE 的命令的部分功能。实现过程通过编写若干个函数一次实现了命令识别、命令格式化、命令分解、命令判断对错等功能。对于表的结构,定义了相应的 Table 类,以及 Column 类,分别表示表的内容以及表中每列的结构。由于水平有限,本次设计没有定义表级完整性约束,仅仅定义了列的完整性约束条件 PRIMARY KEY 以及 UNIQUE 代表部分列完整性约束,其他约束条件基本类似,没有做过多定义。对于每个元组中的各数据类型定义了四类 INT、DOUBLE、CHAR、CHAR(n)。由于表的元组个数
3、是不固定的,使用了 vector 来定义一个 Column 向量,实现了可以无限添加表的长度。同时由于 vector 的使用增加了存储文件的难度,重写了写入文件的操作,实现了文件的任意存储。对于命令的识别过程,使用 string 的相关操作,避免了使用 char*会产生的指针操作的复杂性。通过适当的替换将命令分解为由若干空格分隔的词组。每次识别一个词组,可以方便的识别与存储相关操作。借鉴了 Java 的编程规范,使得整体的设计显得简洁,避免了指针操作容易产生的错误,同时更容易理解设计的具体操作。关键字:vector;类;命令识别;C+;数据字典2目录1设计题目 .11.1 所选题目 .11.2
4、 设计要求 .11.3 开发环境 .12需求分析 .22.1 题目分析 .22.2 功能需求分析 .22.3 数据流程分析 .33.设计 .43.1 设计思想 .43.2 整体设计 .43.3 详细设计 .54.实现 .64.1 基本界面 .64.2 输入建表命令 .64.3 修改语句 .75.总结 .86.参考文献 .9附录 .1011设计题目1.1 所选题目1.选择一种高级语言实现下列语句的功能:CREATE TABLE (, )ALTER TABLE ADD DROPMODIFY 1.2 设计要求(1) 能够以命令方式执行; (2) 能够以程序方式执行;(3) 提供课程设计报告。1.3
5、开发环境操作系统: Windows 7;集成开发工具:Code:Blocks 10.05;开发语言: C/C+。22需求分析2.1 题目分析脱离已有数据库环境,采用 C+实现 SQL 语言中的 CREATE TABLE 以及 ALTER TABLE 中的如下功能。CREATE TABLE (, )ALTER TABLE ADD DROPMODIFY 例:(1) 建立一个课程表Cno:课程编号;Cname:课程名; Ccredit:学分。CREATE TABLE Course(Cno DOUBLE PRIMARY KEY,Cname CHAR(40),Ccredit INT);系统执行上面的 C
6、REATE TABLE 语句后,就在数据库中建立一个新的空“课程”表“Course” ,并将有关“课程”表的定义及有关约束条件存放在数据字典中。(2) 修改基本表修改“Course”表,增加“学时”列,其数据类型为整型。ALTER TABLE Course ADD Ctime INT;2.2 功能需求分析用 CREATE TABLE 语句创建基本表:建表的同时定义与该表有关的完整性约束条件,并将这些完整性约束条件存入到系统的数据字典里。 3用 ALTER TABLE 语句修改基本表:ADD 子句用于增加新列和新的完整性约束条件,DROP 子句用于删除指定的完整性约束条件,MODIFY 子句用于
7、修改原有的列定义,包括修改列名和数据类型。2.3 数据流程分析用户根据自己的需求,定义自己的数据表名及各个属性组及其数据类型,程序将数据表信息存入文件。数据表创建完成后用户可通过数据表的修改功能对表进行增、删、改的操作,以添加或修改表的信息,并存入文件。开始输入 SQL 命令SQL 命令是否匹配YN依据命令建立基本表或者修改基本表结束Y图 143.设计3.1 设计思想(介绍 DBMS 原型系统具有的功能以及性能要求)将 DBMS 的 CREATE 语句和 ALTER 语句的命令分别用 C+中的函数实现,建立几个头文件,实现如下功能:main.h /程序入口并定义对输入字符串的处理myTable
8、.h /包含实现建立表以及修改表的函数myFunc.h /定义一些关键字以及相应操作关键字的函数myFile.h /实现向文件中写入数据以及读取文件数据myClass.h /定义表的结构以及表中列的结构catchType.h /定义了一个判断表中数据类型的函数3.2 整体设计开始输入命令并对命令的进行格式化处理CREATE?Y ALTER?N执行 CreatProc 建表在读取命令过程中出现错误就结束程序,并返回相应错误,最终无错误就建立表,并存储在D:TAB.xdb 中读取 D:TAB.xdb 文件,在读取命令过程中出现错误就结束程序,并返回相应错误,最终无错误就建立表,进行修改表并重新存储
9、Y输出命令错误,并要求重新输入53.3 详细设计数据存储结构(介绍关系表的物理存储结构、数据编码方法)class Column /表中每一列的结构public:Column() /构造函数进行初始化strLength = 0;priKey = 0;uniKey = 0;string cname; /该列的字段名string attribute; /该列的属性int strLength; /当属性为字符串时规定字符串/不允许超出 strLength 的长度int priKey; /当为 1 表示为 完整性约束 PRIMARY KEYint uniKey; /当为 1 表示为 完整性约束 UNQUEvector intkey; /存储数值类型为 int 的数据vector chkey; /存储数值类型为 char 的数据vector doukey; /存储数值类型为 double 的数据vector charkey;/存储数值类型为 string 的数据,且规定不允/许超出 strLength 的长度;class Table /表的结构,一些具体函数实现未列出,private:string tableName;int colLen;public:vector col;;bool CreatProc(const string 为例,如图 4