数据库课程设计之酒店客房管理系统Word文件下载.doc
《数据库课程设计之酒店客房管理系统Word文件下载.doc》由会员分享,可在线阅读,更多相关《数据库课程设计之酒店客房管理系统Word文件下载.doc(13页珍藏版)》请在冰点文库上搜索。
开房客人表(客人姓名,性别,证件类型,证件号码,房类型,房号,联系电话,入住时间,预计离开时间)
预订客人表(客人姓名,性别,证件类型,证件号码,房类型,房号,联系电话,预计入住时间,预计离开时间)
历史客人表(客人姓名,性别,证件类型,证件号码,房类型,房号,联系电话,入住日期,离开日期)
四、详细设计
系统运行的主要界面如下:
登陆界面:
在登陆界面的密码JTextField中添加了KeyListener,使用户输入密码后按回车键就能登录到系统,代码如下:
jtextfield_key.addKeyListener(newKeyAdapter(){
publicvoidkeyPressed(KeyEvente){
//TODOAuto-generatedmethodstub
super.keyPressed(e);
if(e.getKeyChar()==KeyEvent.VK_ENTER){
Stringuser_name=jtextfield_user.getText().toString();
Stringuser_key=newString(jtextfield_key.getPassword());
//获取JPasswordField中的内容用此方法!
!
if(user_name.equals("
"
)||user_key.equals("
)){
JOptionPane.showMessageDialog(null,"
用户名或密码不能为空!
);
return;
}
else{
if(db.checkUser(user_name,user_key)){
mfa=newMainFrame_Admin();
mfa.setVisible(true);
setVisible(false);
}
else{
if(n==3){
JOptionPane.showMessageDialog(null,"
连续三次输入输入错误,系统将自动关闭!
System.exit(0);
}
JOptionPane.showMessageDialog(null,"
输入错误,还有"
+(3-n)+"
次输入机会"
n++;
jtextfield_user.setText("
jtextfield_key.setText("
return;
}
}
}
});
登陆后的主界面:
在本界面中插入了gif图片作为背景图,通过继承JPanel类,并复写paintComponent()方法使图片能处于JFrame框架的底层,使得窗口中放置其他组件比较容易,且外观比较好,代码如下:
packagedesign;
importjava.awt.Graphics;
importjava.awt.Image;
importjava.awt.Toolkit;
importjavax.swing.JPanel;
publicclassmyPanelextendsJPanel{
/**
*
*/
privatestaticfinallongserialVersionUID=1L;
privateImageimage=null;
publicmyPanel(){
image=Toolkit.getDefaultToolkit().getImage("
.\\image\\mainframe.gif"
}
@Override
protectedvoidpaintComponent(Graphicsg){
//TODOAuto-generatedmethodstub
super.paintComponent(g);
g.drawImage(image,0,0,800,600,getParent());
}
在选择完房间类型后,当房间号的JTextField获取焦点和失去焦点时,会自动出现提示信息,代码如下:
jtextfield_room.addFocusListener(newFocusAdapter(){
@Override
publicvoidfocusGained(FocusEvente){
super.focusGained(e);
if(jcombobox_room_type.getSelectedIndex()==0)
jlabel_tip_room_type.setText("
普通单人间的房间号码为:
101~109"
if(jcombobox_room_type.getSelectedIndex()==1)
普通双人间的房间号码为:
201~209"
if(jcombobox_room_type.getSelectedIndex()==2)
豪华单人间的房间号码为:
301~309"
if(jcombobox_room_type.getSelectedIndex()==3)
豪华双人间的房间号码为:
401~409"
publicvoidfocusLost(FocusEvente){
super.focusLost(e);
intn;
Stringpledge_string=db.getPledge(jtextfield_room.getText());
jtextfield_pledge.setText(pledge_string);
if(jtextfield_room.getText().equals("
n=0;
else
n=Integer.parseInt(jtextfield_room.getText());
if(jcombobox_room_type.getSelectedIndex()==0&
&
(n<
101||n>
109)){
JOptionPane.showMessageDialog(null,"
房间号输入有误!
return;
if(jcombobox_room_type.getSelectedIndex()==1&
201||n>
209)){
if(jcombobox_room_type.getSelectedIndex()==2&
301||n>
309)){
if(jcombobox_room_type.getSelectedIndex()==3&
401||n>
409)){
if(db.isRoomEmpty(jtextfield_room.getText())==false){
此房间已经有客人!
return;
房状态查看可显示各个房间的状态与基本信息,
预订管理的界面如下:
信息查询的界面如下:
查询的界面中“查找”按钮的代码如下:
privateJButtongetJButton_search(){
if(jbutton_search==null){
jbutton_search=newJButton("
查找"
jbutton_search.setBounds(280,10,80,30);
jbutton_search.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEvente){
Stringnum=jtextfield_input.getText();
if(db.isIdentityNumExist_checkin(num)==false){
证件号码不存在!
else{
jtable=getJTable(num);
jscrollpane.setViewportView(jtable);
jpanel.setVisible(false);
jpanel2.setVisible(true);
}
returnjbutton_search;
数据修改的界面如下:
添加管理员账户界面如下:
解除预订界面如下:
五、总结
优点:
(1)界面友好,在开房登记和预定登记界面中都做到了数据检查,判断输入的数据是否符合要求
(2)在有些输入框中添加了KeyListener和FocusListener,使得本系统运用起来时更人性化
(3)将各个功能分别放在不同的.java文件中,对数据库的操作都放在DBAccess.java文件中,使得编写代码时条理清晰
缺点:
(1)开房登记的证件类型不能添加其他的
(2)在填写入住时间时格式很固定,操作起来不方便,这一点可以改进
(3)查询信息时只能按照证件号码来查找,这一点做得还不够完善,可以用模糊查找,即输入客人姓名或证件号码时都能查找相关信息
(4)查询界面做的还不够友善,当数据库中没有信息时也没有设置提示信息
(5)本系统只能供管理员使用,可以改进为客人也能使用
(6)在数据库的设计方面还很不完善,数据冗余很大