当前位置:文档之家› 城市公交车路线查询系统

城市公交车路线查询系统

长沙学院软件工程基础实训II实训题目城市公交查询软件学院计算机工程与应用数学学院专业(班级)姓名学号指导教师起止日期实训任务书课程名称:软件工程基础实训II实训题目:城市公交查询软件已知技术参数和设计要求:1. 问题描述(功能要求):(1)用户管理用户管理模块为用户提供用户信息管理的功能,包括用户注册、用户登陆、用户信息修改、用户密码修改、用户注销等功能。

♦用户注册:用户可以利用此功能完成注册,用户在界面输入注册信息,回车后,软件将注册信息保存到用户信息数据文件中。

♦用户登陆:用户可以利用此功能完成登陆,用户在界面输入登陆信息,回车后,软件验证登录信息,登陆成功后,软件进入主功能选择界面。

♦用户信息修改:用户可以利用此功能完成用户信息修改。

♦用户密码修改:用户可以利用此功能完成密码修改。

♦用户注销:用户可以利用此功能完成用户信息注销,某用户注销后,便不能再次登录。

(2)线路管理线路管理模块为用户提供公交线路数据的管理和维护,包括线路添加、线路修改、线路删除等功能。

♦线路添加:用户可以利用此功能增加一条线路。

♦线路修改:用户可以利用此功能修改一条线路。

♦线路删除:用户可以利用此功能删除一条线路。

(3)站点管理站点管理模块为用户提供公交站点数据的管理和维护,包括站点添加、站点修改、站点删除等功能。

♦站点添加:用户可以利用此功能增加一个站点。

♦站点修改:用户可以利用此功能修改一个站点。

♦站点删除:用户可以利用此功能删除一个站点。

(4)公交查询公交查询模块为用户提供公交信息查询的功能,包括站点查询、线路查询、站站查询、最短距离查询、最少换乘查询等功能。

♦站点查询:用户可以利用此功能查看某个站点所停靠的公交线路。

♦线路查询:用户可以利用此功能查看某条线路所路经的公交站点。

♦站站查询:用户可以利用此功能查询出发地和目的地之间的所有公交乘车方案。

♦最短距离查询:用户可以利用此功能查询出发地和目的地之间最短距离的公交乘车方案。

♦最少换乘查询:用户可以利用此功能查询出发地和目的地之间最少换乘的公交乘车方案。

2. 运行环境要求:(1)能在在Windows平台或Linux平台上运行。

3. 技术要求:总体技术要求:(1)采用标准C语言实现;(2)运行结果正确,没有异常等报错;(3)界面友好,易于操作;(4)数据结构运用灵活,编码规范,设计合理。

各阶段具体要求:第一阶段:需求分析阶段(1)写出需求分析(做什么)(2)要求问题分析和功能定义准确第二阶段:系统设计阶段(1)根据问题描述,设计系统的结构(3)完成数据结构中各个函数的定义(4)用户界面的设计(5)要求数据结构定义合理,类层次结构清晰第三阶段:编码实现阶段(1)完成代码编写(2)要求代码编写规范第四阶段:系统测试阶段(1)完成功能调试(2)要求完成必要的测试工作第五阶段:交付实施阶段(1)提交可正常执行的系统(2)提交系统需求说明书、设计说明书、程序代码(3)撰写实训报告书(4)要求规范地书写文档实训工作量:(1)软件设计:完成问题陈述中所提到的所有需求功能。

(2)实训说明书:要求撰写不少于3000个文字的文档,详细说明各阶段具体要求。

工作计划:安排一周时间进行集中实训,软件开发步骤如下,第1~2天完成1~2项目,第3~5天完成3~5项目,实训说明书同步进行;(1)需求分析(2)结构设计(3)编码实现(4)测试(5)撰写实训说明书并答辩注意事项:⏹提交文档➢长沙学院实训说明书(含实训任务书,每学生1份)➢长沙学院实训鉴定表(纸质打印,每学生1份)目录一、引言 (1)1.1编写目的 (1)二、需求规约 (1)2.1问题描述 (1)2.2需求分析 (1)三、程序设计 (3)3.1概要设计 (3)3.2详细设计 (4)3.3数据结构设计 (12)3.4关键算法1 (13)四、运行测试 (14)4.1运行环境搭建 (14)4.2测试数据说明 (15)4.3程序运行结果 (16)五、总结 (19)附录 (19)一、引言1.1 编写目的本文档是“城市公交查询软件”的软件设计说明书,编写目的是:明确软件需求、概要设计、详细设计和功能测试用例,为软件后续开发和维护提供指导。

本文档的读者对象是需求分析人员、系统设计人员、系统开发人员、系统测试人员。

1.2 参考资料二、需求规约2.1 问题描述随着我国城市公交系统发展和逐渐完善,市民的出行得到了极大的方便,但同时巨大的公交线路网让人们的选择也困难起来,本城市公交系统就是在此背景下进行设计的。

本系统以用户为中心,界面简洁,结构简单,功能较为完善,可以满足市民出行的正常需要。

系统分为两个部分,一是内部人员使用的管理员部分,这个部分的用来进行管理,包括站点管理,线路管理,城市管理和功能测试。

二是一般用户使用的查询部分,这个部分的用来进行查询,包括站点查询,线路查询,站站查询,切换城市,修改密码。

2.2 需求分析(1)用户管理用户管理模块为用户提供用户信息管理的功能,包括用户注册、用户登陆、用户信息修改、用户密码修改、用户注销等功能。

用户注册:用户可以利用此功能完成注册,用户在界面输入注册信息,回车后,软件将注册信息保存到用户信息数据文件中。

♦用户登陆:用户可以利用此功能完成登陆,用户在界面输入登陆信息,回车后,软件验证登录信息,登陆成功后,软件进入主功能选择界面。

♦用户信息修改:用户可以利用此功能完成用户信息修改。

♦用户密码修改:用户可以利用此功能完成密码修改。

♦用户注销:用户可以利用此功能完成用户信息注销,某用户注销后,便不能再次登录。

(2)线路管理线路管理模块为用户提供公交线路数据的管理和维护,包括线路添加、线路修改、线路删除等功能。

♦线路添加:用户可以利用此功能增加一条线路。

♦线路修改:用户可以利用此功能修改一条线路。

♦线路删除:用户可以利用此功能删除一条线路。

(3)站点管理站点管理模块为用户提供公交站点数据的管理和维护,包括站点添加、站点修改、站点删除等功能。

♦站点添加:用户可以利用此功能增加一个站点。

♦站点修改:用户可以利用此功能修改一个站点。

♦站点删除:用户可以利用此功能删除一个站点。

(4)公交查询公交查询模块为用户提供公交信息查询的功能,包括站点查询、线路查询、站站查询、最短距离查询、最少换乘查询等功能。

♦站点查询:用户可以利用此功能查看某个站点所停靠的公交线路。

♦线路查询:用户可以利用此功能查看某条线路所路经的公交站点。

♦站站查询:用户可以利用此功能查询出发地和目的地之间的所有公交乘车方案。

♦最短距离查询:用户可以利用此功能查询出发地和目的地之间最短距离的公交乘车方案。

♦最少换乘查询:用户可以利用此功能查询出发地和目的地之间最少换乘的公交乘车方案。

三、程序设计3.1 概要设计(1)管理员模块:进行线路管理,站点管理、城市管理和功能测试。

(2)线路管理模块:线路管理模块为用户提供公交线路数据的管理和维护,包括线路添加、线路修改、线路删除等功能。

(3)站点管理模块:站点管理模块为用户提供公交站点数据的管理和维护,包括站点添加、站点修改、站点删除等功能。

(4)城市管理模块:城市管理模块进行城市数据的管理和维护,包括城市添加、城市修改、城市删除等功能。

(5)用户模块用户模块方便用户进行线路查询、站点查询、站站查询、城市查询等功能。

(6)线路查询模块:用户可以利用此功能查看某条线路所路经的公交站点。

(7)站点查询模块:用户可以利用此功能查看某个站点所停靠的公交线路。

(8)站站查询模块:用户可以利用此功能查询出发地和目的地之间的所有公交乘车方案。

3.2 详细设计(1)登陆注册模块(2)站点管理模块(3)线路管理模块(4)查询模块3.3 数据结构设计struct user//记录账号信息{int identity;//用户身份,值等于false时为普通用户,否则为管理员int userId;//用户编号char loginName[40];//用户登录名char loginPassword[20];//登录密码struct user *next;//指向下一个用户信息的指针,便于建立链表};struct city{//记录城市信息int cityId;//城市编号char cityName[20];//城市名struct city *next;//指向下一个城市信息的指针,便于建立链表};struct station //记录车站信息{int stationId;//车站编号char stationName[20];//车站名称int cityId;//所属城市编号struct station *next;//指向下一个站点信息的指针,便于建立链表};struct road //记录公交线路信息{int roadId;//公交线路编号char roadName[20];//公交线路名称int cityId;//所属城市编号struct road *next;//指向下一个公交线路信息的指针,便于建立链表};struct relation{//记录车站与公交线路之间的关系和站与站之间的信息int stationId;//车站编号int roadId;//公交线路编号int sep;//车站在此公交线路的序号int distance;//在此公交线路下这个车站到下一站的距离(单位:km)int time; //在此公交线路下这个车站到下一站所需要的时间(单位:min)int cityId;//所属城市编号struct relation *next;//指向下一个站点与线路映射信息的指针,便于建立链表};3.4 关键算法1Dijkstra算法:基本思想:设G(V,E)是一个带权有向图,把图中的顶点集合V分成两组,第一组为已经求出的最短路径的顶点集合(用S表示,初始时S中只有一个原点,以后每求得一条最短路径就加入的集合S 中,知道全部顶点都加入到集合中),第二组,为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点就如S中。

如果两个顶点之间有权值,并且各个路径的权值不同,就把最小的作为顶点与顶点的最短距离,v0为起始顶点在邻接矩阵顶点数组中的下标,P为二维的布尔矩阵类型,矩阵P用来存储当前已经求得的所有最短路径,若P[v][w]为true,则w是当前求得的从v0到v最短路径上的顶点,D为整形数组类型,数组D用来存储从v0到所有顶点的带权路径长度,用Dijkstra算法求有向网G的v0顶点到其余顶点v的最短路径p[v]及其带权路径长度D[v]四、运行测试4.1 运行环境搭建DEV C++;4.2 测试数据说明4.3 程序运行结果五、总结本部分描述作者在进行本实训过程中的感悟、经验、教训等。

相关主题