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

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

课程设计说明书

设计题目:创建和修改表的定义_ 专业:计算机科学与技术班级:级班_ 设计人:_

山东科技大学

2011年月日

课程设计任务书

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

一、课程设计题目:

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

(2)

(3)

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

(1)萨师煊,王珊. 数据库系统概论(第三版). 北京:高等教育出版社,2000

(2)杨冬青,唐世渭,徐其钧等译. 数据库系统实现. 北京:机械工业出版社,2001

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

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

(1)实现:INSERT INTO <表名>[(<属性列1>[,<属性列2> …)] VALUES (<常量1>[,<常量2>]…)

(2)实现:UPDATE<表名> SET <列名>=<表达式>[,<列名>=<表达式>] …[WHERE<条件>]。

(3)

四、课程设计相关附件(如:图纸、软件等):

(1) codeblocks 10.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

using namespace std;

#define MAX 1000

#define N 100

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

int len = strlen(s);

for(int i = 0; i < len; ++i)

{

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

}

}

struct Field //表中每个域的结构:

{

char name[N];

char type[N];

int len;

char condition[N];

Field()

{

len = 0;

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

}

};

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

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

{

char c;

int i;

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(int j = 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] = ' ';

}

else if(c == '(' || c == ')' || c == '\'' || c == '\n') {

printf("%c", c);

sql[i] = ' ';

}

else if(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);

return 0;

}

void add(Field field, 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);

}

}

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

{

char tmp[N];

char table_name[N];

bool error = false;

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

stringstream ss(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;

int len = strlen(table_name);

strcat(table_name, ".txt");

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

{

printf("表已存在,是否覆盖?y/n\n");

char c;

c = getchar();

if(c == 'n')

return false;

相关主题
相关文档
最新文档