城镇公交车管理系统毕业论文文档格式.docx
《城镇公交车管理系统毕业论文文档格式.docx》由会员分享,可在线阅读,更多相关《城镇公交车管理系统毕业论文文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
2.功能需求
系统面对的参与者主要有两大类,一是广大市民;
二是公交运营公司。
从广大市民角度分析:
主要针对系统的前台,用户可以申请会员,可以浏览公交运营公司发布的最新新闻和规章制度等信息。
会员用户可以发表寻物启事、失物招领、投诉和修改个人信息等功能。
进一步实现和公交运营公司的交互。
除此之外所有用户都可以查询公交线路、车次及站点等详细信息。
这为用户的出行带来了极大的方便。
从公交运营公司的角度分析:
除了可以使用前台的所有功能外,主要针对后台管理系统,管理分为两个角色,管理员和超级管理员,其中超级管理员可以分配管理员账号等功能,具有更高级别的权限。
其中管理员可以对本公司的基本信息进行维护,像公司地址、公司版权声明和许可协议内容等。
具体包括车次维护、站点维护、线路维护和线路的查询,这主要是对车辆数据的维护;
除此之外管理员要对前台用户申请的会员进行审核,通过之后会员才会正式对用户开放,同样会员发布的失物招领、寻物启事和投诉等信息也都会先提交管理员审核,通过方可生效;
最后一点就是公交运营公司的超级管理员可以对所有的管理员进行审核和维护,这在一定程度上完善了管理体制也符合公司的管理体制。
3.数据需求
1车辆的基本信息
车辆的基本信息包括线路名称、起点站和终点站、首末班车时间、空调票价、标准票价和IC卡类型等信息。
2站点的基本信息
站点的基本信息包括站点名称、副站点名称(站点缩写)和辅助站点名称(站点附近建筑物名称)等。
3线路的基本信息
线路基本信息包括车次名称(车辆名称)、当前线路下的所有站点名称和上行、下行类别信息。
4会员的基本信息
会员信息包括用户名(登陆使用)、登陆密码、找回密码的提示问题及答案、真实姓名、性别、邮箱地址和联系方式(手机或座机等)。
5失误和寻物的基本信息
失误和寻物的信息基本相同,其中包括物品名称、物品种类、物品简单描述、物品详细描述、捡取地点和时间(丢失地点和时间)、联系人、联系方式(手机或座机等)以及备注信息等。
6投诉的基本信息
投诉的基本信息包括投诉内容和投诉人(允许匿名)等。
7公交新闻的基本信息
公交新闻的基本信息包括新闻标题和新闻内容(规章制度)等信息。
8公交运营公司的基本信息
公交运营公司的基本信息包括公司名称、许可协议内容、公司E_Mail、公司联系电话、公司地址和公司备注信息等。
9管理员的基本信息
管理员的基本信息包括管理员用户名、登陆密码、管理员权限(管理员或超级管理员)和是否可以(是否可以登陆系统)。
第三章数据库设计
1.数据库的概念
当人们从不同的角度来描述这一概念时就有不同的定义。
例如,称数据库是一个“记录保存系统”(该定义强调了数据库是若干记录的集合)。
又如称数据库是“人们为解决特定的任务,以一定的组织方式存储在一起的相关的数据的集合”(该定义侧重于数据的组织)。
更有甚者称数据库是“一个数据仓库”。
当然,这种说法虽然形象,但并不严谨。
严格地说,数据库是“按照数据结构来组织、存储和管理数据的仓库”。
本系统将使用一直以来使用都最为广泛的关系模型作为数据库的建设依据。
在用户的观点下,关系模型中数据的逻辑结构是一张二维表,一个关系对应通常说的一张表,并且关系的每一个分量必须是一个不可分的数据项。
而一个基于关系模型的数据库则是由若干个二维表组成的。
对于一些大型和中型的数据库,如Oracle,SQLServer2000等都属于关系型数据库,同时它们所带有的数据库管理工具是其他小型数据库所没有的,而同时这些工具又为管理员的工作节省了很多的时间和财力。
2.数据库的选择
从资金和功能两方面考虑的话还有一个更具吸引力的功能强大的中小型免费数据库MySQL,本系统采用的这个功能完善而又小巧的数据库。
MySQL是一个真正的多用户、多线程SQL数据库服务器,它有较好的数据承载能力,一个环境有超过40个数据库,包含10000个表,其中500多个表超过7百万行记录,总数据大约有100GB的数据库系统可以很好的被MySQL所支持,而MySQL本身不会像Oracle那样对系统及硬盘空间有很高的要求。
这也是本系统选用MySQL作为后台数据库系统的一个重要原因之一。
3.PowerDesigner介绍
PowerDesigner是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,它几乎包括了数据库模型设计的全过程。
利用PowerDesigner可以制作数据流程图、概念数据模型、物理数据模型,可以生成多种客户端开发工具的应用程序,还可为数据仓库制作结构模型,也能对团队设备模型进行控制。
4.系统数据库设计模型图
1
公交运营公司表图
2用户投诉表图
3
寻物表和会员表及关系图
4管理员、公交新闻和失误表之间的关系图
5
车辆、站点和车次表之间关系
第四章技术介绍
1.JAVA语言
现在,市场上可以选购的应用开发产品很多,流行的也有数十种。
目前在我国市场上最为流行,使用最多,最为先进的可用作企业级开发语言的产品有SUN公司的Java、Microsoft公司的VisualBasic、Microsoft公司的VisualC、Borland公司的Delphi和Powersoft公司的PowerBulider等。
在目前市场上这些众多的程序开发工具中,有些强调语言的弹性与执行效率;
有些偏重于可视化程序开发工具所带来的便利性与效率的提高,各有各的优点和特色,也满足了不同用户的不同需求。
我的网站选择Java语言开发,其原因基于以下几点:
Java是一种简单的、面向对象的、分布式的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的语言。
1简单
Java的风格类似于C++,并且摒弃了C++中容易引发程序错误的地方,如指针和内存管理。
此外Java提供了丰富的类库。
2面向对象
面向对象可以说是Java最重要的特性。
Java语言的设计完全是面向对象的。
Java支持静态和动态风格的代码继承及重用。
3分布式
Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。
因此,Java应用程序可凭借URL打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。
4健壮
Java致力于检查程序在编译和运行时的错误。
Java自己操纵内存减少了内存出错的可能性。
Java提供Null指针检测数组边界、检测异常出口、字节代码校验。
5安全
Java的安全性可从两个方面得到保证。
一方面,在Java语言里,像指针和释放内存等C++功能被删除,避免了非法内存操作。
另一方面,当Java用来创建浏览器时,语言功能和浏览器本身提供的功能结合起来,使它更安全。
6可移植
Java的可移植性一直是Java程序设计师们的精神指标,也是Java之所以能够受到程序设计师们喜爱的原因之一,最大的功臣就是JVM的技术。
JAVA编译器产生的目标代码(J-Code)是针对一种并不存在的CPU--JAVA虚拟机(JAVAVirtualMachine),而不是某一实际的CPU。
JAVA虚拟机能掩盖不同CPU之间的差别,使J-Code能运行于任何具有JAVA虚拟机的机器上。
7高性能
Java可以在运行时直接将目标代码翻译成机器指令。
Sun用直接解释器一秒钟内可调用300000个过程。
翻译目标代码的速度与C/C++的性能没什么区别。
8多线程
Java支持多线程,多线程功能使得在一个程序里可同时执行多个小任务。
线程,有时也称小进程,是一个大进程里分出来的小的独立的进程。
9多态
Java的动态特性是其面向对象设计方法的发展。
它允许程序动态地装入运行过程中所需要的类,这是C++语言进行面向对象程序设计所无法实现的。
Java编译器不是将对实例变量和成员函数的引用编译为数值引用,而是将符号引用信息在字节码中保存下传递给解释器,再由解释器在完成动态连接类后,将符号引用信息转换为数值偏移量。
2.Struts框架
Struts最早是作为ApacheJakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServerPages、Servlet、标签库以及面向对象的技术水准。
Struts这个名字来源于在建筑和旧式飞机中使用的支持金属架。
这个框架之所以叫"
Struts"
,是为了提醒我们记住那些支撑我们房屋,建筑,桥梁,甚至我们踩高跷时候的基础支撑。
这也是一个解释Struts在开发Web应用程序中所扮演的角色的精彩描述。
当建立一个物理建筑时,建筑工程师使用支柱为建筑的每一层提供支持。
同样,软件工程师使用Struts为业务应用的每一层提供支持。
它的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。
我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。
如果想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。
Struts流程为服务器启动后,根据web.xml加载ActionServlet读取struts-config.xml文件内容到内存。
登陆举例,第一次进login.jsp会先实例化Form、把默认值(String默认为空字符串,整形默认为0)赋给表单元素。
输入用户名密码提交表单、提交到action属性的login.do,通过ActionServlet读struts-config.xml文件找到action下的path属性找到.do,通过name属性找form-beans中的form-bean的name属性得到ActionForm的包名类名,先实例化form,把表单的值填充给form,调用form的validate方法验证、ActionErrors返回null表示验证通过,否则失败返回input指定的页面.验证通过会实例化Action,执行Action的excute方法。
3.Hibernate框架
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有五个,分别为Session、SessionFactory、Transaction、Query和Configuration。
这五个接口在任何开发中都会用到,通过这些接口不仅可以对持久化对象进行存取,还能进行事务控制。
4.Spring框架
Spring是一个开源框架,它由RodJohnson创建。
它是为了解决企业应用开发的复杂性而创建的。
Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。
然而,Spring的用途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
Spring提供了Ioc(控制反转)和Aop(面向切面编程)两大模块,其中我们可以借助DI依赖注入和Aop的声明式事务给我们的系统增色。
5.Ajax技术
国内通常的读音为“阿贾克斯”和阿贾克斯足球队读音一样。
Web应用的交互如Flickr,Backpack和Google在这方面已经有质的飞跃。
这个术语源自描述从基于网页的Web应用到基于数据的应用的转换。
在基于数据的应用中,用户需求的数据如联系人列表,可以从独立于实际网页的服务端取得并且可以被动态地写入网页中,给缓慢的Web应用体验着色使之像桌面应用一样。
虽然大部分开发人员在过去使用过XMLHttp或者使用Iframe来加载数据,但仅到现在我们才看到传统的开发人员和公司开始采用这些技术。
就像新的编程语言或模型伴随着更多的痛苦,开发人员需要学习新的技巧及如何最好利用这些新技术。
系统中使用了基于Ajax的JQuery框架,使之为系统增色不少,增强了用户体验,因此许多正规的验证方式和验证风格得以实现。
6.SQL语句
SQL(StructureQueryLanguage结构化查询语言)自1974年被提出,至今已经是世界上最流行的关系数据库的标准语言。
SQL语言的分类
①DDL(DataDefinitionLanguage)数据定义语言,其作用包括创建数据库对象、删除数据库对象、修改数据库对象(create、drop、alter)。
②DML(DataManipulationLanguage)数据操纵语言,其作用包括查找数据信息、插入数据信息、删除数据信息、更改数据信息(select、insert、delete、update)。
③DCL(DataControlLanguage)数据控制语言,作用主要对是授权数据库对象(grant、revoke)。
7.开发环境
操作系统:
WindowsXP
运行环境:
JDK6.0、IE6.0
开发工具:
MyEclipse6.0、Dreamweaver8.0、Photoshop9、PowerDesigner12、Rose、Flash8等
数据库:
MySQL5.0
服务器:
Tomcat6.0
第五章详细设计
1.系统体系结构图
公交管理系统分为前后台系统,前台包括浏览和发布功能;
后台包括浏览、发布和管理维护功能。
2.前台系统首页
公交管理系统前台首页显示所有模块的概要,其中会员登陆可以实现局部刷新效果,可以达到很好的用户体验效果,可以进行会员的申请、密码找回或登陆。
会员登陆前只能进行信息的浏览,而不能发布信息。
3.前台登陆界面
4.会员中心界面
登陆成功之后,可以进入会员中心,会员可以修改个人信息、发布寻物启事、失物招领信息,也可以发布投诉信息,当这些信息被管理员审核通过后会显示到前台供用户查看。
5.后台管理审核界面
6.会员发布寻物启事界面
会员发布信息的时候可以查看自己之前发不过的对应的信息列表,当然是不可以看到其他会员发布的信息的。
7.公交查询流程图
前后台查询原理基本相同,都可以根据站点、车次和首末站点进行查询。
①根据站点查询:
查询出所有经过指定站点的公交车线路,并且可以通过点击车次功能,显示线路详细列表。
并且该功能支持模糊查询。
②根据线路查询:
查询出指定车次的线路,可以显示线路的详细情况列表。
③根据首末站点查询:
可以查询出经过两个站点的所有的车次,第一级页面会显示出所有的直通车线路;
当点击换成查询的时候,可以查询所有的换成线路车次出行方案。
7.查询线路界面
通过显示结果可以看出,我们可以通过滚动条查看上行或下行线路的详细情况。
8.线路维护界面
由界面可以看出,线路的添加需要有车次、站点和路线类型组成。
其中车次是使用选择按钮通过弹出页面选择,然后自动填出车次名称;
站点的选择是通过点击选择站点,然后从弹出框中选中若干站点,有界面可以看出站点要求全部选中然后才可以添加线路信息,其中界面中提供了全部选中和上移、下移站点顺序的功能,最后有选择上行和下行路线的选项。
9.管理员维护界面
界面中可以看到有的记录后边是可用或不可用,不可以代表不能登陆到后台系统,只有超级管理员审核通过后该管理员才可以登陆系统;
管理员可以修改自己的基本信息,不能修改权限;
超级管理员可以修改自己的基本信息和权限;
超级管理员可以修改其他管理员的权限但是不能修改其他管理员的基本信息。
这保证了每个人的个人信息的安全。
第六章总结
在前面几章中,我们对公交管理系统的建设过程从需求分析、设计、实现等阶段分别做了介绍。
本系统实现了会员注册、登录、站点管理、车辆管理、线路管理、会员管理、管理员管理、公交新闻管理和公交运营公司的管理等功能。
本文对所选择的开发语言做了介绍,本系统在开发过程中采用Struts、Hibernate、Spring三大框架相结合,并且结合JQuery框架为系统的界面无刷新提供了很好的支持,利用Spring的声明式事务管理,不同于以往开发过程中所使用的编程式事务管理,在这一点上,本文也做了详细的介绍。
此外,在项目的开发过程中采用规范的软件工程的开发流程,因此在需求分析及数据库设计部分做了大量的工作,这些对本系统后期的编码过程起到了指导作用,在本文中也有所体现。
本系统也将会在今后的应用中逐步完善,做到尽善尽美。
致谢
本论文最终能顺利完成,首先应感谢我们的两位导师张晓玲和石彦杰老师,虽然他们在我们的项目中没有扮演重要角色,但是他们的思想和学习方法以及开发、解决问题的思想却正是我们的项目得以完成的法宝。
他们教授的学习方法和他们的工作态度都深深地影响着我们。
参考文献
[1](美)BruceEckel,陈昊鹏译,《Java编程思想第四版》机械工业出版社2007.06
[2]孙卫琴,《精通Struts:
基于MVC的JavaWeb设计与开发》电子工业出版社2004.08
[3]孙卫琴,《精通Hibernate》2006.06
[4](美)普雷斯曼著,郑人杰等译,《软件工程:
实践者的研究方法》2007.01
[5]张孝祥《Java就业培训教程》清华大学出版社2003.09
附录一数据库连接
用Hibernate连接数据库可通过直接编写Hibernate的配置文件来实现,由于本网站采用Struts,Hibernate,Spring三者相结合,所以本网站在处理与数据库连接时,直接将Hibernate配置文件中连接数据库的代码注入到Spring的配置文件中,包括需要加载相应的数据库驱动,与所用数据库建立连接的URL,数据库的用户名以及密码。
<
beanid="
dataSource"
class="
mons.dbcp.BasicDataSource"
>
propertyname="
driverClassName"
value>
com.mysql.jdbc.Driver<
/value>
/property>
url"
jdbc:
mysql:
//localhost:
3306/workinfodb<
username"
root<
1234<
/bean>
将此数据库的连接注入到Spring的操作缓存中,并且通过Spring的配置文件将Hibernate中持久化类所对应的映射文件进行注入。
sessionFactory"
class="
org.springframework.orm.hibernate3.LocalSessionFactoryBean"
refbean="
/>
mappingResources"
list>
com/data/hibernate/Admin.hbm.xml<
com/data/hibernate/Company.hbm.xml<
com/data/hibernate/Employee.hbm.xml<
……
/list>
sessionFactory在应用程序中通常只需存在一个实例,因而sessionFactory底层的dataSource可以使用Spring的IoC注入,之后再将sessionFactory注入相依赖的对象之中。
附件二声明式事务
Spring的声明式的事务管理依赖于它的AOP框架来完成,使用声明式的事务管理的好处是,事务管理不侵入开发的组件,即事务管理的相关API可以不用介入程序之中,DAO对象不会意识到正在事务管理之中。
将事务的管理和业务逻辑相分离,正是我们一直以来想要达到的目标,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,在以往的编程过程中,我们要大量的考虑在何种情况下操作有可能不会完全成功,需要对事务进行回滚操作,使数据保存一致状态。
而有了Spring的声明式事务管理,如果想要改变事务管理策略的话,只需要在Spring的配置文件中重新配置即可。
Spring的声明式的事务管理通过动态代理,针对接口进行管理,那么就首先要求进行指定业务逻辑的类要现实相应的接口,动态代理再通过对接口的管理,现实了对继承该接口的类中的指定方法的事务管理。
AdminDAOProxy"
org.…….TransactionProxyFactoryBean"
transactionManager"
/>
/prope