数据库课程设计说明书设计简易的数据库管理系统dbms

上传人:shaoy****1971 文档编号:108167379 上传时间:2019-10-22 格式:DOC 页数:33 大小:2MB
返回 下载 相关 举报
数据库课程设计说明书设计简易的数据库管理系统dbms_第1页
第1页 / 共33页
数据库课程设计说明书设计简易的数据库管理系统dbms_第2页
第2页 / 共33页
数据库课程设计说明书设计简易的数据库管理系统dbms_第3页
第3页 / 共33页
数据库课程设计说明书设计简易的数据库管理系统dbms_第4页
第4页 / 共33页
数据库课程设计说明书设计简易的数据库管理系统dbms_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《数据库课程设计说明书设计简易的数据库管理系统dbms》由会员分享,可在线阅读,更多相关《数据库课程设计说明书设计简易的数据库管理系统dbms(33页珍藏版)》请在金锄头文库上搜索。

1、一、 设计要求:(1) 设计内容创建和修改表的定义:1、实现:CREATE TABLE (, );2、实现:ALTER TABLE ADD DROPMODIFY 。(2) 设计要求1、设计和实现表的物理存储结构;2、语句以命令行和图形化界面两种形式实现;3、分析设计内容,画出程序流程图,设计表的存储结构;4、提交课程设计报告。(3) 任务步骤1、分析命令语句,得到表名、列名和数据类型等信息;2、根据命令中的关键词确定表和字段的属性;3、创建一个表文件,写入表结构信息;4、打开一个表文件,修改表结构信息;5、演示建立了一个表,并修改了表结构。二、 需求分析:数据库系统能够有效地组织和管理大量的数

2、据。研究数据库管理系统的实现技术,对于掌握数据库系统的原理和技术,了解数据库系统的内部结构,开发高效的数据库应用系统,具有重要意义。在建立了数据库之后,首先需要建立表,之后才能进行记录的插入。这个程序的设计就是实现创建和修改表的定义。三、 设计思想:(1)总体思路此课程设计主要要完成的任务是创建和修改表的定义,因此程序中共包含四个可选项:“新建表”、“修改表”、“显示表的信息”、“保存操作并退出”。另外,由于是数据库的操作,因此需要将建立的表的信息存储,在执行程序时应该调用已存储的表的信息,并且应该有日志文件以记录对表的操作。下面依次介绍主要结构、保存表信息、提取表信息、日志文件和主菜单中的四

3、个选项;(2)主要结构1、每一个都有一个固定结构,因此我首先建立了一个表的结构体,具体形式如下:typedef structchar table_name10;/表名 int property_num;/属性的个数 char property_name1000010;/属性名 int property_type1000;/属性类型(1=int,2=char) int property_null100;/属性是否为空(1=允许,2=不允许) int property_key10;/是否主码(1=是主键,2=不是主键)TABLE;2、我用一个TABLE型的数组将所有的表联系在一起,具体定义为TAB

4、LE table10000;3、定义一个int型变量记录表的个数,具体定义为int table_num=0。(3)保存表信息首先打开或新建一个文本文档,取名为table.txt。由于执行此程序时可能对之前存在的表进行内容或结构的修改,如果对表进行修改之后直接在table.txt中存储此表的原位置进行比较麻烦,因此,在保存表信息的处理上,我采用了一种较为简单的办法,即在对表进行所有的操作之后,将表信息存储到table.txt中,覆盖掉原来已经存储的表的信息。这样则只需要一次存储就可以。其次,储存表信息时,我采用的方法是首先存储表的个数,然后按照表的个数依次循环保存每一个表的信息。在保存每一个表的

5、信息时,首先保存这个表的表名,然后存储这个表所拥有的属性个数,然后按照属性的个数依次循环保存每一个属性的性质。这样在提取的时候就比较简单。(4)提取表信息由于保存表信息时采用一定技巧,因此提取时只需要按照保存表信息的思路进行提取就可以了。首先第一个提取出来的是里面保存的表的个数。然后按照表的个数依次循环提取每一个表的信息。在提取每一个表的信息时,首先提取的是这个表的表名,然后提取这个表所拥有的属性个数,然后按照属性的个数依次循环提取每一个属性的性质。这些提取的表的信息依次存储在table0、table1中。(5)日志文件在进行每项操作时都需要将操作记录到日志文件中,因此写入日志文件并没有一个特

6、意制定的函数,而是在每一步操作后都有相应的语句记录相应的操作,例如,在打开程序进行读取表信息后需要记录“读取数据并初始化各项信息”。(6)新建表1、输入表名:建表的第一步就是需要输入表名,输入完成后进行检查,此表名是否已经存在,若已存在将提示错误信息,并要求重新输入;如正确,则进行下一步。2、输入属性的个数:输入属性个数之后需要检查属性个数是否正确,即属性个数是否为非整数。若属性个数错误则将提示错误信息,并要求重新输入,按任意键就可回到输入属性个数的界面并重新输入;若正确,则进行下一步。3、输入属性名:按照上面输入的属性个数,将依次循环直到所有的属性都输入完成。输入属性性质的第一步就是输入属性

7、名。输入属性名之后,需要检查与此表中已经存在的属性的属性名是否相同,若有相同的,则将提示错误信息,并要求重新输入,按任意键就可回到输入属性名的界面并重新输入;若正确,则进行下一步。4、选择属性类型;选择属性类型之后,需要判断选择是否正确,若不正确,则将提示错误信息,并要求重新输入,按任意键就可回到输入属性类型的界面并重新输入;若正确,则进行下一步。5、选择属性是否允许为空:选择属性是否允许为空之后,需要判断选择是否正确,若不正确,则将提示错误信息,并要求重新输入,按任意键就可回到输入属性是否允许为空的界面并重新输入;若正确,则进行下一步。6、选择属性是否为主键:选择属性是否为主键之后,需要判断

8、选择是否正确,若不正确,则将提示错误信息,并要求重新输入,按任意键就可回到输入属性是否为主键的界面并重新输入;若正确,则进行下一步。属性是否为主键输入完成后还需要检查一步,若选择的属性允许为空且此属性为主键,则将属性是否允许为空改为不允许。7、依次循环3-6步,直到所有的属性全部输入完毕。将此表的信息赋值到tabletable_num中。完成表的建立,记录操作,并提示建表成功,按任意键返回主菜单。(7)修改表1、选择操作:若没有可修改的表,则显示无表可修改,否则显示可以进行的操作,并进行选择,并检查输入的选择是否正确,若不正确,则将提示错误信息,并要求重新选择,按任意键就可回到选择操作的界面并

9、重新输入;若正确,则跳到指定的操作的界面。2、修改表名:若选的是“修改表名”,则提示输入表名,输入完成后进行检查,此表名是否已经存在,若已存在将提示错误信息,并要求重新输入;如正确,则提示修改表名成功,按任意键返回主菜单,并在日志文件中记录相对应的操作。3、增加属性:若选的是“增加属性”,则依次需要输入属性名、属性类型、属性是否允许为空、属性是否为主键。输入之后也需要进行检查,检查过程如建表时类似。若不正确,则提示相应的信息,并返回输入界面重新输入;若正确,则提示增加属性成功,按任意键返回主菜单,并在日志文件中记录相对应的操作。4、删除属性:若选的是“删除属性”,则需要选择删除哪个属性,输入之

10、后进行判断,若选择不正确,则提示错误信息,并返回选择界面重新选择;如正确,则提示删除属性成功,按任意键返回主菜单,并在日志文件中记录相对应的操作。5、修改属性:若选的是“修改属性”,则需要选择修改哪个属性,输入之后进行判断,若选择不正确,则提示错误信息,并返回选择界面重新选择;如正确,则显示该属性的原性质,并且输入新性质,此处如同新增加的属性类似,并在日志文件中记录相对应的操作。(8)显示表的信息此处比较简单,若没有可显示的表,则显示无表可显示,否则将已经存在的表的信息全部显示,并提示显示表的信息完毕,按任意键返回主菜单。(9)保存操作并退出将表的信息存储到table.txt中,并退出程序。四

11、、 程序流程图:接下图接上图五、 主要源程序:(1)定义表结构体typedef structchar table_name10;/表名int property_num;/属性的个数char property_name1000010;/属性名int property_type1000;/属性类型(1=int,2=char)int property_null100;/属性是否为空(1=允许,2=不允许)int property_key10;/是否主码(1=是主键,2=不是主键)TABLE;(2)读取表信息void read_from_file()alfp1=fopen(table.txt,r);f

12、scanf(alfp1,%d,&table_num);for(int i=0;itable_num;i+)fscanf(alfp1,%s,&tablei.table_name);fscanf(alfp1,%d,&tablei.property_num);for(int j=0;jtablei.property_num;j+)fscanf(alfp1,%s,&tablei.property_namej);fscanf(alfp1,%d,&tablei.property_typej);fscanf(alfp1,%d,&tablei.property_nullj);fscanf(alfp1,%d,&

13、tablei.property_keyj);fclose(alfp1);(3)写入表信息void write_to_file()alfp1=fopen(table.txt,w);fprintf(alfp1,%dn,table_num);for(int i=0;itable_num;i+)/表fprintf(alfp1,%s %dn,tablei.table_name,tablei.property_num);for(int j=0;jtablei.property_num;j+)/属性 fprintf(alfp1,%s %d %d %dn,tablei.property_namej,table

14、i.property_typej,tablei.property_nullj,tablei.property_keyj);fprintf(alfp1,n);fclose(alfp1);(4)创建表void createtable()TABLE newtable;/用来存储新创建的表/step1:输入表名int tablename_is_right=0;while(!tablename_is_right)system(cls);gotoxy(4,3);printf(表名:);gotoxy(10,3);scanf(%s,&newtable.table_name);/判断表名是否已经存在int name_is_equal=0;for(int i=0;itable_num;i+)if(compare(newtable.table_name,tablei.table_name)=0)name_is_equal=1;if(name_is_equal=1)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号