




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书设计题目:用C语言实现一个可以创建、修改数据表的DBMS课程设计任务书学院课程设计题目:用C语言实现一个可以创建、修改数据表的DBMS课程设计主要参考资料:数据库系统概论(第四版)——高等教育出版社C++程序设计——清华大学出版社数据结构——清华大学出版社课程设计应解决的主要问题:txt文件中数据的读写等操作设计正确的数据结构存储表的属性结构解决命令识别问题C语言中函数定义时相互调用的问题课程设计相关附件(如:图纸、软件等):项目主要源代码:数据库课程设计\dbms0\LDBMS.DSW项目可执行文件:数据库课程设计\dbms0\Debug\LDBMS.exe执行结果截图任务发出日期:2011/4/29课程设计完成日期:2011/7指导教师签字:系主任签字:指导教师对课程设计的评语指导教师签字:___年月日课程设计 第5页设计要求:选择一种高级编程语言实现一个具有查询功能的简单DBMS。具体要求如下:内容:实现:CREATETABLE<表名>(<列名><数据类型>[<列完整性约束条件>][,<列名><数据类型>[<列完整性约束条件>]…][,<表完整性约束条件>]);实现:ALTERTABLE<表名>[ADD<新列名><数据类型>[<列完整性约束>]][DROP<列完整性约束名>][MODIFY<列名><数据类型>]。要求:设计和实现表的物理存储结构;语句以命令行和图形化界面两种形式实现;分析设计内容,画出程序流程图,设计表的存储结构;提交课程设计报告。需求分析:1.功能分析使用高级语言写一个表创建及修改程序,模拟实现DBMS的一部分功能,将主要实现两种功能:数据表定义和创建,数据表的更改。要求支持标准SQLDDL语句CREATETABLE(创建新数据表) ALTERTABLE(更改数据表结构)用户可根据输入提示模拟创建表,修改表的操作,程序对输入语句进行判断确定要执行哪种操作并完成用户命令要求。创建表:主要是通过用户输入数据库语言相关语句进行分析,确定输入相关信息语句正确。分析用户输入语句成分,提取表名、新建的列名及属性值并存入相关文件。修改表:主要是通过用户输入数据库语言相关语句进行分析,确定输入相关信息语句正确。分析用户输入语句成分,提取表名、列名,确定输入正确,进而修改相关列的属性,最好把修改后的表信息存入文件。2.语句功能(1)SQL语言使用CREATETABLE语句定义基本表,其基本格式为:CREATETABLE<表名>(<列名><数据类型>[<列完整性约束条件>][,<列名><数据类型>[<列完整性约束条件>]…][,<表完整性约束条件>]);建表的同时通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统中,当用户操作表中数据时由RDBMS自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。(2)SQL语言用ALTERTABLE语句修改基本表,其一般格式为:ALTERTABLE<表名>[ADD<新列名><数据类型>[<列完整性约束>]][DROP<列完整性约束名>][MODIFY<列名><数据类型>];其中<表名>是要修改的基本表,ADD子句用于增加新列和新的完整性约束条件,DROP子句用于删除指定的完整性约束条件,MODIFY子句用于修改原有的列定义,包括修改列名和数据类型。3.系统开发平台及运行环境硬件要求:CPU:Pentium42.0GHz以上IBM兼容机内存:512MB以上容量显卡:32MB或以上显存之AGP接口显卡软件要求:操作系统:MicrosoftWindows2000/XP/win7开发工具:MicrosoftVisualC++6.04.数据字典名字:用户名字:用户描述:用户既是源又是宿,作为源输入建表或修改表需要的信息,作为宿系统就会返给用户建立好的表结构。输入流:表名,列名,约束条件,数据类型输出流:输出表名字:名字:CREATETABLE加工号:1描述:将分离出的建表需要的重要数据建立成一个表输入数据流:关键字,表名,列名,数据类型,约束条件输出数据流:表结构,表结构存储文件加工激发条件:收到“关键字”,“表名”,“列名”,“数据类型”,“约束条件”名字:名字:MODIFY加工号:2.1描述:给已经存在的表中的列改变数据类型、约束条件或数据输入数据流:关键字,表名,列名,数据类型,表结构存储文件输出数据流:表结构,表数据,表结构存储文件,表数据存储文件加工激发条件:收到“关键字”,“表名”,“列名”,“数据类型”名字:名字:ADD加工号:2.2描述:给已经存在的表添加一列输入数据流:关键字,表名,列名,数据类型,约束条件,表结构存储文件输出数据流:表结构,表数据,表结构存储文件,表数据存储文件加工激发条件:收到“关键字”,“表名”,“列名”,“数据类型”,“约束条件”名字:名字:DROP加工号:2.3描述:给已经存在的表删除一列输入数据流:关键字,表名,列名,数据类型,约束条件,表结构存储文件输出数据流:表结构,表数据,表结构存储文件,表数据存储文件加工激发条件:收到“关键字”,“表名”,“列名”,“数据类型”,“约束条件”5.数据流程图总体框架数据库操作界面创建表创建表修改表操作结果进行保存并输出到屏幕上设计思想:系统设计流程图 数据库操作界面CREATEALTER操作结果进行保存并输出到屏幕上MODIFYADDDROP系统启动时,激活输入语句界面。输入相关数据库系统语句后对存储的文件进行初始化,导入创建新表的相关信息。继续执行程序,输入修改表语句,通过验证后将相关信息自动存入文件中。继续执行程序,输入删除表完整性约束条件,通过验证后将修改后的表信息存入文件中。各项功能执行完毕后,重新进入循环状态。由退出系统事件激活关闭系统主界面,退出系统。主要功能的程序流程图创建表操作对输入相关语句进行判断,提取表名、列名及属性,存入文件中。打开表文件输入创建表执行语句判断语句正确是否执行创建表操作将表信息显示于屏幕上,并存入文件中NY修改表操作对输入相关语句进行判断,提取表名、列名及属性。根据输入语句构成,提取要修改的列名,修改相关列的属性。打开表文件输入修改表执行语句判断语句正确是否执行修改表中相关列操作将表信息显示于屏幕上,并存入文件中NY算法设计本课题是用C++语言,使用来MicrosoftVisualC++6.0设计的。1.数据结构:设计一个结构体,存储表的相关信息。structL{intsg;//属性号charln[10];//nameoftablestructSs[5];//属性structRr[10];//约束};设计一个结构体,存储表结构(属性)的相关信息。structS{//属性charsname[10];//属性名chark[10];//数据类型intl;charZf;//主键};2.本系统涉及到的主要函数有:(1)main主函数主函数负责协调各函数之间的调用关系(2)CREATE_TABLE对于合法的路径,表名,利用指针将指令中的数据存入结中,表的创建。(3)MODIFY修改属性列,完成对表的更新,并将更新后的表输出。(4)DROP删除属性列,完成对表的更新,并将更新后的表输出。(5)ADD增加属性列,完成对表的更新,并将更新后的表输出。(6)list在对输入的各项数据进行处理后便要输出生成的表或者已经修改好表。此函数较为简单,复杂把各项数据输出,得到预期的结果。主要源程序:主菜单。voidMAIN_MENU(){charc,key;do{printf("\n您选择的是“向导模式”,请选择:\n\n");printf("1查看现有表\n");printf("2创建表\n");printf("3修改属性\n");printf("4添加属性\n");printf("5删除属性\n");printf("6退出程序\n");printf("\n请输入序号:");c=getchar();while(c=='\n'){c=getchar();}//未输入选项则一直等待if(c=='1'){list();}if(c=='2'){CREATE_TABLE();}if(c=='3'){MODIFY();}if(c=='4'){ADD();}if(c=='5'){DROP();}if(c=='6'){getchar();printf("感谢您的使用,按“回车”退出!\n");getchar();exit(0);}//用getchar,以显示一段时间}while(c!='7');}创建表操作。 voidCREATE_TABLE(){//创建表未单独创建文件存储,而是放在结构体变量里面charc,ch,str[10];intj,m=0,n,t,n2=0,n3=0,n4=0,n5=0;intflag=OpenList();FILE*fp;printf("\n输入存储路径,如:f:/");gets(label.lu);while(strcmp(label.lu,"")==0){gets(label.lu);}printf("\n请输入表名:");gets(label.ln);while(strcmp(label.ln,"")==0){gets(label.ln);}//若未输入strcpy(str1,"");strcpy(str1,label.lu);strcat(str1,label.ln);printf("\n是否输入属性?y/n:");ch=getchar();while(ch=='y'){printf("\n请输入属性名:");getchar();gets(label.s[n2].sname);//n2:第n2个属性printf("\n请选择数据类型:intcharfloat:");gets(label.s[n2].k);printf("\n是否设置为主键?:y/n:");label.s[n2].Zf=getchar();getchar();n2++;label.sg=n2;//属性个数printf("\n继续输入属性?y/n:");ch=getchar();}修改表操作。 MODIFY(){//修改表结构charstr[20]={""};intjcha,shu=1,ls=0,lr=0,lu=0,v=0;intv1,v2,v3,v4;FILE*fp2;listL();Clear(tR2);//?if((fp2=fopen(str1,"r"))==NULL){printf("can'topenthefile%s",str1);exit(0);}while(fread(&label,sizeof(label),1,fp2)!=0){printf("\n表名:%s\n",label.ln);while(ls<label.sg){//列出属性printf("%d:",shu);shu++;printf("%s",label.s[ls].sname); printf("(%s",label.s[ls].k); printf("%d)\t",label.s[ls].l);ls++;}}fclose(fp2);printf("\n选择要更改的属性序号:");scanf("%d",&v);v--;v1=0;strcpy(tR2.ln,label.ln);strcpy(tR2.lu,label.lu);while(v1<label.sg){if(v1<v){strcpy(tR2.s[v1].sname,label.s[v1].sname);strcpy(tR2.s[v1].k,label.s[v1].k);tR2.s[v1].l=label.s[v1].l;}if(v1==v){printf("\n请输入属性名:");getchar();gets(tR2.s[v1].sname);printf("\n请选择数据类型:intfloatchar");printf("\n请输入:");gets(tR2.s[v1].k);//printf("\n请输入数据长度:");gets(str);tR2.s[v1].l=atoi(str);}if(v1>v){strcpy(tR2.s[v1].sname,label.s[v1].sname);strcpy(tR2.s[v1].k,label.s[v1].k); tR2.s[v1].l=label.s[v1].l;}v1++;}tR2.sg=label.sg;v3=0;while(v3<label.rg){tR2.r[v3].number=label.r[v3].number;v2=0;while(v2<label.ug){if(v2<v){if(tR2.s[v2].k[0]=='c')strcpy(tR2.r[v3].u[v2].cd,label.r[v3].u[v2].cd);if(tR2.s[v2].k[0]=='i')tR2.r[v3].u[v2].id=label.r[v3].u[v2].id;if(tR2.s[v2].k[0]=='f')tR2.r[v3].u[v2].fd=label.r[v3].u[v2].fd;}else{if(tR2.s[v2].k[0]=='c')strcpy(tR2.r[v3].u[v2].cd,label.r[v3].u[v2].cd);if(tR2.s[v2].k[0]=='i')tR2.r[v3].u[v2].id=label.r[v3].u[v2].id;if(tR2.s[v2].k[0]=='f')tR2.r[v3].u[v2].fd=label.r[v3].u[v2].fd;}v2++;}v3++;}tR2.ug=label.ug;tR2.rg=label.rg;Memoryfile();fp2=fopen(str1,"r");list2(fp2);fclose(fp2);}显示表操作。voidlist(){//显示选择的表的表名、属性 intjcha,shu=0,ls=0,lr=0,lu=0;FILE*fp2;listL();if((fp2=fopen(str1,"r"))==NULL)//str1即所选择的表{printf("can'topenthefile%slist",str1);exit(0);}fread(&label,sizeof(label),1,fp2);printf("\nfilename:%s\n",label.ln);while(ls<label.sg){printf("%s",label.s[ls].sname); printf("(%s",label.s[ls].k); printf("%d)",label.s[ls].l);ls++;}//各属性及数据类型、长度printf("\n");while(lr<label.rg){printf("%d",label.r[lr].number); lu=0; while(lu<label.ug) {if(label.s[lu].k[0]=='c') {printf("%s\t\t",label.r[lr].u[lu].cd);} if(label.s[lu].k[0]=='i') {printf("%d\t\t",label.r[lr].u[lu].id);} if(label.s[lu].k[0]=='f') {printf("%.1f\t\t",label.r[lr].u[lu].fd);} lu++;}printf("\n");lr++;}fclose(fp2);}voidlist2(FILE*fp2){ intjcha,shu=0,ls=0,lr=0,lu=0; fread(&label,sizeof(label),1,fp2);printf("\nfilename:%s\n",label.ln);while(ls<label.sg){printf("%s",label.s[ls].sname); printf("(%s",label.s[l
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年员工工资保密协议模板
- 第四单元-两、三位数除以一位数(单元测试)-苏教版数学三年级上册(含解析)-
- 期末学业水平测试题(卷)-语文三年级上册(部编版)
- 2025年黑龙江建筑职业技术学院单招职业倾向性测试题库1套
- 2025年湖南省湘潭市单招职业倾向性测试题库参考答案
- 中学非球类运动教学设计
- 专题18 电功率-2025年中考《物理》一轮复习知识清单与解题方法
- 2025年度土地承包种植与农业科技成果转化合同
- 2025年度云计算服务器采购及运维服务合同
- 2025年度员工向公司借款合同争议处理规则合同
- 北京某中学2024-2025学年九年级上学期开学考数学试卷
- 三下 第11课 《在线学习工具》教案 浙教版2023信息科技
- 2024年高考真题-英语(新高考Ⅱ卷) 含解析
- 江苏省无锡市惠山区2024年统编版小升初考试语文试卷(含答案解析)
- JGJ/T235-2011建筑外墙防水工程技术规程
- 信息科技课的跨学科主题学习PP义务教育课程方案和课程标准国家级示范培训课件
- 五年级下册英语作文训练-外研版(三起)
- 第七节碎石路基施工方案
- 三年级数学兴趣班纲要及教案
- 记者行业现状分析及发展趋势
- 江苏省南通市海安中学2025届高一下生物期末综合测试试题含解析
评论
0/150
提交评论