毕业论文港口货运统计与决策支持系统的设计与实现.docx

上传人:b****6 文档编号:3475368 上传时间:2022-11-23 格式:DOCX 页数:50 大小:2.02MB
下载 相关 举报
毕业论文港口货运统计与决策支持系统的设计与实现.docx_第1页
第1页 / 共50页
毕业论文港口货运统计与决策支持系统的设计与实现.docx_第2页
第2页 / 共50页
毕业论文港口货运统计与决策支持系统的设计与实现.docx_第3页
第3页 / 共50页
毕业论文港口货运统计与决策支持系统的设计与实现.docx_第4页
第4页 / 共50页
毕业论文港口货运统计与决策支持系统的设计与实现.docx_第5页
第5页 / 共50页
点击查看更多>>
下载资源
资源描述

毕业论文港口货运统计与决策支持系统的设计与实现.docx

《毕业论文港口货运统计与决策支持系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业论文港口货运统计与决策支持系统的设计与实现.docx(50页珍藏版)》请在冰豆网上搜索。

毕业论文港口货运统计与决策支持系统的设计与实现.docx

毕业论文港口货运统计与决策支持系统的设计与实现

本科生毕业论文(设计)

题目:

港口货运统计与决策支持系统的

设计与实现

姓名:

学院:

信息科学技术学院

专业:

计算机科学与技术

班级:

计科92

学号:

指导教师:

职称:

讲师

2013年5月15日

南京农业大学教务处制

摘要…………………………………………………………………………………………2

关键词…………………………………………………………………………………………2

Abstract………………………………………………………………………………………2

Keywords……………………………………………………………………………………2

引言……………………………………………………………………………………………2

1课题研究意义及内容………………………………………………………………………2

1.1课题研究的背景与意义…………………………………………………………………3

1.2课题研究的内容…………………………………………………………………………3

2相关理论与技术基础………………………………………………………………………3

2.1ETL介绍…………………………………………………………………………………3

2.1.1ETL增量更新…………………………………………………………………………3

2.1.2ETL的数据质量………………………………………………………………………4

2.2kettle工具简介…………………………………………………………………………4

2.3oracle语句的应用………………………………………………………………………5

2.3.1oracle分析函数………………………………………………………………………5

2.3.2获得数据中的数字部分………………………………………………………………5

2.4powerbuilder的特点……………………………………………………………………6

3港口货运统计与决策支持系统分析与设计………………………………………………7

3.1需求分析…………………………………………………………………………………7

3.1.1港口物流操作流程……………………………………………………………………7

3.1.2系统目标………………………………………………………………………………7

3.2数据库设计………………………………………………………………………………7

3.2.1数据库分析……………………………………………………………………………8

3.2.2数据库结构设计………………………………………………………………………8

3.3ETL设计…………………………………………………………………………………10

3.3.1ETL分析………………………………………………………………………………10

3.3.2ETL设计………………………………………………………………………………10

3.4查询及统计功能设计…………………………………………………………………21

3.4.1查询和统计模块………………………………………………………………………21

3.4.2登录模块……………………………………………………………………………21

4港口货运统计与决策支持系统的实现…………………………………………………22

4.1ETL转换的实现…………………………………………………………………………22

4.1.1建立视图…………………………………………………………………………22

4.1.2kettle程序…………………………………………………………………………23

4.2界面实现………………………………………………………………………………25

5总结与展望………………………………………………………………………………30

致谢…………………………………………………………………………………………31

参考文献……………………………………………………………………………………31

港口货运统计与决策支持系统的设计与实现

计算机科学与技术专业学生高旻

指导老师胡滨

摘要:

如今的集装箱运输高速发展,在网络环境下的信息服务,不再仅仅是传输信息,而是越来越多的专注于提供增值信息服务。

研究箱状态信息查询和相关数据统计以支持决策分析成为趋势。

本文设计并实现了对连云港电子口岸诸多系统所涉及的数据进行抽取、转换、再造,建立一个数据底帐,在此底账的基础上对进出口箱量、中转箱量等进行统计分析,对箱和提单在整个进出口操作中各个环节的状态进行联合查询。

本文首先阐述了课题研究的背景、意义和内容,介绍了用到的主要理论知识,然后说明了数据库设计、ETL设计和界面设计。

关键词:

ETL;统计;集装箱

DesignandImplementationofPortCargoStatisticsandDecisionSupportSystem

StudentmajoringinComputerScienceandTechnologyGaomin

TutorHubin

Abstract:

Today,containertransporthasdevelopedrapidlyinthenetworkenvironment.Theinformationservicesofcontainertransportnolongerjusttransportinformation,butmoreandmorefocusonprovidingvalue-addedinformationservices.ThissubjecttransformstherawdatafromtheLianyungangEDICentertocreateadataledger,andthenstatisticsimportandexportcontainervolumeandquerystateofcontaineronthebasisofthisledger.Thispaperfirstdescribesthebackground,significanceandcontentoftheresearch.Thenthispaperwritesthemaintheoreticalknowledgeaboutthissubject.Andthenthispaperexplainsdatabasedesign,ETLdesignandinterfacedesign.

Keywords:

ETL;statistics;container

目前,在港口企业,一般都建立有运输配送系统、仓储管理系统等信息系统。

这些系统为港口企业累计了海量的业务信息。

但是,这些软件都较简单、技术含量低,不具备提取并加工所存储的信息的功能,导致不能对企业中高层的经营管理提供决策支持,无法满足日益规范化的货代行业发展。

如何使港口企业在日常生产经营过程中产生的大量经营业务数据为公司决策层在进行经营决策时发挥更大的作用,正是统计与决策支持系统所关注的问题。

所以,建立一个统计与决策支持系统就成为目前港口企业信息化建设的工作之一。

本课题便是研究港口货运统计与决策支持系统的设计与实现。

1课题研究意义及内容

1.1课题研究的背景与意义

连云港电子口岸是以港航电子数据交换业务为主的公司。

随着口岸业务数据的大规模增长,连云港电子口岸逐步建形成了网上订舱、电子提箱、电子装箱单、场站系统、理货入库单系统等诸多业务系统。

在出口业务方面,已经逐步形成了一条从订舱到放行装船的完整系统链条。

本课题研究便是基于连云港电子口岸诸多系统所涉及的数据。

如今的集装箱运输高速发展,在网络环境下的信息服务,不再仅仅是传输信息,而是越来越多的专注于提供增值信息服务。

对已有信息进行分析加工,是所得到的新信息所具有的价值明显高于原有信息,这就是信息增值服务。

这样,连云港电子口岸的仅以传送信息作为信息服务核心功能的系统就逐渐不能满足需求了。

如何对信息进行进一步的提炼以便用于增值服务中变的至关重要。

所以,研究“港口货运统计与决策支持系统的设计与实现”具有可行性和必要性。

1.2课题研究的内容

首先,对各种历史数据进行抽取、转换、再造,整理出一些有辅助决策的数据来,主要用到的是kettle工具,数据库用的是oracle。

即从各个系统里面,识别并找出最原始的数据,将这部分数据抽取出来,建立一个数据底帐;然后针对这个底帐,再回溯关联各个系统,追踪各个系统的状态变化,延时分析同步到底帐上,丰富底帐数据。

这样,底帐数据其实就是一个集装箱从录入系统、做各种业务、最后完结的一个完整周期。

对与辅助决策、或者协调各个业务系统都是有很重要的意义的。

一方面对整体的数据是一个新的认识,可以辅助决策,另一方面可以更好的协调当前运行的项目。

其次,从对已整理出的底账数据进行查询、统计,界面的软件用的是powerbuilder。

对进出口箱量、中转箱量等进行统计分析,对箱和提单在整个进出口操作中各个环节的状态进行联合查询。

一方面对整体的数据是一个新的认识,可以辅助决策,另一方面可以更好的协调当前运行的项目。

2相关理论与技术基础

2.1ETL介绍

ETL的三个字母分别代表的是extract、transform、load,即抽取、转换、加载[1]。

数据抽取即是从数据源中抽取目的系统需要的数据;数据转换即是将数据抽取中获取的数据按系统需求转换,使其成为目的系统要求的形式,并对不一致、不需要的数据进行清洗和加工;数据加载即将转换后的数据载入目的系统数据源。

ETL的核心在于T这个过程,也就是转换,而抽取和装载一般可以作为转换的输入和输出或者作为一个单独的部件,其复杂度没有转换部件高。

ETL过程一般都是批量操作,不是针对单条记录的insert、update和select等操作。

ETL原本用于构建数据仓库[2],负责将分布的、异构的数据源中的数据抽取到临时中间层中进行清洗、转换、集成,最后加载到数据仓库,成数为据挖掘的基础。

现在也越来越多地将ETL应用于一般信息系统中数据的迁移、交换和同步[3]。

2.1.1ETL增量更新

ETL过程可分为全量过程和增量过程,前者对应首次的数据集成,后者对应着数据的增量维护。

增量更新按照数据种类的不同大概可以分成四种:

只增加,不更新;只更新,不增加;即增加也更新;有删除,有增加,有更新。

这四种增量更新的思路大致相同,使用的步骤可能略有不同。

增量更新的核心问题在与如何找出自上次更新以后的数据。

方法一是使用时间戳。

在原数据库增加一个时间戳,然后在转换之后的对应表保留这个时间戳,然后每次抽取数据的时候,先读取这个目标数据库表的时间戳的最大值,把这个值当作参数传给原数据库的相应表,根据这个时间戳来做限定条件来抽取数据,抽取之后同样要保留这个时间戳。

方法二是使用触发器。

分别对insert,update,delete操作建立触发器,将源数据表中进行过这些操作的数据加入到新表,在进行ETL的过程的时候读这个新表,在读完之后将这个表里面的数据删除掉。

方法三是定时执行增量更新。

比如两个小时或每天或者一个星期进行一次更新,这个时候可以不需要在目标表中增加一个时间戳字段来判断ETL进行的最大时间,直接在取得原数据库的时间加上限定条件。

这个时候需要传一个参数,用getSystemInfo步骤来取得,而且你还可以控制时间的精度,比如到天还是到秒的时间。

但这种方法,对某时段因为某种原因没有更新的情况处理比较麻烦,可能需要手工处理回来,如果失败的情况经常发生,那还是使用在目标数据库中增加一个时间字段取最大时间戳的方式比较通用。

其他方法还有使用日志文件和使用全量数据等。

2.1.2ETL的数据质量

ETL很难保证数据的百分百准确。

数据不一定要求百分百准确,但要知道为什么不准确。

首先在数据源方面,就可能存在影响数据质量的原因,如数据源中存在数据格式错误、数据不一致、数据录入不全等。

在ETL过程要有处理这些质量有问题数据的保证。

这些问题数据,是丢弃还是处理,无法逃避。

如果没有质量保证,那么在这个过程中,错误会逐渐放大,影响下一环节。

ETL过程中也有对数据准确性产生重大影响的因素,可以分为下面几类:

1、规则描述错误。

设计人员对数据源系统理解的不充分,导致规则理解错误,这是一方面。

另一方面,是规则的描述,如果无二义性地描述规则也是要探求的一个课题。

2、ETL开发错误。

即时规则很明确,ETL开发的过程中也会发生一些错误,例如逻辑错误等。

例如对同一数据可能存在增删改三种操作时,没有为三种操作排序,而是让其同时进行,导致可能出现数据已删除却又有对其修改得操作需要执行。

3、人为处理错误。

在整体ETL流程没有完成之前,通常会手工试运行ETL过程,这可能导致误删了数据、重复装载数据等。

如果在源头不能保证比较干净的数据,那么后面的分析功能的可信度也都成问题。

2.2kettle工具简介

Kettle是一款国外开源的etl工具,纯java编写[4],可以在Window、Linux、Unix上运行,绿色无需安装,可以运行于多个平台,数据抽取高效稳定。

要运行KETTLE要求先安装JDK1.5或以上版本。

Kettle中有两种脚本文件,其一是transformation即转换,后缀为.ktr,其二为job即作业,后缀为.kjb。

transformation完成针对数据的基础转换,好比工厂里的生产流水线,每个组件相当于一个员工;job则完成整个工作流的控制,好比工厂里的管理。

如果用记事本打开文件可发现转换和作业都是xml类型文件。

作业分为分串行执行和并行执行,串行执行是先执行完其中一条线再执行另一条线,并行是两条线同时执行,同一条线上的两个步聚会先执行前面的再执行后面的,每个步骤执行结果分两种:

true(成功)/false(失败),根据返回结果可以控制流程走向。

转换是一开始所有步骤同时运行,记录会从最前端的步骤向后传递,传递到相应步骤则该记录被该步骤作相应处理,处理完成再把记录往后传递,记录传递分复制和分发两种模式。

Kettle家族目前包括4个产品:

Spoon、Pan、CHEF、Kitchen。

SPOON允许你通过图形界面来设计ETL转换。

CHEF允许创建任务。

PAN允许你批量运行由Spoon设计的ETL转换,它是一个后台执行的程序,是一个数据转换引擎,没有图形界面。

Kitchen可以运行利用XML或数据资源库描述的任务,也是一个后台运行的程序。

Kettle提供了两种资源库的选择方式:

数据库存放、本地文件存放。

数据库存放是通过数据库连接直接在数据库里面创建kettle表,表里面记录着你所做的任何保存过的记录以及转换和任务。

此方法是远程存放的方式,具有可多人共享一个资源库的优势,但是也存在资源库不稳定的缺点。

2.3oracle语句的应用

2.3.1oracle分析函数

在日常的生产环境中,我们接触得比较多的是OLTP系统即联机事务处理系统,与此不同的是OLAP系统即联机分析处理系统。

OLAP系统一般用于系统决策使用。

通常和数据仓库、数据分析、数据挖掘等概念联系在一起。

这些系统的特点是数据量大,对实时响应的要求不高或者根本不关注这方面的要求,以查询、统计操作为主。

如查找上一年度各个销售区域排名前10的员工或按区域查找上一年度订单总额占区域订单总额20%以上的客户或查找上一年度销售最好和最差的产品。

这两个例子和一般的查询有些不同,表现在:

1、需要对同样的数据进行不同级别的聚合操作;

2、需要在表内将多条数据和同一条数据进行多次的比较;

3、需要在排序完的结果集上进行额外的过滤操作。

这时,一般的select语句中的orderby和groupby便不能满足查询要求,需要用到分析函数。

分析函数允许对一个数据集进排序和筛选,这是SQL不能实现的。

分析函数通常用于计算数据累计值、数据移动值、数据中间值和输出集合报表。

分析函数通过将行分组后,再计算这些分组的值。

与聚合函数不同之处在于能够对每一分组返回多行值。

分析函数根据分析子句将行分组,一个分组称为一个窗口,每一行都对应有一个在行上滑动的窗口。

该窗口确定当前行的计算范围,窗口大小可以用多个物理行进行度量,也可以使用逻辑区间进行度量,如时间。

分析函数是在查询中除orderby外最后执行的操作,所以分析函数只能用于选择列或orderby子句,而不能用于where、groupby和having子句中。

分析函数的语法:

FUNCTION_NAME(,...)

OVER

如:

sum(sal)over(partitionbydeptnoorderbyename)asnew_alias。

其中sum就是函数名,(sal)是分析函数的参数,每个函数有0~3个参数,参数可以是表达式,例如:

sum(sal+comm);over是一个关键字,用于标识分析函数,否则查询分析器不能区别sum()聚集函数和sum()分析函数;partitionbydeptno是可选的分区子句,如果不存在任何分区子句,则全部的结果集可看作一个单一的大区;orderbyename是可选的orderby子句,有些函数需要它,有些则不需要,依靠已排序数据的那些函数,如:

用于访问结果集中前一行和后一行的LAG和LEAD时必须使用,而AVG则不需要。

在使用了任何排序的开窗函数时,该子句是强制性的,,指定了在计算分析函数时一组内的数据是如何排序的。

2.3.2获得数据中的数字部分

方法一是使用translate函数。

translate函数语法为TRANSLATE(string,from_str,to_str)。

此函数返回将from_str中的每个字符替换为to_str中的相应字符以后的string。

TRANSLATE是REPLACE所提供的功能的一个超集。

如果from_str比to_str长,那么在from_str中而不在to_str中的额外字符将从string中被删除,因为它们没有相应的替换字符。

to_str不能为空。

Oracle将空字符串解释为NULL,并且如果TRANSLATE中的任何参数为NULL,那么结果也是NULL。

将translate函数用于得数据中的数字部分的例子:

selecttranslate('23456中国3-00=.,45','0123456789'||'23456中国3-00=.,45','0123456789')fromdual;,其结果为2345630045。

方法二是自定义函数。

可以自定义一函数来获取数据中的数字部分,如:

createorreplacefunctionf_filter_str(var_strvarchar)returnvarchar

is

var_str_newvarchar2(2000);

begin

foriin1..length(var_str)loop

ifascii(substr(var_str,i,1))>=48andascii(substr(var_str,i,1))<=57then

var_str_new:

=var_str_new||substr(var_str,i,1);

endif;

endloop;

returnvar_str_new;

endf_filter_str;

运行selectf_filter_str('23456中国3-00=.,45')fromdual;,其结果也是2345630045。

方法三是用正则表达式函数regexp_replace。

Oracle正则表达式函数regexp_replace有六个参数,第一个是输入的字符串,第二个是正则表达式,第三个是替换的字符,第四个是标识从第几个字符开始正则表达式匹配且默认为1,第五个是标识第几个匹配组且默认为全部都替换掉,第六个是是取值范围。

现有字符串'23456中国3-00=.,45',想得到结果2345630045,则写为regexp_replace('23456中国3-00=.,45',’[0-9]+’,'23456中国3-00=.,45')。

2.4powerbuilder的特点

Powerbuilder是一款优秀的企业级数据库前端应用开发工具,主要特点有:

1、可视话的开发环境

Powerbuilder是一个集成的完全可视化的开发工具。

使用它可以用一种可视、直观的方式来创建应用程序所需的用户界面和数据库接口。

2、面向对象的开发工具

Powerbuilder是一种面向对象编程的快速开发工具[5]。

同绝大多数的windows应用程序一样,它采用事件驱动工作方式。

在这种方式下,程序的执行主要是由对象的各种事件来触发的——事件代码只有当与之有关的事件发生时才会被执行。

它的窗口、菜单和数据窗口等都是对象,用户也可以构造自己的对象[6]。

3、PowerScript语言

PowerScript语言是powerbuilder专用的编程语言。

这种语言是一种增强型的结构化编程语言,其基本语法要素与Pascal、C等传统结构化语言类似,而且如同BASIC语言一样简单易学。

在PowerScript中除了可以直接引用powerbuilder提供的大量函数和系统对象外,还支持大二进制对象类型和嵌入式SQL语句[7]。

4、独一无二的数据窗口技术

Powerbuilder最大的特点就是其采用了独一无二的数据窗口技术。

这种技术对定义和开发数据库连接过程进行了抽象,使得程序开发人员能够完全可视化地完成应用系统中有关数据库的编程工作。

5、开放的系统

Powerbuilder可以访问任何一个常用的后台数据库系统,如oracle、sybase、informix、DB2和SQLServer等大型数据库[8],以及Xbase、FoxPro和Paradox等小型数据库。

它本身也带一个小型的个人数据库ASA,以方便编程人员学习和使用。

它提供了通用的前台用户界面和相关的数据库接口,开发人员无需关心每个数据库的特点和特性,只需集中精力进行前台应用程序的开发。

6、多平台的开发环境

powerbuilder现在有windows、mactintosh和unix等版本。

在不同操作系统开发的应用程序只需要在另一操作系统下重新编译即可直接运行[9]。

7、网络应用程序的开发

使用powerbuilder,除了可以方便快捷地创建传统的基于客户/服务器模式的数据库应用系统外,同时还支持基于N层体系结构分布式的应用程序和基于web的应用程序的开发[10],完全具备开发企业级商务应用系统的能力。

3港口货运统计与决策支持系统分析与设计

3.1需求分析

目前连云港电子口岸关于货运的业务主要集中于集装箱的进出口,有网上订舱、电子提箱、电子装箱单、场站系统、理货入库单系统等诸多业务系统。

这些系统的数据间存在着密切的联系,但却由于使用的单位不同等原因分别存在于不同的数据库,在货代

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1