基于Web的影院信息管理系统的设计与实现毕业论文_第1页
基于Web的影院信息管理系统的设计与实现毕业论文_第2页
基于Web的影院信息管理系统的设计与实现毕业论文_第3页
基于Web的影院信息管理系统的设计与实现毕业论文_第4页
基于Web的影院信息管理系统的设计与实现毕业论文_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目目 录录 1 1 绪论绪论 .1 1 1.1 研究背景及研究意义.1 1.2 研究内容.1 1.3 论文结构.2 2 2 系统开发工具与相关技术介绍系统开发工具与相关技术介绍 .3 3 2.1 JSF 技术 .3 2.2 PrimeFaces.3 2.3 MyEclipse.4 2.4 MySQL.4 2.5 Java 语言 .4 3 3 需求分析需求分析 .5 5 3.1 系统功能需求分析.5 3.1.1 普通用户功能 .5 3.1.2 管理员功能 .6 3. 2 系统数据库分析.7 3.2.1 数据库物理建模分析 .7 3.2.2 实体表详细分析 .7 3. 3 系统结构分析.10 3.

2、3.1 系统功能结构分析 .10 3.3.2 系统逻辑结构分析 .10 4 4 系统详细设计系统详细设计 .1212 4.1 普通用户功能的设计.12 4.1.1 用户注册/登录功能 .12 4.1.2 查找电影功能 .14 4.1.3 电影投票功能 .14 4.1.4 添加影评功能 .15 4.1.5 礼品兑换功能 .15 4.1.5 用户订/退功能 .16 本本 科科 毕毕 业业 论论 文文 4.2 管理员功能的设计 .17 4.2.1 管理员登录功能 .18 4.2.2 电影信息管理功能 .18 4.2.3 用户信息管理功能 .19 4.2.4 礼品管理功能 .21 4.3 主要界面设计

3、.22 4.3.1 主页设计 .22 4.3.2 电影详情页面设计 .23 4.4 关键问题及解决方案.23 5 5 系统的实现系统的实现.2727 5.1 系统开发以及运行环境 .27 5.2 面向普通用户的系统功能 .27 5.2.1 系统主页功能 .27 5.2.2 用户注册/登录功能 .28 5.2.3 查找电影功能 .29 5.2.4 查看全部电影功能 .29 5.2.4 查看电影排名功能 .32 5.2.5 投票功能 .32 5.3 面向管理员的系统功能 .32 5.3.1 管理员主页 .32 5.3.2 电影信息管理功能 .33 5.3.3 用户信息管理功能 .35 5.3.4

4、礼品管理功能 .37 结结 论论 .3939 致致 谢谢 .4040 参参 考考 文文 献献 .4141 第 1 页 共 46 页 1 1 绪论绪论 随着经济的发展,人们生活质量提高了,娱乐方式也日新月异。电影不再是“奢 侈品” ,而是人们日常生活中休闲娱乐必备的商业产物。在这个网络信息化浓厚的时代, 网络成为主要的通讯手段。当代网络如此发达,也有不少基于 Web 的电影院网站,如 深圳太阳数码影城、Mtime 时光网、58 影院等。他们多用 JSP 实现动态网站制作。JSP 将网页的设计同网页的后台逻辑分离,是支持可重用的基于组件的设计。但是 JSP 的 组件不够丰富,要实现特殊功能的控件,

5、如用户打分的可拖拉五角星打分条,没有现 成的组件,编写制作起来非常复杂麻烦。虽然 JSP 简化了编程开发,但在复杂逻辑中 还是要编写很多代码,开发人员的学习负担也不断加重。JavaServer Faces(JSF)框架 可以很好的解决以上问题,它提供全新的,动态的标签库,且组件丰富多样,组件可 以同托管 Bean 绑定,进一步简化了代码编写,减少了代码量。利用 JSF 能制作出饱满 的页面,且支持拖拽功能,非常方便。因此本系统要使用 JSF 框架,利用发达的网络 技术,构建起一个基于 Web 的影院信息管理系统。 1.11.1 研究背景及研究意义研究背景及研究意义 信息时代的今天,我们感受到计

6、算机科学日新月异的气息日渐膨胀。如此,信息 的传播途径与传递方式也随之丰富多彩。发展日渐成熟的计算机网络承载着大量信息 的流通任务,人们的生活也越来越依靠网络。在日常娱乐商品中,电影成为丰富精神 生活的佳品。而如今信息流逝太快,传统媒体不能对影院起到较高效的宣传与展示, 电影文化只存在于纸张和胶片中使其传播力度受到局限。由此一来,人们不易在第一 时间获知影院动态,许多精彩的电影信息得不到广泛交流,得不到有效的定格,人们 想要了解详细的、日志性的影院信息可能也无从下手。我们要利用发达的网络,利用 时新的技术,构建起一个基于 Web 的影院信息管理系统。这样,各大影院就可以合理 规划电影信息,展示

7、影院文化,与客户做好充分交流,让用户感受到实时信息,使影 院运营的更加流畅,获取更好的经济效益。 1.21.2 研究内容研究内容 该系统主要面向普通用户和管理员两种人群。对于普通用户可实现注册/登录功能、 积分获取功能、查找站内电影功能(多条件查找) 、浏览影院电影信息功能、添加影评 功能、电影投票功能、订/退票功能、兑换礼品功能;管理员可实现注册/登录功能、更 新电影信息功能、据用户投票进行电影排名功能、更新展示的礼品功能、管理用户功 能。 第 2 页 共 46 页 该系统使用了新框架 JavaServer Faces 2.0,使用的开发语言为 Java 语言,开发工 具采用的是 MyEcl

8、ipse10.0,采用 Tomcat7.0 作为 Web 服务器,采用 MySQL 作为数据 库。 1.31.3 论文结构论文结构 本文首先对实现系统所有的技术和工具进行了介绍(第二章) ;其次对系统需求进 行了详细的分析(第三章) ;再次,本文对系统的详细设计与实现,以及所遇到的关键 问题及解决方案做了详细的阐述(第四章) ;最后对系统实现效果进行了展示(第五章) 。 第 3 页 共 46 页 2 2 系统开发工具与相关技术介绍系统开发工具与相关技术介绍 本系统使用 JSF2.0 技术,PrimeFaces3.5 参考实作,MyEclipse10.0 开发环境, MySQL 数据库,Tomc

9、at7.0 服务器。 2.12.1 JSFJSF 技术技术 JavaServerFaces(JSF)是一个新的,基于 Java 的标准框架。它为 Web 应用程序 提供了用户接口,而且它化简了用户接口的应用。也就是说,JSF 提供了一种以组件为 中心的用户界面(UI)构建方法1,不管是前台页面设计人员还是后台程序开发人员,都 可以使用 JSF 独立地完成自己涉及的模块,前台与后台得到了有效地分离,大大减小 了耦合度。JSF2.0 内置于 Facelets 提供的先进模板,与 Ajax 更完美地结合;它提供了 复合多种功能的组件,只需将组件的功能属性启动,就可以非常简便的使用该功能; 它整合了

10、Bean 的验证,改进了验证规范2。JSF 有很多用于提高其 Web 应用程序的类 库,如 PrimeFaces,MyFaces 等,本系统使用了 PrimeFaces 类库。 MVC 是常用的设计模式,本系统使用了 JSF 来实现。MVC 是 Model-View- Controller 的简称,即模型视图控制器3。使用 JSF 实现视图层,使页面更加独特 美观,它解决了网页设计的静态性与程序设计的动态性间的矛盾,使设计更加方便简 洁。JSF 提供了一组新的动态的标签,它与后台动态程序相连接。JSF 框架自带的 Servlet 担任了 MVC 中的控制器,而后台 Bean 实现了模型层。JS

11、F 实现了视图和业务 逻辑代码的完全分离,完全遵循 MVC2 模式4。 那么在JSF中是怎样实现前台与后台的联系,利用什么来管理资源的呢?这就是托 管Bean。在Java编程语言中,一个托管Bean(Managed Bean)就是一个Java对象。定义 了托管Bean,就不需再手动实例化类对象了。托管Bean代表了一种可管理的资源,比 如一个组件,一个台设备,一个服务类。托管Bean具有惰性初始化的性质,仅当在运 行时间内应用程序需要它时,容器才将它初始化,也就是说,在JSF 架构中, 后台处 理Bean 交由JSF容器进行管理。配置文件为faces-config.xml,Bean 对象的生命

12、周期可 以为null: 用时才生成5。任何Java公共类,任何无参的构造函数都能做托管 Bean,List和Map对象也可以2。 2.22.2 PrimeFacesPrimeFaces Primefaces是JSF的参考实例。它提供了丰富的组件,内置于Ajax,基于JSF2.0标准。 它是轻组件库,只有一个jar文件,无需配置,没有必要的依附体,是页面表现的更生 动,倍受程序开发者的青睐。PrimeFaces提供了局部页面呈现功能,这就可以选择在一 个JSF生命周期中要运行什么,最后要同Ajax返回什么数据。JSF的原稿基于jQuery和 第 4 页 共 46 页 JavaScript6。Pr

13、imeFaces提高了JSF Web应用程序开发的效率,它主要由三个模块构成, 即UI模块,Optimus模块和FacesTrace模块。UI提供的组件支持通过Ajax更新页面。 Optimus模块简化了JSF的开发,FacesTrace模块提供的各种工具能够JSF Web应用程序, 可查看JSF生命周期,进行性能跟踪查看,监听页面信息等。 2.32.3 MyEclipseMyEclipse 本系统使用My Eclipse10.0开发平台。Myeclipse 是Eclipse 支持下的J2EE开发插件, 功能十分完善,具备了完备的编码、调试、测试和发布等功能并且完整支持 HTML、Struts

14、、JSF、CSS、JSP、SQL、Hibernate、Spring 等技术。Myeclipse 插件基 本上涵盖了众多Eclipse 插件的功能,能满足我们的各种应用需求,基本上安装了它就 无须其它任何插件7。用Genuitec公司的集成开发环境MyEclipse做开发,人机界面良好、 交互性好、实时性强、移植性强,经过实际运行检验,证实了该系统操作简便,响应 快,通用性、灵活性和安全性好8,能够明显提影院信息管理的效率。 2.42.4 MySQLMySQL MySQL 是由瑞典MySQL AB 公司开发的一个开放源码的小型关联式数据库管理 系统,由于其体积小、速度快、总体拥有成本低被广泛地应

15、用在Internet 上的中小型网 站开发中,目前通过JDBC 连接MySQL 一般采用两种方式:JDBC-ODBC 连接桥方式 和纯Java 驱动程序直接连接的方式9。JDBC(Java Data Base Connectivity)是基于中 间件平台的一种数据库访问技术,他能够很好的与ODBC(Open DataBase Connectivity)结合,具有可移植性、平台无关性10。要通过JDBC 访问MySQL,需要 下载JDBC 驱动程序。通过DriverManager 类的getConnection 方法可以建立连接11。 数据库中数据的丢失,若无法通过软件等途径恢复,则会致使业务无

16、法进行12。 所以数据库的备份是非常重要的。MySQL可通过Mysqldump、客户端管理工具、直接 拷贝、日志进行备份。 2.52.5 JavaJava 语言语言 Java 语言是一种纯面向对象的编程语言。它主要的特性是面向对象,可移植性, 多线程,动态性。面向对象所具有的封装性,继承性,多态性等特点使其具有强大的 生命力15。.java 文件中存放了 Java 源程序,它经 javac 命令编译后就生成了相应的. class 文件。 第 5 页 共 46 页 3 3 需求分析需求分析 所谓好的开始是成功的一半,在启动一个项目前需求分析是必不可少的也是至关 重要的一步。我们要对准启动项目进行

17、数据采集,分析预计实现的功能及功能的可行 性,对系统结构进行搭建,对数据对象进行物理建模,对其存储方式、存储结构、依 赖关系进行缜密的揣测定夺。 3.13.1 系统功能需求分析系统功能需求分析 基于 Web 的影院信息管理系统面向两种用户,即普通用户和管理员。普通用户为 影院的大众客户,通过该系统与影院进行信息交流;管理员则是对系统的数据进行管 理,主要是对数据的修改,添加和修改。 下面对面向普通用户功能和面向管理员功能进行具体分析。 3.1.1 普通用户功能 普通用户功能用例图建模分析如图 3.1 所示。 图 3.1 普通用户功能用例建模分析图 a普通用户注册功能:用户输入用户名及密码后,注

18、册成功后方可登录。未经注 册登录者,系统予以提示,并拒绝本次登录。普通用户身份代码为“0”。 b普通用户登录功能:对已注册用户经行用户名与密码的匹配验证。验证通过后 方可登录成功。 c积分获取功能:用户注册成功后自动获取相应积分(本系统为 30 分) 。订票成 功后会获取相应积分(本系统为 10 分) ,退票后收回所获积分。积分可换取礼品。 第 6 页 共 46 页 d添加影评功能:用户可对电影进行评价,打分。 e电影投票功能:用户可选择进入投票页面,对电影进行投票。 f订票功能:用户登录成功后可订电影票,根据座位图选择座位号,订票成功后 返回订单号。 g退票功能:登录后可查看订单信息,在订单

19、生产后 24 小时内可退订。 h查找电影功能:用户可根据电影名称,电影效果(是否为 3D 电影) ,上映日期, 观看日期,电影分类查找站内电影。 i浏览网站功能:用户无需登录,可查看近期上映电影信息,站内电影列表,电 影详细信息等页面,但如果要实现登录后才有的功能,若尚未登录,系统会予以提示。 3.1.2 管理员功能 管理员功能用例图建模分析如图 3.2 所示。 图 3.2 管理员功能用例建模分析图 a管理员登录功能:管理员已添加到数据库中,身份代码为“1”。管理员无注册功 能,新的管理与由已有管理员进行添加(见更新用户功能) 。登录时,系统根据身份代 码验证身份,同时验证用户名和密码是否匹配

20、,可报错。登录成功后进行相应操作。 b更新电影信息功能:可添加/删除电影;修改电影信息:电影名称,上映时间, 电影简介,电影效果,海报。 c更新礼品信息:对用户积分可换取的礼品进行添加,删除。 d发布电影排榜功能:根据用户投票对电影进行热度排名,将排名列表公布。 第 7 页 共 46 页 e更新用户功能:总管理员(身份代码为“1”)可添加新管理员和普通用户,新管理 员属于二级管理员,身份代码为“2”。只有总管理员才能删除二级管理员和普通用户。 f普通用户功能:管理员登录后拥有普通用户的多有功能。 3.3. 2 2 系统数据库分析系统数据库分析 本系统设计到的实体表有:用户信息表、电影信息表、电

21、影分类表、影评表、礼 品信息表、影院座位表、订单表、礼品兑换单表。 3.2.1 数据库物理建模分析 系统数据库物理建模如图 3.3 所示。 userinform film gift criticism filmcategory subscrib giftexchange allseat N : 1 外外键键:userId 1:N 外键:giftId N:1 外键:userId N:1 外键:filmId N:1 外键:filmId N : N 图 3.3 数据库物理建模 userinform(用户信息表)与 gift(礼品表)通过 giftexchange(礼品兑换单表)关 联起来;useri

22、nform 与 film(电影信息表)通过 subscribe(订单表)关联起来;film 与 criticism(评论表)为 N:1 的关系;film 与 filmcategory(电影分类表)为 N:N 的关系; allseat 为座位表,存储影院多有座位号,与其他表没有关联。 3.2.2 实体表详细分析 auserinform 为用户信息表。它记录了用户名(userName) ,用户密码 (passWord) ,身份编码(ustatus,标记普通用户和管理员级别) ,用户编号(userId) , 用户积分(uscore) 。用户信息表如表 3.1 所示。 bfilm 为电影信息表。它记录

23、了电影名称(filmName) ,电影编号(filmId) ,电影 效果(is3D) ,电影海报(filmPicture) ,电影简介(filmDescribe) ,电影得分 (filmScore) ,所得投票数(vote) ,上映时间(filmTime) ,播出时间(showTime) ,电 第 8 页 共 46 页 影分类(category1,category2,category3) ,余票数(ticketCount) 。电影信息表如表 3.2 所示。 表 3.1 用户信息表 字段名称字段类型主键外键是否为空默认值 userId int(11) 是否 userNamevarchar(10)

24、否 passWordvarchar(15)否 ustatusint(1)否 uscoreint(10)unsigned是 表 3.2 电影信息表 字段名称字段类型主键外键是否为空默认值 filmIdint(11) 是否 filmNamevarchar(20)是NULL Is3Dvarchar(5)是NULL filmDescribetext 是NULL filmPicturevarchar(20)是NULL category1varchar(10)是NULL category2varchar(10)是NULL category3varchar(10)是NULL filmTimevarchar(

25、20)是NULL showTimevarchar(100)是NULL voteint(11)是NULL filmScoreint(11) 是NULL ticketCountint(11)是NULL cfilmcategory 为电影分类表。它记录了分类编号(fcategoryId) ,分类名称 (fcategory) 。电影分类表如表 3.3 所示。 表 3.3 电影分类表 字段名称字段类型主键外键是否为空默认值 fcategoryId int(11) 是否 fcategoryvarchar(10)是NULL 第 9 页 共 46 页 dgift 为用户积分兑换的礼品信息表。它记录了礼品编号(

26、giftId) ,礼品名称 (giftName) ,礼品描述(giftDescribe) ,礼品实体图(giftPicture) ,所需积分 (requiredScore) 。礼品信息表如表 3.4 所示。 表 3.4 礼品信息表 字段名称字段类型主键外键是否为空默认值 giftId int(11) 是否 giftNamevarchar(20)是NULL giftDescribetext是NULL giftPicture varchar(20) 是NULL requiredScoreint(11) 是NULL 表 3.5 电影票订单表 字段名称字段类型主键外键是否为空默认值 subId int

27、(11) 是否 filmIdint(11) 是否 filmNamevarchar(20)是NULL subTime varchar(20) 是NULL subNumint(11) 是NULL userIdint(11) 是否 esubscrib 为电影票订单表。它记录了订单号(subId) ,电影编号(filmId) ,电影 名称(filmName) ,下单时间(subTime) ,座位号(subNum) ,用户编号(userId) 。电 影票订单表如表 3.5 所示。 fciticism 为电影评论表。它记录了影评编号(criId) ,影评内容(criDescribe) , 电影编号(fil

28、mId) 。电影评论表如表 3.6 所示。 表 3.6 电影评论表 字段名称字段类型主键外键是否为空默认值 criId int(11) 是否 criDescribetext否 filmIdvarchar(20)是否 第 10 页 共 46 页 ggiftexchange 为礼品兑换单表,它的性质同电影票订单表一样,用户每兑换一样 礼品便生成一张兑换单。它记录了兑换单编号(giftexchangeId) ,礼品编号(giftId) , 用户编号(userId) ,礼品名称(giftName) ,礼品实体图(giftPicture) 。礼品兑换单表 如表 3.7 所示。 表 3.7 礼品兑换单表

29、字段名称字段类型主键外键是否为空默认值 giftexchangeId int(11) 是否 giftIdint(11) 是否 userIdint(11) 是否 giftName varchar(20) 是NULL giftPictureint(11) 是NULL hallseat 为影院所有的座位编号表。它为独立的表,与其它表没有联系。它之记 录了所有座位号(seatNumber) 。座位编号表如表 3.8 所示。 表 3.8 座位编号表 字段名称字段类型主键外键是否为空默认值 seatNumber int(11) 是否 3.3. 3 3 系统结构分析系统结构分析 3.3.1 系统功能结构分析

30、 本系统面向的操作主体为普通用户和管理员,操作对象主要为电影信息、用户信 息和礼品信息。普通用户对电影信息的操作有查看、打分、投票、订/退票;对礼品信 息的操作有查看、兑换;对用户个人信息的操作有查看和修改。管理员对三种信息的 操作有增加、删除、修改。系统功能结构图如图 3.4 所示。 3.3.2 系统逻辑结构分析 JSF 中用到托管 Bean 实现前台页面同后台的传值。该系统采用 JDBC 技术实现同 数据库的连接。包 cinemasManageBean 中定义了所有的托管 Bean,托管 Bean 与前台 空间绑定。Dao 包中定义了所有的具体的业务逻辑。后台通过 Dao 包同数据库连接,

31、 第 11 页 共 46 页 对数据库进行操作,在 cinemasManageBean 包中调用这些操作和返回的结果集向前台 页面传值。filter 包中是过滤器,文件上传时用到。系统包图如图 3.5 所示。 图 3.4 系统功能结构图 cinemasManageBeanDao filter 图 3.5 系统包图 基于 Web 的影院信息管理系统 普通用户功能管理员功能 电影信息 礼品 个人信息 电影信息 礼品信息 用户信息 个人信息 查看 添加影评、打分 订/退票 兑换 修改 删除 修改 增加 第 12 页 共 46 页 4 4 系统详细设计系统详细设计 本系统面向管理员和普通用户两种人群。

32、管理员不可注册,只能由已有管理员进 行添加。系统主页,所有电影信息是开放的,无需登录就可浏览;而订票,兑换积分, 电影投票,电影评价是要用户进行登录后才可享有的功能。 系统要对实体:用户、电影、电影分类、影评、礼品、订单进行管理,所以建立 了相应的托管 Bean 的类: UserBean,FilmBean,AllfCategoryBean,CriticismBean,GiftBean,SubscribBean;托 管 Bean 要对数据库进行访问则通过 Dao 包的相应类: UserDao,FilmDao,AllfCategoryDao,CriticismDao,GiftDao,Subscri

33、bDao 实现。系 统类图如图 4.1 所示。 UserBeanFilmBean GiftBean AllfCategoryBeanCriticismBeanSubscribBean BaseDao UserDaoFilmDao GiftDao AllfCategoryDao CriticismDaoSubscribDao 图 4.1 系统类图 4.14.1 普通用户功能的设计普通用户功能的设计 第 13 页 共 46 页 4.1.1 用户注册/登录功能 a用户注册 userlog.xgtmluserBean:UserBeanuserdao:UserDao uRegist() userdeta

34、il.xhtml:xhtml setUserName(String) userRegist(String,String) setPassWord(String) 图 4.2 用户注册时序图 该功能实质就是对数据库的用户表进行插入操作。用户注册时向页面的 输入用户名和密码,分别与 userBean 中的 userName 和 passWord 绑定, 的 required 属性值为真,用进行输入空的提示。注册按钮的 action 属性值为#userBean.uRegist,即与 userBean 的 public String uRegist()方法绑 定。点击注册按钮后,触发 UserBean

35、 类中的 uRegist()方法,在该方法中又嵌套调用 UserDao 中的 public String userRegist(String userName,String passWord)方法,将前台 传入 userBean 的 userName 和 passWord 的值作为参数传给 userRegist()方法。若注册 成功,则返回字符串“yes”,若失败则返回“fail”。对 face-config.xml 进行配置,检测与 userBean 绑定的函数的返回值,实现页面跳转。时序图如图 4.2 所示。 b用户登录 第 14 页 共 46 页 userlog.xhtml:xhtmlu

36、serBean:UserBeanuserdao:UserDao ucheckLogin() findusers(String,String) setSessionValue(String , Object) 图 4.3 用户登录时序图 用户登录就是对数据库的用户表进行查找,锁定用户名和密码两个条件。用户登 录时向中输入用户名和密码,两个输入文本框分别与 userBean 的 userName 和 passWord 绑定,其 required 属性值为真。登录按钮与 userBean 的 public String ucheckLogin()方法绑定,点击登录按钮后触发 UserBean 类中的

37、 ucheckLogin()方法,在该方法中又嵌套调用 UserDao 类中的 public String findusers(String userName,String passWord)方法,将前台传入 userBean 的 userName 和 passWord 作为参数送入 findusers() ,登录成功后返回字符串“success”,若失败则 返回“fail”。同样对 face-config.xml 文件进行配置实现页面跳转。时序图如图 4.3 所示。 4.1.2 查找电影功能 该功能使用 PrimeFaces 中的控件 dataTable 实现。dataTable 的 val

38、ue 属性值是一个 数据集,即要放入该数据表的数据集合。在此,该数据集为 filmBean.films,即 dataTable 与 filmBean 中的集合 films 绑定。films 由 FilmDao 类中的 public List findFilm()方法返回。dataTable 的 var 属性值表示数据集中的一个元 素,在此 var=“fsearch”。dataTable 中加入,使用期 filterBy 属性即可实现按 指定字段查找。如按电影上映日期查找,赋值 filterBy=“#fsearch.filmTime” (filmTime 为 filmBean 的一个属性,表示上

39、映时间)即可。 4.1.3 电影投票功能 第 15 页 共 46 页 fvote.xhtml:xhtmluserBean.UserBeanfilmBean:FilmBeanfilmdao:FilmDao filmVote(ActionEvent) getSessionValue(String) filmVote(int,int) 图 4.4 电影投票时序图 该功能就是对数据库的电影表的票数字段进行更新操作。该功能使用 dataTable 盛 放数据集,即所有电影,每条记录后面加一个投票功能列,使用。其 actionListener 属性值为#filmBean.filmVote,即与 FilmB

40、ean 类的 public void filmVote(ActionEvent event)方法绑定。filmVote()中调用 FilmDao 类的 public int filmVote(int vote,int filmId)方法。形参 vote 为当前票数,filmId 为待打分电影的编 号,这两个参数由页面的传入。在后台使用 event.getComponent(). getAttributes().get(“f:attribute 的 name 属性值”)方法即可获取 f:attribute 的值。时序图如 图 4.4 所示。 4.1.4 添加影评功能 用户在电影详细信息页面进行电

41、影打分和添加影评。 a电影打分 使用 PrimeFaces 的 rating 组件实现,并给 rating 添加 ajax。设置 rating 与 filmScore(filmBean 的一个属性,表示电影当前得分)绑定,设置 ajax 监听事件为 “rate”,监听动作为 filmBean.onrate,更新对象为消息控件,即用户进行打分动作后会 触发 FilmBean 类的 public void onrate(RateEvent rateevent)方法,在该方法中嵌套 调用 FilmDao 类中的 public int rateScore(int filmScore,int filmI

42、d)方法,将前台传入 的电影当前得分(通过 getSessionValue(“键”)得到)和电影编号(通过前台 rating 组 件的得到)作为实参传入,如此实现打分。打分的实质就是对数据库的电 影表进行更新操作,更新其得分字段。打分成功后会有消息提示用户的打分值,在 onrate( )方法中调用 FaceContext.getCurrentInstance( ).addMessage( )方法实现消息提示。 b添加影评 第 16 页 共 46 页 影评的添加实质上就是在数据库中影评表里插入一条记录的操作。使用 盛放用户输入的评论,该控件与 criticismBean.criDescribe(

43、criDescribe 属性为影评字段)绑定。提交按钮与 criticismBean.fCriticismInsert 绑定,且设置提交按 钮的 ajax 值为真,更行对象为整个表单,实现动态刷新,提交评论后就能立刻看到自 己的评论。点击提交按钮后触发 CriticismBean 类的 public void fCriticismInsert()方法, 该方法中又嵌套调用 CriticismDao 类中的 public int filmCriInsertByid(int filmId, String criDescribe)方法,filmId 通过 getSessionValue()方法得到,

44、criDescribe 通过绑定的 前台控件传入。 4.1.5 礼品兑换功能 用户登录成功后,点击礼品兑换选项卡进入礼品列表页面,此选项卡使用 PrimeFaces 的控件实现。用户每兑换一次礼品前进行用户的积分检测,积 分符合则实现兑换,用户的积分要相应的减少,对数据库中礼品兑换单表插入一天兑 换记录。giftBean 是管理礼品的托管 Bean,集合 allgifts 是其属性之一,表示所有礼品 的集合,通过 GiftDao 类中的 findAllGifts()方法返回,该方法实质就是对数据库进 行一次查询操作。在前台页面中使用 PrimeFaces 的 dataGrid 控件来盛放该集合

45、,与 dataTable 相似,var 属性也表示集合中的一个元素。兑换按钮的 actionListener 值为 #giftBean.giftExchange,ajax 值为真,更新对象为整个表单,这样用户兑换后就能立 刻看到刚才兑换的礼品(页面动态刷新具体实现见 4.4) 。点击兑换按钮后触发 GiftBean 类的 giftExchange(ActionEvent event)方法。在该方法中,首先通过 session 得到用户积分,将该积分与礼品所需积分对比,少于则提示积分不足,多余则先后调 用 GiftDao 类中 public String exchange(int userId,

46、int giftId,String giftName,String giftPicture)和 public void userScoreDivid(int requiredScore,int userId)两个方法,其中 giftId,giftName,giftPicture,requiredScore 通过兑换按钮下的得到,userId 通过 session 得到。 4.1.5 用户订/退功能 a用户订票 第 17 页 共 46 页 userdetail.xhtml:xhtmluserBean:UserBeanfilmBean:FilmBeanfilmdao:FilmDao getFilm

47、s() findFilm() selectedFilm(ActionEvent) buyticket.xhtml:xhtml selectById(int) subscribBean:SubscribBeansubsdao:SubscribDao getAllSeats() findSelectedSeats(int) findSeats() buyTicket(ActionEvent) getSessionValue(String) addSubscrib(int, int, String, String,String) filmTicketsDivid(int) userScoreAdd(

48、int) 图 4.5 用户订票时序图 用户登录成功后点击订票选项卡进入有订票功能的电影列表。该列表由 PrimeFaces 的 dataGrid 盛放。订票操作实质上是对数据库中三个表的操作:对订单表 插入一条订单记录,对电影表的余票字段进行减量更新,对用户表的用户积分字段进 行增量更新。点击订票按钮后跳转到 buyticket(订票)页面,将该电影编号传入此页 面(页面传值详细实现见 4.4) ,该页面根据电影余票数动态生成座位号(生成座位号 详细实现见 4.4) ,即已订走的座位号不再出现。每个座位号是一个按钮,点击按钮生 成一个订单,该按钮 actionListener 属性与 subs

49、cribBean.buyTicket 绑定,点击座位号按 钮触发 SubscribBean 类的 public void buyTicket(ActionEvent event)方法,在该方法中首 先嵌套调用 FilmDao 类的 public int ticketCounts(int filmId)方法检测电影余票数,有 余票则先后调用 SubscribBean 类的 public String addSubscrib(int userId,int filmId,String subsTime,int seatNum,String filmName),public void filmTick

50、etsDivid(int filmId)和 public void userScoreAdd(int userId)方法。其中 filmId,filmName,userId 通过 session 得到, seatNum 通过座位号按钮下的得到,subsTime 是下单时间,通过调用 第 18 页 共 46 页 GidtDao.nowTime()方法得到当前系统时间(详细实现见 4.4) 。时序图见图 4.5 所示。 b用户退票 userdetail.xhtml:xhtmlsubscribBean:SubscribBeansubsdao:SubscribDaofilmBean:FilmBean

51、deleteSub(ActionEvent) getSessionValue(String) deleteSub(int) filmTicketsAdd(int) userScoreDivid(int) 图 4.6 用户退票时序图 用户登录成功后会进入用户详情界面,其中包括用户订单列表,可对该列表进行 删除行的操作。删除订单的实质就是对数据库的订单表进行删除操作,对用户表的用 户积分字段值进行减量更新,对电影表的余票数字段值进行增量更新。使用 PrimeFaces 的 dataTable 控件盛放该用户订单的集合,由 SubscribDao 类的 public List findAllSubs

52、(int userId)方法返回。其中 userId 通过 session 得到,即 通过用户编号从数据库的订单表中选出对应用户的所有订单。删除按钮同 subscribBean.deleteSub 绑定,及点击删除按钮后调用 SubscribBean 的 public void deleteSub(ActionEvent event)方法,在该方法中先后调用 SubscribDao 类的 public void deleteSub( String subId )方法,public void filmTicketsAdd( int filmId )方法和 public void userScor

53、eDivid ( int userId )方法。其中 subId 和 filmId 通过删除按钮下的得 到,userId 通过 session 得到。时序图如图 4.6 所示。 4.24.2 管理员功能的设计管理员功能的设计 4.2.1 管理员登录功能 同用户登录相似。不同的是管理员登录时调用 UserBean 类中的 public String checkLogin()方法,在此方法中嵌套调用 UserDao 类中的 public String findMUers(String userName,String passWord)方法,该方法中调用了 setSessionValue()方法,将

54、管理员编号与身份代码保存到 session 中,供修改个人信 息和删除操作时用。此方法中加上了身份代码的验证条件(管理员的身份代码为 1 或 2) ,通过验证则登录成功。 第 19 页 共 46 页 4.2.2 电影信息管理功能 电影信息管理功能分为添加电影,修改电影信息,删除电影,添加电影分类,和 删除分类。 a添加电影 电影名称(filmName) ,电影效果(is3D) ,电影分类 (category1,category2,category3) ,代售票数(ticketCount) ,上映日期(filmTime) 都使用输入,电影简介(filmDescribe)使用输入,这些 控件分别与

55、 filmBean 的相应属性绑定。电影的海报添加要使用文件上传功能,由 PrimeFaces 的 fileUpload 控件实现(详细实现见 4.4) 。添加按钮与 filmBean.filmInsert 绑定,点击添加按钮触发 FilmBean 类的 public void filmInsert()方法,在此方法中嵌 套调用 FilmDao 类中的 public int filmInsert(String filmName,String is3D,String category1,String category2,String category3,String filmPicture,St

56、ring filmDescribe,String filmTime,int ticketCount)方法,其中的参数都有前台绑定的 filmBean 的属性值得到。添 加成功或失败都有相应的消息提示,设置添加按钮的 ajax 属性值为真,更新对象为相 应消息提示框。时序图如图 4.7 所示。 filminsert.xhtml:xhtmlfilmBean:FilmBeanfilmdao:FilmDaoFaceContext filmInsert() filmInsert(String,String,String,String ,String,String,String,String,int) a

57、ddMessage(String) 图 4.7 添加电影时序图 b修改电影信息 该功能就是根据前台页面传来的 filmId 查到电影表的一条记录,对该记录进行更 新操作。电影列表由盛放,每条记录后有一个修改按钮,此修改按钮下 的将 filmId 传入后台,通过 filmId 选出要修改的电影的详细表单,管理员 能够修改电影名称(filmName) ,电影效果(is3D) ,电影分类 (category1,category2,category3) ,代售票数(ticketCount) ,上映日期(filmTime) , 电影简介(filmDescribe) ,这些字段与前台绑定,且在这些字段的

58、set 方 法中调用 setSessionValue() ,进行修改后,通过 session 获取新值。点击保存按钮后触 发 FilmBean 类的 public void filmUpdate(ActionEvent event)方法,其中嵌套调用 第 20 页 共 46 页 FilmDao 类的 public int filmUpdateById(String filmName,String is3D,String category1,String category2,String category3,String filmPicture,String filmDescribe,Strin

59、g filmTime,int filmId)方法,除 filmId 外其他参数由 getSessionValue()方法得到,filmId 由保存按钮下的得到。 c删除电影 该功能实质是根据 filmId 删除数据库中电影表的一条记录。电影列表由 盛放,dataTable 的 value 值为#filmBean.films,films 为所有电影的集合, 由 FilmDao 类的 public List findFilm()方法返回。dataTable 中每条电影记录 后都有一个删除按钮,该按钮与 filmBean.filmDelete 绑定,点击后触发 FilmBean 类的 public

60、void filmDelete(ActionEvent event)方法,该方法中嵌套调用 public void filmDeleteByID(int filmId)方法,filmId 有删除按钮下的得到。删除后页面使 用 ajax 进行动态刷新。 d添加电影分类 电影分类由托管 Bean:allfCategoryBean 管理。页面的与 allfCategoryBean.fcategory 绑定,点击添加按钮触发 AllfCategoryBean 类的 public void categoryInsert() 方法,该方法中嵌套调用 AllfCategoryDao 类的 public in

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论