1、设计题目0; i-)printf(n%s:,CiNametraki);nd = tracki -1; n= 32767;for (k = 0; kAdListtraki、Fliht、C)mn AdListtracki、lgtk、Cost;tmp =;prtf(”%s, AdLittraci、Fligtm、ae);print(2d:%2d2d:%2d, AdjListtaki、Flitmp、StatTie 6, AdjListci、Figttp、StartTime 60, djListtri、Fighttmp、StopTime / 60, djLstrcki、lightmp、Stopi 60);
2、prinf(”ns:ESTINAON!”, CyNametack);prf(nin Cos : %dn”, c);vo ijks(int matxDi_MAXNDij_MA, int p_start, intp_en,nt TaveTp)int PreCyDi_AXN;/Peityi=-1,nve ud; /reCity0,the precity ofCityi ti, j, mi, pre,pos;fr ( ; iCityNu;i+)rCityi = 1;PrCitp_start =2;hle (Peity_end = -1)m 1;o ( = 0;i (i0| xijmn))pr = i;
3、 pos = ;min max;PreCityps = pe;Dia_Output(at, PreCiy, pen,TravelTyp);五、测试分析1、 添加城市在主菜单下,用户输入,添加城市名称。(图、4添加城市)2.删除城市在主菜单下,用户输入2,删除已添加城市名称.(图2、删除城市)3.添加交通路线在主菜单下,用户输入,已添加城市名称。添加起始城市、终点城市名称、乘车类型、乘车班次、起始时刻、终点时刻、与票价。(图、6添加交通路线).删除交通路线输入班次号,删除交通路线(图2、7删除交通路线)。查询最小费用交通路线(图2、8查询最小费用交通路线)。查询最快交通路线(图2、9查询最快交通
4、路线)7。清除屏幕.退出六、用户手册使用本系统时,用户需先向程序添加城市后,在已有城市基础上添加已有城市得路线与使用各项功能。 七、调试报告程序运行无错误,但当系统输入其她无储存内容时程序会意外中断,代码需要优化。八、程序清单include”stdaf、”#nclud #icude #dfine ER 0 define OK 1 #define Dj_MAXN 0 #define MX_VERE_NU 1definMAX_STRING_UM100 deie MAX_TRAFFICNU 100 cst ha Citile = cty、xt;ontchar TraiFie rai、txt;onst
5、ch Flihtile ”lit、txt”;pedef sort in ityye;/Cityype 定义短整形得变量 typedef truc raffiodecar nameMA_SRIG_UM; /班次/MX_STRIN_M最为0int StartTime, StopTime; /起止时间in ECity; /该有向边指向得顶点在数组中得位置,即该城市编号 int Cost; /票价 Taficdt;typdef stuct NodeCyTp ciy;int TrinNum, Fligtum; /标记下面Trin数组与Fligt数组里元素个数 TraficNoDaTaiMAXAFFIC_
6、NU; /数组成员为结构体,记录了到达城市、起止时间、票价与班次TrffcNdDatlightMAAFC_NUM;/ in Cost; /遍历时到达该城市得耗费(时间或者费用) NodeDat;ypede truct Pdeint City;intTraN; PNoeat;Nodeat AdListMAX_VETEX_NUM; char CitNameXVERTX_NUMMA_TRIG_NUM; /城市名,采用第一下标为该城市在本程序中得编号intCityu; /城市数目 PoDaPthMATEX_N; /存储临时最小时间路径PdatMnathMAX_VREXNUM; /存储搜索到当前得最小时
7、间路径 inMnTme, Starim;it curPt;int Shoenu() pintf(|*欢迎使用交通咨询系统*n);pf(”n-1: 添加城市-|);printf(n-: 删除城市-|);prinf(”n|-3: 添加交通路线-);prt(|-4: 删除交通路线-”); printf(n-5: 查询最小费用路线-);pri(n|-6: 查询最快路线-);prnf(n-7:清除屏幕-);printf(”-0:退出-|n);rit(n|*o(_)o o(_)o*|);pritf(”请输入您得选择:);retrn1;void opRigt()pritf(n”);itSeekCiy(har
8、 *name) /寻找城市int i; (i= 0;iitNu;i+)if (tcmp(name,CitNai) = 0) /比较函数,若相等,则返回值rern i;retun-;/=EitIno= intSaveysIfo() /向程序输入数据FILE *fp;it i, j, ttl;p = fopn(CitFile, w); /打开itFile文档frntf(p,%dn”, CityNum);/往文档中写城市得数量fo (i = ;iyNum; i+)fprit(fp, sn”, CiNae);/往文档中写城市得名字fcloe(f);/将ityFile文档关闭oal= 0;f =fp(T
9、ainFl, w”);/打开rainFile文档for (i = ; iCtyNum; i+)计算列车班次得数量ttal += djListi、TrainNum;frit(f, ”n, toal);/往文档中写列车班次得数量r (i =0; iCitN;+) /fo (j = ; jAdjLisi、Tranm;j) 往文档中写列车得车次、始发城市、终点城市fpintf(fp,”s %s s ,djListi、rnj、nae,CiNami,CityamAjiti、rain、ndCity);prif(fp, 2:2d d:%2ddn”, AjLsti、j、tatTime / 60,/往文档中写Ad
10、jLisi、Tainj、Startim 60,AdjLit、Traij、topTie / 60,AdjList、Trainj、StopTime 6,Ajisi、rij、s);fose(f); ttal=0;fp = fopen(FightFi,w”);or (i = 0; iCityum; i+)toa += AjListi、ighNum;fprntf(fp, ”%dn”,otal);for (i 0;iitm; i)for (j= ; AdjLti、FlighNum; j+)fprinf(p, %ss % ”, Adjisti、lightj、nm,ityNam,itNaAdLis、ligtj
11、、EdCity);fprin(fp, %2:d2d:dd,AjLsi、Flightj、StartTime / 0,AdLsti、Flightj、SarTime % 60,AdjLsi、lghtj、StpTe/ 60,AjLiti、ligh、StoTe % 60,Adjisti、Fgtj、Ct);lse(fp); return 1;nt InsertCty(cha *Name) 添加城市srcpy(CityNameCitNm, Name);AjListitNum、ity =Cim;AdjListtyNu、lighNu = 0;AdListtyNum、Trinum = 0;CNm+;etun1;i
12、nt Dity( ame) /删除城市intcity, i, j,o=1,=1;cty SeekCi(Name);prf(%s,Name);whl (ue)whl (CityNamek ! Nam)k+;f (k ityNum)o;pif(未找到此城市,请重新输入!);reur ;or(i = iy; i CiNu 1; +) /?可能city就是从开始得rcpy(ityNmei, CitNamei 1);AjLiti、FlihNum = AdLis+ 、FlghtNu;Adjsti、Trainum = jLit +1、TrainNum;for(j= 0; j Adjii、FlighNu; +
13、) /为什么没有火车得??Adjisti、Fightj、Co= AdjListi 、Flighj、ost;djLit、lhtj、EndCty= djListi + 、Fligh、EndCiy;rcpy(Adjisti、lghtj、ame, AdjLiti + 、Fligtj、nae);djLsti、lght、SartTime Asti +、lihtj、Startim;Adjisti、light、StopTim = dLiti + 1、lighj、StopTim;CityNum-;etun;int IertTrai(chr train, car StartCity, hEndit, intSrt
14、Time, t ndTme, int cst)nt i,; /InsertTran(ame,s_ct,ecity,_hour*6+s_mite,e_our*6+_minute,cost);i = SeCty(tartCty);j = SekCity(EdCt);AListi、TraiAListi、TraiNum、ot = cost;AdjLsti、andjLit、TranNum、EdCiy= j;AdLit、radjiti、raNu、Starim rtime;Aist、TraiAdListi、Tranum、Stopime = EndTime;strpy(AdjLii、TndjListi、Tra
15、inNum、nam, train);Adjs、TainNum;/火车得数加1retu ;ntsrtliht(chariht,car *StCity, char EdCity,int StarTime, in EdTie, int ost)nt i, j;i Seekit(SttCiy);j = SeekCity(ndCity);AdList、FlghtAjLiti、FightNum、ost = cost;djst、FlightjLisi、Flghtum、EdCity j;jii、FlgtAdjListi、FlghtNu、SartTie = StrtTime;Adjisi、FghAdListi、
16、Flghm、Sopie =EndTime;strcy(AjListi、TraiAdjisti、lightNum、nm, flight);djList、FlitNum+;return 1;itDela(char name)int i, ,fag 0;f ( = 0; ityNum; i+)for(j = 0; jALisi、FlightNu; j+)/注意就是从0开始得if (strcm(jisti、Flighj、ae,name) = 0)flag = ; bek;if(fla)o (; AdjLis、FlihtNum ; +) /把删除得航班后得每个航班向前移一位ALst、Fligj、Cst
17、= jLti、Fligtj+ 1、ost;AjList、Fligtj、EnCty =Aiti、Flightj + 1、EndCity;strcpy(AdjListi、Fligtj、nae, AjListi、Flihtj + 1、name);AdjLst、lgt、SartTime = AdjList、Fighj+ 1、artTme;AdjListi、Fightj、topTim= jLi、light + 1、toTme;ALsti、FghtNu-; eak;for(= 0; jAdjLti、Trau;j+)i (strmp(djit、raij、nme, ame) = 0)flag ; eak;f
18、(lag)for (; j0; -)print(ns:, ityNeacki);end =aki 1; mi= 377;for(k =0; kAdjLisracki、lightNu; k+) (AjLittracki、Traink、Ey = end&miAdjLsttracki、igt、Ct)in AjListracki、Fighk、Cost;tp =k;printf(”%, AdListtai、lhttmp、ae);prtf(2d:%2d2d:d”, ALisracki、Flighttmp、SrTime / 6, Adjistacki、Fitm、Statm % 6, AdjLiracki、Flighttm、StpTme / 0, AjLittrcki、Flihttmp、tpTime 0);printf(n%s: DSTINATO!”,CiyNamtack0);prnt(”nMin Cost : dn, cost