1、数据库课程设计之酒店客房管理系统备课讲稿数据库课程设计之酒店客房管理系统酒店客房管理系统1、需求分析本系统设计实现的目标是对宾馆的客房管理、客户信息管理,前台用java实现对数据的添加,删除,查询,修改等功能,在后台用oracle作为数据库,其中数据库设计是用PowerDesigner设计的。本系统就是利用计算机信息提高了餐馆宾馆的管理水平,主要对系统的管理员权限、客户等信息管理。系统操作权限管理可以实现对管理员和客人信息的添加、删除、查询、修改操作,并设置管理员账户、密码修改。本系统实现对宾馆信息的管理和总体的统计等,客房及客人信息的查看。管理员可以浏览,查询,添加,删除等客房和客人的基本信
2、息。功能模块图如下:2、概念结构设计E-R图如下:三、逻辑结构设计本系统中共用了五张表,分别是:(注:加下划线的是主码,斜体字是外码)登陆表:login(账号,密码)房间表(房号,房类型,价格,押金,房状态)开房客人表(客人姓名,性别,证件类型,证件号码,房类型,房号,联系电话,入住时间,预计离开时间)预订客人表(客人姓名,性别,证件类型,证件号码,房类型,房号,联系电话,预计入住时间,预计离开时间)历史客人表(客人姓名,性别,证件类型,证件号码,房类型,房号,联系电话,入住日期,离开日期)4、详细设计系统运行的主要界面如下:登陆界面:在登陆界面的密码JTextField中添加了KeyList
3、ener,使用户输入密码后按回车键就能登录到系统,代码如下:jtextfield_key.addKeyListener(new KeyAdapter() public void keyPressed(KeyEvent e) / TODO Auto-generated method stub super.keyPressed(e); if(e.getKeyChar()=KeyEvent.VK_ENTER) String user_name=jtextfield_user.getText().toString(); String user_key=new String(jtextfield_key
4、.getPassword();/获取JPasswordField中的内容用此方法! if(user_name.equals()|user_key.equals() JOptionPane.showMessageDialog(null, 用户名或密码不能为空!); return; else if(db.checkUser(user_name, user_key) mfa=new MainFrame_Admin(); mfa.setVisible(true); setVisible(false); else if(n=3) JOptionPane.showMessageDialog(null, 连
5、续三次输入输入错误,系统将自动关闭!); System.exit(0); JOptionPane.showMessageDialog(null, 输入错误,还有+(3-n)+次输入机会); n+; jtextfield_user.setText(); jtextfield_key.setText(); return; );登陆后的主界面:在本界面中插入了gif图片作为背景图,通过继承JPanel类,并复写paintComponent()方法使图片能处于JFrame框架的底层,使得窗口中放置其他组件比较容易,且外观比较好,代码如下:package design;import java.awt.G
6、raphics;import java.awt.Image;import java.awt.Toolkit;import javax.swing.JPanel;public class myPanel extends JPanel /* * */ private static final long serialVersionUID = 1L; private Image image=null; public myPanel() image=Toolkit.getDefaultToolkit().getImage(.imagemainframe.gif); Override protected
7、void paintComponent(Graphics g) / TODO Auto-generated method stub super.paintComponent(g); g.drawImage(image, 0, 0, 800, 600, getParent(); 在选择完房间类型后,当房间号的JTextField获取焦点和失去焦点时,会自动出现提示信息,代码如下:jtextfield_room.addFocusListener(new FocusAdapter() Override public void focusGained(FocusEvent e) / TODO Auto
8、-generated method stub super.focusGained(e); if(jcombobox_room_type.getSelectedIndex()=0) jlabel_tip_room_type.setText(普通单人间的房间号码为:101109); if(jcombobox_room_type.getSelectedIndex()=1) jlabel_tip_room_type.setText(普通双人间的房间号码为:201209); if(jcombobox_room_type.getSelectedIndex()=2) jlabel_tip_room_type
9、.setText(豪华单人间的房间号码为:301309); if(jcombobox_room_type.getSelectedIndex()=3) jlabel_tip_room_type.setText(豪华双人间的房间号码为:401409); Override public void focusLost(FocusEvent e) / TODO Auto-generated method stub super.focusLost(e); int n; String pledge_string=db.getPledge(jtextfield_room.getText(); jtextfie
10、ld_pledge.setText(pledge_string); if(jtextfield_room.getText().equals() n=0; else n=Integer.parseInt(jtextfield_room.getText(); if(jcombobox_room_type.getSelectedIndex()=0&(n109) JOptionPane.showMessageDialog(null, 房间号输入有误!); return ; if(jcombobox_room_type.getSelectedIndex()=1&(n209) JOptionPane.sh
11、owMessageDialog(null, 房间号输入有误!); return ; if(jcombobox_room_type.getSelectedIndex()=2&(n309) JOptionPane.showMessageDialog(null, 房间号输入有误!); return ; if(jcombobox_room_type.getSelectedIndex()=3&(n409) JOptionPane.showMessageDialog(null, 房间号输入有误!); return ; if(db.isRoomEmpty(jtextfield_room.getText()=
12、false) JOptionPane.showMessageDialog(null, 此房间已经有客人!); return; );房状态查看可显示各个房间的状态与基本信息,预订管理的界面如下:信息查询的界面如下:查询的界面中“查找”按钮的代码如下:private JButton getJButton_search() if(jbutton_search=null) jbutton_search=new JButton(查找); jbutton_search.setBounds(280, 10, 80, 30); jbutton_search.addActionListener(new Acti
13、onListener() Override public void actionPerformed(ActionEvent e) / TODO Auto-generated method stub String num=jtextfield_input.getText(); if(db.isIdentityNumExist_checkin(num)=false) JOptionPane.showMessageDialog(null, 证件号码不存在!); return ; else jtable=getJTable(num); jscrollpane.setViewportView(jtabl
14、e); jpanel.setVisible(false); jpanel2.setVisible(true); ); return jbutton_search; 数据修改的界面如下:添加管理员账户界面如下:解除预订界面如下:5、总结优点:(1)界面友好,在开房登记和预定登记界面中都做到了数据检查,判断输入的数据是否符合要求(2)在有些输入框中添加了KeyListener和FocusListener,使得本系统运用起来时更人性化(3)将各个功能分别放在不同的.java文件中,对数据库的操作都放在DBAccess.java文件中,使得编写代码时条理清晰缺点:(1)开房登记的证件类型不能添加其他的(2)在填写入住时间时格式很固定,操作起来不方便,这一点可以改进(3)查询信息时只能按照证件号码来查找,这一点做得还不够完善,可以用模糊查找,即输入客人姓名或证件号码时都能查找相关信息(4)查询界面做的还不够友善,当数据库中没有信息时也没有设置提示信息(5)本系统只能供管理员使用,可以改进为客人也能使用(6)在数据库的设计方面还很不完善,数据冗余很大