电影订票系统

电影订票系统

ID:21361946

大小:5.00 MB

页数:30页

时间:2018-10-21

上传者:U-21680
电影订票系统_第1页
电影订票系统_第2页
电影订票系统_第3页
电影订票系统_第4页
电影订票系统_第5页
资源描述:

《电影订票系统》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

电影订票系统组长:王润森组员:尹佩珊、谢楚璇、吴绮玲完成日期:2013年12月10日星期二 目录1系统使用说明及软件基本功能31.1用户31.1.1用户注册31.1.2用户登陆41.1.3浏览电影41.1.4用户资料管理51.1.5浏览电影简介61.1.6观看预告片71.1.7订购电影81.2管理员91.2.1后台用户登录91.2.2后台管理员主页91.2.3增加电影101.2.4更新电影页面111.2.5删除电影131.2.6座位管理141.2.7现场订票151.2.8插入预告片161.3功能结构图172数据库设计182.1数据字典182.1.1数据项182.1.2数据结构202.2结构设计202.2.1概念结构设计202.2.2逻辑结构设计212.2.3物理结构设计213关键代码描述263.1动态生成上映电影信息263.2选座窗口使用DataGridView控件显示座位信息263.3控制电影排期时间,避免冲突263.4模拟交易过程284系统报告测试284.1存在问题以及解决方案284.2不足305小组详细分工30 1系统使用说明及软件基本功能1.1用户1.1.1用户注册功能介绍:为用户提供一个注册会员的友好界面。使用说明:输入注册信息,包括用户名,用户密码,昵称,性别,邮箱,手机号码,邮箱,QQ号码。输入完成后点注册按钮完成注册。如果信息填写的格式不对,则无法完成注册,并返回提示信息。图1-1-1用户注册界面 1.1.2用户登陆功能介绍:为用户提供一个登录界面。使用说明:输入帐号、密码均正确,才登录成功,否则登录失败,若用户名或者密码为空,则返回提示信息。图1-1-2用户登录界面1.1.3浏览电影功能介绍:通过一个友好的欢迎界面显示可订票的电影信息,待上映的电影信息等。使用说明:电影按时间先后进行排列,用户可以了解各电影的放映顺序。页面左上角显示订票入口和修改个人信息入口。 图1-1-3电影的界面1.1.4用户资料管理功能介绍:为用户提供修改个人资料的界面使用说明:此界面提供用户个人信息(包括用户名,用户密码,昵称,性别,邮箱,手机号码,邮箱,QQ号码)的完善与修改。用户密码采用的是MD5加密算法,修改密码时会弹出密码修改对话框,用户需要输入原始密码,新密码,还要进行新密码确认,若原始密码错误,则返回提示信息并无法进行密码修改。 图1-1-4用户资料管理界面1.1.5浏览电影简介功能介绍:为用户提供一个电影简介的页面,用户可以选择订购该影片,购买的票数,放映时间,放映厅都会在此页面显示。使用说明:用户可以查看电影库中所正在上映电影的介绍(包括导演,主演,时长,语言,类型,上映时间,票价,简介),可以在线订购。当用户点击选票按钮时,用户将被转到所选电影订购页面。 图1-1-5电影简介界面1.1.6观看预告片功能介绍:为用户提供观看预告片功能。使用说明:点击此按钮,用户可以观看电影的预告片,以此决定是否购票。 图1-1-6观看预告片1.1.7订购电影功能介绍:为用户提供选择观看座位,订购电影票的界面。使用说明:用户可以选择灰色座位,红色座位表示不可选,黄色座位表示已选。点击确认购买时,当用户选择完之后,将被转到售票处结算,并自动扣除金额。完成支付后,用户会收到支付成功短信,可凭借短信到前台取票。用户可点击取消订座按钮取消订座,但无法取消别人所订的票。 图1-1-7电影订票界面1.2管理员1.2.1后台用户登录功能介绍:后台用户即系统管理员,系统管理员将通过专有的入口登录到该系统,对用户不可见。使用说明:管理员通过输入账号、密码进入系统管理界面,成功登陆之后,可对电影票的信息进行操作、管理及对电影进行更新等操作。1.2.2后台管理员主页功能介绍:为管理员提供一个对电影信息的综合管理平台使用说明:电影按时间先后进行排列,管理员可以了解各电影的放映顺序,每部电影下方均提供更新和删除入口。页面左上角显示现场购票入口、修改个人信息入口和增加电影入口。 图1-2-1管理员界面1.2.3增加电影功能介绍:为管理员提供一个增加电影的界面使用说明:点击“增加电影”按钮进入该页面,填写电影的详细信息,上传电影海报,点击下方“增加”按钮即可成功增加一部电影。图1-2-2管理员增加电影的界面 1.2.4更新电影页面功能介绍:为管理员提供一个可以修改电影详细信息、更新电影上映场次的界面。使用说明:1.点击电影下方“更新”按钮进入该页面,可以对电影详细信息进行修改,修改完毕点击“更新”按钮即可保存。通过下方对放映厅的选择和对上映日期和开始时间(结束时间会根据电影时长自动进行更新)的填写,点击“新增”按钮及可增加该电影的上映场次。【假如上映时间在当前时间之前,则提示管理员重新输入。】图1-2-3管理员更新电影的界面(1)2.若要删除该电影的某个上映场次,点击该上映场次的“删除”按钮即可成功删除。【假如已有订座,则无法删除。】 图1-2-4管理员更新电影的界面(2)3.若填写了新增的上映场次,没有点击“新增”按钮,却点击了“删除”按钮,则会弹出“没有更新…怎么删除…”的提醒窗口。 图1-2-5管理员更新电影的界面(3)1.2.5删除电影功能介绍:为管理员提供一个删除电影的入口使用说明:点击待删除电影下方的“删除”按钮,在弹出的窗口中点击“是”即可成功删除该电影。【假如已有订座则无法删除,若所有排期均无订座,则可连同电影、排期一同删除。】 图1-2-6管理员删除电影的界面1.2.6座位管理功能介绍:为管理员提供一个管理座位的界面使用说明:1.若管理员发现某个座位是不可用的,则选中该座位,点击右下角“设置为不可用”按钮,即可把该座位设置为不可用,颜色显示为红色。 图1-2-7座位管理界面(1)2.若需要把某个不可用的座位设置为可用,即选中该座位,点击右下角“设置为不可用”按钮,即可把该座位设置为可用,颜色显示为灰色。图1-2-8座位管理界面(2)1.2.7插入预告片功能介绍: 管理员可插入预告片供观众观看。使用说明:点击“插入预告片”按钮进入该页面,从本机中选中视频便可将视频文件名插入到数据库里面,并复制预告片文件到本目录下。图1-2-9插入预告片1.2.8现场订票功能介绍:为管理员提供一个替用户现场选票的页面。使用说明:点击“购票”按钮进入该页面,选中座位,点击下方“订座”按钮成功购票,在弹出的窗口中点击“确定”按钮即可。该座位颜色改为黄色,意为该座位以被选中。 图1-2-10现场订票界面1.3功能结构图图1-3-1用户功能结构 图1-3-2管理员功能结构2数据库设计2.1数据字典2.1.1数据项客户信息表(customers)字段类型允许为空是否为主键描述c_idvarchar(20)否主键客户账号c_passwardvarchar(20)否否客户密码c_namevarchar(20)否否客户名字sexvarchar(2)是否客户性别phonevarchar(30)否否客户电话emailvarchar(40)是否客户邮箱qqvarchar(20)是否客户qq号电影信息表(films)字段类型允许为空是否为主键描述f_idint否主键电影编号f_namevarchar(50)否否电影名starvarchar(100)是否主演directorvarchar(30)是否导演 durationvarchar(10)是否片长languagesvarchar(20)是否语言f_typevarchar(50)是否类型descriptionsvarchar(1000)是否简介priceint是否价格posterimage是否电影海报startdatedate是否上映日期prevue_pathvarchar(500)是否预告片排期信息表(schedules)字段类型允许为空是否为主键描述sch_idint否主键排期编号f_idint是外键电影编号h_idint否否放映厅号datesdate否否放映日期start_hrvarchar(2)否否放映开始的小时start_minvarchar(2)否否放映开始的分钟end_hrvarchar(2)否否放映结束的小时end_minvarchar(2)否否放映结束的分钟座位信息表(seats)字段类型允许为空是否为主键描述s_idint否主键座位编号sch_idint否外键排期编号rowint是否第i排colint是否第i列isActivebit是否是否已订订单信息表(orders)字段类型允许为空是否为主键描述o_idint否主键订单编号c_idvarchar(20)否外键客户账号sch_idInt否外键排期编号s_idInt否外键座位编号way_of_paymentvarchar(40)否否支付方式datesdate否否订单日期 2.1.2数据结构数据结构名组成customersc_id、c_password、c_name、sex、phone、email、qqfilmsf_id、f_name、star、director、duration、languages、f_type、descriptions、price、poster、startdate、prevue_pathschedulessch_id、f_id、h_id、dates、start_hr、start_min、end_hr、end_minseatss_id、sch_id、row、col、isActiveorderso_id、c_id、sch_id、s_id、way_of_payment、dates2.2结构设计2.2.1概念结构设计E-R图2.2.2逻辑结构设计关系模式customers(c_id、c_password、c_name、sex、phone、email、qq)films(f_id、f_name、star、director、duration、languages、f_type、descriptions、price、 poster、startdate、prevue_path)schedules(sch_id、f_id、h_id、dates、start_hr、start_min、end_hr、end_min)seats(s_id、sch_id、h_id、row、col、isActive)orders(o_id、c_id、sch_id、s_id、way_of_payment、dates)2.2.3物理结构设计建表代码USE[master]GO/******Object:Database[CinemaBookingSystem]ScriptDate:12/07/201314:40:28******/CREATEDATABASE[CinemaBookingSystem]GOUSE[CinemaBookingSystem]GO/******Object:Table[dbo].[films]ScriptDate:12/07/201314:37:50******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_PADDINGONGOCREATETABLE[dbo].[films]([f_id][int]IDENTITY(1,1)NOTNULL,[f_name][varchar](50)NOTNULL,[star][varchar](100)NULL,[director][varchar](30)NULL,[duration][varchar](10)NULL,[languages][varchar](20)NULL,[f_type][varchar](50)NULL,[descriptions][varchar](1000)NULL,[price][int]NULL,[poster][image]NULL,[startdate][date]NULL,[prevue_path][varchar](500)NULL,CONSTRAINT[PK__films__2911CBED03317E3D]PRIMARYKEYCLUSTERED([f_id]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]TEXTIMAGE_ON[PRIMARY] GOSETANSI_PADDINGOFFGO/******Object:Table[dbo].[customers]ScriptDate:12/07/201314:37:50******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_PADDINGONGOCREATETABLE[dbo].[customers]([c_id][varchar](20)NOTNULL,[c_password][varchar](20)NOTNULL,[c_name][varchar](20)NOTNULL,[sex][varchar](2)NULL,[phone][varchar](30)NOTNULL,[email][varchar](40)NULL,[qq][varchar](20)NULL,PRIMARYKEYCLUSTERED([c_id]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GOSETANSI_PADDINGOFFGO/******Object:Table[dbo].[schedules]ScriptDate:12/07/201314:37:50******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_PADDINGONGOCREATETABLE[dbo].[schedules]([sch_id][int]IDENTITY(1,1)NOTNULL,[f_id][int]NOTNULL,[h_id][int]NULL,[dates][date]NULL,[start_hr][varchar](2)NULL,[start_min][varchar](2)NULL,[end_hr][varchar](2)NULL,[end_min][varchar](2)NULL,CONSTRAINT[PK__schedule__9A5C8C7C1367E606]PRIMARYKEYCLUSTERED ([sch_id]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GOSETANSI_PADDINGOFFGO/******Object:Table[dbo].[seats]ScriptDate:12/07/201314:37:50******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE[dbo].[seats]([sch_id][int]NOTNULL,[s_id][int]IDENTITY(1,1)NOTNULL,[row][int]NULL,[col][int]NULL,[isActive][bit]NULL,CONSTRAINT[PK__seats__2F3684F40EA330E9]PRIMARYKEYCLUSTERED([s_id]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GO/******Object:Table[dbo].[orders]ScriptDate:12/07/201314:37:50******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_PADDINGONGOCREATETABLE[dbo].[orders]([o_id][int]IDENTITY(1,1)NOTNULL,[c_id][varchar](20)NOTNULL,[way_of_payment][varchar](40)NOTNULL,[dates][date]NOTNULL,[sch_id][int]NOTNULL,[s_id][int]NOTNULL,CONSTRAINT[PK__orders__904BC20E619B8048]PRIMARYKEYCLUSTERED([o_id]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF, ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GOSETANSI_PADDINGOFFGO/******Object:Check[CK__customers__sex__1DB06A4F]ScriptDate:12/07/201314:37:50******/ALTERTABLE[dbo].[customers]WITHCHECKADDCHECK(([sex]='男'?OR[sex]='女'))GO/******Object:Check[CK__customers__sex__2F10007B]ScriptDate:12/07/201314:37:50******/ALTERTABLE[dbo].[customers]WITHCHECKADDCHECK(([sex]='男'?OR[sex]='女'))GO/******Object:Check[CK__schedules__end_h__173876EA]ScriptDate:12/07/201314:37:50******/ALTERTABLE[dbo].[schedules]WITHCHECKADDCONSTRAINT[CK__schedules__end_h__173876EA]CHECK(([end_hr]>=(0)AND[end_hr]<(24)))GOALTERTABLE[dbo].[schedules]CHECKCONSTRAINT[CK__schedules__end_h__173876EA]GO/******Object:Check[CK__schedules__end_m__182C9B23]ScriptDate:12/07/201314:37:50******/ALTERTABLE[dbo].[schedules]WITHCHECKADDCONSTRAINT[CK__schedules__end_m__182C9B23]CHECK(([end_min]>=(0)AND[end_min]<(60)))GOALTERTABLE[dbo].[schedules]CHECKCONSTRAINT[CK__schedules__end_m__182C9B23]GO/******Object:Check[CK__schedules__start__15502E78]ScriptDate:12/07/201314:37:50******/ALTERTABLE[dbo].[schedules]WITHCHECKADDCONSTRAINT[CK__schedules__start__15502E78]CHECK(([start_hr]>=(0)AND[start_hr]<(24)))GOALTERTABLE[dbo].[schedules]CHECKCONSTRAINT[CK__schedules__start__15502E78]GO/******Object:Check[CK__schedules__start__164452B1]ScriptDate:12/07/201314:37:50******/ALTERTABLE[dbo].[schedules]WITHCHECKADDCONSTRAINT[CK__schedules__start__164452B1]CHECK(([start_min]>=(0)AND[start_min]<(60)))GOALTERTABLE[dbo].[schedules]CHECKCONSTRAINT[CK__schedules__start__164452B1]GO/******Object:ForeignKey[FK__orders__c_id__6383C8BA]ScriptDate:12/07/201314:37:50******/ALTERTABLE[dbo].[orders]WITHCHECKADDCONSTRAINT[FK__orders__c_id__6383C8BA] FOREIGNKEY([c_id])REFERENCES[dbo].[customers]([c_id])ONDELETECASCADEGOALTERTABLE[dbo].[orders]CHECKCONSTRAINT[FK__orders__c_id__6383C8BA]GO/******Object:ForeignKey[FK__orders__s_id__656C112C]ScriptDate:12/07/201314:37:50******/ALTERTABLE[dbo].[orders]WITHCHECKADDCONSTRAINT[FK__orders__s_id__656C112C]FOREIGNKEY([s_id])REFERENCES[dbo].[seats]([s_id])ONDELETECASCADEGOALTERTABLE[dbo].[orders]CHECKCONSTRAINT[FK__orders__s_id__656C112C]GO/******Object:ForeignKey[FK__orders__sch_id__6477ECF3]ScriptDate:12/07/201314:37:50******/ALTERTABLE[dbo].[orders]WITHCHECKADDCONSTRAINT[FK__orders__sch_id__6477ECF3]FOREIGNKEY([sch_id])REFERENCES[dbo].[schedules]([sch_id])ONDELETECASCADEGOALTERTABLE[dbo].[orders]CHECKCONSTRAINT[FK__orders__sch_id__6477ECF3]GO/******Object:ForeignKey[FK__schedules__f_id__1920BF5C]ScriptDate:12/07/201314:37:50******/ALTERTABLE[dbo].[schedules]WITHCHECKADDCONSTRAINT[FK__schedules__f_id__1920BF5C]FOREIGNKEY([f_id])REFERENCES[dbo].[films]([f_id])ONDELETECASCADEGOALTERTABLE[dbo].[schedules]CHECKCONSTRAINT[FK__schedules__f_id__1920BF5C]GO/******Object:ForeignKey[FK_seats_schedules]ScriptDate:12/07/201314:37:50******/ALTERTABLE[dbo].[seats]WITHCHECKADDCONSTRAINT[FK_seats_schedules]FOREIGNKEY([sch_id])REFERENCES[dbo].[schedules]([sch_id])GOALTERTABLE[dbo].[seats]CHECKCONSTRAINT[FK_seats_schedules]GO 3关键代码描述3.1动态生成上映电影信息先将所有电影加载到DataTable里面,再使用foreach从DataTable里面取出电影信息,每取得一条电影信息,则new一个放置电影海报的PictureBox和Text为电影名的Button(若身份为管理员,则还有更新和删除按钮)。手动设置控件的各种属性和事件,使用条件判断语句:if(xGap+x*(pb.Width+xGap)+pb.Width>panelOfGroupBox.Width)实现当电影在一行内放不下时(即大于panel的宽度),自动更改后面电影的Location,并且panel停靠在父窗口gb_Movies上,gb_Movies的Dock属性为Fill,并且窗体默认最大化且不能更改,从而实现了在不同屏幕大小的计算机上运行都能有同样的效果(不会超出显示屏的宽度)。并能实现鼠标移动到图片上时放大图片效果和点击图片或按钮弹出电影详细信息窗口。3.2选座窗口使用DataGridView控件显示座位信息1.由于考虑到直接将图片转化为二进制数据存进数据库作为座位的使用情况带来操作上的不方便以及空间上的浪费,本系统使用bit类型来储存座位使用的3种情况,分别是可选(Null表示)、不可选(0表示)、已选(1表示),其中“不可选”状态由管理员设定以灵活地使用座位(防止座位不存在或座位维修却被用户选中的情况的发生)。2.在显示座位使用情况下,本系统使用DataGridView控件,在窗体弹出后立即载入该排期的详细信息(包括电影名、放映厅以及上映时间),并通过以上信息从数据库里面取出该排期的座位情况,再根据座位使用情况在DataGridView的单元格上增加图片,并根据座位的数量动态增加DataGridView的行数(1行10个座位,超出则新增一行)。3.当用户选了座位后,重新加载座位表更新座位信息,并在选座中加入了并发控制,一旦发现冲突,立刻回滚。3.3控制电影排期时间,避免冲突1.更新或新增电影排期前,先调用CheckScheduleRepetition()函数,从数据库里面取出上映日期和放映厅都相同而且满足一下3个条件之一的数据:① 新增电影的开始时间在已存在电影的开始时间和结束时间之间;(新增电影的开始时间可等于已存在电影的结束时间,但不能等于已存在电影的开始时间。)代码:(datediff(mi,cast(convert(varchar(10),start_hr+':'+start_min+':00',108)asdatetime),cast(convert(varchar(10),@StartHour+':'+@StartMinute+':00',108)asdatetime))>=0anddatediff(mi,cast(convert(varchar(10),End_hr+':'+End_min+':00',108)asdatetime),cast(convert(varchar(10),@StartHour+':'+@StartMinute+':00',108)asdatetime))<0)②新增电影的结束时间在已存在电影的开始时间和结束时间之间;(新增电影的结束时间可等于已存在电影的开始时间,但不能等于已存在电影的结束时间。)代码:(datediff(mi,cast(convert(varchar(10),end_hr+':'+end_min+':00',108)asdatetime),cast(convert(varchar(10),@EndHour+':'+@EndMinute+':00',108)asdatetime))<=0anddatediff(mi,cast(convert(varchar(10),Start_hr+':'+Start_min+':00',108)asdatetime),cast(convert(varchar(10),@EndHour+':'+@EndMinute+':00',108)asdatetime))>0)③新增电影的开始时间在已存在电影的开始时间之前而且新增电影的结束时间在已存在电影的结束时间之后。代码:(datediff(mi,cast(convert(varchar(10),end_hr+':'+end_min+':00',108)asdatetime),cast(convert(varchar(10),@EndHour+':'+@EndMinute+':00',108)asdatetime))>0anddatediff(mi,cast(convert(varchar(10),Start_hr+':'+Start_min+':00',108)asdatetime),cast(convert(varchar(10),@StartHour+':'+@StartMinute+':00',108)asdatetime))<0)若取出来的count大于0,则电影排期存在冲突,弹出对话框提示管理员。(只能由管理员添加电影排期。)2.由于数据库的开始小时和分钟采用字符串类型,因此需要使用函数cast(convert(varchar(10),Hour+':'+Minute+':00',108)asdatetime)来将字符串转化为datetime类型,再用datediff函数进行比较。 3.4模拟交易过程1.为了模拟交易的过程,用户在确定了订单信息并确认支付后,本系统新开一个线程弹出一个窗口显示“正在支付…”并让系统睡眠1.5秒,然后更改Label信息为“正在发送短信…”并再次睡眠1.5秒,然后再将订单信息增加进数据库,并弹出“支付成功,你的订单号是XXX,可凭借短信到前台取票”信息。2.假如登录者是管理员admin,则不执行该线程,直接弹出对话框“现场选座成功,你的订单号是XXX”信息。4系统报告测试4.1存在问题以及解决方案1.注册和更新同时判断用户是否存在解决方案:将判断用户是否存在的函数BLL.Register.userRepetition(stringaccount)从BLL层分离出来,单独加在注册中。2.电影排期时间冲突解决方案:调用CheckScheduleRepetition()函数,从数据库里面取出上映日期和放映厅都相同而且满足一下3个条件之一的数据:①新增电影的开始时间在已存在电影的开始时间和结束时间之间;(新增电影的开始时间可等于已存在电影的结束时间,但不能等于已存在电影的开始时间。)代码:(datediff(mi,cast(convert(varchar(10),start_hr+':'+start_min+':00',108)asdatetime),cast(convert(varchar(10),@StartHour+':'+@StartMinute+':00',108)asdatetime))>=0anddatediff(mi,cast(convert(varchar(10),End_hr+':'+End_min+':00',108)asdatetime),cast(convert(varchar(10),@StartHour+':'+@StartMinute+':00',108)asdatetime))<0)②新增电影的结束时间在已存在电影的开始时间和结束时间之间;(新增电影的结束时间可等于已存在电影的开始时间,但不能等于已存在电影的结束时间。) 代码:(datediff(mi,cast(convert(varchar(10),end_hr+':'+end_min+':00',108)asdatetime),cast(convert(varchar(10),@EndHour+':'+@EndMinute+':00',108)asdatetime))<=0anddatediff(mi,cast(convert(varchar(10),Start_hr+':'+Start_min+':00',108)asdatetime),cast(convert(varchar(10),@EndHour+':'+@EndMinute+':00',108)asdatetime))>0)③新增电影的开始时间在已存在电影的开始时间之前而且新增电影的结束时间在已存在电影的结束时间之后。代码:(datediff(mi,cast(convert(varchar(10),end_hr+':'+end_min+':00',108)asdatetime),cast(convert(varchar(10),@EndHour+':'+@EndMinute+':00',108)asdatetime))>0anddatediff(mi,cast(convert(varchar(10),Start_hr+':'+Start_min+':00',108)asdatetime),cast(convert(varchar(10),@StartHour+':'+@StartMinute+':00',108)asdatetime))<0)若取出来的count大于0,则电影排期存在冲突,弹出对话框提示管理员。(只能由管理员添加电影排期。)3.鼠标放在图片上没放大却隐藏解决方案:不使用另外一个PictureBox覆盖原本PictureBox,直接修改原本PictureBox大小,并设置pb.SizeMode=PictureBoxSizeMode.StretchImage,即可使图片随PictureBox增大而增大。4.电影不按上映时间降序排列解决方案:放弃原先在数据库中orderbydesc的想法,直接在取电影信息的时候在结尾加上orderbydesc即可。5.用户可取消他人订单解决方案:在取消前调用函数BLL.Main.OrderCustomerFind(scheduleInfo.ScheduleID,seatInfo.SeatID)取出该座位订购者和当前用户id是否一致,否则不能取消订单。6.管理员可设置一个已选座位不可用解决方案:在用户订座以后,立刻设置该座位的“设置为不可用”按钮的enable属性为false ,则当管理员按下任何已选座位时,“设置为不可用”按钮均不可用。当管理员设置了一个座位为不可用成功后,订座和取消按钮均不可用。7.每新增一个电影的排期,座位增加问题解决方案:每新增一个电影的排期,则采用一个循环自动增加50个该排期的座位,IsActive属性均设置为NULL。4.2不足1.一个订单只能订一个座位2.没有实现支付和发送短信功能3.刷新电影时延大,系统运行有点慢(测试机器cpu为Inteli3-2310M,主频2.1GHz,若在I5cpu(实验室机器)中测试,则无延迟效果。)4.没有分离管理员和前台登记者,没有分离客户和管理员信息表,即客户和管理员信息存储在同一张表中5.订票系统规模较小,只有3个放映厅,而且每个放映厅的座位固定为50个5小组详细分工组员分工得分王润森l编写C#代码业l业务逻辑设计95尹佩珊l数据库设计(设计E-R图)l业务逻辑设计90谢楚璇l优化数据库设计l文档编辑75吴绮玲l生成建表代码l文档编辑75

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭