收藏 分销(赏)

电影院管理系统.doc

上传人:xrp****65 文档编号:7042073 上传时间:2024-12-25 格式:DOC 页数:20 大小:714.70KB 下载积分:10 金币
下载 相关 举报
电影院管理系统.doc_第1页
第1页 / 共20页
电影院管理系统.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
课 程 设 计 课程名称: 数据库、软件工程课程设计 设计题目: 电影院管理系统 学 院: 信息工程与自动化 专 业: 计算机科学与技术 年 级: 2009级 学生姓名: 指导教师: 王清心 日 期: 2012-07-01 一、 绪论 国内电影院的售票系统不完善,有很多问题存在 ,售票效率低下 ,管理混乱 。现今社会是个讲究效率的社会,时间就是金钱。开发简单,便于操作的的软件不仅可以节省时间,还可以节省人力,物理,财力等 建立的影院售票系统,要把影院的售票管理、订票管理,财务管理等日常管理工作实行计算机统一管理,以提高工作效率和管理水平。 通过本系统软件,能帮助售票人员利用计算机,快速方便地对影院售票情况,订票情况,剩余座位查询等进行高效的管理。 本软件适用于电影界,它是比较完善的系统管理软件,对影院售票情况,订票情况,剩余座位查询等可以进行方便的管理 本软件的使用对象有影院负责人或管理人员(更新维护系统),影院售票人员(办理售票,订票,退票)和买票人(购买影票人员)。 该系统主要完成实现的目的有: 1.高效管理 数据处理速度快,通过对某一时间段的经营数据进行统计分析,供经营者分析经营状况, 以便采取相应的经营、促销策略。 2.客户资源充分利用 通过分析顾客的消费信息,制定出有针对性的促销措施,为顾客提供更为得体的服务。与顾客形成互动,加深印象,促进消费。 3.效益最大化 通过票房分析和排片情况,院线经理可对影院票房收益有一个直观的了解,通过最优的影片安排和促销活动来最大限度的增加院线收益。 二、电影院票务管理系统需求分析   (一)电影院线电子年票管理系统需求说明   1.定义:基于公网及影院局域网络建立的以IC卡为载体,且能够实现准实时数据交互及统计管理的电子年票管理软件。   2.产品描述   (1)系统属性   是一个在Windows98以上的操作系统平台下运行的院线电子年票管理系统。   (2)开发背景   解决各院线电子售票管理工作,方便各电影院线对电子售票票进行快速有效的操作,院线经理对排片和票房统计工作。   (3)软件特点   系统操作人员要求具备普通Windows系统操作水平即可。系统维护人员必须具有数据库管理知识。   3.具体用途   1、解决电影院线电子售票票管理上的工作。方便电影院线对电子售票票进行快速有效的操作。 2、通过插入‘员工卡’或‘管理卡’并输入用户名和相应密码才能进入系统进行管理。 3、影院管理者可对人员信息、排片等进行设置。 (二)用例模型 售票 会员 会员充值 票房管理 排片 用户管理 报表生成 校验密码 《包含》 《包含》 影院职员 客户 院线经理 统管理人员 电影院管理系统 电影名字 票价 上映时间 选择座位 选择电影场次 查看电影信息 购票 《包含》 《包含》 《包含》 《包含》 《包含》 全局ER图 对应 电影票 1 1 院线经理 管理 N 1 有 电影院 电影厅 有 N 1 座位 1 N 售票员 出售 1 N 办理 会员卡 1 1 消费者 办理 1 1 办理 N 1 电影 电影编号 名称 上映时间 主演 影片格式 导演 职工密码 职工信息 职工编号 职工类型 电影票 电影名 验证码 票价 电影票号 上映时间 座位号 座位 座位编号 票价 是否售出 流程图 增加 售票 会员注册 会员查询 删除会员 查看 查看影片 修改 删除影片 登陆 售票员 管理员 该系统的数据库使用Office的Access数据库 部分数据库表如下 会员信息表:主键为vip_number ,数据类型为String。 职工信息表:主键为Username,数据类型为String。 电影信息表:主键为name,数据类型为String。 三、系统设计(领域类) 该系统的框架由一个窗口类实现,我定义了一个名为Cinema的类,该类继承了JFrame,可是实现ActionListener接口。 还有一些实现特定功能的类例如: (1) class VipJDialog extends JDialog:该类继承了JDilog,能在录入信息时弹出一个确认用户信息的对话框 (2) class InsertVip:该类实现与数据库的连接,我在这个类中定义了一个能接受一个数组,并把该数组写入相应数据库的方法,能达到保存用户信息和电影排片管理的功能。 (3) class serchVip:该类同样是实现与数据库的连接,我在这个类中定义了一个查询的方法,方便用户对影院职员和电影信息的查看。 (4) class jpanel extends JPanel:该类继承了JPanel,可以在用户触发特定事件时移除之前面板的组件并添加新的组件,实现用户界面的切换。 由于该系统的很多功能还为实现,其他的类只能在以后的开发中再添加。 四、编码实现(截图 关键代码) 用户主界面 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.blue); this.setResizable(true); this.setDefaultCloseOperation(EXIT_ON_CLOSE); String menustr[]={"用户登录","售票","会员","用户管理","影片管理","票房查询","帮助"}; menu=new JMenu[menustr.length]; menubar=new JMenuBar(); for(int i=0;i<menustr.length;i++) { menu[i]=new JMenu(menustr[i]); menubar.add(menu[i]); } menuitem_user=new JMenuItem("普通用户"); //在用户登录菜单添加普通用户登录项 menu[0].add(menuitem_user); menuitem_user.addActionListener(this); menu[0].add(new JMenuItem("院线经理")); menu[0].add(new JMenuItem("系统管理员")); menuitem_vip=new JMenuItem("会员办理"); //在会员菜单添加会员办理菜单项 menu[2].add(menuitem_vip); menuitem_vip.addActionListener(this); menuitem_vip_inpour=new JMenuItem("会员充值"); menuitem_vip_inpour.addActionListener(this); menu[2].add(menuitem_vip_inpour); menu[2].add(new JMenuItem("会员管理")); menuitem_maneger=new JMenuItem("排片");//在影片管理菜单添加排片菜单项 menu[4].add(menuitem_maneger); menuitem_maneger.addActionListener(this); menu[4].add(new JMenuItem("增加影片")); this.setJMenuBar(menubar); 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_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.setLayout(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(); panel_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); panel_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_sex,panel_3,panel_4,panel_5; JLabel label[]; String VIP[]={"会员卡号","真实姓名","激活时间","年龄","性别","电话号码","充值金额","会员卡余额","会员卡类型"}; label=new JLabel[VIP.length]; text_count=new JTextField[VIP.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;i<9;i++) { text_count[i]=new JTextField("",8); label[i]=new JLabel(VIP[i]); } text_count[2].setText("2013-08-30"); text_count[2].setEditable(false); for(int i=0;i<3;i++) { panel_word.add(label[i]); panel_count.add(text_count[i]); } 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 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 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 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.addActionListener(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 //会员信息录入 { 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 JTextField[7]; this.getContentPane().add(new JLabel("会员卡号")); jtext[0]=new JTextField("",10); this.getContentPane().add(jtext[0]); this.getContentPane().add(new JLabel("真实姓名")); jtext[1]=new JTextField("",8); this.getContentPane().add(jtext[1]); this.getContentPane().add(new JLabel("年龄")); jtext[2]=new JTextField("",3); this.getContentPane().add(jtext[2]); this.getContentPane().add(new JLabel("性别")); jtext[3]=new JTextField("",3); this.getContentPane().add(jtext[3]); this.getContentPane().add(new JLabel("电话号码")); jtext[4]=new JTextField("",10); this.getContentPane().add(jtext[4]); this.getContentPane().add(new JLabel("会员类型")); jtext[5]=new JTextField("",6); this.getContentPane().add(jtext[5]); this.getContentPane().add(new JLabel("激活时间")); jtext[6]=new JTextField("",10); this.getContentPane().add(jtext[6]); for(int i=0;i<7;i++) { jtext[i].setEditable(false); } } 会员信息搜索 class serchVip { String[] serch(String a) throws Exception { String VIPnum=a; String vipcount[]=new String[6]; 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_date FROM VIP WHERE vip_number='"+VIPnum+"'"; ResultSet rs=stat.executeQuery(sql); while(rs.next()) { vipcount[0]=rs.getString("vip_name"); vipcount[1]=rs.getString("vip_age"); vipcount[2]=rs.getString("vip_sex"); vipcount[3]=rs.getString("vip_pho"); vipcount[4]=rs.getString("vip_date"); vipcount[5]=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_count[0].getText(),text_count[1].getText(),(String) combox_age.getSelectedItem(),(String) combox_sex.getSelectedItem(), text_vip_pho.getText(),(String) combox_vip.getSelectedItem(),text_count[2].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 String[6]; try { vip=serchvip.serch(a); } catch (Exception e1) { e1.printStackTrace(); } for(int i=0;i<6;i++) {jtext_vip_serch[i].setText(vip[i]);} } } 五、结论 这次的课程设计对我以后的编程有很大的帮助,对JAVA的学习,特别是图形界面设计有了很大的提高,之前没学到的JAVA连接数据库,通过这次设计,也初步理解了,想要把这个系统做的全面还是很困难的,在接下来的时间里我会继续对这个系统进行完善,努力将现在还未实现的功能添加上去,将界面做得更美观一些,好好干!。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服