2024年4月25日发(作者:)

山东理工大学商学院

电影院售票系统

电影院售票系统简介:本系统根据不同的人群来完成不同的订票(普通票、

学生票和免费票)的过程和打折订票的过程;能够完成电影院的电影影片及场次

的添加及删除等基本功能,基本上实现了电影院售票系统的基本功能。

电影院售票系统界面介绍:界面中含有购票、影片管理、帮助和关于四个菜

单栏,一个播放列表,影片详情(影片名称、导演、主演、类型、时间、票价及

优惠信息),售票类型(普通票、学生票和免费票三个单选按钮,学生折扣、售

票人和其他折扣)和放映厅的座次位置。

其中,购票菜单栏中含有电影列表、保存信息及安全退出子菜单按钮,影片

管理菜单栏内含有添加影片和添加场次子菜单按钮,帮助菜单栏中有购票流程子

菜单按钮,关于菜单栏中有系统介绍子菜单按钮。

图01 系统界面

操作过程及功能:

单击购票菜单栏的电影列表子菜单按钮能够在放映列表中显示系统中的电

影列表,单击电影列表前端的“+”,将会显示影片的播放时间,点击时间后,将

会在影片详情中显示影片的影片名称、导演、主演、类型、时间、票价及优惠信

息;单击购票菜单栏的保存信息子菜单按钮能够保存基本信息;单击购票菜单栏

的安全退出子菜单按钮能够退出该系统。

图02 保存信息

1

山东理工大学商学院

图03 安全退出

单击影片管理菜单栏中的添加影片子菜单按钮,添加影片的信息;单击影片

管理菜单栏中的添加场次子菜单按钮添加场次的信息。

图04 添加影片

图05 添加场次

单击帮助菜单栏中有购票流程子菜单按钮,将提示购票的流程。

2

山东理工大学商学院

图06 购票流程

单击关于菜单栏中有系统介绍子菜单按钮将显示关于系统介绍的基本信息。

图07 系统介绍

在放映列表中右击鼠标将能实现添加影片、删除影片、添加场次、删除场次

及刷新列表的功能。

图08 放映列表实现功能

设计与分工:

小组成员:丁广宇 魏绪秋 陈新伟 孙冰冰

成员分工:

丁广宇 主要负责“购票菜单”、“放映列表”的设计、代码编写,以及“放

映列表”中所对应的showlist的xml文件的编写,负责更改替换电影列表的内容

和文件。

魏绪秋 主要负责“影片管理菜单”、“影片详情”的设计、代码编写,主要

包括添加影片、添加场次、删除影片、删除场次等功能的实现,负责对影片和场

次的管理。

孙冰冰 主要负责“帮助菜单”中购票流程以及“关于菜单”中系统介绍的

设计、代码编写,以及对图形化界面右侧“影票类型”的设计及编码,负责打折

等问题的管理。

3

山东理工大学商学院

陈新伟 主要负责对图形化界面中“放映厅选座”界面的设计及代码编写,

负责对选座功能的管理和维护。

基本程序代码:

using System;

using c;

using entModel;

using ;

using g;

using ;

using ;

using ;

using ;

namespace MyCinema

{

public partial class MainForm : Form

{

Cinema cinema=new Cinema();

Dictionary schDic;

Dictionary labels=new Dictionary();

string selTime="";//判断用户是否选择了"某一电影"

string selName = "";//当前用户选择的电影名称

string ticketType="normal";//判断用户选择何种类型的票

public MainForm()

{

InitializeComponent();

}

//单击"获取新列表",将所有电影场次信息显示在TreeView控件中

private void tsmiGetList_Click(object sender, EventArgs e)

{

iniTreeView();

}

private void iniTreeView()

{

();

Schedule schedult = new Schedule();

ems();

schDic = ;

string name = "";

TreeNode tnList = null;

foreach (string times in )

4

山东理工大学商学院

{

if (schDic[times].ame != name)

{

tnList = new TreeNode(schDic[times].ame);

name = schDic[times].ame;

(tnList);

(times);

}

else

{

(times);

}

}

}

//窗体加载时初始化"放映厅"中标签控件

private void MainForm_Load(object sender, EventArgs e)

{

InitSeats(5, 7, tabPagSeat);

if ((""))

{

();

}

}

//初始化座位

public void InitSeats(int rows, int line, TabPage tb)

{

Label lbl;

Seat seat;

for (int i = 0; i < rows; i++ )

{

for (int j = 0; j < line;j++ )

{

lbl = new Label();

lor = ate;

ze = false;

= new Size(60, 22);

= new Font("Times New Roman", 14.25f, r,

, (byte)(134));

on = new Point(10,10);

= ;

= (j + 1).ToString() + "-" + (i + 1).ToString();

5

山东理工大学商学院

ign = Center;

on=new Point(45+(i*110),10+(j*30));

+= new EventHandler(lbl_Click);

(lbl);

(, lbl);

seat = new Seat(ate, (j + 1).ToString() + "-" + (i +

1).ToString());

(m, seat);

}

}

}

bool isBooking = false;//判断某场电影是否有新的影票被售出

//"订票"时执行动作

private void lbl_Click(object sender, EventArgs e)

{

if(isValidataChoice())

{

foreach (Ticket tic in ckets)

{

if ( == selTime&&m ==

((Label)sender).Text )

{

("该座["+m+"]票已售出,不能重复

出售!");

return;

}

}

Seat seat = new Seat(, ((Label)sender).Text);

int discount=0;

string custName = "null";

if(!OrEmpty())

{

discount=();

}

if(!OrEmpty())

{

custName = ;

}

Ticket ticket = Ticket(schDic[selTime].,

schDic[selTime], seat,discount,custName,ticketType);

DialogResult result=("是否订购座号

["+((Label)sender).Text+"]影票?","订票提示",);

if(result==)

6

山东理工大学商学院

{

((Label)sender).BackColor = ;

();

//("订票成功!");

(ticket);

isBooking = true;

}

}

}

//窗体加载时将所有座位恢复至初始状态(均未选中)

private void ClearSeat()

{

foreach(Seat seat in )

{

= ate;

}

}

//更新状态

private void UpdateSeat()

{

foreach(Label lbl in )

{

lor = ate;

foreach(Ticket ticket in ckets)

{

if(==m&&selTime==)

{

lor=;

}

}

}

}

public bool isValidataChoice() //判断用户选择是否正确

{

bool rt = false;

if (selTime == "")

{

("请先选择电影!");

}

else

{

7

山东理工大学商学院

if (d)//普通票被选中情况

{

if (OrEmpty())

{

rt = false;

}

else

{

rt = true;

}

}

if (d)//学生票被选中情况

{

if (OrEmpty())

{

("学生票必须选择打折情况!");

rt = false;

}

else

{

rt= true;

}

}

if (d)//免费票被选中情况

{

if (OrEmpty())

{

("免费票必须填写受赠票人姓名!");

}

else

{

rt = true;

}

}

if(d)

{

rt=true;

}

}

return rt;

}

private void tvShowList_BeforeSelect(object sender, TreeViewCancelEventArgs e)

8

山东理工大学商学院

{

if ( == 1)

{

selTime = ;

= schDic[selTime].ame;

= le(schDic[selTime].);

= schDic[selTime].;

= schDic[selTime].or;

= schDic[selTime].ng();

= (schDic[selTime].ype).ToString();

= selTime;

UpdateSeat();

}

if (!OrEmpty(selTime))

{

d = true;

d = true;

d = true;

}

}

#region MyRegion票类型选择

private void rdoNormal_CheckedChanged(object sender, EventArgs e)

{

ticketType = ((RadioButton)sender).ng();

d = false;

d = false;

d = false;

d = false;

edItem = null;

d = false;

= "";

();

}

private void rdoStu_CheckedChanged(object sender, EventArgs e)

{

ticketType = ((RadioButton)sender).ng();

d = false;

d = false;

d = true;

d = true;

();

}

9

山东理工大学商学院

private void rdoFree_CheckedChanged(object sender, EventArgs e)

{

ticketType = ((RadioButton)sender).ng();

d = true;

d = true;

d = false;

d = false;

edItem = null;

d = false;

= "";

}

#endregion

//序列化Cinema

private void tsmiSaveInfo_Click(object sender, EventArgs e)

{

();

("信息保存成功!");

isBooking = false;

}

private void tsmiSale_Click(object sender, EventArgs e)

{

AddMovie addmovie = new AddMovie();

alog();

tsmiGetList_Click(sender, e);

}

private void cboDiscount_SelectedIndexChanged(object sender, EventArgs e)

{

d = true;

try

{

=(schDic[selTime].

()/10).ToString();

}

catch (Exception){}

}

//窗体关闭时判断是否有新的订票情况未保存

private void MainForm_FormClosing(object sender, FormClosingEventArgs e)

{

if (isBooking)

10

*

山东理工大学商学院

{

DialogResult result = (" 是否保存已售票信息!", "保存

信息", );

if (result == )

{

tsmiSaveInfo_Click(sender, e);

();

isBooking = false;

();

}

else

{

= true;

}

}

}

private void tsmiExit_Click(object sender, EventArgs e)

{

DialogResult result = (" 是否退出系统?", "保存信息",

);

if (result == )

{

();

isBooking = false;

();

}

}

private void tsmiAddMovie_Click(object sender, EventArgs e)

{

addMovie(sender, e);

}

private void addMovie(object sender, EventArgs e)

{

AddMovie addmovie = new AddMovie();

DialogResult result = alog();

if (result == )

{

tsmiGetList_Click(sender, e);

}

}

11

山东理工大学商学院

private void tsmiAddSchedule_Click(object sender, EventArgs e)

{

AddSchedule adsch = new AddSchedule(cinema);

DialogResult result = alog();

if (result == )

{

tsmiGetList_Click(sender, e);

}

}

private void tsmiAddMovie_Click_1(object sender, EventArgs e)

{

if ( == 0)

{

("请先加载数据!");

}

else

{

d = true;

addMovie(sender, e);

}

}

public void delMovie(string movieName)

{

XmlDocument dom = new XmlDocument();

("");

XmlNode root = ntElement;

foreach(XmlNode movie in odes)

{

if(ext==selName)

{

DialogResult result = ("是否删除电影

"+ext+"?","删除提示",);

if(result==)

{

Child(movie);

("");

iniTreeView();

}

break;

}

}

}

12

山东理工大学商学院

private void tsmiDelMovie_Click(object sender, EventArgs e)

{

if (selName != "")

{

delMovie(selName);

selName = "";

}

else

{

("请选择要删除的电影!");

}

}

string selSchTime = "";

private void tvShowList_NodeMouseClick(object

TreeNodeMouseClickEventArgs e)

{

if(==1)

{

selSchTime = ;

}

if ( == 0)

{

selName = ;

}

}

private void tsmiAddSchedu_Click(object sender, EventArgs e)

{

if (selName != "")

{

tsmiAddSchedule_Click(sender, e);

}

else

{

("请选择要添加场次的电影!");

}

}

13

sender,

山东理工大学商学院

private void delSchedule(string time)

{

XmlDocument dom = new XmlDocument();

("");

XmlNode root = ntElement;

foreach (XmlNode movie in odes)

{

foreach(XmlNode item in odes)

{

if ( < 2)

{

//DialogResult result = ("该影片场次至少为1

次,否则将删除该电影!", "删除提示", );

//if (result == )

//{

// delMovie(selName);

// iniTreeView();

//}

("该影片场次至少为1次,否则将删除该电影!");

break;

}

else

{

if (ext == time)

{

DialogResult result = ("是否删除 ["+time+"]

场次电影?","删除提示",);

if(result==)

{

Child(item);

("");

("删除场次成功!");

break;

}

}

}

}

}

}

private void tsmiDelSchedule_Click(object sender, EventArgs e)

{

delSchedule(selSchTime);

14

山东理工大学商学院

iniTreeView();

}

private void caozuoliuchengToolStripMenuItem_Click(object sender, EventArgs e)

{

("选票流程: 点击购票工具栏弹出对话框选择获取列表后

选择所要观看的电影,选择影票的类型(普通票、学生票或免费票,并选择好折扣),在放

映厅内选择位票单击确定即可完成订票过程。");

}

private void 系统介绍AToolStripMenuItem_Click(object sender, EventArgs e)

{

(" 此软件是一个简单的售票系统,能够简单的完成购票和影

片管理等信息,此软件版权归丁广宇、魏绪秋、孙冰冰和陈新伟。感谢你的使用! ");

}

private void 删除影片DToolStripMenuItem_Click(object sender, EventArgs e)

{

tvShowList = null;

}

}

}

15