




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录TOC\o"1-3"\h\u18617摘要 -1-8119ABSTRACT -2-8271第1章概述 -4-326991.1目的和意义 -4-102491.2课题的项目背景 -4-237701.3开发平台简介 -4-289011.3.1ASP.NET简介 -4-108091.3.2B/S -5-140961.4系统开发硬件环境 -6-231731.5系统开发软件环境 -6-29930第2章需求分析 -7-121252.1系统功能需求 -7-233792.2输入要求 -7-74112.3用户界面良好、操作简单 -7-166992.4系统用例图 -8-112262.4.1影院工作人员用例图 -8-278462.4.2客户用例图 -8-210172.5系统数据流图 -9-27271第3章概要设计 -12-179143.1系统总体规划 -12-29733.1.1项目规划 -12-82393.1.2系统功能结构图 -12-106833.2系统模块设计 -13-41603.2.1用户模块 -13-21433.2.2影片模块 -13-157233.2.3大厅模块 -14-94063.2.4放映信息模块 -14-325893.2.5客户模块 -14-46683.2.6订单模块 -15-135843.3系统E-R模型分析 -15-121273.3.1实体分析 -15-304643.3.2系统整体的E-R图 -15-80963.3.3实体属性定义 -16-321673.3.4数据字典 -17-6284第4章详细设计 -18-130254.1数据库设计 -18-176724.2系统设计 -22-175484.2.1设计思路 -22-224684.2.2方法的说明 -23-3520第5章系统测试 -32-281815.1功能测试 -32-47815.2性能测试 -34-119825.3改进意见 -35-27801第6章总结 -36-114866.1今后努力的方向 -36-119196.2结束语 -36-5036致谢 -38-20667参考文献 -39-5003附录 -40-24466附录A:软件安装、使用 -40-30411附录B:光盘资料说明 -44-计算机与信息学院本科毕业设计(论文)40-影院票务管理系统的设计与实现摘要本文讲述了信息管理与信息系统的发展现状,并在充分了解影院的运作流程的基础上,分析了影院对影片管理、票务销售等的具体需求,给出了系统的整体设计方案以及详细设计方案。文中主要侧重于该系统软件方面的设计与实现,以及主要功能模块的分析和设计。该系统采用VisualStudio2005(C#)开发,软件界面简洁友好,真正体现了所见即所得的思想。数据库采用了SQLServer2005,充分考虑了系统的安全性和稳定性,能够及时有效地对整个系统的数据进行储存和维护。影院票务管理系统是应用于影院的电子售票的系统,有前台客户操作和后台影院工作人员操作两大部分组成。前台主要包括在线注册,客户登录,查看影片信息,对影片进行打分和评论操作,查看大厅信息,购买预售票,取消预售票,以及对预售票付款最终确定订单等功能。后台主要包括用户信息的添加、修改、删除,放映厅信息的添加、修改、删除,影片信息的添加、修改、删除,放映信息的添加、修改、删除,订单的查看以及生成报表等功能。系统代码分离分成了二个层次:应用层,数据库访问层和一个用来辅助的类库——实体层。应用层是作为跟用户交互的层次,用户的操作在应用层上实现,数据的输入以及采集在应用层上进行,数据的展示在应用层上完成;实体层是数据库中各个表字段的一个映射,每张表对应于一个实体类,它用来保存二个层之间传递时的数据值,保证数据不会丢失以及正确性和同步性;数据库访问层是直接与数据库交互的一层,是数据库的操作层,数据库中数据的添加、修改和删除都由它来完成。关键字:影院票务;B/S;ASP.NET;CSS+DIV;SQLServer2005;代码分离DesignandImplementation
of
cinema
ticketing
systemABSTRACTThisarticledescribesthedevelopmentstatusofinformationmanagementandinformationsystems,andfullyunderstandtheoperationofthetheaterprocessbasedontheanalysisofthespecificneedsofthetheateronfilmmanagement,ticketsales,theoverallsystemdesignanddetaileddesignprograms.ThepaperfocusesmainlyontheDesignandImplementationofthesystemsoftware,aswellasanalysisanddesignofmainfunctionmodules.ThesystemusestheVisualStudio2005(C#)development,softwareinterfaceissimpleandfriendly,andtrulyembodiestheideaofWYSIWYG.DatabaseusingSQLServer2005,givefullconsiderationtothesafetyandstabilityofthesystem,timelyandeffectivestorageandmaintenanceofthedataoftheentiresystem.
Cinematicketingmanagementsystemisusedinthetheaterofthee-ticketingsystem,front-officecustomeroperationsandbackstagetheaterstafftooperatethetwomajorcomponents.Front,includingonlineregistration,CustomerLogintoviewthemovieinformation,rateandreviewthefilm,viewthehallinformation,topurchaseadvancetickets,cancelthepre-saletickets,andadvanceticketpaymenttofinalizeordersandotherfunctions.Background,includinguserinformationtoadd,modify,delete,theaterinformationtoadd,modify,delete,videoinformationtoadd,modify,delete,screeninginformationtoadd,modify,delete,viewordersandgeneratereportsandotherfunctions.
Thesystemcodeseparationintotwolayers:applicationlayer,databaseaccesslayerandonefortheauxiliarylibrary-physicallayer.Theapplicationlayerasthelevelofinteractionwiththeuser,theuser'sactionsontheapplicationlayer,datainputandcollectionontheapplicationlayer,thedisplayofthedataattheapplicationlayer;physicallayeristhedatabasetablefieldsmappingeachtablecorrespondstoanentityclass,whichisusedtosavethevalueofthedatapassedbetweentwolayerstoensurethatdataisnotlostaswellasaccuracyandsynchronization;databaseaccesslayerisalayerofdirectinteractionwiththedatabase,operationofthedatabaselayer,datainthedatabasetoadd,modify,andremovedbyit.Keywords:CinemaTicket;B/S;ASP.NET;theCSS+DIV;SQLServer2005;codeseparation第1章概述1.1目的和意义影院售票系统是计算机技术与影院管理相结合的产物,通过影院售票系统实现了对影院的高效管理。随着计算机技术的不断提高,计算机已经深入到社会生活的各个角落。而采用人工管理的方法,不仅效率低,易出错,手续繁琐,而且耗费大量人力。为了满足售票人员对售票,订票,退票等进行高效的管理,在工作人员的具备一定的计算机操作能力的前提下,特编此影院售票系统软件以提高影院的管理效率。1.2课题的项目背景随着社会经济的快速发展,人们的娱乐活动越来越丰富,其中看电影占了很大的比例。开发此系统的目的是解决喜爱电影的人们买票难的问题。以前要买电影票必须到电影院买,这样既浪费时间,浪费精力,而且最终还不一定买到自己想看要的。有了本系统,可以很方便的让影迷在家上网查看影院的影片以及票务的信息,这样既省时又省力,可以同时了解到不同影片的信息,有更多的选择。本系统充分利用网络资源和人力资源。面对全球性影院观看热潮,国内外对影院观看的视觉需求,以及其规模的优势,其独有的互动效果和场内气愤赢得了越来越多的人的喜欢。1980~1984年平均产量达120部,每年观众人次平均在250亿左右。同时中国电影也进入一个蓬勃发展的新时期,中国美术片从形式到内部都极其富有民族色彩。伴随电影的发展,国内外的电子票务系统也告诉的发展,国内有许多的电子影院票务系统,如格瓦拉以及一些团购网站都有相关的内容。1.3开发平台简介1.3.1ASP.NET简介ASP.NET是Microsoft.NET的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.NET设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。ASP.NET提供了稳定的性能、优秀的升级性、更快速的开发、更简便的管理、全新的语言以及网络服务。贯穿整个ASP.NET的主题就是系统帮用户做了大部分不重要的琐碎的工作。ASP.NET支持多种语言,支持编译类语言,支持比如VB、VC++、C#等,它比这些编译类语言运行速度快,更适合编写大型应用。快速发展的分布式应用也需要更快速、更模块化、更易操作、更多平台支持和重复利用性更强的开发,需要一种新的技术来适应不同的系统,网络应用和网站需要提供一种更加强大的可升级的服务。ASP.NET能够适应上面的要求。1.3.2B/SB/S模式,即浏览器/服务器模式,是一种从传统的二层C/S模式发展起来的新的网络结构模式,其本质是三层结构C/S模式。在B/S模式中,客户端运行浏览器软件。浏览器以超文本形式向Web服务器提出访问数据库的要求,Web服务器接受客户端请求后,将这个请求转化为SQL语法,并交给数据库服务器,数据库服务器得到请求后,验证其合法性,并进行数据处理,然后将处理后的结果返回给Web服务器,Web服务器再一次将得到的所有结果进行转化,变成HTML文档形式,转发给客户端浏览器以友好的Web页面形式显示出来。在C/S结构模式下,应用系统被分为客户机和服务器两部分,其作用分别是Client主要用来管理接口,执行客户机应用程序、采集数据以及向Server发出应用请求,完成应用处理.Server主要用来承担系统的数据共享管理、通讯管理、文件管理和向Client提供服务,完成数据访问和事务处理。实现了功能分布,即由Client端承担了部分处理任务,但数据集中在Server中。在查询处理中,由Client提出查询请求,而Server完成对数据库的查询任务,查询结果通过网络传输到Client。B/S模式管理信息系统基本上克服了C/S模式管理信息系统的不足。B/S模式提供了一致的用户界面,B/S模式的应用软件都是基于Web浏览器的,这些浏览器的界面都很相似。对于无用户交互功能的页面,用户接触的界面都是一致的,从而可以降低软件的培训费用。系统基于Web设计,采用B/S结构体系,具有易安装、成本低、易升级、可扩充、完全开放、不受站点空间限制等特点。B/S模式具有更强的信息系统集成性,所有应用数据安装在服务器端,客户端无需安装任何软件,系统升级只需在服务器端进行升级操作。1.4系统开发硬件环境奔腾4以上CPU,10G以上硬盘空间,512MB以上内存,网络上行速度大于512KB/S,运行时对数据的保密性要求不高对一般的数据不要求进行加密。1.5系统开发软件环境服务器端操作系统:Windows7或WindowsXP.Net环境:.Netframework2.0数据库软件:SQLServerManagementStudio(SQLServer2005)浏览器:IE6.0或以上版本客户端操作系统:Windows7浏览器:IE6或以上版本第2章需求分析2.1系统功能需求提供系统人员基本信息的设置,包括添加、修改、删除;影片提供放映厅基本信息的设置,包括添加、修改、删除以及座位的查看;提供影片基本信息的设置,包括添加、修改、删除;提供放映信息基本信息的设置,包括添加、修改、删除;提供放映厅和影片广告的展示;提供各种票务信息的组合查询,包括放映信息、订单、座位;顾客可以预定影票,取消影票的预定;顾客可以对预订票进行模拟付款,付款之后不允许退票;工作人员对订单进行统计,并可生成报表;影片进行评分和放映日期统计,展示给顾客看;顾客可以对影片进行打分、评论,并且将评分前十名的影片展示出来;2.2输入要求输入数据主要有:客户邮箱,客户密码,手机号码,银行账号,用户名,用户密码,座位数,大厅号,价格,影片名,时长,主演、导演等。手机号码、银行账号、大厅号、座位数、价格、时长为整型数据,客户邮箱为邮箱格式,其余大部分为字符型。输入一般采用界面的形式,如文本框,下拉框,单选框,复选框等。2.3用户界面良好、操作简单系统页面一律采用CSS+DIV排版界面,统一的窗口,提示信息位置及字体大小颜色醒目。因此看起来美观简洁,操作简单易懂。对查询提供精确查询和模糊查询,又使用了“表格方式”的用户界面。对所有数据输入进行完整性和合法性检查,尽量减少操作错误。整个系统可用键盘或鼠标操作。在各输入处有提示信息,便于系统用户的输入。打印机输出和屏幕显示可同步进行,给用户“所见即所得”的新感受。2.4系统用例图2.4.1影院工作人员用例图系统的影院工作人员用例图如图2-1所示图2-1影院工作人员用例图2.4.2客户用例图系统的客户人员用例图如图2-2所示图2-2客户人员用例图2.5系统数据流图2.5.1工作人员数据流图本系统影院工作人员的操作数据流图如图2-3图2-3操作人员的操作数据流图2.5.1客户数据流图本系统顾客的操作数据流图如图2-4图2-4顾客的操作数据流图第3章概要设计3.1系统总体规划3.1.1项目规划影院票务管理系统是应用于影院的电子售票的系统,有前台客户操作和后台影院工作人员操作两大部分组成。前台功能模块前台主要包括在线注册,客户登录,查看影片信息,对影片进行打分和评论操作,查看大厅信息,购买预售票,取消预售票,以及对预售票付款最终确定订单等功能。后台功能模块后台主要包括用户信息的添加、修改、删除,放映厅信息的添加、修改、删除,影片信息的添加、修改、删除,放映信息的添加、修改、删除,订单的查看以及生成报表等功能。3.1.2系统功能结构图影院票务管理系统的前台系统功能图,如图3-1所示图3-1影院票务管理系统前台功能表影院票务管理系统的后台系统功能图,如图3-2所示图3-2影院票务管理系统后台功能表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系统E-R模型分析3.3.1实体分析根据系统分析,确定系统有以下几个实体:顾客,评分,大厅,电影,订单,报表,座位,放映信息,用户,共9个实体。3.3.2系统整体的E-R图E-R分析:一个大厅有多个座位,每个座位只能属于一个大厅;一个大厅可以有多个放映信息,一个放映信息只能在一个大厅内;每个影片有多个放映信息,每个放映信息只有一个影片;每个影片有多个评分和评论,每个评分和评论只对应于一个影片;每个客户可以有多次评分和评论,每个评分和评论只对应于一个客户;每个客户可以有多个订单,每个订单只属于一个客户;每个订单可以生成多个报表,每个报表只属于一个订单;每个用户(工作人员)可以生成多个报表;每个报表只对应于一个用户。系统的E-R图的设计如图3-3图3-3系统的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,排数,列数,预定)主键:座位ID;外键:大厅ID3.3.4数据字典数据字典(Datadictionary)是一种用户可以访问的记录数据库和应用程序源数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。被动数据字典是指修改时必须手工更新其内容的数据字典。数据字典最重要的作用是作为分析阶段的工具。任何字典最重要的用途都是供人查询对不了解的条目的解释,在结构化分析中,数据字典的作用是给数据流图上每个成分加以定义和说明。换句话说,数据流图上所有的成分的定义和解释的文字集合就是数据字典,而且在数据字典中建立的一组严密一致的定义很有助于改进分析员和用户的通信。后台数据字典:管理请求:对系统基本信息设置的请求,系统根据请求加载相应的处理界面;影片基本信息:片名,图片,上映日期,时长,语言,主演,导演,类型,简介;查询条件(订单):【是否付款||片名,大厅,场次】;订单信息:片名,大厅,座位号,场次,客户电话,购买时间;大厅基本信息:图片,座位数,简介;场次基本信息:片名,大厅,票价,放映时间。前台数据字典:查看首页命令:发送加载首页命令,系统加载首页;查看大厅命令:发送加载大厅命令,系统加载大厅界面展示给客户;付款或我的订单命令:查看当前登录的客户的订单;订单信息:片名,大厅,座位号,价格,开始时间。第4章详细设计4.1数据库设计根据需求分析、系统设计以及数据流图和数据字典可以设计系统的物理数据模型,系统的物理数据模型如图4-3所示图4-3系统的物理数据模型CDM图物理数据模型设计好之后,利用PowerDesigner生成相应的逻辑数据模型,系统的逻辑数据模型如图4-4所示图4-4系统的逻辑数据模型PDM图逻辑数据模型生成之后,PowerDesigner利用它生成crebas.sql文件,即可在SQLServerManagementStudio中执行此文件的SQL语句,继而生成了系统最终的数据库。本系统采用SQLServer2005数据库,系统数据库名为TheaterTicketManager。数据库中包含9张表,下面给出数据表结构:用户表用户表(tbl_User)主要用于保存影院工作人员的信息,该表的结构如表4-1所示。表4-1表tbl_User的结构字段名数据类型长度为空主键描述UserIDint 否是用户IDUserNamevarchar50否用户名UPassWordvarchar50否用户密码UserRightsint否用户权限客户表客户表(tbl_Customer)主要用于保存客户的信息,该表的结构如表4-2所示表4-2表tbl_Customer的结构字段名数据类型长度为空主键描述CustomerIDint否是客户IDCPassWordvarchar50否客户密码Emailvarchar150否登录邮箱PwdQuestionvarchar150否密保问题PwdAnswervarchar150否密保答案影片表影片表(tbl_Movie)主要用于保存影片的信息,该表的结构如表4-3所示表4-3表tbl_Movie的结构字段名数据类型长度空主键描述MovieIDint 否是影片IDMovieNamevarchar150否片名MovieImgvarchar150否影片图片MainActorsvarchar150是主演Directorvarchar50是主演BeOnDateTimedatetime是上映日期Languagevarchar50是语言Durationdecimal18,0否时长MovieTypevarchar100是类型Descriptionvarchar4000否影片描述影片客户表影片客户表(tbl_MovieCust)主要用于保存客户对影片的评分及评论的信息,该表的结构如表4-4所示表4-4表tbl_MovieCust的结构字段名数据类型长度空主键描述MovieIDint 否是影片IDCustomerIDint否是客户IDGradeNumint150是评分MovieCommentvarchar2000否评论CommentTimedatatime否评论时间得分表得分表(tbl_Grade)主要用于保存影片的平均分和获得的总分,该表的结构如表4-5所示表4-5表tbl_Grade的结构字段名数据类型长度空主键描述MovieIDint 否是影片IDGradeSumint否否总分GradeAvgdecimal18,1否平均分大厅表大厅表(tbl_Hall)主要用于保存放映大厅的信息,该表的结构如表4-6所示表4-6表tbl_Hall的结构字段名数据类型长度空主键描述HallIDint 否是大厅号HallSeatsint否座位数HallImgvarchar150否大厅图片Descriptionvarchar4000否大厅描述座位表座位表(tbl_Seats)主要用于保存放映座位的信息,该表的结构如表4-7所示表4-7表tbl_Seats的结构字段名数据类型长度空主键描述SeatIDint 否是座位IDHallIDint否大厅号SeatRowint否座位排数SeatColumnint否座位列数Orderedint否是否预订放映信息表放映信息表(tbl_Schedule)主要用于保存放映信息的信息,该表的结构如表4-8所示表4-8表tbl_Schedule的结构字段名数据类型长度空主键描述ScheduleIDint 否是放映信息IDMovieIDint否影片号HallIDint否大厅IDSchedulePriceint否价格BeginDateTimedatetime否开始时间订单表订单表(tbl_Order)主要用于保存订单的信息,该表的结构如表4-9所示表4-9表tbl_Order的结构字段名数据类型长度空主键描述OrderIDint 否是订单IDCustomerIDint否客户IDScheduleIDint否放映信息IDSeatIDint否座位IDBuyDateTimedatetime否预定时间Orderedint付款CustomerPhonevarchar50客户电话AuthCodeint验证码BankNumvarchar50银行账号至此系统最重要的部分数据库即已完成,在此基础上规范的进行系统的详细设计,实现系统的系统的基本功能。4.2系统设计4.2.1设计思路由于系统各个模块之间的关系,故采用代码分离方式进行系统的设计。使设计思路更加的清晰,有利于标准化,维护起来更加的方便,增加了代码的重复利用率,同时也增加了一定的安全性。但是也是有缺点的,此结构降低了系统的性能,因为系统业务必须通过层之间的依赖实现,也导致了级联的修改,因为某一功能业务的修改需要自上而下的进行。图4-5系统设计的二个层次以及实体层如图4-5系统代码分离分成了二个层次:应用层,数据库访问层和一个用来辅助的类库——实体层。应用层是作为跟用户交互的层次,用户的操作在应用层上实现,数据的输入以及采集在应用层上进行,数据的展示在应用层上完成;实体层是数据库中各个表字段的一个映射,每张表对应于一个实体类,它用来保存二个层之间传递时的数据值,保证数据不会丢失以及正确性和同步性;数据库访问层是直接与数据库交互的一层,是数据库的操作层,数据库中数据的添加、修改和删除都由它来完成。其中应用层的展示主要用到CSS+DIV的排版方式,某些验证用到javascript脚本语言。4.2.2方法的说明每个类中都有或多或少的方法,这些所有的方法实现整个系统的功能,调用非本类中的方法需要要将该方法定义为public类型,并在该类中创建一个包含目标方法类的实例对象,这样就可以通过该实例对象调用目标方法了。其中数据库的链接语句保存在配置文件Wen.config中,<addname="SqlConnection"connectionString="DataSource=WIN-EH6NGOUMVUB\SQLEXPRESS;InitialCatalog=TheaterTicketManager;IntegratedSecurity=True"/>,数据访问层中的类用staticstringsqlConnection=ConfigurationManager.ConnectionStrings["SqlConnection"].ToString();SqlConnectionconn=newSqlConnection(sqlConnection)就可以连接到数据库,从而对数据库进行操作。以下作为介绍系统实现的例子。图4-6影片添加如图4-6为影片添加的用户界面,界面上有要求输入的文本框,供选择的下拉列表框和复选框以及上传图片的上传控件。用户填写的数据需要进行验证的都会进行进行并给出一定的错误提示和数据填写提示。该界面中【确定】按钮的事件会将一条新的影片信息插入到数据库中。其中它的时间代码为:stringintegerPattern=@"^[1-9]+[0-9]*$";//数字验证正则stringpath=Server.MapPath("pictures");boolfileOK=false;if(txtMovieName.Text.Trim().ToString().Length==0){lblPrompt.Text="片名不能为空";}elseif(txtYear.Text.Trim().ToString().Length==0){lblPrompt.Text="年份不能为空";}elseif(!Regex.IsMatch(txtYear.Text.Trim().ToString(),integerPattern)){lblPrompt.Text="年份为整数";}elseif(txtYear.Text.Trim().ToString().Length!=4){lblPrompt.Text="年份为四位";}elseif(txtDuration.Text.Trim().ToString().Length==0){lblPrompt.Text="时长不能为空";}elseif(!Regex.IsMatch(txtDuration.Text.Trim().ToString(),integerPattern)){lblPrompt.Text="时长为整数";}elseif(txtLanguage.Text.Trim().ToString().Length==0){lblPrompt.Text="语言种类不能为空";}elseif(txtMainActors.Text.Trim().ToString().Length==0){lblPrompt.Text="主演不能为空";}elseif(txtDirector.Text.Trim().ToString().Length==0){lblPrompt.Text="导演不能为空";}elseif(cblType.SelectedItem==null){lblPrompt.Text="影片类型不能为空";}elseif(txtDescription.Text.Trim().ToString().Length==0){lblPrompt.Text="简介不能为空";}elseif(!fulImg.HasFile){Response.Write(fulImg.FileName);lblPrompt.Text="请选择影片图片";}elseif(fulImg.HasFile){stringfileExtension=Path.GetExtension(fulImg.FileName).ToLower();//需要用到命名空间System.IOstringtype="";string[]allowedExtensions={".gif",".jpg",".png",".jpeg"};for(inti=0;i<allowedExtensions.Length;i++){if(fileExtension==allowedExtensions[i]){fileOK=true;}}if(fileOK==false){lblPromptImg.Text="请选择(.gif,.jpg,.png,.jpeg)格式的图片";}elseif(fileOK==true){fulImg.SaveAs(path+"\\"+fulImg.FileName);movieEntity.movieName=txtMovieName.Text.Trim().ToString();movieEntity.movieImg=fulImg.FileName.Trim().ToString();movieEntity.mainActors=txtMainActors.Text.Trim().ToString();movieEntity.director=txtDirector.Text.Trim().ToString();movieEntity.beOnLineTime=Convert.ToDateTime(txtYear.Text.Trim().ToString()+"-"+ddlMonth.SelectedItem.Text.Trim().ToString()+"-"+ddlDay.SelectedItem.Text.Trim().ToString());movieEntity.language=txtLanguage.Text.Trim().ToString();movieEntity.duration=Convert.ToDecimal(txtDuration.Text.Trim().ToString());for(inti=0;i<cblType.Items.Count;i++){if(cblType.Items[i].Selected){type=type+cblType.Items[i].ToString()+"、";}}movieEntity.movieType=type.Substring(0,type.Length-1);movieEntity.description=txtDescription.Text.Trim().ToString();DataTabledt=movieDAO.getMovieByMovieName(txtMovieName.Text.Trim().ToString());if(dt.Rows.Count==0){movieDAO.InsertMovieInfo(movieEntity);lblPrompt.Text="影片添加成功";}elseif(dt.Rows.Count>0){lblPrompt.Text="影片信息已经存在";}}}其中调用了MovieDAO类中的方法getMovieByMovieName()检查影片信息是否已经存在,调用MovieDAO类中的方法InsertMovieInfo()插入一个新的影片记录到数据库中去。下面介绍MovieDAO中的这两个方法:///<summary>///根据片名查找影片///</summary>///<paramname="movieEntity"></param>///<returns></returns>publicDataTablegetMovieByMovieName(stringmovieName){stringsqlStr="select*fromtbl_MoviewhereMovieName='"+movieName+"'";conn.Open();SqlDataAdapterda=newSqlDataAdapter(sqlStr,conn);conn.Close();DataSetds=newDataSet();da.Fill(ds);DataTabledt=ds.Tables[0];returndt;}///<summary>///根据页码数选择影片信息///</summary>///<paramname="pgNum"></param>///<returns></returns>publicDataTablegetMovie(intpgNum){inttemp=5*pgNum;//涉及到每页的数目intsum=getAllMovie().Rows.Count;stringsqlStr="select*from(selecttop5*from(selecttop"+temp+"*fromtbl_MovieorderbyBeOnDateTimedesc)aorderbyBeOnDateTimeasc)borderbyBeOnDateTimedesc";//涉及到每页的数目if(sum%5!=0)//涉及到每页的数目{if(pgNum==(sum/5+1))//涉及到每页的数目{sqlStr="select*from(selecttop"+sum%5+"*from(selecttop"+temp+"*fromtbl_MovieorderbyBeOnDateTimedesc)aorderbyBeOnDateTimeasc)borderbyBeOnDateTimedesc";//涉及到每页的数目}}conn.Open();SqlDataAdapterda=newSqlDataAdapter(sqlStr,conn);conn.Close();DataSetds=newDataSet();da.Fill(ds);DataTabledt=ds.Tables[0];returndt;}由此可以看出调用本类以外方法的一个条件就是目标方法要是public类型的,另外一个条件就是要在调用目标方法的类中添加MovieDAOmovieDAO=newMovieDAO();MovieEntitymovieEntity=newMovieEntity();添加这两行代码即可,就可以轻松的实现不同类中方法的调用。然而【确定】按钮的事件方法和MovieDAO中的方法都用到了类MovieEntity,这也正体现了实体类的用处了,不同类之间数据的传递。实现按评分展现影片列表的方法如下:///<summary>///获取平均分排名在前名的影片///</summary>///<returns></returns>publicDataTablegetMovieTopTen(intnum){stringsqlStr="";if(num==5){sqlStr="select*fromtbl_MoviewhereMovieIDin(selecttop5MovieIDfromtbl_GradeorderbyGradeAvgdesc)";}elseif(num==10){sqlStr="select*fromtbl_MoviewhereMovieIDin(selecttop10MovieIDfromtbl_GradeorderbyGradeAvgdesc)";}conn.Open();SqlDataAdapterda=newSqlDataAdapter(sqlStr,conn);conn.Close();DataSetds=newDataSet();da.Fill(ds);returnds.Tables[0];}这里的参数是决定选出前十还是前五用来展示影片列表,系统前端首页传入参数值为5,首页上展示评分前五的影片,用户选择更多的时候将传入值为10的参数,系统将会展示评分前十的影片。图4-7客户的订单操作(付款和取消订单)如图4-7所示为客户对订单的操作,其中订单的展示,付款和取消订单都用到了OrderDAO中的方法,三个方法如下:///<summary>///根据客户信息获取订单详情///</summary>///<paramname="cid"></param>///<returns></returns>publicDataTablegetOrderByCid(intcid,intstatus){DateTimetime=DateTime.Now;time=time.AddDays(-2);//查找可以订票时间范围内的订单stringsqlStr="selecta.OrderID,d.SeatID,c.MovieName,b.HallID,d.SeatRow,d.SeatColumn,b.SchedulePrice,b.BeginDateTimefromtbl_Ordera,tbl_Scheduleb,tbl_Moviec,tbl_Seatsdwherea.ScheduleID=b.ScheduleIDandb.MovieID=c.MovieIDanda.CustomerID="+cid+"anda.BuyDateTime>='"+time+"'anda.SeatID=d.SeatID";if(status==2){sqlStr=sqlStr+"orderbyBuyDateTimedesc";}elseif(status==1){sqlStr=sqlStr+"anda.Ordered=1orderbyBuyDateTimedesc";}elseif(status==0){sqlStr=sqlStr+"anda.Ordered=0orderbyBuyDateTimedesc";}conn.Open();SqlDataAdapterda=newSqlDataAdapter(sqlStr,conn);conn.Close();DataSetds=newDataSet();da.Fill(ds);returnds.Tables[0];}系统自动调用这个方法即实现了图4-7中的订单列表的展现;///<summary>///根据订单ID付款之后修改订单信息///</summary>///<paramname="phone"></param>///<paramname="authCode"></param>///<paramname="oid"></param>publicvoidupdateOrderInfo(stringphone,intauthCode,stringbankNum,intoid){stringsqlStr="";sqlStr="updatetbl_OrdersetOrdered=1,CustPhone='"+phone+"',AuthCode="+authCode+",BankNum='"+bankNum+"'whereOrderID="+oid;conn.Open();SqlCommandcomm=newSqlCommand(sqlStr,conn);comm.ExecuteNonQuery();conn.Close();}图4-7中的【付款】按钮调用这个方法即实现了图4-7中的订单付款的操作;///<summary>///根据订单ID删除订单///</summary>///<paramname="oid"></param>publicvoiddeleteOrder(intoid){stringsqlStr="deletefromtbl_OrderwhereOrderID="+oid;conn.Open();SqlCommandcomm=newSqlCommand(sqlStr,conn);comm.ExecuteNonQuery();conn.Close();}图4-7中的【取消预定】按钮调用这个方法即实现了图4-7中的订单取消的操作。以上为几个系统设计的例子,整个系统就是按照这样的思路实现功能。数据访问层中的类中的很多方法会被应用层的控件事件或者方法重复调用,实现了代码的复用,减少了一定的工作量。第5章系统测试5.1功能测试本系统的测试主要是功能测试,测试系统的功能的时候已正确的完成。功能测试的主要内容是按实际操作的数据向系统的各个功能模块输入数据,检测输出结果是否符合预期要求。例如:大厅的添加和订单的生成报表,详细如下:图5-1大厅添加失败图5-2大厅添加输入正确的数据图5-3大厅添加之后同样会给出相应的提示图5-4订单列表的展示图5-5生成exel文件的报表以生成时间为名称经测试,系统的功能基本已经完成。5.2性能测试在对各个模块的测试完成后对整个系统做一个完整的测试,以检验各模块在联合运行时运行结果是否符合预期要求,运行时占用的系统资源的大小,系统功能执行所用的时间。由于本系统是基于B\S模式开发的。因此,系统的性能很大程度上与服务器和网络速度有很大的关系。经测试,在CPU:2.00GHz,内存3G的硬件配置和WindowsXP+IIS5.1的软件配置上运行本系统,均能正常运行。经测试结果属于正常接受范围,不会造成数据库和系统崩溃的现象。5.3改进意见由于本人技术水平有限,完成时间仓促,故系统还存在许多不足之处。经过测试,发现系统并不是完美的系统,存在瑕疵。例如订座位时的不方便,由于缺少技术与经验无法实现目前市场上的订座功能,这是最大的瑕疵;下拉列表框无法显示与数据库中相对应的数据,用了文本框与下拉列表框的显隐解决这个问题,等等。还有很多的技术难题需要去攻关,需要尽量多的利用技术实现系统的完美性。第6章总结6.1今后努力的方向个人觉得这个课题的立足点非常好,非常有实际意义,如果能将系统的功能进一步完善并投入使用,那将为我们的实训课程带来很大的便利。一直希望能在系统中用上不一样的技术,首先想要对Javascript了解,用这门强大的脚本语言帮助实现一些功能,既可以使页面更加的美观,在一定程度上减少了服务器的压力,有助于提高系统的性能。总之要精通一门技术,是要建立在这个领域的知识架构上的,只有这样才能适应当前市场或者可预见的潜在未来市场的要求。6.2结束语在论文的最后,我想说说自己的许多感受。在这一段做毕业设计的日子里,除了遇到了许多的技术问题以外,感觉到更多的是做事方法的问题。自己在做毕业设计的时候会遇到许多的困难,比如在外实习的时间问题,对于惰性的克服,对于某一阶段,某些东西的取舍问题。毕业设计是我们大学阶段的最后一道槛,跨过之后我们将开始自己崭新的人生,翻开人生新的篇章。学校学到的知识可以说是十分的有限,我们需要花更多的时间去掌握现当今正流行甚至是即将流行的技术与知识,只有在不断地充实过程中,我们的工作、生活才会更加的绚丽多彩。这次的毕设既是我大学期间的一个结点,也是我将来工作的新的开始。虽然我做的软件在功能方面、安全性方面等还有很大的缺陷,但是这样一个完整的过程,使我在实践中吸取了不少的经验,相信在日后会对自己有更多的帮助。软件工程是一个大的思想体系,今后无论做程序的开发、测试或者转行做其他的。我想这个工程化的思想方法始终是有用的,在大学里学的很多理论,日后用到的时候一定都会觉得很感慨。在编码实现阶段,我发觉自己有很多不懂的地方,学校里学的东西完全不能解决复杂的应用,而且web应用的开发,需要有一个系统的知识架构,单单了解一方面是不行的。希望在未来的工作和学习过程中能够不断加强自己对程序的理解和领悟,开发出更多更完善、实用的系统。由于本人的知识水平和实践经验有限,论文中不免有一些疏漏、不当甚至错误之处,希望各位老师给予批评指正。致谢在这次制作毕业设计的过程中,我获得了来自于同学们和老师们的帮助。尤其是导师XXX老师对我的指导。从最开始的需求分析到程序代码的实现,XXX老师帮我解决了许多的困惑,并且提了不少的建议。尤其是XXX老师在非常忙的时候,依然会细心的帮我指导,帮助我顺利的完成毕业设计。另外,我也感谢校方给予我这样一次的机会,能够独立地完成一个课题,并在这个过程当中,给予我们各种方便,使我们在即将离校的最后一段时间里,能够更多学习一些实践应用知识,增强了我们实践操作和动手应用能力,提高了独立思考的能力。再一次对我的母校表示感谢,即将毕业,我感谢母校
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西北工业大学《建设工程成本规划与控制》2023-2024学年第二学期期末试卷
- 销售管理模块培训课程
- 湖南科技大学《影视话剧表演》2023-2024学年第二学期期末试卷
- 福州英华职业学院《影视经典研究》2023-2024学年第一学期期末试卷
- 2025年湖南省株洲市7校高三第一次调研测生物试题含解析
- 南昌工学院《高等数学E》2023-2024学年第一学期期末试卷
- 新乡学院《危险废物利用与处理》2023-2024学年第二学期期末试卷
- 护理查房:急性酒精中毒
- 江西财经大学现代经济管理学院《庭院绿化》2023-2024学年第二学期期末试卷
- 河南工业和信息化职业学院《商务日语口语》2023-2024学年第二学期期末试卷
- 2024年广东省2024届高三二模化学试卷(含答案)
- 压力容器操作培训
- 中国企业危机年度报告(2024)-复旦知微研究院
- 尿道狭窄诊疗指南
- 9挫折与心理防御机制
- 宠物直播方案
- 中图版地理必修一教学大纲
- 骨科关节置换术后康复PDCA循环案例
- 腹腔引流管的护理查房
- 光伏并网前单位工程验收报告-2023
- 自动驾驶培训资料
评论
0/150
提交评论