基于android的手机公交线路查询系统设计论文内容摘要:

第四章 数据库设计 数据库结构 服务器数据库为总数据源,每一个客户端都拥有独立的小型数据库。 客户端数 据库信息从服务器端同步获得。 服务器的数据库是基于 Mysql 建立,客户端数据库是基于 SQLite 建立。 数据库体系结构如图 所示。 图 数据库体系结构图 服务器数据库设计: ER 关系如图 所示。 图 服务器数据 ER 图 根据上面的 ER 图,本软件服务器端定义的 arashmen 数据库设计了以下 4 张表:站点表: station(表 2)、线路表: routes(表 3)、发车时间表 :departuretime(表 4)、票表 :fare(表 5)。 本软件服务器数据库所包含的表的描述如表 1。 表 数据库概况表 表名 描述 主要字段 stations(站点表 ) 保存站点信息 ID, station routes(线路表 ) 保存线路信息 ID, RouteName, Content departuretime (发车时间表 ) 保存首班发车时间 保存末班发车时间 RouteName FirstDepartureTime,LastDepartureTime fare(票价信息表 ) 保存公交线路票价信息 ID, isFixed, FullFare 表 站点表 字段名 数据类型 长度 主键 /外键 默认值 描述 id Int 4 PK ID,自动增长 Station Varchar 50 站点名称 表 线路表 字段名 数据类型 长度 主键 /外键 默认值 描述 RouteName Char 20 PK 线路名称 Content LongText 线路全径 表 发车时间表 字段名 数据类型 长度 主键 /外键 默认值 描述 id Int 4 PK ID,自动增长 RouteName Char 20 FK 线路名称 FirstDepartureTime Time 首班发车时间 LastDepartureTime Time 末班发车时间 表 票价信息表 字段名 数据类型 长度 主键 /外键 默认值 描述 id Int 4 PK ID,自动增长 RouteName Char 20 FK 线路名称 isFixedFare Char 5 是否为分段计费 FullFare Double 8 全程票价 客户端数据库设计: SQLite 简介 Android 数据库使用的是 SQLiteDatabase,我们来简单的介绍下 Android 平台上的SQLiteDatabase。 SQLite 是一款轻型的数据库,是遵守 ACID 的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百 K 的内存就够了。 它能够支持 Windows/Linux/Unix 等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、 PHP、 Java 等,还有ODBC 接口,同样比起 Mysql、 PostgreSQL 这两款世界著名开源的数据库管理系统来讲,它的处理速度比他们都快。 该软件数据库的建立是完全在 Android 平台上执行 Java 代码,通过 DVM 编译来建立的,没有什么辅助工具,由于整个 SQLite 数据库是非可视化操作,所有对数据库的操作都是通过执行 Java 代码实现,在完成其查询功能的时候没有使用数据库高级编程,较为麻烦的关节是在如何有机的将客户端数据库整体结构实现出来,实现过程是无可视界面,也没有数据库辅助工具情况下,整个过程很抽象。 且表的设计应尽量简单,不要有错综复杂的关系,每张表都是独立的,不存 在任何约束,数据库也是独立数据库,不采用 Android 特有的可共享数据库。 数据库设计 ER 关系如图 所示。 线 路线 路 全 径I D 首 班发 车 时 间末 班发 车 时 间I D是 否 为 分 段计 费全 程 票 价I D站 点 名线 路 名 称站 点发 车 时 间线 路 名 称线 路 名 称 票 价 图 客户端数据库 ER 图 根据上面的 ER 图,本软件客户端定义的 arashmen 数据库中包含以下 4 张表:站点表: station(表 7)、线路表: routes(表 8)、发车时间表 :departuretime(表 9)、票表 :fare(表 10)。 本软件服务器数据库所包含的表的描述如表 6。 表 数据库概况表 表名 描述 主要字段 stations(站点表 ) 保存站点信息 ID, station routes(线路表 ) 保存线路信息 ID, RouteName, Content Departuretime (发车时间表 ) 保存首班发车时间 保存末班发车时间 RouteName FirstDepartureTime,LastDepartureTime fare(票价信息表 ) 保存公交线路票价信息 ID, isFixed, FullFare 表 站点表 字段名 数据类型 长度 主键 /外键 默认值 描述 id Int 4 PK ID,自动增长 Station Varchar 50 站点名称 表 线路表 字段名 数据类型 长度 主键 /外键 默认值 描述 RouteName Char 20 PK 线路名称 Content LongText 线路全径 表 发车时间表 字段名 数据类型 长度 主键 /外键 默认值 描述 id Int 4 PK ID,自动增长 RouteName Char 20 FK 线路名称 FirstDepartureTime Time 首班发车时间 LastDepartureTime Time 末班发车时 间 表 票价信息表 字段名 数据类型 长度 主键 /外键 默认值 描述 id Int 4 PK ID,自动增长 RouteName Char 20 FK 线路名称 isFixedFare Char 5 是否为分段计费 FullFare Double 8 全程票价 第五章 服务器 端详细设计 后台管理模式 后台制作使用 JSP 完成。 基本管理流程如图 所示。 回 滚操 作 成 功Y / N查 询 信 息 添 加 信 息修 改 信 息删 除 信 息数 据 库更 新 成 功管 理 模 式事 务 开 始NY 图 管理流程图 通过管理员模式进入管理员添加线路页面,可以添加公交线路名称,首班发车时间,末班发车时间, 线路全径。 添加页面如图 所示。 图 添加线路页面 实现添加功能代码如下所示: %@ page contentType=text/html。 charset=gb2312 % %@ page language=java % %@ page import= % %@ page import=.* % %@ page import=% %(GB2312)。 % % //接收从 传来的数据 String routesName=(RoutesName).trim()。 String route=(Route)。 String firstDepartureTime=(FirstDepartureTime)。 String finalDepartureTime=(LastDepartureTime)。 String url=jdbc: String user=root。 String password=Jone。 ().newInstance()。 Connection con=(url,user,password)。 PreparedStatement stmt_routes。 PreparedStatement stmt_departuretime。 try{ //抛出异常就直接执行 rollback String insert_routes=insert into routes(RouteName,Content) values(?,?)。 String insert_departuretime=insert into departuretime(FirstDepartureTime,LastDepartureTime) values(?,?)。 //preparedstatement 相比 statement 更具有优势 stmt_routes = (insert_routes)。 stmt_departuretime = (insert_departuretime)。 (1,routesName)。 (2,route)。 (1,firstDepartureTime)。 (2,finalDepartureTime)。 ()。 ()。 ()。 }catch(Exception ex){ //()。 //回滚 }finally{ ()。 } % 通过管理员模式进入管理员修改、删除线路页面,可以对已经添加成功的公交线路信息修改并保存,也可以直接在该页面删除数据。 修改、删除线路页面如图 所示。 图 修改,删除页面 实现修改、删除功能代码如下所示: %@ page contentType=text/html。 charset=gb2312 % %@ page language=java % %@ page import= % %@ page import=.* % %(GB2312)。 % % String routeName=(routeNameText).substring(0,3).trim()。 String firstDepartureTime=(firstDepartureText)。 String finalDepartureTime=(finalDepartureText)。 String updateValue=(Update)。 String routes=(routesTextArea)。 String url=jdbc: String user=root。 String password=Jone。 ().newInstance()。 Connection con=(url,user,password)。 try{ String update_routes=update routes set Content=? where RouteName=?。 String update_departuretime=update departuretime set FirstDepartureTime=?,LastDepartureTime=? where RouteName=?。 String delete=delete from routes,departuretime where RouteName=?。 String strRoutes=null。 if(修改并保存 .equals(updateValue)){ PreparedStatement stmt_routes = (update_routes)。 PreparedStatement stmt_departuretime = (update_departuretime)。 (1,routes)。 (2,routeName)。 (1,firstDepartureTime)。 (2,finalDepartureTime)。 (3,routeName)。 ()。 ()。 ()。 ()。 ()。 }else{ PreparedStatement stmt=(delete)。 (1,routeName)。 ()。 ()。 ()。 } (alert(\删除成功。 \))。 ()。 }catch(Exception e){ ()。 }finally{ ()。 }。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。