数据库管理系统 山东科技大学.docx

上传人:b****3 文档编号:1565548 上传时间:2022-10-23 格式:DOCX 页数:24 大小:364.15KB
下载 相关 举报
数据库管理系统 山东科技大学.docx_第1页
第1页 / 共24页
数据库管理系统 山东科技大学.docx_第2页
第2页 / 共24页
数据库管理系统 山东科技大学.docx_第3页
第3页 / 共24页
数据库管理系统 山东科技大学.docx_第4页
第4页 / 共24页
数据库管理系统 山东科技大学.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

数据库管理系统 山东科技大学.docx

《数据库管理系统 山东科技大学.docx》由会员分享,可在线阅读,更多相关《数据库管理系统 山东科技大学.docx(24页珍藏版)》请在冰豆网上搜索。

数据库管理系统 山东科技大学.docx

数据库管理系统山东科技大学

课程设计说明书

 

设计题目:

创建和修改表的定义_

专业:

计算机科学与技术班级:

级班_

设计人:

_

 

山东科技大学

2011年月日

课程设计任务书

学院信息科学与工程学院专业计算机科学与技术班级11级3班姓名薛德利

一、课程设计题目:

(1)创建和修改表的定义

(2)

(3)

二、课程设计主要参考资料:

(1)萨师煊,王珊.数据库系统概论(第三版).北京:

高等教育出版社,2000

(2)杨冬青,唐世渭,徐其钧等译.数据库系统实现.北京:

机械工业出版社,2001

(3)谭浩强.C语言程序设计.清华大学出版社,2000

三、课程设计应解决的主要问题:

(1)实现:

INSERTINTO<表名>[(<属性列1>[,<属性列2>…)]VALUES(<常量1>[,<常量2>]…)

(2)实现:

UPDATE<表名>SET<列名>=<表达式>[,<列名>=<表达式>]…[WHERE<条件>]。

(3)

四、课程设计相关附件(如:

图纸、软件等):

(1)codeblocks10.05

(2)

(3)

五、任务发出日期:

2013.6.1课程设计完成日期:

2013.6.25

指导教师签字:

系主任签字:

指导教师对课程设计的评语

 

指导教师签字:

2013年月日

一、设计要求:

设计和实现表的物理存储结构;

语句以命令行和图形化界面两种形式实现;

分析设计内容,画出程序流程图,设计表的存储结构;

提交课程设计报告。

二、需求分析:

选择一种高级语言实现一个简单的DBMS

设计实现表的物理存储结构;

三、设计思想:

由命令行输入SQL语句,通过对语句进行语法分析,分离关键字

以*.txt文件存放建立的表,一张表对应一个*.txt文件;

四、程序流程图:

程序主界面(命令行格式):

输入CREATE语句,建表:

输出表的信息:

输入alter语句add,修改:

输出表的信息:

再输入alter语句alter,修改:

输出表的信息:

再输入alter语句drop,修改:

输出表的信息:

退出

(5)主要源程序:

#include

#include

#include

#include

#include

#include

#include

usingnamespacestd;

#defineMAX1000

#defineN100

voidtolower(char*s)//将输入的大写字母转化为小写字母

{

intlen=strlen(s);

for(inti=0;i

{

if(s[i]>=65&&s[i]<=90)s[i]+=32;

}

}

structField//表中每个域的结构:

{

charname[N];

chartype[N];

intlen;

charcondition[N];

Field()

{

len=0;

name[0]=type[0]=condition[0]=0;

}

};

charsql[MAX],sqltmp[MAX];//读入的语句字符串

intread()//读入SQL语句,并进行格式化分离单词,以分号结束,ESC退出整个程序

{

charc;

inti;

for(i=0;c=getch();i++)

{

if(c==27)

exit(0);//ESC退出

if(c==8)//退格

{

i-=2;

if(i<-1)

i=-1;

system("cls");

printf("简单DBMS:

\n");

printf(":

\n");

printf("输入SQL语句:

\n");

printf(">>");

for(intj=0;j<=i;j++)

{

if(sqltmp[j]==13)

puts("");

printf("%c",sqltmp[j]);

}

continue;

}

sqltmp[i]=c;

if(c==';')

break;

if(c==13)//回车键

{

puts("");

sql[i]='';

}

elseif(c=='('||c==')'||c=='\''||c=='\n')

{

printf("%c",c);

sql[i]='';

}

elseif(c==',')

{

printf("%c",c);

sql[i]='';

sql[i+1]=',';

sql[i+2]='';

i+=2;

}

else

{

printf("%c",c);

sql[i]=c;

}

}

sql[i]=0;

printf(";");

puts("");

tolower(sql);

return0;

}

voidadd(Fieldfield,char*table_name)//向表中添加域

{

if(access(table_name,0)==-1)

{

FILE*fp=fopen(table_name,"w");//向文件写入数据

fwrite(&field,sizeof(Field),1,fp);

fclose(fp);

}

else

{

FILE*fp=fopen(table_name,"a");//向文件添加数据

fwrite(&field,sizeof(Field),1,fp);

fclose(fp);

}

}

boolcreate()//建立表的函数,一个表对应一个*.txt文件,bool为布尔型,取值false和true

{

chartmp[N];

chartable_name[N];

boolerror=false;

chartype[6][10]={"char","int","float","double","time","date"};

stringstreamss(sql);

ss>>tmp;

if(0!

=strcmp(tmp,"create"))

{

error=true;

printf("\n\'create\'输入错误!

\n");

}

else

{

ss>>tmp;

if(0!

=strcmp(tmp,"table"))

{

error=true;

printf("\n\'table\'输入错误!

\n");

}

else

{

ss>>table_name;

intlen=strlen(table_name);

strcat(table_name,".txt");

if(access(table_name,0)==0)

{

printf("表已存在,是否覆盖?

y/n\n");

charc;

c=getchar();

if(c=='n')

returnfalse;

else

remove(table_name);

}

while(true)

{

Fieldfield;

ss>>tmp;

if(tmp[0]==',')

{

add(field,table_name);

continue;

}

strcpy(field.name,tmp);

if(!

(ss>>tmp))

break;

if(tmp[0]==',')

{

add(field,table_name);

continue;

}

boolflg=false;

for(inti=0;i<6;++i)

{

if(strcmp(tmp,type[i])==0)

{

flg=true;

strcpy(field.type,tmp);

break;

}

}

if(!

flg)

{

printf("\n数据类型错误(char,int,float,double,time,date)!

\n");

error=true;

break;

}

if(field.type[0]=='c'||field.type[0]=='f'||field.type[0]=='d')

{

ss>>tmp;

if(tmp[0]==',')

{

add(field,table_name);

continue;

}

boolflg=true;

intlen=strlen(tmp);

intsum=0;

for(inti=0;i

{

if(tmp[i]>58||tmp[i]<48)

{

flg=false;

break;

}

elsesum=sum*10+tmp[i]-'0';

}

if(!

flg)

{

error=true;

printf("\n类型长度错误!

\n");

break;

}

elsefield.len=sum;

}

ss>>tmp;

if(tmp[0]==',')

{

add(field,table_name);

continue;

}

if(0==strcmp(tmp,"primary"))

{

charst[N];

ss>>st;

if(0==strcmp(st,"key"))

{

strcat(tmp,"key");

strcpy(field.condition,tmp);

}

else

{

error=true;

printf("\'key\'输入错误\n");

break;

}

}

elseif(strcmp(tmp,"unique")==0)

{

strcpy(field.condition,tmp);

}

add(field,table_name);

}

}

}

return(!

error);

}

boolalter()//修改表函数

{

chartmp[N];

chartable_name[N];

boolerror=false;

chartype[6][10]={"char","int","float","double","time","date"};

stringstreamss(sql);

ss>>tmp;

if(0!

=strcmp(tmp,"alter"))

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1