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售票员 出售1 N办理会员卡11消费者办理1 1办理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.setBackgr
8、ound(java.awt.Color.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=ne
9、w JMenuItem(“普通用户“ ); /在用户登录菜单添加普通用户登录项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=n
10、ew JMenuItem(“会员充值“);menuitem_vip_inpour.addActionListener(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(m
11、enubar);panel_2=new JPanel();panel_2.setLayout(new 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
12、_u1,panel_u2,panel_u3,panel_u4,panel_hold;panel_u1=new JPanel();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.set
13、Layout(new FlowLayout(0);panel_u2.add(new JLabel(“用户名“ );text_user=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();p
14、anel_u4.setLayout(new FlowLayout(0);button_U=new JButton(“登录“);button_U.addActionListener(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);pa
15、nel_u4.add(button_P);panel_hold=new JPanel();panel_hold.setLayout(new GridLayout(4,1);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_se
16、x,panel_3,panel_4,panel_5;JLabel label;String VIP=“会员卡号“, “真实姓名“, “激活时间“ ,“年龄“,“性别“,“电话号码 “,“充值金额“,“会员卡余额“ ,“会员卡类型“;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
17、GridLayout(3,1,0,10);for(int i=0;i9;i+)text_counti=new JTextField(“,8);labeli=new JLabel(VIPi);text_count2.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“,
18、“19“,“20“,“21“,“22“,“23“,“24“;combox_age=new JComboBox(age);panel_sex.add(combox_age);panel_sex.add(new JLabel(“性别“);Object 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_
19、count,“East“);panel_1.add(panel_sex,“South“);panel_4=new JPanel();panel_4.add(new JLabel(“会员类型“);Object vip=“普通会员“, “充值会员“;combox_vip=new JComboBox(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 JTextFiel
20、d(“,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.addActionListener(this);panel_5.add(button_vip_formal);panel_5.add(new JButton(“修改“ );panel_hold=new JPanel();panel_hold.setLayout(new BorderLayout();panel
21、_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 /会员信息录入JTextField jtext;JFrame jframe;VipJDialog(JFrame jframe)super(jframe,“会员信息录入“,true);this.jframe=jframe;this.setSize(400, 280);this.setLa
22、yout(new FlowLayout(0,10,10);this.setDefaultCloseOperation(HIDE_ON_CLOSE);jtext=new JTextField7;this.getContentPane().add(new JLabel(“会员卡号“);jtext0=new JTextField(“,10);this.getContentPane().add(jtext0);this.getContentPane().add(new JLabel(“真实姓名“);会员信息搜索jtext1=new JTextField(“,8);this.getContentPane
23、().add(jtext1);this.getContentPane().add(new JLabel(“年龄“);jtext2=new JTextField(“,3);this.getContentPane().add(jtext2);this.getContentPane().add(new JLabel(“性别“);jtext3=new JTextField(“,3);this.getContentPane().add(jtext3);this.getContentPane().add(new JLabel(“电话号码“);jtext4=new JTextField(“,10);this
24、.getContentPane().add(jtext4);this.getContentPane().add(new JLabel(“会员类型“);jtext5=new JTextField(“,6);this.getContentPane().add(jtext5);this.getContentPane().add(new JLabel(“激活时间“);jtext6=new JTextField(“,10);this.getContentPane().add(jtext6);for(int i=0;i7;i+)jtexti.setEditable(false);class serchVi
25、pString serch(String a) throws ExceptionString VIPnum=a;String vipcount=new String6;Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“);Connection conn=DriverManager.getConnection(“jdbc:odbc:Cinema“);Statement stat=conn.createStatement();String sql=“SELECT vip_name,vip_age,vip_sex,vip_pho,vip_type,vip_dat
26、e 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“);vipcount3=rs.getString(“vip_pho“);vipcount4=rs.getString(“vip_date“);vipcount5=rs.getString(“vip_type“);sta
27、t.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(),(String) combox_age.getSelectedItem(),(String) combox_sex.getSelectedItem(),text_vip_pho.getT
28、ext(),(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();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 连接数据库,通过这次设计,也初步理解了,想要把这个系统做的全面还是很困难的,在接下来的时间里我会继续对这个系统进行完善,努力将现在还未实现的功能添加上去,将界面做得更美观一些,好好干!。