
题目2 列车时刻查询
知识点:(1)读文本文件;(2)动态数组;(3)列表框控件的使用;(4)字符串处理;(5)多行文本框控件的使用。
1.题目介绍
坐火车是人们出行的重要交通方式,列车的起点站、终点站和发车时间、到达时间以及沿途经停各站的站名、停车发车时刻是人们非常关心的内容。本题目要求编制一个能够方便地查询上述信息的实用程序。
2.功能要求
(1)设计类似于图1所示的程序界面。程序启动后,左边的列表框中显示所有车次。单击其中一项,在窗口右上方的4个文本框中显示此车次的起点站、终点站和发车、到达时刻;在右下方的文本框(不能使用列表框)中显示此次车沿途停靠的所有车站及相应的到站和发车时刻。
(2)在“经停车站”组合框中选择一个站名后,列表框中只列出经过该车站的车次(如图2列出了所有经过郑州的列车);单击列表框下方的“显示全部车次”按钮,列表框中重新列出所有车次。
(3)“经停车站及时刻”文本框中各车站所对应的站名、到站时间、发车时刻应纵向对齐,特别是时间,必须通过冒号对齐,如图1和图2所示。
(4)本题目提供了两个数据文件:content.txt和detail.txt,程序中用到的车次信息均来自于这两个文件。如果本程序启动时在可执行文件所在的文件夹下未找到其中任何一个文件,则显示出错信息并自动关闭程序。要求编程时不能改变这两个文件的存储格式。
3.难点与提示
(1)本题目提供了2003年春季列车时刻表中所有经过南京站的车次信息,数据保存在content.txt和detail.txt这两个文本文件中。程序显示的信息都是从这两个文件中读取的。如果列车时刻有所变化,只需修改这两个文件的内容即可,不必改动程序。
(2)content.txt文件中保存了各车次的概要信息,包括车次名、起点站、终点站、发车时刻和到达时刻,一个车次占一行。如图3所示。
(3)detail.txt文件中保存了所有车次停靠站的详细信息,如图4所示。此文件存储格式为:
*
车次1
起点站名,---,发车时刻
经停站1,到达时刻1,发车时刻1
经停站2,到达时刻2,发车时刻2
……
经停站n,到达时刻n,发车时刻n
每个车次信息的保存方式都是相同的:首先一个星号“*”为一行;然后车次名为一行;再后是停靠站的站名和到达、发车时刻,每个站为一行。起点站的“到达时刻”和终点站的“发车时刻”均为“---”。因为每次车停靠站的数目不同,在读取detail.txt文件时,必须正确判断星号“*”的位置。
文件detail.txt中各车次的先后顺序与content.txt文件顺序相同。
(4)程序应在启动时将所有信息从文件读入动态数组中,从而不必在查询过程中频繁地读取文件影响查询速度。
知识点:(1)读文本文件;(2)动态数组;(3)列表框控件的使用;(4)字符串处理;(5)多行文本框控件的使用。
1.题目介绍
坐火车是人们出行的重要交通方式,列车的起点站、终点站和发车时间、到达时间以及沿途经停各站的站名、停车发车时刻是人们非常关心的内容。本题目要求编制一个能够方便地查询上述信息的实用程序。
2.功能要求
(1)设计类似于图1所示的程序界面。程序启动后,左边的列表框中显示所有车次。单击其中一项,在窗口右上方的4个文本框中显示此车次的起点站、终点站和发车、到达时刻;在右下方的文本框(不能使用列表框)中显示此次车沿途停靠的所有车站及相应的到站和发车时刻。
(2)在“经停车站”组合框中选择一个站名后,列表框中只列出经过该车站的车次(如图2列出了所有经过郑州的列车);单击列表框下方的“显示全部车次”按钮,列表框中重新列出所有车次。
(3)“经停车站及时刻”文本框中各车站所对应的站名、到站时间、发车时刻应纵向对齐,特别是时间,必须通过冒号对齐,如图1和图2所示。
(4)本题目提供了两个数据文件:content.txt和detail.txt,程序中用到的车次信息均来自于这两个文件。如果本程序启动时在可执行文件所在的文件夹下未找到其中任何一个文件,则显示出错信息并自动关闭程序。要求编程时不能改变这两个文件的存储格式。
3.难点与提示
(1)本题目提供了2003年春季列车时刻表中所有经过南京站的车次信息,数据保存在content.txt和detail.txt这两个文本文件中。程序显示的信息都是从这两个文件中读取的。如果列车时刻有所变化,只需修改这两个文件的内容即可,不必改动程序。
(2)content.txt文件中保存了各车次的概要信息,包括车次名、起点站、终点站、发车时刻和到达时刻,一个车次占一行。如图3所示。
(3)detail.txt文件中保存了所有车次停靠站的详细信息,如图4所示。此文件存储格式为:
*
车次1
起点站名,---,发车时刻
经停站1,到达时刻1,发车时刻1
经停站2,到达时刻2,发车时刻2
……
经停站n,到达时刻n,发车时刻n
每个车次信息的保存方式都是相同的:首先一个星号“*”为一行;然后车次名为一行;再后是停靠站的站名和到达、发车时刻,每个站为一行。起点站的“到达时刻”和终点站的“发车时刻”均为“---”。因为每次车停靠站的数目不同,在读取detail.txt文件时,必须正确判断星号“*”的位置。
文件detail.txt中各车次的先后顺序与content.txt文件顺序相同。
(4)程序应在启动时将所有信息从文件读入动态数组中,从而不必在查询过程中频繁地读取文件影响查询速度。



