《大型数据库技术》课程设计报告
(2010— 2011学年第 2 学期)
题目:数据导出系统
专业:信息与计算科学
班级:08级(1)班
姓名学号:林伟平 0810012117
张发双 0810012112
林麟祥 0810012128
指导教师:王琰
成绩:
数理系
年月日
数据库导出系统设计
一、设计目的
大型数据库课程设计是信计专业所开设的一门重要实践课程,主要要求学生掌握数据库技术原理和技术在实践中的应用。
本课程设计的目的是:
(1)在理论学习的基础上,动手编写程序,通过应用所学习的知识,来解决一些实际数据存储和数据处理问题。
(2)真正理解和掌握数据库存储的相关理论,具备程序设计的能力。
(3)培养学生正确的设计思想,理论联系实际的工作作风,严肃认真,实事求是的科学态度和勇于探索的创新精神,充分发挥学生的主观能动性和老师的因材施
教、严格要求相结合。
培养学生综合运用所学知识与生产实践经验、分析和解
决工程技术问题的能力。
(4)分组的形式,培养同学们的团队合作意识,分工合作意识。
二、设计内容
1 基本内容
设计一个数据导出系统,将数据库中的数据导出到文本文件(txt)中,以便在不同的数据库管理系统之间传递。
2 基本要求
(1)界面可以是B/S模式,也可以是C/S模式,编码语言任选,可以是C,也可以是Java,或ASP、JSP等;
(2)允许多个用户同时使用数据导出系统
(3)允许用户配置数据库所在机器信息(例如JDBC需要配置机器名,数据库管理系统品牌(Oracle或MS SQLServer等),数据库用户名和密码)
(4)允许用户配置需导出表的名称,导出的列名和导出的行(例如被导出的行需要满足哪些过滤条件);
(5)允许用户配置导出的文件名和导出文件所在位置;
(6)允许用户查看已有的导出文件,以及该文件的信息(例如对应表名、对应列名、过滤条件和导出时间)
(7)允许用户户用表格的方式查看文件中的内容
(8)系统必须能应对下列情况:导出列中有一列的类型是字符串类型,且某个导出
行在该列上值包含半角单引号、双引号、反斜杠、斜杠等符号。
(9)果导出的时间过久,允许用户取消本次命令,且不影响正确性。
(10)用户将已导出文件导入到另一个MS SQLServer数据库
三、总体设计
1、界面运用java语言进行编码,JDBC实现数据库的链接。
2、数据先存入数据库,再导出到txt,经txt保存,可进行查看
3、系统运行时,首先显示主界面,在主界面上可以实现以下功能:
(1)允许用户配置数据库所在机器信息(例如JDBC需要配置机器名,数据库管理系统品牌(Oracle或MS SQLServer等),数据库用户名和密码)(2)允许用户配置需导出表的名称,导出的列名和导出的行(例如被导出的行需要满足哪些过滤条件)
(3 ) 允许用户配置导出的文件名和导出文件所在位置
(4)允许用户查看已有的导出文件,以及该文件的信息(例如对应表名、对应列名、过滤条件和导出时间)
(5)允许用户户用表格的方式查看文件中的内容
四、软件设计
本设计通过软件编程使8253输出定时信号申请中断,CPU发出命令由8255的下C口输出脉宽信号来控制步进电机的走步。
电机的转动和停止则是通过8255的A0端子输出高低电平来继续或暂停8253的计数从而控制中断申请来实现的。
8253的定时时间决定了电机转动的快慢。
相对简单的硬件电路,使软件设计成为本设计课题的中心内容。
1、设计思路
控制系统分五个功能模块,分别是转速设置、转向设置、固定步数转动、连续转动、退出系统,在前四个功能块中都设置了ESC键来取消或暂停执行当前操作。
程序中同时提供五个操作界面,一个主菜单和四个子菜单界面,进行可视控制。
(1)转速设置
根据赋给计数器的计数初值,我们可以计算出步进电机各相脉宽信号的频率和电机转速,也可以反过来根据对电机转速要求,计算并调整计算初值。
这里采用的是8253的0号计数器和方波产生方式,输入时钟为f=46875hz,设计数初值为n,要求转速为0.25转/秒,对四相步进电机而言即为5步/秒,则有:
f / n = 5
n=f/5=46875/5=9375
反过来,当计数器初值确定时,决定了电机的转速,如计数初值为0时,有电机转速为1步每秒(本设计中最慢速度);当计数初值为125时,电机转速为375步每秒(本设计中最快速度)。
具体设置初值及转速见表2。
表2
步速转速按键计数初值
1 0.05 F1 46875
3 0.15 F2 15625
5 0.25 F3 9375
15 0.75 F4 3125
25 1.25 F5 1875
75 3.75 F6 625
125 6.25 F7 375
375 18.75 F8 125
(2)转向设置
在内存单元中设置一方向标志FLAG1,假设FLAG1为0时为顺时针转向,则当设置FLAG1不为0时即可使电机转逆时针转动。
判断操作在中断子程序中进行。
(3)连续转动设置
在此功能模块中,通过让8255的A0口输出高电平到8253的GATE0使其0号计数器继续工作(平常时A0口为低电平使8253的0号计数器暂停计数),并开放中断进入循环等待中断状态,在等待状态中若有键盘的‘ESC’键按下,则认为暂停要求而关闭中断和暂停8253计数回到主菜单。
需要继续原转向原速度运行,再选择此功能模块即可。
(4)固定步数转动设置
通过键盘输入0到999的十进制值来设定转动步数。
判断已转步数即中断次数是这样实现的,设置一内存单元FLAG0,中断时在中断子程序中求反,而在循环等待中断的程序中判断其有无变化,无变化继续循环,有变化则使计数寄存器CX减1后继续循环,当CX=0时退出等待中断状态,并关中断和暂停8253计数。
在这个等待程序中也判断键盘有无ESC 键按下,若有则认为暂停要求而退出。
(6)中断子程序
在中断子程序中,将值为11001100B的内存单元循环左移或右移一位,通过8255的下C口输出低四位,控制步进电机的相序变化,从而使电机连续转动。
左移或右移将使电机顺时针或逆时针转动,它由标志FLAG1来决定。
(7)菜单界面设置
利用DOS下的BIOS功能调用,设计出简单而易于操作的界面,详细设计特点请参考程序清单。
2、程序流程图
(1)主程序框图如图2
图3 中断服务子程序框图图2 主程序框图
(2)中断服务子程序框图如图3
(3)速度设置自程序和方向设置单元程序的流程比较简单,如图4,5。
(4)固定步数转动单元子程序框图如图6
(5)连续转动单元子程序框图如图7
图6 固定步数转动单元子程序框图
图7 连续转动单元子程序框图
图4 转速设置子程序框图
图5 方向设置子程序框图
(6)8253和8255初始化子程序、菜单显示子程序请参考程序清单。
六、心得体会
《微机原理与应用》课程是一门应用性很强的课程,其中包括软硬件的结合,接口技术,中断的处理。
由于平时对硬件的接触较少所以学习起来多少有些困难。
但课程中融入了实验,并且还有课程设计。
对于理论知识的理解就更深刻了。
课设的内容是步进电机的控制设计,其中包括转速设置、转向设置、固定步数转动、连续转动、退出系统。
中断子程序,菜单界面设置的设计。
程序完全是自己设计的,这与平时的实验很不同,对编程的要求很高。
而且平时的实验都是给出程序的。
这个可给我出了个难题,不过在同伴的努力下我们还是按时完成了任务。
最难的就是硬件的调试,程序明明是对的就是执行的时候有些问题,在设置步数时总是不稳定。
查了好久都没有找到问题。
最后没有办法我们就提交了,可是老师来看实验结果时却执行的很完美。
也许真的很走运吧。
通过本次课设学到很多课堂上学不到的调试知识,对Debug有了一定的了解。
通过实践也加深了对理论知识的理解。
很感谢学校给我们提供了这么好的学习机会。
七、源程序
(注:指导教师评语和成绩所在表格另起一页)。