38号白晓兰课程设计.docx
- 文档编号:6337269
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:14
- 大小:168.06KB
38号白晓兰课程设计.docx
《38号白晓兰课程设计.docx》由会员分享,可在线阅读,更多相关《38号白晓兰课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
38号白晓兰课程设计
西安建筑科技大学华清学院
课程设计(论文)
题目:
交通咨询系统
院(系):
机械电子工程系
专业班级:
计算机2011
姓名:
白晓兰
学号:
201106060138
指导教师:
李智杰
2013年9月20日
西安建筑科技大学华清学院课程设计(论文)任务书
专业班级:
计算机2011学生姓名:
白晓兰指导教师(签名):
一、课程设计(论文)题目
交通咨询系统
二、本次课程设计(论文)应达到的目的
数据结构是实践性很强的课程。
课程设计是加强学生实践能力的一个强有力手段。
课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。
严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。
本题目要达到目的:
熟练最短路径问题算法。
三、本次课程设计(论文)任务的主要内容和要求(包括原始数据、技术参数、设计要求等)
设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到另一个城市顶点之间的最短路径或最低费用或最少时间等问题。
对于不同咨询要求,可以输入城市间的路程或所需要时间或所需费用。
设计分三个部分,一是建立交通网络图的存储结构;二是解决单源最短路径问题;最后再实现两个城市顶点之间的最短路径问题。
要求:
1、对城市信息(城市名、城市间的里程)进行编辑:
具备添加、修改、删除功能;
2、对城市间的两种交通工具:
飞机和火车。
对飞机航班和列车时刻表进行编辑:
里程、航班和列车班次的添加、修改、删除;
3、提供两种最优决策:
最快到达或最省钱到达。
全程只考虑一种交通工具,可以不考虑回程;
4、旅途中的耗费的总时间应包括中转站的等候时间。
其中飞机至少二小时,火车至少一小时;
5、咨询以用户和计算机对话方式进行,要注意人机交互的屏幕界面。
由用户选择最优决策原则和交通工具,输入起始站、终点站、出发时间,输出信息:
最快需要多长时间才能到达及旅费,或者最少需要多少旅费才能到达及时间,并详细说明依次于何时何地乘坐哪一趟班机或列车何时到达何地。
四、应收集的资料及主要参考文献:
由于本课程没有安排“课内上机”学时,因此,在课程设计之前必须自己已经上机练习了“线性表”的基本操作。
参考文献:
1.本年级使用的教材:
数决结构与算法分析(C++版),电子工业出版社,2005.7,CliffordA.Shaffer编著
2.数据结构与算法,科学出版社,2005.08,赵文静祁飞等编著
3.数据结构-C++语言描述,西安交通大学出版社,1999.01,赵文静编著
4.VC++深入详解,电子工业出版社,2007.7,孙鑫,于安萍编著
5.C++程序设计,清华大学出版社,2005.8,COHOON&DAVIDSON编著
五、审核批准意见
教研室主任(签字)
设计总说明
数据结构是实践性很强的课程。
课程设计是加强学生实践能力的一个强有力手段。
课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。
严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。
设计一个交通咨询系统,能让旅客咨询从任一个城市顶点到另一个城市顶点之间的最短路径或最低费用或最少时间等问题。
对于不同咨询要求,可以输入城市间的路程或所需要时间或所需费用。
设计分三个部分,一是建立交通网络图的存储结构;二是解决单源最短路径问题;最后再实现两个城市顶点之间的最短路径问题
关键词:
数据结构;交通咨询;最短路径;图;
目录
1.设计目的1
2.问题描述2
3.需求分析2
4.概要设计2
5.详细设计5
6.调试分析10
7.使用说明11
8.设计总结15
9.参考文献15
《数据结构》课程设计
交通咨询系统
1.设计目的
“数据结构”是计算机科学与技术专业一门十分重要的专业技术基础课,计算机科学各领域及有关的应用软件都要使用到各种数据结构。
在我国,”数据结构与算法”已经作为理工科非计算机专业必修的信息技术基础课程之一。
世界上许多科技人员对学习、研究数据结构和算法都非常重视,对于从事计算机科学及其应用的科技工作者来说,数据结构与算法更是必须透彻地掌握的重要基础。
学习数据结构与算法的最终目的是解决实际的应用问题,特别是非数值计算类型的应用问题。
课程设计是加强学生实践能力的一个强有力手段。
课程设计所安排的题目,在难度和深度方面都大于平时的上机训练,要求同学在完成设计和编程大型作业的过程中,深化对数据结构与算法课程中基本概念、理论和方法的理解;训练综合运用所学知识处理实际问题的能力,强化面向对象的程序设计理念;使同学的程序设计与调试水平有一个明显的提高。
课程设计要求学生在完成程序设计的同时能够写出比较规范的设计报告。
严格实施课程设计这一环节,对于学生基本程序设计素养的培养和软件工作者工作作风的训练,将起到显著的促进作用。
2.问题描述
处于对不同目的的旅客对交通工具有不同的要求。
例如,因公出差的旅客希望在旅途中的时间尽可能短,出门旅游的游客则希望旅费尽可能省,而老年旅客则要求中转次数最少。
编制一个全国城市间的交通咨询程序,为旅客提供两种或三种最优决策的交通咨询。
3.需求分析
3.1数据需求
本系统的主要数据是交通相关数据。
交通信息包括:
各城市之间的距离,到达城市花费的时间,到达各城市的费用等。
3.2基本功能需求
本系统主要实现对城市之间的最短路径、最少时间、最少花费,最佳路径的查询,需要实现以下几个方面的管理功能:
(1)存储交通网信息:
存储交通信息。
(2)查找一个城市到其他城市的最短距离:
按城市名查找。
(3)查找一个城市到其他城市的最佳路径:
按城市名查找。
(4)查找两个城市之间的最短距离:
按城市名查找。
(5)打印交通网信息:
显示交通网信息。
3.3非功能性需求
用户界面需求:
简洁、易用、易懂、友好的用户界面。
硬件要求:
装有VisualC++6.0的计算机。
可靠性需求:
保证用户在正常使用本系统时,用户的操作或误操作不会产生数据的丢失。
4.概要设计
4.1数据结构
(1)函数的基本功能;
(2)结构体的应用;
(3)文件的运用;
(4)数组的运用;
4.2系统包含的函数
voidDijkstra_Output(ints[30][30],intPreCity[30],intp_end,intTravelType)
//输出最短路径函数
voidDijkstra(ints[30][30],intp_start,intp_end,intTravelType)
//迪杰斯特拉算法计算最短路径函数
intCalcMinCost(intStartCity,intEndCity,intTravelType)
//查询最小耗费路线函数
intSearchMinTime(CityTypeCity,CityTypeEndCity,intCurTime,intcurPathNo,intTravelType)
//计算出最短时间函数
intCalcMinTime(intStartCity,intEndCity,intTravelType)
//查询最短时间路线函数
intInitSystem()
//从文件中读信息函数
voidAdministrators()
//管理员的界面函数
intInsertCity(char*Name)
//添加城市函数
intDelCity(char*Name)
//删除城市函数
intInsertTrain(char*train,char*StartCity,char*EndCity,intStartTime,intEndTime,intcost)
//添加火车路线函数
intInsertFlight(char*flight,char*StartCity,char*EndCity,intStartTime,intEndTime,intcost)
//添加飞机路线函数
intDelPath(char*name)
//删除路线函数
intSeekCity(char*name)
//查找城市函数
intSaveFile()
//将火车飞机交通信息写入文件函数
voidLine(intcity,inttraveltype)
//查找城市中的所有路线函数
voidUser()
//用户界面函数
intmain()
//主函数
4.3函数间的关系
主函数是程序的入口,采用模块化设计,通过菜单选择,来调用实现各功能所要的函数。
首先定义城市交通图的存储结构,再定义一些变量,根据变量决定调用的函数,包括Dijkstra算法。
4.4系统功能模块图
图4.4.1系统功能模块图
5.详细设计
5.1结构体的详细定义
typedefstructTrafficNode{
charn;
ame[MAX_STRING_NUM];//班次
intStartTime,StopTime;//起止时间
intEndCity;//火车到达城市的编号
intCost;//票价
}TrafficNodeDat;
typedefstructVNode
{
CityTypecity;//城市编号
intTrainNum,FlightNum;//标记下面Train数组和Flight数组里元素个数
TrafficNodeDatTrain[MAX_TRAFFIC_NUM];//数组成员为结构体,记录了到达城市、起止时间、票价和班次
TrafficNodeDatFlight[MAX_TRAFFIC_NUM];
}VNodeDat;
typedefstructPNode
{
intCity;
intTraNo;
}
5.2系统函数详细介绍
1、voidDijkstra(ints[30][30],intp_start,intp_end,intTravelType)
迪杰斯特拉算法计算最短路径函数。
这个函数中迪加斯特拉算法是用来求从已知源点到其他各个顶点最短距离的。
其中运行结果是找到从源点到其他各个顶点的路径和最短距离。
2、CalcMinTime(intStartCity,intEndCity,intTravelType)
查询最短时间路线函数。
此函数主要实现用户通过输入起始城市名来查找最短时间路线的功能。
3、CalcMinCost(intStartCity,intEndCity,intTravelType)
查询最小耗费路线函数。
此函数主要实现用户通过输入起始城市名,来查找最小和耗费路线的功能。
4、voidLine(intcity,inttraveltype)
查找城市中的所有路线函数。
此函数主要实现用户通过输入城市名来查询城市中的所有路线的功能。
5.3系统功能模块介绍
本系统共分12个模块
1、主函数:
主函数是程序的入口,采用模块化设计,通过菜单选择,来调用实现各功能所要的函数。
2、添加城市:
主要有管理员增加城市名。
3、查找城市并返回序号:
管理员查找是否增加城市成功。
4、删除城市:
由管理员删除不需要的城市。
5、添加列车:
管理员添加列车。
6、添加航班:
管理员添加航班。
7、删除列车或航班:
管理员删除列车或航班。
8、找出最小费用路线:
用户查找最小费用路线。
9、找出最短时间路线:
用户找出最短时间路线。
10、计算最快路线耗费的时间:
用户计算最快路线耗费的时间。
11、主界面:
清楚的分辨管理员和用户。
12、退出:
退出系统。
5.4具体模块设计
5.4.1计算最少费用功能模块设计
图5.4.1计算最少费用功能模块设计图
5.4.2计算最短路径功能模块设计
图5.4.2计算最短路径功能模块设计
5.4.3计算最短时间功能模块设计
图5.4.3计算最短时间功能模块设计
6.调试分析
本软件是基于Windows的编程开发,所以,软件调试必须在Windows环境下进行。
调试前须做好准备工作:
(1)需要安装VisualC++6.0的计算机一台;
配置好之后,在VisualC++6.0环境下进行软件的调试。
(2)测试数据:
用户模块:
(1)在用户模块中,根据主界面提示,键入数字2,确定。
再按提示进行操作测试,添加一条记录后,发现在数据文本中有保存该记录,如果错误输入,观察是否能正常提示信息。
否则修改程序再进行调试。
例如:
输入2后,确定,程序显示“这里是用户界面,欢迎进入:
”,根据下面序号3、2、1、0选择自己想要查找的信息,按照城市名查找最小耗费路线、城市最短时间路线、城市所有路线功能。
选择0返回上一步。
(2)算法改进设想:
在程序设计前期,我们并没有用txt文件来保存城市、航班、交通路线信息。
经过我不断的修改以及调试后,该程序总算可以进行txt文本的读出与写入,并且添加城市、航班、交通路线信息后可以直接将信息保存在txt文本文件中。
7.使用说明
图7.1系统主界面
此图为主界面,选择序号即可进入所需界面。
进入管理员界面需经过身份验证,输入用户名和密码,本程序用户名和密码均为123456。
图7.2管理员界面
此图为管理员界面,这是添加交通路线的例子。
图7.3用户界面
此图为用户界面,这事查询城市最小耗费路线,最短路线和查询城市所有路线的例子
图7.4添加城市、路线、航班界面
此图是管理员添加城市、交通路线、航班的例子。
7.5查询城市路线界面
此图为查询火车最小耗费路线。
这是两地之间无中转站的例子。
图7.6查询路线界面
此图为查询火车最小耗费路线。
这是两地之间无中转站的例子。
图7.7查询城市所有路线界面
此图是查询城市有路线的例子。
图7.8查询最小耗费路线界面
此图为查询火车最小耗费路线时两地之间有中转站的例子飞机路线查询同此。
8.设计总结
课程设计是对自己一个学期以来学习的良好检验,在所有课题中,我选择了交通咨询系统的课题题目。
在一个星期的设计过程中,碰到过许多困难,也从书籍和网络中找过许多相关资料来完善自己的设计。
但结果不是让人很满意,可能是接触时间太短,对数据结构的认识还不深刻。
通过这次课程设计,我对用迪杰斯特拉算法计算最短路径有了更深刻的认识,加强了我对数据结构的了解。
我知道如果要想在C方面有成就,必须多想多练习。
现在我还是缺少练习,看程序可能看得懂。
而当真正的编写程序起来就遇到困难了。
通过这次系统的编写,我明白了编程要细心,有耐心。
有些程序看起来很多很难,但只要抽丝剥茧的慢慢分析,就能明白它是怎么运行的。
其实,只要踏踏实实一步一步来,你会发觉原来编程难度也不过如此。
同时,我懂得了要多思考,遇到问题或不解时不能不懂装懂,要尽量去想请清其缘由,要懂得查阅有用的资料。
我知道在这次的课程设计中自已还有许多的欠缺,在以后的日子中,我一定得更加严格要求自己,改正缺点,不断努力,不断进步。
9.参考文献
[1]Clifford,A.Shaffer编著,数决结构与算法分析(C++版),电子工业出版社,2005.7
[2]赵文静,祁飞等编著,数据结构与算法,科学出版社,2005.08
[3]赵文静编著,数据结构-C++语言描述,西安交通大学出版社,1999.01
[4]孙鑫,于安萍编著,VC++深入详解,电子工业出版社,2007.7
[5]COHOON&DAVIDSON编著,C++程序设计,清华大学出版社,2005.8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 38号 白晓兰 课程设计 38
![提示](https://static.bdocx.com/images/bang_tan.gif)