公交查询系统 - 图文

更新时间:2024-01-11 01:37:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

长 沙 学 院

课程设计说明书

题系

(

目 )

专业(班级) 姓学指起

名 号

导止

教日

师 期

课程设计任务书

课程名称:软件工程基础实训Ⅱ

设计题目:城市公交查询软件

已知技术参数和设计要求: 需求说明及要求 1.主要功能模块:

(1)用户管理

用户管理模块为用户提供用户信息管理的功能,包括用户注册、用户登录、用户信息修改、用户密码修改、用户注销等功能。

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

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

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

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

(2)线路管理

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

线路添加:用户可以利用此功能增加一条线路。 线路修改:用户可以利用此功能修改一条线路。 线路删除:用户可以利用此功能删除一条线路。

(3)站点管理

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

站点添加:用户可以利用此功能增加一个站点。 站点修改:用户可以利用此功能修改一个站点。 站点删除:用户可以利用此功能删除一个站点。

(4)公交查询

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

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

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

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

3.要求:界面友好,易于操作;数据结构运用灵活,编码规范,设计合理。

各阶段具体要求: 1、需求分析阶段

(1)写出需求分析(做什么) (2)要求问题分析和功能定义准确

2、系统设计阶段

(1)根据问题描述,设计系统的结构 (3)完成数据结构中各个函数的定义 (4)用户界面的设计

(5)要求数据结构定义合理,类层次结构清晰

3、编码实现阶段 (1)完成代码编写 (2)要求代码编写规范

4、系统测试阶段 (1)完成功能调试

(2)要求完成必要的测试工作

5、交付实施阶段

(1)提交可正常执行的系统

(2)提交系统需求说明书、设计说明书、程序代码 (3)撰写实训报告书

(4)要求规范地书写文档

设计工作量:

(1)软件设计:完成问题陈述中所提到的所有需求功能。

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

工作计划:

安排两周时间进行课程设计,软件开发步骤如下,2天完成1~3,3-5天完成4~6,论文同步进行; 1) 选定题目 2) 需求分析 3) 系统设计 4) 编码实现 5) 系统测试 6) 交付实施 注意事项 ? ? ? ?

提交文档

长沙学院实训任务书 长沙学院实训说明书 长沙学院实训鉴定表

(每学生1份) (每学生1份) (每学生1份)

指导教师签名: 日期: 教研室主任签名: 日期: 系主任签名: 日期:

长沙学院课程设计鉴定表

姓名 设计题目 指导教师意见: 评定成绩: 教师签名: 日期: 答辩小组意见: 评定成绩: 答辩小组长签名: 日期: 教研室意见: 最终评定等级: 教研室主任签名: 日期: 说明

学号 班级 城市公交查询软件 指导教师 课程设计成绩分“优秀”、“良好”、“中等”、“及格”、“不及格”五等。

摘要

c语言编写的一个公交查询软件,分为管理用户和普通用户,管理用户可以实现用户管理、站点管理、线路管理几个模块,而普通用户可以实现用户管理、公交查询两个模块。用结构体来存储数据,并采用邻接矩阵构造一个有权无向网,使迪杰斯特拉算法对图进行查询。

关键词:图,最短路径,公交查询

目录

一、引言 .............................................................................................................................................................. 1

1.1 编写目的 ............................................................................................................................................... 1 1.2 参考资料 ............................................................................................................................................... 1 二、需求规约 ...................................................................................................................................................... 2

2.1 功能需求 ............................................................................................................................................... 2 2.2 界面需求 ............................................................................................................................................. 11 2.2 数据需求 ............................................................................................................................................. 11 三、概要设计 .................................................................................................................................................... 11

3.1系统结构 .............................................................................................................................................. 11 3.2 界面设计 ............................................................................................................................................. 12 3.3数据设计 .............................................................................................................................................. 14 四、详细设计 .................................................................................................................................................... 15

4.1 数据结构设计说明 ............................................................................................................................. 15 4.2 管理员用户主界面用例设计说明 ..................................................................................................... 15 4.3普通用户主界面用例设计说明 .......................................................................................................... 16 五、测试用例设计 ............................................................................................................................................ 16 六、总结 ............................................................................................................................................................ 17 附录 .................................................................................................................................................................... 17

附录1 程序运行结果 ............................................................................................................................... 17 附录2 程序源代码 ................................................................................................................................... 28

一、引言

1.1 编写目的

本文档是“城市公交查询软件”的软件设计说明书,编写目的是:明确软件需求、概要设计、详细设计和功能测试用例,为软件后续开发和维护提供指导。本文档的读者对象是需求分析人员、系统设计人员、系统开发人员、系统测试人员。

1.2 参考资料

列出有关资料的名称、作者、文件编号或版本等。

[1] 严蔚敏,吴伟明.数据结构(C语言版). 北京:清华大学出版社,2007(2015.5重印). [2] 严蔚敏,吴伟明.数据结构(C语言版). 北京:清华大学出版社,1996

1

二、需求规约

2.1 功能需求

功能点编号 功能点名称 角色 功能说明 事件流程 1 管理员用户注册 管理员 管理员用户能通过本功能点完成注册操作。 1、 管理员用户输入用户名并回车 2、 软件判断用户名是否重复 3、 输入两次密码,软件检验两次输入的密码是否相同 4、 若正确,则跳到管理员功能处理界面 前置条件 后置条件 输入数据 输出数据 备注

功能点编号 功能点名称 角色 功能说明 事件流程 2 普通用户注册 普通用户 普通用户能通过本功能点完成注册操作。 1、 普通用户输入用户名并回车 2、 软件判断用户名是否重复 3、 输入两次密码,软件检验两次输入的密码是否相同 4、 若正确,则跳到普通用户主功能处理界面 前置条件 后置条件 输入数据 输出数据 备注

无 管理员用户成功进入软件管理员主功能处理界面。 用户名和密码 管理员主功能处理界面 无 无 普通用户成功进入软件管理员功能处理界面。 用户名和密码 普通用户主功能处理界面 无 2

功能点编号 功能点名称 角色 功能说明 事件流程 3 登陆 管理员或者普通用户 管理员用户或者普通用户能通过本功能点完成登陆操作。 1、 输入用户名和密码,并回车。 2、 软件校验用户名和密码格式是否合法。 3、 软件校验用户名和密码是否正确。 4、 若正确,则跳转到主功能处理界面;否则,提示“用户或密码输入错误,请重新输入!”。 前置条件 后置条件 输入数据 输出数据 备注

功能点编号 功能点名称 角色 功能说明 事件流程 4 修改信息 管理员或者普通用户 管理员用户或者普通用户能通过本功能点完成修改信息操作。 1、 管理员或者普通用户输入曾经的用户名 2、 如果曾经的用户名和当前用户相同,则提示输入新的用户名 3、 判断新用户名是否和已经注册的用户名冲突 4、若没有冲突,则提示修改成功,返回用户管理界面;若冲突,直接返回用户管理界面 前置条件 后置条件 输入数据 输出数据 备注

3

管理员或普通用户成功注册。 管理员用户或普通用户成功进入软件主功能处理界面。 用户名和密码 软件主功能处理界面 无 管理员或普通用户成功登陆,并进入用户管理界面 登陆、注册界面 老用户名和新用户名 登陆、注册界面 无

功能点编号 功能点名称 角色 功能说明 事件流程 5 修改密码 管理员或者普通用户 管理员用户或者普通用户能通过本功能点完成密码信息操作。 1、 管理员或者普通用户输入原来的密码 2、 如果密码正确,则提示输入新的密码;若不正确,返回用户管理界面 3、 提示修改成功,返回用户管理界面 前置条件 后置条件 输入数据 输出数据 备注 管理员或普通用户成功登陆,并进入用户管理界面 登陆、注册界面 旧密码和新密码 用户管理界面 无

功能点编号 功能点名称 角色 功能说明 事件流程 6 注销用户 管理员或者普通用户 管理员用户或者普通用户能通过本功能点完成注销操作。 1、 输入select,确定是否注销 2、 如果确定注销,则提示注销成功,返回登陆、注册界面;若不注销返回用户管理界面 前置条件 后置条件 输入数据 输出数据 备注

4

管理员或普通用户成功登陆,并进入用户管理界面 登陆、注册界面 Select 登陆、注册界面 无

功能点编号 功能点名称 角色 功能说明 事件流程 7 线路添加 管理员 管理员用户能通过本功能点完成线路添加操作。 1、 输入添加的线路n,添加的多少个站点m,输入添加的站点编号 2、 将所添加的线路写进文件 3、 输出所有线路 前置条件 后置条件 输入数据 输出数据 备注

功能点编号 功能点名称 角色 功能说明 事件流程 8 管理员成功登陆,并进入线路管理界面 线路管理界面 添加的线路n,站点数m,站点编号 所有线路 无 线路修改 管理员 管理员用户能通过本功能点完成线路修改操作。 1、 输入修改的类型 2、 把修改的路线全部写进文件 3、 输出所有线路 前置条件 后置条件 输入数据 输出数据 备注

管理员成功登陆,并进入线路管理界面中的线路修改界面 线路修改界面 线路修改的类型 所有线路 无 5

功能点编号 功能点名称 角色 功能说明 事件流程 9 线路删除 管理员 管理员用户能通过本功能点完成线路删除操作。 1、 输出所有的线路 2、 输入要删除的线路编号 3、 输出删除后的所有线路 前置条件 后置条件 输入数据 输出数据 备注

功能点编号 功能点名称 角色 功能说明 事件流程 管理员成功登陆,并进入线路管理界面 线路管理界面 删除线路编号 所有线路 无 10 站点添加 管理员 管理员用户能通过本功能点完成站点添加操作。 1、 输出所有的原有的所有站点 2、 输入所要增加的站点的名称和与相邻站点的距离 3、 写入文件,并输出添加后的所有站点 前置条件 后置条件 输入数据 输出数据 备注

管理员成功登陆,并进入站点管理界面 站点管理界面 站点名称和与相邻站点的距离 添加前后的所有站点 无 6

功能点编号 功能点名称 角色 功能说明 事件流程 11 站点修改 管理员 管理员用户能通过本功能点完成站点修改操作。 1、 输出所有的原有的所有站点 2、 输入所要修改站点的编号和新站点的名称 3、 写入文件,并输出修改后的所有站点 前置条件 后置条件 输入数据 输出数据 备注

功能点编号 功能点名称 角色 功能说明 事件流程 管理员成功登陆,并进入站点管理界面 站点管理界面 修改的站点的编号和新站点名称 修改前后的所有站点 无 12 站点删除 管理员 管理员用户能通过本功能点完成站点删除操作。 1、 输出所有的原有的所有站点 2、 输入所要删除站点的编号 3、 写入文件,并输出删除后的所有站点 前置条件 后置条件 输入数据 输出数据 备注

管理员成功登陆,并进入站点管理界面 站点管理界面 删除站点的编号 删除前后的所有站点 无 7

功能点编号 功能点名称 角色 功能说明 事件流程 13 站点查询 普通用户 普通用户能通过本功能点完成站点操作。 1、 输入所在站点的编号 2、 输出经过该站点所有线路的名称和所经过的站点 3、 返回公交查询界面 前置条件 后置条件 输入数据 输出数据 备注

功能点编号 功能点名称 角色 功能说明 事件流程 普通用户成功登陆,并进入公交查询界面 公交查询界面 所在站点的编号 线路名称和经过的站点 无 13 线线查询 普通用户 普通用户能通过本功能点完成线线查询操作。 1、 输入要查询的公交路线的编号 2、 输出该线路所经过的所有站点的编号 3、 查询成功,返回公交查询界面 前置条件 后置条件 输入数据 输出数据 备注

管理员成功登陆,并进入公交查询界面 公交查询界面 查询的线路的编号 该线路所经过的站点 无

8

功能点编号 功能点名称 角色 功能说明 事件流程 14 站站查询 普通用户 管理员用户能通过本功能点完成站站查询操作。 1、 输入起点和终点的站点编号 2、 输出所有的乘车方案 3、 返回公交查询界面 前置条件 后置条件 输入数据 输出数据 备注 普通用户成功登陆,并进入公交查询界面 公交查询界面 起点和终点的编号 所有的乘车方案 要求没有实现

功能点编号 功能点名称 角色 功能说明 事件流程 14 最短距离查询 普通用户 普通用户能通过本功能点完成最短距离查询操作。 1、 起点和终点的编号 2、 用迪杰斯特拉算法求出最短路径 3、 输出最短路径,返回公交查询界面 前置条件 后置条件 输入数据 输出数据 备注 普通用户成功登陆,并进入公交查询界面 公交查询界面 起点和终点站点的编号 最短路径 没有实现最短路径乘车方案

9

功能点编号 功能点名称 角色 功能说明 事件流程 15 最少换乘查询 普通用户 普通用户能通过本功能点完成最少换乘操作。 1、 输入起点和终点站点的编号 2、 输出最少换乘乘车方案 3、 返回公交查询界面 前置条件 后置条件 输入数据 输出数据 备注 普通用户成功登陆,并进入公交查询界面 公交查询界面 起点和终点站点的编号 最少换乘方案 没有实现最少换乘查询

10

2.2 界面需求

能够用键盘输入,进行最简单的人机交互。

2.2 数据需求

表2.1 管理员用户实体

属性名称 姓名 类型 字符串 长度 5 是否为空 否 唯一标识 是 说明 用户名

表2.2 普通用户实体

属性名称 姓名 类型 字符串 长度 5 是否为空 否 唯一标识 是 说明 用户名

三、概要设计

这里陈述总体设计思路。说明系统需求中的每个功能实现思路。

3.1系统结构

初始界面main_menu() 管理员界面menu() 普通用户界面menu() 用户管理模块User_Mangement() 站点管理模块Site_Mangement() 线路管理模块Line_Mangement()

用户管理模块User_Mangement() 公交查询模块bus_query()

图3.1 程序结图

11

功能与程序模块的关系说明

用户管理模块 站点管理模块 线路管理模块 公交查询模块

进行站点查询、线路查询、站站查询、最短距离查询、最少换乘查询 对线路进行添加、修改、删除 对站点进行添加、修改、删除 对用户进行信息修改、密码修改、用户注销 3.2 界面设计

说明每个界面的布局(要求画布局图,如图3.3所示),若果采用图形界面,则要说明每个界面的控件(列表说明,如表3.1所示)。简要说明交互过程。

---- 开福区公交查询系统 ---- ----------- 1.注册 --------- ----------- 2.登陆 --------- -------- 3.退出系统 -------- 请 输入你所 要 的 服务! 图3.2用户登录对话框

---公交查询系统主界面---- -------1.用户管理 -------- -------2.站点管理-------- -------3.线路管理-------- -------4.返回------------ : 请输入您要的功能 图3.3管理员用户对话框

12

---公交查询系统主界面---- -------1.用户管理-------- -------2.公交查询-------- -------3.返回------------ 请输入您要的功能: 图3.4普通用户对话框

-------用户管理界面------ -------1.信息修改--------

-------2.密码修改-------- -------3.用户注销-------- -------4.返回------------ 请输入您要的功能: 图3.5用户管理对话框

-------线路管理界面------ -------1.线路添加-------- -------2.线路修改-------- -------3.线路删除-------- -------4.返回------------ 请输入您要的功能: 图3.6线路管理对话框

-------站点管理界面------ -------1.站点添加-------- -------2.站点修改-------- -------3.站点删除-------- -------4.返回------------ 请输入您要的功能: 图3.7站点管理对话框

13

-------公交查询界面------ -------1.站点查询-------- -------2.线路查询-------- -------3.站站查询-------- -------4.最短距离查询---- -------5.最少换乘查询---- -------6.返回------------ 请输入您要的功能:

图3.8公交查询对话框

3.3数据设计

说明采用那些数据结构及数据的存储方式。可列表输出,例如表3.2所示。

表3.2 用户信息数据记录

数据项名 数据类型 长度 是否为空 唯一标识 userid loginName loginPassWd

主要结构体:

typedef struct user {

char name[5]; int password; int power; struct user *next;

说明 char[] char[] Int 4 20 6 否 否 否 是 否 否 用户登录名 用户登录密码 }user;

user *active_user;

struct busGraph { };

struct busLinesInformation {

char stationName[25];

int theStationToOthersPath[MAX_STATION]; int busLines[MAX_LINE]; int linesCount; int exist;

int saveStationInLine[MAX_STATION]; int stationCount;

14

};

bool vist[Max_Vertex_Num];

typedef char Vertxtype[25]; typedef int VerType; typedef struct ArcCell {

}ArcCell, AdjMatrix[Max_Vertex_Num][Max_Vertex_Num]; typedef struct {

Vertxtype vexs[Max_Vertex_Num]; AdjMatrix arcs; int vexnum; int arcnum; VerType adj;//距离

}MGraph;

四、详细设计

要求逐个地给出需求规格的每个用例的设计考虑。要求给出所有用例的实现方法。

4.1 数据结构设计说明

给出每个数据结构的C语言定义。

4.2 管理员用户主界面用例设计说明

表4.1 主处理函数 函数名 参数 返回值 功能描述 设计方案 1、利用while循环,在界面上绘制主功能选择菜单项,且对每个选项进行编号。 2、利用switch结构,根据用户输入的功能选项,调用相应模块的业务处理主函数,进入不同的业务模块进行处理。 menu() void int类型,0表示成功,-1表示失败 实现主功能界面的绘制和菜单处理 源文件 主程序.cpp

15

4.3普通用户主界面用例设计说明

表4.2 普通用户主界面函数

函数名 参数 返回值 功能描述 设计方案 1、利用while循环,在界面上绘制主功能选择菜单项,且对每个选项进行编号。 2、利用switch结构,根据用户输入的功能选项,调用相应模块的业务处理主函数,进入不同的业务模块进行处理。

menu() void int类型,0表示成功,-1表示失败 实现主功能界面的绘制和菜单处理 源文件 主程序.cpp 五、测试用例设计

表6.1 登录-注册测试用例 功能 用例编号 yl-001 yl-002 yl-003 yl-004 登录 yl-005 yl-006 yl-007 yl-008 yl-009 注册 yl-010 用户名,密码,确认密码 输入‘用户名’和‘密码’ 操作步骤 (输入条件) 测试数据 admin,123456 admin,1234567 admin1,123456 admin,空 空,123456 admin,一个空格 一个空格,123456 admin,密码不为数字 用户名超过5,123456 Tony,123456 预期结果 登录成功 登录失败 登录失败 登录失败 登录失败 登录失败 登录失败 登录失败 登录失败 创建成功 实际结果/判定 通过 通过 通过 通过 通过 通过 通过 通过 通过 通过

16

六、总结

城市公交系统的主要的难点在于线路管理模块的站点修改以及查询模块中的站站查询、最短距离查询、最少换乘查询,其中站站查询、最短距离查询、最少换乘查询这几个功能也可以说成一个功能,可以通过枚举出两站点之间的所有路径,在对其距离和换乘进行排序,就可以得到,但很难实现。

整个公交网络采用邻接矩阵进行存储,运用了迪杰斯特拉算法;对于用户用链表进行数据存储,要注意的是:在对用户的信息进行修改的时候要注意指针的使用。

本次设计不足的是:在进行站点删除是没有考虑到删除该站点对于其他站点的影响;在进行线路添加的时候没有判断添加的站点之间是否是连通;在查询模块中,站站查询和最少换乘查询两个功能没有实现,而最短距离查询中,只求出起点和终点之间的最短路径, 没有转换成乘车方案。

附录

附录1 程序运行结果

17

图1.主界面

图2.用户注册模块

18

图3.管理员用户主界面

19

图4.站点管理主界面

20

图5.站点添加

21

图6.站点修改

22

图7.站点删除

图8.线路添加

23

图9.线路修改中的站点添加

图10.线路修改中的站点删除

24

图11.线路修改中的线路名称修改

图12.线路删除

25

图13.公交查询之站点查询

图14,公交查询之线路查询

26

图15.公交查询之最短距离查询

图16.用户管理之信息修改

27

图17.用户管理之密码修改

图18.用户管理之用户注销

附录2 程序源代码

1. 后台站点文件

#include #include #include

28

using namespace std; #define MAX_USER 100 #define INIT_STATION 30 #define MAX_STATION 50 #define MAX_LINE 10

//#define INT_MAX 0x3f3f3f3f struct busGraph{ char stationName[25];

int theStationToOthersPath[MAX_STATION]; int busLines[MAX_LINE]; int linesCount; int exist; };

int main()

{ struct busGraph BG[MAX_STATION]; /*

0 汽车北站 1 开福区政府 2 伍家岭北 3马场 4 八家大屋 5 洪山桥 6 长沙大学 7 月湖公园 8 世界之窗 9 汽车东站 10华夏 11九尾冲 12 国防科大 13喻家冲 14 三一大道口 15德雅路口 16长沙晚报 17 南湖大市场 18 车站北路口 19 蓉园小区 20 五里牌 21火车站 22 袁家岭 23 省军区 24 中山亭 25 湘雅医院 26省博物馆 27长沙市一中 28烈士公园 29 年嘉湖 */

for(int i = 0 ; i < MAX_STATION ;i++) { BG[i].exist = 0;

for(int j = 0 ; j < MAX_STATION ;j++) BG[i] .theStationToOthersPath[j] = INT_MAX; }

for(int i = 0 ; i < MAX_STATION ;i++) {

BG[i].linesCount = 0;

for(int j = 0 ; j < MAX_LINE ; j ++) BG[i] .busLines[j] = 0; }

// BG[i] .busLines[j] = 0; for(int i = 0 ; i < 30 ; i++) {

BG[i].exist = 1; }

strcpy_s( BG[0].stationName ,10,\汽车北站 \); strcpy_s( BG[1].stationName ,11,\开福区政府\); strcpy_s( BG[2].stationName ,9,\伍家岭北\); strcpy_s( BG[3].stationName ,6,\马场 \); strcpy_s( BG[4].stationName ,10,\八家大屋 \);

29

strcpy_s( BG[5].stationName ,7,\洪山桥\); strcpy_s( BG[6].stationName ,9,\长沙大学\); strcpy_s( BG[7].stationName ,10,\月湖公园 \); strcpy_s( BG[8].stationName ,9,\世界之窗\); strcpy_s( BG[9].stationName ,10,\汽车东站 \); strcpy_s( BG[10].stationName ,5,\华夏\); strcpy_s( BG[11].stationName ,7,\九尾冲\); strcpy_s( BG[12].stationName ,9,\国防科大\); strcpy_s( BG[13].stationName ,7,\喻家冲\); strcpy_s( BG[14].stationName ,11,\三一大道口\); strcpy_s( BG[15].stationName ,9,\德雅路口\); strcpy_s( BG[16].stationName ,9,\长沙晚报\); strcpy_s( BG[17].stationName ,11,\南湖大市场\); strcpy_s( BG[18].stationName ,11,\车站北路口\); strcpy_s( BG[19].stationName ,10,\蓉园小区 \); strcpy_s( BG[20].stationName ,8,\五里牌\); strcpy_s( BG[21].stationName ,7,\火车站\); strcpy_s( BG[22].stationName ,7,\袁家岭\); strcpy_s( BG[23].stationName ,7,\省军区\); strcpy_s( BG[24].stationName ,7,\中山亭\); strcpy_s( BG[25].stationName ,9,\湘雅医院\); strcpy_s( BG[26].stationName ,9,\省博物馆\); strcpy_s( BG[27].stationName ,12,\长沙市一中 \); strcpy_s( BG[28].stationName ,10,\烈士公园 \); strcpy_s( BG[29].stationName ,7,\年嘉湖\);

BG[0].busLines[0]=1; BG[0].busLines[1]=1; BG[0].busLines[2]=1; BG[0].busLines[4]=1; BG[0].linesCount = 4;

BG[1].busLines[0]=1; BG[1].busLines[1]=1; BG[1].busLines[2]=1; BG[1].busLines[4]=1; BG[1].linesCount = 4;

BG[2].busLines[0]=1; BG[2].busLines[1]=1; BG[2].busLines[2]=1; BG[2].busLines[4]=1; BG[2].linesCount = 4;

30

BG[3].busLines[0]=1; BG[3].busLines[1]=1; BG[3].linesCount = 2;

BG[4].busLines[0]=1; BG[4].busLines[1]=1; BG[4].linesCount = 2;

BG[5].busLines[0]=1; BG[5].busLines[1]=1; BG[5].linesCount = 2;

BG[6].busLines[0]=1; BG[6].busLines[1]=1; BG[6].busLines[5]=1; BG[6].linesCount = 3;

BG[7].busLines[0]=1; BG[7].busLines[5]=1; BG[7].linesCount = 2;

BG[8].busLines[0]=1; BG[8].busLines[2]=1; BG[8].busLines[3]=1; BG[8].busLines[5]=1; BG[8].linesCount = 3;

BG[9].busLines[0]=1; BG[9].busLines[1]=1; BG[9].busLines[3]=1; BG[9].busLines[5]=1; BG[9].linesCount = 4;

BG[10].busLines[3]=1; BG[10].busLines[4]=1; BG[10].linesCount = 2;

BG[11].busLines[2]=1; BG[11].busLines[4]=1; BG[11].linesCount = 2;

BG[12].busLines[2]=1; BG[12].linesCount = 1;

31

BG[13].busLines[2]=1; BG[13].linesCount = 1;

BG[14].busLines[1]=1; BG[14].busLines[2]=1; BG[14].busLines[3]=1; BG[14].linesCount = 3;

BG[15].busLines[1]=1; BG[15].busLines[2]=1; BG[15].busLines[3]=1; BG[15].busLines[5]=1; BG[15].linesCount = 4;

BG[16].busLines[5]=1; BG[16].linesCount = 1;

BG[17].busLines[5]=1; BG[17].linesCount = 1;

BG[18].busLines[5]=1; BG[18].linesCount = 1;

BG[19].busLines[5]=1; BG[19].linesCount = 1;

BG[20].busLines[5]=1; BG[20].linesCount = 1;

BG[21].busLines[1]=1; BG[21].busLines[4]=1; BG[21].busLines[5]=1; BG[21].linesCount = 1;

BG[22].busLines[4]=1; BG[22].linesCount = 1;

BG[23].busLines[4]=1; BG[23].linesCount = 1;

BG[24].busLines[4]=1; BG[24].linesCount = 1;

BG[25].busLines[3]=1;

32

BG[25].linesCount = 1;

BG[26].busLines[3]=1; BG[26].linesCount = 1;

BG[27].busLines[3]=1; BG[27].linesCount = 1;

BG[28].busLines[1]=1; BG[28].busLines[3]=1; BG[28].linesCount = 2;

BG[29].busLines[1]=1; BG[29].busLines[3]=1; BG[29].linesCount = 2;

BG[0].theStationToOthersPath[1]=100;

BG[1].theStationToOthersPath[0]=100; BG[1].theStationToOthersPath[2]=150;

BG[2].theStationToOthersPath[1]=150; BG[2].theStationToOthersPath[3]=170; BG[2].theStationToOthersPath[11]=100;

BG[3].theStationToOthersPath[2]=170; BG[3].theStationToOthersPath[4]=130;

BG[4].theStationToOthersPath[3]=130; BG[4].theStationToOthersPath[5]=70;

BG[5].theStationToOthersPath[4]=70; BG[5].theStationToOthersPath[6]=100;

BG[6].theStationToOthersPath[5]=100; BG[6].theStationToOthersPath[7]=50; BG[6].theStationToOthersPath[15]=250;

BG[7].theStationToOthersPath[6]=50; BG[7].theStationToOthersPath[8]=170;

BG[8].theStationToOthersPath[7]=170; BG[8].theStationToOthersPath[9]=160;

33

BG[8].theStationToOthersPath[15]=80;

BG[9].theStationToOthersPath[8]=160;

BG[10].theStationToOthersPath[11]=100; BG[10].theStationToOthersPath[24]=130; BG[10].theStationToOthersPath[25]=110;

BG[11].theStationToOthersPath[2]=100; BG[11].theStationToOthersPath[10]=100; BG[11].theStationToOthersPath[12]=50;

BG[12].theStationToOthersPath[11]=50; BG[12].theStationToOthersPath[13]=100;

BG[13].theStationToOthersPath[12]=100; BG[13].theStationToOthersPath[14]=150;

BG[14].theStationToOthersPath[13]=150; BG[14].theStationToOthersPath[15]=100; BG[14].theStationToOthersPath[29]=120;

BG[15].theStationToOthersPath[6]=250; BG[15].theStationToOthersPath[8]=80; BG[15].theStationToOthersPath[14]=100; BG[15].theStationToOthersPath[16]=120;

BG[16].theStationToOthersPath[15]=120; BG[16].theStationToOthersPath[17]=60;

BG[17].theStationToOthersPath[16]=60; BG[17].theStationToOthersPath[18]=70;

BG[18].theStationToOthersPath[17]=70; BG[18].theStationToOthersPath[19]=90;

BG[19].theStationToOthersPath[18]=90; BG[19].theStationToOthersPath[20]=190;

BG[20].theStationToOthersPath[19]=190; BG[20].theStationToOthersPath[21]=130;

BG[21].theStationToOthersPath[20]=130; BG[21].theStationToOthersPath[22]=100;

34

BG[21].theStationToOthersPath[28]=220;

BG[22].theStationToOthersPath[21]=100; BG[22].theStationToOthersPath[23]=110;

BG[23].theStationToOthersPath[22]=110; BG[23].theStationToOthersPath[24]=120;

BG[24].theStationToOthersPath[10]=130; BG[24].theStationToOthersPath[23]=120;

BG[25].theStationToOthersPath[10]=110; BG[25].theStationToOthersPath[26]=150;

BG[26].theStationToOthersPath[25]=150; BG[26].theStationToOthersPath[27]=130;

BG[27].theStationToOthersPath[26]=130; BG[27].theStationToOthersPath[28]=80;

BG[28].theStationToOthersPath[21]=220; BG[28].theStationToOthersPath[27]=80; BG[28].theStationToOthersPath[29]=60;

BG[29].theStationToOthersPath[14]=120; BG[29].theStationToOthersPath[28]=60;

FILE * fp;

int m = fopen_s(&fp,\,\);

fwrite(BG,sizeof(struct busGraph),MAX_STATION,fp); fclose(fp);

FILE * fpp;

m = fopen_s(&fpp,\,\);

fread(BG,sizeof(struct busGraph),MAX_STATION,fpp); fclose(fpp);

// strcpy(BG[35].stationName,\长沙\

for(int i = 0; i <30 ; i++) {

printf(\,BG[i].stationName); }

35

printf(\);

for(int j = 0 ; j < 30 ; j++) {

for(int i = 0 ; i < 30 ; i++) {

if(BG[j] . theStationToOthersPath[i]!=INT_MAX) printf(\,BG[j] . theStationToOthersPath[i]); }

printf(\); }

system(\); return 0; }

3、 后台路径文件

#include #include #include using namespace std; #define MAX_USER 100 #define MAX_STATION 50 #define MAX_LINE 10 struct busLinesInformation {

int saveStationInLine[MAX_STATION]; int stationCount; };

int main() {

struct busLinesInformation lines[MAX_LINE];

for(int i = 0 ; i < MAX_LINE ; i++) {

lines[i].stationCount = 0;

for(int j = 0 ; j < MAX_STATION; j++ ) {

lines[i].saveStationInLine[j] = -1; } }

lines[0].saveStationInLine[0] = 0; lines[0].saveStationInLine[1] = 1;

36

lines[0].saveStationInLine[2] = 2; lines[0].saveStationInLine[3] = 3; lines[0].saveStationInLine[4] = 4; lines[0].saveStationInLine[5] = 5; lines[0].saveStationInLine[6] = 6; lines[0].saveStationInLine[7] = 7; lines[0].saveStationInLine[8] = 8; lines[0].saveStationInLine[9] = 9; lines[0]. stationCount = 10;

lines[1].saveStationInLine[0] = 0; lines[1].saveStationInLine[1] = 1; lines[1].saveStationInLine[2] = 2; lines[1].saveStationInLine[3] = 3; lines[1].saveStationInLine[4] = 4; lines[1].saveStationInLine[5] = 5; lines[1].saveStationInLine[6] = 6; lines[1].saveStationInLine[7] = 15; lines[1].saveStationInLine[8] = 14; lines[1].saveStationInLine[9] = 29; lines[1].saveStationInLine[10] = 28; lines[1].saveStationInLine[11] = 21; lines[1]. stationCount = 12;

lines[2].saveStationInLine[0] = 0; lines[2].saveStationInLine[1] = 1; lines[2].saveStationInLine[2] = 2; lines[2].saveStationInLine[3] = 11; lines[2].saveStationInLine[4] = 12; lines[2].saveStationInLine[5] = 13; lines[2].saveStationInLine[6] = 14; lines[2].saveStationInLine[7] = 15; lines[2].saveStationInLine[8] = 8; lines[2].saveStationInLine[9] = 9; lines[2]. stationCount = 10;

lines[3].saveStationInLine[0] = 9; lines[3].saveStationInLine[1] = 8; lines[3].saveStationInLine[2] = 15; lines[3].saveStationInLine[3] = 14; lines[3].saveStationInLine[4] = 29; lines[3].saveStationInLine[5] = 28; lines[3].saveStationInLine[6] = 27; lines[3].saveStationInLine[7] = 26;

37

lines[3].saveStationInLine[8] = 25; lines[3].saveStationInLine[9] = 24; lines[3].saveStationInLine[10] = 10; lines[3]. stationCount = 11;

lines[4].saveStationInLine[0] = 21; lines[4].saveStationInLine[1] = 22; lines[4].saveStationInLine[2] = 23; lines[4].saveStationInLine[3] = 24; lines[4].saveStationInLine[4] = 10; lines[4].saveStationInLine[5] = 11; lines[4].saveStationInLine[6] = 2; lines[4].saveStationInLine[7] = 1; lines[4].saveStationInLine[8] = 0; lines[4]. stationCount = 9;

lines[5].saveStationInLine[0] = 9; lines[5].saveStationInLine[1] = 8; lines[5].saveStationInLine[2] = 7; lines[5].saveStationInLine[3] = 6; lines[5].saveStationInLine[4] = 15; lines[5].saveStationInLine[5] = 16; lines[5].saveStationInLine[6] = 17; lines[5].saveStationInLine[7] = 18; lines[5].saveStationInLine[8] = 19; lines[5].saveStationInLine[9] = 20; lines[5].saveStationInLine[10] = 21; lines[5]. stationCount = 11;

FILE * fp;

int m = fopen_s(&fp,\,\);

fwrite(lines,sizeof(struct busLinesInformation),MAX_LINE,fp); fclose(fp);

FILE * fpp;

int n = fopen_s(&fpp,\,\);

fread(lines,sizeof(struct busLinesInformation),MAX_LINE,fpp); fclose(fpp);

for(int i = 0 ; i < 6 ; i++) {

//printf(\

printf(\, i);

38

for(int j = 0 ; j < lines[i].stationCount;j++)

本文来源:https://www.bwwdw.com/article/gfso.html

Top