毕业设计 影院售票系统的设计与实现.docx
- 文档编号:11739675
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:34
- 大小:570.78KB
毕业设计 影院售票系统的设计与实现.docx
《毕业设计 影院售票系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《毕业设计 影院售票系统的设计与实现.docx(34页珍藏版)》请在冰豆网上搜索。
毕业设计影院售票系统的设计与实现
影院售票系统的设计与实现
软件学院软件工程专业
123012008132吴涓涓指导老师:
王兴
【摘要】目前,看电影已经成了人们日常休闲生活的一部分,影片的数目和种类越来越多,因此,开发一个符合用户需求,功能齐全的影片管理、售票系统具有十分重要的意义。
本文介绍了影院售票信息系统的设计与实现,用C#语言编写前端应用程序,用SQL语言建立和维护后台数据库。
在对系统进行需求分析和总体设计后,文章对系统的功能模块进行了详细的设计与实现,有影片信息管理模块、影片售票模块和影片购票等模块,并对系统进行了总体测试。
文章最后进行全文小结并给出了下一步工作展望。
【关键词】影院售票系统;数据库;SQLSERVER;C#
1.引言
1.1课题背景
计算机科学技术的迅速发展,给我们的生活带来了许多便捷。
从日常生活,到学习工作,其中,电影事业的发展也随着计算机科学技术的发展而蒸蒸日上。
人们的业余生活也渐渐多元化,看电影占了其中的一大部分。
如何有效、快速地管理影片信息,合理、便捷地售票成了影院一个待为解决的问题。
利用计算机科学技术解决影院的问题显得尤其重要。
1.2课题研究意义
影院售票系统就是MIS系统的一种,用于电影院中对电影相关信息的处理和售票的操作。
以前,电影院里电影的上映是靠人工将上映时间以文字的形式表现在海报上,供消费者选择,无法及时更换电影信息,有可能造成消费者的不便,使消费者购买了错误的电影。
以往电影院的排队买票,由于人工纸质售票,使得效率不高,造成观影不便。
传统电影院的售票模式已无法满足现今社会快节奏的步伐,所以我们很有必要开发一套影院售票系统,是影院工作系统化和规范化。
目前市面上已经有很多影院售票系统,但是还有很多细节没有做得很好,界面不够友好,所以本文就这些问题做了详细的分析和改进,使用户更加方便的使用系统,提高工作效率。
1.3课题主要工作
本课题先研究影院售票系统的背景,研究意义,然后再对系统用到的相关理论技术进行研究。
进而对系统做需求分析,总体设计,详细设计及实现。
最后还对系统进行测试,看系统的功能是否都达到要求,总结下一步还需要做的工作。
2.系统相关技术及工具介绍
2.1SQLServer2005概述
SQLServer2005是微软开发的一套数据库服务器软件。
作为Windows数据库家族中出类拔萃的成员,SQLServer2005这种关系型数据库在可伸缩性、可用性和可管理性等方面有了显著的改进和提高。
SQLServer2005属于关系型数据库管理系统,简称RDBMS(RelationdatabaseManagementSystem),负责管理数据库结构,其内容主要包括维护数据库中数据之间的关系、确保数据存取的正确性以及在系统失败时恢复所有数据。
SQLServer2005是一个采用SQL语言的关系型数据库管理系统。
它拥有高弹性与多元化的结构,不仅符合业界的需求,更能与互联网紧密集成,而且全面支持包括WindowsCE,Windows2000,WindowsNT与WindowsXP等Windows的操作系统[1]。
2.2SQL语言
2.2.1SQL语言介绍
SQL全称是“结构化查询语言”,最早的是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEMR开发的一种查询语言。
SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1481年推出以来,SQL语言,得到了广泛的应用[2]。
2.2.2SQL的特点
(1)非过程化语言
SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。
SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。
所有SQL语句接受集合作为输入,返回集合作为输出。
SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。
SQL不要求用户指定对数据的存放方法。
这种特性使用户更易集中精力于要得到的结果。
所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段[3]。
(2)统一的语言
SQL可用于所有用户的DB活动模型,包括系统售票员、数据库售票员、应用程序员、决策支持系统人员及许多其它类型的终端用户。
基本的SQL命令只需很少时间就能学会,最高级的命令在几天内便可掌握。
SQL为许多任务提供了命令[4]。
(3)所有关系数据库的公共语言
由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS转到另一个。
所有用SQL编写的程序都是可以移植的。
SQL是PostgreSQL(和大多数其它关系型数据库)用做查询语言的语言。
它是可以移植的,并且容易学习使用。
但是所有SQL语句都必须由数据库服务器独立地执行。
这就意味着客户端应用必须把每条查询发送到数据库服务器,等待它处理这个查询,接收结果,做一些运算,然后给服务器发送另外一条查询。
所有这些东西都会产生进程间通讯,并且如果客户端在另外一台机器上甚至还会导致网络开销。
如果使用了PL/pgSQL,那么可以把一块运算和一系列查询在数据库服务器组成一个块,这样就拥有了过程语言的力量并且简化SQL的使用,因而节约了大量的时间,因为用不着付出客户端/服务器通讯的过热。
通过使用PL/pgSQL,应用可以获得可观的性能提升[5]。
2.3visualstudio2008
微软的.NET开发平台,.NET framework引入一种类似于通用语言运行库的技术,在管理底层代码的时候将编程和脚本语言统一起来,因为有了通用语言运行库,VS.NET为C++,C#和vb提供了一个通用的开发环境。
VS不是开发C#应用程序所必需的,但使用它可以使任务更简单一些。
可以在基本的文本编辑器(例如常见的Notepad)中处理C#源代码文件,再使用命令行应用程序(是.NETFramework的一部分)把代码编译到程序集中[6]。
该系统所用的是C#语言,Microsoft是这样描述C#的:
C#是从C和C++派生来的一种简单,现代,面向对象和类型安全的编程语言。
C#是可用于创建要运行在.NETCLR上的应用程序的语言之一,它从C和C++语言演化而来,是Microsoft专门为使用.NET平台而创建的。
C#的优点是,它是惟一为.NETFramework设计的语言,是在移植到其他操作系统上的.NET版本中使用的主要语言[7]。
3.系统分析与总体设计
3.1 系统需求分析
调查表明,随着经济的飞速发展人们的收入越来越高,相应的娱乐设施也越来越多,电影是人们的最佳选择之一。
以往的售票方式,以人工通过纸质媒介售票,不便于票数的统计,钱数的计算,还包括对于上映的电影信息的增删改查,都十分的不便利。
随着计算机技术的发展及计算机的日益普及,用计算机代替人工进行有关于数据的统计和分析处理,己成为大势所趋。
3.2系统应具备的基本功能
(1)新用户注册:
用户可以进行注册,然后登陆。
(2)用户查询:
用户可以对近期上映电影信息的查询。
(3)用户购票:
用户可以自助买票。
(4)售票员查询:
售票员可以对已储存在数据库的电影信息进行查询。
(5)新增电影:
售票员可以将新上映的电影信息加入数据库供用户查看、购票。
(6)修改电影:
售票员可以对已录入信息的电影进行修改。
(7)删除旧电影:
售票员可以对已下映的电影信息进行删除。
3.3系统的总体设计
3.3.1系统架构结构图
图3-1 系统框架结构
3.3.2系统功能介绍
本系统用户类型有2类:
影院售票员、影院用户,其中影院用户分为学生用户和普通用户。
影院售票员可以对上、下档电影进行信息维护,对即将上档的电影进行添加、对下档的电影进行删除、对信息有误的电影进行电影信息的修改、对影院现在正在上映的电影进行信息查询。
影院用户中的普通用户享有的权力是可以自助查询电影信息,并且进行购票;学生用户不但可以自助查询电影信息、购票,并且在购票的时候可以享受学生优惠折扣。
3.4数据库设计分析
1)用户作为一个实体,其中对用户类别和用户档案的属性进行详细设置。
2)售票员作为一个实体,其中对售票员的属性进行详细设置。
3)电影作为一个实体,其中对电影的属性进行详细设置。
图3-2 数据库E-R图
图3-3 用户信息E-R图
图3-4 电影信息E-R图
4.系统的详细设计与实现
4.1数据库详细分析
数据库名为:
MyFilmDB
表如4-1所示:
表4-1数据库表及注释
代码表名称
注释
电影信息
列出电影名称、类别、导演、票价、票总量、票余量
用于储存电影的详细信息
上映安排信息
包含电影名称、上映时间、上映日期
用于储存电影上映信息
电影类别
包含电影类别
用于对电影类别的设置
场次信息
包含电影所以场次的时间
用于添加电影时选择场次时间
用户登录信息
包含用户账号和密码
用于用户登录系统时验证
4.2用户注册模块
所有模块中最常用到的代码是数据库连接,经过执行数据库查询语句,根据返回的结果进行判断或操作。
该系统使用的是SQLserver数据库。
代码如下:
通过DBhelper连接数据库
namespace影院售票系统
{
classDBHelper
{
publicstaticSqlConnectionconn=newSqlConnection
("DataSource=SONY-VAIO\\CXC;InitialCatalog=MyFilmDB;IntegratedSecurity=true");
}
}
4.2.1用户注册(Registration.cs)
操作流程:
在输入框中输入用户名->在输入框中输入密码->在输入框中输入确认密码->在输入框中输入姓名->选择出生日期->在输入框中输入手机号->选择用户类别->如果确认填写完成按“提交”键。
这里使用的是用户自助注册,不用影院工作人员帮忙,减少影院人力资源的使用。
用户自助注册的信息将被存入数据库供使用。
新用户注册代码如下:
{
if(FPassword.Text!
=SPassWord.Text)
{
MessageBox.Show("请重新输入密码);
}
else
{
StringdateTime=(dateTimePicker1.Value).ToString();
Stringdate=dateTime.Substring(0,dateTime.Length-8).Trim();
//查询语句
stringsql=string.Format(@"insertintoID_PASS(TLgionId,TLgionPwd,TLgoinType,TLBrithDay,TLTelepone,TLName)
values('{0}','{1}','{2}','{3}','{4}','{5}')",
textBox1.Text.Trim(),FPassword.Text.Trim(),comboBox1.Text.Trim(),date,TLtelephone.Text.Trim(),Name.Text.Trim());
}
是否
图4-1新用户注册流程图
注册界面:
图4-2
4.3用户购票模块
4.3.1电影票查询
本模块可以查询电影的详细信息,如片名、类型、导演、演员、上映日期、上映场次时间、票价等内容,供消费者了解,以选择自己喜欢的电影来购票,获得最佳的观影体验。
代码如下:
{
DataSetsearchset=newDataSet("MyFilmDB");//创建DataSet对象
StringSql=String.Format(@"selectmoveTime,moveDatefromFilmShowTimewheremoveName='{0}'",cobMoveName.Text.ToString());
SqlDataAdapteradapter=newSqlDataAdapter(Sql,DBHelper.conn);
//重新填充数据集
adapter.Fill(searchset,"FilmShowTime");
//指定DataGridView数据源,显示数据
dataGridView1.DataSource=searchset.Tables["FilmShowTime"];
//读出电影详细信息
StringsqlInfor=String.Format("SELECTF_price,F_Type,F_DirectorFROMFilmwhereF_Name='{0}'",cobMoveName.Text.ToString());
try
{
//创建Command对象
SqlCommandcomm=newSqlCommand(sqlInfor,DBHelper.conn);
DBHelper.conn.Open();
//执行查询语句
SqlDataReaderreader=comm.ExecuteReader();
//循环读取记录
if(reader.Read())
{
movePrice.Text=reader["F_price"].ToString();
moveType.Text=reader["F_Type"].ToString();
moveDirector.Text=reader["F_Director"].ToString();
}
reader.Close();
}//try结束
catch(Exceptionex)
{
Console.WriteLine(ex.Message);
}
finally
{DBHelper.conn.Close();}
}
查询界面如下图:
图4-3
4.3.2用户订票(ChooseTime.cs、customSale.cs)
操作流程:
进入用户订票系统->选择片名->按“查找”键->在放映列表中选择放映时间->如确定购买此场次此电影,则按“订票”键->界面跳转到“订票信息”->选择票的种类
购票
代码如下:
{
//读出电影详细信息
intB_amount=Convert.ToInt32(BuyAmount.Text);
intRest_a=Convert.ToInt32(label7.Text);
intnewSet_a=Rest_a-B_amount;
stringsql2=string.Format(@"updateFilmsetF_Rest='{0}'whereF_Name='{1}'",
newSet_a,txtName.Text.ToString());
stringsql=string.Format(@"insertintouserOder(useName,moveName,moveDate,moveTime,amount,money)
values('{0}','{1}','{2}','{3}','{4}','{5}')",
userName,txtName.Text.ToString(),DateText.Text.Trim(),TimeText.Text.Trim(),BuyAmount.Text.Trim(),MonyAmount.Text.Trim());//读出电影详细信息
}
订票界面如下图:
图4-4
图4-5
图4-6
图4-7
本模块就是数据库的增、删、改、查功能最典型的体现,是售票员对电影详细信息的管理。
售票员可以对数据库里现有的电影进行查询,查看其片名、类型、导演、作者、价格、余票量等详细信息;将最新上映的电影的详细信息加入电影信息的数据库里,供消费者查询、购票;对出现错误的电影信息进行更正,以免误导消费者买了错误的电影;售票员还可以对下档的电影进行删除操作。
代码如下:
{
DataSetsearchset=newDataSet("MyFilmDB");//创建DataSet对象
StringSql=String.Format(@"selectmoveName,moveTime,moveDatefromFilmShowTimewheremoveName='{0}'",cboMoveName.Text.ToString());
SqlDataAdapteradapter=newSqlDataAdapter(Sql,DBHelper.conn);
//重新填充数据集
adapter.Fill(searchset,"FilmShowTime");
//指定DataGridView数据源,显示数据
dataGridView1.DataSource=searchset.Tables["FilmShowTime"];
}
界面如下:
图4-8
4.4.2增加电影信息
代码如下:
{
StringdateTime=(dateTimePicker1.Value).ToString();
Stringdate=dateTime.Substring(0,dateTime.Length-8).Trim();
//intmoveID=GetMoveMaxID("Film");
//intmoveTimeID=GetMoveMaxID("FilmShowTime");
//if(ValidateInput()&&IfRepeat(date,cboTime.Text)==true)
//{
StringSql=String.Format(@"INSERTINTOFilm
VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}');",
moveName.Text.Trim(),moveType.Text.Trim(),moveDirect.Text.Trim(),float.Parse(price.Text.Trim()),Convert.ToUInt32(moveAmount.Text.Trim()),Convert.ToUInt32(moveRest.Text.Trim()),FAct.Text.Trim(),FLag.Text.Trim());
StringSql2=String.Format(@"INSERTINTOFilmShowTime
VALUES('{0}','{1}','{2}')",moveName.Text.Trim(),cobTime.Text.Trim(),date);
}
图4-9
图4-10
4.4.3修改电影信息
代码如下:
{
DialogResultresult=MessageBox.Show("确定要保存修改吗?
","操作提示",
MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
if(result==DialogResult.OK)//确认修改
{
stringsql="SELECT*FROMFilm";
SqlDataAdapteradapter=newSqlDataAdapter(sql,DBHelper.conn);
//自动生成更新数据用的命令
SqlCommandBuilderbuilder=newSqlCommandBuilder(adapter);
//将修改过的数据提交到数据库
adapter.Update(searchset,"Film");
MessageBox.Show("修改成功!
");
}
}
图4-11
4.4.4删除电影信息
代码如下:
{
DialogResultresult=MessageBox.Show("确定要删除该电影吗?
","操作提示",
MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
if(result==DialogResult.OK)//确认修改
{
dataGridView1.Rows.Remove(dataGridView1.CurrentRow);//删除行下面的是保存修改
stringsql="SELECT*FROMfilm";
SqlDataAdapteradapter=newSqlDataAdapter(sql,DBHelper.conn);
//自动生成更新数据用的命令
SqlCommandBuilderbuilder=newSqlCommandBuilder(adapter);
//将修改过的数据提交到数据库
adapter.Update(searchset,"film");
}
}
图4-12
5.系统测试
5.1测试技术与方法
软件测试是软件开发过程中的一个重要组成部分,是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程[8]。
从是否需要执行被测试软件的角度分类:
静态测试和动态测试;从测试是否针对软件结构与算法的角度分类:
白盒测试和黑盒测试;从测试的不同阶段分类:
单元测试、集成测试、系统测试、验收测试。
5.2测试说明
在系统开发过程中,已经进行了单元测试.在这一章节中进行的是黑盒测试,也就是集成测试.对输入和输出数据进行分析,是否产生期望的结果,或产生错误的原因。
5.3测试用例和输出结果.
模块名称:
用户注册
测试类型:
黑盒测试
用例描述:
输入新用户信息进行注册,用注册好的账号登陆系统。
输入1:
注册类型为“用户”的新账号
图5-1
如注册成功,则可用此账号登陆,登陆后的界面如下:
图5-2
输入2:
注册类型为“售票员”的新账号
图5-3
如注册成功,则可用此账号登陆,登陆后的界面如下:
图5-4
模块名称:
影片管理
测试类型:
黑盒测试
用例描述:
输入新影片信息,可以查询显示出新影片的信息,删除过期电影信息,修改错误的电影信息。
添加新的影片,如图5-5:
图5-5
确认是否插入该影片,如图5-6:
图5-6
添加成功后询问是否继续添加,如图5-7。
由于一个影片有多个上映日期,并且一天之内有多个上映时间,为了避免重复输入的麻烦,在此如选择继续插入,则不改变原有信息,售票员只需更改上映时间和上映日期,如图5-8的红色方框标注:
图5-7
图5-8
查询影片信息,看是否出现刚刚添加的新影片信息,如图5-9:
图5-9
删除电影信息,选择F_ID为22的电影进行删除,如图5-10:
图5-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 影院售票系统的设计与实现 影院 售票 系统 设计 实现