交通咨询模拟系统软件详细说明_第1页
交通咨询模拟系统软件详细说明_第2页
交通咨询模拟系统软件详细说明_第3页
交通咨询模拟系统软件详细说明_第4页
交通咨询模拟系统软件详细说明_第5页
已阅读5页,还剩11页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Good is good, but better carries it.精益求精,善益求善。交通咨询模拟系统软件详细说明详细设计说明书的编写详细设计说明书目录详细设计说明书11.引言12. 系统的结构23模块说明51. 引言1.1编写目的为软件设计者提供全国交通咨询模拟系统软件的需求分析说明预期读者:1 开发人员 2 审查人员 3 后续开发1.2背景a 待开发的软件系统的名称:全国交通咨询模拟b 本项目任务提出者:段毅 开发者:李凤忠,孙希展,赵大辉,田佳林用户:需要查询全国交通状况的旅游者 实现该软件的计算中心或计算机网络:交通查询终端/互联网2. 系统的结构21IPO图开始公共复用模块用户

2、组模块管理员模块交通编辑城市编辑文档存储初始化城市图交通图打印交通情况查询最省时旅程查询最省钱旅程Ps:其中任何模块具有任何权限调用公共模块以完成本模块的需求22大致流程图开始用户管理员结束交通编辑城市编辑最省时旅程最省钱旅程选择用户组选择功能选择功能添加线路修改线路删除线路添加城市删除城市输入始末城市编号、出发到达时间、票价输入始末城市编号、出发到达时间、票价输入始末城市编号输入城市名称、及与旧城市交通信息输入城市编号按要求修改城市、飞机、列车文档继续操作?输入出发、到达城市编号输入出发、到达城市编号系统输出最优策略:出发城市、中转城市、到达城市及其两两出发到达时间继续查询?选择子功能NON

3、OYES显示城市、交通信息显示城市、交通信息初始化交通图显示全部交通情况显示全部交通情况3模块说明统一规则统一数据结构在概要设计里有提及,再此重述,并进一步细化城市结构交通图结构表结点交通图结构头结点struct city/城市结构体int i;/城市编号int used; /调用标志char name20;/城市名称otherinfo other; /其他信息citiesMaxCity;typedef struct ArcNode/表结点int i;/到达城市编号Int Stime;/出发时间int Etime;/到达时间int ticket;/票价int used; /调用标志struct

4、ArcNode *nextarc;/下一条线路指针otherinfo other; /其他信息做线路编号ArcNode;typedef struct VNode/头结点int i; /出发城市编号int used; /调用标志ArcNode *firstarc;/第一条线路otherinfo other; /其他信息VNode;飞机交通图、列车交通图VNode AdjplaneMaxCity,AdjtrainMaxCity;文档规则在概要设计里已详细解释,此处不再赘述。值得一提的是:1 表结点的其他信息(other)做线路编号,让管理员修改和删除命令更加人性化,操作更加简单2 交通图的第一个结

5、点其他信息(Adj0.other)记录总线路数,及图中边数,有利于添加线路,让添加线路有新的线路编号3.1模块描述基于IPO图和大致流程图,有如下模块描述:一 管理员模块1被调用关系:主函数main()调用2功能:完成管理员规定的功能-城市编辑、交通编辑和打印交通情况(调用公共模)3函数声明:int Admin();4设计方法:int Admin()/管理员函数int choose,again;again = 1;while(again)system("cls");printf("nn选择操作:nn");printf(" 1.城市编辑 2.交通

6、编辑 3.查看交通情况n");scanf("%d",&choose);while(choose!=1 && choose!=2 && choose!=3) printf("选择错误,请重新输入:");scanf("%d",&choose);switch(choose)case 1:CityEdit(); break;/城市编辑case 2:TrafficEdit();break;/交通编辑case 3:printfcity();printf("飞机航班情况:n&quo

7、t;);printftraffic(Adjplane);printf("列车时刻情况:n");printftraffic(Adjtrain);break;default:printf("未知错误n");system("pause");break;/system("cls");加不?printf("n继续操作管理员?nn1.yes 2.non");scanf("%d",&again);while(again!=1&&again!=2) printf(&q

8、uot;选择错误,请重新输入:");scanf("%d",&again);if(again = 2)again = 0;/退出循环,结束管理员函数Save();/保存文档printf("感谢使用。n");system("pause");return 1;5可调用关系:交通编辑模块、城市编辑模块、公共模块6出口:递归调用管理员函数Admin();或主函数main()的退出1.1交通编辑模块1被调用关系:管理员函数Admin()调用2功能:完成管理员规定的下的子功能-交通编辑包括线路添加、修改、删除3函数声明:int T

9、rafficEdit();4设计方法:代码过于冗长,此处用流程图表示,便于理解交通编辑开始编辑飞机编辑列车添加线路修改线路删除线路添加线路修改线路删除线路继续操作?退回至管理员函数NOYES选择操作选择操作选择操作5可调用关系:线路添加、修改和删除、公共模块6出口:递归调用交通编辑或管理员函数Admin();附录:线路添加int AddArc(VNode Adj); 线路修改int ReviseArc(VNode Adj); 线路删除int DeleteArc(VNode Adj);出于详细文档的简洁性、可读性,这三个函数不加详述1.2城市编辑模块1被调用关系:管理员函数Admin()调用2功

10、能:完成管理员规定的下的子功能-城市编辑包括城市添加和删除3函数声明:int CityEdit();4设计方法:int CityEdit()打印城市图选择功能:1。添加城市2。删除城市。Switch:1。输入添加城市名称查询最近一个调用为空的城市编号,插入城市2输入删除城市编号 若该编号调用为真删除之(使之调用为假)继续操作?:1。继续,调用本函数 2。不继续,退回管理员函数5可调用关系:公共模块6出口:递归调用城市编辑CityEdit()或管理员函数Admin();1.3文档存储模块1被调用关系:管理员函数Admin()调用2功能:完成管理员规定的下的子功能-文档存储包括城市文档、飞机和列车

11、的交通文档3函数声明:int Save()4设计方法:int Save()/保存文档printf("正在保存信息n");SaveCity();SaveTraffic();printf("保存信息完毕n");return 1;5可调用关系:城市文档存储、飞机和列车的交通文档存储、公共模块6出口:管理员函数Admin();附录:交通文档存储函数int SaveTraffic(); 城市文档存储函数int SaveCity()二 用户组模块1被调用关系:主函数main调用2功能:完成用户组规定的下的子功能-查询最省时、最省钱旅程和打印交通情况3函数声明:int

12、 User();4设计方法:int User()打印城市图选择功能:1。最省时旅程 2。最省钱旅程 3。打印交通情况Switch:1。最省时旅程函数Min_Time()2最省钱旅程函数Min_Money()3打印城市图、交通图。继续操作?:1。继续,调用本函数 2。不继续,退回主函数5可调用关系:省时旅程函数、省钱旅程函数和公共模块6出口:递归调用用户组函数User()或主函数main();1.1最优旅程函数模块1被调用关系:用户组函数User();2功能:完成用户组规定的下的子功能-查询最省时、最省钱旅程3函数声明:int Min_Money();int Min_Time();4设计方法:i

13、nt Min_Time()int choose;printf("请选择交通工具n");printf(" 1.飞机 2.列车n");scanf("%d",&choose);while(choose!=1 && choose!=2) printf("选择错误,请重新输入:");scanf("%d",&choose);switch(choose)case 1:Minsome_DIJ(Adjplane,1);break;/飞机最短时间case 2:Minsome_DIJ(

14、Adjtrain,1);break;/列车最短时间default:printf("未知错误n");system("pause");break;return 1;int Min_Money()int choose;printf("请选择交通工具n");printf(" 1.飞机 2.列车n");scanf("%d",&choose);while(choose!=1 && choose!=2) printf("选择错误,请重新输入:");scanf(&qu

15、ot;%d",&choose);switch(choose)case 1:Minsome_DIJ(Adjplane,2);break;/飞机最少金钱case 2:Minsome_DIJ(Adjtrain,2);break;/列车最少金钱default:printf("未知错误n");system("pause");break;return 1;5可调用关系:最短路径函数Minsome_DIJ(VNode Adj,int some)6出口:用户组函数User();1.2最短路径函数1被调用关系:最短时间函数int Min_Money();

16、最短路径函数int Min_Time();2功能:完成用户规定的下的子功能-查询最优旅程的两城市最短路径3函数声明:int Minsome_DIJ(VNode Adj,int some)4设计方法:代码过于冗长,此处用流程图表示,便于理解 必要说明:/以下用DJSILA算法查询/some控制代价类型(1为时间,2为金钱)/P存储路径信息(线路),D存储代价,final存储是否入图S,lasttime记录最后时间(与新到达线路做比较)最短路径开始退回至用户组函数或主函数按照交通表Adj初始化代价int DMaxCity、各个城市最后到达时间LastTimeMaxCity,路径函数ArcNode

17、*PMaxCityMaxCity打印城市图输入出发、到达城市编号选取最小代价min和对应边vMin=INFINITYv=j按照Adjv更新代价DMaxCity和路径PMaxCityMaxCity城市i和j不通找到路线,输出路径PjNONO YSE YSE5可调用关系:打印城市图函数6出口:退回至用户组函数或主函数三 公共模块1.1初始化城市图1被调用关系:主函数 main()2功能:完成主函数规定城市图的初始化3函数声明:int InitCity(char *c) /初始化城市cities(按照c串)4设计方法:int InitCity(char *c)/初始化城市cities(按照c串)in

18、t i=0,j=0,k=0;while(i<3000 && j<MaxCity && *c!='0')k=0;while(*c=' '&& *c!='0') c+;/去空格跳至有内容的地方if(*c = '0')continue;j = getint(&c);/取城市编号,调用为真citiesj.used=1;while(*c=' '&& *c!='0') c+;/去空格while(*c!=' '&a

19、mp;& *c!='0') k+=*(c+);/读入城市名称k='0'return 1;5可调用关系:得到下一个整数函数getint();6出口:主函数1.2初始化交通图1被调用关系:主函数main()2功能:完成主函数规定交通图的初始化3函数声明:int Initraffic(char *t,VNode Adj)/初始化交通图Adj(按照s串)4设计方法:此处使用伪代码:使用getint函数得到下一个整数int Initraffic(char *t,VNode Adj)char *s;s=t;while(

20、s串结束) 若S串结束,break;若S串转行,S+,continue;aim = getint(&s); /得到出发城市如果aim城市不可调用,转入下一行,continue;While(s串未转行)用getint每读入4个数字添加一条Adjaim下路直到转行退出If(S串转行)s+ ;5可调用关系:getint函数6出口:递归调用用户组函数User()或主函数main();1.3打印交通情况1被调用关系:任何可以调用的函数2功能:完成主函数规定城市图交通图的打印3函数声明:int printftraffic(VNode Adj)/打印Adj交通图 int printfcity()/打

21、印城市3 设计方法:int printfcity()/打印城市int i;printf("城市信息如下:nn");for(i=0;i<MaxCity;i+)if(citiesi.used)printf(" %3d.%-10s",citiesi.i,);printf("nn");return 1;int printftraffic(VNode Adj)/打印Adj交通图int i;ArcNode *next;printf("编号 出发城市 到达城市 出发时间 到达时间 票价n");for

22、(i=0;i<MaxCity;i+)if(Adji.used && citiesi.used) /出发城市且相关线路可调用next=Adji.firstarc;while(next)if(next->used && citiesnext->i.used) /到达城市可线路可调用printf("%-4d %2d.%-6s %2d.%-6s %-8d %-8d %-4dn",next->other,Adji.i,,next->i,citiesnext->,next->Stime,next->Etime,next->ticket);next=next->nexta

温馨提示

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

评论

0/150

提交评论