
电影院是为观众放映电影的场所。电影在产生初期,是在咖啡厅、茶馆等场所放映的。随着电影的进步与发展,出现了专门为放映电影而建造的电影院。电影院必须满足电影放映的工艺要求,得到应有的良好视觉和听觉效果。
随着社会经济的快速发展,电子商务在世界范围内的社会生活节奏的加快,许多社会人士忙于工作等繁琐事务,每次想去影城观看电影都要经过现场查询最近热映的影片,每部影片的放映场次等信息,然后才能开始订票,而往往排队等候很长时间以后才发现自己要观看的那场影片的票已经售完,或是没有合适的观看座位。
人们的娱乐活动越来越丰富,人们看电影的热情也越来越高,大量的观众同一时间段来到电影院购票,致使影院人员工作量增加同时出现了买票难,浪费时间,浪费精力而且最终还一定买到自己想看的票等现象。这使得影院管理人员不得不多雇佣几个人来管理,这样的话就增加了成本,而且他们所做的工作不一定令人满意,可能还不安全。这时一套好的影城在线订票系统就可以解决所有问题,它不仅工作效率高,最重要的是它不仅可以连续工作且不收任何费用。此外安装了网吧管理系统后,可以通过设置权限、密码的方式来达到安全的目的。有了本系统,可以很方便的让影迷在家上网查看影院的影片及票务的信息,这样既省时又省力,可以同时了解到不同的影片信息,有更多的选择,从而影迷和影城双方都满意的结果。
利用互联网的便利性,使人们可以实时地在线选购自己需要的电影票券。这样避免了传统购票方式给人们带来的长途奔波、长时间排队的疲劳。其次,网上影院订票系统将人们实际的购票模式通过网络形象地模拟出来,人们在网上购票时如身临其境,能在任何时间选择自己所需的电影票券,这包括电影的种类、播放时间、座位等信息。它将传统的售票模式在网络上模拟出来,使人们可以足不出户地选购自己需要的各式票券,快捷、便利,符合现代人的快节奏生活方式。
通过网络轻松订票,从而减少许多因现场购票失败的客户,可促使我国电影事业更好更快的发展。
2 系统技术介绍
影城在线订票系统采用B/S模式开发,采用MyEclise作为开发工具,用Java、JavaScript、CSS语言和JSP技术等实现程序开发,用MySQL作为后台数据支持。以前对这些技术、工具及语言只是了解,对其内部的一些东西都不是很清楚现在有了更系统的认识。下面对这些技术进行详细的介绍。
2.1 B/S开发模式
B/S ( Browser/Server ) 结构,即浏览器和服务器结构。是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互。
2.1.1 B/S 的优点
B/S结构最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。甚至可以在线申请,通过公司内部的安全认证(如CA证书)后,不需要人的参与,系统可以自动分配给用户一个账号进入系统。
2.1.2 B/S 的缺点
个性化特点明显降低,无法实现具有个性化的功能要求。操作是以鼠标为最基本的操作方式,无法满足快速操作的要求。页面动态刷新,响应速度明显降低。无法实现分页显示,给数据库访问造成较大的压力。功能弱化,难以实现传统模式下的特殊功能要求。
2.2 MyEclipse 8.5 开发平台
本系统是采用MyEclipse 8.5为平台开发实现的。
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench,简称MyEclipse)是对Eclipse IDE的扩展,利用它可以在数据库和J2EE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML、Struts、JSP、CSS、JavaScript、Spring、SQL、Hibemate。
在结构上,MyEclipse的特征可以被分为7类:1)JavaEE模型;2)WEB开发工具;3)EJB开发工具;4)应用程序服务器的连接器;5)JavaEE项目部署服务;6)数据库服务;7)MyEclipse整合帮助;对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。
简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错。MyEclipse8.5该版本集成了 Eclipse 3.5.2,提升了团队协作开发、开发周期管理以及 Spring 和 Hibernate 的更好支持
2.3 MySQL 5.1数据库平台
本系统采用MySQL5.1作为数据库。
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库[1]。
MySQL拥有如下特点:
a)支持AIX、FreeBSd、HP.UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
b)为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
c)支持多线程,充分利用CPU资源。
d)优化的SQL查询算法,有效地提高查询速度。
e)既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_Jis等都可以用作数据表名和数据列名。
f)提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
g)提供用于管理、检查、优化数据库操作的管理工具。
h)可以处理拥有上千万条记录的大型数据库。
2.4 JSP简介
JSP是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页java程序片段可以操纵数据库、重新定向网页以及发送E.mail等,实现建立动态网站所需要的功能。所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,这样大大降低了对客户浏览器的要求,即使客户浏览器端不支持Java,也可以访问JSP网页。
JSP全名为java server page,其根本是一个简化的Servlet设计,实现了Html语法中的java扩张(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端[2]。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计的显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易[3]。 JSP(JavaServer Pages)是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。
JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成[4]。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。
自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。
3 需求分析
3.1 系统的需求分析
网上订票系统需要满足如下需求:
前台主要功能:
a)展示网站的影片信息,用户可进行浏览正在上映和即将上映的影片信息
b)可以根据不同条件查询本网上影院的影片场次时间
c)可以查看单部影片的详细信息和场次时间
d)选择影片和座位进行订票并得到订票信息,可在用户中心查看订票信息和进行退票操作
e)可在用户中心修改用户信息,登录密码和上传头像
后台主要功能
a)可对用户进行查询,添加,修改,删除的管理
b)可对影片进行查询,添加,修改,删除的管理
c)影片管理可添加新影片语言,类别,版本
d)可对场次进行查询,添加,修改,删除的管理
e)可对前台页面的广告进行广告以及友情链接信息进行维护和更换管理
f)可对管理员进行查询,添加,修改,删除的管理及管理员的权限管理
g)系统深入考虑数据操作效率和数据安全等因素
h)系统运行稳定,对不同权限有,安全可靠
3.2 功能需求
基于系统需求分析,网上影院订票系统分为前台和后台,下面分别对一些主要功能模块进行详细说明。
用户注册:游客可以通过注册功能注册新用户,成为会员。
用户信息修改:会员可以修改自己的基本信息。
用户登录:仅接受指定信息的用户登录,确保数据安全性.
网站浏览:负责分页列出网站所有影片的信息,包括标题、类型、来源字段及发布日期,每条影片的标题被做成一个超链接,点击它们就能跳转进入影片简介页面.
在线订票:会员用户可以通过在线订票功能,购买自己想要观看的影片的电影票。
影片介绍:在其他页面中点击标题链接即进入影片介绍页面,此时,每条影片介绍的详细信息将被取出,包括内容、标题、关键字等,并按照相对固定的格式放置在页面的不同区域,所有影片介绍使用大致相同的页面布局,只是各字段对应的内容不同而已.
影片查询:该模块提供了影片查询功能,输入待查找的内容及选定分类信息,可以快速地找到符合条件的影片,并输出查询结果.
影片管理:负责分页罗列显示的影片信息,管理者可以对该条影片信息进行删除.
用户管理:网站管理员可以初始化会员密码。
选座订票处理:用户可自选座位(一次订票最多4张票),确认订票信息,执行订票
管理员登录:通过管理员信息及验证码验证,将管理员信息临时储存在服务器中以便使用。
场次管理:可对场次进行录入操作,可通过场次时间范围对场次进行搜索操作,可对场次信息进行修改及删除操作
票务管理:可根据订单号查用户订票信息
广告管理:管理员可对前台页面的广告及连接地址进行更换
管理员管理:可对管理员进行添加操作,可对管理员进行查询操作,可对管理员进行修改及删除操作,可对管理员进行权限的管理
4 系统概要设计
4.1 系统实现方案
4.1.1 系统设计思想
影城在线订票系统主要完成影院票务管理及影片信息管理,包括影片的修改、添加、删除、场次管理等。另外系统还要能够管理影院管理人员的用户信息等。
当会员或者管理员系统登录系统时,程序分别从已有的会员账户表和管理员账户表中读出用户名和密码,并检验该密码与用户输入的密码是否匹配,只有用户名在数据库中存在并且密码正确时,才能进入系统。当需要完成会员信息的编辑和操作时,程序就将这些操作的信息写入到相应的数据表中。当管理员需要查询这些操作信息时,程序又从数据库中读出相应的操作信息。
4.2 系统结构设计
4.2.1 系统结构设计
影院订票网站分为前台和后台。其中,根据影院订票网站前台的特点,可以将其分为影片浏览、场次查询、选座订票、用户中心、我的订单、编辑个人信息、修改密码、订单查询、及网站广告,其中各个部分及其包括的具体功能模块如图4.1所示。
图4.1 系统前台模块
根据影院订票网站的特点,可以将其分为影片管理,场次管理,用户管理,广告管理,管理员管理,权限管理,其中各个部分及其包括的具体功能模块如图4.2所示。
图4.2系统后台模块
4.2.2 系统功能模块划分
根据上述的系统总体设计的分析,影城在线订票系统主要划分为以下几个模块:影片管理、场次管理、用户管理、票务管理、管理员管理、广告管理、管理员管理
下面对各个模块的一些主要功能模块进行介绍。
a) 用户登录、注册及注销
用户注册:用户邮箱格式与唯一验证,用户密码验证,验证码验证,可选是否30天内自动登录,并且将用户信息临时储存在服务器中以便使用。
用户登录:系统通过Cookie检验是否自动登录,并且将用户信息临时储存在服务器中以便使用。
用户注销:删除用户在服务器中的临时信息。
b) 影片信息浏览
用户可浏览正在热播与即将上映的影片
用户可查看影片的详细信息
c) 影片场次查询
可按照影片名查询场次
可按照时间段查询场次
可按照版本分类查询场次
d) 选座订票处理
用户可自选座位(一次订票最多4张票)
确认订票信息,执行订票
订票后,系统自动发送用户订票信息到用户邮箱
e) 用户中心
显示用户交易提醒和近期影片推荐
我的订单:显示我的电影订单,并可对可退票的订单进行退票操作;退票成功后,系统自动发送用户退票信息到用户邮箱
编辑个人信息:可对基本信息进行修改,也可修改用户头像
密码修改:可对用户密码进行修改
f) 管理员登录
通过管理员信息及验证码验证,将管理员信息临时储存在服务器中以便使用。
g) 影片管理
可对新片进行录入操作
可按影片名对影片进行搜索操作
可对影片信息进行修改及删除操作
可添加新影片语言,类别,版本
h) 场次管理
可对场次进行录入操作
可通过场次时间范围对场次进行搜索操作
可对场次信息进行修改及删除操作
i) 票务管理
可根据订单号查用户订票信息
j) 用户管理
可对用户进行添加操作
可通过用户名对用户进行搜索操作
可对用户信息进行修改及删除操作
k) 广告管理
管理员可对前台页面的广告及连接地址进行更换
l)管理员管理
可对管理员进行添加操作
可对管理员进行查询操作
可对管理员进行修改及删除操作
可对管理员进行权限的管理。
5 数据库设计
5.1 数据流图
i)面向用户的客户端系统流程
面向用户的客户端系统流程 如图5.1所示:
图5.1 面向用户的客户端系统流程
j)面向管理员的系统流程图
面向管理员的系统流程 如图5.2所示:
图5.2 面向管理员的系统流程
5.2 数据库概念结构设计
概念模型是数据库系统的核心和基础。由于各个机器上实现的DBMS软件都是基于某种数据模型的,但是在具体机器上实现的模型都有许多严格的。而现实应用环境是复杂多变的,如果把现实世界中的事物直接转换为机器中的对象,就非常不方便。因此,人们研究把现实世界中的事物抽象为不依赖与具体机器的信息结构,又接近人们的思维,并具有丰富语义的概念模型,然后再把概念模型转换为具体的机器上DBMS支持的数据模型[5]。概念模型的描述工具通常是使用E.R模型图。该模型不依赖于具体的硬件环境和DBMS。
概念结构是对现实世界的一种抽象。所谓抽象是对实际的人,物,事和概念进行人为处理,抽取所关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确的加以描述,这些概念组成了某种模型。通过概念设计得到的概念模型是从现实世界的角度对所要解决的问题的描述,不依赖于具体的硬件环境和DBMS
数据表关系图如图5.3所示:
图5.3数据表关系
5.3 数据库逻辑结构设计
根据数据库需求分析,本系统的数据表结构具体设计如下:
5.3.1 管理员信息表( admin)
管理员信息表主要用来保存管理员信息,包括字段用户名、密码、权限,主键为管理员ID。
结构如表5.1所示:
表5.1 管理员信息表
| 字段名 | 数据类型 | 是否为空 | 是否主键 | 默认值 | 描述 | 
| admin_id | INTEGER | No | Yes | Null | 管理员ID | 
| admin_name | VARCHAR(45) | No | 管理员登录用户名 | ||
| admin_pwd | VARCHAR(45) | No | 管理员登录密码 | ||
| admin_privilege | VARCHAR(45) | No | 管理员权限 | 
用户信息表主要用来保存用户信息包括字段邮箱、密码、姓名、电话、金额、性别、头像地址,主键为用户ID。结构如表5.2所示:
表5.2 用户信息表
| 字段名 | 数据类型 | 是否为空 | 是否主键 | 默认值 | 描述 | 
| member_id | INTEGER | No | Yes | Null | 用户ID | 
| member_email | VARCHAR(45) | No | 用户邮箱 | ||
| member_pwd | VARCHAR(45) | No | 用户密码 | ||
| member_name | VARCHAR(45) | Yes | Null | 用户姓名 | |
| member_phone | VARCHAR(20) | Yes | Null | 用户电话 | |
| member_money | DOUBLE | Yes | Null | 用户金额 | |
| member_gender | TINYINT(1) | Yes | Null | 用户性别 | |
| member_photo | VARCHAR(200) | Yes | Null | 用户头像地址 | 
影片版本信息表主要用来保存影片版本信息,包含影片版本主键影片版本ID。结构如表5.3所示:
表5.3 影片版本信息表
| 字段名 | 数据类型 | 是否为空 | 是否主键 | 默认值 | 描述 | 
| edition_id | INTEGER | No | Yes | Null | 影片版本ID | 
| edition_name | VARCHAR(45) | No | 影片版本名 | 
影片类别信息表主要用来保存影片类别信息,包含影片类别名主键影片类别ID。结构如表5.4所示:
表5.4 影片类别信息表
| 字段名 | 数据类型 | 是否为空 | 是否主键 | 默认值 | 描述 | 
| kind_id | INTEGER | No | Yes | Null | 影片类别ID | 
| kind _name | VARCHAR(45) | No | 影片类别名 | 
影片语言信息表主要用来保存影片语言信息。结构如表5.5所示:
表5.5 影片语言信息表
| 字段名 | 数据类型 | 是否为空 | 是否主键 | 默认值 | 描述 | 
| language_id | INTEGER | No | Yes | Null | 影片语言ID | 
| language _name | VARCHAR(45) | No | 影片语言名 | 
影片信息表主要用来保存影片信息,包含名称、导演、演员、信息、语言、类别、图片地址、片长、上映日期、版本。结构如表5.6所示:
表5.6 影片信息表
| 字段名 | 数据类型 | 是否为空 | 是否主键 | 默认值 | 描述 | 
| movie_id | INTEGER | No | Yes | Null | 影片ID | 
| movie_name | VARCHAR(45) | No | 影片名称 | ||
| movie_director | VARCHAR(45) | No | 影片导演 | ||
| movie_actor | VARCHAR(45) | No | 影片演员 | ||
| movie_info | VARCHAR(500) | No | 影片信息 | ||
| movie_language | INTEGER | No | 语言ID | ||
| movie_kind | INTEGER | No | 类别ID | ||
| movie_photo | VARCHAR(200) | No | 照片地址 | ||
| movie_long | INTEGER | No | 影片片长 | ||
| movie_date | TIMESTAMP | CURRENT_TIMESTAMP | 上映日期 | ||
| movie_edition | INTEGER | No | 影片版本 | 
影片场次信息表主要用来保存影片场次信息,包含影片ID、场次时间、场次价钱,主键为场次ID。结构如表5.7所示:
表5.7 影片场次信息表
| 字段名 | 数据类型 | 是否为空 | 是否主键 | 默认值 | 描述 | 
| play_id | INTEGER | No | Yes | Null | 场次ID | 
| play_movie | INTEGER | No | 影片ID | ||
| play_time | TIMESTAMP | CURRENT_TIMESTAMP | 场次时间 | ||
| play_price | DOUBLE | No | 场次价钱 | 
电影票信息表主要用来保存电影票信息,包含场次ID,用户ID,电影票号、座位号、实际票价、订票时间、退票标识,主键为电影票ID。结构如表5.8所示:
表5.8 电影票信息表
| 字段名 | 数据类型 | 是否为空 | 是否主键 | 默认值 | 描述 | 
| ticket_id | INTEGER | No | Yes | Null | 电影票ID | 
| ticket_play | INTEGER | No | 场次ID | ||
| ticket_member | INTEGER | No | 用户ID | ||
| ticket_code | VARCHAR(45) | No | 电影票号 | ||
| ticket_seat | INTEGER | No | 座位号 | ||
| ticket_price | DOUBLE | No | 实际票价 | ||
| ticket_date | TIMESTAMP | CURRENT_TIMESTAMP | 订票时间 | ||
| ticket_flag | TINYINT(1) | No | 退票标识 | 
广告信息表主要用来保存广告信息,包含图片地址、图片链接,主键为广告ID。结构如表5.9所示:
表5.9 广告信息表
| 字段名 | 数据类型 | 是否为空 | 是否主键 | 默认值 | 描述 | 
| ad_id | INTEGER | No | Yes | Null | 广告ID | 
| ad_img | VARCHAR(200) | No | 广告图片地址 | ||
| ad_href | VARCHAR(200) | No | 广告链接地址 | 
6 系统详细设计
系统详细设计的任务是在系统总体设计的指导下,对系统各组成部分进行细致具体的物理设计,使系统总体设计阶段所作的各种决定具体化。在电子商务网站详细设计阶段,主要完成如下工作:代码设计,界面设计,前后台的设计等。
6.1 网站首页
本网站首页简约大方,其作用是整体的展示了本电子商务网站的主题内容及影片的展示,布局简洁明了,易于用户订票。页面有好,在特效的渲染下,简洁而不失大气的首页给人留下炫丽的印象。首页分为上中下三部分,上部分是主导航栏,用户可以通过此处找到喜好的影片,继而订票。网站的LOGO呈动态滚动效果,更为画面添加了活力。中间部分分为主要影片展示及网站广告宣传,其中影片展示部分分为正在热播和即将上映的影片介绍。下部分是一些网站信息和使用帮助。
网站首页如图6.1所示:
6.1.1 头部导航栏
头部的导航栏可以进行登录注册的操作,更主要帮助用户根据自己的需求,快速找到自己喜好的影片及上映场次时刻表,动态滚动的LOGO设计让用户有一种耳目一新的感觉,通过js的Marquee动画效果滚动实现,当鼠标移到LOGO上时通过鼠标焦点当鼠标移动到LOGO上时调用document.getElementById(‘marquee’).stop()实现停止,鼠标移开调用document.getElementById(‘marquee’).start()再次实现滚动效果[6]。在LOGO旁边,用户可根据影片名找到当天上映的场次,进而进行购票。在展示本网站影片的同时能给用户留下新颖友好的印象,可谓一举两得。
头部导航栏如图6.2所示:
图6.1网站首页
图6.2 头部导航栏
6.1.2 中间部分
中间部分主要直观地展现本网站的正在热播和即将上映的影片。周围的广告展现对影片及对本网站的宣传作用。动态广告图片通过js脚本实现
动态广告如图6.3所示:
图6.3 动态广告
正在热播和即将上映的影片通过MovieDao的selectAll方法查询数据库里movie表中的数据进行动态显示。
正在热播和即将上映的影片如图6.4所示:
图6.4 正在热播及即将上映的影片
6.1.3 页面下面部分
页面下部是大多数电子商务网站常见的部分,用于显示一些网站的信息和反映网站中一些常见问题,进行一些超链接,链接其他的页面。
页面下部如图6.5所示:
图6.5 页面下部
6.1.4 正在热播和即将上映
电影展示页面主要展示了正在热播和即将上映的影片,通过JSON分页处理技术,每八部影片分为一页,展示每部影片的主要信息。用户可通过此功能进行购票操作。
影片分页展示如图6.6,图6.7所示:
图6.6 正在热播影片展示
图6.7 即将上映影片展示
6.1.5 放映时刻表
放映时刻表显示当天和明天要播放的影片的场次,用户可通过此路径查找想要观看的影片,从而进行订票。
用户可根据不同的日期,影片,时间,版本通过PlayDao中的selectByCondition()筛选影片场次,从而展示场次,提高了用户进行订票的效率,缩短了订票时间。
放映时刻表如图6.8所示:
6.1.6 单部影片详细展示页面
单部影片页面可通过首页,电影,上映时刻表页面点击相应影片连接到此页面。此页面通过影片ID查询数据库中movie和paly表中的信息,显示影片的详细介绍信息,包括影片海报、影片名、主演、导演、影片类型、片长、上映日期、剧情简介,上映的场次时刻,同时也可根据用户需要的不同日期,不同时间,不同版本进行筛选。
单部影片页面如图6.9所示:
图6.8 放映时刻表页面图及多条件选择
图6.9 单部影片详细展示
以上用户未登录时都可浏览,如果未登录时点击“我要购票”,通过session绑定判断从而页面自动跳转到登录页面,登录后会返回用户所选的场次进行订票操作。
6.2登录注册页面
6.2.1 登录模块
系统登录页面是网站中一个重要的模块。此模块主要功能是对用户的身份进行验证,并且将用户的部分信息储存在服务器上以便使用。登录页面包括账号、密码的验证,和30天内自动登录的设置。
系统登录界面如图6.10所示:
图6.10 登录界面
账号是用户注册时的邮箱地址,格式通过js语言的正则表达式进行验证,如果格式不正确,页面将会提示邮箱格式不正确信息。如图6.11所示:
图6.11 邮箱格式不正确提示信息
用户点击“登录”按钮之后会将表单提交到后台处理,后台从数据库中取值,检查用户名密码与数据库中信息是否匹配,如果匹配则成功则登录主界面并且将用户的信息储存到服务器的临时变量(session)中,在登录成功后系统将该用户的登录信息储存到服务器中,为其他功能服务,减少数据库查询次数,有效地提高了系统效率。
如果不匹配则登录失败,页面会有相应提示。此过程是通过AJAX技术,后台查询数据库,返回登录正确与否的信息至页面,对页面的进行局部刷新,提高了网站的运行效率。
登录失败如图6.12所示:
图6.12 登录失败提示信息
本网站登录模块,还设立了“30天内自动登录”的功能,运用Cookie技术,将用户信息保存在客户端,方便用户以后进入网站,免除了登录过程,提高了用户操作的便利性。
本系统考虑到安全性。采用了单点登录验证,在一个用户登录到登出的时间内,这个账号不能在除本机外任何机器上再次登录。此功能是通过在线列表(application)实现的,将已经登录的用户存放在一个List集合中[8]。如果这个集合中有某个用户的对象说明该用户已经在线,不可以再次登录,用户登录超时后或用户登出的时候在线列表会自动移除该用户的账号。重复登录时,系统会通过AJAX提示信息。
重复登录提示信息 如图6.13所示:
图6.13 重复登录提示信息
如果用户尚未注册成为本网站的用户,则可点击“立即注册”进行注册操作。
6.2.2 注册模块
注册页面包括电子邮箱,性别,密码,确认密码,验证码这几项,邮箱唯一性和验证码的正确性都是通过AJAX异步技术与后台进行交互,使页面局部刷新。邮箱的格式通过js脚本完成验证。填写信息不合法或有未填信息时,立即注册按钮为不可用状态,当注册信息全部填写正确后,立即注册按钮将为可用状态。
注册页面如图6.14所示:
图6.14 注册页面
6.3 选座订票页面
选座订票模块是本网站的核心模块,也是用户最终的目的所在。如图6.15所示,蓝色座位为可选的座位,紫色座位为已售出的座位,红色座位为用户选择的座位。通过数据库ticket表查询订票情况从而显示座位情况,页面下方有用户选择的座位号,通过js脚本及时显示。点击“重选座位”按钮会调用PalyAction中的showSeat方法从而进行数据库查询,刷新出最新的座位情况。点击“选好了,下一步”按钮,会跳转支付页面,在支付页面点击“确定”按钮完成支付即可。
图6.15 选座订票
为防止用户滥选,选票数量通过js脚本控制在一次购票数量最多选4张票,如图6.16所示:
图6.16 选座订票提示信息
6.3.1 订单模块
支付页面左侧显示用户选择的影片,场次,订票数量,座位信息,单张票价和总价,便于用户确认,确认后方可支付,
支付页面如图6.17所示:
图6.17 支付页面
6.4 用户中心页面
登录后,点击页面导航栏中的右上部的用户中心,即可进入用户中心,
登录导航如图6.18所示:
图6.18 登录后导航栏
6.4.1 用户中心
用户中心页面,上部是交易提醒,通过查询数据库ticket表显示出用户订票后还未播出的场次电影,下面是两部近期影片推荐
用户中心界面如图6.19所示:
图6.19 用户中心
6.4.2 我的订单
我的订单显示我的订单,用户可在此处进行退票处理,用户可在影片播放开始两小时前进行退票处理,退票通过ticket表中的ticket_flag标识,此处倒计时利用js脚本处理。
我的订单如图6.20所示:
图6.20 我的订单
6.4.3 编辑个人信息
编辑个人信息页面中,分为基本信息和修改头像,基本信息可修改用户名称,性别和电话号码,更新用户信息到member表中。
用户基本信息如图6.21所示:
图6.21 基本信息
修改头像通过struts.xml中的来控制上传头像的文件类型和大小,如图6.22所示:
图6.22 修改头像
6.4.4 修改密码
修改密码需要输入原密码,新密码和重复输入,原密码通过查询数据库得到用户的密码,在把新密码更新到数据库中,这样设计确保了用户的安全,如图6.23所示:
图6.23 修改密码
6.5 后台管理页面
管理员登录需要用户名,密码和验证码,如图6.24所示:
图6.24 管理员登录
管理员按“登录”按钮之后表单提交到后台进行处理,后台首先验证输入的验证码是否与系统产生的验证码相匹配,如果验证码匹配,则进行单点登录验证,确定此管理员除本机外未登录后,最后才进行数据库验证——后台从数据库取值,检查用户名密码匹配与否,如果匹配则成功登录主界面并且将管理员的信息储存到服务器的临时变量(session)中,如果不匹配则通过AJAX技术返回错误提示信息。
具体的流程是按顺序进行三层验证:验证码匹配验证、单点登录验证、数据库验证。
本系统考虑到系统的安全性。采用了单点登录验证,在一个管理员登录到登出的时间内,这个账号不能在其他机器上再次登录。此功能是通过在线列表(application)实现的,将已经登录的管理员放入一个List集合中。如果这个集合中有某个管理员的对象则说明该管理员已经在线,不可以再次登录,管理员登出的时候在线列表会自动移除该用户的账号。
在登录成功后系统将该用户的登录信息储存到服务器中,为系统的其他功能服务,减少数据库查询次数,有效地提高了系统效率。
6.5.1 影片管理
后台影片管理以分页显示库存影片,可模糊查询、删除、修改和添加影片,模糊查询通过数据库like关键字进行匹配,通过影片ID进行删除,修改操作。
影片管理如图6.25所示:
图6.25 后台影片管理
添加影片语言、类型、版本通过hedden属性实现隐藏和显示,添加影片包括影片的片名、导演、主演、语言、类型、版本、简介等信息。添加影片如图6.26所示:
图6.26 后台添加影片
修改影片通过从数据movie和paly表中提取数据显示到页面,可以对影片的所有信息进行修改。
修改影片如图6.27所示:
图6.27 后台修改影片
6.5.2 场次管理
后台影片管理以分页显示库存场次,可按时间段查询,通过对paly表中数据进行修改可进行删除,修改,添加场次的管理,如图6.28所示:
图6.28 后台场次管理
场次录入中的影片通过数据库movie表中的数据动态生成下拉框选项。
场次录入如图6.29所示:
图6.29 后台场次录入
修改场次如图6.30所示,在右侧有“修改该影片信息”的链接,管理员也可通过此页面进入修改影片的页面,从而修改场次时间、票价。这样设计十分人性化。
图6.30 后台修改场次
6.5.3 用户管理
后台用户管理以分页显示用户信息,可模糊查询,可删除,可修改,可添加用户。
用户添加如图6.31所示:
图6.31 后台添加用户
用户管理如图6.32所示:
图6.32 后台用户管理
修改用户如图6.33所示:
图6.33 后台修改用户
6.5.4 票务管理
后台票务管理可以根据订单号查找相应的票务信息,如图6.34所示:
图6.34 后台订单管理
6.5.6 广告管理
后台广告管理可以修改网站LOGO,静态广告,动态广告,以及对应的链接地址,通过存储图片地址到数据库中从而进行广告的更新操作。
首页LOGO如图6.35所示:
图6.35 后台广告管理
6.5.7 管理员管理
管理员管理模块是本系统提供的对所有管理员进行管理(包括添加、删除、修改、查询和设置权限等)的功能模块。
后台管理员管理显示所有管理员的信息,可以添加,删除,修改管理员的信息,包括管理员的权限,如图6.36所示:
图6.36 后台管理员管理
管理员添加,包括管理员登录名,管理员密码,管理员权限,“重置”按钮和“确认保存”按钮和填写校验。管理员权限包括影片管理,场次管理,用户管理,广告管理,管理员管理,有权限的管理员可以为管理员进行权限的分配,
添加管理员如图6.37所示:
图6.37 后台添加管理员
管理员添加时,有相关验证,其中管理员的登录名不可重复,否则会有相应提示。该验证是通过AJAX后台验证,如图6.38所示:
图6.38 后台添加管理员验证
管理员修改如图6.39所示:
图6.39 后台修改管理员
6.5.8 分权限管理
此模块也是本后台系统的一个特色模块,由于不同管理员应该具有不同的管理权限,我们为数据库中的管理员表添加了一个权限(privilege)字段,该字段用来保存管理员拥有的权限。分权限管理功能结合了过滤器、、JSTL标签等多方面的知识点,使各级管理员分管不同的功能模块,同时也保证了后台系统的高效、安全性。
6.6
6.6.1 过滤所有action
在完成了标签页的分权限显示后,管理员已经无法直接从页面中访问不属于他(她)权限范围内的功能,看似比较安全的后台机制其实还隐含着巨大的安全漏洞[9]。管理员依然能够通过在地址栏里输入action的地址来访问不在自己权限范围内的功能,这就使之前通过前端页面设置的分权限功能完全失去了其作用。解决此问题的方法是加入一个自定义结合默认的堆栈,拦截所有要求访问的action,执行的操作是验证该管理员是否具有访问此action的权限,若有则放行,若无则跳转到登录页面。6.6.2 过滤所有jsp
在完成了之前的标签页分权限显示及拦截所有action后,看似系统分权限管理功能已经很完善了,但新的问题又出现了。一个管理员如果在地址栏里输入不在他(她)权限范围内的jsp页面,仍然能够进行访问,原因是并没有对jsp页面进行过滤。解决此问题的方法是为后台的所有jsp页面配置一个过滤器,该过滤器执行的操作为:拦截所有的jsp页面,根据管理员所拥有的权限判断其是否拥有访问该jsp页面的权利。若有则放行,若无则跳转到一个提示无权访问的页面。
结 论
本文分析了网上影院订票系统的总体结构和功能,建立了系统的逻辑模型和物理模型,本系统是采用SSH框架运用MySQL5.1数据库,JAVA程序语言和MyEclipse8.5平台开发实现的,具有操作简单、界面友好、系统安全性高等特点,可大大方便消费者在线订票及管理者的管理,更有利于改进工作方式,提高企业的管理水平。整个系统划分为前台用户模块的管理,商品浏览模块,影片搜索模块,选座订票模块,后台的影片管理,场次管理,用户管理,广告管理。讨论了这些模块的功能以及相互之间的联系。系统功能符合网上影院订票需求,能够通过增删改操作数据库以及各种条件下的查询数据完成所有的业务需求,以方便管理者对网上影院订票的管理和了解。在开发中为求系统的高效、稳定以及功能人性化,除了通过大量的调查修改了需求分析,还有就是在代码实现中秉承简洁高效的算法,进行了大量的模块测试和集成测试。
但是此系统也存在瑕疵,由于毕业设计时间较短,需求分析做得不够完善,该系统还有许多不尽如人意的地方。例如对系统的功能考虑的还不完善,操作起来也没有达到十分简易的要求等等。这些都有待进一步完善,敬请各位领导和老师批评指正。
致 谢
经过半年的忙碌和工作,本次毕业设计已经接近尾声,我作为一个本科生,因为经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督导,想要完成本次设计简直难以想象。
在这里首先要感谢我的导师马红霞老师的亲切关怀和悉心指导,她严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。她对我进行了无私的指导和帮助,不厌其烦的帮助进行论文的修改和改进。马红霞老师不仅在学业上给我以精心指导,同时还在思想、生活上给我以无微不至的关怀,在此谨向马红霞老师致以诚挚的谢意和崇高的敬意。
在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!最后我还要感谢培养我长大含辛茹苦的父母,谢谢你们!
最后,再次对关心、帮助我的老师和同学表示衷心地感谢!
参 考 文 献
1刘增杰. MySQL5.5从零开始学.北京:清华大学出版社,2012
2宋智军.JSP从入门到精通(第二版).北京:电子工业出版社,2012
3梁勇. Java语言程序设计(基础篇) .北京:机械工业出版社,2011
4沈大林,魏雪英等 JSP 2.0动态网站设计案例教程.北京:中国铁道出版社2011
5雷军.Tomcat+mySQL搭建简单毕业证书查询系统.科技视界,2012(25):183~185
6孙鑫. Java Web开发详解. 北京:电子工业出版社 2012
7李兴华. Java Web开发实战经典.北京:清华大学出版社,2010
8赖尔.Head First Ajax(文版).北京:中国电力出版社,2010
9谭云杰.大象——Thinking in UML(第二版).北京:水利水电出版社,2012
10麦卡劳.基于MVC对的JavaScript WEB福应用开发.北京:电子工业出版社,2012
11John Hebeler.Web 3.0与Semantic Web编程.北京:清华大学出版社,2010
12Kevin Lano . Model.Driven Software Development With UML and Java. Course Technology,2011
13范新灿.基于Struts、Hibernate、Spring架构的WEB应用开发.北京:电子工业大学出版社,2011
14杨晓军. MVC Web开发学习实录 ,北京:清华大学出版社,2011
15(美)克尼亚万.深入剖析Tomcat,北京:机械工业出版社,2012
