基于j2me的公交查询系统的设计与实现学士学位论文(编辑修改稿)内容摘要:
2 手机客户端流程图 第 5 页 共 27 页 ( 2) J2ME 手机客户端的系统流程图,如图 2 所示。 用户查询流程分为查询内容选择、查询信息输入和信息接收 3 个步骤。 从该流程图中可以看出,按起点终点查询是整个系统最重要的一部分,也是本系统最能体现算法的一部分,经过对成都公交系统的观察和分析,本系统提 出了一次换乘时采用基于站点优先级和邻接矩阵的公交换乘算法,如果第一次换乘没有可以换乘的方案,则采用上下矩阵算法,得出二次换乘信息,同时把得到的方案缓存到数据库中,下个用户查询相同起点终点时就直接从数据库中提取缓存信息,大大的节约了用户的时间和系统资源。 开发工具介绍 JAVA语言是目前 Inter上大型的 WEB应用和手机程序开发时使用得最热门的编程语言,而目前国内销售的大多数手机都支持 JAVA,同时 J2ME 和 J2EE因为都是基于 JAVA 技术,可以进行无缝连接,所以本系统选用 J2ME 和 J2EE做为开发语言 ,同时在 WEB 端应用相关的 Struts 框架,并完成一个基于这 2 种技术结合的手机无线公交查询系统。 本系统采用的开发工具为 MySQL+Eclipse+Tomcat/Weblogic, MySQL 是一个广受 Linux 社区人们喜爱的半商业的数据库。 MySQL 具有 强大 且 简单易用 的特点 ,而且运行速度极快,能够处理企业数据库绝大多数的应用需求。 Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。 就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。 幸运的是, Eclipse 附带了一个标准 的插件集,包括 Java 开发工具( Java Development Tools, JDT)。 Tomcat服务器是一个免费的开放源代码的 Web 应用服务器,它是 Apache 软件基金会( Apache Software Foundation)的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。 由于有了 Sun 的参与和支持,最新的Servlet 和 JSP 规范总是能在 Tomcat 中得到体现, Tomcat5 支持最新的 Servlet 和 JSP 规范。 因为 Tomcat 技术先进 、性能稳定,而且免费,因而深受 Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的 Web 应用服务器。 3 手机公交查询系统的设计 手机公交查询系统算法的设计 直达的算法设计 现有 A,B 两个公交站,通过数据库查询语句“ select * from businfo” 获得全部公交线路信息,再把每一路车的信息依次迭代出来,判断 A 站和 B 站是否同时在该线路中,如结果为 true,则可以直达,同时将直达方案存入一个集合中, 第 6 页 共 27 页 继续向下遍历,如果结果为 false,则该车不能直达,继续向下遍历。 一次换乘的算法设计 一次换乘采用基于站点优先级和邻接矩阵的公交换乘算法,现在 A,B 两个公交站,通过数据库查询语句查找出经过 A 站的所有公交车集合 Collection1,再通过数据库查询语句查找出经过 B 站的所有公交车集合 Collection2,判断Collection1 和 Collection2 是否有交集,若有,则得到一次换乘方案,存放在结果集合中。 判断结束后,再按照经过站点总数对换乘方案进行排序,因为换乘结果往往数以百计,所以只取结果集的前 N 条记录展现给用户。 若判断结束后没有找到一次换乘的方案,则执行 2 次换乘算法。 一次换乘算法, 如图 3 所示。 图 3 一次换乘算法示意图 图 4 二次换乘算法示意图 第 7 页 共 27 页 二次换乘的算法设计 二次换乘采用上下矩阵算法,现有 A,B 两个公交站,先通过数据库查询语句和程序业务逻辑得到 A 站能直达的所有站点,放在集合 Collection1 中,再按照 A 站的方法找出 B 站能知道的所有站点,放在集合 Collection2 中,再判断是否有公交车可以从 Collection1 中的站点直达 Collection2 中的站点,如果,则将方案存放到结果集合中。 至此为止,根据公交线路设计的理论,是肯定可以找到二次换乘的方案的,故不再考 虑 3 次换乘方案。 二次换乘算法,如图 4 所示。 手机公交查询数据库的设计 数据库的逻辑设计 图 5 数据库主要 ER 图 准确了解与分析用户需求(包括数据与处理)是整个设计过程的基础。 而根据用户需求设计合适的数据库以及选择恰当的数据库以确保系统能高速稳定的运行则是数据库设计的根本目地。 由于本系统涉及到大量数据的读取,并且对安全性要求不高,故选用占用系统资源较少并且速度相对较快的 MySQL 作为本系统的数据库。 通过对用户需求的分析以及对系统本身应用背景 的研究,可以看出本系统需要有以下数据支持:公交线路信息,公交站点信息,站点附近标志信息,用户通知信息,同时考虑到节约系统资源,在用户进行完站站查询后还会产生一个存放查询结果的缓存信息。 由上述可以确认该算法所关系到的数据表。 第 8 页 共 27 页 根据上述分析,可以得出公交信息模型的 ER 图,如图 5 所示。 公交信息相关数据库的数据字典,如表 1 所示。 表 1 公交信息相关的数据字典 序 号 数 据 项 名 称 数 据 项 内 容 1. 公交线路信息 公交线路的信息汇总 线路 ID 公交线路的 ID 线路 NO 公交线路 的名称,如 502A 经过站点 公交线路经过的站点 收发车时间 公交车的收发车时间 是否上下行 判断该公交车是否有上下行 2. 公交站点信息 公交站点相关信息 公交站名 该站点的站名 附近标志 1 附近标志 1 的名字 附近标志 2 附近标志 2 的名字 附近标志 3 附近标志 3 的名字 附近标志 4 附近标志 4 的名字 附近标志 5 附近标志 5 的名字 附近标志 6 附近标志 6 的名字 附近标志 7 附近标志 7 的名字 附近标志 8 附近标志 8 的名字 附近标志 9 附近标志 9 的名字 附近标志 10 附近标志 10 的名字 3. 站点附近标志汇总 站点附近标志性建筑物或者地名的汇总 标志 ID 标志编号 标志名称 站点附近标志性建筑物或者地段的名称 数据库的物理设计 ( 1)公交线路信息表 负责存放公交线路信息,考虑到部分公交车存在上行和下行不一致的情况,表中添加了是否上下行的字段,以供算法确认。 如表 2 所示。 表 2 公交线路信息表 公 交线路信息表 (businfo) 字段名 注释 第 9 页 共 27 页 Busid 公交车的 id Busno 公交车的车号 stop1 第 1 个站的站名 stop2 第 2 个站的站名 …… …… …… …… stop50 第 50 个站的站名 Time 公交车的发车收车时间 Startend 公交车的起点和终点 Updown 是否有上下行 ( 2) 站点信息表 负责存放站点相关信息,并且存放一定的周围标志建筑和地名的信息,以供算法进行模糊查询。 如表 3 所示。 表 3 站点信息表 站点信息表 (stopinfo) 字段名 注释 Stopname 公交站站名 near1 附近标志 1 near2 附近标志 2 near3 附近标志 3 near4 附近标志 4 near5 附近标志 5 near6 附近标志 6 near7 附近标志 7 near8 附近标志 8 near9 附近标志 9 near10 附近标志 10 Stoppic 臃余字段,为以后功能预先留出 (3) 站点附近标志汇总表 负责存放站点周围标志建筑或地名的汇总信息,本表为站点信息表的 near集合自动生 成。 如表 4 所示。 第 10页 共 27页 表 4 站点附近标志汇总表 站点附近标志汇总表 (stopinfo) 字段名 注释 Id 标志的 id Nearname 标志的名字 (4) 用户公告表 负责存放本系统的公告信息。 如表 5 所示。 表 5 用户公告表 用户公告表 (notify) 字段名 注释 Id 消息的 id Content 消息内容 Date 消息发布日期 (5) 查询统计表 负责统计用户查询和下载量。 如表 6 所示。 表 6 查询统计表 查询统计表 (jishuqi) 字段名 注释 Id id Fangwen 查询量 Xiazai 客户端下载量 4 手机公交查询系统功能详细实现 经过上面的描述,已经明确了手机公交查询系统需要实现的功能以及如何去完成这些功能。 下面将具体的阐述如何实现这些功能。 服务器端的实现 本系统遵照 J2EE 4 层结构 ,使用了 MVC、 AO 等设计模式 ,组织结构图如图 6 所示。 第 11页 共 27页 图 6 系统组织结构图 基类( Base Class)的实现 采 用 AO 模式,将数据库相关方法封装到一个基类中,由业务逻辑继承该基类。 数据库连接( Connection) 通过配置 WEB 服务器上的连接池,同时将数据源绑定到 JNDI,程序直接通过 JNDI Name 获取,实现了数据源的可配置性和高度可移植性。 获取 JNDI Name 方法如下: ds = () (dsName)。 //从数据源得到连接 conn = ()。 因为后面需要多次调用关闭数据库连接,故关闭连接封装到一个方法中,具体实现如下: //关闭数据库连接 第 12页 共 27页 public void close(ResultSet rs,PreparedStatement ps,Connection con){ try{ if(rs!=null){ ()。 } if(ps!=null){ ()。 } if(con!=null){ ()。 } }catch(Exception e){ ()。 } } 辅助类( Help Class)的实现 辅助类主要为业务类提供一些辅助功能,尽量实现功能的分离和高度封装。 同时为了加快运行速度,减少 JVM 编译负担,采用 PreparedStatement。 部分方法如下: ( 1)获得公交总数 一般查找总数用 ”select count(*) from businfo”,但这样因为是顺序遍历,一直要遍历到最后一条,效率不高,此处使 用 ()。 使游标直接指向最后一条记录,再用 buscount = ()。 记录最后一条记录的行号,从而得到了总行数,比起前一个方法更快而且节约系统资源。 ( 2)插入数据库缓存,使得下一个用户查询该方案时可以直接从数据库中获取结果,从而大大的节约了用户时间和系统资源。 实现方法如下: String sql=insert into zhuancheng(id,result1,result2,result3,result4) VALUES(?,?,?,?,?)。 ps1 = (sql)。 (1,start+end)。 (2,result1)。 (3,result2)。 (4,result3)。 (5,result4)。 ()。 用户查询时若数据库中已有缓存数据,则调用以下方法获取缓存的换乘数据: 第 13页 共 27页 String sql1=select * from zhuancheng where id=+39。 +start+end+39。 ps1 = (sql1)。 rs1 = ()。 while(()){ result1=(result1)。 result2=(result2)。 result3=(result3)。 result4=(result4)。 业务逻辑类( Logic Class)的实现 ( 1)查询公交线路 该方法比较简单,通过“ select * from businfo where busno=+busno”即可得到符合条件的。基于j2me的公交查询系统的设计与实现学士学位论文(编辑修改稿)
相关推荐
msuit 启动线程显示时间 Thread th 进入定时系统 Command cmdOk 退出整个程序 Command cmdCan 表 TimeCanvas 类方法表 名称 功能 备注 TimeCanvas () 连接图片添加数据 类的构造方法 paint(Graphics g) 绘制开始界面 Canvas 类自带方法 initList() 初始化数据 刷新数据 run() 获取时间和数据
了详细说明。 系统测试 介绍了测试计划并从功能方面进行 测试。 最后 对 本游戏 的应用展望 未来。 本章首先简单地介绍手机移动游戏的开发背景、手机游戏的市场状况、用户数量、社会对游戏的反映。 进而发现 了当前一些游戏的弊端,因此提出了绿色健康的益智游戏这个论题。 最后,叙述了本游戏的开发意义和论文的组织安排。 3 2 相关技术与工具介绍 J2ME 简介 J2ME 在 Java 体系中的地位
项进行编辑、删除、标记、删除符合要求的事项等,整体按照优先级排序;对每个事项能进行设定优先级,闹铃;提供复制粘贴功能,遗憾是没有做到能自由复制。 需求分析 用户需求 本系统是面向所有年龄阶段的用户。 设计时考虑的角度也是从手机小白用户的角度去思考,尽量将界面简洁化、操作简单化、功能明确化、漏洞最少化,简单的 操作让刚刚会使用手机的用户都能很快学会使用。 系统主要是提供记事本功能
有时候,问题部分会包括使用模式必须满足的一系列先决条件。 13 (solution) 描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式 [37]。 因为模式就像一个模板,可应用于多种不同场合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设计问题的抽象描述和怎样用一个具有一般意义的元素组合(类或对象组合)来解决这个问题。 (consequences)
查显示,有 %的受访者涉足嵌入式 /移动设备应用开发,这个数字可能略高于实际的比例,但也足可说明嵌入式 /移动设备应用开发是一块诱人的新鲜奶酪。 目前的移动开发技术大体分为三个阵营:首当其冲的便是由 SUN 公司提出的 ,与具体操作系统无关的 ,已得到各种设备广泛支持的 J2ME 技术,还有就是主要由 NOKIA公司倡导的 ,主要使用 C++语言的基于 Symbian 操作系统 的开放应用平台
未登录,则转到登录页面,登录成功后自动到个人中心基本资料页。 输出 用户中心页面。 6 表 7 修改账户 Table7 Account modify 名称 用户资料修改 操作角色 注册用户 功能描述 修改登录用户自己的资料。 操作 1. 在用户中心点击“修改资料”进入用户资料修改。 2. 用户名不可以修改,可修改昵称。 3. 验证参考用户注册。 4. 点击“重置”可以把表单上用户资料恢复到初始值