综合信息查询

2024-08-17

综合信息查询(共12篇)

综合信息查询 篇1

1 引言

随着各单位信息化建设水平的不断提高,需要处理的数据也越来越多,如何有效、高效地处理、利用已有的大量业务数据、法规条文,就要求一个完善适用的数据库和一个使用方便、灵活的基于该数据库的综合业务信息查询系统。

2 系统概述

2.1 主要功能

综合业务信息查询系统是依托Oracle数据库开发的大规模、多功能信息支持系统,可以提供法律法规、位置、性能、环境、工程等数据查询服务。数据库中包含多媒体信息等实用数据,使用时可以为用户提供直观形象的数据表现。

2.2 系统模块结构

系统分为主程序,待调用的各分程序:法律法规.exe、单位情况.exe、装备性能.exe、战场环境.exe、战备工程.exe等。使用时,在主程序界面中登录后选择感兴趣的查询内容,主程序调用各分程序,将查询条件通过通信协议发至相应的分程序,实现查询结果的返回并按一定形式显示。功能模块如图1所示。

3 系统数据库

3.1 系统数据库表

业务信息查询系统数据库从包含的功能考虑,须有以下几个表:字典_相关法规、单位情况、性能_船舶性能、性能_飞机性能、性能_车辆性能、位置_机场、位置_港口、环境_机场、环境_港口、环境_码头、工程_工程分类、视频库、音频库等。

视频、音频等多媒体信息以BLOB二进制形式存于库中,程序使用ADO技术访问数据。

在此列出几个表:

单位表:单位编码(varchar2 20 primary_key)[1]、单位名称(varchar2 20)、单位地址(varcha2 50)、单位经度(number)、单位纬度(number)、备注(varchar2 200)。

法规_国际法:国际法编码(varchar2 20 primary_key)、国际法名称(varchar2 20)、国际法内容(varchar2 500)、国际法签署国(varchar2 200)、国际法签署时间(date)、国际法批准国及批准时间(varchar2 200)、我国是否批准(number(1))、备注(varchar2 200)。

法规_国内法:国内法编码(varchar2 20 primary_key)、国际法名称(varchar2 20)、国内法内容(varchar2 500)、制定机关(varchar2 20)、发布时间(date)、施行时间(date)、备注(varchar2 200)。

港口:港口编码(varchar2 20 primary_key)、港口名称(varchar2 20)、经度(number)、纬度(number)、使用性质(varchar2 20)、码头数量(number)、货物吞吐能力(varchar2100)、旅客吞吐能力(varchar2 100)、泊位数量(number)、航道最小水深(number)、备注(varchar2 200)。

码头:码头编码(varchar2 20 primary_key)、港口编码(varchar2 20)、码头名称(varchar2 20)、码头类型(varchar220)、码头水深(number)、主要用途(varchar2 20)、装卸方式(varchar2 20)、码头荷载(varchar2 20)、备注(varchar2 200)。

机场表:机场编码(varchar2 20 primary_key)、机场名称(varchar2 20)、所在地名(varchar2 20)、机场经度(number)、机场纬度(number)、机场高程(number)、机场等级(varchar2 20)、机场飞机保障能力(varchar2 200)、机场油库容积(number)、跑道数量(number)、主跑道长度(number)、主跑道厚度(number)、跑道适用机型(varchar2200)、备注(varchar2 200)。

机场跑道表:机场跑道编码(varchar2 20 primary_key)、机场编码(varchar2 20)、机场跑道名称(varchar2 20)、起降能力(varchar2 200)、备注(varchar2 200)。

3.2 系统程序设计

程序集有一个主控程序,也是主界面,其他各模块使用方便的语言编写,统一使用ADO数据访问技术访问Oracle数据库,主控程序和各子程序间通过一定的通信协议进行互相操作。在建立ODBC数据源的时候要选择Oracle自带的odbc驱动,否则访问BLOB字段时要出错。

ADO使用一组com对象来实现对数据库的访问,它是一个分层的编程模型,ADO主要有Connection、Recordset等对象[2],使用Connection对象的Open方法可以得到一个返回的Recordset对象,可以从其中获取查询的数据,也可以由Recordset对象的Open方法获取数据。

使用PB编写了主控程序及法律法规查询,程序框图如图2所示。

使用PB编写了装备性能查询,使用Delphi编写了单位情况查询,使用VB编写了战场环境、战备工程查询,程序框图如图3所示。

4 通信协议

4.1 Windows Socket通信简介

TCP/IP协议栈是一种广为使用的网络通信协议,在各个主要操作系统上均有实现,在Windows系统上的实现主要为微软的Winsock2。

Socket提供了这样一种通信机制:对于服务器而言,它提供了侦听网络的连接请求;对于客户机来说,它可以连接到一个给定的主机和特定的端口上。客户端和服务端可以通过套接字对象来收发数据。

Winsock编程的API很多,常见有Winsock控件、VC中的CSocket类、Delphi等的TSock组件,使用上大同小异,均提供了方便易用的编程接口。

4.2 通信协议设计

系统使用VB、PB、Delphi等多种开发工具多人协同开发,需要解决不同进程的控制、通信等问题。实践中,为降低异种语言调用通信模块的难度,系统通过Winsock进行进程间通信,实现统一的接口。系统使用UDP来达成通信。

子程序中通信模块接收主程序传来的命令,解析后向被调用模块传递此命令,数据包结构如下:

(1)命令分为查询命令和控制命令两类,均为ASCII字符串,开头以$Q、$R和$C开始,以回车结束,各节之间以“,”分隔。

(2)控制指令格式为:

$C,x,yy

第一节指明目的模块,a为法律法规;b为单位情况;c为装备性能;d为战场环境;e为战备工程等。

第二节指明执行的动作,cl为关闭该进程:

(3)查询指令格式为:

$Q,aa,bb,cc

第一节指明目的模块,a为法律法规;b为单位情况;c为装备性能;d为战场环境;e为战备工程等。

第二节指明需查询的大类,如单位大类为danwei,机场大类为jichang,港口大类为gangkou,法律法规大类为falv。

第三节格式为参数和参数值的对组成,各参数对之间的分隔符为“&”,参数和其值之间使用“=”符号连接,形如:

$Q,a,falv,法律=海洋环境&条目=10

(4)返回查询结果从子模块传向主模块,格式为:

$R,aa,bb

第一节指明目的模块,a为法律法规;b为单位情况;c为装备性能;d为战场环境;e为战备工程等。

第二节为查询结果,ok为查询正常,err为查询失败。

5 通信协议实现

以VB为例,在窗体上放置一个winsock控件[3],在窗体初始化代码中设置其网络协议为UDP,侦听端口为相应的端口。当需要获取所需查询结果时,向相应的模块发送$Q命令。示例如下:

主模块需查询某机场情况,向d模块(战场环境)发送查询命令:

执行s Sql查询语句得到结果并显示,如查询正常,向主控程序发送"$R,d,ok",否则发送"$R,d,err"。

6 结语

文中提出了一种多人协作开发的业务查询系统,并实现了一种有效的通信协议,完成了该查询系统,结合现有某数据库,拓展了使用范围,满足了用户急迫的需求,效果良好。

参考文献

[1]Joline Morrison,Mike Morrison.Oracle数据库指南.机械工业出版社,1999.

[2]清宏计算机工作室.Visual Basic编程技巧网络与数据库篇.机械工业出版社,2001.

[3]汪晓平,钟军.Visual Basic网络高级编程.人民邮电出版社,2001.

[4]张树兵,戴红,陈哲.Visual Basic6.0入门与提高.清华大学出版社,1999.

综合信息查询 篇2

一、实验目的

熟练掌握SQL语句的使用

二、实验内容

1.查询成绩在80~90之间的记录

2.查询至少有2个同学选修的课程名

3.查询其他系中比“信息系”所有学生年龄都小的学生名单以及年龄,并按年龄降序输出

4.查询与学生“张立”同岁的学生姓名

5.查询选修了两门以上课程的学生名单

6.查询成绩比该课程平均成绩高的学生名单以及成绩,输出课程号、平均分、学号,成绩。

7.查询每个学生各门课程的平均成绩和最高成绩,按降序输出姓名、平均成绩和最高成绩

8.查询所有未选01号课程的学生名单

9.查询选修了“200215122”号学生选修了的课程的学生学号和姓名

10.查询所有学生都选修了的课程的课程号和课程名

三.心得体会

信息系统数据智能查询功能的设计 篇3

关键词: 智能查询; 数据挖掘; 多表查询; WCF

中图分类号:TP311 文献标志码:A 文章编号:1006-8228(2015)06-32-03

Abstract: The intelligent query function of information system is particularly important to big data, and can query to the data coincide with the users' needs more effectively and quickly. The system design uses WCF technology to achieve cross platform technology, with single table query, criteria query, multi table query, view generation modules and a friendly interface. The system architecture is divided into public layer, server and client. Users can query the data required by clicking on the interface, the important query can be saved as a view so as to use for next time.

Key words: intelligent query; data mining; multi table query; WCF

0 引言

大数据时代,为了更快捷、更有效地在数据库中查询到与用户需求相吻合的数据,信息系统的查询功能显得尤其重要。在数据查询方面,不仅要关注数据库检索的有效性,而且要能够灵活、智能、自然地查到数据。而目前大部分信息系统,一旦开发完成,就把查询功能、查询视图、查询方式固定下来,这不利于数据库的扩展。如一般的企业信息系统是针对特定数据库开发数据查询功能,这样会使得系统的耦合度变高。假设该企业信息系统发展得越来越大,那么由于业务需要,需要新增一个数据库来存储数据,那原来系统的数据查询功能,就没有用了。为此,本文研究采用C#高级语言和WCF技术开发的智能化数据库查询系统,不但可以实现灵活、带有记忆功能,而且可以使用各种技术来降低系统的耦合度。

1 WCF介绍

WCF(Windows Communication Foundation)是由微软开发的一系列支持数据通信的应用程序框架,其工作原理如图1所示。服务端会有一个服务寄宿过程,因为WCF服务需要寄宿于一个运行着的进程中,服务寄宿就是为服务指定一个宿主程序,而WCF采用基于终结点的通讯手段,包括地址、绑定和契约。当服务被成功寄宿,WCF会创建分发器,通过分发器来监听客户端是否发来消息。对于客户端,通过图1的一系列流程后,可以实现如代理、创建传输通道等访问服务。

2 系统总体设计

查询系统的运行环境、运用技术、系统功能以及系统应用平台如图2所示。

2.1 模块功能设计

根据对数据智能查询系统的需求分析,系统的功能大致包括:数据查询模块和生成视图模块。在数据查询模块中,包含了三个子模块:单表查询、条件查询、多表查询模块。生成视图功能包括定义视图名称和保存视图模块。每个模块提供图形化的操作方式给用户进行数据查询,增强了用户体验性。

2.1.1 快速单表查询

单表查询主要是提供给用户能够快速地查到数据。只需在系统界面选择数据库、数据表或者手动输入操作便可,不需用户懂太多技术上的操作。该功能是系统的最基本查询功能,主要适用于简单数据查询。快速单表查询流程如图4所示。

条件查询功能主要是便于用户筛选数据,根据用户需求,把数据查询出来,如图5所示。

2.1.3 多表查询

多表查询功能主要是需要查询业务比较复杂的数据,可提供数据挖掘的功能。用户只需要选择几张要查询的表以及输入表之间的关联条件,点击确定便可查询数据。其流程如图6所示。

2.2 生成视图

生成视图功能主要是当用户查询到数据后,若用户觉得该次查询数据的方式以后会多次用到,那么用户就可点击生成视图,把该数据表关系保存下来,以便以后使用。

2.3 系统的界面设计

系统界面使用WinForm技术设计,采用IrisSkin2皮肤,整体上给熟悉windows操作系统的用户一种亲切感,且较易用。如图7所示,左上部分可选择数据库、表和视图,左下部分可选择要展示的哪列数据。右上部分是显示用户所查询到的数据,右下部分用户可直接输入Sql语句便可查询到数据。

2.4 系统的架构设计

图8展示了系统的架构,总体上分为公共层、服务端、客户端。各层之间分工协作,项目名称与各层次的对应关系如下。

⑴ 公共层(Common):主要存放一些系统公共代码,如SQLHelper数据操作代码。

⑵ 服务端:Service是系统服务,主要描述该系统提供哪些功能;Service.Interface是系统契约,即服务的定义;ServiceConsumer主要用于服务访问代理;ServiceHosting是WCF服务寄宿。

⑶ 客户端(QueryProject):系统UI层,主要是呈现给用户看的界面。

3 结束语

系统主要的亮点是为用户提供多种查询数据的方式,以及它的灵活性和可移植性。信息化产品已经不断的呈现在用户的面前,同时企业对于办公效率的追求也越来越高,而针对数据方面的需求更加无法想象,大数据、云技术的出现,满足人们需求的同时,也刺激了人们更大的需求。其中对数据的查询及分析需求显得尤为重要。所以该系统的设计符合时代的发展,传统的数据查询根本满足不了用户如今强大的需求,而该系统(如图8)正好符合用户的需求。

系统的发展方向是将每一个功能做成一个个控件,那样用户就可以随意按自己的需要拖拉控件实现相应的功能,即把界面交给用户,按用户所需进行设计。

参考文献:

[1] 刘先省,陈克坚,董淑娟等.Visual C#程序设计教程[M].机械工业出版

社,2010.

[2] 刘卫国,熊拥军.数据库技术与应用-SQL Server 2005[M].清华大学

出版社,2011.

[3] 蒋金楠.WCF全面解析[M].电子工业出版社,2012.

[4] Christian Nagel,Bill Evjen,Jay Glynn.C#高级编程[M].清华大学出版

社,2010.

[5] 黄瑶,王雷刚.结构陶瓷数据库管理系统的研究[J].陶瓷科学与艺术,

2002.36(4):6-8

[6] 袁满,郭宝祥,孙永东.元数据驱动的个性化查询工具设计与实现[J].

新综合查询系统的开发与应用 篇4

关键词:HIS,综合查询系统,数据库服务器,多线程技术

1 问题的提出

我院局域网络建立于1999年,基于HIS的综合查询系统应用于2001年。随着我院数字化医院建设的逐步推进,运行在HIS系统中的软件越来越多,新的查询与统计需求也越来越多,老版本的综合查询系统已经不能满足我院的需求,急需一个新版的综合查询系统来满足日益扩大的新需求。我院在1997年2月,开始进行新版综合查询系统的开发工作,1997年8月,初步完成,同时在机关和相关科室进行了试用。目前试用的是新综合查询的第二版。

2 设计思想

考虑到整个系统的延续性,新版本的综合查询系统兼顾老版本的全部功能,同时要具有功能扩展方便、功能全、查询/统计速度快、操作便捷等优点。

(1)工作模式:采用C/S模式。同时,作为一种尝试,将一部分查询功能放在了医院的网站上(仅是为了测试),即:使用B/S模式实现综合查询功能,这样做的效果更为实际,应用效果更好、通用性更强(不用装客户端程序)。

(2)开发工具:由于新系统要用到大量的Windows API函数和许多底层内容,同时也是为了突出系统的查询速度,系统采用C++Builder 2007为开发语言,以Plsqldev、SQLMonitor等为辅助工具;医院数据库服务器是Oracle 8.1.7。

(3)使用多线程:考虑到系统的效率问题,新综合查询系统中使用了多线程技术。多线程是一把双刃剑,合理的使它,可以极大地发挥硬件系统的效能,否则会容易造成核心数据库服务器的过载。

3 实现方法

3.1 核心数据库的负载问题

系统开发时,就考虑到核心数据库的负载问题。因此,每一个查询表单都是以ShowModal(排它式)方式显示,即:系统不允许同时由多个表单同时发出多个查询请求。当某一个表单的查询任务完成(被用户终止查询后),表单被关闭后,才允许启动其他查询表单。

3.2 线程技术

(1)建议使用线程向导来辅助建立线程。在线程构造函数中应填入必要的信息,如:

(2)线程执行函数。将线程的任务执行代码放在Execute函数中。

(3)使用线程。需要使用线程,应在使用线程的单元文件中包含线程单元文件,然后,需要创建线程对象。如:

My Thread*MyThrea=new TMyThread(false);//申请一个线程对象

其中的函数参数是线程构造函数使用的。当参数为false时,线程在创建后立即执行,即调用Execute方法;当参数为true时,线程对象只是被创建,Execute方法并没有开始执行。直到线程的Resume方法被调用后,线程才开始执行Execute方法。

3.3 数据库控件属性调整

在实际应用中,建议抛弃C++Builder的表感知控件DBGride,主要原因有两个:一是它不支持图像功能;二是它的执行效率太低。我们在实际采用时,使用了StringGride控件。为了提高检索效率,还需要修改ADOConnection1等控件的相应属性,如:CursorLoction=cluseserver等(让数据集的光标位于服务器端),以便提高查询效率。

3.4 参数配置文本

通过配置系统启动参数文件,可以扩大系统的适应范围,如:修改某一个表单中的SQL语句检索条件,显示字段或与其他数据库账号连接。

4 主要功能

4.1 查询功能

系统实现老综合查询的全部功能并增加了大量新的查询功能,如:字典表查询、药品查询、病案查询、住院病人查询、门诊病人查询、医嘱查询、检验/检查查询、门诊收费/退费查询、住院收费/退费查询、手术查询、输血查询等等。

4.2 权限过滤功能

用户权限的不同,可看到不同的菜单。

4.3 数据的导出功能

查询的结果可以直接输出到Excel表中。

4.4 图表功能

统计结果可以以图表形式显示和打印。图表以直方图、饼图、曲线图的方式显示。系统允许用户选定自己喜好的图表形式。

4.5 打印功能

支持将查询、统计的结果直接在打印机上输出。

4.6 查看系统信息功能

可以查看操作系统的内存信息、目录信息等;获取指定计算机的IP地址或计算机名、时钟功能等。

4.7 视频/音频功能

由于一些查询比较大、比较耗时,尤其在医疗高峰时更是如此。做为一种辅助功能,加入了一个视频/音频播放器,在较大查询时,可以打开视频/音频播放器进行视频/音频文件的播放。由于视频/音频播放器是由另一个线程支持的,同时不支持网络视频/音频文件的播放,所以不会占用网络带宽,也不会过多消耗本机资源。

4.8 扩展功能

由于有完全的知识产权,可以根据医院的需求随时增加新的查询功能。

5 应用效果

通过目前的运行效果来看,系统有两个主要的特点:

(1)运行效率高:一般查询的速度至少提高两倍以上(较大查询提高的速度更多),而且在查询同时,系统完全可以响应用户的其他操作,运行效果比较理想。

(2)扩充方便:可以根据需要加入新的功能。

6 讨论

由于许多查询都属于较大的查询,在医疗高峰时(上午),同一时刻,众多用户同时查询,核心数据库服务器负载很大,查询时间可能会较长。虽然可以采取限制查询时间(如下午),但会影响该系统的应用效果。目前只是建议使用单位尽量避免在医疗高峰时进行查询或统计。除此之外,就是更换速度更快的核心数据库服务器,但这样效果通常并不会得到明显的提升。以我院为例,核心数据库服务器是两颗CPU,各双核,15000转SAS硬盘,磁盘阵列分别采用Raid1和Raid 5,16G内存。CPU的速度和内存足够了,关键在于磁盘的机械速度。若使用负载均衡器连接多台核心数据库服务器,实际测试表明,这种方式最为理想,但需要的投资也最大。

参考文献

[1]郑明.C++Builder于Windows API经典范例[M].北京:清华大学出版社,2002:187-461.

[2]程展鹏.Borland C++Builder6应用开发技术解析[M].北京:清华大学出版社,2003:288-305.

[3]杨宗志.C++Builder数据库程序设计[M].北京:清华大学出版社,2001:167-197.

[4](美)Karanjit S.Siyan.Windows2000Server专业参考[M].前导工作室,译.北京:机械工业出版社,2001:311-383.

[5]蔡明志.Borland C++3.1软件集成技术与范例[M].北京:海洋出版社,1993:97-351.

网站信息查询工具精选 篇5

Just-Ping.com是一个全面的网站可连接性探测服务。它可以从世界上26个不同的地点连接制定的网站,并显示每个地点访问该网站的速度以及丢包率。其中有一个地点是上海,所以也可以用它来检测网站是否被墙。

WhoIsTheOwner.net是一个聚合式的Whois服务,它可以从全球350多个Whois服务器上获取网站的注册及注册人信息。

YouGetSignal.com这个工具可以帮你查询某一个网站所在的服务器上还有哪些其它的网站。很多时候,对于危险网站会使用IP封锁,通过它你就可以知道自己网站有没有被殃及可能。用它我们也可以从一个侧面了解服务商是否提供了优质的服务,一个放置了成千上万个网站的服务器很难让人放心。

WhoIsHostingThis.com可以告诉你,网站所在的服务器属于哪家公司,

如果你想知道一个网站的服务器和带宽是由谁来提供的,就可以用它来查询。

SocialMeter.com可以同时查询网站在Del.icio.us、Digg、Furl、Google、Reddit、Spurl、Technorati、Yahoo My Web等服务中被连接的状况,便于从一个侧面了解网站的流行程度。

Popuri.us的作用和SocialMeter差不多,所查询的数据中包括了Google PageRank、Alexa排名、Compete排名、搜索引擎反向链接数、Bloglines订阅数、Whois、DNS等信息。

BuiltWith.com是一个非常强大的网站技术信息查询及分析工具。它可以分析的网站信息非常全面,包括网站代码的基本SEO信息、通过XFN及FOAF链接到网站的其它网页、网站所使用的第三方统计服务、网站所安装的Widget、网站所使用的内容发布工具、网站所使用的编程语言、网站的广告服务商、为网站提供内容的其它服务、网站支持的同步服务、网站的编码等等。一个网站几乎所有的技术细节都可以用BuiltWith查到。

综合信息查询 篇6

摘要:针对公交线路规划的问题,必须提供一个准确快捷的公交查询系统以满足人们日常出行的需求.研究了基于XML数据的公交查询系统,该系统采用B/S模式,利用ASP.NET框架和C#语言,实现了公交运行查询功能.在换乘查询算法部分及在Dijkstra算法的基础上,分析了路径寻优的原理,实现了路径距离计算的具体方法.并通过减少临时节点排序及数量的方式,改进了Dijk-stra算法,最终减少了寻找路径的时间并简化了路径计算,最后,以天津市公交数据为例.用改进的Dijkstra算法对公交查询系统进行了分析验证,结果表明,利用改进的Dijkstra算法可以实现高效的公交信息查询,节约查询时间,节省内存资源.

关键词:公交查询;Dijkstra算法;XML数据;路径寻优;最短路径

DOI: 10.15938/j.jhust.2015.02.016

中图分类号:TP319

文献标志码:A

文章编号:1007-2683(2015)02-0085-06

0 引 言

随着现代城市规模发展,城市的公交线路也越来越复杂,准确又方便地查阅公交线路,已经成为与人们生活息息相关的问题.传统的公交查询系统大多使用Sybase SQL Server、Oracle等传统数据库系统保存公交信息数据,并运用(structured querylanguage SQL)语言实现对这些数据库的操作.SQL语法简单,语言语句可嵌套,这使它具有极大的灵活性,但是,对于管理者的要求较高.目前,利用XML文件的结构化标记数据和可移植性的特点,构建公交查询系统后台数据结构,以减轻系统管理者负担,并提供准确、快捷的公交线路查询系统成为智能公交系统的研究热点之一.XML即可扩展标记语言,它使用表示起始和结束标签的语法来描述和交换独立于应用程序的结构化数据.使用XML存储数据使得管理者不再需要使用传统的soL语言来更新管理数据,减轻了管理人员的负担.本文首先对Dijkstra算法进行改进,并在Visual Studio开发环境下,利用ASP.net框架,采用B/S模式,构建XML数据,并将线路与站点数据相结合,同时融合拐点数据,使得线路查询算法更加简单,为公交查询系统的数据管理提供了一种新方法.

1 系统需求描述

1.1 性能需求

一个好的公交查询系统应具有准确性,快速性,易扩展性和易使用性.它保证系统输出结果的准确性,避免出现重复或者错误的查询结果给用户造成误导,并且在数据的导入、导出和查询过程中数据的处理时间响应上不超过ls.系统利用的XML数据非常便于管理者在后台随时进行更新和修改,即可直接打开XML数据文件进行手动修改.同时查询者无需进行登录即可进行公交查询,系统配备合理的人机交互界面,方便用户查询和使用,节约了用户查询时间.

1.2 功能需求

公交查询系统功能需求结构如图1所示.

1)线路查询:包含了线路的上、下行信息,并涵盖了线路经过的所有站点信息.当用户输入的信息不明确或不详细时,系统自动进行模糊查询,为用户匹配需要的线路信息.

2)站点查询:此功能在用户进行查询时,将包含此站点的所有公交线路反馈给用户,若用户输入的站名不明确时,系统自动进行模糊查询,为用户反馈合适的公交线路信息.

3)乘车路线查询:本系统以较少换乘次数作为设计依据设计了零换乘站点查询和一次换乘查询.首先输出零换乘的查询结果,其次输出一次换乘的查询结果,给查询者带来方便.

2 Dijkstra换乘算法描述及其优化

Dijkstra算法以广度优先算法为基础,主要解决从固定的单个点源,经过若干点后,到其他固定顶点的最短路径问题.本系统换乘查询部分采用了改进的Dijkstra换乘算法.

2. 1 基于传统Dijkstra算法的换乘查询算法

在本文设计的公交查询系统中,一次换乘查询采用了Dijkstra算法,具体过程如下:

Stepl.设起点为站点A,设终点为站点C,其它的站点为站点B.设从站点A到站点B的集合为U(A,B)距离为AA,若站点B为中转站,则设AA=0;若站点B非中转站则AA=∞.

Step2.计算出AA的具体数值,对AA的值排序,并从AA最小值开始暂定其为AA的值,暂定该AA下的站点B为最佳中转站点.

Step3.设从站点B到站点C的集合为U(B,C),距离为AB,则从站点A到站点C的距离为AC=AA+AB.对AC的值和对应的换乘数据进行保存.

Step4.重复step2和step3直到所有AA为最大值.

Step5.对所有已保存的AC的值进行排序找到从站点A到站点C的最短距离和相对应的换乘数据,

该过程基于传统Dijkstra算法可以实现一次换乘查询,提供准确结果.但由于遍历计算节点较多,并产生大量中问数据,导致其效率不高,算法时问得不到优化.

2.2传统Dijkstra换乘算法优化原理

基于传统的Dijkstra换乘算法,对于一个公交查询系统,一般来说有以下两种常规优化方案:

1)传统优化方案一:该Dijkstra算法优化方案根据在查询中转站时,对中转站设置一定的权值来实现,这样做的好处是可以对换乘的次数进行排序,优先选择少换乘的路线,之后再对换乘路线的距离进行计算并排序.但是,这种方案当换乘次数增多时,会产生大量的查询线路无用结果,并且由于权值的加入,最终导致运算结点的增加,使得运算次数增多,不具备一定的实用性,虽然针对于传统的Dijk-stra算法进行工一定优化,但并不是最佳优化方案.

2)传统优化方案二:该Dijkstra算法优化方案在计算起点A到中转站B的距离AA时只计算站点B为中转站的距离,然后直接计算站点B到站点C的距离AB,最后依据AC=AA+AB直接计算全程线路的距离AC的值后再对AC排序.这样做减少了中途排序的过程,节约了大量计算机内存.但是这种方案在查找同一组线路下的中转站会出现中转站重复的情况,进而增加中途结点,没有实现算法完全优化.

2.3 本系统Dijkstra换乘算法优化原理

在本系统中,传统的Dijkstra算法在计算过程中产生大量的0元素,∞元素以及中间数据,这样做会占用较多计算资源,且该算法的时间复杂度为O(n2),当数据量过大时,中途的结点数据量会占据大量的计算机内存单元,算法运行的时间将会不可接受,因此,需要对传统的Dijkstra换乘算法进行优化,使之减少资源占用,减轻计算复杂度,优化实现的具体过程为:

Stcpl.设起点为站点A,终点为站点C.找出包含A的线路L(A)和包含站点C的线路/(C).

Step2.分别求出线路/(A)和线路L(C)的所有站点,找出L(A)与L(C)线路站点中包含的相同站点,即为中转站点1.若查找出的相同站点包含重复的,L(A)与L(C)线路,则停止重复查找,直接查询下一条线路的相同站点.

Step3.直接计算站点B到站点C的距离AB.

Stcp4.依据AC=AA+△B直接计算AC的值,再对AC排序.

这样做与传统的Dijkstra算法过程相比,避免了巾途积累大量的结点数据,并减少了中途排序的过程,当算法在运算过程中产生n个结点数时,优化算法的时间复杂度减少为0(n)这样节约了大量计算机内存并节省了大量运算时间,并提高了查询速度.

2.4 Dijkstra换乘算法优化实验验证结果

为了验证本系统的Dijkstra换乘算法优化的搜索效率,正确性以及优化效率,本文对传统Dijkstra算法,传统Dijkstra算法优化方案一,优化方案二和本系统的Dijkstra优化算法分别进行了实验,并进行了算法的对比验证.

在进行实验验证时,首先选取10组不同的起点和终点数据,然后使用这10组数据进行线路查询,在换乘线路查找过程中,分别记录使用这4种算法方案所产生的平均节点数及算法的搜索效率,并验证输出结果的正确性,最终分析说明优化Dijkstra换乘算法相比其它3种算法方案的提升效率,各项比较结果如表1所示,

从表l中可以看出,使用优化后的Dijkstra换乘算法过程中产生的节点数明显减少,并且优化提升明显,相比其他3种算法方案,本系统使用的Dijk-stra优化换乘算法很好的节省了内存占用单元和查询时间,满足了用户需求.

3 基于XML数据的公交信息查询优化算法的实现

3.1 XML数据模块设计说明及程序实现

XML数据设计直接影响系统的性能以及管理员的维护.XML数据将线路与站点数据相结合,并且融合了线路拐点数据,所谓拐点即公交按其线路行走时需要拐弯的点,融合拐点数据后,使站点距离计算更加精确,本系统的XMI。数据模块如下所示:

由于XML文档可以被表示为标签在节点上的树,则通过图2表示出该XML文档的数据模式图.通过这些数据可以查询乘车线路,并计算出两站点之间的距离,并且非常便于管理员在后台随时更新和维护该XML数据.

在此模块中:

主要包含3个元素,分别为:station元素、line元素及lines元素.

1)标签中存储了该条线路的所有站点和拐点.其中,元素name表示站点名称,若该点为拐点,则name为空,元素longitude表示该站点(拐点)的经度,元素latitude表示该站点(拐点)的纬度,用C#进行数据传人时,首先建立XS-pot类,类中定义了用来存储线路名称的字符串变量和用来存储坐标的坐标变量,用XSpot类定一个spot自定义类型,将每条线路的站点数据分别存人其中.

2)标签中存储了一条线路和该线路所包含的所有站点和拐点,其中,元素name表示线路名称.

3)标签中存储着所有线路,在用C#进行数据传人时,首先建立XLine类,类中定义了用来存储线路名称的字符串变量和用来存储线路包含的站名名称及站点信息的XSpot变量.用XSpot类定义一个spots自定义类型,将spot内的每条线路站点信息全部存人其中,整合为全部线路的全部站点名称,并用XLine类定义一个line自定义类型,将标签内的数据全部存人line中,其中包含每条线路名称name和对应的站点及站点坐标spots.

3.2计算站点距离的数学模型描述

1)当用户从站点A1到站点AM时,中途要经过m-2个站点及拐点,分别设站点为A2,A3,…,Am-2,A—1·

2)设站点A1的经度为x1,,站点A1纬度为y1;站点A2经度为X2,站点A2纬度为Y2,则站点A1与站点A2的经度差为

X1= X2 -Xl,

(1)

它们的纬度差为

3)由于地面上经度或纬度相差1度以内对应的地表弧长大约是S =lllkm,且站点与站点间的距离都小于1经度或l纬度.因此,站点A.与站点A2之间的距离为

同理,站点A2与站点A3之间的距离为

站点Am一,与站点Am之间的距离为

4)由此可知,从站点A1到站点Am,即用户的乘车所经过的距离为

3.3基于优化Dijkstra乘车查询算法的实现

本系统乘车查询实现分为零换乘与一次换乘两部分.

3. 3.1零换乘

首先应用C#的List容器类以及System.Xml控件将XML后台数据中的线路信息与站点拐点的信息传人程序中,并使用List类构建linesl和lines2两个新容器,设用户查询的起点站为stationl,终点站为station2,查找包含stationl的所有线路并将其存入容器linesl中,同时将包含station2的所有线路存入lines2中.之后,使用List类构建line容器来保存共同包含stationl与station2的线路,此线路即为用户零换乘所需要的乘车线路,之后利用站点距离数学模型及C#语言实现可计算出stationl到sta-tion2的距离.在C#中,求两个List的交集,可以通过调用List类中的Intersect方法”line=linesl.Inter-sect(lines2). ToList()”;利用C#容器类的这个特点可简单有效的求出用户所需的乘车线路,再通过索引找出stationl及station2分别在line中的位置,即可求出用户乘坐该线路所要经过的站点及距离.最后,利用C#语言提供的接口IComparer,建立内部继承类,并利用该接口中提供的CompareTo()函数对类中的成员进行比较,通过这个方法,对line中的线路路径长度进行比较后排序并将结果存人新容器lines中,可得出零换乘从路径最短到路径最长的查询结果(流程图如图3左边所示).

3.3.2 一次换乘

用C#语言实现时,首先设起点站为stationl,终点站为station2,利用Find()函数,找出所有包含stationl的线路liriel中以及所有包含station2的线路line2,并用索引标记出stationl,station2分别在lineI和line2中的位置.其次,利用判断中转站的方法”Linel.spots[i].GetName()==line2.spots[j].GetName()”来找出line1和line2中的共同站点,即换乘站点,其中,spots代表线路的站点,GetName()用来获取站点中的线路名称.由于在相同linel与line2问一般会有多个换乘站点,因此,先通过对sta-tionl与station2到换乘站点距离分别进行计算,求出station1到station2的距离,再取出stationl到sta-Lion2存相同line1与line2下的最短距离,最终只保留相同linel,line2下stationl到station2的最短路径结果,并保存在List容器path中,再进行下一组line1,line2的判断.最终,将保留的换乘查询结果排序并利用lines.Add(path);全部保存在List容器liries中,即为一次换乘的乘车线路(流程如图3右边所示).

3.4查询结果的输出

本系统通过使用天津市公交信息数据,最终实现了线路查询、站点查询、乘车线路查询三大功能.

1)线路查询:在该方面本系统以“101路”线路作为实验数据,在进行线路查询时,输入“101”,通过模糊查询来找到101路公交的上下行线路所有信息,查询结果如图4所示.

2)站点查询:在站点查询的方面,本系统以“天津站”为例,查询了经过天津火车站的所有公交线路,查询结果如图5所示.

3)乘车路线查询:在乘车路线查询结果输出方面,系统根据人们出行时的乘车心理,首先选择了输出零换乘的查询结果,当零换乘的查询结果较少或没有零换乘的乘车路线时,系统将继续自动进行一次换乘查询,并将结果输出.同时,为了保证系统结果简明扼要,在进行线路查找时,添加了限制语句,令输出的乘车线路结果保持在5条以内,既当容器lines中存储的线路个数达到5条时,系统自动停止线路查询,这样既减少了搜索乘车线路所花费的时间,又给用户提供了快捷方便的结果.系统以起点为“天津站”,终点为“天津西站”作为实验依据,对该系统进行了实验验证,乘车线路的查询结果如图6所示.

4 结 语

数据流相似性快速查询综合算法 篇7

随着互联网技术的快速发展, 在各个领域中产生了大量、快速、无序、连续新类型的数据——数据流, 这些比较典型的领域有智慧城市、智能交通、电子商务、天气预测等。对于传统的数据处理研究已经有很长的历史并已经取得一定的成果, 传统的的数据库通常先将数据静态存储在数据库中, 然后再从数据库中提取数据处理的方法, 这种方法对于传统的一般静态的数据时相当有效的。

1 滑动窗口技术

如果两个通信者之间同时发送数据, 就有可能会造成数据阻塞, 进而导致数据丢失。如何改善流量控制吞吐量的成了制约网络技术发展的一个问题, 滑动窗口技术的出现为解决这一类问题提供了途径。滑动窗口技术要求有两个窗口维持:发送窗口和接收窗口。

2 小波技术研究

哈尔 (Haar) 小波是最简单、最容易实现的正交小波系统。之所以选定哈尔小波模型, 因为其主要有以下特点:不需要乘法, 只有相加或加减, 因此运算速度快;输入与输出个数相同, 频率只分为低频与高频部分;可以分析一个信号的局部特征;大部分运算为0, 不用计算, 维度小, 使用的内存少。Haar小波这些特征为提高数据处理的速度提供了参考。

对于[x1, x2, x3, x4]组成的一组信号来说, 可以这样定义他的平均和细节:

在此基础上可以再一次对a1, 0、a1, 1进行压缩:

数据的还原可以通过以下定理得出:

定理1:求小波范围内第i个数据的原始数据, 用di表示。di属于以Ci为根节点误差子树树的左子树用LeftTree (Ci) 表示, di属于以Ci为根节点误差树的右子树用RightTree (Ci) 表示。判断di在误差树上的左右子树上, 用X表示。

定理2:在小波的范围内, 求l-d范围内的原始数据和, 用d (l:h) 表示;求和数据在以Ci为根节点左子树范围内叶节点的总个数, 用LeftLeavesNum (Ci) 表示, 简记为L (Ci) ;求和数据在以Ci为根节点右子树范围内叶节点的总个数, 用RightLeavesNum (Ci) 表示, 简记为R (Ci) 。

3 贪心算法流量控制

从数据流的连续性、无限性的特性来说, 在处理这些数据的时候采用贪心算法, 贪心算法的要义就是总是做出当前来说最好的抉择, 这种启发式的搜索算法不能总是奏效, 但贪心算法的‘贪心’特性是针对数据流实时特性这一特性的一种快速处理数据算法。

贪心算法的大体结构如下:

3.1从问题的某一初始解出发:

3.2 while (能朝给定总目标前进一步)

{

利用可行的决策, 求出可行解的一个解元素;

}

3.3 由所有解元素组合成问题的一个可行解;

建立数学模型来描述问题。把求解的问题分成若干个子问题。对每一子问题求解, 得到子问题的局部最优解。把子问题的解局部最优解合成原来解问题的一个解。

4 算法的实现过程

4.1 小波分解算法

4.2滑动窗口算法

开始时, 发送方S没有数据, 此时s0= d0, s1 = …= sn = 0;接收方R的r1=0窗口打开, 等待接受序列号为0的帧;然后发送方打开s1 帧, 此时s0=1, s1=d1;此时表示s0已经发送, 没有收到确认帧, 接收窗口不变;此时i= 0、j = 0;在重发表resent[0]中加入d0;发送窗口打开si、si+1;此时表示i、i+1号窗口都在等待确认帧, 此时发送窗口已经装满, 在收到确认帧之前, 不再接收新数据, 此时接收窗口有两种状态, 在重发表resent[i+1]中加入di+1;接收窗口接收到数据si后, 关闭rj, 向si发送确认帧, 打开rj+1等待接收数据;关闭rj、si, 从重发表中删除si, 如果接收窗口没有接收到数据, rj继续等待接收数据, 从重发表中重发数据si, rj继续等待数据, 直到rj接收到si数据, 然后发送si确认帧, 关闭rj, 打开接收窗口rj+1, 等待接收数据此时。令j = j+1;继续执行发送窗口的发送工作。直到所有数据都发送完为止。

4.3 贪心算法描述

二叉排序树的搜索的时间复杂度等于树高, 一般的时间复杂度为O (logn) , 最坏的情况下的时间复杂度为O (n) , 所需要的辅助存储空间只需要n个。所以在此先构造一个查询树。

该算法首先构造一个二叉排序树, 构造一个数据栈用来存放查询过程中的临时数据。然后对二叉排序树的根节点查询, 判断是否是要查询的数据, 如果是所查信息, 就退出, 否则判断左右子树是否存在, 若左右子树都存在, 则将根节点的右子节点入栈, 并递归查询;若只有左子树或只有右子树, 直接递归查询。若已经是叶节点, 则判断栈是否为空, 如果不为空, 则将栈中数据出栈, 递归查询, 如果栈为空则退出, 返回查询结果。

5 实验结果分析

1.原始数据图形与分解压缩重构后的数据对比

2.原始数据域分解压缩后的数据的绝对误差值在可接受的范围内

6 总结

从以上对绝对误差的求解结果可以知道, 该算法可以实现对流数据的近似查询, 同时该综合算法可以保证数据查询的准确性。

综上所述, 本文综合提出的一种基于滑动窗口技术和贪心算法的数据压缩的近似查询算法, 综合了以上文献的优点, 实现了对数据流的快速近似查询的要求。

参考文献

[1]李国徽, 陈辉.挖掘数据流任意滑动时间窗口内频繁模式[J].软件学报, 2008, 10:2585-2596.

综合信息查询 篇8

1 数据库查询技术现状

数据库查询技术已经被广泛应用到WEB程序开发中[1,2,3,4],例如高考成绩在线查询、OA系统中的人事信息查询等。一般来说,程序中利用用户提供的关键字段输入值作为查询条件,从而从数据表中查出符合条件的记录,并显示在客户端。例如高考成绩查询系统中根据用户提供的学生准考证号码从而提取出相应的记录并发回到客户端显示在WEB页面上。实际上这是一种小范围内的动态查询,查询指令是预先指定好并接受一个用户输入参数作为比较条件而进行查询的。然而,这种查询技术存在很大的局限性,如果用户不记得这个关键字的信息(如OA系统中的员工身份证号码为查询关键字)但知道其他很多非关键字的信息(如知道这个员工姓什么、性别、所在部门、大致住在哪个小区等),这时候就没办法查询所需的数据。基于此,提出一种WEB模式下交互式的动态数据库综合查询技术。

2 WEB交互查询技术

WEB模式下交互式的动态数据库综合查询技术是让用户指定任何多个组合条件并且由用户指定输出哪些特定字段的查询方法:利用一定的WEB交互式技术,让用户选择要输出的字段列表,同时由用户指定查询条件组合,然后根据用户的定义组合动态地生成查询指令,最后将查询结果集显示在客户端页面上。

2.1 动态查询列表的生成

用一个具体的例子来说明这种查询技术,《居民病伤死亡原因统计网络直报系统》是一个实际工程项目,其数据库中有个card表,用来记录全国各个地区居民死亡者的信息,称为卡片表,其中的每一条记录都是一个死者的信息,表中有40多个字段,如数据年份、行政区划,死者姓名、性别、出生日期、死亡日期、死因代码(表示死亡的原因)、民族、职业、生前所在单位,生前所住地址、家属姓名、联系电话、死亡地点等。在项目中实现了根据用户指定的字段来返回结果的综合查询处理,即根据用户的选择字段列表和输入的条件组合动态生成查询语句(查询指令),数据表查询语句SQL的格式如下:

Select[字段1],[字段2],…,[字段n]from[数据表名]where条件

从上面的SQL语句中,要动态生成两个内容,分别为字段列表和条件。对应用系统来说,字段列表就是用户在页面上选择的那些字段组合,条件是用户一个一个增加进来的,程序的任务就是要获取这些用户输入的信息,然后根据这些信息经过一定的处理后合成相应的查询语句。具体方法如下:

在生成查询语句前,先对用户的输入进行一些处理。为了能让用户自定义选择要查询显示的字段,应用系统把该表的所有字段都放在页面上,这里用到一个“翻译”的技术,原因是显示给用户看的字段名称并不是数据库字段的真实名称,因为效率和书写等多方面的原因,应用系统把字段名称设计成英文名称,但应用系统为了让更多的用户明白其代表的意思,所以在页面上提供给用户看到的是该字段的中文翻译名称,如前面提到的“死者姓名”这个字段在数据库中的名称是name,通过一个二维数组实现这个“翻译”的过程。例如用户点选的是“死者姓名”字段,但应用系统中记录的是和它对应的另外一维数据中的name,用一个初始化为空的新数组来记录用户的选择,用户每选择一个字段,应用系统就在这个新数组中增加一个数据,当用户取消选择的时候程序也同样地能去掉相应的数据,这样就实现了用户自定义列表字段的功能,最后程序用一条数组转换为字符串的语句实现SQL语句中的字段列表。

2.2 动态查询条件的生成

得到了用户自定义的字段列表后,应用系统还不能生成完整的查询语句,还需要查询条件,下面说明动态生成查询条件的方法。

为了让数据表中的每一个字段都可以作为查询的条件,应用系统中设计一个下拉式选择列表框,以便让用户自由选择作为条件的字段,同时提供另外一个选择列表框,让用户确定这个条件加到总条件中的运算方式,只有两个选择,分别是“并且”和“或者”,从字面上很容易理解它们的意思,和前面所说的“翻译”一样,实际上用户的选择在程序中被翻译成了相应的标准条件组合代码and和or,含义是逻辑“与”和逻辑“或”。

用户选定字段后,接着给出此字段的比较条件,是相等还是大于等等,根据用户选取的字段的类型不同,比较条件的运算符也动态地生成所对应的运算选择列表框,假如用户选的是字符型字段,那么应用系统就提供等于、包含(用于模糊查询)、不等于等一系列条件运算符,假如用户选择的字段是数字型或日期型的字段,那么很显然用于字符型的比较运算符就不适用了(例如对于数字型的字段就不能用“包含”运算符),这时候应用系统动态地改变这个列表选择,使之提供适合于所选字段的比较运算符,对于数字型的字段提供等于、不等于、大于、不大于(小于等于)、小于、不小于(大于等于)等等。

同样地,应用系统设计了一个翻译器,把用户选择的比较运算符“翻译”成计算机能识别的标准SQL语句中的比较运算符(例如把等于翻译成=,大于翻译成>,包含翻译成like等)。最后输入用于和字段比较的条件值。做完这些后实际上只是完成了多个条件中的一个条件。用一个“按扭”把输入的这个条件增加到条件集中,重复上面的过程就完成了多个条件的输入,把这多个条件按输入顺序组合起来就生成了程序所需要的查询条件。

由于条件数量是没有限制的,所提供的字段也包括了要查询表中的全部字段,所以这样的方法就完全实现了用户自定义条件的综合查询。图1就是使用这种技术的具体应用结果。

图中最上部是条件选择部分,用户可以根据查询需要自由组合条件,每增加一个条件就用一次增加,增加后的条件显示在中部右边的列表里,页面中部左边是整个表的字段列表,用户选中的字段为红颜色显示(再次点选已选中的字段则变成取消这个字段),所有条件都输入完成后可以点击“查询”按扭,程序开始根据用户的这些选择连接服务器数据库进行查询,并把所得到的结果返回页面。页面的下部就是根据这些条件从数据库中所查出的结果集,图例中符合这些条件的只有一条,所以只显示出这一条,当用户输入的条件很宽松(例如只输入一个死者姓名包含张)时,查询结果集中可能会有很多个记录,当用户输入的条件太过严格时(比如输入一个不存在的身份证号码),系统会提示没有满足条件的记录。

3 结束语

总之,通过动态地构造SQL查询语句,能够做到任何条件组合的查询,同时也能实现任意挑选字段的显示,这种技术就是动态综合查询。利用这种技术,还可以实现更为复杂的查询,例如可以再增加一个表的选择,实现多表查询,也可以再增加特殊功能的查询,让具有一定数据库基础的用户实现更为复杂的自定义语句查询。此查询技术在大型项目中已经应用,取得很好的查询效果。

摘要:该文分析了数据库查询技术的现状,提出了WEB模式下动态数据库综合查询技术,实现了动态查询列表的生成和动态查询条件的生成,并将该技术应用于基于Web模式的项目中,取得了很好的查询效果。

关键词:Web模式,动态列表,查询技术

参考文献

[1]姜跃.数据库查询方法优化研究[J].电脑知识与技术,2011,7(5):977-978,980.

[2]刘兵.基于Web服务的数据库查询[J].福建电脑,2007(2):141-141.

[3]冯本勇.数据库查询优化技术探讨[J].石家庄理工职业学院学术研究,2008,3(4):11-13.

综合信息查询 篇9

随着计算机技术的不断发展和深入,我国在建筑信息化方面取得了很大的成绩。在建筑产品全生命周期的各个阶段和各个相关的专业领域都有相应的较为成熟的计算机系统,如各种结构计算软件,计算机辅助设计软件和概、预算软件等。然而,这些软件自成体系,格式独立并且数据非共享。在建筑产品全生命周期的各阶段或者各个专业之间互相共享信息时难以保证数据的统一性和准确性。传统的解决方法是由人工完成的,即通过各种图纸来完成信息的交换和共享。标准和规范是实现信息交换和共享的前提。为此,相关的国际组织制订了许多标准和规范,其中,IFC标准已成为国际建筑业的事实标准,也是建筑软件交换和共享信息的共同语言。

1 相关背景

1.1 IFC

IFC是基于共享建筑模型设计的数据交换标准。IFC标准采用Express 语言作为数据描述,定义所有用到的数据。Express 语言是ISO 10303 工业自动化系统与集成—产品数据表达与交换的一部分,它是一种面向对象的、规范化的数据描述语言。符合IFC标准的建筑模型的物理文件格式通常参考ISO 10303 Part21所表达的中性文件格式[1]。

1.2 XML

XML是Internet数据描述与交换的一种新型标准,由W3C(World Wide Web Consortium,万维网联盟)于1998年2月发布。XML是一套定义语义标记的规则,允许用户创建描述数据的标记和文档类型定义(Document Type Definition ,简称DTD)的规则集。XML使用非专有的格式,不受版权、专利、商业秘密或其他种类知识产权的限制,任何标准的XML语法分析器都可以读取、解码和检验这种基于文本的自描述数据文档,并以独立于平台的方式提取数据元素,从而使得应用程序可以通过文档对象模型标准访问数据对象。正是由于XML本身的通用、灵活、简单、结构化,具有良好的可扩展性、互操作性和开放性,使得它能够担负起通用信息描述的重任,建立有任何复杂层次的数据模型,将各种信息通过XML这种格式来进行统一的描述[4]。

基于此,XML最适合用于不同专业领域软件平台的交互。例如在建筑设计软件与概预算软件的交互中,概预算软件可直接接收XML格式的建筑模型文件即可初步生成计算结果。

为了使IFC模型Expess语言与XML Schema定义语言相互衔接,在Internet上获得更为广阔的发展空间,IFC体系引入了ifcXML规范。

1.3 ifcXML

ifcXML规范定义了IFC模型Expess语言到XML Schema语言的映射,实现了用XML进行数据交换的方法。它与Document Type Definition(DTD)不同,ifcXML支持多种数据类型。ifcXML也能转化为Expess,且其实例文件也与Part21文件相对应。

2 ifcXML表达建筑几何信息模型

2.1 ifcXML表达几何信息的特点

ifcXML中,构件的信息,属性定义和构件之间的关系的定义由3种类别来表达,分别是IfcObject类,IfcPropertyDefinition类和IfcRelationship类[3]。

IfcObject类及其子类定义了现实中的对象,包括梁(beams)、柱(columns)、场地(sites)和建筑空间(spaces)等。对梁和柱等这一类来说,构件的几何信息可以表达为IfcProduct类的属性。其中IfcProduct类是IfcObject类的一个子类。IfcPropertyDefinition类及其子类包含一些辅助信息,这些信息单独创建,而不是从IfcObject类及其子类继承而来。以IfcColumn类的材料的特性为例,如弹性模量和屈服强度等,是在相应的IfcPropertySet类中定义的。通过这种分离对象类和属性类的方式,建筑模型获得了相当大的弹性,即一个对象可以拥有几个不同的属性设置,而一个属性也可以被多个对象所分享。同时,这也为对建筑模型中的几何信息进行单独操作提供了方便。在定义对象之间的关系时,它们的每一种关系都会在IfcRelationship的一个子类中创建一个关联。

ifcXML在IfcBuildingElement类的子类中提供了具体建筑构件的定义,如梁、柱、墙和门、窗等。每一个构件的类都有叫做对象位置(ObjectPlacement)和描述(Representation)的属性。属性ObjectPlacement包含了一个IfcAxis2Placement3D类来表示一个位置。属性Representation包含了一个IfcRepresentation类,用来表现几何向量、点、直线、曲线、面和体等。

2.2 信息表达的层次

在ifcXML中,一个建筑的几何信息是按照项目(IfcProject)、场地(IfcSite)、建筑物(IfcBuilding)、建筑楼层(IfcBuildingStorey)和建筑空间(IfcSpace)的层次依次描述的。在这五者之中,IfcProject处于最高层,包含了整个工程的3类信息,即所有的对象信息、属性信息和反映对象之间相互关联的关系信息。这里的对象信息包括了从构件到工程人员等所有本工程能涉及到的对象。

IfcSite主要用来定义建筑工程所在场地的附加信息,主要包括地形的模型信息、经度、纬度和海拔高度等。与IfcProject不同,IfcSite在整个建筑模型中是不必要的一项。

IfcBuilding是用来定义建筑物的附加信息的。它包含了所有的IfcBuildingStorey信息,并向上关联到IfcSite或IfcProject。IfcBuilding不提供对建筑物具体形状的信息,这些几何信息的描述由构件(ELEMENT)来完成,并层层向上引用,最终关联到IfcBuilding。

IfcBuildingStorey定义楼层本身的信息和本楼层的空间及所有构件的信息。

IfcSpace根据其在建筑物内或者外的区别,分别相关于IfcBuildingStorey或者IfcSite。IfcSpace定义了一个室内或者室外空间的面积和体积信息。

ELEMENT指的是构件,如梁、柱、墙、门、窗等。它负责定义所有在建筑工程中的构件,并通过IfcRelContainedInSpatialStructure,向上与IfcSite,IfcBuilding,IfcBuildingStorey和IfcSpace关联。

3 ifcXML建筑几何信息模型的查询

对建筑模型的查询有两种方式:1)基于数据文件的查询;2)基于数据库的查询。

基于数据文件的查询相对而言比较简单,容易实现,但却存在3个缺点:1)由于ifcXML文件容量巨大,每次查询都要读入整个文件,查询效率较低。2)当对模型文件进行修改时,会存在版本管理混乱和难以同步的问题。3)在查询过程中,所有的用户都会无差别读入全部ifcXML文件,这就难以实现对敏感数据的保护。

基于数据库的查询可以较好地避免上述问题。利用服务器端的模型数据库管理海量的建筑模型数据,在查询时只要针对不同的要求提供不同的数据片断,实现部分查询,提高了运行的效率。数据统一管理,不存在散落各处的副本,故在修改模型时也不会出现数据不同步的问题。数据库有完善的访问机制,可以很好地保护数据,防止敏感数据的泄漏。

由于ifcXML模型中的对象非常复杂,单纯通过关系模型将其描述清楚,理论上虽然可行,但是由于对象关系的繁琐,实际上不可用。必须采用更高级的数据模型实现ifcXML的映射。一种解决方法就是使用支持XML数据管理的商用数据库作为模型数据库。这样既可以利用现有的成熟数据库技术,完成数据保护等多方面的技术需求,又可以避免为建筑模型设计专用模型库所带来的巨大的工作量和风险。可供选择的数据库主要有IBM DB2 9和Microsoft SQL Server 2005。前者采用纯XML数据管理引擎,对XML数据的查询和操作能力很强,因此在将ifcXML模型向DB2 9映射时,可以充分XML化。后者可以与.NET编程环境完美的结合,为复杂对象提供了很好的支持。

继ifcXML模型映射到数据库之后,对建筑模型的查询,主要有两种手段:1)把XML查询转化为SQL,让DBMS来执行查询和后续处理。由于这两种数据库同时支持XQuery,可以通过两种标准查询语言SQL和XQuery的结合使用来实现更加灵活的查询。这种方法简单方便,但是依赖于数据库对XML数据的查询支持,而且难于进行许多复杂的、专业化的查询。2)以数据库平台为基础,做基于ifcXML标准的类库的开发,通过ifcXML的类库进行查询。这种方法可以实现智能化的、灵活的复杂查询。第二种方法虽较为繁琐,但是这种工作相当于把数据库改造为一个基于ifcXML标准的模型库,在逻辑上,将对数据库文件的查询转化为对建筑模型的查询。这种查询方式与ifcXML标准良好的结合,可以对建筑模型进行全面的、细致的、智能的查询。

4 结语

通过与支持XML数据管理的商用数据库结合、开发,ifcXML可以获得迅速而广泛的应用。目前,虽然建筑几何信息模型的应用与开发,以基于ifc格式的居多,但是以ifcXML为基础的模型受益于XML在Internet数据描述与交换上的“世界语”地位,在不同专业领域的交互中适用性会更好,有着更加广阔的应用和发展空间。

摘要:针对基于信息模型的建筑工程应用越来越广泛的现状,通过选定基于ifcXML的建筑几何信息模型表达方式并给予详述,比较了基于文件和数据库这两种途径的查询方法,并针对第二种方法进行了研究。

关键词:ifcXML,几何信息模型,查询,信息表达

参考文献

[1]邓雪原,张之勇,刘西拉.基于IFC标准的建筑结构模型的自动生成[J].土木工程学报,2007,40(2):6.

[2]邱奎宁,王磊.IFC标准的实现方法[J].建筑科学,2004,20(3):76.

[3]张剑涛,刁波,唐春凤.IFC模型中建筑信息的描述与获取方法[J].建筑科学,2004,20(3):76.

综合信息查询 篇10

1 数据库与数据表的结构

信息查询是对已存在数据库表中的记录或数据进行查询, 所以信息查询设计的前提是掌握相关数据库的类型及数据表的结构。对会计科目查询设计而言, 就是要弄清楚账务处理数据库中会计科目数据表的结构。假定账务处理数据库和会计科目数据表是利用Microsoft Office Access建立的, 账务处理数据库的文件名为zwcl.mdb, 会计科目数据表名为kjkm, 并假定kjkm数据表的结构如表1所示, 表内已保存了相关会计科目的记录。

2 查询表单界面及相关网页代码设计

2.1 查询表单界面与查询请求

查询界面可设计成不同的形式, 但应满足简明、易用、美观等界面设计原则, 并尽可能提供较多的检索途径。本文所设计的会计科目查询界面如图1所示, 其中待查询的项目可从下拉列表框中选择, 包括与kjkm数据表中的字段相对应的选项, 分别为科目编号、科目名称、借贷方向、期初余额, 默认的选项为“科目名称”。从下拉列表选择相应的项时, 在待查询的值所对应的区域可输入与待查询的项目对应的数据, 若单击“查找”按钮, 应能够将表单界面上的数据所对应的查询请求传递到服务器进行相关处理 (例如, 选择待查询项目为“科目名称”, 输入待查询值为“现金”, 则单击“查找”按钮时, 就会将查询“科目名称”为“现金”的请求传递到服务器进行处理) ;若单击“重填”按钮, 则可使表单重置为如图1所示的界面, 以便于继续选择待选查询项目和输入待查询的值。

2.2 查询界面对应的网页代码

可以利用UltraEdit、EditPlus或Windows操作系统中自带的“记事本”等任一文本编辑软件, 建立会计科目查询界面对应的网页文件AccountItemSearch.htm, 并将该文件保存在计算机硬盘的一个实际目录下, 再在“Internet信息服务”控制台中将该实际目录设置为虚拟目录kemu。文件AccountItemSearch.htm中的网页代码对应如下:

会计科目查询
请选择待查询的项目:

请输入待查询的值:

2.3 查询界面网页代码的有关说明

文件AccountItemSearch.htm所述代码的运行结果是如图1所示的信息查询界面。其中,

标记对之间的代码定义了一个表单,

标记中的action属性指明处理该表单的ASP文件为accountitemsearch.asp, method属性表明此表单用“POST”方法向ASP文件传递数据, 可使得ASP使用Request.Form集合来读取表单的数据。

标记对之间的代码的运行结果是一个表格, 与标记对指定表格的一行, 与标记对指定一个单元格的内容。其中, 指明表格居中, 表格的边框宽度 (或border属性) 为1;指定了表格上方的标题及字体字号;之间的代码定义了默认选项为“科目名称”的下拉列表框, 该下拉列表框的name属性为search, 其下拉列表项包括科目编号、科目名称、借贷方向、期初余额, 对应的value属性分别为kmbh、kmmc、jdfx、qcye;表示一个name属性为zhi的文本框。


是一个回车换行标记, 这里用来输出一个空行, 可使该查询界面的布局更合理。之后的

会计科目查询
之间的代码表示一个不显示边框 (border属性为0) 、对齐方式为居中的表格, 单元格内分别是type属性为submit的“查找”按钮和type属性为reset的“重填”按钮。

3 信息查询处理

3.1 查询处理逻辑与处理结果界面

图1中, 待查询的项目可以从下拉列表中选择, 可选项分别是科目编号、科目名称、借贷方向、期初余额, 其中科目名称是默认选项;待查询的值需要从键盘输入, 并对应于从下拉列表选择的项目。选择待查询项目并输入对应的值后, 可选择单击“重填”按钮或“查找”按钮。若单击“重填”按钮, 则待查询项目自动选择默认的选项, 待查询的值的输入区自动清空。若单击“查找”按钮, 就向服务器提交了信息查询的服务请求;服务器接收查询请求后, 立即在数据库中搜索与处理, 并将搜索与处理的结果传送至浏览器, 供用户使用。例如, 在如图1所示的界面中, 当输入待查询的值为“现金”时, 单击“查找”按钮可返回如图2所示的查询结果。单击图2中的“[返回] ”链接, 可返回如图1所示的界面继续进行查询。

另外, 当图1中待查询项选择为期初余额时, 若输入的值不为数值型数据, 则返回“期初余额不对!”及超链接“[请单击此链接返回] ”信息, 单击该超链接后可返回上一查询界面。

当待查询项选择为期初余额, 且输入的值是正确的数值型数据时, 或当待查询项选择为其余项 (科目编号、科目名称、借贷方向) 时, 若数据库中没有相关记录, 则返回“未找到相关记录!”及超链接“[请单击此链接返回] ”信息, 单击该超链接后可返回上一查询界面;若数据库中有相关记录, 则以表格形式输出查询结果及超链接“[返回] ”, 单击该链接后可转到如图1所示的查询界面。

3.2 查询处理对应的网页代码

为实现上述查询处理逻辑, 并返回相应的查询结果, 仍可利用UltraEdit、EditPlus或“记事本”等软件建立查询处理对应的网页文件accountitemsearch.asp, 注意该文件名必须与会计科目查询请求文件AccountItemSearch.htm中标记的action属性指定的文件名一致, 并且需要保存在同一目录下。会计科目查询处理文件accountitemsearch.asp的网页代码对应如下:

<%

strSearch=request ("search")

if strSearch="qcye" then

if isnumeric (request ("zhi") ) then

strSQL="select * from kjkm where "&strSearch&"="&request ("zhi")

else

response.write "期初余额不对!
"

response.write "[请单击此链接返回] "

response.end

end if

else

strSQL="select * from kjkm where "&strSearch&"=' "&request ("zhi") &"' "

end if

set conn=server.createobject ("ADODB.Connection")

conn.open="Driver={Microsoft Access Driver (*.mdb) };DBQ="&server.mappath ("zwcl.mdb")

set rs=server.createobject ("ADODB.Recordset")

rs.open strSQL, conn

if rs.eof then

response.write "无找到相关记录!
"

response.write "[请单击此链接返回] "

else

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

do

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

response.write "

"

rs.movenext

loop until rs.eof

response.write "

查询结果
科目编号科目名称借贷方向期初余额
"&rs ("kmbh") &""&rs ("kmmc") &""&rs ("jdfx") &""&rs ("qcye") &"

"

response.write "[返回] "

response.write "

"

end if

%>

3.3 查询处理网页代码的相关说明

accountitemsearch.asp的代码中, 分隔符<%与%>是ASP的脚本标记对, strSearch=request ("search") 表示由变量strSearch接收从浏览器端取得的与下拉列表框相对应的数据, 其中, request ("search") 是从浏览器端获得下拉列框中对应选项的Value属性值, search是下拉列表框的Name属性 (参见2.2和2.3节) , 当从下拉列表框选择科目编号、科目名称、借贷方向或期初余额时, strSearch的值分别对应于kmbh、kmmc、jdfx、qcye。由于查询表单界面对应的网页文件AccountItemSearch.htm中标记将其method属性设定为POST方法, 所以, request ("search") 在这里也可写成request.form ("search") , 表示查询处理程序采用Request对象的Form集合来获取表单中的数据。同理, request ("zhi") 也可写成request.form ("zhi") 。

分支语句if strSearch="qcye" then …… else …… end if表示的处理逻辑是, 当变量strSearch对应于qcye (对应于从浏览器端的下拉列表框中选择了“期初余额”) 时, 那么, 如果接收到的浏览器端输入区的数据是数值型数据, 则变量strSQL就代表一个按相应期初余额进行查询的SQL语句;如果接收到的浏览器端输入区的数据不是数值型数据, 就向浏览器端返回“期初余额不对!”及超链接“[请单击此链接返回] ”等信息, 并终止本网页代码的执行。当变量strSearch不为qcye (表示从浏览器端的下拉列表框中选择的不是“期初余额”, 而可能是“科目编号”、“科目名称”、或“借贷方向”) 时, 则变量strSQL就代表一个按相应科目编号、科目名称、或借贷方向进行查询的SQL语句。其中, isnumeric () 是数值型数据测试函数, request ("zhi") 是从浏览器端获得数据输入区的数据 (zhi是输入区文本框的Name属性, 参见2.2和2.3节) , response.write的功能是向浏览器端输出处理结果, response.end的功能是结束本程序的执行。注意strSQL对应的SQL语句中, where之后至少要有一个空格, 例如:strSQL="select * from kjkm where qcye=200.39";又如:strSQL="select * from kjkm where kmmc=' 现金' "。语句[请单击此链接返回] 表示一个超链接, 单击该链接时网页转到前一个页面。

set conn=server.createobject ("ADODB.Connection") 至rs.open strSQL, conn之间各语句的功能分别是建立连接对象conn、与数据库zwcl.mdb建立连接、创建记录集对象rs、打开记录集对象取得数据。其中, rs.open strSQL, conn执行后, 与浏览器端表单界面所述条件相匹配的查询结果 (或者说, 与strSQL所述查询语句相对应的结果) 就被保存在记录集对象rs中。

分支语句if rs.eof then …… else …… end if表示的处理逻辑是, 如果记录集对象rs中无记录, 则向浏览器端返回“未找到相关记录!”及超链接“[请单击此链接返回] ”信息, 否则, 就以表格的形式返回查询结果及超链接“[返回] ”。其中, 语句response.write "查询结果"的功能是向浏览端输出表格的标题, 该语句之后的代码功能是输出表格每栏的标题、循环输出各行的记录、输出“[返回] ”超链接。代码中, rs.eof用于测试记录指针是否位于最后一条记录之后, do与loop until rs.eof 是直到型循环结构, 记录指针位于最后一条记录之后时退出循环;与用于标记一个单元格中的内容, 并使单元格的内容以粗体出现, 常用于表格中的标题栏;rs ("kmbh") 、rs ("kmmc") 中的kmbh、kmmc等分别与kjkm数据表中的字段相对应 (参见表1) ;rs.movenext用于将记录指针移到下一条记录处, 通常, 输出一条记录后就需要将指针移到下一条记录;response.write "[返回] "表示在浏览器端建立超链接“[返回] ”, 单击该超链接时可返回到AccountItemSearch.htm表示的初始查询界面。

4 信息查询功能的实现

ASP是一种服务器端的脚本语言, 它只能在服务器环境下才能正常运行, 需要在Windows NT、Windows 2000、Windows XP及更高版本的操作系统上添加和安装IIS组件;ASP对客户端没有任何特殊要求, 只要有一个普通的浏览器即可。计算机安装IIS组件后, 就可以利用“Internet信息服务”控制台设置主目录及虚拟目录。在Windows操作系统的控制面板双击“管理工具”图标, 再在出现的“管理工具”界面双击“Internet信息服务”选项, 即可打开“Internet信息服务”控制台进行相关设置。

可将账务处理文件zwcl.mdb、AccountItemSearch.htm、accountitemsearch.asp保存在安装有IIS的计算机的主目录或某一个目录下。如果这些文件没有保存在主目录下, 则需要在“Internet信息服务”控制台将这些文件所在的目录设置为虚拟目录, 并指定虚拟目录的别名 (例如可将别名指定为kemu) 。该计算机作为服务器上网后, 用户可以在Internet上任何客户端的URL地址栏输入以下格式的网址来实现基于Web的信息查询功能:http://服务器域名或IP地址/虚拟目录别名/accountitemsearch.htm。

参考文献

[1]李国红.基于Web的会计科目输入处理的设计与实现[J].中国管理信息化, 2008 (13) :4-8.

综合信息查询 篇11

从近日结束的人保集团客户节上获悉,人保财险“承保理赔信息查询”系统迎来了上线一周年的日子,其查询量突破千万人次,客户满意度超过八成。

对此,行业评论人士普遍认为,作为行业首个客户自主查询系统,人保财险“承保理赔信息查询”系统一年来的出色表现,为行业树立了标杆和典范,具有广泛的行业和社会效益,为中国保险行业提升信息透明化、保障消费知情权建设等工作开启了新的篇章。

保险行业亟待信息透明

近几年,中国保险业改革发展取得了显著成绩,在服务经济社会大局上取得了明显成效。但随着快速发展,一些长期以来逐步积累的深层次矛盾和问题正在暴露和显现出来,“销售误导”、保险投诉和纠纷等问题一直为社会所诟病。

据相关统计数据显示,从2005年到2010年,中国各级人民法院受理的保险纠纷案件从14465件增加到59747件,短短5年间增幅高达3倍。

分析人士表示,造成这种现象的原因是多方面的,这其中可能有需求方即保险消费者的理解和认知局限的原因,比如因为保险知识欠缺,所以容易想当然或者被误导。但必须正视的是,保险消费者知情权不足,保险产品信息透明度不足在其中占有很大比例。

长期缺乏透明性将扰乱市场正常秩序,并会对保险行业的长远发展造成巨大影响。首都经济贸易大学社会保障研究中心副主任朱俊生认为,“透明性保证表现为信用基础、信息公开性和知情权等,是一种重要的工具性自由,所涉及的是满足人们对公开性的需要:在保证信息公开和明晰的条件下自由地交易。透明性自由的缺失,会导致市场运行的不规范和扰乱市场的正常秩序,严重影响人们对市场的预期和对企业的信用”。

行业监管促消费知情权建设

保监会也认识到行业存在的问题,明确提出“将加强产品监管,确保保险条款内容的公平性和合法性;加强透明度监管,解决消费者信息不对称的问题。督促保险公司做好信息披露工作,建成消费者相关信息自主查询系统”。

首都经济贸易大学社会保障研究中心副主任朱俊生认为,“市场的良性发展需要透明性自由,因为信息不对称和不完善将导致逆向选择与道德风险。通过有效的信息披露构建透明性自由,这是解决市场信息不对称、提高市场运转效率的重要措施。”

2011年6月22日,保监会出台规定,明确要求各财险公司在2011年8月1日前务必实现财产保险全险种领域(特殊风险业务除外)的查询。

中国人保财险公司始终把客户服务的满意度放在工作的首位,对于消费知情权方面的需求一直给予高度重视。2011年5月18日人保客户节期间响应保监会精神、在业内率先推出了包括电话、网站和营业网点柜台三种查询方式的“全险种客户保险信息自主查询”服务,成为首家实现各险种承保理赔信息自主查询服务的企业。

通过一年多的运行,人保财险“承保理赔信息查询”系统取得了超过1000万人次的查询量、高达83.46%客户满意度的突出成绩。

“查询方便快捷,财险信息一目了然,理赔进度轻松掌握……再也不会为保险信息的不透明而困扰疑惑了!”很多客户对于“查询系统”给予了高度评价。据了解,超过70%的客户表示“这个查询平台很方便,我经常用,对了解理赔进度很有帮助!”;还有70%的客户对于系统的查询体验表示,“不错,理赔查询进度很人性化,很详细”。

业内人士认为,承保理赔信息自主查询平台的建立,提高了保险产品信息的公开度、透明度,能够充分发挥社会监督作用,进一步推动保险公司提升承保、理赔服务质量和水平,并防止在客户不知情的情况下,被不法机构或个人利用而制造假赔案骗取赔款,并将有效减少之前保险行业信息不透明导致的消费纠纷和消费误导现象,切实维护消费者权益。

信息透明促企业和消费者双赢

“如果我办得到,我一定要把保险这个词写在家家户户的门上,以及每一位公务员的手册上,因为我深信,通过保险,每个家庭只要付出微不足道的代价,就可免遭万劫不复的灾难。”这是英国前首相温斯顿·丘吉尔关于保险价值的一句名言。

然而,由于行业问题尤其消费知情权建设的滞后和不足,保险在中国一直处于比较尴尬的地步,很多消费者对保险有着很深的负面成见。如今,随着保险行业信息透明化建设的推进,保险行业有望彻底进入“阳光下”,恢复其本来面目。

“以前对于保险听说过很多负面的信息,保险推销中的很多误导现象时有耳闻,所以一直对购买保险比较担心和有顾虑……现在有了这个自主查询系统,无论查保单还是查理赔都非常方便,心里放心多了。”人保财险客户李女士说出了很多保户的心声。

在针对人保财险“承保理赔信息自主查询系统”的网络调查中,有超过90%的客户对于人保推出的客户自主查询系统给予了支持和肯定。有客户表示,“通过查询系统能随时掌握自己保险的情况,感觉非常放心,对于保险的信赖度也大大提升了”。

分析人士认为,随着国民生活水平的提升和社会保障意识的增加,对于保险的需求将日益提升,进一步扭转改善保险行业的整体形象,提升客户认可接受度,对于保险的长远发展具有积极意义。

对此,中国保监会主席项俊波也指出,“加大保险监管工作力度,是保护消费者利益的关键环节。全行业要深刻认识当前保险市场存在的主要问题,进一步增强保险监管的紧迫感。”

近日,保监会聘任了来自社会各界的25名人士作为社会监督员,对保险公司履行消费者权益保护职能实施监督,此举可谓进一步表明了保监会强化行业监管的决心。

Case函数在信息查询中应用 篇12

1 CASE函数介绍

1.1 CASE函数形式

CASE函数有两种形式。

1.1.1 简单CASE函数

格式:CASE输入表达式

WHEN当表达式THEN结果表达式[...n]

[ELSE其它结果表达式]

END

功能:首先计算输入表达式, 然后按指定顺序判断每个WHEN子句的当表达式是否与输入表达式相等, 返回第一个相等的结果表达式的值;如果没有相等的, 则当指定ELSE子句时SQL Server将返回其它表达式的值;若没有指定ELSE子句, 则返回NULL值。

1.1.2 CASE搜索函数

格式:CASE

WHEN布尔表达式THEN结果表达式[...n]

[ELSE其它结果表达式]

END

功能:按指定顺序求每个WHEN子句布尔表达式的值, 返回第一个取值为TRUE的结果表达式的值;如果没有取值为TRUE的布尔表达式, 则当指定ELSE子句时SQL Server将返回其它结果表达式的值;若没有指定ELSE子句, 则返回NULL值。

1.2 参数说明

1) 输入表达式:任何有效的Microsoft®SQL Server™表达式;

2) 当表达式:任意有效的SQL Server表达式。输入表达式和每个当表达式的数据类型必须相同, 或者是隐性转换;

3) N:占位符, 表明可以使用多个“WHEN当表达式THEN结果表达式”子句或“WHEN布尔表达式THEN结果表达式”子句;

4) 结果表达式和其它结果表达式:是任意有效的SQL Server表达式;

5) 布尔表达式:任意有效的布尔表达式。

1.3 结果类型

从结果表达式和其它结果表达式的类型集合中返回最高的优先规则类型。

2 数据表及说明

下表是宿舍信息管理系统中的宿舍分数表, w1-w5分别是星期一到星期五的分数, 其中没有成绩的为当天没有查此宿舍。

3 CASE在信息查询中应用

3.1 查询周平均分

由于星期一到星期五不是每天查所有的宿舍, 没有被查的宿舍成绩为null, 如果直接把null的数据与其它数据进行计算, 结果还是为null, 所以计算平均分数时, 不可以使用下面语句进行计算和查询。

SELECT楼号, 宿舍, 平均分= (w1+w2+w3+w4+w5) /5FROM分数表

需要使用CASE函数把每天的分数进行转化, 有成绩的按成绩计算, 没有成绩的不计算在内或者说按0计算, 并用相似的方法统计宿舍被查的天数, 最后计算平均值, 查询语句格式如下。

SELECT楼号, 宿舍, 平均分= (case when s1 is not null then s1 else 0 end

+case when s2 is not null then s2 else 0 end

+case when s3 is not null then s3 else 0 end

+case when s4 is not null then s4 else 0 end

+case when s5 is not null then s5 else 0 end) /

(case when s1 is not null then 1 else 0 end

+case when s2 is not null then 1 else 0 end

+case when s3 is not null then 1 else 0 end

+case when s4 is not null then 1 else 0 end

+case when s5 is not null then 1 else 0 end)

FROM分数表

3.2 多条件不定组合模糊查询

在宿舍管理过程中, 经常会遇到多条件不同组合模糊查询的需求, 为了很好地完成这个功能, 可以设计一个存储过程, 使用CASE函数和CHARINDEX函数来完成查询条件的设置。例如经常需要查询某班、某宿舍、男生或女生的分数情况;这些条件的组合有多种, 有时需要查某班宿舍的分数, 有时需要查某班男生或女生宿舍的分数, 有时需要查某宿舍的分数。可以设计下面代码的存储过程。

3.3 统计查询每系部男生女生各优秀宿舍数目

在分数表中, 只有班级编号, 没有班级名信息, 其中bj1-bj3是化工系班级, bj4-bj6是建工系班级, 其它为计算机系班级。在按系部统计男女生优秀宿舍的数目时, 需要首先把班级编号转化为系部, 然后再统计各系部的优秀宿舍数目, 可以使用CASE函数把班级编号转化为具体系部, 如果平均分为98分

以上的为优秀, 查询语句的格式如下:

SELECT

CASE班级编号

WHEN'bj1'THEN'化工系'

WHEN'bj2'THEN'化工系'

WHEN'bj3'THEN'化工系'

WHEN'bj4'THEN'建工系'

WHEN'bj5'THEN'建工系'

WHEN'bj6'THEN'建工系'

ELSE'计算机系'END系部, 性别, count (*) 数量

INTO优秀宿舍数

FROM宿舍成绩表

WHERE平均分>=98

GROUP BY CASE班级编号

WHEN'bj1'THEN'化工系'

WHEN'bj2'THEN'化工系'

WHEN'bj3'THEN'化工系'

WHEN'bj4'THEN'建工系'

WHEN'bj5'THEN'建工系'

WHEN'bj6'THEN'建工系'

ELSE'计算机系'END, 性别

3.4 表格转换

有时需要把表格转换成更适合人们习惯、更易接受的表格。下面把优秀宿舍数表 (字段:系部, 性别, 数量) 转化为各系优秀宿舍数表 (字段:系部, 男, 女) , 使用Case函数来完成此功能。

SELECT系部,

SUM (CASE WHEN性别='男'THEN

数量ELSE 0 END) ‘男’, -统计男性宿舍

SUM (CASE WHEN性别='女'THEN

数量ELSE 0 END) ‘女’-统计女性宿舍

INTO各系优秀宿舍数

FROM优秀宿舍数

上一篇:课堂失败后反思下一篇:管理措施