目录
第1章 绪 论
1.1 引言
随着科学技术日新月异的发展,崭新的传播媒体——因特网诞生了。在Internet和Web迅猛发展的今天,数字设计技术对21世纪的平面设计家提出了许多挑战。面对新时代的到来,人们无不感到社会经济和文化所经历着的快速而深刻的变化,结构合理、制作精美、创意独特、风格鲜明的网页,不仅能够传递最丰富的信息,同时还能给人以美的艺术享受,也树立了公司企业、服务机构等的良好社会形象,获取最大限度的经济效益。
1.2 意义
建立基于SSH的影城管理系统把首先把票券信息流(提供给用户的各种票券的信息,如机票、船票、公共汽车票的各种信息等)、商务流(由票券交易中伴随的购、销活动以及票券所有权的变化等一系列活动构成,商务流实现了实物所有权的交换)、以及资金流(在电子商务活动中,资金包括现金、支票甚至有价证券等等,是资金流的主要处理对象,它和付款、转帐等一系列处理过程真正构成了一个完整资金流。资金流实现了“资金”所有权的交换。)三种电子商务模型有机地结合起来,它具有传统的人工管理系统所不可比拟的优越性:
- 首先,它利用互联网的便利性,使人们可以实时地在线选购自己需要的电影票券。这样避免了传统购票方式给人们带来的长途奔波、长时间排队的疲劳。
- 其次,管理系统将人们实际的购票模式通过网络形象地模拟出来,人们在网上订票时如身临其境,并且能在任何时间选择自己所需的电影票券,这包括影片的类型、场次、座位等,并且可以获得一定的优惠票券,例如客户预定团体票时,都有可能享受优惠。
- 再次,影院管理系统可以大大降低实际购票交易时间,提高工作效率。
- 最后,管理系统可以及时地将数据信息完全共享给用户,用户无需再通过电话查询便可得到想要的具体票务信息,影片放映信息,打折等与本影城相关的信息,这样不仅提高了企业的服务质量,且更实际地解决了售票处/代售点电话咨询、场次表查询、订票等业务受理、投诉与建议等问题,从而提高用户对服务的满意度。
1.3 课题研究背景
随着社会经济的快速发展,人们的娱乐活动越来越丰富,其中看电影占了很大的比例。开发此系统的目的是解决喜爱电影的人们买票难的问题。以前要买电影票必须到电影院买,这样既浪费时间,浪费精力,而且最终还不一定买到自己想看要的。有了本系统,可以很方便的让影迷在家上网查看影院的影片以及票务的信息,这样既省时又省力,可以同时了解到不同影片的信息,有更多的选择。本系统充分利用网络资源和人力资源。
面对全球性影院观看热潮,国内外对影院观看的视觉需求,以及其规模的优势,其独有的互动效果和场内气愤赢得了越来越多的人的喜欢。1980 ~ 1984年平均产量达120部,每年观众人次平均在250亿左右。同时中国电影也进入一个蓬勃发展的新时期,中国美术片从形式到内部都极其富有民族色彩。伴随电影的发展,国内外的电子票务系统也告诉的发展,国内有许多的电子影院票务系统,如格瓦拉以及一些团购网站都有相关的内容。
电影,又称映画,是由活动照相术和幻灯放映术结合发展起来的一种现代艺术,有着复杂繁多的科系。
自1905年中国第一部电影《定军山》的诞生到2010年,中国的电影业已走过了一百多年的历程。电影业的早期是以露天电影(室外放的电影)为主,采用的是活动影布。随着社会的发展,人们生活水平以及对物质享受的提高,尤其是3D影片的问世,促使群众对观看电影的视觉效果也在不断提高。由于对观看影片时的氛围、音效、视觉效果的要求,使大量的观众开始由在家中看碟转向去影城看电影。近年来去影城看电影的观众人数越来越多,从而就引发了电影票订购的难以问题。
目前一般大众可以经由网际网络进行许多商业活动,例如购书、订花、购物、游戏等,其中也包含订票(例如机票、火车票、音乐剧入场券等)。其中,在电影院方面也有业者推动相关服务,如:华纳威秀、环球影城、国宾戏院等,已开始使用网际网络提供观众放映影片相关资讯,如场次时间表、影片预告及简介、电影院资讯等。
从网际网络到电子商务的蓬勃发展来看,类似于淘宝网上商城那种从开网店,在网上摆放商品,客人挑选物品再下订单,店主发货等一系列流程已经很成熟了。相对于淘宝网上商城而言,目前电影院的网络服务似乎仍有不足之处。对于使用者而言,影片的相关讯息介绍、预告片都是上百度、谷歌等网上引擎搜索得知,某个城市的特定影城往往不能提供全方位的详细信息,特别是不能满足观众对影片场次时间的查询。
社会生活节奏的加快,许多社会人士忙于工作等繁琐事务,每次想去影城观看电影都要经过现场查询最近热映的影片,每部影片的放映场次等信息,然后才能开始订票,而往往排队等候很长时间以后才发现自己要观看的那场影片的票已经售完,或是没有合适的观看座位。
电影业的蓬勃发展,必然引发的一个问题是群众对电影票需求的增大。特别是一些关注度很高的大片上映的时候,很多观众都反应电影票实在是很难购买,有些人就只能选择观看午夜场。在一些大城市规模很好的影城售票厅内,甚至出现要一大早起来排队去抢票的现象。还有些观众反应等那么长的队伍能买到票,但是都没有自由选择座位的权利。
这样的情况已经普遍的存在了,很多人纷纷提出影城应该提供最近热映的的影片讯息、快要上映的影片相关预告、每场电影的场次安排,以及每场次电影票的网上预订模式。
对基于基于SSH影城管理系统的研究,对于观众而言可以增强他们对各部影片的了解,对最新的影片上映动态的掌握,让他们对影片更加期待,尤其能在网上订票模式下使观众享受到不需要等待排队买票与自由选择座位的权利。通过网络轻松订票,从而减少许多因现场购票失败的客户,促使我国电影事业更好更快的发展。
1.4 国内研究现状
目前一般大从可以经由网络进行许多商业活动。例如购花、订花、购物、游戏等,其中也包含订票。其中,在电影院方面也有业者推动相关服务,如:银兴等,也开始使用网上订票业务来服务大众。
网上订票利用互联网的便捷性,使人们可以实时的在线选购电影票,避免了去影院排长队的麻烦。
其次,订票网站将人们实际的购票模式通过网络形象的模拟出来,人们在网订票时如身临其境,并且能在任何时间选择自己所需要的电影票。
最后,网上订票能大大降低实际购票的的交易时间,提高工作效率.
第2章 可行性分析与需求分析
下面从系统的技术可行性、操作可行性及经济可行性三个方面对系统进行分析,验证系统的开发是合理可行的。
2.1 可行性分析
2.1.1 技术可行性
鉴于系统是个影城管理系统网站,开发难度适中。通过对诸多开发工具和数据库进行比较及指导老师的建议,最终确定采用MyEclipse作为前台开发工具、Tomcat作为服务器、MYSQL作为存储数据库,系统设计语言为java。
MyEclipse是一个开放源代码的、与NetBeans、Sun ONE Studio和Borland Jbuilder类似的一种基于Java的整合型可扩展开发平台,也是目前最著名的开源项目之一,其本身只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。其未来的目标不仅仅是成为专门开发Java程序的IDE环境,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。
MYSQL 数据库引擎提供完整的XML支持。它还具有构成最大的 Web 站点的数据存储组件所需的可伸缩性、可用性和安全功能。MYSQL关系数据库引擎支持当今苛刻的数据处理环境所需的功能。数据库引擎充分保护数据完整性,同时将管理上千并发修改数据库的用户的开销减到最小。同时分布式事务支持充分保护任何分布式数据更新的完整性。
JSP是在普通的Html中嵌入了Java代码的一个脚本,它由JSP容器(如Tomcat)首先将其转化为Servlet,然后再调用Javac将Servlet编译为Class文件,最终,服务器解释的是Class文件。JSP是Sun公司J2EE架构中重要的部分。Tomcat是一个免费的开源Servlet容器。基于Tomcat的开发其时主要是JSP和Servlet的开发,而Tomcat短小精悍,配置方便,能满足需求,因此在这种情况下选择Tomcat。同时,Tomcat和Eclipse结合起来,加上hibernate 的框架实现本次毕业设计的要求。
根据用户的要求,系统采用B/S模式。B/S模式是三层体系结构,它将表示层、业务逻辑层层、数据服务层分布到不同的单元。表示层由浏览器和动态的Web页面构成,接收和处理用户的请求,并交给Web应用服务器。业务逻辑层对应于Web应用服务器,其业务逻辑处理过程使用数据源层的服务来得到必要的信息或存储、修改相应的数据。数据服务层对应于数据库服务器,数据库服务器实现对数据库的管理和库中数据的访问与增加、删除及修改。
2.1.2 经济可行性
本系统设计为一个基于浏览器的B/S结构项目,有着B/S结构工程的优势,维护性高,可移植性高,本系统可以随着店家业务的发展而扩展更多的功能模块,B/S架构的工程所需要的电脑配置也很随意,只要最低配置即可,所以在经济性上也是可行的。
2.1.2 操作可行性
影城管理系统开发的目的之一就是使顾客获取信息更快速更精确。
本系统通过去用户体验的调研,能符合国内用户的使用方法,只要会上网即会使用本系统。
综上所述,系统的开发在操作上是可行的。
2.2 开发工具
《基于SSH影城管理系统》的研究采用MYECLIPSE为开发工具,MYSQL为后台数据库。
(1)MYECLIPSE
MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,SQL,Hibernate。
在结构上,MyEclipse的特征可以被分为7类:
1. JavaEE模型
2. WEB开发工具
3. EJB开发工具
4. 应用程序服务器的连接器
5. JavaEE项目部署服务
6. 数据库服务
7. MyEclipse整合帮助
对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse6.0以前版本需先安装Eclipse。MyEclipse6.0以后版本安装时不需安装Eclipse。
(2)MYSQL
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
系统特性:
1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性
2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统
3.为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
4.支持多线程,充分利用CPU资源
5.优化的SQL查询算法,有效地提高查询速度
6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名
7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径
8.提供用于管理、检查、优化数据库操作的管理工具
9.可以处理拥有上千万条记录的大型数据库
10.支持多种存储引擎
应用环境:
与其他的大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,如规模小、功能有限(MySQL Cluster的功能和效率都相对比较差)等,但是这丝毫也没有减少它受欢迎的程度。对于一般的个人使用者和中小型企业来说,MySQL提供的功能已经绰绰有余,而且由于MySQL是开放源码软件,因此可以大大降低总体拥有成本。
2.3系统运行环境及其关键技术介绍
系统的硬件环境如下:
CPU:P4 1.8GHz;内存:256MB以上;分辨率:推荐使用1024*768像素;
系统的软件环境如下:
操作系统:Windows操作系统;数据库:MYSQL;开发工具包:MyEclipse6.5;服务器:tomcat6;浏览器:IE。
一 、JSP简介:
Java Server Pages(JSP)技术,已成为web软件开发者们最喜爱的工具. 通过JSP,开发者们设计动态网页时可以不必了解其他项目的知识. 同时,web开发者们可以用一个可扩展的标签机制去增强软件成分后台能力.
在延伸发展的过程中通过Java的一致性方法提供更多的支持,以发展支持多种语言的应用软件. Java Server Pages标准标签库规定,在其他的函数中,可以把标签定位成适合自己使用的格式.
由上可以看出,本文首先简短地介绍Java Server Pages的技术,这样可以你更好地了解如何利用这些去解决国际化的问题。稍后我讨论的几个关键问题在于发展基于多种语言web应用,并说明如何解决这些问题通过Java Server Pages:如编码的特性、格式和和对它的分析。
Java Server Pages(和一些相关的技术)的构成了web应用层. 通过JSP,设计者们在网络上能创造动态网页、交互、商业逻辑、数据库和其他一些服务. 网页开发者们利用的JSP技术是由HTML,XML或其他内容有静态XML式的标签,连接软件库的基本软件,以及典型的Java程序语言编写的. Java技术,尤其重要的是JavaBeans组件架构(作为通用JSP衔接Java的接口)、Java数据库连接(JDBC)连接SQL数据库,供各种XML库来处理. 编辑JSP本身就是把Java代码的编译成servlets执行. servlets是web服务器的扩展,现已编入相关的服务器,因此执行速度比Scripting语言快. Servlets直接地用Java语言进行编程并且和JSP页语言常常在一起使用,servlets充当管理员的角色而JSP作为应用程序的的视图. JavaServer和后台的servlet处理技术提供了广泛的支持和响应HTTP请求信息以及维修通过cookies或URL重写.
使用JSP技术的一个重要原因是,它使网页作者和应用开发工作者们分开. 当它是可以直接嵌入到JSP页声明Java时,开发者们已经认识到这是目前最好的选择,避免标签习惯.
Java Server Pages标准标签库 (JSTL)包含几个方面的习惯行为包括在JSP中常用的功能。标签库借鉴的经验,它的许多方面都取得了发展自己的库,并提供了标准接口,可以依赖的应用软件,他们独立于服务器运行.
除了传统的标签外,JSTL还引入了语言表达,这使在JSP页中进一步降低scripting语言表达,并且标签库有效地限制在JSP网页中使用scripting和标签库. 强化语言文字的表达,并能抑制scripting,已经被并入了JSP2.0规格,因此JSTL只有在JSP1.2中才需要使用只是它们.
传统的标签主要涉及的领域是:
择符合这些规定. 本可变操控: 在"核心"库中的一些行动让你定义变量在各种变数范围(页,请求,会议,和应用),除去它们,或使之成为新产生的一页.
流量控制: "核心"库中的一些行为提供基于流量控制结构--例如引起条件反应的和迭代器--必须消除scripting语言嵌入代码.
URL有关的行动: "核心"库中的一些行为,让JSP入口的内容界定URL,重写URL的形式从内部对外部形式(这可能包括收集资料,追踪信息),或以不同的方式网页.
XML处理: "XML"库的行为包括分解XML文件并且提取使用XPath表示,基于流量控制XPath表示,用XSLT格式来转换.进入相关数据库: "SQL"库的一些行为允许web应用程序去执行简单SQL查询和更新.在设计基于多种语言的web应用程序时,你必须首先决定如何确定用户的语言和喜好,如何选节首先介绍了web应用的外部环境和必须处理的条件.
二 、Servlet技术简介:
Servlet最早是作为Apache Jakarta项目的组成部分问世运作。项目的创立者希望通过对该项目的研究,改进和提高Java Server Pages、Servlet、标签库以及面向对象的技术水准。Servlet这个名字来源于在建筑和旧式飞机中使用的支持金属架。它的目的是为了减少在运用MVC设计模型来开发Web应用的时间。你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。
Servlet跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制。
除此之外,Servlet的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是JSP的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Servlet是一个很好的起点。
关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
MVC即Model-View-Controller的缩写,是一种常用的设计模式。MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。Struts 是MVC的一种实现,它将 Servlet和 JSP 标记(属于 J2EE 规范)用作实现的一部分。Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。Struts的工作原理,
三、 Struts体系结构简介:
struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。本章详细讨论struts架构。我们将看到struts是如何清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序过程的。我们还将介绍struts提供的类如何使得开发工作更加简单,这些类包括:
1、 控制程序流程的类
2 、实现和执行程序事务逻辑的类
让我们从MVC角度观察struts框架中的组件 框架中三个部分:模型,视窗和控制器。
系统的内部状态:
可以改变状态的操作(事务逻辑)内部状态通常由一组ActinForm JavaBean表示。根据设计或应用程序复杂度的不同,这些Bean可以是自包含的并具有持续的状态,或只在需要时才获得数据(从某个数据库)。大型应用程序通常在方法内部封装事务逻辑(操作),这些方法可以被拥有状态信息的bean调用。比如购物车bean,它拥有用户购买电影的信息,可能还有checkOut()方法用来检查用户的信用卡,并向仓库发定货信息。小型程序中,操作可能会被内嵌在Action类,它是struts框架中控制器角色的一部分。当逻辑简单时这个方法很适合。
建议用户将事务逻辑(要做什么)与Action类所扮演的角色(决定做什么)分开。视图由JSP建立,struts包含扩展自定义标签库,可以简化创建完全国际化用户界面的过程。struts中,基本的控制器组件是ActionServlet类中的实例servelt,实际使用的servlet在配置文件中由一组映射(由ActionMapping类进行描述)进行定义。
框架中所使用的组件:
1、 ActionServlet 控制器
2、 ActionClass 包含事务逻辑
3、 ActionForm 显示模块数据
4 、ActionMapping 帮助控制器将请求映射到操作
5、 ActionForward 用来指示操作转移的对象
6 、ActionError 用来存储和回收错误
7、 Struts标记库 可以减轻开发显示层次的工作
以下是Struts的MVC图:
解决企业应用开发的复杂性,使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ,任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
轻量从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。
控制反转Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。
面向切面 Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的——完成业务逻辑——仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。容器 Spring包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个bean如何被创建——基于一个可配置原型(prototype),你的bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring不应该被混同于传统的重量级的EJB容器,它们经常是庞大与笨重的,难以使用。 框架 Spring可以将简单的组件配置、组合成为复杂的应用。在Spring中,应用对象被声明式地组合,典型地是在一个XML文件里。Spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
所有Spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为Spring中的各种模块提供了基础支持。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。
Session接口 Session接口负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSesion对象称为用户session。SessionFactory接口 SessionFactory接口负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
Configuration接口 Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
Transaction接口 Transaction接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
Query和Criteria接口 Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
SSH 在J2EE项目中表示了3种框架,即 Spring + Struts +Hibernate。 Struts对Model,View和Controller都提供了对应的组件。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,可以应用在任何使用JDBC的场合,可以在Servlet/JSP的Web应用中使用,也可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Struts对Model,View和Controller都提供了对应的组件。
1、Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。
2、Model部分,由ActionForm和JavaBean组成,其中ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。 JavaBean则封装了底层的业务逻辑,包括数据库访问等。
3、View部分,该部分采用JSP实现。Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。
4、Controller组件,Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。系统核心控制器,对应上图的ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。
2.4 需求分析
2.4.1 功能需求分析
需求分析的基本任务是准确地回答“系统必须做什么?”,需求分析还不是确定系统怎样完成它的工作,而是确定系统必须完成哪些工作。需求分析的结果是系统开发的基础,关系到工程的成败和软件产品的质量。所以,一定要把握好需求分析这一阶段。本系统要求完成网上订购商品的功能,经过需求分析后,具体要求如下:
一、用户端
1、注册用户
2、浏览影片
3、查询影片
4、订购影票
5、修改个人资料
二、后台管理端
1、添加影片
2、修改影片信息(包括影片海报的管理)、删除影片
3、用户资料管理及用户管理
4、订单管理
2.4.2 用户角色需求
本管理软件操作简单主要针对于影院的系统管理员、管理人员以及售票人员使用。系统管理员、管理员以及售票员具有不同的操作权限。系统管理员即影院经理具有所有的操作权限管理员负责从上映的影片中删掉某部影片、添加即将上映的影片、查询某部影片的上座率以及财务收入。售票人员负责查找即将上映的影片信息、售票以及为顾客挑选满意座位。
2.4.3 性能需求
本管理系统软件可以使影院的管理更规范更合理解决用户购票时间过长、影院安排不合理以及统计不全等众多问题能够实现影院信息化的要求帮助管理人员利用计算机快速方便地进行数据管理的输入、输出、查询等所需操作使杂乱的数据可以具体化、直观化、合理化等提高管理人员的管理效率降低其劳动强度。另外操作界面简单美观具有提示操作功能不易发生简单的输入修改错误容易被人们接受。
第3章 概要设计
3.1 系统功能分析
影院票务管理系统是应用于影院的电子售票的系统,有前台客户操作和后台影院工作人员操作两大部分组成。
根据登录者身份的不同,系统用户分为管理员、会员,不同身份的用户具有不同的功能。系统功能模块图如图所示。
图3-1系统功能模块图
3.2 系统模块设计
根据结构化设计中模块的划分方法,即尽量把密切相关的子问题划归到同一个模块;把不相关的子问题划归到系统的不同模块。将系统划分为6个模块,下面将介绍每个模块的功能结构以及模块说明书。
3.2.1 用户模块
功能:用户信息的添加、修改、删除;用户登录,系统会验证正在登录的用户名、密码以及权限是否正确;添加新的管理员。模块说明书见表3-1
表3-1 在线注册模块说明书
模块名称:用户模块 |
说明:只有管理员可以添加用户和删除用户,管理员可以修改所有人的信息,普通用户只可以修改自己的信息;用户登录为指定的根据名字汉语拼音生成的用户名,初始密码为111111,登陆之后自行修改密码;忘记密码之后只能由管理员修改;添加新的管理员,只有管理员可以操作此项。 |
3.2.2 影片模块
- 功能:影片信息的添加、修改、删除,其中影片图片保存图片名称,图片由影院工作人员上传;评分与评论,顾客对此操作具有选择性,可以不进行;影片根据不同信息的展示,其中评分高低由客户的评分结果判断;由用户输入一串字符,系统根据符合演员或导演或片名任意一个条件进行查询。模块说明书见表3-2
表3-2 影片模块说明书
模块名称:影片模块 |
说明:包括影片基本信息的添加、修改、删除,这些功能由影院工作人员操作完成;包括影片的评分和评论,此功能由客户完成;包括影片选择项的展示,例如按照上映日期倒序展示,按照影片评分由高到低展示,这些功能有系统自动实现;包括符合演员或导演或主演一项和多项的条件查询,这个功能由客户的输入信息和系统的查询完成。 |
3.2.3 大厅模块
- 功能:大厅信息的添加、修改、删除,其中大厅图片保存图片名称,图片由影院工作人员上传;展示某个大厅的座位排列以及座位预定信息。模块说明书见表3-3
表3-3 大厅模块说明书
模块名称:大厅模块 |
说明:包括大厅基本信息的添加、修改、删除,这些功能由影院工作人员操作完成;包括大厅座位信息以图形界面展示,同时展示出座位预定情况,此功能由影院工作人员选择大厅之后由系统完成。 |
3.2.4 放映信息模块
- 功能:放映信息的添加、修改、删除;根据多个条件进行组合查询用于系统的判断和应用,条件由顾客输入。模块说明书见表3-4
表3-4 放映信息模块说明书
模块名称:放映信息模块 |
说明:包括放映信息基本信息的添加、修改、删除,这些功能由影院工作人员操作完成,其中每个大厅没两场的放映有15分钟的间隔,由系统来作出判断;包括根据大厅号和影片名以及自今天起往后三天之内的放映信息的查询,此功能需要客户选择大厅号、影片和日期三个条件之后由系统完成。 |
3.2.5 客户模块
- 功能:客户信息的添加、修改;根据密保问题和相应的密保答案修改密码或设置新的密码;登录时根据当前登录的客户邮箱和密码验证是否正确。客户模块说明书见表3-5
表3-5 客户模块说明书
模块名称:客户模块 |
说明:包括客户信息的添加、修改,其中添加由客户自行注册添加,修改信息由客户自行完成;客户忘记密码时可以根据密保问题与相应的密保答案设置新的密码;客户登录账号为客户注册时的邮箱。 |
3.2.6 订单模块
- 功能:订单信息的添加、修改、删除;对预订票的付款;根据多个条件进行组合查询用于系统的判断和应用,条件由系统自动获取;生成报表。客户模块说明书见表3-6
表3-6 订单模块说明书
模块名称:订单模块 |
说明:包括订单信息的添加、修改、删除,其中订单的增加为添加为付款的预售票订单的添加,修改为是否对预售票付款的修改,删除为对未付款的预售票订单删除,付款的预售票不可退票,以上功能均由登录的客户操作完成,未登录的客户不可操作;包括根据场次信息判断登录客户时候已经进行过添加订单操作,已经进行过添加订单操作的只能再次添加座位;包括根据不同的条件生成不同的报表,此功能由影院工作人员操作完成。 |
3.3 数据库设计
3.3.1 实体分析
根据系统分析,确定系统有以下几个实体:顾客,评分,大厅,电影,订单,报表,座位,放映信息,用户,共9个实体。
3.3.2 系统整体的E-R图
E-R分析:一个大厅有多个座位,每个座位只能属于一个大厅;一个大厅可以有多个放映信息,一个放映信息只能在一个大厅内;每个影片有多个放映信息,每个放映信息只有一个影片;每个影片有多个评分和评论,每个评分和评论只对应于一个影片;每个客户可以有多次评分和评论,每个评分和评论只对应于一个客户;每个客户可以有多个订单,每个订单只属于一个客户;每个订单可以生成多个报表,每个报表只属于一个订单;每个用户(工作人员)可以生成多个报表;每个报表只对应于一个用户。
图3-2系统的E-R图
3.3.3实体属性定义
- 用户(用户ID,用户名,用户密码,权限)
主键:用户ID
- 影片(影片ID,影片名字,影片图片,主演,导演,上映日期,语言,片长,类型,描述)
主键:影片ID
- 评分(影片ID,总分,平均分)
主键:影片ID
- 客户(客户ID,客户密码,邮箱,密保问题,密保答案)
主键:客户ID
- 订单(订单ID,客户ID,放映ID,座位ID,购买时间,付款,客户电话,验证码,银行账号)
主键:订单ID;外键:客户ID,放映ID,座位ID
- 放映信息(放映ID,影片ID,大厅ID,票价,开始时间)
主键:放映ID;外键:影片ID,大厅ID
- 大厅(大厅号,座位数,大厅图片,描述)
主键:大厅号
- 座位(座位ID,大厅ID,排数,列数,预定)
3.3.4 数据字典
数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序源数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。数据字典最重要的作用是作为分析阶段的工具。任何字典最重要的用途都是供人查询对不了解的条目的解释,在结构化分析中,数据字典的作用是给数据流图上每个成分加以定义和说明。换句话说,数据流图上所有的成分的定义和解释的文字集合就是数据字典,而且在数据字典中建立的一组严密一致的定义很有助于改进分析员和用户的通信。
- 后台数据字典:
管理请求:对系统基本信息设置的请求,系统根据请求加载相应的处理界面;影片基本信息:片名,图片,上映日期,时长,语言,主演,导演,类型,简介;查询条件(订单):【是否付款||片名,大厅,场次】;订单信息:片名,大厅,座位号,场次,客户电话,购买时间;大厅基本信息:图片,座位数,简介;场次基本信息:片名,大厅,票价,放映时间。
- 前台数据字典:
查看首页命令:发送加载首页命令,系统加载首页;查看大厅命令:发送加载大厅命令,系统加载大厅界面展示给客户;付款或我的订单命令:查看当前登录的客户的订单;订单信息:片名,大厅,座位号,价格,开始时间。
3.3.5 数据表设计
采用MYSQL数据库技术生成数据库物理模型,主要数据表有9个。
(1)messages(留言表)
结构如表3-8所示。
表3-8表messages的结构
字段名 | 数据类型 | 是否主键 | 描述 |
id | int | 是 | id |
saver | varchar(255) | 否 | 发布人 |
savetime | varchar(255) | 否 | 发布时间 |
[content] | varchar(255) | 否 | 发布内容 |
recontent | varchar(255) | 否 | 回复内容 |
(2)news(影城资讯表)
结构如表3-9所示。
表3-9表news的结构
字段名 | 数据类型 | 是否主键 | 描述 |
id | int | 是 | id |
title | varchar(255) | 否 | 标题 |
[content] | text | 否 | 内容 |
savetime | varchar(255) | 否 | 保存时间 |
infotype | varchar(255) | 否 | 信息类别 |
filename | varchar(255) | 否 | 相关图片 |
(3)pinlun(电影评论表)
结构如表3-10所示。
表3-10表pinlun的结构
字段名 | 数据类型 | 是否主键 | 描述 |
id | int | 是 | id |
saver | varchar(255) | 否 | 发布人 |
savetime | varchar(255) | 否 | 发布时间 |
[content] | varchar(255) | 否 | 内容 |
pid | varchar(255) | 否 | 电影ID |
infotype | varchar(255) | 否 | 信息类别 |
(4)pros(电影表)
结构如表3-11所示。
表3-11表pros的结构
字段名 | 数据类型 | 是否主键 | 描述 |
id | int | 是 | id |
proname | varchar(255) | 否 | 电影名称 |
price | varchar(255) | 否 | 价格 |
discount | varchar(255) | 否 | 折扣 |
filename | varchar(255) | 否 | 相关图片 |
bei | varchar(5000) | 否 | 电影说明 |
extbei | varchar(255) | 否 | 说明 |
status | varchar(255) | 否 | 状态 |
savetime | varchar(255) | 否 | 保存时间 |
cjnum | varchar(255) | 否 | 成交量 |
(5)pros(座位表)
结构如表3-12所示。
表3-12 表pros的结构
字段名 | 数据类型 | 是否主键 | 描述 |
id | int | 是 | id |
tglparentid | varchar(255) | 否 | 上级编号 |
datashowname | varchar(255) | 否 | 编号 |
(6)prosorder(订单表)
结构如表3-13所示。
表3-13表prosorder的结构
字段名 | 数据类型 | 是否主键 | 描述 |
id | int | 是 | id |
uname | varchar(255) | 否 | 发送人 |
savetime | varchar(255) | 否 | 发送时间 |
prosinfo | varchar(1000) | 否 | 订单信息 |
lc | varchar(255) | 否 | 楼层 |
ps | varchar(255) | 否 | 排数 |
zws | varchar(255) | 否 | 座位 |
cc | varchar(255) | 否 | 场次 |
status | varchar(255) | 否 | 订单状态 |
fkstatus | varchar(255) | 否 | 付款状态 |
(7)sysuser(用户表)
结构如表3-14所示。
表3-14 表sysuser的结构
字段名 | 数据类型 | 是否主键 | 描述 |
id | int | 是 | id |
uname | varchar(255) | 否 | 用户名 |
upass | varchar(255) | 否 | 登录密码 |
utype | varchar(255) | 否 | 用户类别 |
tname | varchar(255) | 否 | 姓名 |
sex | varchar(255) | 否 | 性别 |
age | varchar(255) | 否 | 年龄 |
tel | varchar(255) | 否 | 联系电话 |
addrs | varchar(255) | 否 | 地址 |
filename | varchar(255) | 否 | 头像 |
| varchar(255) | 否 | |
bei | varchar(255) | 否 | 说明 |
savetime | varchar(255) | 否 | 注册时间 |
(8)splb(电影类别表)
结构如表3-15所示。
表3-15 表splb的结构
字段名 | 数据类型 | 是否主键 | 描述 |
id | int | 是 | id |
pid | varchar(255) | 否 | 上级类别 |
lbname | varchar(255) | 否 | 类别名称 |
(9)yqlj(友情链接表)
结构如表3-16所示。
表3-16 表yqlj的结构
字段名 | 数据类型 | 是否主键 | 描述 |
id | int | 是 | id |
ljname | varchar(255) | 否 | 链接名称 |
ljurl | varchar(255) | 否 | 路径 |
filename | varchar(255) | 否 | 图片 |
第4章 详细设计与实现
4.1 前台设计
前台系统功能主要分为两大部分:影片相关功能、及会员服务相关功能。另一项
图4-1前台功能模块
- 影片相关功能:首页是提供近期热映影片以及即将上映影片的概况,可通过页面跳转进行对影片的详细查询。还有场次以及订票功能。同时提供场次表,可直接查询目前上映影片中的所有场次,方便观众不需要到现场查询每部影片的场次。另外提供进阶查询,可使观众了解每部影片的导演、主演、类型、剧情等资讯。
- 会员服务相关功能有会员登入、会员注册。会员登入以后可查询每部影片的场次,并在网上直接进行订票操作。该功能极大满足了观众自由选择座位的权利。
前台系统构架的设计是为了方便观众无需登录其他网站查询自己感兴趣的影片了解导演、主演、剧情等相关内容,也无需到影城现场咨询每部上映影片的场次表。通过该网上订票系统,观众可在家中轻松的进行所有操作,包括在线订票的功能。而且,观众在订票过程中出现某场次的座位已经订满或是没有自己想要的座位时,系统会出现“订票失败,可选择其它场次观看本部影片”的提示。以此来通知观众,降低了现场订票的失败率,同时也节约了观众到影城排队买票的时间。
这个设计还有益于影城售票人员,他们通过观众网上订票的操作可以快捷地掌握每场次的座位安排以及观众的信息,再根据影片各场次是否满座,在网上直接提示订票的观众。
4.2前台界面实现
1前台网上销售部分基于用户端为用户提供了一个简单、友好的购票界面,用户使用界面操作简便,从用户角度考虑的设计指导方针,无论用户想干什么,都有一个合适的地点等着他。用户可以方便的查询影片并订购影票,强大的查询功能,用户可以快捷的找到感兴趣的影片。每个用户注册后都有自己专用的订购,可随时订购自己满意的商品结账完成购票。用户可随时查看自己的订单,为用户创造了一个宽松的影城管理环境,以下将对具体功能模块进行介绍。
首页界面如下:
影城介绍,界面如下用户使用订购的功能与现实生活中在超市购物一样,即用户每次看到一件满意的商品就可以把它放到订购中,这样他在商场中逛完一圈,便选购了自己所有需要的商品,该网站提供的订购功能与此一样,用户可以在网上影院中把自己看到的觉得合适的影片都放到订购中,看完后,用户还可以检验订购中的影片,看到影片的所有信息,如果用户对订购中的某种影片不满意,可以将其从订购中删除,用户可以随心所欲的取舍订购中的影片,直到完全满意后进行支付。
2电影一览,界面如下
本界面主要显示了热门的电影信息和放映信息
图4-4 打折专区
4.3 后台数据管理部分
后台数据管理部分是管理员管理网站信息的窗口,在管理员身份验证后可以直接对数据库进行管理,包括商品影片管理、影片分类管理、用户管理、订单管理、售票情况管理、管理员维护及其他管理。后台的影片管理是管理商品流动以及影片在商店的存储。影片的流动处理过程严格的遵照实际的流程,并且提供友好的操作界面,让影院管理人员无需担心费力管理数量庞大的影片流动和存储。 管理系统功能需要影片的添加、删除、修改功能,能够实现价格的变动及影片分类、推荐与否的更改。分类管理就是对影片类别的管理,包括影片类别的添加、删除和修改。订单管理就是管理员对用户的订单进行管理,它对用户的订购信息做记录,并做出相应的处理(包括售票与否),也是一个非常重要的模块。售票情况管理是对已经售出的影票进行浏览和管理。管理员维护,就是对管理员就是有效的管理,包括管理员的添加和删除功能。
后台各项功能都是为了管理本系统所设计:
- 影片管理:主要用来管理影片资料库,管理排片,以及场次清单相关事宜。
- 其它管理:主要用来维护系统重要资料(如员工资料),或不经常变动的资料(例如馆区资料、各馆区座位表资料)。本功能之有本系统的最高权限账号(admin)才能使用,以免所有员工皆可修改系统重要资料,甚至可以更改其他员工的密码。
系统为管理员设置了一个初始密码,在管理员身份验证之后将进入系统管理界面,在这里管理员可以进行密码修改、表管理等操作。管理员在选中某一操作之后将进入相关页面。前台所销售商品所有数据,其来源都是后台所录入的数据。后台数据管理包括商品管理、用户管理、订单管理、信息管理及其他管理。
该功能模块层次图如图 所示:
图4-5后台功能模块
4.4后台界面
图4-6进行订单图
2查看历史订单如下:
3影城资讯,界面如下:
4留言板,界面如下:
第5章 系统测试
5.1 环境测试
在对于JSP程序进行调试时,首先需要一个WEB服务器,需要一个客户端,这样才能调试客户端和服务器端的程序。当然,如果只有一台计算机,可以通过访问本地的站点,进行调试。对于服务器版的Microsoft操作系统,Web服务器是标准的配置内容。对于Windows 2000 professional等个人系统,如果需要配置Web服务器,必须安装操作系统的扩展部分。
对于服务器版的Microsoft操作系统,由于对计算机硬件要求比较高,对于只是调试JSP程序,可以不进行配置。我们可以通过Windows98、Windows2000 professional 等个人系统,安装个人的web站点,对于JSP程序进行调试,这样可以节省部分资源,同时也使web程序的硬件平台降到了个人计算机能够满足的程度。
当用户安装了个人web服务器(PWS)或internet信息服务(IIS)后,该系统在操作系统启动后自动启动,使用户可以访问个人的网站,这时就可以使用服务器端的应用程序服务,调试 JSP应用程序和服务器端脚本了。
考虑到网上售票系统对测试系统的要求较高,所以在测试本系统选用windows 2000 server版的操作系统.建立站点是,需指定包含要发布的文档的目录。Web服务器无法发布未包含在指定目录中的文档。要计划web站点,必须首先确定如何组织发布目录中的文件。IIS的配置主要分为以下几个步骤:
IP地址是每台计算机的网络地址,IIS做为服务器管理软件,应该为其配置一个特定IP地址,作为访问的时的地址。系统默认的IP是127.0.0.1,设置IP地址时,右键点击“默认web站点”,选择“属性”,然后选择“web站点”即可设置IP和端口号。并可针对不同的虚拟目录配置不同的端口号。
右键单击“默认web站点”,选择“新建”,然后选择“虚拟目录” ,根据提示的各个选项即可设定指定物理地址的虚拟目录,包含在该虚拟目录中的文件即可在IIS上运行。
虚拟目录建立以后,需要对它的各个属性进行设置,包括访问的权限、应用程序设置、以及虚拟目录默认的首页。完成这些IIS的配置对JSP文件的顺利运行是不可或缺的。
5.2 软件测试
测试的目的就是在软件投入商业运行之前,尽可能多地发现软件中的错误,保证软件质量。软件测试,包括黑盒测试法和白盒测试法。黑盒测试法把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只是检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如,数据库或文件)的完整性。黑盒测试又称为功能测试。与黑盒测试法相反,白盒测试法的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。白盒测试又称为结构测试。
由于能力的局限性,所以编写的代码,即使经过反复检查也难免出错所以在本阶段力求使用有限的时间找出尽可能多的错误,力求系统尽量正确。在此阶段系统的大量错误得到了改正。即使经过了最严格的测试之后,仍然可能还有没被发现的错误潜藏在程序中。测试只能查找出程序中的错误,不能证明程序中没有错误。测试工作可以发现程序中存在的问题,正是在这不断发现问题和解决问题的过程中,使我对所开发的这个系统有了更深一步的了解,更加明白了测试工作在整个课题设计中的重要性。
经过严格的测试,本系统预期的功能都已全部实现。
5.3 测试用例
用例编号 | 操作步骤/测试数据 | 预期结果 | 实际结果/判定 |
001 | 点击登录按钮 | 提示输入用户名 | 提示输入用户名 |
002 | 输入用户名,点击登录按钮 | 提示输入密码 | 提示输入密码 |
003 | 输入正确用户名和密码 | 形同跳转到个人页面 | 显示个人信息 |
004 | 输入错误的用户名和密码 | 提示错误信息 | 弹出提示框 |
005 | 点击影片一览 | 跳转到影片浏览页面 | 跳转到影片浏览页面 |
006 | 点击影城介绍 | 跳转到本网站介绍页面 | 跳转到本网站介绍页面 |
007 | 点击打折专区 | 跳转到正在打折的电影页面 | 跳转到正在打折的电影页 |
008 | 点击热映电影 | 跳转到近期上映电影 | 跳转到近期上映电影 |
009 | 点击联系我们 | 显示联系人信息 | 显示联系人信息 |
010 | 点击留言板 | 显示留言页面 | 显示留言页面 |
011 | 点击影片分类 | 出现不同类的影片 | 显示不同类别影片 |
012 | 点击登录输入用户名 888密码888 | 进入个人信息页面 | 显示个人信息 |
013 | 点击个人信息 | 进入个人资料页面 | 显示个人资料 |
014 | 点击交易信息 | 显示交易明细 | 显示交易明细 |
015 | 点击历史交易 | 显示以往交易信息 | 显示以往交易信息 |
016 | 点击我要订票 | 提示座位信息 | 提示座位信息 |
017 | 点击确认购买 | 提示订票成功 | 显示购票成功 |
018 | 点击会员中心点击支付 | 弹出支付宝支付界面输入用户名密码 | 显示余额不足 |
019 | 点击会员中心点击支付 | 弹出支付宝支付界面输入用户名密码点击充值 | 友情链接打支付宝官网 |
表5-1测试用例表