《数据结构课程设计报告全国交通咨询模拟系统》由会员分享,可在线阅读,更多相关《数据结构课程设计报告全国交通咨询模拟系统(41页珍藏版)》请在金锄头文库上搜索。
1、数据结构课程设计报告题 目: 全国交通咨询模拟系统 院 (系): 计算机工程学院 专 业: 嵌入式系统开发与设计 班 级: 嵌入式1091 学 生: 指导教师: 2011年 1月目 录一、设计目的1二、设计内容1三、程序设计步骤2四、调试分析33五、测试结果33六、课程设计小结36一、设计目的1实习目的通过实习,了解并初步掌握设计、实现较大系统的完整过程,包括系统分析、编码设计、系统集成、以及调试分析,熟练掌握数据结构的选择、设计、实现以及操作方法,为进一步的应用开发打好基础。二、设计内容1、系统名称:航空客运订票系统 设计、实现一个全国大城市间的交通咨询程序,为旅客提供三种最优决策方案:(1
2、)时间最短(2)费用最小(3)中转次数最少,以使上述业务可以借助计算机来完成。2、要求:该程序所做的工作的是模拟全国交通咨询,为旅客提供三种最优决策的交通咨询。此程序规定:(1) 在程序中输入城市名称时,需输入10个字母以内的字母串;输入列车或飞机编号时需输入一个整型数据;输入列车或飞机的费用时需输入一个实型数据;输入列车或飞机开始时间和到达时间时均需输入两个整型数据(以hh:mm的形式);在选择功能时,应输入与所选功能对应的一个整型数据。(2)程序的输出信息主要是:最快需要多少时间才能到达,或最少需要多少旅费才能到达,或最少需要多少次中转到达,并详细说明依次于何时乘坐哪一趟列车或哪一次班机到
3、何地。(3)程序的功能包括:提供对城市信息的编辑,提供列车时刻表和飞机航班表的编辑,提供三种最优决策:最快到达、最省钱到达、最少中转次数到达。三、程序设计步骤全国交通咨询模拟问题描述:处于不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能的短,出门旅游的游客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。 #include#include #include #define ERR 0 #define OK 1 #define Dij_MAXN 33 #define MAX_VERTEX_
4、NUM 31 #define MAX_STRING_NUM 10 #define MAX_TRAFFIC_NUM 10 const char CityFile =E:city.txt; const char TrainFile =E:train.txt; const char FlightFile =E:flight.txt; typedef short int CityType; typedef struct TrafficNode char nameMAX_STRING_NUM; /班次 int StartTime,StopTime; /起止时间 int EndCity; /该有向边指向的
5、顶点在数组中的位置,即该城市编号 int Cost; /票价 TrafficNodeDat; typedef struct VNode CityType city; int TrainNum,FlightNum; /标记下面Train数组和Flight数组里元素个数 TrafficNodeDat TrainMAX_TRAFFIC_NUM; /数组成员为结构体,记录了到达城市、起止时间、票价和班次 TrafficNodeDat FlightMAX_TRAFFIC_NUM; / int Cost; /遍历时到达该城市的耗费(时间或者费用) VNodeDat; typedef struct PNod
6、e int City; int TraNo; PNodeDat; VNodeDat AdjListMAX_VERTEX_NUM; /System Info char CityNameMAX_VERTEX_NUMMAX_STRING_NUM; /城市名,采用第一下标为该城市在本程序中的编号 int CityNum; /城市数目 PNodeDat PathMAX_VERTEX_NUM; /存储临时最小时间路径 PNodeDat MinPathMAX_VERTEX_NUM; /存储搜索到当前的最小时间路径 int MinTime,StartTime; int curPath; /= int Show
7、Menu() printf(n*MENU*n); printf(1: 添加城市n2: 删除城市n3: 添加交通路线n4: 删除交通路线n5: 查询最小费用路线n6: 查询最快路线n0: 退出); printf(n*n); printf(nType In Your Command:); return 1; int SeekCity (char *name) int i; for (i=0;iCityNum;i+) if (strcmp(name,CityNamei)=0) return i; return -1; /=Edit Info= int SaveSysInfo() FILE *fp;i
8、nt i,j,total; fp=fopen(CityFile,w); fprintf(fp,%dn,CityNum); for (i=0;iCityNum;i+) fprintf(fp,%sn,CityNamei); fclose(fp);total=0; fp=fopen(TrainFile,w); for (i=0;iCityNum;i+) total+=AdjListi.TrainNum; fprintf(fp,%dn,total); for (i=0;iCityNum;i+) for (j=0;jAdjListi.TrainNum;j+) fprintf(fp,%s %s %s ,
9、AdjListi.Trainj.name, CityNamei, CityNameAdjListi.Trainj.EndCity); fprintf(fp,%2d:%2d %2d:%2d %dn, AdjListi.Trainj.StartTime/60, AdjListi.Trainj.StartTime%60, AdjListi.Trainj.StopTime/60, AdjListi.Trainj.StopTime%60, AdjListi.Trainj.Cost); fclose(fp);total=0; fp=fopen(FlightFile,w); for (i=0;iCityNu
10、m;i+) total+=AdjListi.FlightNum; fprintf(fp,%dn,total); for (i=0;iCityNum;i+) for (j=0;jAdjListi.FlightNum;j+) fprintf(fp,%s %s %s , AdjListi.Flightj.name, CityNamei, CityNameAdjListi.Flightj.EndCity); fprintf(fp,%2d:%2d %2d:%2d %dn, AdjListi.Flightj.StartTime/60, AdjListi.Flightj.StartTime%60, AdjL
11、isti.Flightj.StopTime/60, AdjListi.Flightj.StopTime%60, AdjListi.Flightj.Cost); fclose(fp);return 1; int InsertCity (char *Name) strcpy(CityNameCityNum,Name); AdjListCityNum.city=CityNum; AdjListCityNum.FlightNum=0; AdjListCityNum.TrainNum=0; CityNum+; return 1; int DelCity (char *Name) int city,i,j
12、; city=SeekCity(Name); for (i=city;iCityNum-1;i+) strcpy(CityNamei,CityNamei+1); AdjListi.FlightNum=AdjListi+1.FlightNum; AdjListi.TrainNum=AdjListi+1.TrainNum; for (j=0;jAdjListi.FlightNum;j+) AdjListi.Flightj.Cost=AdjListi+1.Flightj.Cost; AdjListi.Flightj.EndCity=AdjListi+1.Flightj.EndCity; strcpy
13、(AdjListi.Flightj.name,AdjListi+1.Flightj.name); AdjListi.Flightj.StartTime=AdjListi+1.Flightj.StartTime; AdjListi.Flightj.StopTime=AdjListi+1.Flightj.StopTime; CityNum-; return 1; int InsertTrain (char *train,char *StartCity,char *EndCity,int StartTime,int EndTime,int cost) int i,j; i=SeekCity(StartCity); j=SeekCity(EndCity); AdjListi.TrainAdjListi.TrainN