版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 . 课 程 设 计课程名称大型数据库题 目影院管理系统一需求分析1.1 问题描述随着计算机的不断发展,计算机在人们的生活中扮演着越来越重要的角色,人们的生活已经离不开计算机,因为计算机已经影响着我们的方方面面,丰富了人们的生活。同时,随着经济的飞速发展人们的收入越来越高,相应的娱乐设施也越来越多,电影院是人们经常光顾的地方,正是人们对高质量生活的追求促使了电影业的蓬勃发展,因此电影院俨然成了大中小城市的必须的基本的公共娱乐设施。 每个社会公共服务系统都有一套相应的管理体系,电影院同样如此。在以服务为重心的当今社会,提供便捷,高效,优质的服务已经成为许多企业单位追求的目标。对于电影院来说,服务
2、的好与坏更是影响客流量的重要因素。正因为如此,一个好的影院管理系统是每个电影院所必备的。 基于以上的分析,我们决定开发一个简洁,高效,实用的影院管理系统,在我们查阅大量资料,走访各大电影院,调查一些普通观众的基础上,总结出了以下需求:(1).顾客能够快速,方便的购买电影票(包括预订,购买,退票,打折等)。 (2).对播放电影,场次,电影档期,名称,时间,工作人员的安排等信息的公示要清楚显眼。 (3).检票管理事宜要完成观众进场时检票的事宜(包括电影票的真假甄别,检票入场等)。(4).数据管理要处理电影的播放的次序,工作人员的管理,以与过期电影票的处理问题。(5).活动促销信息,提供促销活动的明
3、细,规则等。(6).提供影片的详细信息,包括剧情,时长,类型,已统计的票房等,并给出推荐电影。(7).设置会员用户组,对会员设置打折优惠。(8).提供近期各影片的信息查询。1.2 基本任务通过用户调查分析与实际需求,系统需要实现如下基本任务: (1)活动促销信息管理。管理员可以添加,删除,修改,活动促销信息,促销信息可以分为团购和个人两类。 (2)热门影片推荐信息管理。管理员可以添加,删除,修改,查询热门影片信息。 (3)会员信息管理。管理员可以添加,删除,修改会员信息。 (4)影片信息查询。按各种条件对影片进行查询。二概要设计为了完成需求分析的基本任务,主要从以下2个方面进行设计:2.1 主
4、界面设计为了实现影院管理系统的各项功能,设计了一个含有多个菜单项的主控菜单模块以系统的各项功能,以方便工作人员和顾客使用该系统。系统主控菜单运行界面如图1所示:2.2系统功能设计系统设计了4个功能模块,即会员信息管理,影片信息查询,促销活动信息和热门影片推荐。会员信息管理模块:本模块主要实现管理员或者会员对信息进行添加,删除,修改等操作。其中会员信息包括,会员号(号),地址,消费信息记录等。影片信息查询模块:本模块实现顾客对近期将要上映的影片信息的查询。其中影片信息包括电影名称,电影类型,导演,主演,片长,上映时间等,其中管理员可以执行对电影信息的添加,删除和修改等。促销活动信息模块:本模块主
5、要实现用户对促销活动信息的查询。管理员可以添加,修改,删除促销活动信息。热门影片推荐模块:本模块主要实现用户对热门影片的查询。管理员有权限添加,修改,删除热门影片,但是会员只能查询。图1. 影院管理系统主界面三. 模块设计3.1 模块设计系统主界面模块 会员信息管理模块影片信息查询模块活动促销信息模块热门影片推荐模块系统主要包含主程序模块和其它链表操作模块。其调用关系如图2所示。图2. 系统主程序模块之间的关系3.2 系统子模块与其功能设计本系统共设计了5个模块,一个主界面模块,4个子模块。各程序的窗体与功能说明如下:MemberInforform:会员信息管理模块的主函数,其过实例mf调用m
6、f.insert(),mf.delete(),mf.update()和mf.select()等子方法,分别实现对会员信息的增加,删除,修改,查询等操作. FilmInforform:影片信息查询模块通过实例fi调用fi.select(),fi.insert(),fi.update(),fi.delete()等方法,主要实现会员对影片信息的查询,管理员对影片信息增加,修改,删除等操作。Promoteform:促销活动信息模块主函数,通过实例pf调用 pf.select(),pf.insert(),pf.update(),pf.delete()等方法, 用会员对促销信息的查询,管理员对促销信息的查
7、看,发布, 修改,删除等操作。 HotFilmform:热门电影推荐模块的主函数.通过实例hf调用hf.select(),hf.insert(),hf.update(),hf.delete()等方法,分别用于查询,增加,修改,删除热门电影信息。 -上面的各种方法实现整合到类OracleOperation中-3.3 系统模块之间的调用关系OracleOperationSelect()Cselect()Insert()Update()Delete() 系统5个模块之间的调用关系如下图:Hf(实例)Hf.insert()Hf.update()Hf.dalete()Hf.select() Mf(实例)
8、Mf.insert()Mf.update()Mf.delete()Mf.select()Pf(实例)Pf.insert()Pf.update()Pf.delete()Pf.select()Fi(实例)Fi.select()会员信息管理模块影片信息查询模块促销活动信息模块热门影片推荐模块图3.模块之间的调用关系图四详细设计4.1系统主要模块设计(1)会员信息管理模块:本模块需要输入的变量有会员号,性别,地址;操作有添加, 删除,修改,清除(清除输入框中的容)。界面如下图所示:图4.会员信息管理模块界面本模块对应的oracle表名为hy,表hy的结构为:名称 是否为空? 类型- - -会员号 NO
9、T NULL VARCHAR2(10) VARCHAR2(20)性别 VARCHAR2(4)地址 VARCHAR2(40)程序在设计时,会员号是只能是长度为10的数字,和地址是字符串类型,并且性别只能是男或者女,否则系统报错。具体实现如下:try long a = Convert.ToInt64(hy_no.Text.Trim (); string b = Convert.ToString(hy_name.Text.Trim (); string d = Convert.ToString(hy_addr.Text.Trim (); catch MessageBox.Show("您所填
10、的信息格式有误,请检查后重新增加"); return; if (hy_sex.Text.Trim () != "男"&&hy_sex.Text.Trim ()!="女") MessageBox.Show("性别填写错误!"); return;当上面4个信息的格式填写正确时,可以执行添加操作;操作时调用OracleOperation类中的insert()方法,具体实现如下:mf.insert("hy", "会员号", "", "性别"
11、;, "地址", hy_no.Text, hy_name.Text.ToString().Trim (), hy_sex.Text.ToString().Trim (), hy_addr.Text.ToString().Trim (); (注:其中mf为OracleOperation类在本模块中的一个实例)会员号在表hy中是主键,当修改时必须给出要修改行的会员号,否则无法修改。不修改的列可以为空,系统只修改不为空的列,通过if语句来控制。实现代码如下: if (hy_name.Text != "")/执行update的语句删除信息时,给出会员号即可。当给
12、出的会员号与表中的不匹配,系统会报错。具体实现如下 :if (hy_no.Text.Trim () = "" | hy_no.Text.Trim().Length != 10) /报错 else /删除操作清除作用是把4个输入框中清空。实现的语句如下: textBox.Text=”;(2)影片信息查询模块:本模块需要输入的为查询的类型(分为影片片名,电影类型,导演,主演)。前面的ComboBox用来选择查询的类型,后面textBox用来输入查询的容。界面如下图所示: 图5.影片信息查询模块界面图本模块说对应的表为dy,表的结构如下图所示:名称 是否为空? 类型- - -片名
13、 VARCHAR2(20)类型 VARCHAR2(10)导演 VARCHAR2(10)主演 VARCHAR2(20)查询的容为任意字符串,当查询为空时,系统将显示整个dy表,但是查询类型不能为空,通过一下代码来实现: if (comboBox1.Text = "") /提示输入查询类型 else /查询操作在打开窗口时,Datagridview1是不可见的,只有查询成功时才会显示查询表,当系统生成窗口时把Datagridview1的visiable属性改为false,当查询成功时才将它这一属性改为true,实现代码如下:private void FilmInforForm_
14、Load(object sender, EventArgs e) dataGridView1.Visible = false; if (comboBox1.Text = "") /提示输入查询类型 elsedataGridView1.Visible = true;/查询操作在查询时系统根据comboBox中的容来判断是以什么查找用户所需要的信息,实现代码如下:if (comboBox1.Text = "片名") /以片名查询 else if (comboBox1.Text = "类型") /以类型查询 else if (comboBo
15、x1.Text = "导演") /以导演查询 else if (comboBox1.Text = "主演") /以主演查询 (3)促销活动信息模块:本模块需要输入的为促销活动名称,促销活动的截止日期,促销活动的容,还有促销活动的类型(个人,团购)。本模块的操作有添加,修改,删除和清除(输入框中的容)。界面如下图所示:图6.促销信息管理模块界面本模块对应的表名为cx,其结构如下图所示: 名称 是否为空? 类型- - -促销名称 VARCHAR2(40)类型 VARCHAR2(6)促销容 VARCHAR2(200)截至日期 VARCHAR2(20)本模块主要
16、是实现管理员对促销活动的添加,修改,删除等操作。其中名称,日期,容可以写任意字符串,其中名称不能为空。但是类型只能是个人或者团购。可以通过下面代码来实现:if (cx_mc.Text.Trim () = "") /提示输入名称为空 else /执行删除操作 在插入操作时,同样名称不能为空,检查后满足条件时才能正常插入,实现的方法和上面的类似。更新操作时,促销活动名称是必填的,其余的根据要更新列填写,为空则不进行更新操作,这个也是通过if语句来控制的。实现结果如下: if (不为空) /更新操作 (4)热门影片推荐模块:本模块供管理员添加,删除,修改,查询热门影片推荐信息。添
17、加时片名,导演,简介,类型都不能为空,否则弹出提示。 程序界面的datagridview用来显示表hf。而且在窗口生成时即查询该表达到直接显示表的效果。具体代码实现如下: 图7.热门影片推荐模块界面 private void HotFilmForm_Load(object sender, EventArgs e) dataGridView1.DataSource = hf.Select("hf"); 本模块表名为hf,其结构如下图所示: 名称 是否为空? 类型- - -片名 NOT NULL VARCHAR2(20)导演 VARCHAR2(15)简介 VARCHAR2(15
18、0)类型 VARCHAR2(20)当满足条件时,执行insert()函数实现数据的插入。同时,只需给出电影名称(必须给出),即可调用update()函数对相应的信息进行更新操作。具体代码实现如下:if (hf_name.Text = "") MessageBox.Show("请输入要更新的电影名称!"); return; else if (hf_dir.Text != "") hf.Update("hf", "导演", hf_dir.Text.ToString(), "片名"
19、, hf_name.Text.ToString(); if (hf_jj.Text != "") hf.Update("hf", "简介", hf_jj.Text.ToString(), "片名", hf_name.Text.ToString(); if (hf_lx.Text != "") hf.Update("hf", "类型", hf_lx.Text.ToString(), "片名", hf_name.Text.ToString(
20、); (5)oracle数据库操作类OracleOperation用C#语句来连接oracle所用到的语句:OracleConnection conn = new OracleConnection("data source=myorcl;user ID=scott;Password=abc123"); conn.Open(); (其中myorcl为数据源名,scott为登陆oracle时用户名,abc123为登陆密码)本类由5个方法组成,分别如下:public DataTable Select(string table) /查询表public DataTable CSele
21、ct(string name,string text) /有条件查询表public void delete(string table,string name,string text) /删除表public void insert(string name,string a,string b,string c,string d,string e,string f,string g,string h) /向表中插入数据public void Update(string table,string name, object val, string coulm ,object text);/更新表5个方法
22、实现类似,以其中delete()为例:delete()代码如下:public void delete(string table,string name,string text) OracleConnection conn = new OracleConnection("data source=myorcl;userID=scott;Password=abc123"); conn.Open(); OracleTransaction mytran = conn.BeginTransaction(); OracleCommand mycomm = conn.CreateComma
23、nd();mycomm mandText = string .Format ("delete from 0 where 1='2' ",table ,name ,text ); mycomm.ExecuteNonQuery(); mytran mit(); conn.Close(); 其他操作只需要把string .Format()中的语句换成需要执行的语句,然后变量参数作相应的调整即可实现其他的操作。具体实现请参考程序源代码部分。这里不再赘述。五调试分析(1)会员信息管理模块:打开会员信息管理界面如下图所示:向其中插入会员:2009131324 唐飞标男南
24、岸。结果如下图:把会员号为2009131324 性别修改为 女 ,执行结果如下:删除会员号为2009131330的会员的信息:执行结果如下图(2)影片信息查询模块: 打开影片查询信息界面,如下图所示,选择片名进行查询,输入执行结果如下图所示:选择以类型查询,输入动作,查询结果如下图所示:选择以主演查询,输入章子怡,查询结果如下图所示:选择以导演查询,输入诺兰,查询结果如下图所示:(3)促销活动信息模块: 打开促销活动信息界面 ,输入下列信息: 名称:七夕优惠 截止日期:20110707(农历) 容:全体情侣半价优惠 类型:个人 插入结果如下图所示:将“七夕优惠”信息的类型由“个人”改为“团购”
25、,时间去掉“农历”修改的结果如下:将“共庆元旦”这条促销信息删除,删除后的结果如下图所示:(4)热门影片推荐模块:向其中插入片名为“让子弹飞”信息,插入的结果如下:将“让子弹飞”的导演修改为“小刚”,修改结果如下图所示:将“十面埋伏”的所有信息删除,删除后如下图所示:六自我评价通过本次课程设计,我深刻的了解到oracle在生活中有着多方面的应用。同时我也真切实地的认识到编程也不像想象中的那么困难,只要有恒心和必要的知识,任何人都可以开发出自己满意的软件。本次课程设计,我在以C#为编程语言的基础上,以oracle为数据存储载体,开发出了“影院管理系统”。经过不断的调试,分析,改进和再分析,程序基
26、本满足各项指标和课程设计要求,所有功能都已成功实现。但是在这过程中,也经历了“千辛万苦”,在学习理论的基础上把所学到的知识应用与实际,本身的难度是巨大的,不过经过了5天的奋斗,查阅了大量的资料,困难还是被一个一个的克服了,并且在这过程中我学到了很多,这点还是比较欣慰的。对于程序本身而言,我个人觉得很满意。程序在实现所要求的功能的同时,尽量让交互界面简洁,易操作。对于非法的用户输入对做了比较详细的提示,还是比较人性化的。其中花了大量的时间做了代码优化工作,特意创建了一个类OracleOperation,用尽量少的代码达到同样的功能,使代码简洁易懂,运行流畅。当然,由于本人水平有限,程序中难免会有
27、一些小的bug或者功能上的欠缺,比如当某一行中容过多时,让表显示其所有的容还没有实现等。还希望老师批评指正。七参考文献1C#面向对象程序设计 宇军编 人民邮电2Oracle.9i&10g编程艺术深入数据库体系结构 Thomas Kyte著 人民邮电3C#2008数据库入门经典(第4版) Vidya Vrat Agarwal著 清华大学4鸟哥的Linux私房菜 基础学习篇(第三版) 鸟哥著 人民邮电5C#入门经典 Karli Watson著 清华大学八程序源代码(1)会员信息管理模块:using System;using System.Collections.Generic;using
28、System ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using Oracle.DataAccess.Client;namespace oracle public partial class MemberForm : Form1 public MemberForm() InitializeComponent(); OracleOperation mf = new OracleOperation(); priv
29、ate void MemberForm_Load(object sender, EventArgs e) dataGridView1.DataSource = mf.Select("hy"); private void add_Click(object sender, EventArgs e) if (hy_no.Text = "" | hy_no.Text.Trim ().Length !=10) MessageBox.Show("会员号格式不正确,请输入一串10位数字!"); else if (hy_name.Text.Trim
30、() ="") MessageBox.Show("不能为空!"); else if (hy_sex.Text.Trim () != "男"&&hy_sex.Text.Trim ()!="女") MessageBox.Show("性别填写错误!"); return; else if (hy_addr.Text.Trim ().Trim () = "") MessageBox.Show("地址不能为空!"); else try long a =
31、 Convert.ToInt64(hy_no.Text.Trim (); string b = Convert.ToString(hy_name.Text.Trim (); string d = Convert.ToString(hy_addr.Text.Trim (); catch MessageBox.Show("您所填的信息格式有误,请检查后重新增加"); return; try mf.insert("hy", "会员号", "", "性别", "地址", hy_no.
32、Text, hy_name.Text.ToString().Trim (), hy_sex.Text.ToString().Trim (), hy_addr.Text.ToString().Trim (); dataGridView1.DataSource = mf.Select("hy"); catch MessageBox.Show("你输入的会员号有冲突,请检查后重新输入!"); private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs
33、e) private void delete_Click(object sender, EventArgs e) if (hy_no.Text.Trim () = "" | hy_no.Text.Trim().Length != 10) MessageBox.Show("会员号格式不正确,请输入一串10位数字!"); else mf.delete("hy", "会员号", hy_no.Text.Trim (); dataGridView1.DataSource = mf.Select("hy")
34、; private void button1_Click(object sender, EventArgs e) hy_no.Text = "" hy_name.Text = "" hy_sex.Text = "" hy_addr.Text = "" private void update_Click(object sender, EventArgs e) if (hy_no.Text.Trim().Length != 10) MessageBox.Show("会员号格式不正确,请输入一串10位数字!&q
35、uot;); return; if (hy_sex.Text.Trim() != "男" && hy_sex.Text.Trim() != "女" && hy_sex.Text != "") MessageBox.Show("性别填写错误!"); return; if (hy_name.Text != "") mf.Update("hy", "",hy_name.Text.ToString().Trim (), "
36、会员号", hy_no.Text.Trim (); if (hy_sex.Text != "") mf.Update("hy", "性别", hy_sex.Text.ToString().Trim (), "会员号", hy_no.Text.Trim (); if (hy_addr.Text != "") mf.Update("hy", "地址", hy_addr.Text.ToString().Trim (), "会员号",
37、 hy_no.Text.Trim (); dataGridView1.DataSource = mf.Select("hy"); (2)影片信息查询模块:using System;using System.Collections.Generic;using System ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using Oracle.DataAccess.Client;namespace
38、 oracle public partial class FilmInforForm : Form1 public FilmInforForm() InitializeComponent(); OracleOperation fi = new OracleOperation(); private void FilmInforForm_Load(object sender, EventArgs e) dataGridView1.Visible = false; private void button1_Click(object sender, EventArgs e) if (comboBox1
39、.Text = "") MessageBox.Show("请选择查询类型!"); return; else dataGridView1.Visible = true; if (comboBox1.Text = "片名") dataGridView1.DataSource = fi .CSelect("片名",textBox1.Text .ToString (); return; else if (comboBox1.Text = "类型") dataGridView1.DataSource =
40、fi.CSelect("类型", textBox1.Text.ToString(); return; else if (comboBox1.Text = "导演") dataGridView1.DataSource = fi.CSelect("导演", textBox1.Text.ToString(); return; else if (comboBox1.Text = "主演") dataGridView1.DataSource = fi.CSelect("主演", textBox1.Text
41、.ToString(); return; (3)促销活动信息模块:using System;using System.Collections.Generic;using System ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using Oracle.DataAccess.Client;namespace oracle public partial class PromoteForm : Form1 publi
42、c PromoteForm() InitializeComponent(); OracleOperation pf = new OracleOperation(); private void PromoteForm_Load(object sender, EventArgs e) dataGridView1.DataSource = pf.Select("cx"); private void button4_Click(object sender, EventArgs e) cx_mc.Text = "" cx_lx.Text = ""
43、; cx_nr.Text = "" cx_rq.Text = "" private void button3_Click(object sender, EventArgs e) if (cx_mc.Text.Trim () = "") MessageBox.Show("请输入要删除信息的名称!"); return; else pf.delete("cx", "促销名称", cx_mc.Text); dataGridView1.DataSource = pf.Select("cx"); private void button1_Click(object sender, EventArgs e) if (cx_mc.Text.Trim() = "") MessageBox.Show("无效的促销名称!"); return; pf.insert("cx", "促销名称", "
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人承包外墙保温简单合同范本2024年
- 2024年电脑买卖明细协议书
- 2024年通讯折扣服务协议
- 2024年工伤了赔偿结协议书范例
- 2024年五个关键协议合伙开培训班必读
- 2024年旧房屋买卖合同范文
- 2024年工程机械维修合同(1450字)
- 2024年林业用地承包合同(1560字)
- 2024年危化品运输合同范本
- 2024年林地转让合同范文800字
- 全国食品安全宣传周诚信尚俭共享食安食品安全课件
- 生猪屠宰兽医卫生人员考试题库答案(414道)
- 子宫颈胃型腺癌临床诊治中国专家共识(2024年版)解读
- 2024新能源集控中心储能电站接入技术方案
- 英汉互译单词练习打印纸
- 《爱劳动》主题班会课件
- ISO 31000-2018 风险管理标准-中文版
- (最新整理)家装水电施工验收单(通用)
- 高考复习:等值线专题
- 心理战常识ppt课件
- 破产流程图(五图)3.0
评论
0/150
提交评论