类似邮编区号查询的读写文件操作,遇到难点,散分求助!

qidaozhilong 2004-11-09 12:43:08
我在编一个类似邮编查询系统时遇到一个问题,没有很好的思路,请大家谈谈思路
已知2个TXT文件
province.txt---结构如下:
1,北京
2,天津
3,河北
4,山西
5,辽宁
6,吉林
7,上海
8,江苏
......
postalcode.txt---结构如下:
1
北京,010,100000
通县,010,101100
昌平,010,102200
怀柔,010,101400
大兴,010,102600
延庆,010,102100
顺义,010,101300
平谷,010,101200
房山,010,102400
密云,010,101500
2
天津,022,300000
宝坻,022,301800
静海,022,301600
汉沽,022,300480
塘沽,022,300450
蓟县,022,301900
武清,022,301700
宁河,022,301500
大港,022,300270
3
石家庄,0311,050000
邯郸,0310,056000
保定,0312,071000
张家口,0313,075000
承德,0314,067000
唐山,0315,063000
廊坊,0316,102800
沧州,0317,061000
衡水,0318,053000
邢台,0319,054000
秦皇岛,0335,066000
隆化,03201,068150
4
太原,0351,030000
忻州,0350,034000
大同,0352,037000
阳泉,0353,045000
榆次,0354,030600
长治,0355,046000
......
要求是:
程序设计2个lst
点击左边lstprovince的地名,在右边显示相应的lstcode地名,长途区号和邮政编码
另外程序需要一次全部读入数据,而不是每次操作时在处理
而且,显示的时候需要考虑对齐(没思路)
////////////////////My_Code///////////////////////////
......'变量定义
Private Sub Form_Load()
'txt文件不存在的错误处理
If Dir(App.Path & "\province.txt") = "" Then
a$ = MsgBox("出错,province.txt文件不在当前目录下!", 0 + 48, "PostCode")
End If
If Dir(App.Path & "\postalcode.txt") = "" Then
b$ = MsgBox("出错,postalcode.txt文件不在当前目录下!", 0 + 48, "PostCode")
End If
'读取province.txt给省份列表框
x = 1
Open App.Path & "\province.txt" For Input As #1
Do While Not (EOF(1))
ReDim Preserve str1(x)
Line Input #1, str1(x)
n = DivideString(str1(x), ",", city1)
lstProvince.AddItem city1(2)
x = x + 1
Loop
Close #1
'读取postalcode.txt,并存放在内存中
y = 1
Open App.Path & "\postalcode.txt" For Input As #2
Do While Not (EOF(2))
ReDim Preserve str2(y)
Line Input #2, str2(y)
'If Not Val(str2(y)) Then
'???
'else
'???
'End If
'以上是编写遇到困难的地方
y = y + 1
Loop
Close #1
End Sub

'字符串分割函数
Public Function DivideString(s As String, d As String, a() As String) As Integer
Dim i As Integer 'i指向分割符d
Dim j As Integer 'j指向子字符串的首字母
Dim num As Integer
i = InStr(s, d)
j = 1
Do While i > 0
num = num + 1
ReDim Preserve a(num)
a(num) = Mid(s, j, i - j)
j = i + 1
i = InStr(j, s, d)
Loop
num = num + 1
ReDim Preserve a(num)
a(num) = Mid(s, j, Len(s) - j + 1)
DivideString = num
End Function

'点击省份显示相应的邮编与区号
Private Sub lstProvince_Click()
'没思路编不下去了
End Sub
...全文
273 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
northwolves 2004-11-16
  • 打赏
  • 举报
回复
1。可以用INI 文件解决。
2。直接用一个如下格式的文本文件:

北京,北京,010,100000
北京,通县,010,101100
....
libralibra 2004-11-16
  • 打赏
  • 举报
回复
用txt处理小量数据或许还可以,但是如果太多就不合算。
ado连数据库罢,整一个access就成
mingday 2004-11-16
  • 打赏
  • 举报
回复
up
接分
韧恒 2004-11-09
  • 打赏
  • 举报
回复
这种东西建议还是用数据库比较好。如此大的数据量用txt文件,一次读入内存不太科学。
qidaozhilong 2004-11-09
  • 打赏
  • 举报
回复
以上代码的字符串分割函数代码举例
dim str() as string
strcity="北京,上海,广州..." '长字符串
n=DivideString(strcity,",",str) '分解字符串
’意思是sTR(1)=“北京”,str(2)=“上海”,str(3)="广州"

问题是如何把数据一次写入内存(便于查询的结构),和左边lstprovince的地名一一对应?

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧