2022年2022年数据结构课程设计-全国交通咨询系统_第1页
2022年2022年数据结构课程设计-全国交通咨询系统_第2页
2022年2022年数据结构课程设计-全国交通咨询系统_第3页
2022年2022年数据结构课程设计-全国交通咨询系统_第4页
2022年2022年数据结构课程设计-全国交通咨询系统_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、精选学习资料 - - - 欢迎下载xx学 院 计 算 机 系数据结构课程设计报告书全国交通询问模拟系统的设计与实现同学姓名 :学号:年级专业及班级:指导老师及职称:讲师专业: 运算机科学与技术专业提交日期: 2021 年 6 月- 1 -精品学习资料精选学习资料 - - - 欢迎下载全国交通询问模拟系统的设计与实现学生:指导老师: 怀化学院运算机系,怀化418008摘要: 该课程设计主要实现了对全国火车及飞机信息的修改和查询,其中主要包括:治理员对火车. 飞机信息的操作,其中又包含对两种交通方式的增加和删除操作;旅客用户对两种交通信息的查询, 其中飞机信息和火车信息都包含了对两个站点间最短路径

2、方式的查询.最少花费方式的查询以及城市中全部的交通信息的查询;关键词 : 全国交通询问;1 前言为了完成数据结构的课程设计,为了巩固自己数据结构的学问,也为为了提高自 己的编程才能和规律思维才能,我选了这道全国交通询问模拟系统的设计与实现一题;在对其需求进行分析之后,依据需求分析,逐步完成其各部分的功能实现;对于总的 方面来讲,治理员功能实现并不难,而难点在于用户功能中的算法及数据结构中的知 识以及编程的微小方面,下面将具体介绍本课程设计的内容;2 需求分析2.1范畴1.1标识文件状态:文件标识:需求分析报告【】草稿当前版本:v1.0【 】正式发布【】正在修改作 者:完成日期:2021-6-1

3、221.2系统概述1软件名称:全国交通询问系统v1.0- 2 -精品学习资料精选学习资料 - - - 欢迎下载2软件功能:主要的功能有:治理员增删和修改城市站点信息.飞机路线信息.火车路线信息;3用户:查询最小耗费路线.查询最短时间路线.查询城市全部路线;4开发者:21.3文档概述需求分析采纳在面对对象的方法,主要使用结构体struct的方法来进行实际的编程,在文档中主要采e-r 图和对功能的简洁描述的方法来表述系统的需求;本需求分 析的审查者为老师,所以主要为写给老师看的,用来说明我对这个系统的分析情形;22 引用文件无23 需求概述23.1系统目标本系统的总体目标为通过使用该系统,治理员可

4、以对飞机或者火车的信息的简洁治理,也便利外出旅客在不同的需求下(如:最少的花费和最短的路程),快速浏览到所要的信息;本系统设计的特点主要有以下几个方面:1. 具有较高的牢靠性和可用性;2. 系统易于治理保护;3 简洁.便利;23.2运行环境1. 系统硬件需求pentium4800mhz 或更高主频 cpu 256mb以上内存;2. 系统软件需求visual c+ 6.0或者 visual studio 6.0等编程软件;23.3用户的特点机场工作人员或火车站工作人员以及其他具备基本的电脑操作技能和肯定的治理- 3 -精品学习资料精选学习资料 - - - 欢迎下载权限的用户;旅客需具备基础的运算

5、机操作技能;24 功能需求通过对本设计的信息综合分析,得到交通信息的主要组成部分之后,我觉得本系统功能主要分为以下两个部分:1治理员操作:可以对站点的增设和删除,对火车车次的添加与删除以及对飞机航班的添加及删除操作;2. 旅客用户操作:对最小耗费路线的查看.最短时间路线的查看和城市全部的路线信息的查看;24.1操作流程图增删城市信息精品学习资料精选学习资料 - - - 欢迎下载治理员旅客用户增删交通路线信息增删飞机信息增删火车信息增删交通路线信息增删交通路线信息增删交通路线信息退出系统精品学习资料精选学习资料 - - - 欢迎下载24.2系统各项功能描述1) 用 例 1 用例名:治理员操作行为

6、者:信息治理员目的:完成对站点信息.飞机航班信息.火车列次信息的增加和删减治理过程描述:a) 挑选治理员入口;- 4 -精品学习资料精选学习资料 - - - 欢迎下载b) 输出正确的密码登入系统;c) 可以添加城市;d) 可以删除城市;e) 添加交通路线;f) 删除交通路线;g) 退出系统反常处理:无;2) 用例 2用例名:旅客及其它人操作行为者:非治理员目的:查看交通信息过程描述:a) 挑选旅客入口;b) 可以查询最小耗费路线;c) 可以查询最短时间路线;d) 可以查询城市全部路线;e)退出系统反常处理:无25 数据下面仅列出主要实体;通过对同学治理系统的需求分析,我画出五个实体的e-r图:

7、(1)城市信息实体城市信息实体包括城市名,如下图所示:城市信息城市名- 5 -精品学习资料精选学习资料 - - - 欢迎下载(2)火车信息实体火车信息实体包括火车车次.起始站点.终止站点.耗费时间.费用,如下图所示:起始站点终止站点精品学习资料精选学习资料 - - - 欢迎下载火车车次火车信息费用精品学习资料精选学习资料 - - - 欢迎下载耗费时间(3)飞机信息实体飞机信息实体包括飞机航班.起始站点.终止站点.耗费时间.费用,如下图所示:起始站点终止站点精品学习资料精选学习资料 - - - 欢迎下载飞机航班飞机信息费用精品学习资料精选学习资料 - - - 欢迎下载耗费时间26 采纳的技术采纳

8、的技术主要包括对文件存取.数据结构和迪杰斯特拉算法等技术;3 具体设计依据题目要求及本次课程设计的目的,按着原先的需求分析的要求,我采纳结构体来储备每组数据,其中对每组数据进行相应的操作使用后将他们建立领结矩阵,然后采纳迪杰斯特拉算法,在读取文件和储存文件的功能中使用了文件流的相关操作;现把相应的设计思路及各个函数解析如下;- 6 -精品学习资料精选学习资料 - - - 欢迎下载3.1 数据结构设计分析3.1.1 储备城市信息 的结构体城市信息包含城市名,具体结构如下:typedef short int citytype;char citynamemax_vertex_nummax_strin

9、g_num;3.1.2 储备列车次信息的结构体typedef struct trafficnodechar namemax_string_num; int time;/int endcity /火车到达城市的编号int cost;/票价 trafficnodedat;typedef struct vnodecitytype city; /城市编号int trainnum; /标登记面 train数组里元素个数trafficnodedat trainmax_traffic_num; /数组成员为结构体,记录了到达城市.起止时间.票价和班次 vnodedat;3.1.3 储备航班的构体typede

10、f struct trafficnodechar namemax_string_num; /班次int time;int endcity; /火车到达城市的编号int cost; /票价 trafficnodedat; typedef struct vnode- 7 -精品学习资料精选学习资料 - - - 欢迎下载citytype city; /城市编号int flightnum; /标登记面 train数组和 flight数组里元素个数trafficnodedat flightmax_traffic_num; vnodedat;3.2 各个函数分析3.2.1 主函数和功能界面菜单函数函数原型

11、: int mainmain 函数主要为掌握整个系统,主要功能为掌握整个程序的运行;从主函数开始调用各相关函数来达到相应的功能;由于有多个不同的选项,用switch语句掌握每 个函数调用;关键代码如下:switchcommandcase 0:return 0;case 1:administrators;/治理员操作界面函数break; case 2:user;/用户操作界面函数break; default:cout<<"t挑选序号错误 . 请重新挑选 .n"3.2.2 读文件函数本系统要读入 3 个文件 .函数原型:int initsystem3.2.3 系统主

12、界面函数 函数原型:int main在主函数中,展现整个系统可供用户挑选的选项,也使不同的用户进入不同的操作界面;3.2.4 显示函数显示函数要三个,按不用的排序方式进行排序和显示,如下:函数原型:void user- 8 -精品学习资料精选学习资料 - - - 欢迎下载void administrators3.2.5 删除函数函数原型:int delcitychar *name/删除城市/删除城市int city、i、j;city=seekcityname; fori=city;i<citynum-1;i+strcpycitynamei、citynamei+1;adjlisti.fli

13、ghtnum=adjlisti+1.flightnum;adjlisti.trainnum=adjlist i+1.trainnum;forj=0;j<adjlisti.flightnum;j+adjlisti.flightj.cost=adjlisti+1.flightj.cost; adjlisti.flightj.endcity=adjlisti+1.flightj.endcity;strcpyadjlisti.f、adjlisti+1.f; adjlisti.flightj.time=adjlisti+1.flightj.time;ci

14、tynum-; return 1;int delpathchar *name/删除路线/ 删除路线- 9 -精品学习资料精选学习资料 - - - 欢迎下载int i、j、flag=0; fori=0;i<citynum;i+forj=0;j<adjlisti.flightnum;j+ ifstrcmpadjlisti.f、name=0flag=1;break;/找到要删除的路线,找到跳出for循环ifflagfor;j<adjlisti.flightnum-1;j+adjlisti.flightj.cost=adjlisti.flightj+1.cost

15、;adjlisti.flightj.endcity=adjlisti.flightj+1.endcity;strcpyadjlisti.f、adjlisti.flightj+1.name; adjlisti.flightj.time=adjlisti.flightj+1.time;精品学习资料精选学习资料 - - - 欢迎下载将总数减 1adjlisti.flightnum-;/将要删除路线后面的路线全部向前移,并break;精品学习资料精选学习资料 - - - 欢迎下载forj=0;j<adjlisti.trainnum;j+ ifstrcmpadjlisti.t

16、、name=0flag=1; break;ifflagfor;j<adjlisti.trainnum-1;j+- 10 -精品学习资料精选学习资料 - - - 欢迎下载adjlisti.trainj.cost=adjlisti.trainj+1.cost;adjlisti.trainj.endcity=adjlisti.trainj+1.endcity;strcpyadjlisti.t、adjlisti.trainj+1.name;adjlisti.trainj.time=adjlisti.trainj+1.time;精品学习资料精选学习资料 -

17、- - 欢迎下载return 1;adjlisti.trainnum-; break;精品学习资料精选学习资料 - - - 欢迎下载通过调用上面这些函数,可以删除某个城市.某航班或者某列车次的信息;3.2.6 添加函数函数原型:int insertcitychar *name/添加某个城市/ 添加城市strcpycitynamecitynum、name;adjlistcitynum.city=citynum;/设置城市编号adjlistcitynum.flightnum=0;adjlistcitynum.trainnum=0;/新增城市火车数和飞机数初始为零citynum+;/城市总数加 1r

18、eturn 1;intinsertflightchar*flight、char*startcity、char*endcity、inttime、int cost/添加某架航班/ 添加飞机路线int i、j;- 11 -精品学习资料精选学习资料 - - - 欢迎下载i=seekcitystartcity;j=seekcityendcity;adjlisti.flightadjlisti.flightnum.cost=cost;adjlisti.flight adjlisti.flightnum.endcity=j;adjlisti.flightadjlisti.flightnum.time=tim

19、e;strcpyadjlisti.flightadjlisti.flightn、flight; adjlisti.flightnum+;return 1;int inserttrainchar *train、char *startcity、char *endcity、int time、int cost/添加某次列车/ 添加火车路线int i、j; i=seekcitystartcity;j=seekcityendcity;adjlisti.trainadjlisti.trainnum.cost=cost;adjlisti.trainad jlisti.trainnum.endci

20、ty=j;adjlisti.trainadjlisti.trainnum.time=time; strcpyadjlisti.trainadjlisti.trainn、train; adjlisti.trainnum+;return 1;3.2.7 迪杰斯特拉函数void dijkstraint s3030、int p_start、int p_end、int traveltypeint precity30;int i、j、min、pre、pos;fori=0;i<citynum;i+ precityi=-1; precityp_start=-2; whileprecityp

21、_end=-1- 12 -精品学习资料精选学习资料 - - - 欢迎下载min=-1; fori=0;i<citynum;i+ifprecityi.=-1/i为起始站forj=0;j<citynum;j+ifprecityj=-1&&sij>0&&min<0|sij<min精品学习资料精选学习资料 - - - 欢迎下载站的城市编号pre=i;pos=j;/j为起始站中花费最小的到达min=sij;精品学习资料精选学习资料 - - - 欢迎下载precitypos=pre;dijkstra_outputs、precity、p_end、

22、traveltype;3.2.8 查询最小耗费函数int calcmincostint startcity、int endcity、int traveltype/ 查询最小耗费路线int s3030;int i、j、min、end、flag1、flag2; flag1=0;flag2=0; fori=0;i<citynum;i+forj=0;j<citynum;j+sij=-1;/设空路径iftraveltype=0/判定初始城市和终点城市为否在火车交通路线中fori=0;i<citynum;i+- 13 -精品学习资料精选学习资料 - - - 欢迎下载forj=0;j<

23、;adjlisti.trainnum;j+精品学习资料精选学习资料 - - - 欢迎下载flag1=1;flag2=1;ifadjlisti.trainj.endcity=startcityifadjlisti.trainj.endcity=endcity精品学习资料精选学习资料 - - - 欢迎下载精品学习资料精选学习资料 - - - 欢迎下载机交通路线中else iftraveltype=1/判定初始和终点城市为否在飞fori=0;i<citynum;i+ forj=0;j<adjlisti.flightnum;j+精品学习资料精选学习资料 - - - 欢迎下载ifadjlis

24、ti.flightj.endcity=startcity flag1=1;ifadjlisti.flightj.endcity=endcity flag2=1;ifflag1.=1&&flag2.=1printf"nt愧疚. 没有您要查找的路精品学习资料精选学习资料 - - - 欢迎下载线."return 0;iftraveltype=0精品学习资料精选学习资料 - - - 欢迎下载fori=0;i<citynum;i+min=32767;j=0;whilej<adjlisti.trainnummin=32767;end=adjlisti.tra

25、inj.endcity;whileend=adjlisti.trainj.endcity&&j<adjlisti.trainnum- 14 -精品学习资料精选学习资料 - - - 欢迎下载ifadjlisti.trainj.cost<min min=adjlisti.trainj.cost;j+;/min为 i城市中的最小花费, end精品学习资料精选学习资料 - - - 欢迎下载为其路线终点站elsesiend=min;精品学习资料精选学习资料 - - - 欢迎下载fori=0;i<citynum;i+min=32767;j=0;whilej<adjl

26、isti.flightnummin=32767;end=adjlisti.flightj.endcity;whileend=adjlisti.flightj.endcity&&j<adjlisti.flightnumifadjlisti.flightj.cost<min min=adjlisti.flightj.cost;j+;siend=min;dijkstras、startcity、endcity、traveltype;- 15 -精品学习资料精选学习资料 - - - 欢迎下载return 1;3.2.9 储备数据函数intsavefile/ 将火车飞机交通信息

27、写入文件file *fp; int i、j、total;iffp=fopen"city.txt"、"wb"=nullcout<<"nt无法打开文件 .n" return -1;fprintffp、"%dn"、citynum;/在 city文件中输入城市总数fori=0;i<citynum;i+fprintffp、"%sn"、citynamei;/再输入城市名fclosefp; total=0;iffp=fopen"train.txt"、"wb&qu

28、ot;=nullcout<<"nt无法打开文件 .n" return -1;fori=0;i<citynum;i+ total+=adjlisti.trainnum;fprintffp、"%dn"、total;/在 train文件中输入火车总数fori=0;i<citynum;i+ forj=0;j<adjlisti.trainnum;j+fprintffp、"%s %s %s "、adjlisti.t、citynamei、 citynameadjlisti.trainj.endcit

29、y;/ 输入火车车次,始发站和终点站- 16 -精品学习资料精选学习资料 - - - 欢迎下载fprintffp、"%d %dn"、adjlisti.trainj.time、adjlisti.trainj.cost;/输入发车时间和到站时间和费用fclosefp; total=0;iffp=fopen"flight.txt"、"wb"=nullcout<<"nt无法打开文件 .n" return -1;fori=0;i<citynum;i+ total+=adjlisti.flightnum;fp

30、rintffp、"%dn"、total;/在 flight文件中输入飞机总数fori=0;i<citynum;i+ forj=0;j<adjlisti.flightnum;j+fprintffp、"%s %s %s "、adjlisti.f、citynamei、 citynameadjlisti.flightj.endcity;/ 输入飞机航班号,始发站和终点站fprintffp、"%d %dn"、adjlisti.flightj.time、adjlisti.flightj.cost;/输入起飞时间,

31、到达时间和费用fclosefp; return 1;3.3 算法及平台分析本系统用到的算法主要有数据结构中的排序.和文件流的操作等基本算法和迪杰斯特拉求取最短路径算法;本系统为在 microsoft visual c+ 6.0上设计及运行的,全部的信息显示均为在- 17 -精品学习资料精选学习资料 - - - 欢迎下载dos 界面中显示出来,利用system"color sf"操作使主界面以绿色为背景,前景色为白色;并且在每一步操作后, 都利用 system"cls"对 dos 界面进行清屏, 使显示器显示的信息清楚.整齐;4 实现方法通过对设计题目的深

32、化分析, 及题目的要求, 在设计时, 主要实现的大功能模块,大致满意一个全国交通询问系统的需要,主要的流程及实现方法请看下面的报告;4.1 同学信息治理系统框架及流程如下图主界面治理员界面同学用户界面添删添删查查查加除加除询询询城城交交最最城市市通通小短市路路耗时所线线费间有路路路线线线终止退出5 调试问题在编程中遇到不少问题,起初由于对题目懂得不足,使得将程序的功能不足,未- 18 -精品学习资料精选学习资料 - - - 欢迎下载能实现全部的意思;后来经过查阅相关资料后,发觉其中系统在对最短路径问题上实现困难;一番努力后,明白了迪杰斯特拉算法,并实现了最短时间到达的问题进行明白决,后来由于老

33、师对问题的简化,发觉在最少费用上同样可以用次算法,经过一番编译调试后,基本实现了功能;仍有显示方面问题;起初,对库函数的调用并不在意,但系统完成初期才发觉,在 dos界面下,在界面的美观上大大受影响;后来发觉调用system “cls ” 时,就会清除屏幕信息; system“pause” ,它会使数据显示后暂停一下,用记按键后再连续;sleep100 可以将界面冻结一段时间后在跳转,这使得使得整个系统的界面看起来整齐而又不失丰富;当然,在编写代码调试程序的时候,仍遇到很多的问题,但在自己一遍又一遍的调试中改正了,从而使系统的功能更加完善,使系统的功能更从人性化,容错才能更加强大;但为系统仍旧存在很多不足之处,这与自己的体会和学问范畴有关,在老师的指导下,信任自己以后能作出更完善.更人性化的系统;6 系统的使用说明书对于整个系统的使用及每一次你所作出挑选和操作之后会显现什么样的界面及操作结果,在下面的说明

温馨提示

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

评论

0/150

提交评论