BusQuery的数据制作
这里的制作方法已经过时, 请在”BusQuery3.8及数据制作工具”目录下寻找最新的3.8版数据制作工具.
一写到数据制作我就头疼,它对制作者有几个要求:懂点java,会点access数据库。尤其是数据库部分,恐怕很多人从接触电脑以来从未接触过数据库,所以往往是,我以为我写得很清晰了,可别人觉得晦涩不清。
制作工具包含两个程序,InputDB和ExceWrite4。制作步骤包含三步:用InputDB输入数据到数据库,在数据库中执行查询,用ExceWrite4从数据库中导出数据。
首先是电脑上的软件准备。
执行java程序需要”java运行时环境”,简称JRE,现在最新版本是JRE 6 update 2 ,它可以从java.sun.com下载,也可下载javaSE 6,其中也包含JRE, 最好是下载java se6
操作access数据库需要access数据库软件,这个一般的office安装时都安装上了.
1.在原数据库中属性表Proper中增加属性定义,它是所有车所有属性的集合,车的属性只能从此集合中选择。属性定义的次序不能在开始输入数据后变动,可以往尾部添加,但最好是一次定义好.一共可以定义15种属性。数据输入开始后记录的只是属性的次序,不是属性表中的BitID字段值。其实有些车都有隐含属性。如有的车有“空调车”属性,那么其它车就有“非空调车”属性。设计完属性集合之后,一定要试着看看常用的查询集合在未勾选某些属性下是否可行。软件运行时是以未勾选属性作筛选依据的,只要车含有未勾选的属性则不列入搜索范围。假如你不把“非空调车”作为一条属性加入属性集的话,用户只想查坐“空调车”的搜索范围设定就无法实现,你想一下。我在制作北京的数据时设置了以下几条属性:
末班车在20:00(含)以前发出
末班车在22:30(含)以前发出
末班车在22:30(不含)以后发出
电车
地铁
机场专线
夜班线路
把白天的车按运行时间长短分成了三个时段,这种方式下,想只查“电车”的就不可能了。因为并没有一个“非电车”的属性让用户不勾选。用户只勾选“电车”属性是没有任何车列入搜索范围的,因为任何一辆电车都具有前三个属性中的一种。我设计的上海的属性集合是这样的:
运营到19点
运营到20点
运营到21点
运营到22点
运营到23点
夜宵线路
高峰线路
地铁线路
机场线路
电车
无人售票
有人售票
在线路表中并没有“有人售票”这种属性,是我自己加上的,这是为了方便喜欢“无人售票”的人坐车,你想想,如果没有“有人售票”这种属性,勾选“无人售票”也只是在所有车集合中增加“无人售票”类型,却不可以把“有人售票”的排除在外。至于时段的详细划分,是为了方便夜间查车。
有许多城市没有这么复杂,可以只要一个属性”普通车”.

2.把原始空数据库定义为odbc数据源BusQuery,

执行InputDB程序.在DOS命令行下,进到InputDB.class程序所在的目录,输入java InputDB,回车运行。从网页导入数据的工具htmlInputDB的命令行则稍微复杂一点.
![]()
![]()
只有按“保存”按钮,数据才被导入数据库,数据有错误时界面上会出提示信息,无错后所有输入框会清除。在车名框中输入车名后回车,则会显示该车的站信息(内部格式).环行车只需要往上行线中填入数据,上下行完全相同的,把上行线中的数据原样复制一份到下行线中。车名是“数字”或“字母+数字”,最多一个字母,数字都不能大于2048.往一个相同车号中重新输入数据会覆盖掉原有数据,但目前删除某路车的数据则只有打开数据库中的查询”排序查看busAndStop”直接删除记录,再把BusProper表中的相应记录删除.
3.新建unicode排序之数据库,
![]()
把原始数据库的所有表和查询导入其中.
![]()
双击”生成BusNameTab”查询,双击”生成BusStopName”查询,执行两个追加查询可从BusAndStop表中提取车名和站名填入两个表中,目的是为车号和站名设置ID号.
![]()
4.新建汉语拼音排序之数据库,把unicode数据库的所有表导入其中.把此数据库定义为odbc数据源BusQuery4
5.编辑help.txt文件, 空格之前的部分是不会在帮助中显示出来的. 帮助显示的时候略过了前20个字符.在此文件中告诉用户BusQuery的输入格式和其它信息,如车名中的字母的意义、制作者的名字、制作日期以及未在数据中的其它一些车信息,但最好尽量短,因为它的长度会增加数据的最终长度。而s40的手机往往限制软件的大小不能超过64K.
6.执行ExceWrite4程序,格式是: “java ExceWrite4 BusQuery4 车总数 站名总数 默认属性字符串”,一个例子是:java ExceWrite4 528 4323 03456 。车总数是528,也就是BusNameTab中的记录总数,
![]()
站总数是952,也就是BusStopName表的记录总数,默认属性字符串是03456,是指默认的搜索集合为第14567条属性的车.
![]()
6.关于默认属性字符串说明一下: 每种车具有不只一种属性:如市内车,空调车,电车,夜间车中的几种. 默认属性”045″表示选择的属性是第1、第5、第6条属性。用户使用你制作的数据不改变属性设置而查询的时候,默认选择的就是这几种属性。一般是白天所有可坐到的车,例如上海的用户就不能在默认属性中加入“高峰车”,更不可以加入“夜间车”,因为高峰车只在早晚高峰运营。这里的045指的是属性列表中的排序次序,不是它的BitID,BitID随着在表中删除增加属性而增大。次序大于10时就用abcde表示,也就是16进制表示方法,当然不能用10来表示了,它会被ExceWrite4程序理解为第2和第1条属性。
程序执行需要一段时间,完成的时候,程序所在目录下就会多出四个数据文件:BusQuery.dat,BusQuery1.dat, BusQuery2.dat , BusQuery3.dat,这就是BusQuery软件所需要的数据了。
BusQuery3.7数据制作方法.zip
08月 5th, 2007 at 8:42
沙发.
08月 5th, 2007 at 8:45
也安装了,可是就是不会制作数据软件:(
08月 5th, 2007 at 8:53
老兄,你北京的数据啥时候发啊?辛苦辛苦~~
08月 11th, 2007 at 4:34
老兄,数据制作方法下载不了啊~
08月 11th, 2007 at 7:56
不能下载的问题已解决,可以下载了
08月 11th, 2007 at 9:29
真是及时啊!
08月 21st, 2007 at 2:01
偶是菜鸟,想制作广州的数据,但是第3步的”新建unicode排序之数据库”不太懂如何新建.请各位赐教.谢谢!
08月 21st, 2007 at 3:36
to jeaman, 在打开数据库的时候,工具菜单下有个”选项”,点击后有个”常规”, 数据库排序方式里,下拉下,有”汉语拼音”,”韩文unicode”等, 选韩文unicode,再新建的数据库就是按unicode排序的.新的数据库,要在”文件”菜单中用”导入”功能导入已有数据库的表和查询.
09月 30th, 2007 at 2:08
楼主,能能上个有截图的数据制作教程,有些地方看的不是太明白,
“3.新建unicode排序之数据库,把原始数据库的所有表和查询导入其中. 执行两个追加查询,从原始表中提取车名和站名填入两个表中.
4.新建汉语拼音排序之数据库,把unicode数据库的所有表导入其中.把此数据库定义为odbc数据源BusQuery4”
已经在第3步做成unicode排序,为什么还要在第4步做成汉语拼音排序,软件不是不认拼音排序吗?
09月 30th, 2007 at 5:32
因为java程序写的数据制作工具不能从unicode排序的数据库中读取记录,所以只好把数据库再转换成”汉语拼音排序”的. 既然在第三步中已经把站名正确排序,并且按序给每个站名一个ID(站号), 第四步只是改变数据库的排序方式,并不改变站号ID, 那么也就不会影响到最终的结果了.截图马上提供,以htmlInputDB为例.
10月 4th, 2007 at 4:02
楼主回答很及时,谢谢楼主,望截图尽快发上或制作一个更为方便的软件,集人工输入与自动网页输入为一身,再次感谢楼主制作此软件!
不知道楼主有没有打算在做一个火车列表,网上有一个极品时刻表使用很不错,但作者一直没能发部JAVA版的,目前只有PC,PPC,SP版!
10月 4th, 2007 at 4:56
列车时刻表做起来倒不难, 难的是数据的实时更新, 我没有可靠的数据获取通道. 所以只好作罢.
02月 27th, 2008 at 9:07
近期内会更新一下数据制作方法。制作出的数据适用于3.8版。
05月 6th, 2008 at 10:10
学习了,试试做下湖北襄樊的查询软件。。谢谢了。