交通咨询模拟系统实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、问题描述
全国交通咨询模拟:处于对不同目的的旅客对交通工具有不同的要求。例如, 因公出
差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则希望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。
1、根据题目中的基本要求分析,流程设计框图如下:
255
班次
2、逻辑
结构拆分:
3、 1 2、)添加城市
3、)查找城市并返回序号
4、)删除城市
5、)添加列车
6、)添加航班
7、)删除列车或航班
8、)找出最小费用路线
9、)初始化系统数据(读入内存)
10、)找出最快路线
11、)计算最快路线耗费的时间并打印
12、)计算最小费用路线
13、)主界面
14、)存储信息到文件
15、)退出、
2、下面是各模块示意图:
基本操作:
函数变量声明:
#include
#include
#define ERR 0
#define OK 1
#define Dij_MAXN 33
#define MAX_VERTEX_NUM 31
#define MAX_STRING_NUM 10
{
} TrafficNodeDat;
typedef struct VNode
{
CityType city;
int TrainNum,FlightNum; //标记下面Train数组和Flight数组里元素个数
TrafficNodeDat Train[MAX_TRAFFIC_NUM]; //数组成员为结构体,记录了到达城市、
起止时间、票价和班次
TrafficNodeDat Flight[MAX_TRAFFIC_NUM]; // int Cost; //遍历时到达该城市的耗费(时间或者费用)
} VNodeDat;
typedef struct PNode
{
函数构成:
int main()
{
char name[MAX_STRING_NUM];
char s_city[MAX_STRING_NUM];
char e_city[MAX_STRING_NUM];
int Command,cost;
int startcity,endcity,traveltype;
int s_hour,s_minute,e_hour,e_minute;
while (1)
{
ShowMenu(); //显示菜单
printf("System Info Save OK!\n");
break;
case 2: //删除城市
InitSysData();
printf("\n输入城市名:");
scanf("%s",&name);
DelCity(name);
SaveSysInfo();
printf("System Info Save OK!\n");
break;
case 3: //添加路线
InitSysData();
scanf("%2d:%2d",&e_hour,&e_minute);
printf("票价:");scanf("%d",&cost);
if (traveltype)
{
InsertFlight(name,s_city,e_city,s_hour*60+s_minute,e_hour*60+e_minute,cost);
else
{
InsertTrain(name,s_city,e_city,s_hour*60+s_minute,e_hour*60+e_minute,cost);
}
case 5: //最小耗费
InitSysData();
printf("\n起始城市:");
scanf("%s",&name);
startcity=SeekCity(name);
if (startcity<0)
printf("Error City Name:No such city!\n");
break;
}
printf("终点城市:");
scanf("%s",&name);
break;
}
CalcMinCost(startcity,endcity,traveltype);
printf("\n");
break;
case 6: //最短时间路线
InitSysData();
printf("\n起始城市:");
scanf("%s",&name);
startcity=SeekCity(name);
if (startcity<0)
{
printf("类型(列车0,航班1) :");
scanf("%d",&traveltype);
if (traveltype!=0&&traveltype!=1) {
printf("Error Input!");
break;