毕业设计(论文)基于J2EE的公交查询系统的设计与实现.doc

上传人:文库蛋蛋多 文档编号:3979239 上传时间:2023-03-30 格式:DOC 页数:32 大小:474.50KB
返回 下载 相关 举报
毕业设计(论文)基于J2EE的公交查询系统的设计与实现.doc_第1页
第1页 / 共32页
毕业设计(论文)基于J2EE的公交查询系统的设计与实现.doc_第2页
第2页 / 共32页
毕业设计(论文)基于J2EE的公交查询系统的设计与实现.doc_第3页
第3页 / 共32页
毕业设计(论文)基于J2EE的公交查询系统的设计与实现.doc_第4页
第4页 / 共32页
毕业设计(论文)基于J2EE的公交查询系统的设计与实现.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《毕业设计(论文)基于J2EE的公交查询系统的设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于J2EE的公交查询系统的设计与实现.doc(32页珍藏版)》请在三一办公上搜索。

1、基于J2EE的公交查询系统的设计与实现摘 要公交查询系统是城市道路交通的重要组成部分,是城市发展的必然产物,是联系国民生活、社会生产和流通领域的关键环节。我国城市公交查询系统的发展处于一个较落后的水平,人们可以获得信息的方式很少,为了解决这种问题,设计出基于J2EE的公交查询系统。本论文详细介绍了整个系统的已实现的功能。首先,实现多种查询功能,包括根据商厦名称、公交车号、日常站点、和任意两个站点查询乘车路线。其次,采用最短路径算法查找任意两个站点之间的最短乘车路线。最后,提供了用户留言的功能、用户管理功能和后台车次管理功能;用户留言功能,主要是收集用户的留言信息,可以根据用户提供的留言信息或是

2、提出的建议,对系统进行修改和完善;用户管理功能,主要是删除用户信息和修改用户基本信息;后台车次管理功能主要包含添加车次和站点功能、更新车次和站点功能、删除车次和站点功能,这样做到系统实时更新,为用户查询提供更为准确的信息。关键词:J2EE;最短路径算法;公交查询Design and Realization of Public Transport Inquiry System Based on J2EEAbstractUrban public transportation is an important part in traffic and transportation domain, and

3、 its also the inevitable result of social economys development in urban areas. As an important part of urban transportation system, urban public transportation system is acting a key role in human living, in social production and in transportation domain .But the inquiry system of public transportat

4、ion developments in our country is in a comparatively backward level. The general passengers have less way to obtain the information. In order to solve this kind of problem, an inquiry system of public transport based on J2EE is designed.The thesis has introduced the realized functions of entire sys

5、tem in detail. Firstly, the system has realized many inquiry functions. The system can search bus route by the name of business mansion, the number of public transport, ordinary bus station and two arbitrary stations. Secondly, the system uses the shortest path algorithm to find the shortest travel

6、routes between any two stations. Finally, the system provides the functions of consumer message, the bus number managing on the backstage and the consumer managing. The function of consumer message mainly collects suggestions from consumer to modify and perfect the system functions. The function of

7、user managing is to delete user information mainly and revises the fundamental user information. The functions of bus number managing are mainly to add, update and delete the bus number and the station on the backstage. These can enable the system have the quality of real-time updating to provide th

8、e accurate information for user.Key words:J2EE; Shortest path algorithm; public transport inquiry目 录论文总页数:30页1 引言31.1 选题背景31.2 项目的主要研究工作31.3 开发环境42 理论基础42.1 概念42.1.1 J2EE的概念42.1.2 JSP的概念52.1.3 Java Bean的概念52.1.4 Java Servlet的概念52.1.5 Session对象52.2 J2EE的结构52.3 J2EE的容器类型62.4 J2EE的体系与模式62.4.1 J2EE的体系(分

9、布式计算)62.4.2 J2EE的模式63 公交查询系统功能分析63.1 公交查询系统的需求63.1.1 系统需求描述63.1.2 系统数据流图73.2 公交查询系统的功能73.3 公交查询系统的数据库设计83.3.1 E-R图83.3.2 数据库表设计94 公交查询系统的设计与实现114.1 创建管理员登录的Servlet114.2 创建用户登录的Servlet134.3 公交系统查询模块144.3.1商厦查询144.3.2 车次信息查询174.3.3 站点信息查询194.3.4 两个站点间的信息查询204.4 公交系统添加模块254.4.1 添加车次254.4.2 添加站点264.5 公交

10、系统删除模块264.5.1 删除车次264.5.2 删除站点274.6 公交系统更新模块274.7 公交系统留言板模块284.7.1 发表留言284.7.2 查看留言284.7.3 删除留言295 系统测试与分析29结 论30参考文献30致 谢错误!未定义书签。声 明错误!未定义书签。1 引言1.1 选题背景20多年来,我国经济得到了持续、快速、稳定、健康地发展。经济的快速增长,带动了汽车工业的蓬勃发展,并使交通状况显著改善。据统计,中国公路通车总里程已达130余万公里,其中高速公路约1.5万公里。居民收入普遍提高,到2000年年底,人均GDP已超过800美元,沿海地区已达20003000美元

11、。按国际发展惯例,当人均GDP超出1000美元,汽车消费市场就将进入快速增长期。我国城市人口约有2亿,略低于美国人口。东部沿海地区大部分居民已经具备了汽车消费实力。据中国消费者协会2000年对20个大城市调查显示,有32%的消费准备在未来5年内购买家用轿车,其中30.6%的无车消费者已经有驾驶执照。随着个人信贷制度的启动和日渐完善,家庭轿车的快速增长势头必将开掘出巨大的中国汽车市场。城市经济发展,城市规模越来越大,相应的城市公交系统也越来越庞大。许多新建小区大量出现,公交线路也日渐增多,给人们的出行带来了极大便利,但是由于城市规模的不断发展,给人们选择出行乘车线路造成了一定的困难。即使一个在城

12、市生活多年的人,给他任意两个地点,要他说出这两个地点之间的乘车方案,他往往也是很难说出来的。但是如果给他一张交通地图之后,他可以很快地找出图上的任意两点之间的乘车方案,所找出的方案即使不是最优的,也是一条可供参考的备选方案。但是这样的查询效率是相当低的,所以需要提供一个高效的查询系统,才是问题更本所在。而基于J2EE的公交查询系统,就是利用B/S结构开发出来的查询系统,它通过利用数据结构当中的最短路径算法,可以查出任意两个地点之间最短的乘车方案。它不仅可以用于公交公司管理系统中,也可以单独作为公交管理系统的一个模块存在,并可以制作成公交信息系统查询网,放置于城市的主要场所。这样不仅可以体现出一

13、个城市的智能公交系统的水平,更显示出城市的数字化,信息化水平。目前,我国众多大城市普遍存在交通拥挤,延误人们平时上班时间。甚至影响了城市旅游业经济的可持续发展。所以为了切实的改善公交车内拥挤状况,适当增加发车次数以缩短乘客等车时间,但是能够准确为人们提供最短的乘车线路才是得到解决的最好办法,这样大大的缩短了人们的乘车时间。本项目研究的基于J2EE的公交查询系统,让人们通过互联网很快的查出该城市任意两站点之间的最短乘车路线。1.2 项目的主要研究工作本系统是从城市交通现状出发,根据人们的出行规律,设计了一个完整的基于J2EE体系的公交车查询系统。该系统可以根据商厦名称,公交车号,日常站点和站点之

14、间为查询条件分别进行查询,解决了市民出行乘坐公交车时经常遇到的困难。本系统模型构架分为下面四层结构,如下。(1)J2EE应用程序组件J2EE应用程序是由组件构成的。J2EE组件是具有独立功能的软件单元,它们通过相关的类和文件组装成J2EE应用程序,并与其他组件交互。本系统包括如下组件:应用客户端程序及J2EE服务器。Java Servlet和JavaServer Pages(JSP)Web组件及JavaBean。(2)WEB层组件J2EE web层组件包含JSP页面或Servlet。按照J2EE规范,还包含某些JavaBean对象来处理用户输入,并把输入发送给运行在业务逻辑层上的组件来进行处理

15、。(3)客户层组件基于WEB方式的静态HTML页面或是Applet客户端的小应用程序。(4)编写算法编写最短路径数据结构算法,解决完成站点之间最短乘车路径查询。1.3 开发环境开发工具:Eclipse 3.2 + MyEclipse 5.0GA。运行环境:JSDK 1.5.0_04虚拟机。服务器:Tomcat 5.5。数据库:MicroSoft SQL Server 2000。操作系统:Windows XP。所需内存:512 M。2 理论基础2.1 概念2.1.1 J2EE的概念J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就

16、是核心Java平台或Java 2标准平台。J2EE不仅巩固了标准版中的许多优点,例如“编写一次、随处运行”的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等,同时还提供了对EJB(Enterprise JavaBeans)、Java Servlet API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。2.1.2 JSP的概念JSP程序是一个服务端页面脚本程序,可以在这个脚本中直接编写客户端浏览器需要显示的HTML文档内容,当然也可以依照JS

17、P规范将Java程序代码嵌入脚本。JSP脚本规范提供了若干内部对象来简化JSP程序和浏览器之间的输入输出处理。由于JSP程序是从HTML页面添加Java动态处理代码而来,因此,JSP程序又称为动态JSP页面。2.1.3 Java Bean的概念JavaBean是一种JAVA语言写成的可重用组件,用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何

18、改变。这个对J2EE业务逻辑层处理具有相当重要的部分。2.1.4 Java Servlet的概念Java Servlet使用的是一种请求/响应机制,也就是说通过特定的Java程序设计技术,由该Servlet动态产生的响应向某一特定的请求做出响应。Servlet所能应用的请求/响应场合很多,但常用的还是在Web应用程序中用于产生超文本传输协议响应(HTTP)。据此,Servlet可能取代其他类型的HTTP请求/响应机制,譬如通用网关接口(CGI)脚本。2.1.5 Session对象Session对象是类javax.servlet.Httpsession的一个对象,是用来保存每个用户信息(以会话的

19、形式直接保存在WEB服务器端),以便跟踪每个用户的操作状态。2.2 J2EE的结构J2EE结构具有一个很大的特点,就是与平台无关性的J2EE结构。所开发出来的程序可以在任何操作系统下运行。这样就使得J2EE程序的编写变得十分简单,因为业务逻辑被封装成可以复用的组件,并且J2EE服务器以容器的形式为所有的组件类型提供后台服务,所以你可以集中精力解决手头的业务逻辑。2.3 J2EE的容器类型J2EE容器类型可以分为WEB容器和EJB容器。EJB容器管理所有J2EE应用程序中企业级Bean的执行,Enterprise Bean和它们的容器运行在J2EE服务器上。WEB容器也是管理所有J2EE应用程序

20、中JSP和Servlet组件执行,同理WEB组件和它们的容器也是运行在J2EE服务器上的。2.4 J2EE的体系与模式2.4.1 J2EE的体系(分布式计算)(1)表示层:Web Page| HTML | HTTP(2)控制层:JSP | Servlets (3)逻辑层:JavaBean (4)数据层:Database (5)JDBC2.4.2 J2EE的模式MVC(Model View Controller)页面bean是一个模型(model),而JSP是一个视图(view), Servlet是一个控制器(controller)。3 公交查询系统功能分析3.1 公交查询系统的需求3.1.1

21、系统需求描述公交查询系统的需求最主要是通过站点与车次之间的关系,利用数据结构算法构造一个公交查询的网络图,然后通过最短路径算法,为用户准确地提供两站点之间的最短乘车路线。其次从业务实现上来说,需要在业务逻辑层上编写最短路径算法,同时还要编写当用户查询请求时必须的数据库连接,然后根据用户提供查询站点信息,建立公交查询网络图,最终调用算法获取两站点之间的最短乘车线路。当查询完成后,如果用户需要进行其它的操作,则释放该连接资源。最后,为了让公交线路信息得到及时的更新或是信息删除,需要做出相应的操作和处理。3.1.2 系统数据流图管理员登录车次管理用户登录用户注册 帐 号 线路管理留言删除用户车辆信息

22、库线路信息留言本站点管理站点信息公交车查询用户图3.1 系统数据流图3.2 公交查询系统的功能(1)通过选择商厦名称进行相应的信息查询。(2)通过选择车号进行相应的信息查询。(3)通过选择站点进行相应的信息查询。(4)通过选择任意两个站点,完成两站点之间最短乘车路线查询。(5)完成车次和站点添加功能。(6)完成车次和站点更新功能。(7)完成车次和站点删除功能。(8)用户登录验证功能。(9)用户注册信息功能。(10)用户注销功能。(11)删除用户信息功能。 (12)添加用户留言,删除用户留言,查看用户留言。(13)管理员登录验证功能。(14)管理员注销功能。3.3 公交查询系统的数据库设计3.3

23、.1 E-R图用 户用户名密码年龄地址邮箱提示问题提示答案证件号码图3.2 用户实体及属性管理员管理员帐号密码图3.3 管理员实体及属性留 言 板用户名留言时间留言标题留言内容邮箱地址留言ID图3.4 留言板实体及属性车次信息终点站票价起点站车子档次车号票价档次站点信息站点号站点名称经过车号站点次序站点号图3.5 车次与站点之间关系3.3.2 数据库表设计(1)用户表userInfo(如表3.1)表3.1 用户表信息列名中文名称数据类型长度允许空username用户名varchar50Not nulluserpassword用户密码varchar50Not nulluserage用户年龄int

24、4nulladdress地址varchar50nullemail邮箱varchar50nullquestion问题varchar50nullanswer答案varchar50nullidnum证件号varchar50null(2)管理员表administrator(如表3.2)表3.2 管理员信息列名中文名称数据类型长度允许空adminiID管理员名Varchar50Not nulladminipassword密码varchar50Not null(3)车次信息表BusInfo(如表3.3)表3.3 车次信息表列名中文名称数据类型长度允许空BusNum车号int4Not nullBeginSt

25、起点站varchar50Not nullEndSt终点站varchar50Not nullTicketNote票价varchar50nullBusLevel车子档次varchar50nullNote票档次varchar50null(4)站点信息表StInfo(如表3.4)表3.4 站点信息表列名中文名称数据类型长度允许空StID站点号int4Not nullStName站点名称varchar50Not null(5)车次与站点关系表BusSt(如表3.5)表3.5 车次与站点关系表列名中文名称数据类型长度允许空BusNum车号Int4Not nullStID站点号Int4Not nullStO

26、rder站点次序Int4Not null(6)商厦信息表publicplace(如表3.6)表3.6 商厦信息表列名中文名称数据类型长度允许空placesid商厦号int4Not nullplacesname商夏名称varchar50null(7)站点与商厦关系表stplace(如表3.7)表3.7 站点与商厦关系表列名中文名称数据类型长度允许空StId站点号int4Not nullplaceId商厦号int4Not null(8)留言信息表message(如表3.8)表3.8 留言信息表列名中文名称数据类型长度允许空username用户名varchar50Not nullmessagedat

27、e留言日期datetime8Not nulltopic留言主题varchar50Not nullemail邮箱varchar50nullmessagetext留言内容varchar250Not nullid留言序号int4Not null4 公交查询系统的设计与实现4.1 创建管理员登录的Servlet(1)打开Eclipse开工具,新建一个ConfirmServlet类(如图4.1)图4.1 创建管理员登录ConfirmServlet类(2)在已创建好ConfirmServlet类中,生成一个具有私有属性的login()方法,该方法就是对管理员请求过来的信息进行验证。该方法首先利用HttpS

28、ervletRequest,HttpServletResponse进行对象初始化。利用HttpServletRequest的getParameter()来获取管理员页面传来的两个参数,一个是adminname,另一个是adminpassword。然后调用自定义连接数据库类进行数据库对象实例化,最后在进行验证的时候,获取管理页面验证码,如果验证码无误就对管理员账号和管理员密码验证,最终将正确的管理员账号和管理员密码放入session会话变量中。管理员登录界面(如图4.2)图4.2 管理员登录界面相应代码:private void login(HttpServletRequest request,

29、HttpServletResponse response)Connection conn=null;Statement stmt=null;ResultSet rs=null;HttpSession session=request.getSession(true);/如果用户session为空重新分配一个新的session给用户DBConnection2 db=DBConnection2.getInstance();String adminname=request.getParameter(adminname) =null ? : request.getParameter(adminname)

30、;adminname =exChange(adminname);/字符串乱码处理String password = request.getParameter(password) = null ? : request.getParameter(password);password=exChange(password);/字符串乱码处理String sql=;String rand=(String) session.getAttribute(rand);String input=request.getParameter(vaild);int n=0;tryconn = db.getConnecti

31、on();stmt = conn.createStatement();sql = select * from administrator where adminiID = +adminname+ and adminipassword = +password+;rs=stmt.executeQuery(sql);if(rs.next() & rs!= null)n+;if (n 0 & input.equals(rand)session.setAttribute(adminname, adminname);session.setAttribute(adminpassword, password)

32、;session.removeAttribute(rand);response.sendRedirect(loginSuccess.jsp);elseresponse.sendRedirect(error.jsp);catch(Exception e)e.printStackTrace();finallytryif(stmt!=null)stmt.close();db.freeConnection(conn);catch(Exception ee.printStackTrace();4.2 创建用户登录的Servlet(1)打开Eclipse开工具,新建一个UserLoginServlet类(

33、如图4.3)图4.3 创建用户登录UserLoginServlet类(2)与管理员中的ConfirmServlet类一样,也生成一个具有私有属性的login()方法,该方法也同样的继承了HttpServletRequest和HttpServletResponse类,通过这个类来获取用户界面请求过来的参数,当通过用户信息验证后,同样也将用户账号和用户的密码放入session会话变量中,一旦用户最终关闭浏览器,session会话变量也随即销毁。用户登录界面(如图4.4)图4.4 用户登录界面4.3 公交系统查询模块4.3.1商厦查询商厦查询是为用户提供按具体的名称(如:欧尚)查询,并显示到这个地点

34、所有公交车车次的相关信息(如:车号,站点名称,票价,车子的档次和这个商厦的名称等信息)。而查询功能的实现是由系统的业务逻辑层中的QueryData类来实现的。当用户传来的车次提交信息,首先商厦查询页面先编译成服务器上的Servlet,然后根据需要调用业务逻辑层中相应类。商厦信息查询结果(如图4.5)图4.5 商厦查询相应代码:public ArrayList queryPlace(String placeName,String page) ArrayList arrayList = new ArrayList();DBConnection2 db=DBConnection2.getInstan

35、ce();Connection conn=null;Statement stmt=null;ResultSet rs=null;String sql=;try if (placeName != null) if (!placeName.equals() placeName = exChange(placeName);/字符串转码int m = (Integer.parseInt(page) - 1) * pageSize;int i = 0;sql=select businfo.busnum,stinfo.stname,ticketnote,buslevel,note from stinfo,

36、businfo,busst where busst.stid = stinfo.stid and businfo.busnum = busst.busnum and busst.stid in (select stid from stplace where placesid in (select placesid from publicplace where placesname = +placeName+);conn = db.getConnection();stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultS

37、et.CONCUR_READ_ONLY);rs = stmt.executeQuery(sql);if (rs.first() rs.absolute(m + 1); /将游标放到指定位置再加1(也是开始的第一条记录的序号)while(i pageSize & rs != null & !rs.isAfterLast()HashMap hashMap = new HashMap();hashMap.put(busnum,+rs.getInt(busnum);/将从数据库中查出的值放入hashMap.put(stname,rs.getString(stname);hashMap.put(tick

38、etnote,rs.getString(ticketnote);hashMap.put(buslevel,rs.getString(buslevel);hashMap.put(note,rs.getString(note);arrayList.add(hashMap); /将所有的hashmap放入arrayListrs.next();i+; catch (Exception e) e.printStackTrace(); finally try if (stmt != null) stmt.close();db.freeConnection(conn); catch (Exception e

39、) e.printStackTrace();return arrayList;调用此方法时,在页面中先引用包com.busSystem.util,再创建QueryData类的对象,通过对象调用queryPlace()这个方法。4.3.2 车次信息查询车次信息查询是为用户提供一个按公交车的车号(如:1路)查询,并显示该公交车的相关信息(如:公交车的起点站、终点站、票价和车子的档次等信息)。而查询功能的实现是由系统的业务逻辑层中的QueryData类来实现的。车次信息查询结果(如图4.6)图4.6 车次信息查询相应的代码:public ArrayList statisticsByBusInfo(S

40、tring busNum,int page) ArrayList arrayList = new ArrayList();DBConnection2 db = DBConnection2.getInstance();Connection conn = null;Statement stmt = null;ResultSet rs = null;String sql = ;try int m = (page-1)*pageSize; /计算游标的位置int i = 0;busNum = exChange(busNum);/字符串转码if (busNum.equals() | busNum = n

41、ull) sql = select * from busInfo; else busNum = exChange(busNum);/字符串转码sql = select * from busInfo where busnum = +Integer.parseInt (busNum)+;conn = db.getConnection();stmt= conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);rs = stmt.executeQuery(sql);if (rs.first()

42、rs.absolute(m + 1); /将游标放到指定位置再加1(也是开始的第一条记录的序号)while (i pageSize & !rs.isAfterLast() & rs != null) HashMap hashMap = new HashMap();hashMap.put(BusNum,+rs.getInt(busnum);将从数据库中查出的值放入hashmap中hashMap.put(BeginSt,rs.getString(beginst);hashMap.put(EndSt,rs.getString(endst);hashMap.put(TicketNote,rs.getS

43、tring(ticketnote);hashMap.put(BusLevel,rs.getString(buslevel);hashMap.put(Note,rs.getString(note);arrayList.add(hashMap); /将所有的hashmap放入arrayListrs.next();i+; catch (Exception e) e.printStackTrace(); finally try if (stmt != null) stmt.close();db.freeConnection(conn); catch (Exception e) e.printStack

44、Trace();return arrayList;调用此方法时,在页面中先引用包com.busSystem.util,再创建QueryData类的对象,通过对象调用statisticsByBusInfo()这个方法。4.3.3 站点信息查询站点信息查询是为用户提供按公交车某一个站点查询到该站点需要乘坐公交车的车号。该查询功能的实现也是由系统的业务逻辑层中的QueryData类来实现的。站点信息查询结果(如图4.7)图4.7 站点信息查询相应代码:public ArrayList queryStInfo(String stname) ArrayList arrayList = new ArrayList();DBConnection2 db = DBConnection2.getInstance();Connection conn = null;Statement stmt = null;ResultSet rs = null;String sql = ;try stname = exChange(stname);/字符串转码conn = db.getConnection();stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号