基于Web的影院信息管理系统的设计与实现 毕业论文.doc

上传人:来看看 文档编号:3922284 上传时间:2019-10-10 格式:DOC 页数:45 大小:14.85MB
返回 下载 相关 举报
基于Web的影院信息管理系统的设计与实现 毕业论文.doc_第1页
第1页 / 共45页
基于Web的影院信息管理系统的设计与实现 毕业论文.doc_第2页
第2页 / 共45页
基于Web的影院信息管理系统的设计与实现 毕业论文.doc_第3页
第3页 / 共45页
基于Web的影院信息管理系统的设计与实现 毕业论文.doc_第4页
第4页 / 共45页
基于Web的影院信息管理系统的设计与实现 毕业论文.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《基于Web的影院信息管理系统的设计与实现 毕业论文.doc》由会员分享,可在线阅读,更多相关《基于Web的影院信息管理系统的设计与实现 毕业论文.doc(45页珍藏版)》请在三一文库上搜索。

1、 目目 录录 1 1 绪论绪论 1 1 1.1 研究背景及研究意义1 1.2 研究内容1 1.3 论文结构.2 2 2 系统开发工具与相关技术介绍系统开发工具与相关技术介绍 3 3 2.1 JSF 技术 3 2.2 PrimeFaces3 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.3.1 系统功能结构分

2、析 .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 主要界面设计.22 4.3.1 主页设计

3、 .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 礼品管理功能 .37 结结 论论 393

4、9 致致 谢谢 4040 参参 考考 文文 献献 4141 第 1 页 共 45 页 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 页 共 45 页 该系统使用了新框架 JavaServer Faces 2.0,使用的开发语言为 Java 语言,开发工 具采用的是 MyEclipse10.0,采用 Tomcat7.0 作

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

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

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

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

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

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

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

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

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

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

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

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

20、信息功能:可添加/删除电影;修改电影信息:电影名称,上映时间, 电影简介,电影效果,海报。 c更新礼品信息:对用户积分可换取的礼品进行添加,删除。 d发布电影排榜功能:根据用户投票对电影进行热度排名,将排名列表公布。 第 7 页 共 45 页 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(礼品兑换单表)关 联起来;userinform 与 film(电影信息表)通过 s

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

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

24、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(20)是NULL showTimevarcha

25、r(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 页 共 45 页 dgift 为用户积分兑换的礼品信息表。它记录了礼品编号(giftId) ,礼品名称 (giftName

26、) ,礼品描述(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(11) 是否 filmIdint(11) 是

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

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

29、texchangeId 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 包同数据库连接, 第 11 页 共 45 页 对数据库进行操作

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

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

33、 UserBeanFilmBean GiftBean AllfCategoryBeanCriticismBeanSubscribBean BaseDao UserDaoFilmDao GiftDao AllfCategoryDao CriticismDaoSubscribDao 图 4.1 系统类图 4.14.1 普通用户功能的设计普通用户功能的设计 第 13 页 共 45 页 4.1.1 用户注册/登录功能 a用户注册 userlog.xgtmluserBean:UserBeanuserdao:UserDao uRegist() userdetail.xhtml:xhtml setUserN

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

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

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

37、嵌套调用 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 的 value 属性值是一个 数据集,即要放入该数据表的

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

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

40、Vote(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 添加影评功能 用户在电影详细信息页面进行电影打分和添加影评。 a电影打分 使用 Prim

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

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

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

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

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

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

47、Film(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(int) 图 4.5 用户订票时序图 用户登录

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

49、击座位号按 钮触发 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 filmTicketsDivid(int filmId)和 public void userScoreAdd(int userId)方法。其中 filmId,filmName,userId 通过 session 得到, seatNum 通过座位号按钮下的得到,subsTime 是下单时间,通过调用 第 18 页 共 45 页 GidtDao.nowTime()方法得到当前系统时间(详细实现见 4.4) 。时序图见图 4.5 所示。 b用户退票 userdetail.xhtml:xht

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1