全国交通咨询模拟系统实验报告可编辑范本

上传人:沈*** 文档编号:106719858 上传时间:2022-06-13 格式:DOC 页数:44 大小:779.04KB
收藏 版权申诉 举报 下载
全国交通咨询模拟系统实验报告可编辑范本_第1页
第1页 / 共44页
全国交通咨询模拟系统实验报告可编辑范本_第2页
第2页 / 共44页
全国交通咨询模拟系统实验报告可编辑范本_第3页
第3页 / 共44页
资源描述:

《全国交通咨询模拟系统实验报告可编辑范本》由会员分享,可在线阅读,更多相关《全国交通咨询模拟系统实验报告可编辑范本(44页珍藏版)》请在装配图网上搜索。

1、一、问题描述全国交通咨询模拟:处于对不同目的的旅客对交通工具有不同的要求。例如, 因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则希望旅费尽可能省,而老年旅客则要求中转次数最少.编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。【基本要求】(1)提供对城市信息进行编辑(如:添加或删除)的功能。 (2)城市之间有两种交通工具:火车和飞机。提供对列车时刻表和 飞机航班进行编辑(增设或删除)的功能。 (3)提供两种最优决策:最快到达或最省钱到达.全程只考虑一种 交通工具。 (4)旅途中耗费的总时间应该包括中转站的等候时间. (5)咨询以用户和计算机的对话方式进行。由

2、用户输入起始站、终 点站、最优决策原则和交通工具,输出信息:最快需要多长时 间才能到达或者最少需要多少旅费才能到达,并详细说明依次 于何时乘坐哪一趟列车或哪一次班机到何地。徐州397乌鲁木齐哈尔滨长春沈阳天津郑州西安兰州成都上海昆明贵阳株州福州柳州广州深圳南宁189221611456681100967639907349676511242305704651622367409255607675140【测试数据】呼和浩特北京137674西宁大连534842武汉825南昌672二、 数据结构设计和核心算法设计描述:1、 根据题目中的基本要求分析,可以创建系统概念模型,流程设计框图如下: 班次2、逻辑结

3、构拆分:起止时间城市编号交通工具 信息 票价飞机线路总数火车线路总数火车信息路线信息飞机信息3、 核心设计:根据上面的流程图和逻辑拆分,对这个问题有了一个比较直观,详细地了解并且从中也可得知路线的添加即数据的存储是这个系统进行运作的一个基础。而为了便于数据的存储、添加、删除等操作,我选择了储存文件对这些数据进行了存储。将每个信息量放在不同的文件中,可以更有效、直观地对这些数据进行处理。流程图中的7个主要功能模块在主函数中,采用输入选项进入子菜单,但是其他操作都是在路线添加好后进行的,并且为了每一项功能进行完后,系统可以及时回到主交互界面,我采用的是无限循环形式,即while(1). 以邻接表作

4、交通图的存储结构,表示边的结点内除含有邻接点的信息外,包括交通工具、路程中消耗的时间和花费以及出发和到达的时间等多项属性.三、 主控及功能模块层次结构:1、 模块说明:本系统分为个模块、)主函数 2、)添加城市 3、)查找城市并返回序号、)删除城市5、)添加列车6、)添加航班、)删除列车或航班8、)找出最小费用路线、)初始化系统数据(读入内存)10、)找出最快路线11、)计算最快路线耗费的时间并打印2、)计算最小费用路线1、)主界面14、)存储信息到文件15、)退出、2、下面是各模块示意图:基本操作: TficNodeDat 交通工具 信息CharnameAX_SRINGNM 班次 Int s

5、tarttime 出发时间 nt stattme 到达时间 Intcs 票价 UNodat 路线 信息 Shor int cit 城市编号 Int rinNum 火车路线数 i FlightNum 航班路线数 rfiNoDa TrainM_TAFFIC_NM 火车路线信息 TraffcNodDtFightMARAFFI_NU 航班路线信息函数变量声明:includesdi。h #ncde strgh defineERR 0 define1 #dfne Di_AXN33 defineMX_VRT_NM31 defieAXSTRNG_NM 0 deine MAXTAFFI_NUM 10 co ch

6、a tyFile =:ty.xt”; onstchr TrainileD:train.x; cost arFlighil =”:fi.txt; ydef sortt iType; ypdef src TrffNde har amMAX_SRING_UM;/班次 in tartTe,StopTme; /起止时间 int Endity; /该有向边指向的顶点在数组中的位置,即该城市编号 t Cot; /票价 rfficNodeDat; tyedef truct VNode CiyType city; inTraim,FlitNum;/标记下面n数组和Flight数组里元素个数 TrfficNode

7、at TrinMAX_RFFICNUM; /数组成员为结构体,记录了到达城市、起止时间、票价和班次 TraffcNdat FligtMAX_TAFFIC_NUM; / int ost; /遍历时到达该城市的耗费(时间或者费用) VodeD; typef stuctPNde it ity; int raNo; PNoeDat; NdDtdjListA_VETENUM;Sytmnfoca CtyNamMAX_VERTEX_NUMMAX_STN_NUM; /城市名,采用第一下标为该城市在本程序中的编号 in CitNum; /城市数目PoeDt thMAERTEX_UM; 存储临时最小时间路径 Po

8、deDatMnPathMAX_VRX_NUM; /存储搜索到当前的最小时间路径 in Min,Startime; nt curPh; 函数构成:it main() char namMAX_STRING_NM; chasctyMAX_STRING_NUM; a e_iyAX_STG_NU; it Commad,cost; t arity,endct,ravelye; nt s_hour,_mnt,e_u,e_inute; hle() ShoMnu(); /显示菜单 scaf(%d,&Comman);/ switch (Commnd) case : /退出 return 0; case 1: 添加

9、城市 IniSysData(); prinf(”n输入城市名:”); scnf(”%”,nae); InsetCty(nae); avSsnfo(); printf(Sysem InoSe OK!n”); break; se 2:/删除城市 IniSysData(); rintf(n输入城市名:); scanf(”%s,nae); DelCy(nme); aveSysInfo(); pritf(”Sytem Io ave OK!n); break; cae3: /添加路线 InitSsDt(); printf(”起始站城市名:); f(”s,&s_iy); print(终点站城市名:”); s

10、can(,&e_city); print(”类型(列车0,航班1):”); saf(”,traveltype); pri(”输入列车飞机班次:”); scanf(”%s,&ame); prntf(”起始时刻(00:0,2小时制):”); san(%d:%2”,s_hor,_minute); rinf(到达时刻(0:0,小时制):”); scanf(”%2d:%2,&_hour,&_inute); prif(”票价:);sca(”%”,&cost); i (traetype) Inrtight(name,scity,e_iy,s_hu0+s_mint,e_hour0+einute,cos); s

11、 IsertTrai(name,s_city,e_i,shour*60sminut,e_ou*60+e_inute,cost); SaeSno(); ritf(SystemIfo aveOK!”); break; case 4: 删除路线 InitSysDaa(); ptf(输入班次:”); sanf(”%s,&nme); DePath(name); avSysIno(); pritf(”SysemInf Sve OK!n”); brak; ase 5: /最小耗费 niSysDaa(); prtf(n起始城市:); sca(%s,&); tarttyekCit(nae); if (sartc

12、it) prntf(”rrr Cit Name:No su cty!n”); brek; pritf(终点城市:”); scan(”%”,&nme); endcity=SeekCty(am); if (enct0) prinf(”Eror CiyName:sc cit!n); r; pritf(”类型(列车0,航班1) :”); cf(d,travtpe); f (traveltyp!=0&rvltype!) prnf(”ror nput!”); break; alcMinCt(tatcity,endciy,eltype); prnt(”n”); beak; case 6: /最短时间路线 I

13、niSyDta(); pint(”n起始城市:); scanf(”%”,&ame); sarcity=eekCity(nam); if (satcity0) prit(”rorC Na:No such ity!n); bek; print(终点城市:”); snf(”%s,&na); endcity=SeekCit(nae); f (ncty0) printf(Errrty ae:N sh ciy!); reak; prntf(”类型(列车0,航班1) :); scanf(%d,travetye); if(tavetye!&tavelty!=1) pin(”Erronp!”); bek; Ca

14、lcMnTime(tartity,encity,traveltype); pintf(”n); break; 四、主函数中的各个调用的函数代码具体如下:(1) 显示菜单:nt Shown() printf(”n*ENU*n”); pintf(”: 添加城市n2: 删除城市n3: 添加交通路线n4:删除交通路线n5:查询最小费用路线n6: 查询最快路线n: 退出”); pritf(”n*n); prinf(”nTypeI Your Comnd:); rtur ; (2) 查找城市并返回城市序号:it eCity (cha *name) it i; o(0;iCiyNum;i+) if (strc

15、mp(nae,CityNme)=0) retrn i; return 1; (3)储存信息到文件:int aveSysf() FILE *p; i,j,total; fpfopen(CiFl,”w”); fprnf(f,”%dn,iNm); f (i=0;CityNum;i+) printf(p,”%n”,ityName); fclse(fp);total=0; fpfop(TraiFe,w); (i;iitNu;i+) ttl+=Adjiti。rinNum; fprntf(fp,%d,tal); or (i=;iCityNum;+) for (j=0;jAdjti.TainNm;+) pit

16、f(fp,”s %s %s”, AdListi.Trij。name, itName, CityNamedjLsti.Traij。Ediy); pinf(fp,%2d:2d %2d:ddn, AdjistiTij.trime/60, Ajisti。Trinj.SartTme%60, AdjLiti。ainjStopTe/0, dii.Traij。toTim%60, djLisi。rainj。Ct); flose(fp);tota=; fp=fope(FlighFile,w”); for (i=0;iCiyNm;i+) total+=AList。Flighm; fprntf(fp,”dn”,ttl

17、); o (=0;iCityNum;i+) fr(j=;jAdLisi。FlihtNum;j+) fprinf(fp,”% %s %s ”, AdjLiti.lightj.nme, Ctyam, CityNaeAdjLsti。Flght。EndCty); prnf(fp,%2d:%2d %2:%2d n”,AListiFlihtj.SarTm6, AdjListi。Flhj。Strie%, djList。lht。Spim/60, AdjLst.FlightjStopT%0, AdjList。Flihtj。Co); fcloe(fp);retn1;()添加城市:in IsetCity (r *N

18、me) strc(CityNameitum,Name); AdjListCiyNum.ciyCityNu; AdLisCityNum。FlhNum=0; AdjitCityNum。rainNu=0; ityNum; eturn 1; (5)删除城市:int DCit (a *ame) it city,j; citySekCity(Nam); fr (city;iCtyNum1;i+) strc(ityamei,Cityam1); AdjLsti。Flightu=AdjLisi+1。FliNum; AdLiti。TainNum=AdjLisi1.TrainNm; r (j=0;jAdjis。Fl

19、ihtm;j+) AdjLiti.Flighj.Co=AjList+1Flihtj.ost; AdjListi。Fight.EndCty=jList1。FlihjEdCiy; trcp(AdjistFligh。name,djLs+1。Flihtj.nam); jList。Flght。SartTme=AjListi.light.StartTime; AdjLiti。lightj.tpTieALiti+1。ligj。topTime; CtyNum; etun 1; (6)添加火车路线:itInsertTrin (car *train,ar *tartCiy,hr *EndCiy,intStartT

20、me,int EndTim,incos) int i,j; i=ekity(Startty); =SeekCiy(ECi); AjLst.Traindjisi。TrnNum。Ct=os; AdList.TrandjLiti.TaNum。EndCty=; jLti.rnAdjiiTaiNum。SttTimttTime; Ajisi.ndjsti。TanNum。topTie=EndTime; strcp(AdjLis。TrainAdLisiranNumnme,ri); Adjsi。TraNum+; reur 1; (7) 添加航班路线:in InsertFlih(har flght,cr Stri

21、t,chr *City,in StrtTi,nEndime,ntost) inti,; i=SeekCty(tarC); j=eekCy(Endiy); Ajisi。lightAdjLi。FlghtNu。Co=cst; AdLsi.FlghtAjist.FlightNm。EndCityj; AjLsti。FlightAdjis.FlitN.StartTime=Sartime; AdjListi。ightAditi。FlgtNum。SopTime=ETim; strp(AdjListi.FightAdjLst。lightNm.nam,flt); Adjiti.litNum+; rurn 1; (

22、8) 删除路线:ntDelPat (har *name) int i,j,flag=; f (i0;CityNum;+) for(j0;Adist.Fligtm;+) if (stmp(Adjisti.Fligt。ame,nae)=0) flg=1; brek; if(flag) or (;jjLst.ligtNu;j+) AdjListi.Flightj.ost=AdjListi.Fligt+Cost; AdjLtiFlgh。EndCty=AdjLi。Flight1EnCty; srcpy(AdLisi.igtj.me,dLiti。Flightjnam); dLisi.Fligt.SartT

23、e=AdjLsi。lihtj+1。tartime; AdjLisi.Fligtj.StopTmedjistiFlighj+1。topime; dListi。Fightum; rak; (j=0;jAdLitirinNm;j) if (strcmp(AisiTraij.name,ame)=0) flag1;brk; if (a) fr (;AdjLttrki.Flight。ot) * i (AjLsttckFlightk.EnCity=edinAjittaki。Fightost) minAdjListtakiFlight.Cost; mp=k; int(s,dLittci。ihttp。nam);

24、 statH = AdjLsttaki.Fligtt.StarTime/0 ; start = AdjListtrki。Fightm.SarTme % 60; end AdListtaciFlihtm。SopTime / 60 ; endM = dListtracki。Flighttm。StopTim% 60; f(!(sar10) ) print(0”); pin(%:”,taH); if( !(strtM10) ) rintf(0); nt(”%d ”,sta); if( !(nH/10) ) print(”0); pt(”d:,nH); if( !(eM/10) ) rintf(”0);

25、 prin(%dn,n); /rintf(%d:%2d2d:%2d”,djListrack。Fghttmp.SatTim/ 6,djLstrack.Flighttmp。StarTie %0,jListtracki。ligtmpSoTime 60,AjListack.gtt。StoTime 60); pritf(”n%s: DSTINAI!”,Cyamerack); rntf(nMin Cost : dn”,cos); (1)找出最小费用路线voiDjksta(int matxDij_Dij_MAXN,it p_strt,in p_nd,int TravlType) inrCityij_N; /

26、rCtyi=-1,never ued; /PreCty,thepecity of City i ini,j,min,re,ps; for (0;iCtym;i+) PreCyi=-1; Preitypstart=-2; whle (reityp_end=) i=-1; fr (i=0;iCityNum;i+) if (ity!=1) fr(j=;jCityNm;j+) if (reCityj=1&matj0&(min0|matxijmn) pre=i;p=j;minatxj; PeCtospre; Distrautut(ma,PreCity,p_end,TraelTy); (1)初始化系统数据:intInitysDa () FIE ;int i,j,hor,minte,n,cost; ca stmp1MAXSTRIG_NM; hr stmMX_STRING_NUM; char stm3MAX_STRING_NUM; fp=fpen(CtFie,”); if (!f) pintf(nError:Cannot Opn ity Fil.。); return1; sn(fp,%d,&CityNum); fo(i=;iCtyNm;i+) fsnf(fp

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!