数据库课程设计 用C++实现SQL语句中的CREATE TABLE以及ALTER TABLE的命令的部分功能.doc
《数据库课程设计 用C++实现SQL语句中的CREATE TABLE以及ALTER TABLE的命令的部分功能.doc》由会员分享,可在线阅读,更多相关《数据库课程设计 用C++实现SQL语句中的CREATE TABLE以及ALTER TABLE的命令的部分功能.doc(29页珍藏版)》请在沃文网上搜索。
1、山 东 科 技 大 学课 程 设 计 任 务 书软件工程 专业2011 级 2班一、 课程设计题目:数据库系统课程设计 二、 设计原始资料:数据库系统概论 三、 设计应解决下列各主要问题:1.选择一种高级语言实现下列语句的功能:CREATE TABLE (, )ALTER TABLE ADD DROPMODIFY 四、 设计说明书应有下列图纸: 1.实现界面图 2.流程图3.功能结构图五、命题发出日期:2013年03月27日 设计应完成日期:2013年06月21日 设计指导教师(签章):系主任(签章):指导教师对课程的评语指导教师(签章):年月日25摘要本课程设计实现的是用C+实现SQL语句中
2、的CREATE TABLE以及ALTER TABLE的命令的部分功能。实现过程通过编写若干个函数一次实现了命令识别、命令格式化、命令分解、命令判断对错等功能。对于表的结构,定义了相应的Table类,以及Column类,分别表示表的内容以及表中每列的结构。由于水平有限,本次设计没有定义表级完整性约束,仅仅定义了列的完整性约束条件PRIMARY KEY以及UNIQUE代表部分列完整性约束,其他约束条件基本类似,没有做过多定义。对于每个元组中的各数据类型定义了四类INT、DOUBLE、CHAR、CHAR(n)。由于表的元组个数是不固定的,使用了vector来定义一个Column向量,实现了可以无限添
3、加表的长度。同时由于vector的使用增加了存储文件的难度,重写了写入文件的操作,实现了文件的任意存储。对于命令的识别过程,使用string的相关操作,避免了使用char*会产生的指针操作的复杂性。通过适当的替换将命令分解为由若干空格分隔的词组。每次识别一个词组,可以方便的识别与存储相关操作。借鉴了Java的编程规范,使得整体的设计显得简洁,避免了指针操作容易产生的错误,同时更容易理解设计的具体操作。关键字:vector;类;命令识别;C+;数据字典目录1设计题目11.1所选题目11.2 设计要求11.3 开发环境12需求分析22.1题目分析22.2功能需求分析22.3数据流程分析33.设计4
4、3.1 设计思想43.2 整体设计43.3 详细设计54.实现64.1 基本界面64.2 输入建表命令64.3 修改语句75.总结86.参考文献9附录101设计题目1.1所选题目1.选择一种高级语言实现下列语句的功能:CREATE TABLE (, )ALTER TABLE ADD DROPMODIFY 1.2 设计要求(1) 能够以命令方式执行; (2) 能够以程序方式执行;(3) 提供课程设计报告。1.3 开发环境操作系统: Windows 7;集成开发工具:Code:Blocks 10.05;开发语言: C/C+。2需求分析2.1题目分析脱离已有数据库环境,采用C+实现SQL语言中的CR
5、EATE 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);系统执行上面的CREATE TABLE语句后,就在数据库中建立一个新的空“课程”表“Course”,并将有关“课程”表的定义及有关约束条件存放在数据字典中。(2) 修改基本表修改“Course”表,增加“学时”列,其数据
6、类型为整型。ALTER TABLE Course ADD Ctime INT;2.2功能需求分析用CREATE TABLE语句创建基本表:建表的同时定义与该表有关的完整性约束条件,并将这些完整性约束条件存入到系统的数据字典里。 用ALTER TABLE语句修改基本表:ADD子句用于增加新列和新的完整性约束条件,DROP子句用于删除指定的完整性约束条件,MODIFY子句用于修改原有的列定义,包括修改列名和数据类型。2.3数据流程分析用户根据自己的需求,定义自己的数据表名及各个属性组及其数据类型,程序将数据表信息存入文件。开始数据表创建完成后用户可通过数据表的修改功能对表进行增、删、改的操作,以添
7、加或修改表的信息,并存入文件。N结束依据命令建立基本表或者修改基本表SQL命令是否匹配输入SQL命令YY图13.设计3.1 设计思想(介绍DBMS原型系统具有的功能以及性能要求)将DBMS的CREATE语句和ALTER语句的命令分别用C+中的函数实现,建立几个头文件,实现如下功能:main.h /程序入口并定义对输入字符串的处理myTable.h /包含实现建立表以及修改表的函数myFunc.h /定义一些关键字以及相应操作关键字的函数myFile.h /实现向文件中写入数据以及读取文件数据myClass.h /定义表的结构以及表中列的结构catchType.h /定义了一个判断表中数据类型的
8、函数3.2 整体设计CREATE?开始输入命令并对命令的进行格式化处理输出命令错误,并要求重新输入NYALTER?执行CreatProc建表在读取命令过程中出现错误就结束程序,并返回相应错误,最终无错误就建立表,并存储在D:TAB.xdb中Y读取D:TAB.xdb文件,在读取命令过程中出现错误就结束程序,并返回相应错误,最终无错误就建立表,进行修改表并重新存储图2结束3.3 详细设计数据存储结构(介绍关系表的物理存储结构、数据编码方法)class Column /表中每一列的结构public: Column() /构造函数进行初始化 strLength = 0; priKey = 0; uni
9、Key = 0; string cname; /该列的字段名 string attribute; /该列的属性 int strLength; /当属性为字符串时规定字符串/不允许超出strLength的长度 int priKey; /当为1表示为 完整性约束PRIMARY KEY int uniKey; /当为1表示为 完整性约束UNQUE vector intkey; /存储数值类型为int的数据 vector chkey; /存储数值类型为char的数据 vector doukey; /存储数值类型为double的数据 vector charkey;/存储数值类型为string的数据,且规
10、定不允/许超出strLength的长度;class Table /表的结构,一些具体函数实现未列出,private: string tableName; int colLen;public:vector col;;bool CreatProc(const string &s)/创建基本表bool AlterProc(const string &s)/修改基本表void outFile(Table &tab) /将表tab存储到文件中void inFile(Table &tab) /从把文件中的数据读取到tab中/表中的数据存储在D:TAB.xdb中4.实现4.1 基本界面图34.2 输入建表命
11、令以CREATE TABLE Course(Cno DOUBLE PRIMARY KEY,Cname CHAR(40),Ccredit INT);为例,如图4图4文件结构见图5图54.3 修改语句ALTER TABLE Course ADD Ctime INT;见图6图6文件结构见图7图7其他修改语句(DROP、MODIFY)与词句类似,在此不再一一罗列。5.总结本次数据库课程设计用了近三个月的时间,基本实现了Create table以及Alter table的功能。对于输入命令的识别过程中用到了C+中string类型的相关知识,由于起初string不太会用导致了很多错误,通过上网查阅相关资料
12、将问题一一解决。对于表中的列,以及列中的属性的定义,用到了容器中的vector的概念。通过翻看一些实例以及多次的修改等,逐渐掌握了vector的使用方法。起初在对文件操作的时候由于没有考虑到vector的可变因素,使用了ostream中writer的操作,导致数据的丢失以及不可控制,后来通过专门写了对于表结构的存储方法将问题解决。文件存储的结构,对于用到的字符串前面都有相应的字符串的长度,方便调用。对于列完整性约束,定义了0与1,通过识别相应的数字判断是否为相应的约束条件,0代表不是,1代表是约束条件。本次课程设计借鉴了Java中的一些编程技巧,编程风格使用Java的方式,通过阅读Java相关
13、书籍使我对Java产生浓厚的兴趣,并坚定了学习Java的信念。作为软件工程的学生,在本次课程数据过程中感觉自己的编程水平严重不足,缺少锻炼。此次的课程设计让我获益匪浅,并且学会了对待问题只是细心还不够,还需要有足够的耐心才能最终做出满意的作品。6.参考文献1 数据库系统概论第四版 王珊 萨师煊编著 高等教育出版社2 疯狂Java讲义第二版 李刚编著 电子工业出版社3 C+面向对象程序设计第二版 杜茂康 李昌兵 曹慧英 王永编著 电子工业出版社附录程序代码:main.cpp#include #include #include #include #include #include myTable.
14、husing namespace std;int main() string o_str,InputString; string str_1; vector str_list; / 存放分割后的字符串 char yes_no; do system(cls); cout * endl; cout CREATE TABLE (endl ,endl endl .);endlendl ALTER TABLE ADD endl ALTER TABLE DROP endl ALTER TABLE MODIFY endl; cout * endlendl t%endl t数据类型为:INT,CHAR,DOU
15、BLE,CHAR(n)endl t列完整性约束条件为:PRIMARY KEY,UNIQUEendl t%endlendl; cout 请输入SQL命令,不区分大小写,以;结束,可以任意换行:endl; getline(cin,InputString,;); int temp = (int)InputString.size(); for(int i=0; itemp; i+) if(InputString.at(i)=n) InputString.replace(i,1,1, ); if(InputString.at(i)=() InputString.replace(i,1, ( ); i+=
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库课程设计 用C+实现SQL语句中的CREATE TABLE以及ALTER TABLE的命令的部分功能 数据库 课程设计 C+
链接地址:http://www.wodocx.com/p-856794.html