用数据库设计影院售票管理系统.docx
《用数据库设计影院售票管理系统.docx》由会员分享,可在线阅读,更多相关《用数据库设计影院售票管理系统.docx(44页珍藏版)》请在冰豆网上搜索。
用数据库设计影院售票管理系统
一.系统概述;
1.设计需求;
现在中国大部分的家庭都喜欢在家里置办属于自己风格的家庭影院。
但是,仍然有很多人喜欢到电影院去看电影。
因为家里的气氛毕竟不如影院好。
所以,现代家庭影院的出现并不会让电影院没有生路。
每个社会服务系统都有自己的一套管理机制。
当然,电影院也不除外。
其实电影院的管理系统应该来说比其他的社会服务系统的管理要简单一点。
电影院不外乎是引进电影,制定播放影片的时间表,买票,检票进场观看,还有就是一些数据管理方面的事。
如工作人员管理,票务管理等等。
为了工作机制简单有序,必然要引进一套管理系统。
2.需求分析;
具体而言,影院售票系统需要实现以下的需求:
(1)能够对播放电影,工作人员,售票事宜,检票事宜,无用数据进行处理。
(2)售票管理自然有专人负责,要处理各电影的电影票销售问题。
当然包括退票问题,还有就是预订电影票其实也就相当于买票。
两者可以当一回事处理。
(3)检票管理事宜要完成观众进场时检票的事宜。
其中包括了电影票的真假检测问题。
(4)数据管理要处理电影的播放的次序,工作人员的管理,以及过期电影票的处理问题。
二.结构设计
三.设计说明
1.分析与创建数据库;
根据系统的功能分析结果,影院售票管理系统将会使用MicrosoftSQLSever2000作为后台的数据库管理系统。
本管理系统是应用于电影院中,而且需要和数据库之间进行频繁数据交换,所以采用MicrosoftSQLSever2000作为后台的数据库管理系统。
在本管理系统中,需要掌握影库充实信息,职工管理信息,票务管理信息,此外,由于要进行职工管理,还需要掌握使用本系统的职工。
表1存储硬库信息列表,表2存储了电影院座位的相关数据连接关系,表3存储了电影票销售情况管理,表4存储了系统使用者职工的相关情况的管理列表。
表1影库管理表---MOVIES
字段名称
数据类型
字段属性
字段大小
作用
必填字段
索引
是否主键
Movie_id
smallint
2
电影号
是
有(无重复)
是
Movie_name
Nvarchar
50
电影名称
是
无
actor
Nvarchar
50
导演
否
无
actress
Nvarchar
50
主演
否
无
producer
Nvarchar
25
制片厂
否
无
palydate
datetime
8
上映时间
是
无
表2电影院座位管理表---SEATS
字段名称
数据类型
字段属性
字段大小
作用
必填字段
索引
是否主键
seatid
smallint
2
座位号
是
有(无重复)
是
price
float
8
票价
是
无
soldornot
smallint
2
是否售出
是
无
表3电影票信息表---TICKETS
字段名称
数据类型
字段属性
字段大小
作用
必填字段
索引
是否主键
ticketsid
smallint
2
电影票号
是
有(无重复)
是
seatid
smallint
2
座位号
是
有
Movie_id
smallint
2
电影号
是
有
Movie_name
Nvarchar
50
电影名
否
无
palydate
datetime
8
上映时间
是
无
price
float
8
价格
是
无
yanzhengma
smallint
2
验证码
是
无
是
表4职工信息表---WORKERS
字段名称
数据类型
字段属性
字段大小
作用
必填字段
索引
是否主键
workerid
smallint
2
职工号
是
无
是
password
smallint
2
职工密码
是
无
leibie
smallint
2
职工类型
是
无
根据规范化的设计理念,本管理系统的数据分成上面4个表,减少了数据的冗余,同时在这些表之间又存在着一些关联关系。
这四个表之间的这两种关系表现在下图所示的关系:
2.创建登陆窗体模块;
(1)窗体模块的功能
登陆窗体
(2)窗体界面的设计
在工程中添加一个窗体,命名为“登陆系统”,用来作为系统登陆窗体。
界面
的设计如图3所示。
(3)窗体代码
ImportsSystem.Data.SqlClient
PublicClassForm1
InheritsSystem.Windows.Forms.Form
DimnavigatorAsBindingManagerBase'用来对记录导航
DimmyconAsNewSqlConnection'连接对象
DimmycomAsNewSqlCommand'命令对象
Dimmycom1AsNewSqlCommand
Dimfrm2AsNewForm2
Dimfrm3AsNewForm3
Dimfrm8AsNewForm8
PrivateSubTimer1_Tick(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesTimer1.Tick
StatusBar1.Panels(0).Text=DateTime.Today
StatusBar1.Panels
(1).Text=DateTime.Now.ToString("T")
EndSub
PrivateSubGroupBox1_Enter(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesGroupBox1.Enter
IfRadioButton1.Checked=TrueThen
RadioButton2.Checked=False
RadioButton3.Checked=False
ElseIfRadioButton2.Checked=TrueThen
RadioButton1.Checked=False
RadioButton3.Checked=False
ElseIfRadioButton3.Checked=TrueThen
RadioButton1.Checked=False
RadioButton2.Checked=False
EndIf
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
AxShockwaveFlash1.Movie="E:
\实验运行场\VB.NET程序设计\电影院票务系统\image\登陆界面1.swf"
AxShockwaveFlash1.Playing=False
AxShockwaveFlash1.Stop()
Dimtox1AsInt32
Dimtox2AsInt32
DimmydataadapterAsNewSqlDataAdapter
DimmydsAsNewDataSet
DimiAsInteger
DimjAsInteger
tox1=Val(TextBox1.Text)
tox2=Val(TextBox2.Text)
mycon.ConnectionString="initialcatalog=ticketbooking;userid=sa;password=;"
mycom.Connection=mycon'通过MYCON连接对象操作数据库
mycom.CommandType=CommandType.Text'设置命令类型
mycom.CommandText="select*fromworkers"'设置要执行的命令
Try
mycon.Open()
mydataadapter.SelectCommand=mycom
CatchexAsException
MessageBox.Show("连接失败")
Finally
mycon.Close()
EndTry
mydataadapter.Fill(myds,"workers")
Fori=0Tomyds.Tables("workers").Rows.Count-1
Iftox1=Val(myds.Tables("workers").Rows(i).ItemArray(0))Then
j=0
ExitFor
Else
j=1
EndIf
Next
Fori=0Tomyds.Tables("workers").Rows.Count-1
Iftox2=Val(myds.Tables("workers").Rows(i).ItemArray
(1))Then
j=0
ExitFor
Else
j=1
EndIf
Next
Ifj=1Then
MessageBox.Show("您的工号或者密码错误","错误提示",MessageBoxButtons.OK,MessageBoxIcon.Warning)
Else
Try
mycom1.Connection=mycon'通过MYCON连接对象操作数据库
mycom1.CommandType=CommandType.Text'设置命令类型
mycom1.CommandText="selectleibiefromworkerswhereworkerid="+CStr(tox1)+"andpassword="+CStr(tox2)+""'设置要执行的命令
Dimmydataadapter1AsNewSqlDataAdapter
mydataadapter1.SelectCommand=mycom1
Dimmyds1AsNewDataSet
mydataadapter1.Fill(myds1,"workers")
IfRadioButton1.Checked=TrueAndVal(myds1.Tables("workers").Rows(0)("leibie"))=1Then
frm2.Show()
Me.Hide()
ElseIfRadioButton2.Checked=TrueAndVal(myds1.Tables("workers").Rows(0)("leibie"))=2Then
frm3.Show()
Me.Hide()
ElseIfRadioButton3.Checked=TrueAndVal(myds1.Tables("workers").Rows(0)("leibie"))=3Then
frm8.Show()
Me.Hide()
Else
MessageBox.Show("您超出职责范围或未选择服务系统,请重新输入!
","错误提示",MessageBoxButtons.OK,MessageBoxIcon.Warning,MessageBoxDefaultButton.Button1)
EndIf
CatchexAsException
EndTry
EndIf
EndSub
PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
AxShockwaveFlash1.Movie="E:
\实验运行场\VB.NET程序设计\电影院票务系统\image\登陆界面1.swf"
AxShockwaveFlash1.Play()
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton2.Click
DimexitformAsNewForm7
Ifexitform.ShowDialog=DialogResult.OKThen
exitform.Close()
Me.Close()
Application.Exit()
EndIf
EndSub
EndClass
3.创建售票窗体模块
(1)窗体模块的功能
为观众提供买票服务。
在界面上观众可以看见座位的情况,根据此来选择自己喜欢的座位。
不同的座位有不同的价格。
此窗体还有退票功能。
(2)窗体界面的设计
在工程中添加一个窗体,命名为“售票系统”,用来作为仓管人员窗体。
界面
的设计如下图所示。
(3)代码编写
ImportsSystem.Data.SqlClient
PublicClassForm2
InheritsSystem.Windows.Forms.Form
DimnavigatorAsBindingManagerBase'用来对记录导航
DimmyconAsNewSqlConnection'连接对象
DimmycomAsNewSqlCommand'命令对象
PrivateSubForm2_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load
'Me.Show()
AxShockwaveFlash1.Movie="E:
\实验运行场\VB.NET程序设计\电影院票务系统\image\销售界面.swf"
AxShockwaveFlash1.Play()
AxShockwaveFlash2.Movie="E:
\实验运行场\VB.NET程序设计\电影院票务系统\image\检票界面下.swf"
AxShockwaveFlash2.Play()
DimmydataadapterAsNewSqlDataAdapter
DimmydsAsNewDataSet
DimiAsInteger
DimjAsInteger
DimstrrowAsString
DimdtAsNewDataTable
mycon.ConnectionString="initialcatalog=ticketbooking;userid=sa;password=;"
mycom.Connection=mycon'通过MYCON连接对象操作数据库
mycom.CommandType=CommandType.Text'设置命令类型
mycom.CommandText="select*fromMovies"'设置要执行的命令"
Try
mycon.Open()
mydataadapter.SelectCommand=mycom
mydataadapter.Fill(myds,"Movies")
CatchexAsException
MessageBox.Show("连接失败")
Finally
mycon.Close()
EndTry
Try
Fori=0Tomyds.Tables("Movies").Rows.Count-1
strrow=myds.Tables("Movies").Rows(i)("movie_name")
ComboBox1.Items.Add(strrow)
Next
CatchexAsException
MessageBox.Show(ex.ToString)
EndTry
EndSub
PrivateSubButton1_Click_1(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
DimiAsInteger
DimtickethaoAsInteger
DimmoviehaoAsInteger
DimsuijiAsInteger
Dimmydataadapter3AsNewSqlDataAdapter
Dimmyds3AsNewDataSet
Dimdt3AsNewDataTable
Dimmycom3AsNewSqlCommand
Dimmycon3AsNewSqlConnection
Randomize()
suiji=Int(9000*Rnd()+1000)
Try
tickethao=tickets_id()
moviehao=movieid()
mycon3.ConnectionString="initialcatalog=ticketbooking;userid=sa;password=;"
mycom3.Connection=mycon3'通过MYCON连接对象操作数据库
mycom3.CommandType=CommandType.Text'设置命令类型
CatchexAsException
MessageBox.Show(ex.ToString)
EndTry
Iftickethao=0Then
Try
MessageBox.Show("此座位已售出,请重新选择!
","错误")
ComboBox1.Text=""
TextBox1.Text=""
TextBox2.Text=""
TextBox3.Text=""
TextBox4.Text=""
TextBox5.Text=""
CatchexAsException
MessageBox.Show(ex.ToString)
EndTry
Else
Try
mycon3.Open()
mycom3.CommandText="insertintotickets(ticketsid,seatid,movie_id,movie_name,palydate,price,yanzhengma)values("+CStr(tickethao)+","+TextBox4.Text+","+CStr(moviehao)+",'"+TextBox2.Text+"','"+TextBox1.Text+"',"+TextBox5.Text+","+CStr(suiji)+")"
DimsqlAsString
sql="insertintotickets(ticketsid,seatid,movie_id,movie_name,palydate,price,yanzhengma)values("+CStr(tickethao)+","+TextBox4.Text+","+CStr(moviehao)+",'"+TextBox2.Text+"','"+TextBox3.Text+"',"+TextBox5.Text+","+CStr(suiji)+")"
mydataadapter3.InsertCommand=mycom3
Try
mycom3.ExecuteNonQuery()
MessageBox.Show("售票成功!
","谢谢观看")
CatchexAsException
MsgBox(ex.ToString)
EndTry
CatchexAsException
MessageBox.Show(ex.ToString)
EndTry
mycon3.Close()
ComboBox1.Text=""
TextBox1.Text=""
TextBox2.Text=""
TextBox3.Text=""
TextBox4.Text=""
TextBox5.Text=""
EndIf
revoke_seat()
EndSub
PrivateSubComboBox1_SelectedIndexChanged_1(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesComboBox1.SelectedIndexChanged
revoke_seat()
Dimmydataadapter1AsNewSqlDataAdapter
Dimmydataadapter11AsNewSqlDataAdapter
Dimmyds1AsNewDataSet
Dimmyds11AsNewDataSet
Dimdt1AsNewDataTable
Dimdt11AsNewDataTable
Dimmycom1AsNewSqlCommand
Dimmycom11AsNewSqlCommand
mycon.ConnectionString="initialcatalog=ticketbooking;userid=sa;password=;"
mycom1.Connection=mycon'通过MYCON连接对象操作数据库
mycom1.CommandType=CommandType.Text'设置命令类型
mycom11.Connection=mycon
mycom11.CommandType=CommandType.Text
Try
mycon.Open()
mycom11.CommandText="selectpalydatefromMovieswheremovie_name='"+ComboBox1.Text+"'"
my