因奔忙于生活,本人拙作《LGuo的电子运行图》自2007年4月17日发布“六提数据版”(2.40版)以后便一直没有发布后续版本。期间有不少车迷朋友关心新版本、特别是新数据的更新,在此我说明一下:
1. 这个小软件是我业余时间开发的,开发之初并没有考虑到后续公开源码、分工维护等方面的问题,为了赶进度,代码风格方面没有太注意,大多数地方也都没写注释。完整的源码我给过上海交大的Colin网友(是100多M的完整的开发目录,包括我后来移植的一个C#版本的半成品),achen1网友手上也有一套源码(具体哪个版本我忘记了)。如果有谁能够提供稳定的空间的话我可以把源码放上去共享,如果有人愿意并有能力维护的话我会非常高兴,否则什么时候会有新版本发布我实在无法确定。
2. 软件功能方面的维护可能难度比较大,如果有谁愿意为这个小软件更新数据造福广大网友的话我也会很高兴,在此公布一下数据格式:
一、线路表用的两个文件:
1 exl.eda 线路表,每行一条线路
第一位:拼音首位
第二位:序号(经过1位编码),拼音首位相同的线路顺序编号
后续:线路中文名
2 elc.eda 里程表,每行一个车站
第一、二位:所属线路号(既线路表exl.eda里的第一、二位)
第三位:车站等级(特等站为0)
第四、五位:里程(经过2位编码)
后续:车站中文名
二、时刻表用的三个文件:
1 ezm.eda 站名表,每行一个车站,所有办客车站。时刻表里的车站用这个文件中的序号。
2 ecc.eda 车次表,每行一个车次,所有车次。时刻表里的车次用这个文件中的序号。
3 etrc.eda 时刻表,每8个字节一条数据
第一、二位:车次序号(车次在ecc.eda中的顺序号,经过2位编码)
第三、四位:车站序号(车站在ezm.eda中的顺序号,经过2位编码)
第五位:到达小时数(经过1位编码)
第六位:到达分钟数(经过1位编码)
第七位:发车小时数(经过1位编码)
第八位:发车分钟数(经过1位编码)
三、数值编解码Java源码,用于数值的压缩存储。是Base64的"变种"(有没有"变"忘记了,反正原来是准备变的)
- public static char[] codeTable = {
- '0', '1', '2', '3', '4', '5', '6', '7',
- '8', '9', 'a', 'b', 'c', 'd', 'e', 'f',
- 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
- 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
- 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D',
- 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L',
- 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
- 'U', 'V', 'W', 'X', 'Y', 'Z', '.', ' ',
- };
- //解码,字符到数值
- public static int decode(char c) {
- for(int i=0; i<codeTable.length; i++)
- if(codeTable[i] == c)
- return i;
- return 0;
- }
- //一位编码(用于时、分、站序的数值)
- public static String encode1(int num) {
- return "" + codeTable[num];
- }
- //两位编码(用于编号、里程等数值)
- public static String encode2(int num) {
- if(num >= 64*64)
- return "##";
-
- int num1 = num / 64;
- int num2 = num % 64;
-
- return "" + codeTable[num1] + codeTable[num2];
- }
复制代码 |