基于Java的影院售票系统的设计与实现【附源码+lun文】

影院售票系统的设计与实现

**

袁嘛:2-3-8-6-7-0-4-0-3-0

**

摘 要

随着社会的发展,计算机的普及,计算机应用技术在我们的生活中起着越来越重要的作用,计算机的方便性、高效性日益突出。
在影院售票过程,从电影信息的添加,放映厅的安排,到影票的销售及统计,大量的工作都需要处理得井井有条,稍有错误就会给影院造成许多不必要的损失。然而,面对复杂的管理,仅仅依靠人力来完成这些工作已经不能满足日益增长的需求,“影院售票系统”就是为解决这个问题而设计的.
通过分析知道,电影售票系统包含电影的添加、删除、管理与销售、统计等过程,怎样使这些过程快速有效的进行是我们首要解决的问题。
“影院售票系统”主要是针对这些问题来进行设计的。系统的主要功能包括:
1。 管理员对电影信息的添加、电影信息的修改与删除、票价的折扣管理和对当天影票销售的统计;
2。 售票员对近期影票的销售、退票、订票的处理和会员的添加与管理;
3. 前台界面展示近期电影的详细信息与查询结果;
4. 会员登录实现在线购票和预订等。
系统架构为C/S,采用面向对象分析与设计方法进行系统的分析与设计,系统的实现采用Visual Studio 2008平台下的C#开发语言,数据库使用SQL Server 2005。

关键词:影院,售票,C#,SQL Server 2005

THE DESIGN AND IMPLEMENTATION OF CINEMA TICKETING SYSTEM

ABSTRACT

With the development of society, the computer was popularize, computer application technology in our life plays a more and more important role, the computer’s convenience and efficiency is more and more serious。
In the cinema’s ticketing process, begin with film’s information add, and the movie house’s arrangement, ticket sales and the sale’s statistics, a large of work have to doing perfect order , a little mistake will be caused many unnecessary loss。 However, face the complex management, just rely on human have already can’t satisfy with the growing demand, In order to solve this problem, so design the ” Cinema Ticketing System”。
With the analysis we know that how solve the problem to add, delete, management and sales is our top priority.
"Cinema Ticketing System” is mainly aimed at these problems to the design。 The main functions of this system include:
1。 The administrator could add and delete the films, set the ticket price discount and statistic the sales。
2. The Salesman could sale and deal with tickets, deal with the booking tickets, to add and management the member。
3。 Client of system could show detailed information of film and show result of querying.
4. The Member could login and buy tickets or book tickets.
This system’s framework is C/S. This system’s analysis and design method is Object—oriented。 This system’s realization is under the Visual Studio 2008 platform and the language is C# and the database is SQL Server 2005.

KEY WORDS: Cinema, Ticketing, C#, SQL Server 2005
目 录

前 言 1
第1章 绪论 2
1。1 项目开发背景 2
1.2 项目开发工具 2
第2章 系统分析 3
2。1 系统功能需求分析 3
2。2 系统用例图 4
第3章 系统结构设计 6
3。1 系统功能模块划分 6
3.1。1 权限划分 6
3。1.2 前台界面功能设计 7
3。1。3 销售端功能设计 8
3。1.4 后台管理功能设计 9
3。2 数据库设计 10
3。2。1 数据库概念设计 10
3.2.2 数据库物理设计 11
第4章 系统功能实现 15
4.1 系统功能选择 15
4。2 前台界面功能实现 15
4。2.1 电影详细信息浏览 15
4.2.2 放映信息查询 15
4。2.3 会员登录界面 16
4.2。4 会员购票界面 17
4.3 管理与售票功能实现 18
4.3。1 管理员及售票员登录界面 18
4.3.2 电影信息管理实现 18
4.3。3 售票功能实现 20
第5章 系统测试 21
5。1 测试环境 21
5。2 功能测试 21
5.2。1 会员购票测试 22
5。2。2 售票测试 22
5.3 使用手册 23
结 论 24
谢 辞 25
参考文献 26
附 录 27

前 言

随着社会的发展,计算机在我们的生活中起着越来越重要的作用,办公自动化已是不可阻挡的趋势,如何在一定时间内高效地完成一项工作是我们生活中追求的一个目标。日常生活中,越来越多的问题我们通过计算机来解决,当然,在影院售票的过程中,我们能利用一个非常简单有效的影院售票系统来实现售票的自动化是最好不过的。提高工作效率,解决复杂的管理问题是我们共同的目的。本文即以自我设计的“影院售票系统”,来介绍“影院售票系统”的设计与实现。
本系统按照简单、明了、高效的思想来设计影院在日常售票与影片信息管理中遇到的一些问题。首先,对于售票的问题,实现灵活的售票方式,采用会员在线购票或者预订座位及售票员根据客户的要求选择客户所选座位的位置以实现售票的目的,简化购票流程,从选择影片到选择座位位置,然后到出票,全部过程只需通过鼠标的点击即可完成复杂的售票工作,大大提升了工作效率。当然,对影片信息的管理是必不可少的,影片信息的添加、删除,影票折率的设定及对影票销售的统计构成了后台的管理,管理员可以一一对每个模块进行管理。另外,为了更好地让顾客了解最新的电影放映情况,前台界面提供影片信息的详细查看和近期电影放映的安排,让“影院售票系统”更人性化。
“影院售票系统"的设计采用Visual Studio 2008为开发平台,C#.NET为开发语言,采用结合SQL Server 2005数据库的安全高效性,更好的提高系统效率.
限于自身水平,作品还有不足之处,恳请批评指正.

第1章 绪论

本论文以“影院售票系统”为开发背景,论文论述了“影院售票系统”的概念、结构以及系统开发的基本原理和方法,整篇论文分为前言、绪论、系统需求分析、系统结构设计、系统功能实现、系统性能测试、总结、参考文献和附录九部分组成。

1.1 项目开发背景
随着计算机的日益普及,更多的工作我们要交给计算机来完成,这样不仅节省人力物力,而且更重要的是能够大大提高我们完成工作的效率,在21世纪,提高效率就意味着更好的增加收益.我国在全国范围内推广计算机的应用虽然比较晚,但是近些年来发展迅速,计算机已经融入到我们生活中的方方面面,比如我们获取新闻、日常购物、火车票的预订等等,这些与我们日常生活息息相关的事情,我们都可以用计算机来完成。
对于电影院来说也不例外.影院售票与日常影片信息管理看似是一件容易的事情,但是实际操作请来还是非常的麻烦,要花费大量的精力来对影票进行核实、对每个座位进行排查等,这些都是一些枯燥而繁杂的工作。能够在日常的售票管理中节省人力物力,提高售票、管理的效率是很重要的。一款适合于电影院的影院售票系统,能够大大提高电影院售票管理日常工作效率,本软件就是为了此目的而进行设计制作的。

1.2 项目开发工具
“影院售票系统"使用Microsoft Visual Studio 2008开发平台,C#。NET为开发语言,SQL Server 2005数据库作为系统数据库。

第2章 系统分析

本章主要介绍“影院售票系统”的功能需求分析和数据库的设计分析.

2。1 系统功能需求分析
在日常生活中,闲暇时间带着家人、陪着朋友去电影院看一场电影,陶冶一下情操已成为越来越多人的选择,电影市场在我国的比重随着社会的发展不断的扩大,人们对电影文化的关注度不断提升,这样就更加刺激了电影市场的发展,电影院在每个城市都不断建设,而这时,一款良好的影院售票管理软件的出现无疑给影院的发展添加一抹亮丽的风景。
“影院售票系统”的设计初衷是简化影院售票流程、提高售票效率、提升影院对影片的管理质量,开发系统的目的是为了更好的促进影院管理规范化及操作的简易化。从节俭人力物力的角度出发,本着方便实用的原则,为影院设计一款简单、方便、易操作的售票管理系统,为影院的售票、影片管理提供一个良好的平台。
“影院售票系统”即为影院优化售票流程,提高管理质量而进行设计的。系统的主要功能包括:
1。 管理员对电影信息的添加、电影信息的修改与删除、票价的折扣管理和对当天影票销售的统计;
2. 售票员对近期影票的销售、退票、订票的处理和会员的添加与管理;
3。 前台界面展示近期电影的详细信息与查询;
4。 会员登录实现在线购票和预订等;
系统的设计要注重易操作性和高效性,方便售票员和顾客使用。售票界面要直观,能够清晰显示放映厅的座位分布及某场电影已销售影票情况。系统可提供会员管理功能,根据会员级别提供打折优惠。系统模块图如图2—1所示。
图2-1 系统模块图

2.2 系统用例图
用例图主要用来图示化系统的主事件流程,用来描述系统的需求及各个模块以及它们之间的关系,观察用例图可以更方便地看出系统的大体结构及功能。

  1. 管理员用例图,如图2-2所示。

图 2-2 管理员模块用例图

  1. 售票员用例图,如图2-3所示。

图 2—3 销售员模块用例图
3、会员用例图,如图2—4所示。

图 2-4 会员模块用例图

第3章 系统结构设计

3.1 系统功能模块划分
本系统的主要功能是通过PC机的窗体应用程序来实现对某影院电影票的预订、销售等业务.
影院售票系统主要功能包括电影信息管理、售票管理和会员在线购票等功能,系统流程图如图3—1所示.

图 3-1 系统功能流程图

3。1.1 权限划分
1。 顾客:通过前台界面顾客可实现电影信息查询浏览,会员在线购票、预订影票等功能;
2. 售票员:通过售票窗口可实现售票员卖票、出票、退票等操作,会员可凭会员证领取预订影票,同时实现新会员的注册、充值等功能;
3。 管理员:管理员通过登录后台可使用添加、删除电影信息,设定票价、设定优惠措施及统计当天售票的详细信息等功能.

3.1.2 前台界面功能设计
1。 影院售票系统提供近两天的放映信息,在首页面顾客可以看到电影放映的安排信息,也可看到影院的一些公告和优惠等信息。
2。 在电影查询界面,系统提供按日期查询、按放映厅查询及电影名称关键字查询等,查询结果将以详细信息的方式显示。
3. 提供会员在前台界面登录实现电影票的订购操作;若会员实现在线支付则凭刷会员卡入场,入场时影院根据会员购买座位号提供纸质座位号信息;若会员卡中余额不足则可实现在线预订.
会员登录购票功能流程图如图3-2所示.

图 3—2会员在线购票流程图
系统前台功能结构图如图3—3所示。

图 3-3 系统前台功能结构图

3。1.3 销售端功能设计

  1. 在销售端提供售票员对电影票的售卖,可销售近两天的电影票,当电影开始三十分钟后则停止销售当场的电影票。
    2。 销售员可根据会员及顾客的不同类型选择售票的优惠折率,系统自动算出本次售票的金额并打印出项应的影票.
  2. 售票员可根据顾客的要求为顾客选择相应的座位号.
  3. 售票员可对售出票或会员预订票进行退票操作,并在办理退票操作后收取一定的退票费用,退票必须在电影开始前操作,否则无法退票.
    5。 售票员可对会员进行办理与充值服务。
    销售功能结构图如图3—4所示。

图 3—4 销售功能结构图
售票员售票流程图如图3—5所示。

图3—5售票员售票流程图

3.1。4 后台管理功能设计

  1. 管理员可根据影院实际情况安排近两天的电影放映,对电影信息进行添加与删除.
  2. 管理员可设定某场电影的票价,对不同类型的顾客设定不同额度的优惠折扣率。
    3。 管理员统计当天销售情况,分别可统计某一天中某个放映厅的收入详情与某一场电影的收入详情.
    后台功能结构图如图3—6所示.

图3-6 管理员功能结构图

3。2 数据库设计
数据库设计(Database Design)是指根据用户需求,在具体的数据库管理系统上设计数据库的结构和建立数据库的过程.“影院售票系统”的数据库使用SQL Server 2005数据库进行设计。
一般情况下,数据库的设计过程大致可分为5个步骤:需求分析、概念设计、逻辑设计、物理设计、验证设计。根据“影院售票系统”的需求分析,本系统需要建立8个数据表来存放不同的数据。

3.2.1 数据库概念设计
根据需求分析,为“影院售票系统”建立一个名为DB_Cinema的数据库,在DB_Cinema数据库中包含有T_User、T_FilmInf、T_TicketType、T_MemberInf、T_TicketInf、T_MovieHouse、T_BookTicket、T_PlayInf八个表。系统的E—R图如图3-7和图3-8所示。

图3-7 电影信息管理E-R图
图3-8 会员信息-会员订票信息E-R图

3.2.2 数据库物理设计
接下来设计数据库表的物理结构,在设计物理结构的过程中,根据数据库的概念设计,各个表的说明如表3-1所示.

表3-1 数据库DB_Cinema
表名称 说明
T_User 存储系统用户
T_FilmInf 存储电影信息
T_PlayInf 存储放映信息
T_TicketType 存储电影票类型
T_MemberInf 存储会员信息
T_TicketInf 存储出票信息
T_MovieHouse 存储放映厅信息
T_BookTicket 存储预订票
T_User表的字段说明如表3-2所示。
表3-2 T_User表
字段名称 字段类型 字段宽度 字段含义 取值说明
U_Name Nchar 10 用户名称 主键
U_Password Nchar 10 登录密码 Not null
U_Type Nchar 10 用户类型 Not null
T_PlayInf表的字段说明如表3-3所示。
表3—3 T_PlayInf表
字段名称 字段类型 字段宽度 字段含义 取值说明
PI_Id Nchar 5 放映编号 主键
FI_Id Nchar 5 电影编号 Not null
PI_ShowDate Nchar 10 上演日期 Not null
PI_InterTime Nchar 10 入场时间 Not null
MH_Id Nchar 5 放映厅编号 Not null
T_FilmInf表的字段说明如表3—4所示.
表3-4 T_FilmInf表
字段名称 字段类型 字段宽度 字段含义 取值说明
FI_Id Nchar 5 电影编号 主键
FI_Name Nchar 10 电影名称 Not null
FI_ Director Nchar 10 电影导演 Not null
FI_Role Nchar 30 电影主角 Not null
FI_Image Image 海报 Not null
FI_Iintroduction Nchar 255 电影简介 Not null
FI_Price Decimal (5,2) 电影售价 Not null
T_TicketType表的字段说明如表3—5所示.
表3-5 T_TicketType表
字段名称 字段类型 字段宽度 字段含义 取值说明
TT_Id Nchar 5 类型编号 主键
TT_Type Nchar 10 类型名称 Not null
TT_ Cut-rate Numeric (2,1) 折价 Not null
T_MemberInf表的字段说明如表3-6所示。
表3-6 T_MemberInf表
字段名称 字段类型 字段宽度 字段含义 取值说明
MI_Id Nchar 5 会员证号 主键
MI_Name Nchar 10 会员姓名 Not null
MI_Phone Nchar 11 电话号码 Not null
MI_Certificate Nchar 20 证件号 Not null
MI_Spent Decimal (6,2) 会员消费 Not null
MI_Surplus Decimal (6,2) 卡内余额 Not null
MI_Integral Decimal (6,2) 消费积分 Not null
MI_Grade Nchar 10` 会员级别 Not null
T_TicketInf表的字段说明如表3—7所示。
表3—7 T_TicketInf表
字段名称 字段类型 字段宽度 字段含义 取值说明
TI_Id Nchar 5 影票编号 主键
TT_Id Nchar 5 类型编号 Not null
FI_Name Nchar 10 电影名称 Not null
MH_Id Nchar 5 放映厅编号 Not null
SP_Name Nchar 5 座号编号 Not null
PI_Date Nchar 10 播放时间 Not null
TI_Date Nchar 10 入场时间 Not null
TI_Money Decimal (5,2) 影票价格 Not null
T_MovieHouse表的字段说明如表3—8所示。
表3—8 T_MovieHouse表
字段名称 字段类型 字段宽度 字段含义 取值说明
MH_Id Nchar 5 放映厅编号 主键
MH_Name Nchar 10 放映厅名称 Not null
T_BookTicket表的字段说明如表3—9所示。
表3-9 T_BookTicket表
字段名称 字段类型 字段宽度 字段含义 取值说明
BT_Id Nchar 5 预订编号 主键
MI_Id Nchar 5 会员证号 Not null
FI_Name Nchar 10 电影名称 Not null
SP_Name Nchar 5 座号编号 Not null
PI_Date Nchar 10 播放时间 Not null
MH_Id Nchar 5 放映厅编号 Not null
TI_Date Nchar 10 入场时间 Not null
BT_Money Decimal (5,2) 订票价格 Not null

第4章 系统功能实现

4.1 系统功能选择
系统功能选择窗体是在用户第一次启动软件时供用户选择系统功能的窗体,通过功能选择窗体用户可以选择系统进入前台界面或者进入售票、管理登录界面,如图4—1所示。

图4—1 功能选择窗体

4。2 前台界面功能实现

4。2。1 电影详细信息浏览
此界面是前台界面启动的第一个界面,在此界面中,用户可以清楚的看到近期将播放的电影的详细信息及在左侧公告栏中浏览本期购票优惠折率。在公告栏右下角提供会员登录链接,供会员进行登录购票或者在会员余额不足的情况下进行订票,前台界面首界面如图4—2所示。

4.2。2 放映信息查询
在此界面中,用户可根据自己需要查询的信息对近期将要放映的电影信息进行查询.查询可分为按时间查询、按放映厅查询和按时间和放映厅查询三种查询模式,界面如图4—3所示.

图4—2 前台界面首界面

图4-3 放映信息查询界面

4。2.3 会员登录界面
会员登录界面提供会员的登录操作,会员通过登录可以实现在线购买所需影票,登录会员购票界面需要会员提供有效的会员姓名和密码。会员在线购票可节省购票排队时间,另外还可享受影票打折优惠,会员登录界面如图4—4所示。

图4—4 会员登录界面

4。2.4 会员购票界面
会员购票界面提供会员在线购票功能,在此界面中会员可以查看自己的信息,可根据需要对近期电影进行购票操作,如果会员卡内的余额不够支付本次购票所需金额,则提示会员进行充值或者进行座位预订,预订后的影票可凭会员卡及订票编号在售票窗口进行领取,会员购票界面如图4—5所示。

图4—5 会员购票界面
4.3 管理与售票功能实现

4。3。1 管理员及售票员登录界面
本界面提供管理员和售票员的登录功能,管理员登录系统后台可以对影院售票系统进行管理操作,而售票员登录系统后则可进行影票销售操作及另外一些关于票务、会员的操作,如图4-6所示。

图4-6 管理员、售票员登录界面

4.3。2 电影信息管理实现
在系统管理后台,管理员可对影院近期电影进行添加、往期电影进行删除和对近期电影的票价折率进行设定。在添加电影编号的过程中,在“电影编号"旁边会出现“最后一部电影的编号为FXXX”,以便管理员在对电影添加编号的过程中按照此编号往下对影片进行编号,从而排除出现影片编号冲突而添加失败的情况,在选择电影海报的时候点击“浏览”按钮弹出文件选择对话框,选择目标图片即可。如图4-7所示。

图4—7 管理员管理界面
另外,为了方便统计影院的销售情况,管理员可以对近期销售的影票进行统计,统计包括按影片统计和按放映厅统计两部分,这两部分统计都包含各类票的出票情况、小计及当天销售额的总计,如图4—8所示。

图4—8 某日销售统计
4。3.3 售票功能实现
当售票员通过登录界面登录到售票界面后,可对近期电影进行售票,售票界面如图4—9所示。

图4-9 售票员售票界面
售票员登录系统后,除了可以完成常规的售票以外,还可以对销售的票进行退票处理,对会员预订的票进行购买处理以及对会员进行充值或者根据客户需要开通新的会员,界面如图4-10所示.

图4—10 售票员处理票务界面

第5章 系统测试

5。1 测试环境
表5—1 测试环境
软件环境 操作系统 Windows 7 旗舰版 64位 ( DirectX 11 )
数据库 Microsoft SQL Server 2005 Express
硬件环境 处理器 英特尔 Core i3 M 370 @ 2。40GHz 笔记本处理器
内存 2 GB ( 尔必达 DDR3 1067MHz )
主硬盘 希捷 ST9500325AS ( 500 GB / 5400 转/分 )
显卡 Nvidia GeForce 310M ( 512 MB / 联想 )
显示器 联想 LEN40A0 ( 14 英寸 )

5。2 功能测试
经过一系列的测试,本“影院售票系统”各个功能模块均能满足影院售票过程的基本需要,能够有效的完成影片信息的查询,会员购票,销售员售票及管理票务,管理员实现后台管理等。
表5-2 功能测试方案
序号 功能点 测试方法
1 登录 判定覆盖、等价类划分
2 影片管理 等价类划分
3 放映信息查询 边界值分析、等价类划分
4 电影信息查询 边界值分析、等价类划分
5 会员在线购票 边界值分析、等价类划分
6 会员在线订票 边界值分析、等价类划分
7 售票员售票 边界值分析、等价类划分
8 售票员退票 边界值分析、等价类划分
9 会员充值 边界值分析、等价类划分
10 会员办理 边界值分析、等价类划分
11 订票处理 边界值分析、等价类划分
5.2.1 会员购票测试
当会员登录系统后,可根据需要对电影进行选择购买,在购买的过程中,系统会判断会员的余额是否足够支付本次购票所需金额,如果余额不足,则弹出提示框提醒会员余额不足,是否进行订票操作,如果选择“是”,则弹出会员本次预订票的编号,以便到售票窗口进行取票,如果选择“否”则提示会员可到售票窗口充值或者直接购票,预订票提示信息如图5—1所示.

图5-1 预订票测试界面

5.2.2 售票测试
销售员登录销售端后可实现对影片的售票,售票员在操作时可实现同时销售多张影票,销售成功后会弹出销售的影票界面,如图5-2所示。

图5—2 售票员售票

5。3 使用手册
系统使用说明:
1。 系统在操作过程中如果用户输入不合法的字符或空字符,系统会提示用户输入完整,一般不会出现系统错误现象。
2. 在管理员添加电影时,“电影编号"需根据提示输入,以免编号冲突产生系统报错情况,即使操作不当报错,只需修改错误即可,不会出现系统错误等问题。
3. 系统大多采用鼠标点击输入的方式进行选择,大大降低因输入错误而造成的不便;另外,需手动输入的部分大多采用maskedTextBox进行限制输入,以免输入不合法字符而造成不必要的错误,大大增加了系统的安全性.

结 论

在即将毕业的日子里,学校安排给了我们毕业设计,是对我们大学三年来所学知识的考验,让我们把在大学三年来学习的理论知识与实际的生产相结合,融会贯通,使我们所学的知识更加牢固,理论与实际结合的能力加以提升,为我们将来找到一份满意的工作奠定基础。
在做毕业设计的过程中,我学到了很多在课堂上没有学到的知识与解决问题的方法,在这次毕业设计中,我很好的锻炼了我综合知识、灵活运用所学知识的能力,同时也真正提高了我查阅文献资料、网络搜索的水平,是我在本次实习中受益匪浅,让我学到了丰富的知识。

谢 辞

时光飞逝,三年的大学生活已逝,在这三年中,各位老师对我们的谆谆教诲仍在心间,这将是我们永恒的财富。
能够顺利完成毕业设计,老师和同学们的帮助是不可缺少的,正如做一件事情,不可能全部由一个人来完成,在做的过程中总会遇到这样那样的问题是我们自己无法自己解决的.这里要感谢陈老师的指导和帮助,为我的毕业设计设定目标,分析毕业设计的题目内容,让我很好的了解所选毕业设计任务的方向,为我完成毕业设计铺下良好的基础,在完成任务的过程中遇到不懂不会的问题给我以合理化的建议。另外要感谢在此过程中帮助过我的同学们,我们在一起探讨问题的同时,让我学到了很多我没有学到的东西。
在最后,再次真诚的感谢大学里所有老师的教导,感谢我们一起走过大学三年的同学们.

参考文献

[1]李春葆, 金晶, 于丹丹。 ASP。NET 2.0动态网站设计教程[M]。 北京: 清华大学出版社, 2010.
[2]郭鲜凤, 郭翠英. SQL Server 数据库应用开发技术[M].北京: 北京大学出版社, 2009.
[3]张晓蕾, C#程序设计使用教程[M].北京: 人民邮电出版社, 2008。
[4]陶华亭, 软件工程初级教程[M]。北京: 清华大学出版社, 2010。
[5]袁涛, 孔蕾蕾, 统一建模语言UML[M]. 北京: 清华大学出版社, 2009.
[6]张红霞, 白桂梅, 数据结构与实训[M]. 北京: 电子工业出版社, 2010.
[7]王珊, 萨师煊, 数据库系统概论[M]. 北京: 高等教育出版社, 2011.
[8]郭鲜凤, 郭翠英. SQL Server数据库应用开发技术[M]. 北京:北京大学出版社, 2009。
[9]马军,李玉林. SQL 语言与数据库操作技术大全[M]。 北京: 电子工业出版社, 2008.
[10]戴宗友, 张伍荣, 杨辉.C#程序设计实训[M]. 北京: 清华大学出版社, 2009。
[11]王文强. 新一代影院售票系统[J]. 影视技术. 2003,(12):38—40.
[12]沈蕴梅. 基于借口技术的影院售票系统的设计与实现[J]。 科技信息. 2010,(31):57-58.
[13]孙朝云, 陈宁宁, 赵柯. 影院售票系统开发中的问题与处理技术[J]. 现代电子技术。 2009,(22):50-52.
[14]朱如龙。 SQL Server 2005数据库应用系统开发技术[M]。 北京: 机械工业出版社, 2006.
[15]明日科技。 C#开发技术大全[M]. 北京: 人民邮电出版社, 2011。

附 录

主要源程序代码

  1. 售票及管理员登录源代码
    (会员登录与之相似,不再累述)
    private void button1_Click(object sender, EventArgs e)

    String constr = System。Configuration.ConfigurationSettings。AppSettings[”connstr”].ToString();
    SqlConnection myconn = new SqlConnection();
    myconn。ConnectionString = constr;
    string password;
    string type;
    if (textBox2.Text !=”“)
    {
    try

    myconn.Open();
    string sqlstr = ”select U_Password from T_User where U_Name=@name”;
    SqlCommand mycmd = new SqlCommand(sqlstr, myconn);
    mycmd.Parameters。Add(”@name", SqlDbType。NChar).Value = comboBox2.Text;
    Object pwdObj = mycmd。ExecuteScalar();
    password = pwdObj。ToString().Trim();
    string sqlstr1 = ”select U_Type from T_User where U_Name=@name”;
    SqlCommand mycmd1 = new SqlCommand(sqlstr1, myconn);
    mycmd1。Parameters。Add(“@name”, SqlDbType。NChar).Value = comboBox2.Text;
    type = mycmd1。ExecuteScalar().ToString()。Trim();
    if (textBox2.Text。Trim() == password & comboBox1.Text.Trim() == type & type == ”管理员”)
    {
    Program.manage = new manage();
    Program.manage.Show();
    this.Close();
    }
    else if (textBox2.Text.Trim() == password & comboBox1。Text.Trim() == type & type == “售票员”)
    {
    Program。sale = new sale();
    Program。sale.Show();
    this。Close();

    else

    textBox2.Text = ””;
    comboBox1。Text = “请选择”;
    MessageBox.Show(”密码错误!");
    }
    myconn。Close();
    }
    catch (SqlException ex)
    {
    MessageBox。Show(ex。ToString());
    }
    catch (NullReferenceException ex)

    MessageBox。Show(”用户名不存在”);
    }

    else
    MessageBox。Show(“请输入密码!”);
    }
  2. 电影票的销售
    (会员购买与之相似,不再累述)
    private void comboBox4_SelectedIndexChanged(object sender, EventArgs e)//影院座位的生成代码

    groupBox1。Controls.Clear();
    string F_MH;
    List SP_Name=new List〈string>();
    List SP_Nameb = new List<string〉();
    string mystr = System.Configuration。ConfigurationSettings.AppSettings[”connstr”].ToString();
    SqlConnection myconn = new SqlConnection(mystr);
    myconn.Open();
    SqlCommand mycmd0 = new SqlCommand(“select FI_Price from T_FilmInf,T_MovieHouse where FI_Name=’” + comboBox1.Text。Trim() + ”’ and FI_ShowDate='” + comboBox2.Text.Trim() + “’and FI_EnterTime='” + comboBox3.Text.Trim() + ”’ and T_FilmInf。MH_Id=T_MovieHouse.MH_Id”, myconn);
    SqlCommand mycmd1 = new SqlCommand(“select MH_Id from T_MovieHouse where MH_Name=‘”+comboBox4。Text。Trim()+”’”,myconn);
    F_MH = mycmd1。ExecuteScalar()。ToString().Trim();
    SqlCommand mycmd4 = new SqlCommand(“select SP_Name from T_TicketInf where MH_Id=’” + F_MH + “’and PI_Date=’” + comboBox2。Text.Trim() + “’ and TI_Date=’” + comboBox3.Text + “'”, myconn);
    SqlCommand mycmd5 = new SqlCommand(”select SP_Name from T_BookTicket where MH_Id=’” + F_MH + “’and PI_Date=‘” + comboBox2.Text。Trim() + ”’ and TI_Date='” + comboBox3。Text + ”’”, myconn);
    SqlDataReader myreader=mycmd4。ExecuteReader();
    while (myreader。Read())
    {
    SP_Name.Add(string.Format(”{0}”,myreader。GetString(0)。ToString()));
    }
    myreader.Close();
    SqlDataReader myreader1 = mycmd5.ExecuteReader();
    while (myreader1。Read())

    SP_Nameb.Add(string。Format(”{0}”, myreader1.GetString(0)。ToString()));
    }
    myreader1.Close();
    textBox1。Text = mycmd0。ExecuteScalar()。ToString();
    Label lab;
    int i, j,k,l;
    int count,countb;
    count = SP_Name。Count;
    countb = SP_Nameb.Count;
    string[] spname = new string[count];
    string[] spnameb = new string[countb];
    spname = SP_Name。ToArray();
    spnameb = SP_Nameb。ToArray();
    for (i = 0; i < 11; i++)
    for (j = 1; j < 19; j++)
    {
    lab = new Label();
    lab.Text = j + “-” + (i + 1);
    lab。Location = new Point(10 + (42 * i), (20 * j));
    lab.BackColor = Color.Green;
    lab。Font = new System.Drawing.Font(“微软雅黑”, 9F);
    lab.TextAlign = System.Drawing.ContentAlignment。MiddleCenter;
    lab。Click += new EventHandler(lab_Click);
    lab.Width = 41;
    lab.Height = 15;
    if (i == 3 || i == 7)
    {
    lab.Text = “过道”;
    lab。BackColor = Color.GreenYellow;
    }
    for (k = 0; k 〈spname。Length; k++)
    {
    if (lab.Text Convert.ToString(spname[k]).Trim())
    {
    lab.BackColor = Color。Red;
    }
    }
    for (l = 0; l 〈 spnameb.Length; l++)

    if (lab.Text == Convert.ToString(spnameb[l]).Trim())

    lab。BackColor = Color.Yellow;

    }
    groupBox1。Controls.Add(lab);

    myconn。Close();
    }
    private void lab_Click(object sender,EventArgs e)//定义生成的lab标签的单击事件

    if(comboBox1.Text
    ”” || comboBox2.Text==”" || comboBox3.Text==”" || comboBox4。Text==“” || comboBox5.Text==””)

    MessageBox.Show(“请选择电影的完整信息”);

    else if (((Label)sender).Text == ”过道”)

    textBox3。Text = Convert。ToString(Convert.ToInt32(textBox3。Text) + 0);

    else if(((Label)sender)。BackColor==Color。Red)
    {
    MessageBox.Show(”此座位已售出。”);

    else if (((Label)sender)。BackColor == Color。Yellow)

    MessageBox。Show(”此座位已预订。”);

    else
    {
    int num;
    string FI_Id;
    string TI_Id;
    string MH_Id;
    string TT_Id;
    string mystr = System。Configuration。ConfigurationSettings。AppSettings[”connstr"]。ToString();
    SqlConnection myconn = new SqlConnection(mystr);
    myconn.Open();
    Program。SeatId = ((Label)sender)。Text;
    SqlCommand mycmd0 = new SqlCommand(”select MH_Id from T_MovieHouse where MH_Name=‘" + comboBox4.Text + "’”, myconn);
    MH_Id = mycmd0.ExecuteScalar()。ToString();
    SqlCommand mycmd1 = new SqlCommand(”select FI_Id from T_FilmInf where FI_Name=’” + comboBox1.Text + ”’and FI_ShowDate=’” + comboBox2。Text + “’ and FI_EnterTime='” + comboBox3.Text + “’ and MH_Id=‘” + MH_Id + ”’”, myconn);
    FI_Id = mycmd1.ExecuteScalar()。ToString();
    SqlCommand mycmd2 = new SqlCommand(“select TT_Id from T_TicketType where TT_Type=’” + comboBox5。Text + ”’”, myconn);
    TT_Id = mycmd2。ExecuteScalar()。ToString();
    SqlCommand mycmd4 = new SqlCommand(”select top 1 TI_Id from T_TicketInf order by TI_Id desc”,myconn);
    object numobj = mycmd4。ExecuteScalar();
    if (numobj == null)
    {
    num =10001;
    }
    else

    num = Convert.ToInt32(mycmd4。ExecuteScalar().ToString())+1;

    TI_Id = Convert.ToString(num);
    SqlCommand mycmd3 = new SqlCommand(“insert into T_TicketInf values(@TI_Id,@TT_ID,@FI_Name,@MH_Id,@SP_Name,@PI_Date,@TI_Date,@TI_Money)”, myconn);
    mycmd3.Parameters。Add(new SqlParameter(”@TI_Id”, TI_Id));
    mycmd3.Parameters。Add(new SqlParameter(“@TT_ID”, TT_Id));
    mycmd3.Parameters。Add(new SqlParameter(”@FI_Name”, comboBox1.Text.Trim()));
    mycmd3。Parameters.Add(new SqlParameter(“@MH_Id”, MH_Id));
    mycmd3。Parameters.Add(new SqlParameter(”@SP_Name”, Program。SeatId));
    mycmd3。Parameters。Add(new SqlParameter(“@PI_Date”, comboBox2.Text。Trim()));
    mycmd3。Parameters.Add(new SqlParameter(“@TI_Date”, comboBox3。Text。Trim()));
    mycmd3.Parameters。Add(new SqlParameter(“@TI_Money”,decimal.Multiply(Convert.ToDecimal(textBox1.Text),Convert。ToDecimal(textBox2。Text))/10));
    mycmd3.ExecuteNonQuery();
    myconn.Close();
    textBox3。Text = Convert.ToString(Convert。ToInt32(textBox3.Text) + 1);
    ((Label)sender).BackColor = Color.Red;
    ((Label)sender)。Enabled = false;

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

广西千灵通网络科技有限公司

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值