45fan.com - 路饭网

搜索: 您的位置主页 > 电脑频道 > 电脑教程 > 阅读资讯:设计行政区划程序的方法

设计行政区划程序的方法

2016-09-01 14:20:22 来源:www.45fan.com 【

设计行政区划程序的方法

Author:水如烟

总目录:行政区划数据方案设计

上一篇,行政区划程序的设计(十五),实现获取区划信息功能_1。


上一篇实现的是获取各种版本的数据集。
针对这个方案的特点,用户使用更多的可能只是针对某一版本的数据集,特别是可能只使用最新版本的数据集。
这一篇的代码,已接近界面上的应用。

以下代码在RegionalCodeCenter项目实现。

由于在一开始的方案分析中,分析还是全面、准确、到位、有效的,也通过接口明确了各种范围、各个应用的分工,所以,就算断断续续的来实现这个方案,来写代码,思路还是沿承了下来,没有给弄糊涂。

接口IClientUseServices其实实现的是下面流程图的左边部分。

Namespace[Interface]
PublicInterfaceIClientUseServices
EventServiceMessageAsServiceMessageHandler

FunctionIsSameDataDate(ByValqueryDataDateAsDateTime,ByValcurrentDataDateAsString)AsBoolean
FunctionGetAllInformationsTable(ByValqueryDataDateAsDateTime)AsRegionalCodeCommon.Database.dsRegionalCode.AllInformationsDataTable
FunctionGetVersionsDataTable()AsRegionalCodeCommon.Database.dsRegionalCode.VersionsDataTable

SubDispose()
EndInterface
EndNamespace

设计行政区划程序的方法


在实现接口前,先建一个类RegionalCodeService来取各版本的数据集。
RegionalCodeService.vb

NamespaceServices
PublicClassRegionalCodeService
InheritsRegionalCodeCommon.Services.RegionalCodeServiceBase

SubNew(ByValconnectionStringAsString)
MyBase.New(NewServices.ServerServices(connectionString))
EndSub

EndClass
EndNamespace

实现接口的类ClientUseServices有两个文件,
ClientUseServices.vb

NamespaceServices
PublicClassClientUseServices
ImplementsRegionalCodeCommon.Interface.IClientUseServices
PublicEventServiceMessage(ByValsenderAsObject,ByValmessageAsString)ImplementsRegionalCodeCommon.Interface.IClientUseServices.ServiceMessage

'数据服务
PrivateWithEventsgRegionalCodeServiceAsRegionalCodeCommon.Services.RegionalCodeServiceBase

'''<paramname="regionalCodeService">数据服务</param>
SubNew(ByValregionalCodeServiceAsRegionalCodeCommon.Services.RegionalCodeServiceBase)
Me.gRegionalCodeService=regionalCodeService
EndSub

'版本集
PrivategVersionDateTableAsNewRegionalCodeCommon.Database.dsRegionalCode.VersionsDataTable

'当前区划信息
PrivategCurrentAllInformationsTableAsNewRegionalCodeCommon.Database.dsRegionalCode.AllInformationsDataTable

'当前版本
PrivategCurrentVersionDateAsString="Empty"

'数据来源

PublicPropertySource()AsRegionalCodeCommon.Services.RegionalCodeServiceBase.DataSource
Get
ReturnMe.gRegionalCodeService.Source
EndGet
Set(ByValvalueAsRegionalCodeCommon.Services.RegionalCodeServiceBase.DataSource)
Me.gRegionalCodeService.Source=value
EndSet
EndProperty

'存放区划码信息的文件
PublicPropertyRegionalCodeFileName()AsString
Get
ReturnMe.gRegionalCodeService.RegionalCodeFileName
EndGet
Set(ByValvalueAsString)
Me.gRegionalCodeService.RegionalCodeFileName=value
EndSet
EndProperty

'存放服务器当前版本集的文件
PublicPropertyVersionDateFileName()AsString
Get
ReturnMe.gRegionalCodeService.VersionDateFileName
EndGet
Set(ByValvalueAsString)
Me.gRegionalCodeService.VersionDateFileName=value
EndSet
EndProperty

'''<summary>
'''起用最旧版本
'''</summary>
'''<remarks>如查询日期早于最旧版本日期,使用最旧的版本</remarks>
PublicPropertyUseOldestVersion()AsBoolean
Get
ReturnMe.gRegionalCodeService.UseOldestVersion
EndGet
Set(ByValvalueAsBoolean)
Me.gRegionalCodeService.UseOldestVersion=value
EndSet
EndProperty



PublicFunctionIsSameDataDate(ByValqueryDataDateAsDate,ByValcurrentDataDateAsString)AsBooleanImplementsRegionalCodeCommon.Interface.IClientUseServices.IsSameDataDate

ReturnMe.gRegionalCodeService.IsSameDataDate(queryDataDate,currentDataDate)
EndFunction

PrivateSubgRegionalCodeService_ServiceMessage(ByValsenderAsObject,ByValmessageAsString)HandlesgRegionalCodeService.ServiceMessage
SendMessage(message)

EndSub

PrivateSubSendMessage(ByValmessageAsString)
RaiseEventServiceMessage(Nothing,message)
EndSub

PublicSubDispose()ImplementsRegionalCodeCommon.Interface.IClientUseServices.Dispose

EndSub


EndClass
EndNamespace
 

ClientUseServices.GetData.vb

NamespaceServices
PartialClassClientUseServices

PublicFunctionGetAllInformationsTable(ByValqueryDataDateAsDate)AsRegionalCodeCommon.Database.dsRegionalCode.AllInformationsDataTableImplementsRegionalCodeCommon.Interface.IClientUseServices.GetAllInformationsTable

'如果查询版本与当前版本相同,则取当前区划信息;否则从gRegionalCodeService数据集中取

IfNotIsSameDataDate(queryDataDate,Me.gCurrentVersionDate)Then

gCurrentAllInformationsTable=Me.gRegionalCodeService.GetAllInformationsTable(queryDataDate)
IfMe.gCurrentAllInformationsTableIsNotNothingThen

Me.gCurrentVersionDate=Me.gCurrentAllInformationsTable.TableName
Else

Me.gCurrentVersionDate="Empty"
EndIf
EndIf

ReturnMe.gCurrentAllInformationsTable
EndFunction

PublicFunctionGetVersionsDataTable()AsRegionalCodeCommon.Database.dsRegionalCode.VersionsDataTableImplementsRegionalCodeCommon.Interface.IClientUseServices.GetVersionsDataTable
'版本集总向gRegionalCodeService数据集中取

Me.gVersionDateTable=Me.gRegionalCodeService.GetVersionsDataTable

ReturnMe.gVersionDateTable
EndFunction

PublicReadOnlyPropertyCurrentVersionDates()AsSystem.Collections.ObjectModel.ReadOnlyCollection(OfString)
Get
DimtmpListAsNewList(OfString)
ForEachrowAsRegionalCodeCommon.Database.dsRegionalCode.VersionsRowInMe.gVersionDateTable.Rows
tmpList.Add(row.版本日期)

Next
ReturnNewSystem.Collections.ObjectModel.ReadOnlyCollection(OfString)(tmpList)
EndGet
EndProperty

PublicSubLoad()
Me.gRegionalCodeService.Load()
EndSub

PublicSubSave()
Me.gRegionalCodeService.Save()
EndSub
EndClass
EndNamespace

以上是在命名间Services上的,我再将它提交到根里去,也起名为RegionalCodeService类,

PublicClassRegionalCodeService
InheritsServices.ClientUseServices
SubNew(ByValconnectionStringAsString)
MyBase.New(NewServices.RegionalCodeService(connectionString))
EndSub
EndClass

这样,RegionalCodeCenter根命名下只有两个服务类,
一是UpdateDatabaseService,含实现更新数据的全部信息,
二是RegionalCodeService,含实现查询数据的全部信息。

我对这两篇实现的功能做了简单测试,效果如下:

设计行政区划程序的方法

到目前的方案代码缓后再上传。

下一篇,行政区划程序的设计(十七),服务和环境的结合。

 

本文地址:http://www.45fan.com/dnjc/70842.html
Tags: 程序 行政区划 十六
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部