创建表对表的修改数据库.docx
- 文档编号:13529182
- 上传时间:2023-06-15
- 格式:DOCX
- 页数:27
- 大小:492.67KB
创建表对表的修改数据库.docx
《创建表对表的修改数据库.docx》由会员分享,可在线阅读,更多相关《创建表对表的修改数据库.docx(27页珍藏版)》请在冰点文库上搜索。
创建表对表的修改数据库
课程设计说明书
设计题目数据库课程设计
专业计算机科学与技术班级
设计人学号
山东科技大学
2012年04月07日
山东科技大学
课程设计任务书
计算机 专业 5 班 马国庆
一、课程设计题目:
数据库课程设计
二、设计原始资料:
数据库系统概论,c语言程序设计,数据结构
三、设计应解决下列各主要问题:
1.CREATTABLE<表名>(<列名><数据类型>[<列完整约束条件>][<列名><数据类型>[<列完整性约束条件>]…][<表完整性约束条件>])
2.ALTERTABLE<表名>[ADD<新列名><数据类型>[<列完整性约束条件>]][DROP<列完整性约束名>][MODIFY<列名><数据类型>]。
3.要求:
①能够以命令方式执行;②能够以程序方式执行;③提供课程设计报告
四、设计说明书应附有下列图纸:
图一
五、命题发出日期:
2012-04-07 设计应完成日期:
2012-06-05
设计指导教师(签章):
系主任(签章):
指导教师对课程的评语
指导教师(签章):
年 月 日
摘要
本次设计是使用一种高级语言(C、C++、JAVA等)进行开发一中类似于DBMS的程序,主要功能包括表的建立、添加、删除、修改属性信息等基本操作。
此文档为此编写。
通过对题目的分析我使用了C语言进行编写。
将程序设计成以命令提示方式进行操作的不算很人性化的界面。
但具有操作提示(另附txt)。
此次设计包含了自己定义的几个头文件、小程序程序,利用函数调用实现主函数的实现。
自己编写了一个相当于DBMS的程序,经过不断改善能够很好的运行。
由于知识水平有限参考了前人的一些方法、技巧。
特此说明。
1.课程题目…………………………………………..7
2.设计目的…………………………………………..7
3.需求分析…………………………………………..7
a)创建一表……………………………...…….7
b)对表的修改…………………………………….7
c)数据类型的定义…………………………..….7
4.实现方式…………………………………………..8
a)算法分析……………………………………….8
b)主要函数……………………………………….9
c)程序流程图……………………………….…….9
d)详细设计……………………………………….11
5.程序实现…………………………………..………21
6.总结………………………………….…………….26
7.附录………………………………………….…….27
正文
一.课程题目
用高级语言设计一个简单的DBMS
二.设计目的
设计一个小型的的DBMS实现对表的添加修改等属性操作,加深对数据库知识的理解。
三.需求分析
1.创建一表。
(1).要求:
必须用到关键字“createtable”;常用的符号“()”、“,”
“;”;表的名字可以任意定义;定义最基本的权限:
unique、notnull、default、
check,如果列中有性别一列则需要性别只能选择“男”、“女”;列不能重名;数据类型只能是已经定义的类型;约束只能是已经定义的约束;当遇到“;”时表的建立完成。
(2).可能的错误:
有两列或多列重名;定义的类型和约束不存、关键字错误。
2.表的修改
(1).加一行、列(Insert、Altertable).所添加的与原有的不能重名;修改表中已存在一项;删除表中的一行列。
(2).可能错误的操作:
添加的表名或列已存在;字符输入错误。
3.数据类型的定义
常见的数据类型char,int,short,long等
四.实现方式
1.算法分析
编写一个简单的DBMS,能从文本文件中识别出各种命令语句:
create,select,delete,insert。
实现一个已固定属性的关系表的建立,元
组记录的插入,查找,修改,浏览,删除操作。
整体采用链表结构,节点
由结构体构成,结构体包含关系的各种属性,通过对链表的各种操作来
实现对关系表的各种操作,然后将所建的表以文本文档的形式存储在同一
2.主要成员函数
intSql_CREATE()//创建表
intSql_INSERT()//插入表
intSql_ALTER()//修改元组属性
intSql_SELECT()//查找元组
intSql_UPDATE()//查询记录
intSql_DELETE()//删除表
3程序流程图
图一
4.详细设计
(1).关于自定义的两个头文件
在程序中自定义了sql.h与dbf.h两个头文件,分别实现对函数中所用到的主函数进行定义与定义结构体变量、全局变量、宏定义等一些基本操作。
#ifndefdbf_H
#definedbf_H
#include
#include
#include
//------------宏定义--------------------------------------------------------//
#defineGET_YEAR0
#defineGET_MONTH1
#defineGET_DAY2
#defineFOX_VERISON_INFO262
#defineWIN_32
#defineMAX_FIELD_COUNTS40
//字段类型
#defineFIELD_CHAR_TYPE0x43
#defineFIELD_DATE_TYPE0x44
#defineFIELD_FLOAT_TYPE0x46
#defineFIELD_LOG_TYPE0x4C
#defineFIELD_MEMO_TYPE0x4D
#defineFIELD_NUMIC_TYPE0x4E
#defineFIELD_INT_TYPE0x49
//条件查询
#defineCON_SMALL0
#defineCON_EQUAL1
#defineCON_LARGE2
//排序
#defineCON_SORT_INCREASE0
#defineCON_SORT_DECREASE1
#defineTRUE1
#defineFALSE0
#defineBOOLint
//文件句柄
/////////////////////////Structdefinition//////////////////////////////
//文件头结构体定义
struct_DbfHead
{
chardbFlag;
charyear;
charmonth;
charday;
intrecCounts;
shortfirstRecAddr;
shortrecLen;
charundo[20];
};
typedefstruct_DbfHeadDbfHead,*pDbfHead;
//字段描述结构体定义
struct_FieldDcp
{
charfieldName[10];
charundo1;
charfieldType;
shortoffset;
charundo2[2];
charfieldLen;
charnumDecis;
charundo3[14];
};
typedefstruct_FieldDcpFieldDcp,*pFieldDcp;
//字段数据结构体定义
struct_DbfField
{
char*fieldData;
charfieldName[10];
charfieldType;
charfieldLen;
charfieldDcis;
shortoffset;
};
typedefstruct_DbfFieldDbfField,*pDbfField;
//记录结构体定义
struct_DbfRec
{
chardelFlag;
DbfFieldfield[MAX_FIELD_COUNTS];
intrealCounts;
};
typedefstruct_DbfRecDbfRec,*pDbfRec;
//dbf文件句柄定义
struct_DbfHand
{
charfilename[50];
DbfHeadheader;
DbfRecrec;
longcurRecNo;
longcurFpAddr;
FILE*fd;
};
typedefstruct_DbfHandDbfHand,*pDbfHand;
//创建DBF文件
BOOLGetNum(pDbfHandhand,char*name);
pDbfHandCreateDbf(char*filename,DbfRecrec);
//增加字段
pDbfHandAddField(pDbfHandhand,char*name,chartpye,intlen,intdec);
//修改字段属性
pDbfHandModifyField(pDbfHandhand,char*name,chartpye,intlen,intdec);
//修改记录
BOOLUpdateRec(pDbfHandhand,char*str,intfieldId,pDbfRecrec1);
//打开DBF文件
pDbfHandOpenDbf(char*filename);
//关闭DBF文件
BOOLCloseDbf(pDbfHandhand);
//删除DBF文件
BOOLRemoveDbf(pDbfHandhand);
//是否第一条纪录
BOOLIsTopRec(pDbfHandhand);
//是否最后一条纪录
BOOLIsBottomRec(pDbfHandhand);
//文件操作到第一条记录处
BOOLGotoTop(pDbfHandhand);
//文件操作到最后一条记录处
BOOLGotoBottom(pDbfHandhand);
//到指定的纪录
BOOLGotoRec(pDbfHandhand,longrecNo);
//下一条
BOOLGoNextRec(pDbfHandhand);
//上一条
BOOLGoPrevRec(pDbfHandhand);
//聚集函数
doubleJuJi(pDbfHandhand,intflag,intfieldid);
//在文件尾部增加一条纪录
pDbfHandAddRec(pDbfHandhand,pDbfRecrecord);
//在当前位置插入一条纪录
pDbfHandInsertRec(pDbfHandhand,pDbfRecrecord);
//删除当前纪录
pDbfHandDelCurRec(pDbfHandhand);
//删除指定的记录
BOOLDeleteRec(pDbfHandhand,char*str,intfieldId);
//把表中的所有的记录容清掉
pDbfHandTurnateRec(pDbfHandhand);
//修改当前纪录
BOOLModifyRec(pDbfHandhandle,pDbfRecrecord);
//得到当前纪录
pDbfRecGetCurRec(pDbfHandhandle);
BOOLGetCurRec1(pDbfHandhand,pDbfRecrec);
//得到当前纪录的第fieldId个子段
pDbfFieldGetCurField(pDbfHandhandle,pDbfRecrec,intfieldId);
//
pDbfFieldGetFiledByName(pDbfHandhandle,pDbfRecrec,char*filedName);
//
longGetRecordNO(pDbfHandhand);
BOOLSetFiledByName(pDbfHandhandle,pDbfRecrec,char*filedName,char*data,intlen);
//得到表中现有记录条数
longGetRecCounts(pDbfHandhandle);
//查找一条纪录
pDbfRecFindRec(pDbfHandhandle,char*str,intId);
//关键字查询
pDbfRecKeySearch(pDbfHandhand,char*str);
//条件查询
pDbfRecConSearch(pDbfHandhand,char*strContent,intfieldIndex,intconditionID);
//对表中一个字段的容排序
pDbfHandSortDbf(pDbfHandhand,intfieldId,intsortCon);
char*UCase(char*str);
//得到当前时间
charGetDate(intgetMode);
//得到记录长度
shortGetRecLen(pDbfRecrec);
//文件头长度
shortGetHeadLen(pDbfRecrec);
//新建文件头
pDbfHandNewDbfHead(pDbfHandhand,pDbfRecrec);
//更新文件头
pDbfHandUpdateHead(pDbfHandhand);
//写字段描述部分
pDbfHandWrFieldDcp(pDbfHandhand,pDbfRecrec);
//写文件头结束标志
voidWrtFileEnd(pDbfHandhand);
//读文件头信息
pDbfHandReadDbfHead(pDbfHandhand);
//得到字段个数
intGetFieldCount(pDbfHandhand);
//读字段描述信息
pDbfHandReadFieldDcp(pDbfHandhand);
//保存容为日期时,格式华
char*SaveDate(char*str);
//读日期时,格式化
char*ReadDbfDate(char*str);
//去掉字符串的后面空格
char*DsdStrEndSpace(char*str,intsize);
//在当前位置写一条纪录,覆盖原有容
BOOLWriteRec(pDbfHandhand,pDbfRecrecord);
(2).Sql.c
在这个.C文件中包含了几乎全部的主要操作函数。
1).voidShowBeginning();//程序运行的时候显示一个小界面
2).intstore();//对函数的输入
3).intSql_CREATE();//利用二维数组对各属性的类型进行限制;利用memset、malloc等函数对所有属性、指针进行初始化操作;
4).intSql_INSERT();//利用数组与FOR函数循环逐一的向表中添加函数
5).intSql_DELETE();//删除表,也是利用FOR循环将所有属性制空,中间包含许多约束条件。
6).intSql_ALTER();//定义fp指针,对所需要的操作进行查找,然后对所对应的模块进行修改
7).intSql_SELECT();//可以对单表、双表进行操作
8).intSql_UPDATE();
9).voidhelp();//利用while函数人性化操作,帮助用户刚更好的运行
10).intOutPut(char*t_name);
(3).dbf.c
包含许多子函数
charGetDate(intgetMode)//功能:
新建文件
//输入:
句柄,纪录
//输出:
OK,句柄;Error,NULL
BOOLWriteRec(pDbfHandhand,pDbfRecrecord)////功能:
在当前位置写一条纪录,覆盖原有容
//输入:
含有日期的字符串//
//输出:
OK,句柄;Error,NULL.
char*SaveDate(char*str)//功能:
保存容为日期时,格式华
//输入:
含有日期的字符串
//输出:
OK,格式华的字符串;Error,NULL.
pDbfHandReadFieldDcp(pDbfHandhand)//功能:
读字段描述信息
//输入:
句柄
//输出:
OK,NULL;Error,NULL.
longGetRecordNO(pDbfHandhand)//功能:
得到当前的记录号
//输入:
句柄
//输出:
OK,NULL;Error,NULL
pDbfHandUpdateHead(pDbfHandhand)//功能:
更新文件头
//输入:
句柄
//输出:
OK,句柄;Error,NULL
pDbfHandWrFieldDcp(pDbfHandhand,pDbfRecrec)//功能:
写字段描述部分
//输入:
句柄,纪录结构体指针
//输出:
OK,句柄;Error,NULL.
voidWrtFileEnd(pDbfHandhand)//功能:
写文件头结束标志
//输入:
句柄,纪录结构体指针
//输出:
无
pDbfHandReadDbfHead(pDbfHandhand)//功能:
读文件头信息
//输入:
句柄,纪录结构体指针
//输出:
OK,句柄;Error,NULL.
intGetFieldCount(pDbfHandhand//功能:
得到字段个数
//输入:
句柄
//输出:
OK,字段个数;Error,-1.)
char*DsdStrEndSpace(char*str,intsize)//功能:
去掉字符串的后面空格
//输入:
含有日期的字符串
//输出:
OK,格式华的字符串;Error,NULL.
五.程序实现
图二:
刚进入界面
图三:
输入h;查看使用说明
图四:
此时为空表
图五:
创建表(age<20-30>)
图六:
插入数据(王昌帅<20,插入失败)
图七:
修改字段属性、修改记录
图八:
选择年龄>19的
图九:
视线聚焦运算
图十:
聚焦成绩小于100为95
六.总结
这次的课程设计做起来困难重重,深刻体会到做一个软件,里面需要的很多
知识我们没有接触过,去图书馆找书、问老师的时候发现,我们学的仅仅是皮毛,还有很多东西需要我们去发掘,就算是借一本书看完它,我们还是会发现还有很多知识没有吃透,这需要我们不断的实践,不断地自学习,不断地发现问题去思考问题。
从需求分析阶段不断地搜索资料,想充分了解自己所做的课题在客户或者公司中的需求,画数据流图等等软件设计流程做起来很生疏,翻阅课本,总算整了一个像样点的需求分析,但是也不知道是不是正确,根据数据流图,不断修改需求,经过不断地测试,不断地改进,其中还是发下了不少问题,第一次做这些工作,没有任何经验,甚至无从下手,还是很老师和同学的帮忙,从中也学到了一些代码的写法,为什么要这样写,通过和同学的讨论,找到一些书本上没有的方法,如何数据绑定等等,怎样从数据库中将数据提取出来放到一个文本框或者标签,这些东西是组成界面的东西,虽然小,但是可以体现整个软件的水平,其实并不需要建多少数据库的表,写多少复杂的存储过程,是不是用了数据库函数,触发器等等,但是至少要弄明白这些东西如果操作,清晰思路才能将功能分清晰。
经过一段时间的学习与实践,个人日程管理系统基本上开发好了。
该系统具备了:
添加、修改、删除、浏览、查询信息的功能。
作为一个简单的dbms,本系统所
提供的功能的确太少了一些,仅仅只实现了一些基本的功能,有很多地方还有待
扩展和改良。
人如果没有自信,没有目标,没有信心就不可能把事情做好,当其他人都在迷茫
的时候,自己一定要坚信目标,大学毕业出去即是面临找工作,从学习这个专业,
到以后做这方面的工作都需要不断地去学习去实践,这次实践可以给我们敲一个
警钟,我们面临毕业,面临择业,需要这些实践经验,在困难面前要勇于尝试,
这是这次课程设计给我的最大感想。
七.附录
创建:
大小写:
CREATEtablestudent
(snochar(15)primarykey,
snamechar(20)unique,
sageintcheck(sage>18),
ssexchar(10),
sdeptchar(20)notnull
);
CREATEtAblestudent
(snochar(15)primarykey,
snamechar(20)unique,
sageintcheck(sagebetween20and30),
ssexchar(10),
sdeptchar(20)notnull
);
createtablestudent
(snochar(15)primarykey,
snamechar(20)unique,
sageint,
ssexchar(10),
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 创建 修改 数据库
![提示](https://static.bingdoc.com/images/bang_tan.gif)