1、 课 程 设 计课程名称: 数据库、软件工程课程设计 设计题目: 电影院管理系统 学 院: 信息工程与自动化 专 业: 计算机科学与技术 年 级: 2009级 学生姓名: 指导教师: 王清心 日 期: 2012-07-01 一、 绪论 国内电影院的售票系统不完善,有很多问题存在 ,售票效率低下 ,管理混乱 。现今社会是个讲究效率的社会,时间就是金钱。开发简单,便于操作的的软件不仅可以节省时间,还可以节省人力,物理,财力等 建立的影院售票系统,要把影院的售票管理、订票管理,财务管理等日常管理工作实行计算机统一管理,以提高工作效率和管理水平。 通过本系统软件,能帮助售票人员利用计算机,快速方便地对
2、影院售票情况,订票情况,剩余座位查询等进行高效的管理。本软件适用于电影界,它是比较完善的系统管理软件,对影院售票情况,订票情况,剩余座位查询等可以进行方便的管理 本软件的使用对象有影院负责人或管理人员(更新维护系统),影院售票人员(办理售票,订票,退票)和买票人(购买影票人员)。该系统主要完成实现的目的有:1.高效管理 数据处理速度快,通过对某一时间段的经营数据进行统计分析,供经营者分析经营状况, 以便采取相应的经营、促销策略。 2.客户资源充分利用通过分析顾客的消费信息,制定出有针对性的促销措施,为顾客提供更为得体的服务。与顾客形成互动,加深印象,促进消费。 3.效益最大化通过票房分析和排片
3、情况,院线经理可对影院票房收益有一个直观的了解,通过最优的影片安排和促销活动来最大限度的增加院线收益。二、电影院票务管理系统需求分析(一)电影院线电子年票管理系统需求说明1.定义:基于公网及影院局域网络建立的以IC卡为载体,且能够实现准实时数据交互及统计管理的电子年票管理软件。2.产品描述(1)系统属性是一个在Windows98以上的操作系统平台下运行的院线电子年票管理系统。(2)开发背景解决各院线电子售票管理工作,方便各电影院线对电子售票票进行快速有效的操作,院线经理对排片和票房统计工作。(3)软件特点系统操作人员要求具备普通Windows系统操作水平即可。系统维护人员必须具有数据库管理知识
4、。3.具体用途1、解决电影院线电子售票票管理上的工作。方便电影院线对电子售票票进行快速有效的操作。2、通过插入员工卡或管理卡并输入用户名和相应密码才能进入系统进行管理。3、影院管理者可对人员信息、排片等进行设置。(二)用例模型售票会员会员充值票房管理排片用户管理报表生成 校验密码包含包含 影院职员 客户 院线经理统管理人员 电影院管理系统电影名字票价上映时间选择座位选择电影场次查看电影信息购票包含包含包含包含包含全局ER图对应电影票11 院线经理管理N1有电影院电影厅有N1座位1N售票员出售1N办理会员卡11消费者办理11办理N1电影电影编号名称上映时间主演影片格式导演职工密码职工信息职工编号
5、职工类型电影票 电影名 验证码 票价电影票号上映时间 座位号座位座位编号 票价是否售出流程图 增加 售票会员注册会员查询 删除会员 查看 查看影片 修改删除影片登陆售票员管理员该系统的数据库使用Office的Access数据库部分数据库表如下会员信息表:主键为vip_number ,数据类型为String。职工信息表:主键为Username,数据类型为String。电影信息表:主键为name,数据类型为String。三、系统设计(领域类)该系统的框架由一个窗口类实现,我定义了一个名为Cinema的类,该类继承了JFrame,可是实现ActionListener接口。还有一些实现特定功能的类例如
6、:(1) class VipJDialog extends JDialog:该类继承了JDilog,能在录入信息时弹出一个确认用户信息的对话框(2) class InsertVip:该类实现与数据库的连接,我在这个类中定义了一个能接受一个数组,并把该数组写入相应数据库的方法,能达到保存用户信息和电影排片管理的功能。(3) class serchVip:该类同样是实现与数据库的连接,我在这个类中定义了一个查询的方法,方便用户对影院职员和电影信息的查看。(4) class jpanel extends JPanel:该类继承了JPanel,可以在用户触发特定事件时移除之前面板的组件并添加新的组件,
7、实现用户界面的切换。 由于该系统的很多功能还为实现,其他的类只能在以后的开发中再添加。四、编码实现(截图 关键代码)用户主界面public class Cinema extends JFrame implements ActionListener public Cinema()super(电影院管理系统);Dimension dim=getToolkit().getScreenSize();this.setBounds(dim.width/6,dim.height/6,dim.width*2/3,dim.height*2/3);this.setBackground(java.awt.Color
8、.blue);this.setResizable(true);this.setDefaultCloseOperation(EXIT_ON_CLOSE);String menustr=用户登录,售票,会员,用户管理,影片管理,票房查询,帮助;menu=new JMenumenustr.length;menubar=new JMenuBar();for(int i=0;imenustr.length;i+)menui=new JMenu(menustri);menubar.add(menui);menuitem_user=new JMenuItem(普通用户); /在用户登录菜单添加普通用户登录项
9、 menu0.add(menuitem_user); menuitem_user.addActionListener(this); menu0.add(new JMenuItem(院线经理); menu0.add(new JMenuItem(系统管理员); menuitem_vip=new JMenuItem(会员办理); /在会员菜单添加会员办理菜单项menu2.add(menuitem_vip);menuitem_vip.addActionListener(this);menuitem_vip_inpour=new JMenuItem(会员充值);menuitem_vip_inpour.a
10、ddActionListener(this);menu2.add(menuitem_vip_inpour);menu2.add(new JMenuItem(会员管理);menuitem_maneger=new JMenuItem(排片);/在影片管理菜单添加排片菜单项menu4.add(menuitem_maneger);menuitem_maneger.addActionListener(this);menu4.add(new JMenuItem(增加影片);this.setJMenuBar(menubar);panel_2=new JPanel();panel_2.setLayout(ne
11、w FlowLayout(0);text=new JTextArea(影院介绍:+昆明百老汇影城为目前昆明顶尖的国际化影城,+是广大影迷朋友观影的最佳选择 );panel_2.add(text);jdialog=new VipJDialog(this);this.getContentPane().add(panel_2,Center);this.setVisible(true);用户登录界面public void addpanel_1()/用户登录面板组件JPanel panel_u1,panel_u2,panel_u3,panel_u4,panel_hold;panel_u1=new JPa
12、nel();panel_u1.setLayout(new FlowLayout(0);panel_u1.add(new JLabel(会员类型);JTextField text=new JTextField(普通用户,8);text.setHorizontalAlignment(JTextField.CENTER);text.setEditable(false);panel_u1.add(text);panel_u2=new JPanel();panel_u2.setLayout(new FlowLayout(0);panel_u2.add(new JLabel(用户名);text_user=
13、new JTextField(,10);panel_u2.add(text_user);panel_u3=new JPanel();panel_u3.setLayout(new FlowLayout(0);panel_u3.add(new JLabel(密 码);JPasswordField pass_user=new JPasswordField(,10);panel_u3.add(pass_user);panel_u4=new JPanel();panel_u4.setLayout(new FlowLayout(0);button_U=new JButton(登录);button_U.ad
14、dActionListener(this);button_P=new JButton(取消);panel_u4=new JPanel();panel_u4.setLayout(new FlowLayout(0);button_U=new JButton(登录);button_U.addActionListener(this);button_P=new JButton(取消);panel_u4.add(button_U);panel_u4.add(button_P);panel_hold=new JPanel();panel_hold.setLayout(new GridLayout(4,1);
15、panel_hold.add(panel_u1);panel_hold.add(panel_u2);panel_hold.add(panel_u3);panel_hold.add(panel_u4);panel_2.add(panel_hold);会员办理界面public void addpanel_3()/会员办理面板组件JPanel panel_word,panel_count,panel_hold,panel_1,panel_sex,panel_3,panel_4,panel_5;JLabel label;String VIP=会员卡号,真实姓名,激活时间,年龄,性别,电话号码,充值金额
16、,会员卡余额,会员卡类型;label=new JLabelVIP.length;text_count=new JTextFieldVIP.length;panel_word=new JPanel();panel_count=new JPanel();panel_word.setLayout(new GridLayout(3,1,0,10);panel_count.setLayout(new GridLayout(3,1,0,10);for(int i=0;i9;i+)text_counti=new JTextField(,8);labeli=new JLabel(VIPi);text_coun
17、t2.setText(2013-08-30);text_count2.setEditable(false);for(int i=0;i3;i+)panel_word.add(labeli);panel_count.add(text_counti);panel_sex=new JPanel();panel_sex.add(new JLabel(年龄);Object age=18,19,20,21,22,23,24;combox_age=new JComboBox(age);panel_sex.add(combox_age);panel_sex.add(new JLabel(性别);Object
18、sex=男,女;combox_sex=new JComboBox(sex);panel_sex.add(combox_sex);panel_1=new JPanel();panel_1.setLayout(new BorderLayout();panel_1.add(panel_word,West);panel_1.add(panel_count,East);panel_1.add(panel_sex,South);panel_4=new JPanel();panel_4.add(new JLabel(会员类型);Object vip=普通会员,充值会员;combox_vip=new JCom
19、boBox(vip);panel_4.add(combox_vip);panel_3=new JPanel();panel_3.setLayout(new BorderLayout();panel_3.add(new JLabel(电话号码),West);text_vip_pho=new JTextField(,9);panel_3.add(text_vip_pho,East);panel_3.add(panel_4,South);panel_5=new JPanel();button_vip_formal=new JButton(提交);button_vip_formal.addAction
20、Listener(this);panel_5.add(button_vip_formal);panel_5.add(new JButton(修改);panel_hold=new JPanel();panel_hold.setLayout(new BorderLayout();panel_hold.add(panel_1,North);panel_hold.add(panel_3,Center);panel_hold.add(panel_5,South);panel_2.add(panel_hold);会员信息录入界面class VipJDialog extends JDialog /会员信息录
21、入JTextField jtext;JFrame jframe;VipJDialog(JFrame jframe)super(jframe,会员信息录入,true);this.jframe=jframe;this.setSize(400, 280);this.setLayout(new FlowLayout(0,10,10);this.setDefaultCloseOperation(HIDE_ON_CLOSE);jtext=new JTextField7;this.getContentPane().add(new JLabel(会员卡号);jtext0=new JTextField(,10)
22、;this.getContentPane().add(jtext0);this.getContentPane().add(new JLabel(真实姓名);jtext1=new JTextField(,8);this.getContentPane().add(jtext1);this.getContentPane().add(new JLabel(年龄);jtext2=new JTextField(,3);this.getContentPane().add(jtext2);this.getContentPane().add(new JLabel(性别);jtext3=new JTextFiel
23、d(,3);this.getContentPane().add(jtext3);this.getContentPane().add(new JLabel(电话号码);jtext4=new JTextField(,10);this.getContentPane().add(jtext4);this.getContentPane().add(new JLabel(会员类型);jtext5=new JTextField(,6);this.getContentPane().add(jtext5);this.getContentPane().add(new JLabel(激活时间);jtext6=new
24、 JTextField(,10);this.getContentPane().add(jtext6);for(int i=0;i7;i+)jtexti.setEditable(false);会员信息搜索class serchVip String serch(String a) throws ExceptionString VIPnum=a;String vipcount=new String6;Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);Connection conn=DriverManager.getConnection(jdbc:odbc:Cin
25、ema);Statement stat=conn.createStatement();String sql=SELECT vip_name,vip_age,vip_sex,vip_pho,vip_type,vip_date FROM VIP WHERE vip_number=+VIPnum+;ResultSet rs=stat.executeQuery(sql);while(rs.next()vipcount0=rs.getString(vip_name);vipcount1=rs.getString(vip_age);vipcount2=rs.getString(vip_sex);vipco
26、unt3=rs.getString(vip_pho);vipcount4=rs.getString(vip_date);vipcount5=rs.getString(vip_type);stat.close();conn.close();return vipcount;排片界面public void actionPerformed(ActionEvent e) /单击事件监听if(e.getSource()=button_vip_formal)sql_vip=new InsertVip();String str=text_count0.getText(),text_count1.getText
27、(),(String) combox_age.getSelectedItem(),(String) combox_sex.getSelectedItem(),text_vip_pho.getText(),(String) combox_vip.getSelectedItem(),text_count2.getText();jdialog.show(str);try sql_vip.add(str); catch (Exception e1) e1.printStackTrace();if(e.getSource()=button_vip_serch)serchvip=new serchVip(
28、);String a=text_vip_number.getText();String vip=new String6;try vip=serchvip.serch(a); catch (Exception e1) e1.printStackTrace();for(int i=0;i6;i+)jtext_vip_serchi.setText(vipi);五、结论这次的课程设计对我以后的编程有很大的帮助,对JAVA的学习,特别是图形界面设计有了很大的提高,之前没学到的JAVA连接数据库,通过这次设计,也初步理解了,想要把这个系统做的全面还是很困难的,在接下来的时间里我会继续对这个系统进行完善,努力将现在还未实现的功能添加上去,将界面做得更美观一些,好好干!。