影院售票系统毕业设计 [影院订票系统设计与实现毕业设计论文]

编号 毕业设计(论文) 影院订票系统设计与实现 Design and Realization of Cinema Booking System 学院名称 专业名称 学生姓名 学号 指导教师 20XX年X月X日 摘 要 如今人们已经把网络视为生活中的一部分,很多浪费精力和时间的事情都可以用网络技术来完美的实现。网络的方便快捷也给电影业的发展带来了一个契机,过去人们想要预订电影票就要直接去电影院,现在虽然有了一些团购网站提供的电影票的在线预订功能,但是还无法满足人们对在线购买和预订的要求,所以现在开发一个符合现代人生活习惯的影院订票系统是非常重要的。

整体设计采用Struts框架,业务层的实现采用了MVC分层模式实现了对页面请求的处理。设计采用B/S架构,使用JSP技术进行动态页面设计设计实现最新电影、特价电影、查看订单、购票专区和会员信息修改、预订排行等动态页面后台数据库选用SQL Server 2005数据库。Web服务器使用Tomcat,Tomcat是Apache公司组织开发的一种JSP引擎,由于自身具有Web服务器,可以作为独立的Web服务器使用。从快速开发方面考虑,运用了Hibernate框架实现对数据库的各项操作。影院订票系统可以实现人们提前了解新电影和快速订购电影票的愿望,更给如今生活快节奏的人们节省了很多时间,系统凭借快速的信息更新、大量的信息储存、应用方便等特点为用户订票带来了舒适的网上订票和关注的环境。

系统的建立,让拥有影片信息资源的影院可以在互联网上实现影片展示、电影预告片、影视排行榜、网上订票、新片发行介绍等功能,系统不仅将成为影院与人们在互联网上的一个文化交流的窗口,还提供了一个具有广泛的参与性、娱乐性的便民服务。

关键词:影院订票系统;团购网站;便民服务 Abstract Nowadays, people treat the Internet as a part of life. Various kinds of time—consuming and energy—consuming task can be realized through the Internet perfectly. Also, the film industry is motivated by the convenience of the Internet. In the past, people have to walk in the cinema if they want to book tickets. Today, some group—buying websites provide online booking function, however, it cannot meet the increasing demand of online purchase and reservation. Therefore, it is necessary to develop an online booking system which can satisfy modern residents’ living habits. The overall design uses Struts framework. To process requests from the front page, MVC layered model is implemented in the background business layer. In this design, BS framework and JSP technology are used in the dynamic pages. The dynamic pages includes new movies, special—price movies, orders, booking zone, membership modification and reservation ranking. In addition, SQL Server 2005 database is selected as the background database. Tomcat is applied in the Web server. Tomcat is a kind of JSP engine developed by the Apache Company. Because Tomcat contains Web server, itself can be used as an independent server. Considering the rapid development, Hibernate framework is used to handle the operation in the database. Cinema booking system satisfies people’s desire of knowing new movies in advance and booking tickets quickly. Moreover, it saves much time for the modern people with fast pace of life. Depending on the characteristics of fast information updating, large amount of information storage and easy application, the system provides comfortable online booking environment for users. The establishment of the system makes the cinema, which has movie resources, be able to present the movie show, movie trailers, movie rankings, booking tickets, introduction of new movies on the Internet. The system will not only become a communication window on the Internet between the cinema and users, but also provides a high participation rate and recreational convenience service. Key words: cinema ticket buying system; group—buying websites; convenience services 目 录 摘 要 I Abstract II 第1章 绪论 1 1.1 影院订票系统的开发背景分析 1 1.2 国内外发展现况 1 1.3 影院订票系统达到的目标 2 第2章 可行性分析 3 2.1 技术可行性 3 2.2 运行环境可行性 3 2.3 软件可行性 4 2.3.1系统开发语言JSP 4 2.3.2 SQL Server 2005介绍 5 第3章 需求分析 6 3.1 需求分析 6 3.2 数据流图 7 3.3 数据字典 8 3.4 系统工作流程图 10 第4章 总体设计 11 4.1 系统总体功能结构图 11 4.2 系统ER图 12 4.3 系统功能设计目标 12 4.4 系统功能模块划分 13 第5章 数据库设计 15 5.1 数据库理论基础 15 5.2 数据表设计 15 第6章 详细设计与编码 18 6.1 前台首页设计 18 6.1.1 前台首页概述 18 6.1.2 前台首页的实现 18 6.2 用户信息模块设计 20 6.2.1 用户信息模块概述 20 6.2.2 用户注册的实现 20 6.3 订单信息模块设计 22 6.3.1 订单信息模块的概述 22 6.3.2 订单信息模块的实现 22 6.4 电影浏览模块设计 24 6.4.1 电影浏览模块的概述 24 6.4.2 电影浏览模块的实现 24 6.5 后台登陆设计 26 6.5.1 后台登陆概述 26 6.5.2 后台登陆的实现 26 6.6 后台首页设计 27 6.6.1 后台首页概述 27 6.6.2 后台首页的实现 28 6.7 添加电影信息模块设计 30 6.7.1 添加电影信息模块概述 30 6.7.2 添加电影信息模块的实现 30 第7章 系统的调试与测试 32 7.1 系统测试原理及原则 32 7.1.1 系统测试原理 32 7.1.2 系统测试原则 32 7.2 影院订票系统的测试 32 7.3 调试过程及调试结果分析 33 7.3.1登陆功能的测试 33 7.3.2 管理员管理功能的测试 33 第8章 总结 34 参考文献 35 致 谢 36 附 录 37 第1章 绪论 1.1 影院订票系统的开发背景分析 在精神文明建设越来越被人们重视的今天,电影行业的市场也越来越好。电影的种类和数量也随之越来越多。然而客流量增大同时也导致电影院的管理难度增大,为了应对这种情况,设计并开发一套电影订票系统便成为一件很有现实意义的工作。电影订票网站相比传统的人工售票模式有着无比的优越性,凭借信息更新速度快、信息储存量大、应用方便等特点为用户订票带来了极大的方便。我们可以展望,随着电影行业的发展,这套系统也会发挥更大的作用。伴随着Internet的蓬勃发展,电影票预订系统作为电子商务的一种形式正以其高效、低成本的优势,逐步成为新兴的经营模式和理念,人们已不再满足于信息浏览和发布,而是渴望着能够充分享受网络所带来的更多的便利。的确,客户足不出户便可以方便快捷的选购自己喜欢的电影,这正是电影票预订系统为客户带来的好处。

敏锐的网络商家当然不会错过这样绝好的机会,越来越多的网站投身到提供网络预订服务的行列中来,一个基于Internet的全球电子商务框架正在形成。同时还可以运用面向对象的思想,面向对象是Java语言的基础,也是Java语言的重要特性,它本身就是一种纯面向对象的程序设计语言。Java提倡万物皆对象,语法中不能在类外而定义单纯的数据和函数,也就是说,Java语言最外部的数据类型是对象,所有的元素都是通过类和对象来访问[1]。

根据CNNIC的统计结果,截止2004年1月中国有互联网用户7950万人,而又有40.7%以上的网民在过去的一年里有过网上预订经历,这就说明中国有网上预订的用户达是3235.7万人,并且这一数字还在以17%左右的速度增长,到2006年中国网上预订用户将达到6962万人,这说明在中国发展网上预订具有良好的群众基础,网上预订方式日趋被大家所接受。因此,设计一个具有电子商务功能的电影院购票系统网站具有非常好的开发与应用前景。

1.2 国内外发展现况 目前,国内中高级电影院的数量和规模都在扩大,国外星级影院也纷纷着陆中国,这些影院之间的竞争可谓日益激烈。配备一个安全、高效、灵活、可靠的客户订票系统对于影院加强客户服务质量,提高客户服务水平,维护公众形象,提高工作效率必将发挥重要作用。对电影院来说,订票系统既能扩大服务范围,扩大影院影响,减少营业费用,又对稳固影院最重要的客源有着重要的辅助作用;站在前来观看电影的观众的角度,影院提供的这种服务提供了更多的方便,能不受时间空间限制地享受影院所提供的服务[2]。10年前推出团购网站,有类似的购买兴趣的买家聚集在网上获得团体折扣。最受欢迎的是购买网站的交易。在美国2008年开始,这个新的集团购买的迅速取得了巨大的成功,并已被广泛采用在各个国家 [3]。电影院作为一个快速增长的经济行业,在提高国民生活质量和发展地区经济中发挥着越来越重要的作用。人们在网上预订酒店,机票越来越普遍,为了提高企业的效率,依靠现代化的计算机信息处理技术,能够合理的利用网络资源,快速反映出用户电影票价及放映时间的查看,并且能够针对用户的不同要求,影城管理员可以依靠会员管理功能,第一时间提供准确,精细,迅速的服务。从而大大的节省了人力、物力资源,不仅为影城创造了良好的经济效益,也为广大影迷提供了一个方便快捷的购票平台。

1.3 影院订票系统达到的目标 设计并实现一套完整,高效的基于B/S架构的网上订票系统,通过网上订票系统的实现,可以提高自己的开发经验,同时也解决了窗口售票效率低的问题。电子影票系统是一个网络售票的平台,它并不是完成影院订票系统的全部功能,而是通过与各电影院的计算机售票系统相连来完成相关的票务功能,即电子影票系统并不负责维护各电影院的票务数据,只是相当于各电影院计算机售票系统的售票终端[4]。通过这个系统,可以节约更多的时间,网络电影票预订不仅是传统电影院业的发展和补充,也是未来电影院业的发展方向。各大电影院商家利用网络技术瞄准市场即增加了自身的业务数量,同时也方便了广大的消费者,使人们足不出户就可以预订到所需的电影票。

第2章 可行性分析 2.1 技术可行性 设计采用SQL Server 2005数据库和JSP进行开发,解决了电影票预订系统所承载的大量的数据、预订流程比较繁琐的问题,并且具有很高的稳定性和安全性,确保了电影系统的安全运营,这种设计不仅让影院订票系统走在行业的前列,而且让影院有更大的机会获得市场,产生更大的经济效益,也让客户更愿意使用系统,客户的操作更方便,保证了客户资金的安全,促进了企业的竞争力的提高。

在使用JSP和Servlet开发Web应用程序时,可以使用Servlet生成HTML页面,但是这样所有的代码都必须使用Servlet编写;也可以使用JSP生成HTML页面,但是业务逻辑和显示逻辑混杂在一起,代码的维护量大,开发效率低。

为了解决上述的问题,可以使用实现了MVC模式的Struts框架。MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法。Struts框架是在Java服务器端实现了MVC设计的模式,其在创建JavaWeb应用程序时能轻易地分离表示层和业务数据层[5]。

伴随着计算机硬件方面的飞速发展,现在个人电脑也已经能够出色的完成作为Web服务器主机的任务。购买一台或者几台足够作为企业网站的个人电脑对于一个大型的电影院来说非常容易,而且也很容易管理和维护。

用户在未登录的情况下可以浏览,当需要订票的情况下用户通过注册获得账号后登录系统,登陆的用户可以进行电影票的预订与购买等。这部分使用JSP设计页面及分类,通过数据库来建立相关的表,以便于对其进行查看、修改或删除。

系统的最高权限在系统中发挥着重要的作用,设计管理员拥有最高的管理权限。管理员能够完成对网站的维护与管理的工作,使用数据库中权限的功能对管理员设置权限,管理员可以对电影信息进行新增和删除,也可以对订单信息进行处理,同时管理员也可以对用户信息进行管理。

2.2 运行环境可行性 由于系统设计是由国际流行的设计理念,所以系统的兼容性非常的好,经历的多年的发展也逐渐被人们接收而且能够让人们简单的操作系统管理员的操作需要有一定的经验或者培训一段时间。通过前台的链接进入后台,然后通过登录界面输入用户名和密码,通过数据库的操作验证成功后进入后台管理,进入后的操作完全由鼠标和键盘来输入,用户体验非常的好。操作系统最好使用稳定而且兼容性很强的Windows XP或者操作简单方便而且功能强大的Windows 7。

2.3 软件可行性 2.3.1系统开发语言JSP JSP(Java Server Page服务器网页)是从1998年开始出现的新技术。由Sun公司倡导、许多公司参与一起建立的一种动态网页技术标准,是基于JavaServlet以及整个Java体系的web开发技术。在传统的网页HTML文件(*.htm,*.html)中加入脚本片段和JSP标记(Tag),构成JSP网页(*.jsp)。JSP技术为创建显示动态生成内容的web页面提供了简便的方法。JSP作为Java家族的一员,承袭了Java的特点,即跨平台的特性,也即一次编译,到处运行。

JSP与Servlet是一体的两面。基本上Servlet能实现的功能,使用JSP也能做得到,因为JSP最后还是被容器转译为Servlet源代码、自动编译为.class文件、载入.class文件,然后生成Servlet对象[6]。

框架本身是指一种能够使用在项目中概念的结构。CSS框架也是这样的一种结构,它是多个CSS代码的集合文件,也可以说是一个开源的用于前端开发的工具包,里面包含支持该框架的字体排版,表单样式,表格布局等等。在开发过程中,网页工程师只需要给html元素加上所需的类,就可以快速的得到该风格的相关组件,而无需像传统编码一样一一实现,而现在成熟的CSS框架拥有较高的通用性和浏览器兼容性,省去了大量的测试修改时间[7]。

HTML5技术的出现,使得移动互联网应用呈现出Web应用本地化,本地应用Web化的发展趋势,改变了目前移动应用App为王的格局,模糊了浏览区和操作系统之间的界限[8]。

在国外,己经大量使用JSP作为网络应用程序的开发工具,而在国内,尽管JSP还不是主流开发技术,但是由于JSP的强大优势,许多网站都已经准备转向JSP,利用JSP来开发动态网站。

JSP是面向服务器的,因此支持任何浏览器。当Web服务器和JSP引擎遇到访问JSP网页的请求时,JSP引擎将请求对象发送给服务器端的相关组件,比如JavaBean组件、Servlet或EJB等,然后由服务器端组件处理这些请示,可能需要从数据库或数据存储中检索信息,然后服务器端组件再将响应对象返回JSP引擎。JSP引擎将响应对象传递给JSP页面,根据JSP页面的HTML格式完成数据编排,最后Web服务器和JSP引擎将格式化后的JSP页面以HTML格式返回客户浏览器。这就是当前网站构建中广泛采用的浏览器——Web服务器——后台数据库的三层架构模式。因为JSP所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果。

在JavaWeb项目开发过程中,我们将业务逻辑与界面分离,业务逻辑开发人员负责开发JavaBean功能代码,设计JavaBean类,而界面开发人员则负责项目界面的设计与实现,再通过生成相关JavaBean类的对象,进行JavaBean类所属方法的调用,最终实现功能与界面的结合,从而 提高开发效率和项目性能,使JavaWeb项目更具扩展性、灵活性和健壮性[9]。

2.3.2 SQL Server 2005介绍 这次网站的设计选用Microsoft SQL Server 2005作为后台数据库。SQL Server数据库是微软公司的一款关系型数据库系统。它专门为分布式客户机/服务器计算所设计的一个出众的数据库管理平台。它的优势是可扩展性,高性能管理,支持堆成多处理结构,ODBC和储存过程,强壮的事物处理能力,支持SQL语句。其中SQL语句可以执行如从数据库中提取数据,更新、删除数据库中的数据等等各种各样的操作,可以用来完成几乎所有的数据库操作[10]。

SQL Server 2005是一项全面完整的数据库与分析产品。从借助浏览器实现的数据库查询功能到内容丰富的扩展标记语言(XML)支持特性均可有力地证明,SQL Server 2005为全面支持Web功能的数据库解决方案。与此同时,SQL Server 2005还在可伸缩性与可靠性方面保持着多项基准测试纪录,而这两方面特性又都是企业数据库系统在激烈市场竞争中克敌致胜的关键所在。SQL Server 2005还推出了一组复杂的新安全特性:强大而灵活的基于角色的服务器、数据库和应用程序配置安全性;集成的安全性审核工具可以跟踪18个不同的安全事件及其子事件;精密的文件和网络加密支持,包括SSL(安全套接字层)。SQL Server 2005已经通过美国政府C2级安全性认证,具备目前业界最高等级的安全性。

对比SQL Server 2005和其他的大型数据库管理系统,SQL Server 2005 具有可靠的安全性,更快的存储速度,高度的兼容性,因此,应用SQL Server 2005作为后台数据库系统的开发提供了强有力的支持,并对以后软件的运行提供了坚实的基础。

JDBC技术是Java数据库连接技术的简称,由一组使用Java语言编写的类和接口组成,可以为多种关系数据库提供访问,Sun公司提供了JDBC的接口规范,数据库厂商会根据该接口规范提供针对不同数据库的具体实现JDBC[11]。系统使用SQLServer2005的驱动来完成Java对数据库的访问。

第3章 需求分析 3.1 需求分析 需求分析是软件设计的一个重要的环节。本阶段对订票系统的应用情况作全面调查,以确定系统目标,并对系统所需要的基础数据以及数据处理要求进行分析,从而确定用户的需求。

系统的主要功能分别为电影信息浏览,电影票预订付款,电影信息的动态更新。电影信息有销售排行,特价电影以及最新电影,还把电影分为不同类型进行展示,方便用户按照自己喜欢的类型订购影票。预订可以操作订购的数量而且可以一起订购不同的电影。主页上在明显的地方放置用户登录和注册,减少了操作步骤。如果需要有目的的购买指定的电影可以直接在主页上搜索进入相应的电影页面。体现了电子商务区别于传统的最大优势,顾客有了空闲时间想看电影时可直接到商务网站查找各个时间段,各大影院近期放映的电影安排,选定后直接通过王国银行或第三方支付平台付款,下载门票凭证,在放映时间直接持凭证到大影院即可[12]。管理员可以通过菜单操作前台显示的每个模块,当需要修改的时候只需要找到并修改,节约了大量的时间。

系统共分为前台和后台:前台主要用于用户注册和登录系统、在线订购影票、电影信息查询以及修改个人资料等;后台主要用于管理员用户订单处理、更新电影类别和电影预告信息修改等。

系统各个部分功能模块需求: (1)用户注册:添加用户详细信息,方便用户登录和订单管理。

(2)用户登录:负责在用户注册完成后,普通用户的登录。

(3)电影浏览:查看存在系统用户感兴趣的电影

(4)电影订购:对在想要观看的电影电影票进行预订和购买。

(5)电影查询:如果想要直接观看的电影根据电影名进行查询

(6)订单修改:订购完成后可以进行修改。

(7)修改密码:为了用户的安全,密码需要定期的修改,根据原密码进行修改。

(8)修改个人信息:个人信息发生变化要及时更新,以便更好的为客户服务。

(9)退出:为了客户的隐私不被泄露,在使用完系统的时候需要安全退出。

(10)管理员功能:管理前台所以信息的发布和更新,负责用户账户的安全,处理用户的订单。

另外,企业营销商除了能与普通客户一样浏览网站之外,还需要对网站进行管理。企业需要定期更新现有电影的详细信息电影票预订动态和联系方式,必要时还要对企业的介绍做更改。对于消费者通过网站提交的各种订单能够进行处理以方便预订。

3.2 数据流图 数据流图简称DFD,是SA方法中用于表示系统逻辑模型的一种工具。图中没有任何具体的物理元素,只是描绘信息系统中流动和处理的情况。它以图形的方式描述数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。

网上影城售票系统的数据流程:对系统操作的数据源有普通用户、注册用户管理员三种,首先由系统管理员根据不同用户的需要将某些信息保存到数据库中,然后再进行发布。不同权限的用户可以对这些库信息进行添加、修改和删除处理。

(1) 顶层数据流图如3.1所示。

图3.1 影院订票系统顶层数据流图 (2)一层数据流图如3.2所示。

图3.2 影院订票系统一层数据流图 3.3 数据字典 数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序源数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。数据字典是一个预留空间,一个数据库,这是用来储存信息数据库本身。

字典的作用是给词汇以定义和解释。在结构化分析中,数据字典的作用是给数据流图上每个成分以定义和说明。换句话说,数据流图上所有成分的定义和解释的文字集合就是数据字典。数据字典对数据流图和各种成分起注解说明作用,给这些成分赋以实际的内容。除此之外,数据字典还要对系统分析中其他需要说明的问题进行定义和说明。数据字典描述的主要内容有:数据流、数据元素、数据存储、加工、外部项。其中数据元素是组成数据流的基本成分,在系统分析中,数据字典起着重要的作用。

1.管理员表的数据字典卡片 名称:管理员表 别名:(无) 描述:数据库中用于记录增加和修改管理员信息信息表 定义:管理员表=管理员姓名+密码 位置:管理员表 图3.3 管理员表数据字典卡片 2.会员信息表的数据字典卡片 名称:会员信息表 别名:(无) 描述:数据库中用于记录会员信息信息表 定义:会员信息表=会员账号+姓名+性别+密码+Email+电话+地址+邮编 位置:会员信息表 图3.4 会员信息表数据字典卡片 3.电影信息表的数据字典卡片 名称:电影信息表 别名:(无) 描述:数据库中用于记录电影信息信息表 定义:电影信息表=电影编号+电影类型编号+电影名称+电影介绍+正常价+特价+点击数+购买数+推荐+推荐日期 位置:电影信息表 图3.5 电影信息表数据字典卡 4.订单详细信息表的数据字典卡片 名称:订单详细信息表 别名:(无) 描述:数据库中用于记录订单详细信息信息表 定义:订单详细信息表=准考证号+所属课程+考试时间 位置:订单详细信息表 图3.6 订单详细信息表数据字典卡片 5.订单列表信息表的数据字典卡片 名称:订单列表信息表 别名:(无) 描述:数据库中用于记录订单列表信息信息表 定义:订单列表信息表=姓名+地址+邮编+电话+邮箱+应付款项+备注+下单时间+送 货时间+处理状态+送货备注 位置:订单列表信息表 图3.7 订单列表信息表数据字典卡片 3.4 系统工作流程图 (1) 前台系统流程图如图3.8所示。

未提交 找回密码 修改个人信息 注 册 是 用户 提交 订单 预订影票 前台页 面 登 录 否 搜索电影 提交 退 出 付 款 得到影票 图3.8 前台系统流程图 (2)后台系统流程图如图3.9所示。

修改密码 用户管理 成功 后台 首页 登 录 电影类别 管理员 影票管理 未成功 订单管理 留言管理 退出系统 图3.9 后台系统流程图 第4章 总体设计 根据用户的需求和方案的可行性,程序将设计成三部分,分别有前台、后台数据库。在使用前台的时候,用户登录网站之后再主页即可查询不同类型下的电影信息,如果需要预订影票可以之前点击电影的预告图片进入预订页面。这样设计可以方便客户一目了然的看到最新的电影信息,也可以作为购买的一个指引。网站后台作为管理员操作的部分,后台的效率决定了系统的体验,数据库的增加、查询和删除语句对于系统的流畅度有很大的影响,所以在系统之间的连接上首先就保证了很好的流畅性。

前台是完全面向用户的,所以要求它能够详细的尽可能多的将信息反馈给用户,让用户能够清晰的看到想看到的内容。

后台部分就是整个系统的核心部分,它需要维护前台和后台的所有部分。前台的信息需要后台管理员登陆后进行相应的更改。系统设计的时候为了管理员操作的便捷,系统将前台的部分结合到一个部分,这样在管理员操作大数据量的时候就可以减少很多的步骤,提高管理的效率。

数据备份是容灾的基础,为了防止系统出现操作失误或系统故障导致数据丢失,可将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质。除了采用内置或外置的磁带机进行冷备份外,还可以采用网络备份。此外,还要提高技术,保证能将保存在电脑或者数据盘等设备上丢失的电子数据进行抢救和恢复[13]。

4.1 系统总体功能结构图 如图4.1 为系统功能结构图。

电影票预订系统 管理员 公告 修改订单 修改个人信息 订单查询 修改个人密码 电影查询 电影浏览 用户登录 用户注册 图4.1 系统功能结构图 4.2 系统ER图 如图4.2 为系统ER图。

图4.2 系统ER图 4.3 系统功能设计目标 理论系统功能设计目标如下: (1)用户体验好:现在设计软件的首要满足的条件就是用户体验。设计一个用户体验好的系统更能促进用户的使用兴趣,系统设计的简单流畅,设计的界面和操作要让用户用的方便,满足各层次的用户使用的需求; (2)先进的程序结构:使用国际流行的软件编程,可以让其发挥最大的潜能,延长系统生命周期,系统的维护与管理也比较容易,能够使影票及时的发布在系统上,用户可以第一时间观看; (3)安全可靠性高:系统后台的权限比较完善,可以让用户安全的在系统订票和购买,管理员能够分配各个模块的管理权限,保证系统的安全和可靠的运行; (4)使用模块设计的方法:这种设计模式能够让系统有良好的扩展性,开发之后能够根据需要方便的更改和维护; (5)查询功能强大:可以根据电影查询,也可以根据类型和所属的列表查询

4.4 系统功能模块划分 模块分析是描述系统需求的一个过程,需要将需求分析中的感性描述进行抽象,提取出要实现的功能,这是整个系统开发的一个关键过程。层次模块结构是将系统划分为若干子系统,子系统下再划分为若干的模块。而模块是指具备有输入输出、逻辑功能、运行程序和内部数据四种属性的一组程序。在结构化系统设计中,模块一般都是按功能划分的,通常称为功能模块。合理的功能模块的划分能够极大限度地减少重复劳动、提高开发工作的效率并增大系统的可维护性。

分析的根本目的是在开发者和提出需求的人之间建立一种理解和沟通的机制。根据以上的用户操作需求,将系统划分如下,并对其模块的划分和功能进行描述。根据需求分析与系统功能设计目标,结合实际情况系统功能模块设计分为如下几个模块: (1)主页:在这里我们可以看见系统用户可以操作的主要功能和电影信息。同时还设有留言功能。

(2)用户注册:通常网站会在用户需要预订和购买等敏感操作的时候需要一个唯一的账号来保证用户使用的安全与便利,为了防止账号的丢失,系统设计可以通过其他的关键信息来找回用户的账号,更是为了对每个用户更好的服务。其中电话和Email是比较重要的,因为我们需要对这些信息进行处理,以方便用户的预订和付款。

(3)用户登录:为了方便用户的预订和购买,系统需要注册之后才能满足从浏览到购买的操作的顺利进行。用户注册后进行登录就可以进行购票,查询等想要完成的一系列操作。

(4)电影浏览:成功登录后的用户可以分页浏览电影预告,可以将想要预订的影票提交到订单页面。如果用户还没有注册就直接进入或者没有成功登陆就进入页面,将被连接到“用户登录页面”。同时电影预览画面有最新电影展示,热销电影展示,系统将自动罗列出售出量最多的电影

(5)订购电影票:成功登陆的用户可以在该页面定购所需要的电影。如果用户还没有注册就直接进入或者没有成功登陆就进入页面,将被连接到“用户登录页面”。进入后即可以进行电影票的订购。

(6)查看订单:用户提交订单后,会产生一个订单号,通过订单号查询订单信息及当前状态。只需要根据用户录入的订单号在数据表中查询处对应的预订信息即可。

(7)修改订单:成功登陆的用户可以在该页修改或删除已经订购的电影票。如果用户还没有注册就直接进入或者没有成功登陆就进入页面,将被连接到“用户登录页面”。

(8)电影查询:成功登陆的用户可以在该页查找自己需要的图书。如果用户还没有注册就直接进入或者没有成功登陆就进入页面,将被连接到“用户登录页面”,登录后即可以进行电影查询操作。

(9)修改密码:成功登陆的用户可以在该页修改自己的密码。如果用户还没有注册就直接进入或者没有成功登陆就进入页面,将被连接到“用户登录页面”。

(10)修改个人信息:成功登陆的用户可以在该页修改自己当初注册时的信息。如果用户还没有注册就直接进入或者没有成功登陆就进入页面,将被连接到“用户登录页面”。

(11)管理员:为后台管理员提供一个后台入口。该模块的功能是验证管理员的身份以及是否拥有指定的权限。管理员输入登录账号和密码后,系统通过查询数据库判断登录账号及密码是否正确,如果通过验证会弹出提示框提示登录成功,然后进入后台主页,如果错误就留在当前页面

第5章 数据库设计 5.1 数据库理论基础 数据库系统是在文件系统的基础上发展而来的,经历了层次数据库、网状数据库、关系数据库三个阶段。由于关系数据库采用人们比较容易理解和接受的二维表格来组织数据,发展迅速,已成为数据库产品的主流。

系统的前端开发是使用JSP技术,而后台数据库采用的是SQLServer2005。SQLServer2005数据库管理系统是一项全面完整的数据库与分析产品。无论以应用程序开发速度还是以事务处理运行速度来衡量,SQLServer2005都堪称最为快捷的数据库系统

对比SQLServer2005和其他的大型数据库管理系统,SQLServer2005具有可靠的安全性,较快的存储速度,高度的兼容性,简单易用,应用SQLServer2005作为后台数据库系统的开发提供了强有力的支持,并对以后软件的运行提供了坚实的基础,因此,我们采用了SQLServer2005作为后台数据库

5.2 数据表设计 字符类型是用于存储字符型数据的。每种字符数据类型使用一个或两个字节存储每个字符,具体取决于该数据类型使用ASCII编码还是Unicode编码。ASCII编码要求用8个二进制位来表示字母的范围。ASCII字符串可以用来存储一个字符型数据序列,可具体分为char、varchar、text3种。其中char为固定长度,varchar为可变长度,text可用于存储大量字符[14]。

建立数据库表: 表5.1为会员信息表,存储系统中的会员信息

表5.1 会员信息表 字段名 数据类型 默认值 描述 MemberID Bigint(8) ID Name varchar(20) Null 姓名 Pwd varchar(20) Null 密码 Sex varchar(20) Null 性别 Email varchar(20) Null 电子邮箱 Question varchar(50) Null 提示问题 Answer varchar(50) Null 问题答案 Phone varchar(30) Null 电话 Address varchar(30) Null 地址 ZipCode varchar(18) Null 邮编 表5.2为管理员信息表,记录系统管理员的详细信息

表5.2 管理员信息表 字段名 数据类型 默认值 描述 Account Bigint(8) 管理员账号 Name varchar(20) Null 姓名 pwd varchar(20) Null 密码 表5.3为电影信息表,记录系统电影的详细信息

表5.3 电影信息表 字段名 数据类型 默认值 描述 ID Bigint(8) 编号 ProductType varchar(20) Null 类型编号 Name varchar(20) Null 名称 Introduce varchar(20) Null 介绍 Remark varchar(20) Null 说明 MarketPrice int(4) 0 时常价 MemberPrice int(4) 0 会员价 smallImg varchar(30) ”nothing“ 小图片相对路径 bigImg varchar(30) "nothing" 大图片相对路径 hitNum int(4) 0 点击数 buyNum int(4) 0 购买次数 Recommend int(4) 0 1推荐0不推荐 RecommendDate datetime(6) Now() 推荐的日期 表5.4为产品类型信息表,记录系统中的类别信息

表5.4 产品类型信息表 字段名 数据类型 默认值 描述 id Bigint(8) 类型ID(主键) SuperID int(4) Null 上级类型ID Name int(4) Null 类型ID(备用) 表5.5为定单详细信息表,记录在客户的一个定单中,针对一件商品的订货信息

表5.5 定单详细信息表 字段名 数据类型 默认值 描述 ID Bigint(8) 信息唯一标识 orderID bigint(8) Null 订单列表ID productID bigint(8) Null 产品ID productName varchar(30) Null 产品名称 price int(4) Null 产品单价 Quantity bigint(8) Null 订购数量 表5.6为订单列表信息表,记录针对用户的一个订单的详细信息

表5.6 订单列表信息表 字段名 数据类型 默认值 描述 ID Bigint(8) 订单列表编号 memberID Bigint(8) Null 会员id customerName varchar(20) Null 客户姓名 Address varchar(20) Null 详细地址 ZipCode varchar(20) Null 邮编 Phone varchar(30) Null 电话 Email varchar(30) Null 电子邮箱 Payment varchar(18) Null 应付款额 Remark varchar(18) “ ” 备注 createDate datetime(6) Now() 下单时间 state Int(4) 0 0未处理1已处理 treateDate datetime(6) Null 送货日期 treatedRemark varchar(18) “ ” 送货备注 第6章 详细设计与编码 6.1 前台首页设计 6.1.1 前台首页概述 用户通过“用户登陆”的模块验证后,可以登陆到影院订票系统的前台首页,前台首页主要用于前台功能导航,在这个页面可以看到畅销电影、最新电影以及特价电影: (1)我的订票车链接:链接打开后用户可以看到自己预定的电影票。

(2)我的订单链接:用户可以在这个链接打开后看到自己的所有订单信息

(3)我的信息链接:用户通过这个功能查看自己注册时填写的信息

(4)进入后台链接:管理员进入后台管理电影票的链接。

6.1.2 前台首页的实现 图6.1 前台首页 前台首页界面部分代码如下: public String index() { Map request=(Map)ServletActionContext.getContext().get("request"); String sql="from TGoods where goodsDel="no" and goodsIsnottejia="yes" order by goodsId desc"; List goodsYesTejiaList=goodsDAO.getHibernateTemplate().find(sql); if(goodsYesTejiaList.size()>5) { goodsYesTejiaList=goodsYesTejiaList.subList(0, 5); } request.put("goodsYesTejiaList", goodsYesTejiaList); sql="from TGoods where goodsDel="no" and goodsIsnottejia="no" order by goodsId desc"; List goodsNoTejiaList=goodsDAO.getHibernateTemplate().find(sql); if(goodsNoTejiaList.size()>5) { goodsNoTejiaList=goodsNoTejiaList.subList(0, 5); } request.put("goodsNoTejiaList", goodsNoTejiaList); //paihangbang List goodsList=new ArrayList(); sql="select sum(goodsQuantity),goodsId from TOrderItem group by goodsId order by sum(goodsQuantity) desc"; List list=orderItemDAO.getHibernateTemplate().find(sql); for(int i=0;i5) { goodsList=goodsList.subList(0, 5); } request.put("goodsList", goodsList); return ActionSupport.SUCCESS; } 6.2 用户信息模块设计 6.2.1 用户信息模块概述 当用户第一次登录时首先要在网站上注册,成为会员用户才可以在网站上预订,注册页面必须填写一些用户的基本信息,如用户名、密码、联系电话等信息。要注意的是,在用户注册页面register.jsp中用户自定义JavaScript检验用户注册信息不允许为空。为了便于网站对用户的管理,在index.jsp用户注册页面接收到的注册 信息要经过严格的过滤,保证注册用户名的唯一性,在提交表单后需要对数据表中的数据进行查询,如果没有找到,则在插入数据表时提示注册成功,否则提示此用户已被占用请重新注册。

6.2.2 用户注册的实现 用户注册是为第一次登录网站的用户设计的。在用户成为网站用户之前一定要注册才可以访问网站的其它网页。

通过三层架构模型实现用户登录与注册的功能,这里有3个逻辑层:表示层、应用逻辑层以及数据层。表示层负责接收前台页面的数据,然后传给中间业务层、业务层对数据进行处理;处理后的数据再传给数据层,然后与数据库进行操作;用户信息存放在数据库中[15]。用户注册页面如图6.2所示。

图6.2 用户注册界面 注册页面部分代码如下: public class UserAction extends ActionSupport { private int userId;//定义一个变量 private String userName; private String userPw; private String userRealname; private String userAddress; private String userSex; private String userTel; private String userEmail; private String userQq; private String newUserPw; private String message; private String path; private TUserDAO userDAO; public String userReg() { TUser user=new TUser();//TUser 实体类 user.setUserName(userName);//添加 user.setUserPw(userPw); user.setUserAddress(userAddress); user.setUserTel(userTel); user.setUserRealname(userRealname); user.setUserEmail(userEmail); user.setUserSex(userSex); user.setUserQq(userQq); user.setUserDel("no"); userDAO.save(user); Map session= ServletActionContext.getContext().getSession(); session.put("user", user); return "successAdd"; }public String userEdit() { TUser user=userDAO.findById(userId); user.setUserName(userName); user.setUserPw(userPw); user.setUserAddress(userAddress); user.setUserTel(userTel); user.setUserRealname(userRealname); user.setUserEmail(userEmail); user.setUserSex(userSex); user.setUserQq(userQq); user.setUserDel("no"); userDAO.attachDirty(user); Map session= ServletActionContext.getContext().getSession(); session.put("user", user); return "successAdd"; } 6.3 订单信息模块设计 6.3.1 订单信息模块的概述 用户提交订单后,通过产生的订单号查询订单信息及执行状态。用户在预订中心首页中单击“订单查询”分类,就可以进入输入订单号页面,在页面的文本框中输入订单号并单击“提交”按钮,如果订单号输入无误,系统将根据用户录入的订单号在数据表中查询处对应的预订信息并转到订单查询显示页面将预订信息显示出来。

6.3.2 订单信息模块的实现 电影浏览模块页面如图6.3所示。

图6.3查看订单信息界面 查看订单信息部分代码如下: d save(TOrder transientInstance) { log.debug("saving TOrder instance"); try { getHibernateTemplate().save(transientInstance); log.debug("save successful"); } catch (RuntimeException re) { log.error("save failed", re); throw re; } } public void delete(TOrder persistentInstance) { log.debug("deleting TOrder instance"); try { getHibernateTemplate().delete(persistentInstance); log.debug("delete successful"); } catch (RuntimeException re) { log.error("delete failed", re); throw re; } } public TOrder findById(java.lang.Integer id) { log.debug("getting TOrder instance with id: " + id); try { TOrder instance = (TOrder) getHibernateTemplate().get( "com.model.TOrder", id); return instance; } 6.4 电影浏览模块设计 6.4.1 电影浏览模块的概述 电影浏览模块的主要功能是浏览管理员更新的电影。在该模块中,用户可以看到畅销电影信息,特价电影信息还有最新电影信息。并根据自己的需要选择的类别的电影进行 订票

6.4.2 电影浏览模块的实现 电影浏览模块页面如图6.4所示。

图6.4 电影浏览界面 选择电影界面的部分代码如下: public String goodsDetail() { Map request=(Map)ServletActionContext.getContext().get("request"); TGoods goods=goodsDAO.findById(goodsId); request.put("goods", goods); return ActionSupport.SUCCESS; } public String goodsAllYesTejia() { Map request=(Map)ServletActionContext.getContext().get("request"); String sql="from TGoods where goodsDel="no" and goodsIsnottejia="yes" order by goodsCatelogId"; List goodsList=goodsDAO.getHibernateTemplate().find(sql); request.put("goodsList", goodsList); return ActionSupport.SUCCESS; } public String goodsAllNoTejia() { Map request=(Map)ServletActionContext.getContext().get("request"); String sql="from TGoods where goodsDel="no" and goodsIsnottejia="no" order by goodsCatelogId"; List goodsList=goodsDAO.getHibernateTemplate().find(sql); request.put("goodsList", goodsList); 6.5 后台登陆设计 6.5.1 后台登陆概述 在前台首页单击管理员入口,将转到管理员登录页面,该页面的功能是对管理员身份进行验证。在管理登录页面中,是通过JavaScript来实现录入数据完整性验证的。用户输入登录ID和密码后单击“登录”按钮时,如果录入数据完整性验证通过,系统会将数据提交到登录页面

6.5.2 后台登陆的实现 后台登陆页面如图6.5所示。

图6.5后台登陆界面 后台登陆界面的部分代码如下: String result="no"; if(userType==0)//系统管理员登陆 { String sql="from TAdmin where userName=? and userPw=?"; Object[] con={userName,userPw}; List adminList=adminDAO.getHibernateTemplate().find(sql,con); if(adminList.size()==0) { result="no"; } else { WebContext ctx = WebContextFactory.get(); 后台首页设计 6.6.1 后台首页概述 后台功能只允许具有管理员权限的用户使用,它是实现前台功能的基础。后台包括管理员身份验证、添加电影信息模块、订单信息管理模块查询用户信息管理模块、添加分类模块、公告信息管理模块后台首页主要有以下几个部分。

(1)后台导航区:放置管理员可操作项目的分类; (2)操作区:显示所有后台导航的分类信息

6.6.2 后台首页的实现 为了方便管理员的管理,在系统后台首页中显示管理员的操作画面页面,如图6.5所示。

图6.6 后台首页界面 后台首页界面代码: public List findByGoodsName(Object goodsName) { return findByProperty(GOODS_NAME, goodsName); } public List findByGoodsMiaoshu(Object goodsMiaoshu) { return findByProperty(GOODS_MIAOSHU, goodsMiaoshu); } public List findByGoodsPic(Object goodsPic) { return findByProperty(GOODS_PIC, goodsPic); } public List findByGoodsYanse(Object goodsYanse) { return findByProperty(GOODS_YANSE, goodsYanse); } public List findByGoodsShichangjia(Object goodsShichangjia) { return findByProperty(GOODS_SHICHANGJIA, goodsShichangjia); } public List findByGoodsTejia(Object goodsTejia) { return findByProperty(GOODS_TEJIA, goodsTejia); } public List findByGoodsIsnottejia(Object goodsIsnottejia) { return findByProperty(GOODS_ISNOTTEJIA, goodsIsnottejia); } public List findByGoodsIsnottuijian(Object goodsIsnottuijian) { return findByProperty(GOODS_ISNOTTUIJIAN, goodsIsnottuijian); } public List findByGoodsCatelogId(Object goodsCatelogId) { return findByProperty(GOODS_CATELOG_ID, goodsCatelogId); } public List findAll() { log.debug("finding all TGoods instances"); try { String queryString = "from TGoods"; return getHibernateTemplate().find(queryString); } catch (RuntimeException re) { log.error("find all failed", re); throw re; } } 6.7 添加电影信息模块设计 6.7.1 添加电影信息模块概述 单击左面导航区中的“影票管理”分类,系统将打开已经存在的电影票的基本信息。点击添加按钮即可进入电影票的添加操作界面,该页面主要用于将电影信息添加到数据库中,以提供前台首页电影展示所需要的数据依据。

6.7.2 添加电影信息模块的实现 为了方便管理员的管理,左面的操作区采用了树形结构折叠功能,添加电影信息的功能也可以在里面找到。点击后即可看到添加影票信息的界面。如图6.5所示。

图6.7 添加电影信息界面 添加电影信息界面部分代码如下: public String goodsNoTejiaAdd() { TGoods goods=new TGoods(); goods.setGoodsCatelogId(goodsCatelogId); goods.setGoodsName(goodsName); goods.setGoodsMiaoshu(goodsMiaoshu); goods.setGoodsPic(fujian); goods.setGoodsShichangjia(goodsShichangjia); if(goodsTejia==0)//特格为0表示没有特价 { goods.setGoodsTejia(goodsShichangjia);// 如果不是特价。把这个电影的特价设置为市场价格 goods.setGoodsIsnottejia("no"); } else { goods.setGoodsTejia(goodsTejia); goods.setGoodsIsnottejia("yes"); } goods.setGoodsKucun(goodsKucun); goods.setGoodsDel("no"); goodsDAO.save(goods); this.setMessage("操作成功"); this.setPath("goodsManaNoTejia.action"); return "succeed"; } 第7章 系统的调试与测试 7.1 系统测试原理及原则 软件测试时作为后期在软件正式投入使用之前最关键的一个步骤,完美的通过了性能测试才能正式的供用户使用。测试是为了测试各类的性能指标是否达到了需求分析中所要达到的目标,也是为了描述对象和性能的相关特性的评价。系统测试就是是在正常条件和非正常条件的控制下的操作并参考操作结果的一个过程。

正常测试会陷入一个误区,就是为了找错误而测试,然而如果通过分析这些错误的分布和产生的原因,就可能会为以后使用相同开发过程的软件提供一个良好的改良方案和优化软件开发的方法。后期也能开发完善的测试方法,改善测试的有效性。

7.1.1 系统测试原理 测试主要依据是被试系统的研制任务书和技术规格书,是对软件雄体功能和性能的综合测试与评估。测试原理是软件测试活动的理论基础,测试方法是铡试原理的实际应用和获得测试数据的手段。基于软件的共性,对于软件的测试要遵循一般软件的测试原理和方法。同时,针对软件的特性,必须找到合适的测试方法。

测试用例的合理性对于软件的测试与评估具有关键作用,而如何使设计的用例、合理并且典型有效并不容易。所以应该与软件的研制人员以及最终用户一起,有针对性地研究实际操作环境并加以描述,形成合理的测试用例集。另一方面,软件运行环境的复杂程度对软件评估具有重要作用,所以应产生尽量逼真的运行背景以便于研究。

7.1.2 系统测试原则 序员应避免测试自己编写的程序;测试用例的设计必须包括预期的输出结果;测试用例应包括有效的和期望的输入情况,也要包括无效的和不期望的输入情况;所有的测试都应追溯到用户需求,所有测试活动都应该是有计划的,并且计划能够得到保障。只检查程序是否做了它应该做的事这仅完成了测试工作的一半,另一半则是要检查程序是否做了它不该做的事;一段程序中存在错误的概率与在这段程序中已发现的错误数成比例;测试上作必须有明确的目标;尽早地和不断地进行软件测试;穷举测试是不可能的,充分覆盖程序逻辑是有可能的。

7.2 影院订票系统的测试 这个网站系统要实现的功能有用户注册登陆、浏览电影票预订信息用户预订并填写订单、管理员对网站信息的各方面操作和维护等。根据上面介绍的测试原则,使用测试用例文档分别对系统进行测试。测试部分包括网站对数据库的访问和更新测试;对网站查询功能的测试;系统容错功能的测试。

7.3 调试过程及调试结果分析 7.3.1登陆功能的测试 系统运行后出现登陆界面,选择进入后台输入我设定好的账号:huangyan,然后输入错误的密码:1111,之后会弹出提示:用户密码错误。当输入正确的密码:huangyan之后,就进入了后台主界面。会员登陆,输入错误密码,会弹出提示:用户名或密码错误。

图7.1 管理员登陆错误界面 图7.2 用户登陆错误界面 7.3.2 管理员管理功能的测试 在后台管理员可以对影票进行增加和修改,同时对电影的类别也可以进行增加和删除,但是当删除的类别底下有电影的情况下,系统会弹出提示框:请删除此类别下的影片。如图7.3所示。

图7.3 删除类别错误界面 第8章 总结 随着毕业日子的到来,毕业设计也接近了尾声。经过了四个月的时间、我的毕业设计影院订票系统设计与实现》终于完成了,为了这个系统的完成,我投入了很大的精力,同时也收获了很多经验。

这个系统名称定为《影院订票系统设计与实现》,原因是我自己是个很喜欢看电影的人,所以在生活中就经常接触到影院订票系统。在使用中渐渐对这个系统产生了兴趣,于是决定了这个题目。我们日常里常见的影院订票系统大都包含了相同的功能,也是本系统所具有的功能:用户注册、登录;购票专区;订单查询;个人资料修改;添加电影信息查询用户信息;添加分类等。毕业设计前,根据我学的知识,我对软件开发的理解还仅仅是局限于编程,我觉得软件开发就是单纯的写程序。但是通过这一学期的毕业设计,我对计算机的技术有了更深一步的理解,深刻的认识到了程序开发不仅仅是编程,前面还需要需求分析,概要设计详细设计等很多重要的过程,而且程序开完完成后还需要进行软件的测试工作。根据查阅的资料,我知道要想完成我的毕设《影院订票系统》,我必须完成的几个步骤是市场调研、计划、分析、设计、编码、测试。首先我浏览了各大型网站、了解了其他的影院订票网站都包含的功能,然后布置了我电脑的环境,选择我的开发工具,MyEclipse9.0,SQL Server 2008,Tomcat6.0。

我的毕业设计影院订票系统》虽然已经完成,但同时,这个系统也有让我不满意的地方。我感觉最让我感到遗憾的一点就是,但是在设想这个系统的功能时,我希望添加一项在客户订票的时候可以按照自己的喜好来挑选座位,不幸的是,由于自己能力的不足使这个愿望最终没有成功。所以我希望以后的工作生活中我会不断的充实自己的知识,让自己更强大。

参考文献 [1] 明日科技编. Java从入门到精通[M]. 北京: 清华大学出版社, 2012:46—47 [2] Amir Albadvi, Ghazaleh Saddad. Journal of Hospitality Marketing & Management[J]. Lulea University of Technology, 2011, 21(02): 155—183 [3] Yi Liu, Juliana Sutanto. Electronic Markets[J]. ETH Zurich. 2012, (02): 83—93 [4] 崔强. 电子影票系统总体设计构想[J]. 中国电影科研所, 2011, (11): 43—44 [5] 常建功. Java Web典型模块与项目实战大全[M]. 北京: 清华大学出版社, 2011: 32—33 [6] 林信良. JSP & Servlet学习笔记[M]. 北京: 清华大学出版社, 2012—05: 179—180 [7] 李淼. 网页设计中Bootstrap CSS框架的应用与扩展[J]. 电子技术与软件工程, 2013, (17): 222—224 [8] 李慧云, 何震苇. HTML5技术与应用模式研究[J]. 中国电信股份有限公司广东研究院, 2012, (5): 25—29 [9] 赵姝菊. 基于Java Web项目开发之JavaBean应用探究[D]. 电脑知识与技术, 2012—05: 1094—1095 [10] 陈俊浩. 基于SQL Server数据库安全机制的研究与分析[J]. 信息通信, 2015(4): 120—121 [11] 张超. 基于JSP的数据库连接技术浅析[J]. 福建电脑, 2013, 28(12): 80—81 [12] 赵越, 杨丹, 王欣欣. 票务网站设计构想[J]. 首都经济贸易大学密云分校计算机系, 2011, (05): 27—28 [13] 甘洁静. SQL数据库的建立与管理[J]. 计算机光盘软件与应用, 2012, (4): 109—111 [14] 姜桂洪. SQL Server 2005数据库开发与应用[M]. 清华大学出版社, 2014: 1—6 [15] 李玉荣. 三层架构模式下登录与注册功能的设计与实现[J]. 濮阳职业技术学院, 2015(4): 110—111 致 谢 伴随着毕设论文的收尾,大学四年的生活也即将结束。通过这一学期的毕业设计,我对计算机的技术有了更深一步的理解,深刻的认识到了程序开发不仅仅是编程,前面还需要需求分析,概要设计详细设计等很多重要的过程,而且程序开完完成后还需要进行软件的测试工作。

在毕业设计过程中,得到了指导老师姜老师的指导与支持。在此特别感谢我的指导老师。指导老师的细心指导和大力支持,在总体结构、功能的把握上给予了非常大的帮助,同时跟我提供了很多资料的参考,并对我在编程、数据库设计等细节工作上给予了耐心的指导,对于我顺利完成这次毕业设计起到了关键性的作用。

通过这一阶段的努力,我的毕业论文《影院订票系统》终于完成了,在大学阶段,我在学习上和思想上都受益非浅,这除了自身的努力外,与各位老师、同学和朋友的关心、支持和鼓励是分不开的。在这我再一次对你们表示深深的感谢。我还要感谢我的母校——辽宁工业大学,以及在大学四年生活中给予我关心和帮助的老师和同学,是他们教会了我专业的知识和做人的道理。通过这次毕业设计我还明白了作为一名计算机专业的大学毕业生,我们要会的不仅仅是编写代码,更重要的是要有整体把握系统设计的能力。我会在以后的工作中不断学习,不断完善自己,为我的母校争光,为自己翻开辉煌的新篇章。

附 录 外文文献: Discussion on Optimization of database design A database consists of a file or a set of files. The information in these files may be broken down into records, each of which consists of one or more fields. Fields are the basic units of data storage, and each field typically contains information pertaining to one aspect or attribute of the entity described by the database. Using keywords and various sorting commands, users can rapidly search, rearrange, group, and select the fields in many records to retrieve or create reports on particular aggregates of data.  Database records and files must be organized to allow retrieval of the information. Early systems were arranged sequentially (i.e., alphabetically, numerically, or chronologically); the development of direct—access storage devices made possible random access to data via indexes. Queries are the main way users retrieve database information. Typically, the user provides a string of characters, and the computer searches the database for a corresponding sequence and provides the source materials in which those characters appear. A user can request, for example, all records in which the content of the field for a person’s last name is the word Smith.  In flat databases , records are organized according to a simple list of entities; many simple databases for personal computers are flat in structure. The records in hierarchical databases are organized in a treelike structure, with each level of records branching off into a set of smaller categories. Unlike hierarchical databases, which provide single links between sets of records at different levels, network databases create multiple linkages between sets by placing links, or pointers, to one set of records in another; the speed and versatility of network databases have led to their wide use in business.  Relational databases are used where associations among files or records cannot be expressed by links; a simple flat list becomes one table, or “relation”, and multiple relations can be mathematically associated to yield desired information. Object—oriented databases store and manipulate more complex data structures, called “objects”, which are organized into hierarchical classes that may inherit properties from classes higher in the chain; this database structure is the most flexible and adaptable.    With the development of database technology, people depend more and more on the business data to the computer. But the traditional file data storage and retrieval methods are not flexible and based on difficult to manage, and optimization design of database becomes the focus of concern. Mass data, how to effectively organize and process large database, so that people can easily, quickly and accurately, the completion of the data access operations, become the bottleneck of the construction and use of the database. The operation speed and efficiency is an important standard to measure the performance of database system, in order to ensure the system performance and throughput, need logical design and physical design of the database is optimized, which runs through the database design from beginning to end, this is the primary task of the database optimization design. This paper from the paradigm of optimization, index optimization, optimization and query optimization in four aspects of database optimization method design, and carries on the analysis to their comprehensive use. 1 paradigm optimization Results the logical database design is not only good, relationship model usually need to meet 2 conditions: the correct expression data semantics and avoid data redundancy, abnormal and inconsistent problems. In the design process, starting from the 2 basic conditions, do not care for this and lose that, so as to improve the performance of database in the correctness and ensure database. The paradigm was used to evaluate the relationship of quality standard model has some scientific. Usually a relational schema to BCNF or 3NF, is believed to have better performance. When a relational schema to BCNF, can effectively eliminate data redundancy and the abnormal phenomenon, but sometimes not necessarily keep the original function relation model dependence, destroy the data semantics. So the design should be balanced, first as far as possible the design into the BCNF mode set, if not up to keep the function dependence, reduce paradigm requires, into 3NF mode set, in order to ensure the correct expression data semantic pattern set. 2 index optimization The index is an important data structure in the database, its fundamental purpose is to improve the query efficiency, improve the performance of the system. But the index storage and maintenance operations at the same time can give the system space and time brings some negative effects, the system performance of sacrifice. So the design should be chosen as the useful indexes, to find the best balance between improving the inquiry speed and save the memory space: (1) in large relational databases, if handled the relation table of small, need not be indexed. Because the amount of data is small, direct scanning can be quickly to traverse the entire table, indexed it will increase the burden on the system. (2) if the data is updated frequently, the maintenance cost is greatly paid index, if the price exceeds the benefits of this query, the index is not desirable. (3) select the appropriate column is indexed to the balance of positive and negative index effect plays an important role in. Usually have the following characteristics: ① data column is indexed to define a primary key and foreign key columns of data; the need in the specified range in the fast or frequent query column; the need to sort order fast or frequent search column; the need for rapid or frequent together is included in the collection process. If any of the following circumstances are not consider creating index [2]: almost not involved in the columns in the query; the different value of less column, as in table student "gender" column only "male" and "female" 2 different values, it is not necessary to establish index; ③ consists of text, image etc. data type columns defined. (4) the index is clustered and nonclustered, indexing, consideration should be given to both the selection: often as field sort query results conditions should be built for the clustered index. For example, the query results to age sort, can establish a clustered index on the age field; when in some fields for the query conditions, large amounts of data need to return the local scope, should be in the field to establish a clustered index, while less query volume data obtained in this field, it is necessary to establish a non clustered index. Data such as return in a certain period of time, can consider to build a clustered index on the date field; ③ should establish a clustered index in the field content repetition larger, and when the data uniqueness is higher for a field, it is necessary to establish a non clustered index. For example, student achievement repeatability large, may consider the establishment of the clustered index record field has no absolute bounds on the indexed column and the type of index selection, in the practical application, make a concrete analysis of the elements, to reach the optimal performance system. 3 query optimization In all the operation of the database, query operations account for a large proportion, the query speed directly affects the life of application system, so the query design more optimization plays an important role in improving the overall database performance. Practice has proved, semantic equivalence queries can be found in many cases, and the choice of query different effects on the query efficiency greatly different, especially in some large—scale relational database application system. Based on the examples, the combination of database theory, discusses the use of query optimization in real systems. In 3 as a student management system: (1) the student registration form (S, SNO, SNAME AGE name, age, sex or SEX, SDEPT); (2) registration form (SNO SC learning school, course No. CNO, grade GRADE); (3) course registration form C (CNO, CNAME courses, curriculum, class teachers college CDEPT, TNAME). Optimization of 4 table Logical database design, based on the normalization theory put data into multiple related tables. But with the increasing of the degree of standardization, the query request number and complexity of connection table also increased, coupled complex system will impact the overall performance. In addition to some queries, using a single query to obtain the query results is a difficult task, especially for large database systems, not easy to examine the results of the query, the query to determine the correct or not very difficult. In view of this situation, to simplify the query by using temporary table. For example, query a students in a course grade. The use of high frequency of this query, the establishment of a temporary table TEMPSC (Student ID (SNO), (SNAME) the name, course name (CNAME), teachers (TNAME), score (GRADE)), and the S, C and SC on the query results into table TEMPSC. Subsequent query directly on the TEMPSC operation, simplifies the query work. As with most girls name query system. Using a single query is difficult to obtain the query results, you can create temporary table TEMPW (College (SDEPT), number (NUMBER)), the statistical departments the number of girls write the results of this table, then find out the largest number of department name in table TEMPW. By decomposing the operating process, the solution can be simplified. Use temporary tables to the attention of the update operation, in order to maintain consistency between data and the original table. After use, should delete, release the occupied space. In short, the database design, according to the specific circumstances of the above several aspects of the optimization strategy organically, as far as possible to make the system to achieve optimal efficiency. 译文:数据库优化设计方法初探 一个数据库由一个文件或文件集合组成。这些文件中的信息可分解成一个个记录,每个记录有一个或多个域。域是数据存储的基本单位,每个域一般含有由数据库描述的属于实体的一个方面或一个特性的信息用户使用键盘和各种排序命令,能够快速查找、重排、分组并在查找的许多记录中选择相应的域,建立特定集上的报表。

数据库记录和文件的组织必须确保能对信息进行检索。早期的系统是顺序组织的(如:字母顺序、数字顺序或时间顺序);直接访问存储设备的研制成功使得通过索引随机访问数据成为可能。用户检索数据库信息的主要方法是query(查询)。通常情况下,用户提供一个字符串,计算机在数据库中寻找相应的字符序列,并且给出字 符串在何处出现。比如,用户能够在所有记录中寻找所有last name域为Smith的记录。

在非结构化的数据库中,按照实体的一个简单列表组织记录;很多个人计算机的简易数据库是非结构的。层次型数据库按树型组织记录,每一层的记录分解成更小的属性集。层次型数据库在不同层的记录集之间提供一个单一链接,与此不同,网络型数据库在不同记录集之间提供多个链接,这是通过设置指向其它记录集的链或指针来实现的。网络型数据库的速度及多样性使其在企业中得到广泛应用。

关系不能用链表达时,使用关系型数据库。一个表或一个“关系”,就是一个简单的非结构列表。多个关系可通过数学关系提供所需信息。面向对象的数据库存储并处理更复杂的称为对象的数据结构,可组织成有层次的类,其中的每个类可以继承层次链中更高一级类的特性,这种数据库结构最灵活,最具适应性 随着数据库技术的发展,人们越来越依赖于计算机化的业务数据。但由于传统的基于文件的数据存储和检索方法不灵活且难于管理,因而数据库优化设计成为人们关注的问题。如何有效地组织和处理大型数据库的海量数据,使得人们能方便、准确、快捷地完成对数据的存取操作,成为对数据库的建设及使用的瓶颈。

运行速度及执行效率是衡量数据库系统性能的重要标准,为了保证系统性能和吞吐量,需要对数据库的逻辑设计和物理设计进行优化,并贯穿于数据库设计的始终,这就是数据库优化设计的首要任务。

本文从范式优化、索引优化、表的优化及查询优化四个方面探讨数据库优化设计的方法,并对它们的综合使用进行分析。

范式优化 数据库逻辑设计的结果不是惟一的,好的关系模式通常需要满足2个条件:正确表达数据语义和避免数据冗余、异常及不一致问题的出现。设计过程中,要从这2个基本条件出发,不要顾此失彼,这样才能在提高数据库性能的同时保证数据库的正确性。

将模式的范式作为评价关系模式优劣的标准具有一定的科学性。通常一个关系模式达到BCNF或3NF时,被认为具有较好的性能。当某关系模式达到BCNF时,可以有效消除数据冗余和异常现象,但有时不一定保持原关系模式的函数依赖关系,破坏了数据语义。因此在设计时应统筹兼顾,先尽可能设计成BCNF模式集,若此时达不到保持函数依赖的特点,则降低范式要求,改成3NF模式集,以保证模式集正确地表达数据语义。

索引优化 索引是数据库中重要的数据结构,它的根本目的是为了提高查询效率,改善系统性能。但对索引的存储和维护操作的同时会给系统的空间和时间上带来一些负面影响,牺牲一定的系统性能。因此设计时应尽量选择有用的索引,在提高查询速度和节省存储空间之间寻求最佳的平衡点: (1)在大型关系数据库中,若处理的关系表较小,则无需建立索引。因为数据量较小时,直接扫描便可很快遍历整个表,建立索引反而会加重系统负担。

(2)如果数据的更新比较频繁,维护索引所付出的代价则很大,若这种代价超出了查询上所获得的好处,此时索引不可取。

(3)选择合适的列建立索引对平衡索引的正负面影响有重要作用。通常在有如下特性的数据列建立索引:①定义有主键和外键的数据列;②需要在指定范围中快速或频繁查询的列;③需要按排序顺序快速或频繁检索的列;④在集合过程中需要快速或频繁组合到一起的列。

如有下列情况时则不考虑创建索引[2]:①在查询中几乎不涉及的列;②不同值少的列,比如在学生表的“性别”列上只有“男”与“女”2个不同值,就无必要建立索引;③由文本、图像等数据类型定义的列。

(4)索引分为聚集索引和非聚集索引,建立索引时,应考虑对两者的选择:①经常作为查询结果排序条件的字段应建为聚集索引。例如查询结果要对年龄排序,可在年龄字段上建立聚集索引;②当以某字段为查询条件,需要回传局部范围的大量数据时,应在此字段上建立聚集索引,而当查询所获得的数据量较少时,有必要在此字段上建立非聚集索引。例如回传某个时间段之间的数据,可考虑在日期字段上建聚集索引;③应在内容重复性较大的字段上建立聚集索引,而当某字段的数据惟一性较高时,有必要建立非聚集索引。例如学生的成绩重复性较大,可考虑在成绩字段上建立聚集索引对索引列和索引类型的选择没有绝对的界限,在实际应用中,要综合各要素点具体分析,以达到系统的性能综合最优。

查询优化 在数据库的所有操作中,查询操作占有很大的比例,查询速度的快慢直接影响到应用系统的生命力,因此设计较为优化的查询语句对提高数据库的整体性能有着重要的作用。实践证明,在许多情况下均可找到语义等价的查询,而选择不同的查询语句对查询效率的影响大不相同,尤其是在一些大规模的关系数据库应用系统中更加明显。本文以应用实例为基础,结合数据库理论,探讨查询优化技术在现实系统中的运用。

设在某学生管理系统中有如下3个关系: (1)学生登记表S(学号SNO,姓名SNAME,年龄AGE,性别SEX,院系SDEPT); (2)学习登记表SC(学号SNO,课程号CNO,成绩GRADE); (3)课程登记表C(课程号CNO,课程名CNAME,开课院系CDEPT,教师TNAME)。

表的优化 数据库逻辑设计时,依据范化理论把数据划分成多个相关的表。但随着规范化程度的增加,查询时要求联接的表的数目和复杂性也随之增加,系统复杂的联接运算将影响整体性能。另外对于某些查询要求,使用单个查询语句获得查询结果是较困难的工作,特别是对于大型数据库系统,不容易检查查询结果,要确定查询的正确与否非常困难。针对这些情况,通过引入临时表来简化查询

例如,查询某个学生某门课程的成绩。这个查询的使用频率较高,则对其建立一个临时表TEMPSC (学号(SNO)、姓名(SNAME)、课程名(CNAME)、教师(TNAME)、成绩(GRADE)),并将对表S、C及SC的查询结果写入表TEMPSC中。后续查询时直接对表TEMPSC操作即可,简化了查询工作。

又如查询具有最多女生的系的名称。使用单条查询语句获得查询结果较为困难,则可建立临时表TEMPW (院系(SDEPT)、人数(NUMBER)),先将各院系女生人数的统计结果写入此表,再在表TEMPW中查出人数最多的院系名称。通过分解操作过程,使解决办法得以简化。

使用临时表时要注意对它的更新操作,以保持与原始表之间数据的一致性。使用完毕后,应对其删除,释放其所占用的空间。

总之,数据库设计时,要根据具体情况将上述几个方面的优化策略有机地结合起来,尽可能使系统效率达到最优。

0 次访问