面向对象程序设计课程设计报告
2006 / 2007 学年 第 一 学期
项目名称: 影院售票管理系统 项目负责人: 王德才 学号:_0601023230_ 同 组 者: 李清爽 学号: 0601023214 指导教师: _潘 俊__ 班级:_06会计___ 课程设计时间及地点:___实验楼521____
计算机信息工程学院 2007年1月15日
1
一.系统概述;
1.项目需求; 2.需求分析;
二.项目开发计划书; 三.设计说明书; 1.分析与创建数据库; 2.创建登陆窗体模块; 3.创建售票窗体模块 4.创建检票界面 5.创建维护界面 1.创建影库界面
2.创建职工界面 3.创建票务界面
四.用户操作手册; 五.改进意见; 六.自我评价; 七.参考资料、书籍;
2
一.系统概述;
1.项目需求;
现在中国大部分的家庭都喜欢在家里置办属于自己风格的家庭影院。但是,仍然有
很多人喜欢到电影院去看电影。因为家里的气氛毕竟不如影院好。所以,现代家庭影院的出现并不会让电影院没有生路。
每个社会服务系统都有自己的一套管理机制。当然,电影院也不除外。其实电影院的管理系统应该来说比其他的社会服务系统的管理要简单一点。电影院不外乎是引进电影,制定播放影片的时间表,买票,检票进场观看,还有就是一些数据管理方面的事。如工作人员管理,票务管理等等。为了工作机制简单有序,必然要引进一套管理系统。
2.需求分析;
具体而言,影院售票系统需要实现以下的需求:
(1) 能够对播放电影,工作人员,售票事宜,检票事宜,无用数据进行处理。 (2) 售票管理自然有专人负责,要处理各电影的电影票销售问题。当然包括退票问题,还有就是预订电影票其实也就相当于买票。两者可以当一回事处理。
(3) 检票管理事宜要完成观众进场时检票的事宜。其中包括了电影票的真假检测问题。 (4) 数据管理要处理电影的播放的次序,工作人员的管理,以及过期电影票的处理问题。
二.项目开发计划书;
根据需求分析的结果,本小组成员讨论协商,决定本系统主要划分为以下三个子模
块:售票管理模块、检票管理模块、数据管理模块。
影院售票管理系统是一个基于电影院工作人员的系统,不同类型的用户在系统中有不同的权限。主要有三种用户:
1. 售票管理人员: 主要负责卖票,订票及退票事宜;
2. 检票管理人员: 主要负责观众进场时检票工作,以及辨认电影票的真假(此工作自然可以由服务系统来完成);
3. 数据处理人员: 主要负责播放电影导入数据库,工作人员的应聘以及开除的数据管理,还有过期电影票的数据处理;
以下分别介绍此系统中各个系统(3个子模块。): (1)售票系统模块
给观众提供售票服务。不同的位置有不同的价格。要选购哪个位置由观众决定。工作人员根据观众的需要进行操作。系统在购票成功后会产生一个验证码,此验证码连工作人员都不知道。是随机生成的。用于对电影票真假的辩识。 (2)检票系统模块
在观众进场时所使用的系统。由扫描仪扫描,取的验证码,然后进行辩识,看是不是和数据库中数据一样,如果一样,则电影票为真,否则电影票为假。由此来决定让不让观众入场。 (3)维护系统模块
此模块是由电影院的数据库管理员来管理的。他根据电影院事情的需要对有关数据进行处理。如电影票的管理,工作人员的管理,和电影库的管理等。
整个系统的结构如下图1所示:
3
影院售票管理系统工作人员登录 维护系统 检票系统 售票系统 影 片 播放管理 工作人员管理 过期票务管理
以下分别介绍系统中数据系统3个子模块。 (1)影片播放管理模块
影片播放管理是对电影院播放的电影的充实,设定电影的播放,以及电影时间的设定。当所设定的电影已经播放完成后,要对其进行删除。还要对数据库进行清理,把一些没用的数据全部清除。 (2)工作人员管理:
电影院里当然有工作人员的增加与开除,以及他们的管理权限的变化。这一部分事件的发生都需要数据库管理人员将有关数据进行处理。保证数据库里数据的统一与完整。 其中有他们的共号,登陆电影院管理系统的密码,以及所拥有的权限。 (3)过期票务管理:
电影院里的电影在放过以后,在数据库的电影票数据就会变成没有用的数据。通过此管理可以把那些没用的过期的数据清除。这里指的是与放过的电影同名的电影票清除,而其他的电影票保存不变。 小组人员分工情况:
王圣武 登陆界面和售票界面、系统转换界面的程序编写,整个系统框架的设计,整
个系统界面及美化设计,整个系统流程的管理,创建数据库
张润驰 检票系统和整个维护系统的程序编写,局部框架辅助设计,创建数据库
本系统后台数据库采用目前比较流行的 Microsoft SQL Sever ,该数据库系统在安全性、准确性、运行速度方面有绝对的优势,并且处理数据量大、效率高;前台采用 Microsoft公司的 VB.NET 2003 作为主要的开发工具,其可与 SQL Sever 2000数据库无缝衔接。
三.设计说明书; 1.分析与创建数据库;
根据系统的功能分析结果,影院售票管理系统将会使用Microsoft SQL Sever 2000 作为后台的数据库管理系统。本管理系统是应用于电影院中,而且需要和数据库之
4
间进行频繁数据交换,所以采用Microsoft SQL Sever 2000 作为后台的数据库管理系统。
在本管理系统中,需要掌握影库充实信息,职工管理信息,票务管理信息,此外,由于要进行职工管理,还需要掌握使用本系统的职工。表1存储硬库信息列表,表2存储了电影院座位的相关数据连接关系,表3存储了电影票销售情况管理,表4存储了系统使用者职工的相关情况的管理列表。
表1 影库管理表---MOVIES
字段名称 Movie_id actor actress producer palydate 字段名称 seatid price 表3 电影票信息表---TICKETS
字段名称 ticketsid seatid Movie_id palydate price 数据类型 smallint smallint smallint datetime float 字段大小 2 2 2 50 8 8 2 作用 电影票号 座位号 电影号 电影名 上映时间 价格 验证码 字段属性 必填字段 是 是 是 否 是 是 是 字段属性 字段大小 2 2 作用 职工号 职工密码 必填字段 是 是 索引 无 无 是否主键 是 5
数据类型 smallint Nvarchar Nvarchar Nvarchar datetime 数据类型 smallint float 字段大小 2 8 2 作用 座位号 票价 是否售出 字段大小 2 50 50 50 25 8 作用 电影号 电影名称 导演 主演 制片厂 上映时间 字段属性 必填字段 是 是 否 否 否 是 字段属性 必填字段 是 是 是 有(无重复) 无 无 是 索引 是否主键 有(无重复) 无 无 无 无 无 索引 是否主键 是 Movie_name Nvarchar 表2 电影院座位管理表---SEATS soldornot smallint 索引 有(无重复) 有 有 无 无 无 无 是否主键 是 是 Movie_name Nvarchar yanzhengma smallint 字段名称 workerid password
表4 职工信息表---WORKERS 数据类型 smallint smallint leibie smallint 2 职工类型 是 无 根据规范化的设计理念,本管理系统的数据分成上面4个表,减少了数据的冗余,同时在这些表之间又存在着一些关联关系。这四个表之间的这两种关系表现在下图所示的关系:
2.创建登陆窗体模块;
(1)窗体模块的功能 登陆窗体
(2)窗体界面的设计
在工程中添加一个窗体,命名为“登陆系统”,用来作为系统登陆窗体。界面 的设计如图3所示。
(3)窗体代码
Imports System.Data.SqlClient
Public Class Form1
Inherits System.Windows.Forms.Form
6
Dim navigator As BindingManagerBase '用来对记录导航 Dim mycon As New SqlConnection '连接对象
Dim mycom As New SqlCommand '命令对象 Dim mycom1 As New SqlCommand Dim frm2 As New Form2 Dim frm3 As New Form3
Dim frm8 As New Form8
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
StatusBar1.Panels(0).Text = DateTime.Today
StatusBar1.Panels(1).Text = DateTime.Now.ToString(\"T\") End Sub
Private Sub GroupBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.Enter
If RadioButton1.Checked = True Then RadioButton2.Checked = False RadioButton3.Checked = False ElseIf RadioButton2.Checked = True Then RadioButton1.Checked = False RadioButton3.Checked = False ElseIf RadioButton3.Checked = True Then RadioButton1.Checked = False RadioButton2.Checked = False End If End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
AxShockwaveFlash1.Movie = \"E:\\实验运行场\\VB.NET程序设计\\电影院票务系统\\image\\登陆界面1.swf\"
AxShockwaveFlash1.Playing = False AxShockwaveFlash1.Stop() Dim tox1 As Int32 Dim tox2 As Int32
Dim mydataadapter As New SqlDataAdapter Dim myds As New DataSet Dim i As Integer Dim j As Integer
tox1 = Val(TextBox1.Text) tox2 = Val(TextBox2.Text)
mycon.ConnectionString = \"initial catalog=ticketbooking;user id=sa;password=;\" mycom.Connection = mycon '通过 MYCON 连接对象操作数据库 mycom.CommandType = CommandType.Text '设置命令类型
mycom.CommandText = \"select * from workers\" '设置要执行的命令 Try
7
mycon.Open()
mydataadapter.SelectCommand = mycom Catch ex As Exception
MessageBox.Show(\"连接失败\") Finally
mycon.Close() End Try
mydataadapter.Fill(myds, \"workers\")
For i = 0 To myds.Tables(\"workers\").Rows.Count - 1
If tox1 = Val(myds.Tables(\"workers\").Rows(i).ItemArray(0)) Then j = 0 Exit For Else j = 1 End If Next
For i = 0 To myds.Tables(\"workers\").Rows.Count - 1
If tox2 = Val(myds.Tables(\"workers\").Rows(i).ItemArray(1)) Then j = 0 Exit For Else j = 1 End If Next
If j = 1 Then
MessageBox.Show(\"您的工号或者密码错误\错误提示\MessageBoxIcon.Warning) Else Try
mycom1.Connection = mycon '通过 MYCON 连接对象操作数据库 mycom1.CommandType = CommandType.Text '设置命令类型
mycom1.CommandText = \"select leibie from workers where workerid=\" + CStr(tox1) + \"and password=\" + CStr(tox2) + \"\" '设置要执行的命令 Dim mydataadapter1 As New SqlDataAdapter mydataadapter1.SelectCommand = mycom1 Dim myds1 As New DataSet
mydataadapter1.Fill(myds1, \"workers\") If RadioButton1.Checked = True And Val(myds1.Tables(\"workers\").Rows(0)(\"leibie\")) = 1 Then frm2.Show() Me.Hide()
ElseIf RadioButton2.Checked = True And Val(myds1.Tables(\"workers\").Rows(0)(\"leibie\")) = 2 Then frm3.Show()
8
Me.Hide()
ElseIf RadioButton3.Checked = True And Val(myds1.Tables(\"workers\").Rows(0)(\"leibie\")) = 3 Then frm8.Show() Me.Hide() Else
MessageBox.Show(\"您超出职责范围 或未选择服务系统,请重新输入!\错误提示\ End If
Catch ex As Exception End Try End If End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AxShockwaveFlash1.Movie = \"E:\\实验运行场\\VB.NET程序设计\\电影院票务系统\\image\\登陆界面1.swf\"
AxShockwaveFlash1.Play() End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim exitform As New Form7
If exitform.ShowDialog = DialogResult.OK Then exitform.Close() Me.Close()
Application.Exit() End If End Sub End Class
3. 创建售票窗体模块
(1) 窗体模块的功能
为观众提供买票服务。在界面上观众可以看见座位的情况,根据此来选择自己喜欢的座位。不同的座位有不同的价格。此窗体还有退票功能。
(2) 窗体界面的设计
在工程中添加一个窗体,命名为“售票系统”,用来作为仓管人员窗体。界面 的设计如下图所示。 (3) 代码编写
Imports System.Data.SqlClient
Public Class Form2
Inherits System.Windows.Forms.Form
Dim navigator As BindingManagerBase '用来对记录导航 Dim mycon As New SqlConnection '连接对象 Dim mycom As New SqlCommand '命令对象
9
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Me.Show()
AxShockwaveFlash1.Movie = \"E:\\实验运行场\\VB.NET程序设计\\电影院票务系统\\image\\销售界面.swf\"
AxShockwaveFlash1.Play()
AxShockwaveFlash2.Movie = \"E:\\实验运行场\\VB.NET程序设计\\电影院票务系统\\image\\检票界面下.swf\"
AxShockwaveFlash2.Play()
Dim mydataadapter As New SqlDataAdapter Dim myds As New DataSet Dim i As Integer Dim j As Integer Dim strrow As String Dim dt As New DataTable
mycon.ConnectionString = \"initial catalog=ticketbooking;user id=sa;password=;\" mycom.Connection = mycon '通过 MYCON 连接对象操作数据库 mycom.CommandType = CommandType.Text '设置命令类型
mycom.CommandText = \"select * from Movies\" '设置要执行的命令\" Try
mycon.Open()
10
mydataadapter.SelectCommand = mycom mydataadapter.Fill(myds, \"Movies\") Catch ex As Exception
MessageBox.Show(\"连接失败\") Finally
mycon.Close() End Try Try
For i = 0 To myds.Tables(\"Movies\").Rows.Count - 1 strrow = myds.Tables(\"Movies\").Rows(i)(\"movie_name\") ComboBox1.Items.Add(strrow) Next
Catch ex As Exception
MessageBox.Show(ex.ToString) End Try End Sub
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer
Dim tickethao As Integer Dim moviehao As Integer Dim suiji As Integer
Dim mydataadapter3 As New SqlDataAdapter Dim myds3 As New DataSet Dim dt3 As New DataTable Dim mycom3 As New SqlCommand Dim mycon3 As New SqlConnection Randomize()
suiji = Int(9000 * Rnd() + 1000) Try
tickethao = tickets_id() moviehao = movieid()
mycon3.ConnectionString = \"initial catalog=ticketbooking;user id=sa;password=;\" mycom3.Connection = mycon3 '通过 MYCON 连接对象操作数据库 mycom3.CommandType = CommandType.Text '设置命令类型 Catch ex As Exception
MessageBox.Show(ex.ToString) End Try
If tickethao = 0 Then Try
MessageBox.Show(\"此座位已售出,请重新选择!\错误\") ComboBox1.Text = \"\" TextBox1.Text = \"\" TextBox2.Text = \"\"
11
TextBox3.Text = \"\" TextBox4.Text = \"\" TextBox5.Text = \"\" Catch ex As Exception
MessageBox.Show(ex.ToString) End Try Else Try
mycon3.Open()
mycom3.CommandText = \"insert into tickets
(ticketsid,seatid,movie_id,movie_name,palydate,price,yanzhengma) values (\" + CStr(tickethao) + \TextBox4.Text + \+ CStr(moviehao) + \+ TextBox2.Text + \"','\" + TextBox1.Text + \"',\" + TextBox5.Text + \CStr(suiji) + \")\" Dim sql As String
sql = \"insert into tickets
(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(\"售票成功!\谢谢观看\") Catch ex As Exception MsgBox(ex.ToString) End Try
Catch ex As Exception
MessageBox.Show(ex.ToString) End Try mycon3.Close() ComboBox1.Text = \"\" TextBox1.Text = \"\" TextBox2.Text = \"\" TextBox3.Text = \"\" TextBox4.Text = \"\" TextBox5.Text = \"\" End If revoke_seat() End Sub
Private Sub ComboBox1_SelectedIndexChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged revoke_seat()
Dim mydataadapter1 As New SqlDataAdapter Dim mydataadapter11 As New SqlDataAdapter Dim myds1 As New DataSet
12
Dim myds11 As New DataSet Dim dt1 As New DataTable Dim dt11 As New DataTable Dim mycom1 As New SqlCommand Dim mycom11 As New SqlCommand
mycon.ConnectionString = \"initial catalog=ticketbooking;user id=sa;password=;\" mycom1.Connection = mycon '通过 MYCON 连接对象操作数据库 mycom1.CommandType = CommandType.Text '设置命令类型 mycom11.Connection = mycon
mycom11.CommandType = CommandType.Text Try
mycon.Open()
mycom11.CommandText = \"select palydate from Movies where movie_name= '\" + ComboBox1.Text + \"'\"
mycom1.CommandText = \"select * from tickets where movie_name= '\" + ComboBox1.Text + \"'\"
mydataadapter1.SelectCommand = mycom1 mydataadapter11.SelectCommand = mycom11 mydataadapter1.Fill(myds1, \"tickets\") mydataadapter11.Fill(myds11, \"Movies\") dt1 = myds1.Tables(\"tickets\") dt11 = myds11.Tables(\"Movies\") Catch ex As Exception
MessageBox.Show(ex.ToString) End Try Try
If dt1.Rows.Count = 0 Then MessageBox.Show(\"还未出售!\")
TextBox1.Text = dt11.Rows(0)(\"palydate\") revoke_seat() Else
ShowSellInfo(dt1)
TextBox1.Text = dt11.Rows(0)(\"palydate\") End If
Catch ex As Exception End Try mycon.Close() End Sub
Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim tickethao As Integer
Dim mydataadapter4 As New SqlDataAdapter Dim myds4 As New DataSet
13
Dim dt4 As New DataTable Dim mycom4 As New SqlCommand Dim mycon4 As New SqlConnection Try
mycon4.ConnectionString = \"initial catalog=ticketbooking;user id=sa;password=;\" mycom4.Connection = mycon4 '通过 MYCON 连接对象操作数据库 mycom4.CommandType = CommandType.Text '设置命令类型 tickethao = tuipiao() Catch ex As Exception
MessageBox.Show(ex.ToString) End Try
If tickethao = 0 Then
MessageBox.Show(\"座位号输入错误,请重新输入!\错误\") Else Try
mycon4.Open()
mycom4.CommandText = \"delete from tickets where ticketsid=\" + CStr(tickethao) + \"\"
Try
mycom4.ExecuteNonQuery()
MessageBox.Show(\"退票成功!\谢谢观看\") Catch ex As Exception MsgBox(ex.ToString) End Try
Catch ex As Exception MsgBox(ex.ToString) End Try End If
mycon4.Close() TextBox1.Text = \"\" TextBox2.Text = \"\" TextBox3.Text = \"\" TextBox4.Text = \"\" TextBox5.Text = \"\" ComboBox1.Text = \"\" revoke_seat() End Sub
Private Sub Button3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
TextBox2.Text = ComboBox1.Text TextBox3.Text = TextBox1.Text If TextBox4.Text = \"\" Then
MessageBox.Show(\"请输入座位号!\提示\") End I
14
Dim mydataadapter2 As New SqlDataAdapter Dim myds2 As New DataSet Dim dt2 As New DataTable Dim mycom2 As New SqlCommand
mycon.ConnectionString = \"initial catalog=ticketbooking;user id=sa;password=;\" mycom2.Connection = mycon '通过 MYCON 连接对象操作数据库 mycom2.CommandType = CommandType.Text '设置命令类型 Try
mycon.Open()
mycom2.CommandText = \"select * from seats where seatid=\" + TextBox4.Text + \"\" mydataadapter2.SelectCommand = mycom2 mydataadapter2.Fill(myds2, \"seats\") dt2 = myds2.Tables(\"seats\") Catch ex As Exception
MessageBox.Show(ex.ToString) End Try
TextBox5.Text = dt2.Rows(0)(\"price\") mycon.Close() End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim exitform As New Form7
If exitform.ShowDialog = DialogResult.OK Then exitform.Close() Me.Close()
Application.Exit() End If End Sub End Class
4. 创建检票界面
(1)创建模块的功能
对进场观众检票,如果发现有假票或无票观众不允许入内。 (2)创建模块的窗体
在工程中添加一个窗体,命名为“检票系统”,用来作为检票系统窗体。界面 的设计如下图所示。 (3)代码编写
Imports System.Data.SqlClient
Public Class Form3
Inherits System.Windows.Forms.Form Dim ds1 As New DataSet
Dim sqlda1 As New SqlDataAdapter
Dim RecordCount As Integer
15
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AxShockwaveFlash1.Movie = \"E:\\实验运行场\\VB.NET程序设计\\电影院票务系统\\image\\检票界面.swf\"
AxShockwaveFlash1.Play()
AxShockwaveFlash2.Movie = \"E:\\实验运行场\\VB.NET程序设计\\电影院票务系统\\image\\检票界面下.swf\"
AxShockwaveFlash2.Play()
Dim sqlcmd1 As New SqlCommand
Dim str1 As String = \"select * from tickets\" sqlcmd1.Connection = sqlcn1 sqlcmd1.CommandText = str1 sqlda1.SelectCommand = sqlcmd1 Try
sqlcn1.Open()
sqlcmd1.ExecuteNonQuery() Catch ex As SqlException MsgBox(ex.Message) Finally
sqlcn1.Close() End Try Try
16
sqlda1.Fill(ds1) Catch ex As SqlException MsgBox(ex.Message) End Try
RecordCount = ds1.Tables(0).Rows.Count TextBox6.Text = RecordCount End Sub
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer
Dim flag As Boolean = False If TextBox1.Text = \"\" Then
TextBox7.Text = \"请认真填写票号!\" TextBox1.Focus() Exit Sub End If
If TextBox2.Text = \"\" Then
TextBox7.Text = \"请填写验证码!\" TextBox2.Focus() Exit Sub End If
For i = 0 To RecordCount - 1
If TextBox1.Text = CStr(ds1.Tables(0).Rows(i)(\"ticketsid\")) And TextBox2.Text = CStr(ds1.Tables(0).Rows(i)(\"yanzhengma\")) Then flag = True Exit For End If Next
If flag = True Then Try
TextBox3.Text = ds1.Tables(0).Rows(i)(\"seatid\") TextBox4.Text = ds1.Tables(0).Rows(i)(\"movie_name\") TextBox5.Text = ds1.Tables(0).Rows(i)(\"price\") Catch ex As Exception MsgBox(ex.Message) End Try
TextBox7.Text = \"此票为真!\" Else
TextBox7.Text = \"此票为假!\" End If
TextBox6.Text = RecordCount End Sub
Private Sub Button2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
17
TextBox1.Text = \"\" TextBox2.Text = \"\" TextBox3.Text = \"\" TextBox4.Text = \"\" TextBox5.Text = \"\" TextBox6.Text = \"\" TextBox7.Text = \"\" TextBox1.Focus() End Sub
Private Sub Button3_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim exitform As New Form7
If exitform.ShowDialog = DialogResult.OK Then exitform.Close() Me.Close()
Application.Exit() End If End Sub End Class
5. 创建维护界面
(1)创建模块的功能
给数据库维护工作人员选择维护的系统数据库 (2)创建模块的设计
在工程中添加一个窗体,命名为“维护系统”,用来作为维护系统窗体。界面 的设计如下图所示。
(3)代码编写
18
Public Class Form8
Inherits System.Windows.Forms.Form
Private Sub Form8_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AxShockwaveFlash1.Movie = \"E:\\实验运行场\\VB.NET程序设计\\电影院票务系统\\image\\登陆界面.swf\"
AxShockwaveFlash1.Play() End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim frm4 As New Form4 frm4.Show() Me.Hide() End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim frm6 As New Form6 frm6.Show() Me.Hide() End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim frm9 As New Form9 frm9.Show() Me.Hide() End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim exitform As New Form7
If exitform.ShowDialog = DialogResult.OK Then exitform.Close() Me.Close()
Application.Exit() End If End Sub
End Class
1.创建影库界面
(1)创建模块的功能 对电影库播放列表的管理 (2)创建模块的设计
在工程中添加一个窗体,命名为“影库系统”,用来作为影库系统窗体。界面 的设计如下图所示。
19
(3)代码编写
Dim sqlAdapter As New SqlDataAdapter
Dim movieRow As DataRow Dim RecordCount As Integer Dim i As Integer = 0 Dim idnum(2000) As Integer Dim CurrentPosition As Integer Sub ShowPosition()
RecordCount = DataSet11.Movies.Rows.Count If RecordCount = 0 Then TextBox1.Text = \"无记录\" Else
CurrentPosition = Me.BindingContext(DataSet11, \"Movies\").Position movieRow = DataSet11.Movies.Rows(CurrentPosition) TextBox1.Text = movieRow.Item(\"movie_id\") idnum(i) = TextBox1.Text i += 1
TextBox2.Text = movieRow.Item(\"movie_name\") TextBox3.Text = movieRow.Item(\"actor\") TextBox4.Text = movieRow.Item(\"actress\") TextBox5.Text = movieRow.Item(\"producer\") TextBox6.Text = movieRow.Item(\"palydate\")
TextBox7.Text = CurrentPosition + 1 & \"/\" & RecordCount End If End Sub
Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
20
MyBase.Load
DataSet11.Clear()
Me.SqlDataAdapter1.Fill(DataSet11) ShowPosition() End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Me.BindingContext(DataSet11, \"Movies\").Position > 0 Then Me.BindingContext(DataSet11, \"Movies\").Position -= 1 ShowPosition() Else
MessageBox.Show(\"已到达首记录!\提示信息\") End If End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If Me.BindingContext(DataSet11, \"Movies\").Position < RecordCount - 1 Then Me.BindingContext(DataSet11, \"Movies\").Position += 1 ShowPosition() Else
MessageBox.Show(\"已到达尾记录!\提示信息\") End If End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Me.BindingContext(DataSet11, \"Movies\").Position = RecordCount - 1 ShowPosition() End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click '添加数据 Dim j As Integer
Dim flag As Boolean = True For j = 0 To i
If TextBox1.Text = CStr(idnum(j)) Then flag = False
MessageBox.Show(\"ID地址有冲突!\提示\") End If Next
If flag = True Then
Dim MyNewData As DataRow
MyNewData = DataSet11.Movies.NewRow Try
With MyNewData .BeginEdit()
21
If TextBox1.Text <> \"\" Then
.Item(\"movie_id\") = TextBox1.Text Else
MessageBox.Show(\"编号不能为空\") Return End If
.Item(\"movie_name\") = TextBox2.Text .Item(\"actor\") = TextBox3.Text .Item(\"actress\") = TextBox4.Text .Item(\"producer\") = TextBox5.Text .Item(\"palydate\") = TextBox6.Text .EndEdit() End With
Catch ex As Exception
MessageBox.Show(ex.Message) Return End Try
DataSet11.Movies.Rows.Add(MyNewData) Try
Dim i As Integer = SqlDataAdapter1.Update(DataSet11, \"Movies\") DataSet11.AcceptChanges()
MessageBox.Show(i & \"条记录添加成功!\") Catch ex As Exception
MessageBox.Show(ex.Message) End Try
idnum(i) = TextBox1.Text i = i + 1 End If End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click '修改数据 Dim j As Integer For j = 0 To i
If TextBox1.Text = CStr(idnum(j)) Then MessageBox.Show(\"ID地址有冲突!\提示\") End If Next
CurrentPosition = Me.BindingContext(DataSet11, \"Movies\").Position movieRow = DataSet11.Movies.Rows(CurrentPosition) Try
With movieRow .BeginEdit()
.Item(\"movie_id\") = TextBox1.Text .Item(\"movie_name\") = TextBox2.Text
22
.Item(\"actor\") = TextBox3.Text .Item(\"actress\") = TextBox4.Text .Item(\"producer\") = TextBox5.Text .Item(\"palydate\") = TextBox6.Text .EndEdit() End With
Catch ex As Exception
MessageBox.Show(ex.Message) Return End Try Try
Dim i As Integer = SqlDataAdapter1.Update(DataSet11, \"Movies\") DataSet11.AcceptChanges()
MessageBox.Show(i & \"条记录修改成功!\") Catch ex As Exception
MessageBox.Show(ex.Message) End Try End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Me.BindingContext(DataSet11, \"Movies\").Position = 0 ShowPosition() End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click '删除数据
CurrentPosition = Me.BindingContext(DataSet11, \"Movies\").Position movieRow = DataSet11.Movies.Rows(CurrentPosition) Dim n As Integer = movieRow.Item(\"movie_id\") Dim j As Integer = 0 For j = 0 To i
If n = idnum(j) Then idnum(j) = -1 End If Next
movieRow.Delete() Try
Dim i As Integer = SqlDataAdapter1.Update(DataSet11, \"Movies\") DataSet11.AcceptChanges()
MessageBox.Show(i & \"条记录删除成功!\") Catch ex As Exception
MessageBox.Show(ex.Message) End Try End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
23
Button8.Click
Dim exitform As New Form7
If exitform.ShowDialog = DialogResult.OK Then exitform.Close() Me.Close()
Application.Exit() End If End Sub
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
Dim frm8 As New Form8 frm8.Show() Me.Close() End Sub End Class
2.创建职工界面
(1)创建模块的功能
对职工数据的处理。如增加、删除和更改 (2)创建模块的设计
在工程中添加一个窗体,命名为“影库系统”,用来作为影库系统窗体。界面 的设计如下图所示。
(3)代码编写
Inherits System.Windows.Forms.Form
Dim frm8 As New Form8
Dim sqlAdapter As New SqlDataAdapter Dim movieRow As DataRow
24
Dim RecordCount As Integer Dim i As Integer = 0 Dim idnum(2000) As Integer Dim CurrentPosition As Integer Sub ShowPosition()
RecordCount = DataSet11.Workers.Rows.Count If RecordCount = 0 Then TextBox1.Text = \"无记录\" Else
CurrentPosition = Me.BindingContext(DataSet11, \"Workers\").Position movieRow = DataSet11.Workers.Rows(CurrentPosition) TextBox1.Text = movieRow.Item(\"workerid\") idnum(i) = TextBox1.Text i += 1
TextBox2.Text = movieRow.Item(\"password\") TextBox3.Text = movieRow.Item(\"leibie\")
TextBox4.Text = CurrentPosition + 1 & \"/\" & RecordCount End If End Sub
Private Sub Form6_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
DataSet11.Clear()
Me.SqlDataAdapter1.Fill(DataSet11) ShowPosition() End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Me.BindingContext(DataSet11, \"Workers\").Position > 0 Then Me.BindingContext(DataSet11, \"Workers\").Position -= 1 ShowPosition() Else
MessageBox.Show(\"已到达首记录!\提示信息\") End If End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If Me.BindingContext(DataSet11, \"Workers\").Position < RecordCount - 1 Then Me.BindingContext(DataSet11, \"Workers\").Position += 1 ShowPosition() Else
MessageBox.Show(\"已到达尾记录!\提示信息\") End If End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
25
Button3.Click
Me.BindingContext(DataSet11, \"Workers\").Position = 0 ShowPosition() End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Me.BindingContext(DataSet11, \"Workers\").Position = RecordCount - 1 ShowPosition() End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim j As Integer
Dim flag As Boolean = True For j = 0 To i
If TextBox1.Text = CStr(idnum(j)) Then flag = False
MessageBox.Show(\"ID地址有冲突!\提示\") End If Next
If TextBox3.Text <> 1 And TextBox3.Text <> 2 And TextBox3.Text <> 3 Then flag = False
MessageBox.Show(\"服务系统号只能为1,2,3!\提示\") End If
If flag = True Then
Dim MyNewData As DataRow
MyNewData = DataSet11.Workers.NewRow Try
With MyNewData .BeginEdit()
If TextBox1.Text <> \"\" Then
.Item(\"workerid\") = TextBox1.Text Else
MessageBox.Show(\"编号不能为空\") Return End If
.Item(\"password\") = TextBox2.Text .Item(\"leibie\") = TextBox3.Text .EndEdit() End With
Catch ex As Exception
MessageBox.Show(ex.Message) Return End Try
DataSet11.Workers.Rows.Add(MyNewData)
26
Try
Dim k As Integer = SqlDataAdapter1.Update(DataSet11, \"Workers\") DataSet11.AcceptChanges()
MessageBox.Show(k & \"条记录添加成功!\") Catch ex As Exception
MessageBox.Show(ex.Message) End Try
idnum(i) = TextBox1.Text i = i + 1 End If End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim j As Integer For j = 0 To i
If TextBox1.Text = CStr(idnum(j)) Then MessageBox.Show(\"ID地址有冲突!\提示\") End If Next
If TextBox3.Text <> 1 And TextBox3.Text <> 2 And TextBox3.Text <> 3 Then MessageBox.Show(\"服务系统号只能为1,2,3!\提示\") End If
CurrentPosition = Me.BindingContext(DataSet11, \"Workers\").Position movieRow = DataSet11.Workers.Rows(CurrentPosition) Try
With movieRow .BeginEdit()
.Item(\"workerid\") = TextBox1.Text .Item(\"password\") = TextBox2.Text .Item(\"leibie\") = TextBox3.Text .EndEdit() End With
Catch ex As Exception
MessageBox.Show(ex.Message) Return End Try Try
Dim k As Integer = SqlDataAdapter1.Update(DataSet11, \"Workers\") DataSet11.AcceptChanges()
MessageBox.Show(k & \"条记录修改成功!\") Catch ex As Exception
MessageBox.Show(ex.Message) End Try End Sub
27
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
CurrentPosition = Me.BindingContext(DataSet11, \"Workers\").Position movieRow = DataSet11.Workers.Rows(CurrentPosition) Dim n As Integer = movieRow.Item(\"workerid\") Dim j As Integer = 0 For j = 0 To i
If n = idnum(j) Then idnum(j) = -1 End If Next
movieRow.Delete() Try
Dim k As Integer = SqlDataAdapter1.Update(DataSet11, \"Workers\") DataSet11.AcceptChanges()
MessageBox.Show(k & \"条记录删除成功!\") Catch ex As Exception
MessageBox.Show(ex.Message) End Try End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
Dim exitform As New Form7
If exitform.ShowDialog = DialogResult.OK Then exitform.Close() Me.Close()
Application.Exit() End If frm8.Close() End Sub
Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click Me.Close() frm8.Show() End Sub End Class
3.创建票务界面
(1)创建模块的功能
对所售出的电影票进行管理,把没用的数据进行清除 (2)创建模块的设计
在工程中添加一个窗体,命名为“影库系统”,用来作为影库系统窗体。界面 的设计如下图所示。
28
(3)代码编写
Imports System.Data.SqlClient
Public Class Form9
Inherits System.Windows.Forms.Form Dim ds1 As New DataSet
Dim sqlda1 As New SqlDataAdapter Dim RecordCount As Integer
Private Sub Form9_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim sqlcmd1 As New SqlCommand
Dim str1 As String = \"SELECT Movies.movie_id, Movies.movie_name, Movies.actor, Movies.actress, Movies.producer, Movies.palydate FROM Movies INNER JOIN Tickets ON Movies.movie_name = Tickets.movie_name\" sqlcmd1.Connection = sqlcn1 sqlcmd1.CommandText = str1 sqlda1.SelectCommand = sqlcmd1 Try
sqlcn1.Open()
sqlcmd1.ExecuteNonQuery() Catch ex As SqlException MsgBox(ex.Message) Finally
sqlcn1.Close() End Try Try
sqlda1.Fill(ds1) Catch ex As SqlException MsgBox(ex.Message) End Try
29
RecordCount = ds1.Tables(0).Rows.Count End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
Dim flag As Boolean = False If TextBox1.Text = \"\" Then
MessageBox.Show(\"请认真填写电影名!\提示信息\") TextBox1.Focus() Else
For i = 0 To RecordCount - 1
If CStr(ds1.Tables(0).Rows(i).Item(\"movie_name\")).Trim = CStr(TextBox1.Text) Then
Try
TextBox2.Text = CStr(ds1.Tables(0).Rows(i).Item(\"movie_id\")) TextBox3.Text = CStr(ds1.Tables(0).Rows(i).Item(\"movie_name\")) TextBox4.Text = CStr(ds1.Tables(0).Rows(i).Item(\"actor\")) TextBox5.Text = CStr(ds1.Tables(0).Rows(i).Item(\"actress\")) TextBox6.Text = CStr(ds1.Tables(0).Rows(i).Item(\"producer\")) TextBox7.Text = CStr(ds1.Tables(0).Rows(i).Item(\"palydate\")) Catch ex As Exception MsgBox(ex.Message) End Try flag = True Exit Sub End If Next End If
If flag = False Then
MessageBox.Show(\"输入电影名有误!\提示\") End If End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
DataSet11.Clear()
Me.SqlDataAdapter1.Fill(DataSet11) Dim i As Integer Dim k As Integer
k = DataSet11.Tickets.Rows.Count Dim flag As Boolean = False If TextBox1.Text = \"\" Then
MessageBox.Show(\"请认真填写电影名!\提示信息\") TextBox1.Focus() Exit Sub
30
Else
For i = 0 To k - 1
If CStr(DataSet11.Tickets.Rows(i).Item(\"movie_name\")).Trim = CStr(TextBox1.Text) Then
DataSet11.Tickets.Rows(i).Delete() flag = True End If Next Try
Dim j As Integer = SqlDataAdapter1.Update(DataSet11, \"Tickets\") DataSet11.AcceptChanges()
MessageBox.Show(j & \"条记录删除成功!\") Catch ex As Exception
MessageBox.Show(ex.Message) End Try End If
If flag = False Then
MessageBox.Show(\"输入电影名有误!\提示\") End If End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim frm8 As New Form8 frm8.Show() Me.Close() End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim exitform As New Form7
If exitform.ShowDialog = DialogResult.OK Then exitform.Close() Me.Close()
Application.Exit() End If End Sub End Class
31
四.用户操作手册;
系统概述
(1) 能够对播放电影,工作人员,售票事宜,检票事宜,无用数据进行处理。 (2) 售票管理自然有专人负责,要处理各电影的电影票销售问题。当然包括退票问题,还有就是预订电影票其实也就相当于买票。两者可以当一回事处理。
(3) 检票管理事宜要完成观众进场时检票的事宜。其中包括了电影票的真假检测问题。 (4) 数据管理要处理电影的播放的次序,工作人员的管理,以及过期电影票的处理问题。
使用方法
(1) 首先打开本系统,可以进入登陆界面
使用本系统的共有三种人员:售票人员、检票人员、维护人员。系统要求输入职工
号、职工密码和所负责的服务系统。都选定后,按“确定”进入相应的服务系统。 (2) 进入售票系统
操作由工作人员完成。先选择要看的电影,然后界面会显示相关的信息。如果是观
众买票,则在“座位号“中输入所喜欢的座位,按”刷新“,系统显示相关信息,再按”购票“,售票成功。如果是退票,先选择要看的电影,然后界面会显示相关的信息。则在“座位号“中输入所票上的座位号,按”刷新“,系统显示相关信息,再按”退票“,退票成功。
要退出时,按“退出“,跳出退出窗体,按”确定“,成功退出。 (3)进入检票系统
操作由工作人员完成,可以从第一界面选择“检票系统”进入此界面。根据提示,在对应的文本框中填入电影票上的票号及对应的验证码,然后点击“验证真伪”按钮,根据数据库中票的信息,在右面的文本框中会有真假信息。点击“消除数据”按钮,那么所有的文本框都将为空。“退出”信息同上。 (4)进入维护系统
此窗口是一个过度窗口,工作人员通过点击不同的按钮,系统将进入相应的系统界面,共有如下三个分系统:影库系统,职工系统和票务系统。 (5)进入影库系统
本系统是对电影库的浏览及修改操作,通过点击按钮,可以直接对数据库中“Movies”表进行修改操作。里面各功能按钮有明确的提示,不会令人误解。 (6)进入职工系统
本系统是对工作人员相关信息的浏览及修改操作,通过点击按钮,你可以进行添加,修改,删除等操作,这些操作将直接作用在数据库中的“Workers”表上。因不同工作人员的权限,他们的系统服务号不同,所以可以对他们进行不同的修改。 (7)进入票务系统
这个系统关系到两个表,即“Movies”表和“Tickets”表,“Movies”表信息设
置为只读,根据电影名会有相应的信息显示出来。“Tickets”表就是卖票信息表,工作人员需要定期对表中数据进行删除操作,还是根据你输入的电影名,点击“全部清除”,则在
32
数据库中的“Tickets”表将全部清除关于此票的销售记录。点击“返回”,界面将返回到“系统维护”界面.
五.改进意见;
整个影院售票系统的功能比较简单,没有对很多功能进行细化。如引进的电影管理,电影院各放映厅的设置。本系统只是简单的设置了一个放映厅。而且座位也比较少。没有对预定售票系统进行另一设计和编码。只是也作为售票系统来处理。本系统虽然考虑到要使用扫描仪,但是却没有相关的技术支持和硬件支持。在退票中,没有涉及到票价的百分比扣除。所以本系统在很多方面都很欠缺,需要改进。
六.自我评价;
系统所涉及到的功能太少。本来电影院售票系统的内容就不多。界面设计这一块应该是个不错的优点。这也是本系统最独特的地方。还有就是与真的售票系统相接近的一点是座位由顾客选择。系统会把放映厅的座位情况显示给观众看。让他们自己来选择自己喜欢的座位。 不过,相应的座位有相应的价格。不管怎么样,通过全组人员的努力,做出了比较晚上完善的影院管理系统。在此过程中,我们进一步了解了ADO。NET编程。学会了VB。NET与SQL SERVER 2000的综合编程。虽然在此过程中我们遇到了很多问题,但是我们通过与同学讨论及参考相关书籍,最终问题大多都已解决。但是由于人力及编程经验有限,目前程序中也许还存在一些问题有待解决,我们组两个人确实有很大收获,不仅仅在编程的技巧上,还有协作精神上。
通过这次课程设计,我们都发现了自己身上存在的问题,确实需要很好的提高,希望以后能好好的参考书籍和向别人学习好的编程技巧,同时也应加强与同学间的协作,全面提高自己的编程素养及综合实力。
七.参考资料、书籍;
Visual Basic 6.0 数据库开发技术与工程实践 求是科技 编著 Visual Basic 数据库系统开发 案例精选 明日科技 高春艳 李俊民 刘彬彬 编著 SQL SERVER 2000 数据库教程 唐学忠 费贤举 胡智喜 腾刚 编著 VB.NET 应用教程 童爱红 刘凯 编著 VB.NET 实用数据库编程 廖疆星 张艳钗 肖金秀 编著
33
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务