电影订票系统.docx
《电影订票系统.docx》由会员分享,可在线阅读,更多相关《电影订票系统.docx(34页珍藏版)》请在冰点文库上搜索。
电影订票系统
电影订票系统
组长:
王润森
组员:
尹佩珊、谢楚璇、吴绮玲
完成日期:
2013年12月10日星期二
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_id
varchar(20)
否
主键
客户账号
c_passward
varchar(20)
否
否
客户密码
c_name
varchar(20)
否
否
客户名字
sex
varchar
(2)
是
否
客户性别
phone
varchar(30)
否
否
客户电话
email
varchar(40)
是
否
客户邮箱
qq
varchar(20)
是
否
客户qq号
电影信息表(films)
字段
类型
允许为空
是否为主键
描述
f_id
int
否
主键
电影编号
f_name
varchar(50)
否
否
电影名
star
varchar(100)
是
否
主演
director
varchar(30)
是
否
导演
duration
varchar(10)
是
否
片长
languages
varchar(20)
是
否
语言
f_type
varchar(50)
是
否
类型
descriptions
varchar(1000)
是
否
简介
price
int
是
否
价格
poster
image
是
否
电影海报
startdate
date
是
否
上映日期
prevue_path
varchar(500)
是
否
预告片
排期信息表(schedules)
字段
类型
允许为空
是否为主键
描述
sch_id
int
否
主键
排期编号
f_id
int
是
外键
电影编号
h_id
int
否
否
放映厅号
dates
date
否
否
放映日期
start_hr
varchar
(2)
否
否
放映开始的小时
start_min
varchar
(2)
否
否
放映开始的分钟
end_hr
varchar
(2)
否
否
放映结束的小时
end_min
varchar
(2)
否
否
放映结束的分钟
座位信息表(seats)
字段
类型
允许为空
是否为主键
描述
s_id
int
否
主键
座位编号
sch_id
int
否
外键
排期编号
row
int
是
否
第i排
col
int
是
否
第i列
isActive
bit
是
否
是否已订
订单信息表(orders)
字段
类型
允许为空
是否为主键
描述
o_id
int
否
主键
订单编号
c_id
varchar(20)
否
外键
客户账号
sch_id
Int
否
外键
排期编号
s_id
Int
否
外键
座位编号
way_of_payment
varchar(40)
否
否
支付方式
dates
date
否
否
订单日期
2.1.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、row、col、isActive
orders
o_id、c_id、sch_id、s_id、way_of_payment、dates
2.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]
GO
USE[CinemaBookingSystem]
GO
/******Object:
Table[dbo].[films]ScriptDate:
12/07/201314:
37:
50******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[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]
GO
SETANSI_PADDINGOFF
GO
/******Object:
Table[dbo].[customers]ScriptDate:
12/07/201314:
37:
50******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[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]
GO
SETANSI_PADDINGOFF
GO
/******Object:
Table[dbo].[schedules]ScriptDate:
12/07/201314:
37:
50******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[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]
GO
SETANSI_PADDINGOFF
GO
/******Object:
Table[dbo].[seats]ScriptDate:
12/07/201314:
37:
50******/
SETANSI_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
CREATETABLE[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_NULLSON
GO
SETQUOTED_IDENTIFIERON
GO
SETANSI_PADDINGON
GO
CREATETABLE[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]
GO
SETANSI_PADDINGOFF
GO
/******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)))
GO
ALTERTABLE[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)))
GO
ALTERTABLE[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)))
GO
ALTERTABLE[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)))
GO
ALTERTABLE[dbo].[schedules]CHECKCONSTRAINT[CK__schedules__start__164452B1]
GO
/******Object:
ForeignKey[FK__orders__c_id__6383C8BA]ScriptDate:
12/07/201314:
37:
50******/
ALTERTABLE[db