公交线路查询算法与实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
游标定义;函数、过程定义和参数列表返回 类型。
home back first prev next last 7
算法实现 --包
• 在定义包头时,要遵循以下规则:
包元素的位置可以任意安排。然而,在声明 部分,对象必须在引用前进行声明。
包头可以不对任何类型的元素进行说明。例 如,包头可以只带过程和函数说明语句,而 不声明任何异常和类型。
home back first prev next last 17
算法实现 --临时表
• 语法结构 :
home back first prev next last 18
算法实现 --临时表
• 语法结构说明: --ON COMMIT DELETE ROWS 说明临时
表是事务指定,每次提交后ORACLE将截 断表(删除全部行) --ON COMMIT PRESERVE ROWS 说明临 时表是会话指定,当中断会话时ORACLE 将截断表。
• 什么时候需要显式游标 ?
home back first prev next last 15
算法实现 --游标
• 定义游标:
• 开启游标:
home back first prev next last 16
算法实现 --临时表
• 临时表空间(Temporary tablespace )的概 念
• 临时表特点
• 数据访问层 --BusStation.cs对应代码: 1. 获得数据列表 2
home back first prev next last 44
查询实现--起止站点筛选
• 数据访问层 --BusStation.cs对应代码: 1. 获得数据列表3
home back first prev next last 45
• 接口访问层 --IBusStation.cs对应代码:
home back first prev next last 42
查询实现--起止站点筛选
• 数据访问层 --BusStation.cs对应代码: 1. 获得数据列表1
home back first prev next last 43
查询实现--起止站点筛选
• 创建临时表 --存放查询出来的第二次转乘 线路集合 :
home back first prev next last 24
算法实现 --临时表
• 创建临时表 --存放查询出来的转乘线路 :
home back first prev next last 25
算法实现 --用户函数
• 将指定字段的行记录组成字符串的函数,示 例:
home back first prev next last 3
查询算法
• 算法思路 ➢ 直达 ➢ 一次换乘
home back first prev next last 4
算法实现 --包
包(package)由两部分组成:
– 包说明(规范、包头) – 包体(主体) 函数(function)以及过程(procedure)单独运
home back first prev next last 19
算法实现 --临时表
• 其它操作表的语法 :
home back first prev next last 20
算法实现 --临时表
• 创建临时表-存放查询出来的第一次转乘 线路 :
home back first prev next last 21
home back first prev next last 34
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx.cs 1. Page_Load事件代码
home back first prev next last 35
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx.cs 2. 点击查看按钮的Click事件1
home back first prev next last 30
查询实现
• 起止站查询—站点筛选
home back first prev next last 31
查询实现--起止站点筛选
• 数据实体层 --BusStation.cs对应代码:
home back first prev next last 32
home back first prev next last 2
本章目标
• 查询算法 : – 理解算法思路 – 了解oracle包、游标、临时表、用户函数、存 储过程的概念 – 理解算法的实现
• 查询实现 : – 理解直达线路查询概念,实现方法 – 理解一次转乘查询概念,实现方法 – 理解车次查询概念,实现方法 – 理解站点查询概念,实现方法
查询实现--起止站点筛选
• 数据访问层 --BusStation.cs对应代码: 2. 查询单条数据3
home back first prev next last 48
查询实现--直达线路查询
• 表示层--SearchThrough.aspx代码 1
home back first prev next last 49
算法实现 --包
包体语法格式说明 : Schema:指定将要创建的包所属用户方案。 pl/sql_package_body: 标、函数、过程的具体定
义。
home back first prev next last 10
算法实现 --包
• 包头部分的代码实现:
home back first prev next last 11
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx代码 1.所有符合条件的起始站点 :
home back first prev next last 33
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx代码 2.所有符合条件的终止站点:
home back first prev next last 56
查询实现--一次转乘查询
• 表示层--SearchExchange.aspx代码
home back first prev next last 57
home back first prev next last 36
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx.cs 2. 点击查看按钮的Click事件2
home back first prev next last 37
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx.cs 3. 起始站点RadioButtonList的DataBound事件
home back first prev next last 38
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx.cs 4. 终止站点RadioButtonList的DataBound事件
home back first prev next last 39
home back first prev next last 26
算法实现 --存储过程
• 语法结构
home back first prev next last 27
算法实现 --存储过程
• 参数类型 :
in 参数:输入参数,主程序向过程传递参数值。 out 参数:输出参数,过程向主程序传递参数
值。 in out 参数:双向(输入输出)参数,过程与
主程序双向交流数据。
home back first prev next last 28
算法实现 --存储过程
• 存储过程的实现 –线路直达: 代码:
home back first prev next last 29
算法实现 --存储过程
• 存储过程的实现 –一次转乘: 代码:
公交线路查询算法与实现
上章回顾
• 数据实体层(Model)的实现 • 表示层(Web)的实现: ✓ 线路信息管理页面设计 ✓ 线路信息管理页面代码 • 业务逻辑层(BLL)的实现 • 数据操作--存储过程实现 • 数据访问层(OracleDAL)的实现 • 数据访问工厂层(DALFactory)的实现 • 数据访问接口层(IDAL)的实现
查询实现--起止站点筛选
• 业务逻辑层--BusStation.cs对应代码1:
home back first prev next last 40
查询实现--起止站点筛选
• 业务逻辑层--BusStation.cs对应代码2:
home back first prev next last 41
查询实现--起止站点筛选
查询实现--起止站点筛选
• 数据访问层 --BusStation.cs对应代码: 2. 查询单条数据1
home back first prev next last 46
查询实现--起止站点筛选
• 数据访问层 --BusStation.cs对应代码: 2. 查询单条数据2
home back first prev next last 47
查询实现--直达线路查询
• 接口访问层 --ISearchStartEndStation.cs
home back first prev next last 52
查询实现--直达线路查询
• 数据访问层 --SearchStartEndStation.cs
– 查询直达方法 1
存储过程中的 游标名称 游标类型
类型为输出
home back first prev next last 53
查询实现--直达线路查询
• 数据访问层 --SearchStartEndStation.cs
– 查询直达方法 2
定义并开启事务 事务名称作为参数
调用的包名
调用的存储过程名
提交事务
home back first prev next last 54
算法实现 --包
home back first prev next last 12
算法实现 --包
• 包体部分的代码实现:
home back first prev next last 13
算法实现 --包
home back first prev next last 14
Leabharlann Baidu
算法实现 --游标
• 为什么用游标?
查询实现--直达线路查询
• 表示层--SearchThrough.aspx代码2
home back first prev next last 50
查询实现--直达线路查询
• 表示层--SearchThrough.aspx.cs代码
– 跳转到转乘查询代码
home back first prev next last 51
算法实现 --临时表
• 创建临时表-存放查询出来的第二次转乘 线路 :
home back first prev next last 22
算法实现 --临时表
• 创建临时表 --存放查询出来的第一次转乘 线路集合 :
home back first prev next last 23
算法实现 --临时表
对过程和函数的任何声明都必须只对子程序 和其参数(如果有的话)进行描述,但不带 任何代码的说明,实现代码则只能在包体中。 它不同于块声明,在块声明中,过程或函数 的代码同时出现在其声明部分。
home back first prev next last 8
算法实现 --包
• 包体创建语法格式:
home back first prev next last 9
行与将其放入包(package)中有何不同 包的作用
home back first prev next last 5
算法实现 --包
包头创建语法格式:
home back first prev next last 6
算法实现 --包
包头语法格式说明: Schema:指定将要创建的包所属用户方案。 Package_name : 将要创建的包的名称。 pl/sql_package_spec:变量、常量及数据类型定义;
查询实现--直达线路查询
• 数据访问层 --SearchStartEndStation.cs
– 查询直达方法 3
出错,事务回滚
结束事务
home back first prev next last 55
查询实现--一次转乘查询
• 数据实体层 --SearchStartEndStation.cs代码:
home back first prev next last 7
算法实现 --包
• 在定义包头时,要遵循以下规则:
包元素的位置可以任意安排。然而,在声明 部分,对象必须在引用前进行声明。
包头可以不对任何类型的元素进行说明。例 如,包头可以只带过程和函数说明语句,而 不声明任何异常和类型。
home back first prev next last 17
算法实现 --临时表
• 语法结构 :
home back first prev next last 18
算法实现 --临时表
• 语法结构说明: --ON COMMIT DELETE ROWS 说明临时
表是事务指定,每次提交后ORACLE将截 断表(删除全部行) --ON COMMIT PRESERVE ROWS 说明临 时表是会话指定,当中断会话时ORACLE 将截断表。
• 什么时候需要显式游标 ?
home back first prev next last 15
算法实现 --游标
• 定义游标:
• 开启游标:
home back first prev next last 16
算法实现 --临时表
• 临时表空间(Temporary tablespace )的概 念
• 临时表特点
• 数据访问层 --BusStation.cs对应代码: 1. 获得数据列表 2
home back first prev next last 44
查询实现--起止站点筛选
• 数据访问层 --BusStation.cs对应代码: 1. 获得数据列表3
home back first prev next last 45
• 接口访问层 --IBusStation.cs对应代码:
home back first prev next last 42
查询实现--起止站点筛选
• 数据访问层 --BusStation.cs对应代码: 1. 获得数据列表1
home back first prev next last 43
查询实现--起止站点筛选
• 创建临时表 --存放查询出来的第二次转乘 线路集合 :
home back first prev next last 24
算法实现 --临时表
• 创建临时表 --存放查询出来的转乘线路 :
home back first prev next last 25
算法实现 --用户函数
• 将指定字段的行记录组成字符串的函数,示 例:
home back first prev next last 3
查询算法
• 算法思路 ➢ 直达 ➢ 一次换乘
home back first prev next last 4
算法实现 --包
包(package)由两部分组成:
– 包说明(规范、包头) – 包体(主体) 函数(function)以及过程(procedure)单独运
home back first prev next last 19
算法实现 --临时表
• 其它操作表的语法 :
home back first prev next last 20
算法实现 --临时表
• 创建临时表-存放查询出来的第一次转乘 线路 :
home back first prev next last 21
home back first prev next last 34
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx.cs 1. Page_Load事件代码
home back first prev next last 35
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx.cs 2. 点击查看按钮的Click事件1
home back first prev next last 30
查询实现
• 起止站查询—站点筛选
home back first prev next last 31
查询实现--起止站点筛选
• 数据实体层 --BusStation.cs对应代码:
home back first prev next last 32
home back first prev next last 2
本章目标
• 查询算法 : – 理解算法思路 – 了解oracle包、游标、临时表、用户函数、存 储过程的概念 – 理解算法的实现
• 查询实现 : – 理解直达线路查询概念,实现方法 – 理解一次转乘查询概念,实现方法 – 理解车次查询概念,实现方法 – 理解站点查询概念,实现方法
查询实现--起止站点筛选
• 数据访问层 --BusStation.cs对应代码: 2. 查询单条数据3
home back first prev next last 48
查询实现--直达线路查询
• 表示层--SearchThrough.aspx代码 1
home back first prev next last 49
算法实现 --包
包体语法格式说明 : Schema:指定将要创建的包所属用户方案。 pl/sql_package_body: 标、函数、过程的具体定
义。
home back first prev next last 10
算法实现 --包
• 包头部分的代码实现:
home back first prev next last 11
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx代码 1.所有符合条件的起始站点 :
home back first prev next last 33
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx代码 2.所有符合条件的终止站点:
home back first prev next last 56
查询实现--一次转乘查询
• 表示层--SearchExchange.aspx代码
home back first prev next last 57
home back first prev next last 36
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx.cs 2. 点击查看按钮的Click事件2
home back first prev next last 37
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx.cs 3. 起始站点RadioButtonList的DataBound事件
home back first prev next last 38
查询实现--起止站点筛选
• 表示层--SearchStartEndStation.aspx.cs 4. 终止站点RadioButtonList的DataBound事件
home back first prev next last 39
home back first prev next last 26
算法实现 --存储过程
• 语法结构
home back first prev next last 27
算法实现 --存储过程
• 参数类型 :
in 参数:输入参数,主程序向过程传递参数值。 out 参数:输出参数,过程向主程序传递参数
值。 in out 参数:双向(输入输出)参数,过程与
主程序双向交流数据。
home back first prev next last 28
算法实现 --存储过程
• 存储过程的实现 –线路直达: 代码:
home back first prev next last 29
算法实现 --存储过程
• 存储过程的实现 –一次转乘: 代码:
公交线路查询算法与实现
上章回顾
• 数据实体层(Model)的实现 • 表示层(Web)的实现: ✓ 线路信息管理页面设计 ✓ 线路信息管理页面代码 • 业务逻辑层(BLL)的实现 • 数据操作--存储过程实现 • 数据访问层(OracleDAL)的实现 • 数据访问工厂层(DALFactory)的实现 • 数据访问接口层(IDAL)的实现
查询实现--起止站点筛选
• 业务逻辑层--BusStation.cs对应代码1:
home back first prev next last 40
查询实现--起止站点筛选
• 业务逻辑层--BusStation.cs对应代码2:
home back first prev next last 41
查询实现--起止站点筛选
查询实现--起止站点筛选
• 数据访问层 --BusStation.cs对应代码: 2. 查询单条数据1
home back first prev next last 46
查询实现--起止站点筛选
• 数据访问层 --BusStation.cs对应代码: 2. 查询单条数据2
home back first prev next last 47
查询实现--直达线路查询
• 接口访问层 --ISearchStartEndStation.cs
home back first prev next last 52
查询实现--直达线路查询
• 数据访问层 --SearchStartEndStation.cs
– 查询直达方法 1
存储过程中的 游标名称 游标类型
类型为输出
home back first prev next last 53
查询实现--直达线路查询
• 数据访问层 --SearchStartEndStation.cs
– 查询直达方法 2
定义并开启事务 事务名称作为参数
调用的包名
调用的存储过程名
提交事务
home back first prev next last 54
算法实现 --包
home back first prev next last 12
算法实现 --包
• 包体部分的代码实现:
home back first prev next last 13
算法实现 --包
home back first prev next last 14
Leabharlann Baidu
算法实现 --游标
• 为什么用游标?
查询实现--直达线路查询
• 表示层--SearchThrough.aspx代码2
home back first prev next last 50
查询实现--直达线路查询
• 表示层--SearchThrough.aspx.cs代码
– 跳转到转乘查询代码
home back first prev next last 51
算法实现 --临时表
• 创建临时表-存放查询出来的第二次转乘 线路 :
home back first prev next last 22
算法实现 --临时表
• 创建临时表 --存放查询出来的第一次转乘 线路集合 :
home back first prev next last 23
算法实现 --临时表
对过程和函数的任何声明都必须只对子程序 和其参数(如果有的话)进行描述,但不带 任何代码的说明,实现代码则只能在包体中。 它不同于块声明,在块声明中,过程或函数 的代码同时出现在其声明部分。
home back first prev next last 8
算法实现 --包
• 包体创建语法格式:
home back first prev next last 9
行与将其放入包(package)中有何不同 包的作用
home back first prev next last 5
算法实现 --包
包头创建语法格式:
home back first prev next last 6
算法实现 --包
包头语法格式说明: Schema:指定将要创建的包所属用户方案。 Package_name : 将要创建的包的名称。 pl/sql_package_spec:变量、常量及数据类型定义;
查询实现--直达线路查询
• 数据访问层 --SearchStartEndStation.cs
– 查询直达方法 3
出错,事务回滚
结束事务
home back first prev next last 55
查询实现--一次转乘查询
• 数据实体层 --SearchStartEndStation.cs代码: