java实现酒店管理系统
程序员文章站
2024-02-28 15:23:10
本文实例为大家分享了java实现酒店管理系统的具体代码,供大家参考,具体内容如下
编写环境:myeclipse2014+sql server2014
系统功能:
1....
本文实例为大家分享了java实现酒店管理系统的具体代码,供大家参考,具体内容如下
编写环境:myeclipse2014+sql server2014
系统功能:
1.登录验证
2.房态统计显示
3.预定登记并入库
4.入住登记并入库
5.换房登记并入库
6.客人信息查询
7.退房并入库
运行界面如下:
=====登录界面======
=====主界面=====
=====为每个房间设置弹出菜单======
=====登记界面======
=====换房界面=====
=====退房界面=====
界面之间相关关系:
主界面主要由菜单条,按钮,标签等组成,一个jbutton是一个房间,其test从数据库中获取,颜色由房态决定。
登记-换房-查看信息-退房等界面皆继承一个父类而来,简单快捷。
主要代码目录:
1.数据库操作类
/**====================================================** * 项目名 :酒店管理系统 * 模块名 :数据库连接 * 文件名 :databaseconnct.java * 相关文件 : * 实现功能 :jdbc连接数据库 * 函数说明 : * [## public vector getid(){}]: * 功能:获取数据库中系统登录id * * [## public void setid() {}]: * 功能:设置数据库中系统登录id * * [## public vector getpassword(){}]: * 功能:获取数据库中系统登录密码 * * [## public void setpassword(){}]: * 功能:设置数据库中系统登录密码 * * [## public vector getroonnum(){}]: * 功能:获取数据库中房间号 * * [## public void setroonnum() {}]: * 功能:设置数据库中房间号 * * [## public vector getroomtype(){}]: * 功能:获取数据库中房间类型 * * [## public void seroomtype(){}]: * 功能:设置数据库中房间类型 * * [## public void sql(string sql){}]: * 功能:执行sql语句进行查询 * **===================================================**/ package com.common; import java.sql.*; import java.util.vector; import javax.swing.joptionpane; import javax.xml.crypto.dsig.keyinfo.retrievalmethod; public class databaseconnect { private string drivername="com.microsoft.sqlserver.jdbc.sqlserverdriver"; private string dburl="jdbc:sqlserver://localhost:1433;databasename=hotel_mangerment_system"; private string username="sa"; private string userpwd="1451171"; private connection ct=null; private resultset rs=null; private statement st; private vector id =new vector(); private vector password =new vector(); /**====================================================** * 获取数据库中系统登录id **===================================================**/ public vector getid() { return id; } /**====================================================** * 设置数据库中系统登录id **===================================================**/ public void setid(vector id) { this.id = id; } /**====================================================** * 获取数据库中系统登录密码 **===================================================**/ public vector getpassword() { return password; } /**====================================================** * 设置数据库中系统登录id **===================================================**/ public void setpassword(vector password) { this.password = password; } /**====================================================** * [## public void sql(string sql) {}] * 参数 :string sql * 返回值 :无 * 修饰符 :public * 功能 :创建sql查询,从数据库里查询登陆账号与密码 **===================================================**/ public void sql(string sql) throws exception { class.forname(drivername); ct=drivermanager.getconnection(dburl,username,userpwd); st=ct.createstatement(); rs=st.executequery(sql); while(rs.next()) { id.add(rs.getint(1)); password.add(rs.getint(2)); } if(rs!=null) rs.close(); if(st!=null) st.close(); if(ct!=null) ct.close(); } /**====================================================** * [## public vector roomoperation(int room_num) {}] 查询房间信息 * 参数 :int room_num * 返回值 :无 * 修饰符 :public * 功能 :创建sql查询房间号与类型,类外可使用 **===================================================**/ public vector roomoperation(int room_num)throws exception { vector<object> data=new vector<object>(); class.forname(drivername); ct=drivermanager.getconnection(dburl,username,userpwd); st=ct.createstatement(); rs=st.executequery("select * from room_table where roomnum="+room_num); while(rs.next()) { data.add(rs.getint(1)); data.add(rs.getstring(2)); data.add(rs.getint(3)); data.add(rs.getint(4)); } if(rs!=null) rs.close(); if(st!=null) st.close(); if(ct!=null) ct.close(); return data; } /**====================================================** * [## public void roomoperation(string sql) {}] 查询房间使用状态 * 参数 :string sql * 返回值 :房间个数 * 修饰符 :public * 功能 :创建sql查询满足条件房间使用状态,类外可使用 **===================================================**/ public int getrow(string sql)throws exception { class.forname(drivername); ct=drivermanager.getconnection(dburl,username,userpwd); int rowcount=0; st=ct.createstatement(); rs=st.executequery(sql); while(rs.next()) { rowcount++; } if(rs!=null) rs.close(); if(st!=null) st.close(); if(ct!=null) ct.close(); return rowcount; } /**====================================================** * [## public void insertdata(){}] 插入记录 * 参数 :string table_name,string str * 返回值 :无 * 修饰符 :public * 功能 :向数据库中插入记录 **=================================================== * @throws exception **/ public void insertdata(string table_name,string str) throws exception { class.forname(drivername); ct=drivermanager.getconnection(dburl,username,userpwd); ct.setautocommit(false); st=ct.createstatement(); string sql="insert into"+" "+table_name+" "+"values"+"("+str+")"; st.executeupdate(sql); ct.commit(); if(st!=null) st.close(); if(ct!=null) ct.close(); } /**====================================================** * [## public void updatedata(string str){}] 更新记录 * 参数 :string sql * 返回值 :无 * 修饰符 :public * 功能 :向数据库中更新记录 **===================================================*/ public void updatedata(string sql) throws exception { class.forname(drivername); ct=drivermanager.getconnection(dburl,username,userpwd); ct.setautocommit(false); st=ct.createstatement(); st.executeupdate(sql); ct.commit(); if(st!=null) st.close(); if(ct!=null) ct.close(); } /**====================================================** * [## public void getdatafromcostomer(){}] 从costomer_table中获取数据 * 参数 :int room_num * 返回值 :vector<object> data * 修饰符 :public * 功能 :根据房间号从costomer_table中获取数据并返回 **===================================================*/ public vector getdatafromcostomer(int room_num) throws exception { vector<object> data=new vector<object>(); class.forname(drivername); ct=drivermanager.getconnection(dburl,username,userpwd); ct.setautocommit(false); st=ct.createstatement(); rs=st.executequery("select * from costomer_table where roomnum="+room_num+"and isliving=1"); while(rs.next()) { data.add(rs.getint(1)); data.add(rs.getstring(2)); data.add(rs.getstring(3)); data.add(rs.getstring(4)); data.add(rs.getstring(5)); data.add(rs.getstring(6)); data.add(rs.getint(7)); data.add(rs.getint(8)); data.add(rs.getint(9)); } if(rs!=null) rs.close(); if(st!=null) st.close(); if(ct!=null) ct.close(); return data; } /**====================================================** * [## public vector roomoperation(int room_num) {}] 查询房间信息 * 参数 :无 * 返回值 :return returedata; * 修饰符 :public * 功能 :创建sql查询房间号与类型,与入住状态并返回,类外可使用 **===================================================**/ public vector roomoperation()throws exception { vector<vector> returedata=new vector<vector>(); vector<object> roomnum=new vector<object>(); vector<object> roomtype=new vector<object>(); vector<integer> roomstate=new vector<integer>(); class.forname(drivername); ct=drivermanager.getconnection(dburl,username,userpwd); st=ct.createstatement(); rs=st.executequery("select roomnum,roomtype,roomatate from room_table"); while(rs.next()) { roomnum.add(rs.getint(1)); roomtype.add(rs.getstring(2)); roomstate.add(rs.getint(3)); } if(rs!=null) rs.close(); if(st!=null) st.close(); if(ct!=null) ct.close(); returedata.add(roomnum); returedata.add(roomtype); returedata.add(roomstate); return returedata; } }
2.登录界面类
/**====================================================** * 项目名 :酒店管理系统 * 模块名 :系统登录窗口 * 文件名 :hotellogingui.java * 相关文件 :databaseconnct.java hotelmaingui.java * 实现功能 :系统登录界面 * 函数说明 : * [## public myjframe(){}]: * 功能:构造函数 组建登录窗口 * [## public void enevtoperation(final myloginjframe mj){}] * 功能:登录界面的事件监听处理 * [## private boolean logincheck() {}]: * 功能:登录验证,仅类内使用 * [## private void quit() {}]: * 功能:关闭系统函数,仅类内使用 **===================================================**/ package com.hotelgui; import com.common.*;//引入包 import java.awt.*; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.itemevent; import java.awt.event.itemlistener; import javax.jws.soap.soapbinding.style; import javax.swing.*; import java.net.*; import java.util.*; public class hotellogingui { public static void main(string[] args) { // todo auto-generated method stub myloginjframe logingui=new myloginjframe(); logingui.enevtoperation(logingui); } } //登录界面myjframe class myloginjframe extends jframe implements actionlistener { databaseconnect dc; jpasswordfield passwordnum; jtextfield accountnum; jlabel password,account,login,backimg,backimg1; jlabel tiplabel; jcombobox<string> loginchoice; jbutton loginbutton,resetbutton,exitbutton; jpanel jp,jp0,jp1,jp2,jp3,jp4,jp5; vector<string> dept=new vector<string>(); private string id_now,user_type; /**=======================================================** * 设置当前成功登录的id **========================================================*/ public void setid_now(string id_now) { this.id_now = id_now; } /**=======================================================** * 获得当前成功登录的id **========================================================*/ public string getid_now() { return id_now; } /**====================================================** * **[## public myjframe() {}] 组建登录窗口 * 参数 :无 * 返回值 :无 * 修饰符 :public * 功能 :组建登录窗口 **===================================================**/ public myloginjframe() { dc=new databaseconnect();//连接数据库实例 jp=new jpanel(); jp.setbounds(0, -5,550, 200); jp0=new jpanel(); jp0.setbounds(0,180,250,250); jp1=new jpanel(); jp1.setbounds(270, 215, 250, 30); jp2=new jpanel(); jp2.setbounds(270, 250, 250, 30); jp3=new jpanel(); jp3.setbounds(270, 280, 250, 30); jp4=new jpanel(); jp4.setbounds(270, 335, 250, 40); jp5=new jpanel(); jp5.setbounds(270, 380, 250, 30); dept.add("经理"); dept.add("部门主管"); dept.add("普通员工"); account=new jlabel("账 户"); password=new jlabel("密 码"); login=new jlabel("用 户 "); backimg=new jlabel(new imageicon("images\\back.jpg")); backimg1=new jlabel(new imageicon("images\\back1.jpg")); tiplabel=new jlabel(); tiplabel.setfont(new font("宋体", font.plain, 12)); tiplabel.setforeground(color.red); tiplabel.setvisible(false); passwordnum=new jpasswordfield(12); accountnum=new jtextfield(12); loginbutton=new jbutton("登 录"); loginbutton.setopaque(false); loginbutton.setcontentareafilled(false); resetbutton=new jbutton("重 置"); resetbutton.setopaque(false); resetbutton.setcontentareafilled(false); exitbutton =new jbutton("退 出"); exitbutton.setopaque(false); exitbutton.setcontentareafilled(false); loginchoice =new jcombobox(dept); jp.add(backimg); jp0.add(backimg1); jp1.add(account); jp1.add(accountnum); jp2.add(password); jp2.add(passwordnum); jp3.add(login); jp3.add(loginchoice); jp4.add(loginbutton); jp4.add(resetbutton); jp4.add(exitbutton); jp5.add(tiplabel); this.add(jp); this.add(jp0); this.add(jp1); this.add(jp2); this.add(jp3); this.add(jp4); this.add(jp5); this.settitle("系统登录"); this.setlayout(null); this.setdefaultcloseoperation(jframe.exit_on_close); this.setresizable(false); this.setbounds(320, 160, 550, 450); this.seticonimage(new imageicon("images\\icon.jpg").getimage()); this.setvisible(true); } /**====================================================** * **[## private void enevtoperation() {}] 事件处理 * 参数 :无 * 返回值 :无 * 修饰符 :public * 功能 :登录窗口的事件操作 **===================================================**/ public void enevtoperation(final myloginjframe mj) { /**=======================================================** * 登录按钮监听事件 **========================================================*/ loginbutton.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { // todo auto-generated method stub if(logincheck()) { tiplabel.settext("正 在 登 录..."); //记录当前的操作记录 id_now=accountnum.gettext(); user_type=loginchoice.getselecteditem().tostring(); myhotelmaingui mm=new myhotelmaingui(); //登录到主界面 mj.dispose(); //显示当前的操作人员信息 mm.setid_now(id_now); mm.setuser_type(user_type); mm.enevtopration(); mm.updateroomstate(); thread th=new thread(mm); th.start(); } else if(accountnum.gettext().isempty() && passwordnum.getpassword().length==0) tiplabel.settext("密码与账号不能为空!"); else if(accountnum.gettext().isempty() && passwordnum.getpassword().length!=0) tiplabel.settext("请输入账号..."); else if(accountnum.gettext().isempty()==false && passwordnum.getpassword().length==0) tiplabel.settext("请输入密码..."); else tiplabel.settext("请检查后重新输入!"); tiplabel.setvisible(true); } }); /**=======================================================** * 重置按钮监听事件 **========================================================*/ resetbutton.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { // todo auto-generated method stub accountnum.settext(""); passwordnum.settext(""); loginchoice.setselectedindex(0); } }); /**=======================================================** * 退出按钮监听事件 **========================================================*/ exitbutton.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { // todo auto-generated method stub quit(); } }); } /**====================================================** * **[## private boolean logincheck() {}] 登陆验证 * 参数 :无 * 返回值 :flag * 修饰符 :private * 功能 :登录验证,仅类内使用 **===================================================**/ public boolean logincheck() { boolean flag=false; if(loginchoice.getselectedindex()==0) { try { dc.sql("select id,pass_word from mangerers_table"); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } } if(loginchoice.getselectedindex()==1) { try { dc.sql("select id,pass_word from dept_table"); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } } if(loginchoice.getselectedindex()==2) { try { dc.sql("select id,pass_word from common_table"); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } } for(int i=0;i<dc.getid().size();i++) { string password=new string(passwordnum.getpassword()); if(accountnum.gettext().equals(dc.getid().get(i).tostring()) && password.equals(dc.getpassword().get(i).tostring())) { flag=true; break; } } return flag; } /**====================================================** * **[## private void quit() {}] 系统退出 * 参数 :无 * 返回值 :无 * 修饰符 :private * 功能 :关闭系统函数,仅类内使用 **===================================================**/ private void quit() { int flag=0; string msg="你 确 定 要 关 闭 系 统 吗?"; flag=joptionpane.showconfirmdialog(null, msg,"提示",joptionpane.yes_no_option); if(flag==joptionpane.yes_option) { this.setvisible(false); system.exit(0); } return; } @override public void actionperformed(actionevent e) { // todo auto-generated method stub } }
3.主界面类
/**====================================================** * 项目名 :酒店管理系统 * 模块名 :系统登录成功后的主窗口 * 文件名 :hotelmaingui.java * 相关文件 :hotellogingui.java databaseconnect.java * 实现功能 :系统登录成功后主界面 * 函数说明 : * [## public myhotelmaingui(int i){}]: * 功能:构造函数 * [## public myhotelmaingui(){}]: * 功能:构造函数 组建登陆窗口 * [## private boolean logincheck() {}]: * 功能:登录验证,仅类内使用 * [## private void quit() {}]: * 功能:关闭系统函数,仅类内使用 * [## public void run(){}] * 功能:线程执行刷新界面 * [## public void setlabeltext(jlabel jl,int row)] * 功能:为jlabel设置text **===================================================**/ package com.hotelgui; import java.awt.*; import com.common.databaseconnect; import com.databasejdbc.*; import javax.swing.*; import java.text.simpledateformat; import java.util.*; import java.awt.event.*; public class myhotelmaingui extends jframe implements actionlistener,runnable { public myhotelmaingui(int i) { } private static final focuslistener focuslistener = null; string roomnum,roomtype; jpopupmenu popupmenu; jmenubar jmb; jpanel jp1,jp2,room_jp1; jlabel time_jl,order_jl,login_jl,change_jl,checkout_jl,relogin_jl,money_jl,exit_jl,emploer_jl; jmenu jm1,jm2,jm3,jm4,jm5,jm6,jm7,jm8,bt_jm; jbutton time_bt,order_bt,login_bt,change_bt,checkout_bt,relogin_bt,money_bt,exit_bt,emploer_bt,onef_bt,twof_bt,threef_bt,fourf_bt; vector<jbutton> roomjb=new vector<jbutton>(); vector<jpopupmenu> popupvector=new vector<jpopupmenu>(); jlabel statelabel,state,staticsstate; jbutton jj; jlabel allroom_jl,empty_jl,ordered_jl,isliv_jl,else_jl,allroom_jl1,empty_jl1,ordered_jl1,isliv_jl1,else_jl1; string id_now,user_type; /**=======================================================** * 获取当前成功登录的id **========================================================*/ public string getid_now() { return id_now; } /**=======================================================** * 获取当前成功登录的用户类型 **========================================================*/ public string getuser_type() { return user_type; } /**=======================================================** * 设置当前成功登录的id **========================================================*/ public void setid_now(string id_now) { this.id_now = id_now; } /**=======================================================** * 设置当前成功登录的用户类型 **========================================================*/ public void setuser_type(string user_type) { this.user_type = user_type; } /**====================================================** * **[## public myhotelmaingui() {}] 构造函数 * 参数 :无 * 返回值 :无 * 修饰符 :public * 功能 :构造函数,初始化主界面 **===================================================**/ public myhotelmaingui() { //为每个房间设置点击事件 for( int i=0;i<32;i++) { final string str; if(i<10) { str="40"+(i+1); } else { str="4"+(i+1); } popupmenu = new jpopupmenu (); popupvector.add(popupmenu); jmenuitem ordermenuitem = new jmenuitem ("新预定") ; ordermenuitem.setfont(new font("宋体",font.italic,14)); popupvector.get(i).add ( ordermenuitem ) ; //添加事件 ordermenuitem.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { // todo auto-generated method stub checkin ck=new checkin("预订登记","images\\checkin_bt.jpg"); ck.room_num_jf.settext(str); ck.cancelbutton(); //登記入住 ck.checkinbutton(1); updateroomstate(); } }); jmenuitem checkinmenuitem = new jmenuitem ("入住登记") ; checkinmenuitem.setfont(new font("宋体",font.italic,14)); popupvector.get(i).add ( checkinmenuitem ) ; checkinmenuitem.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { // todo auto-generated method stub checkin ck=new checkin("入住登记","images\\checkin_bt.jpg"); ck.room_num_jf.settext(str); ck.cancelbutton(); //登記入住 ck.checkinbutton(2); updateroomstate(); } }); // separator popupmenu.addseparator () ; jmenuitem changemenuitem = new jmenuitem ("客人换房") ; changemenuitem.setfont(new font("宋体",font.italic,14)); popupvector.get(i).add ( changemenuitem ) ; changemenuitem.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { // todo auto-generated method stub changeroom cr=new changeroom("客人换房","images\\change_bt.jpg"); cr.check_bt.setvisible(false); cr.jtf.settext(str); try { cr.check_bt("房间未入住!"); } catch (exception e1) { // todo auto-generated catch block e1.printstacktrace(); } } }); jmenuitem msgmenuitem = new jmenuitem ("客人信息") ; msgmenuitem.setfont(new font("宋体",font.italic,14)); popupvector.get(i).add ( msgmenuitem ) ; msgmenuitem.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { // todo auto-generated method stub checkmsg cm=new checkmsg("客人信息","images\\"); cm.check_bt.setvisible(false); cm.jtf.settext(str); try { cm.check_bt("房间未入住!"); } catch (exception e1) { // todo auto-generated catch block e1.printstacktrace(); } } }); jmenuitem reckmenuitem = new jmenuitem ("客人续住") ; reckmenuitem.setfont(new font("宋体",font.italic,14)); popupvector.get(i).add ( reckmenuitem ) ; popupmenu.addseparator () ; jmenuitem checkoutmenuitem = new jmenuitem ("客人退房") ; checkoutmenuitem.setfont(new font("宋体",font.italic,14)); popupvector.get(i).add ( checkoutmenuitem ) ; checkoutmenuitem.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { // todo auto-generated method stub checkout co=new checkout("客人退房","images\\checkout_bt.jpg"); co.check_bt.setvisible(false); co.jtf.settext(str); try { co.check_bt("房间未入住!"); } catch (exception e1) { // todo auto-generated catch block e1.printstacktrace(); } } }); } onef_bt=new jbutton(new imageicon("images\\1f.jpg")); onef_bt.setbounds(20, 170, 60,50); twof_bt=new jbutton(new imageicon("images\\2f.jpg")); twof_bt.setbounds(20, 250, 60,50); threef_bt=new jbutton(new imageicon("images\\3f.jpg")); threef_bt.setbounds(20, 330, 60,50); fourf_bt=new jbutton(new imageicon("images\\4f.jpg")); fourf_bt.setbounds(20, 410, 60,50); for(int i=0;i<32;i++) { jbutton jb=new jbutton(); roomjb.add(jb); if(i<8) roomjb.get(i).setbounds(90*i, 0, 90, 90); else if(i<16) roomjb.get(i).setbounds(90*(i-8), 90, 90, 90); else if(i<24) roomjb.get(i).setbounds(90*(i-16), 180, 90, 90); else roomjb.get(i).setbounds(90*(i-24), 270, 90, 90); roomjb.get(i).setcontentareafilled(false); roomjb.get(i).setcomponentpopupmenu (popupvector.get(i)); } //放置房间的jpanel room_jp1=new jpanel(); room_jp1.setlayout(null); room_jp1.setbounds(120, 150, 730, 367); allroom_jl=new jlabel(new imageicon("images\\all.jpg")); allroom_jl1=new jlabel(); allroom_jl.setbounds(950, 150, 75, 30); allroom_jl1.setbounds(1110, 150, 75, 30); empty_jl=new jlabel(new imageicon("images\\empty.jpg")); empty_jl1=new jlabel(); empty_jl.setbounds(950, 200, 75, 30); empty_jl1.setbounds(1110, 200, 75, 30); ordered_jl=new jlabel(new imageicon("images\\order.jpg")); ordered_jl1=new jlabel(); ordered_jl.setbounds(950, 250, 75, 30); ordered_jl1.setbounds(1110, 250, 75, 30); isliv_jl=new jlabel(new imageicon("images\\isliv.jpg")); isliv_jl1=new jlabel(); isliv_jl.setbounds(950, 300, 75, 30); isliv_jl1.setbounds(1110, 300, 75, 30); else_jl=new jlabel(new imageicon("images\\else.jpg")); else_jl1=new jlabel(); else_jl1.setbounds(1110, 350, 75, 30); else_jl.setbounds(950, 350, 75, 30); state=new jlabel("实时房态统计"); state.setfont(new font("宋体",font.plain,14)); state.setbounds(1000, 90, 100, 40); staticsstate=new jlabel(); staticsstate.setfont(new font("宋体",font.plain,25)); staticsstate.setbounds(970, 420, 250, 60); staticsstate.setforeground(color.red); jp2=new jpanel(); jp2.setbounds(10, 570, 950, 50);//底部登录状态显示 statelabel=new jlabel(); statelabel.setfont(new font("宋体",font.center_baseline,12)); jp2.add(statelabel); time_jl=new jlabel("实时房态"); time_jl.setfont(new font("宋体",font.layout_no_limit_context,10)); time_jl.setbounds(10, 53, 40, 10); time_bt=new jbutton(new imageicon("images\\实时房态.jpg")); time_bt.setbounds(10, 10, 40, 40); time_bt.setborderpainted(false); order_bt=new jbutton(new imageicon("images\\预定登记.jpg")); order_bt.setbounds(65, 10, 40, 40); order_bt.setborderpainted(false); order_jl=new jlabel("预定登记"); order_jl.setfont(new font("宋体",font.layout_no_limit_context,10)); order_jl.setbounds(65, 53, 40, 10); login_bt=new jbutton(new imageicon("images\\入住登记.jpg")); login_bt.setbounds(120, 10, 40, 40); login_bt.setborderpainted(false); login_jl=new jlabel("入住登记"); login_jl.setfont(new font("宋体",font.layout_no_limit_context,10)); login_jl.setbounds(120, 53, 40, 10); change_bt=new jbutton(new imageicon("images\\客人换房.jpg")); change_bt.setbounds(175, 10, 40, 40); change_bt.setborderpainted(false); change_jl=new jlabel("客人换房"); change_jl.setfont(new font("宋体",font.layout_no_limit_context,10)); change_jl.setbounds(175, 53, 40, 10); relogin_bt=new jbutton(new imageicon("images\\客房续住.jpg")); relogin_bt.setbounds(230, 10, 40, 40); relogin_bt.setborderpainted(false); relogin_jl=new jlabel("客人续住"); relogin_jl.setfont(new font("宋体",font.layout_no_limit_context,10)); relogin_jl.setbounds(230, 53, 40, 10); checkout_jl=new jlabel("客人退房"); checkout_jl.setfont(new font("宋体",font.layout_no_limit_context,10)); checkout_jl.setbounds(285, 53, 40, 10); checkout_bt=new jbutton(new imageicon("images\\客人退房.jpg")); checkout_bt.setbounds(285, 10, 40, 40); checkout_bt.setborderpainted(false); money_bt=new jbutton(new imageicon("images\\收银报表.jpg")); money_bt.setbounds(340, 10, 40, 40); money_bt.setborderpainted(false); money_jl=new jlabel("财务报表"); money_jl.setfont(new font("宋体",font.layout_no_limit_context,10)); money_jl.setbounds(340, 53, 40, 10); exit_bt=new jbutton(new imageicon("images\\退出系统.png")); exit_bt.setbounds(450, 10, 40, 40); exit_bt.setborderpainted(false); exit_jl=new jlabel("退出系统"); exit_jl.setfont(new font("宋体",font.layout_no_limit_context,10)); exit_jl.setbounds(450, 53, 40, 10); emploer_bt=new jbutton(new imageicon("images\\员工管理.jpg")); emploer_bt.setbounds(395, 10, 40, 40); emploer_bt.setborderpainted(false); emploer_jl=new jlabel("员工管理"); emploer_jl.setfont(new font("宋体",font.layout_no_limit_context,10)); emploer_jl.setbounds(395, 53, 40, 10); jm1=new jmenu("预订接待(a)"); jm1.setfont(new font("宋体",font.layout_no_limit_context,12)); jm2=new jmenu("前台营业(b)"); jm2.setfont(new font("宋体",font.layout_no_limit_context,12)); jm3=new jmenu("客户管理(c)"); jm3.setfont(new font("宋体",font.layout_no_limit_context,12)); jm4=new jmenu("员工管理(d)"); jm4.setfont(new font("宋体",font.layout_no_limit_context,12)); jm5=new jmenu("财务报表(e)"); jm5.setfont(new font("宋体",font.layout_no_limit_context,12)); jm6=new jmenu("综合查询(z)"); jm6.setfont(new font("宋体",font.layout_no_limit_context,12)); jm7=new jmenu("窗口(p)"); jm7.setfont(new font("宋体",font.layout_no_limit_context,12)); jm8=new jmenu("帮助(h)"); jm8.setfont(new font("宋体",font.layout_no_limit_context,12)); jmb=new jmenubar(); jmb.add(jm1); jmb.add(jm2); jmb.add(jm3); jmb.add(jm4); jmb.add(jm5); jmb.add(jm6); jmb.add(jm7); jmb.add(jm8); for(int i=0;i<32;i++) { room_jp1.add(roomjb.get(i)); } this.add(onef_bt); this.add(twof_bt); this.add(threef_bt); this.add(fourf_bt); this.add(time_bt); this.add(order_bt); this.add(login_bt); this.add(change_bt); this.add(relogin_bt); this.add(change_bt); this.add(checkout_bt); this.add(money_bt); this.add(exit_bt); this.add(emploer_bt); this.add(time_jl); this.add(order_jl); this.add(login_jl); this.add(change_jl); this.add(relogin_jl); this.add(change_jl); this.add(checkout_jl); this.add(money_jl); this.add(exit_jl); this.add(emploer_jl); this.add(jp2); this.add(state); this.add(allroom_jl); this.add(empty_jl); this.add(isliv_jl); this.add(ordered_jl); this.add(else_jl); this.add(allroom_jl1); this.add(empty_jl1); this.add(isliv_jl1); this.add(ordered_jl1); this.add(else_jl1); this.add(staticsstate); this.setresizable(false); this.seticonimage(new imageicon("images\\icon.jpg").getimage()); this.settitle("i酒店管理系统"+"——"+"["+"实时房态"+"]"); this.setfont(new font("宋体",font.layout_no_limit_context,12)); this.setjmenubar(jmb); this.setlocation(50, 50); this.setlayout(null); this.add(room_jp1); this.setsize(toolkit.getdefaulttoolkit().getscreensize().width-100,toolkit.getdefaulttoolkit().getscreensize().height-100); this.setdefaultcloseoperation(jframe.exit_on_close); this.setvisible(true); } @override public void actionperformed(actionevent e) { // todo auto-generated method stub } /**====================================================** * **[## public void enevtopration {}] 主窗体上的事件监听 * 参数 :无 * 返回值 :无 * 修饰符 :public * 功能 :监听用户在主窗体中的操作 **===================================================**/ public void enevtopration() { order_bt.addmouselistener(new mouselistener() { @override public void mouseclicked(mouseevent e) { // todo auto-generated method stub checkin ck=new checkin("预订登记","images\\checkin_bt.jpg"); ck.cancelbutton(); //登記入住 ck.checkinbutton(1); updateroomstate(); } @override public void mousepressed(mouseevent e) { // todo auto-generated method stub } @override public void mousereleased(mouseevent e) { // todo auto-generated method stub } @override public void mouseentered(mouseevent e) { // todo auto-generated method stub order_bt.setborderpainted(true); } @override public void mouseexited(mouseevent e) { // todo auto-generated method stub order_bt.setborderpainted(false); } }); login_bt.addmouselistener(new mouselistener() { @override public void mouseclicked(mouseevent e) { // todo auto-generated method stub checkin ck=new checkin("入住登记","images\\checkin_bt.jpg"); ck.cancelbutton(); //登記入住 ck.checkinbutton(2); updateroomstate(); } @override public void mousepressed(mouseevent e) { // todo auto-generated method stub } @override public void mousereleased(mouseevent e) { // todo auto-generated method stub } @override public void mouseentered(mouseevent e) { // todo auto-generated method stub login_bt.setborderpainted(true); } @override public void mouseexited(mouseevent e) { // todo auto-generated method stub login_bt.setborderpainted(false); } }); change_bt.addmouselistener(new mouselistener() { @override public void mouseclicked(mouseevent e) { // todo auto-generated method stub changeroom cr=new changeroom("客人换房", "images\\change_bt.jpg"); updateroomstate(); repaint(); } @override public void mousepressed(mouseevent e) { // todo auto-generated method stub } @override public void mousereleased(mouseevent e) { // todo auto-generated method stub } @override public void mouseentered(mouseevent e) { // todo auto-generated method stub change_bt.setborderpainted(true); } @override public void mouseexited(mouseevent e) { // todo auto-generated method stub change_bt.setborderpainted(false); } }); relogin_bt.addmouselistener(new mouselistener() { @override public void mouseclicked(mouseevent e) { // todo auto-generated method stub } @override public void mousepressed(mouseevent e) { // todo auto-generated method stub } @override public void mousereleased(mouseevent e) { // todo auto-generated method stub } @override public void mouseentered(mouseevent e) { // todo auto-generated method stub relogin_bt.setborderpainted(true); } @override public void mouseexited(mouseevent e) { // todo auto-generated method stub relogin_bt.setborderpainted(false); } }); checkout_bt.addmouselistener(new mouselistener() { @override public void mouseclicked(mouseevent e) { // todo auto-generated method stub checkout co=new checkout("客人退房","images\\checkout_bt.jpg"); } @override public void mousepressed(mouseevent e) { // todo auto-generated method stub } @override public void mousereleased(mouseevent e) { // todo auto-generated method stub } @override public void mouseentered(mouseevent e) { // todo auto-generated method stub checkout_bt.setborderpainted(true); } @override public void mouseexited(mouseevent e) { // todo auto-generated method stub checkout_bt.setborderpainted(false); } }); money_bt.addmouselistener(new mouselistener() { @override public void mouseclicked(mouseevent e) { // todo auto-generated method stub } @override public void mousepressed(mouseevent e) { // todo auto-generated method stub } @override public void mousereleased(mouseevent e) { // todo auto-generated method stub } @override public void mouseentered(mouseevent e) { // todo auto-generated method stub money_bt.setborderpainted(true); } @override public void mouseexited(mouseevent e) { // todo auto-generated method stub money_bt.setborderpainted(false); } }); emploer_bt.addmouselistener(new mouselistener() { @override public void mouseclicked(mouseevent e) { // todo auto-generated method stub } @override public void mousepressed(mouseevent e) { // todo auto-generated method stub } @override public void mousereleased(mouseevent e) { // todo auto-generated method stub } @override public void mouseentered(mouseevent e) { // todo auto-generated method stub emploer_bt.setborderpainted(true); } @override public void mouseexited(mouseevent e) { // todo auto-generated method stub emploer_bt.setborderpainted(false); } }); exit_bt.addmouselistener(new mouselistener() { @override public void mouseclicked(mouseevent e) { // todo auto-generated method stub quit(); } @override public void mousepressed(mouseevent e) { // todo auto-generated method stub } @override public void mousereleased(mouseevent e) { // todo auto-generated method stub } @override public void mouseentered(mouseevent e) { // todo auto-generated method stub exit_bt.setborderpainted(true); } @override public void mouseexited(mouseevent e) { // todo auto-generated method stub exit_bt.setborderpainted(false); } }); time_bt.addmouselistener(new mouselistener() { @override public void mouseclicked(mouseevent e) { // todo auto-generated method stub updateroomstate(); } @override public void mousepressed(mouseevent e) { // todo auto-generated method stub } @override public void mousereleased(mouseevent e) { // todo auto-generated method stub } @override public void mouseentered(mouseevent e) { // todo auto-generated method stub time_bt.setborderpainted(true); } @override public void mouseexited(mouseevent e) { // todo auto-generated method stub time_bt.setborderpainted(false); } }); } /**====================================================** * **[## public void run() {}] 线程执行,随着系统改变当前时间 * 参数 :无 * 返回值 :无 * 修饰符 :public * 功能 :使用线程使当前界面时间随着系统改变当 **===================================================**/ public void run() { // todo auto-generated method stub simpledateformat df = new simpledateformat("yyyy-mm-dd hh:mm:ss"); while(true) { statelabel.settext("当前时间为:"+df.format(new date())+" "+"当前登录的用户为:"+id_now+" "+"用户类型为:"+user_type); statelabel.repaint(); this.repaint(); } } /**====================================================** * **[## private void quit() {}] 系统退出 * 参数 :无 * 返回值 :无 * 修饰符 :private * 功能 :关闭系统函数,仅类内使用 **===================================================**/ private void quit() { int flag=0; string msg="你 确 定 要 关 闭 系 统 吗?"; flag=joptionpane.showconfirmdialog(null, msg,"提示",joptionpane.yes_no_option); if(flag==joptionpane.yes_option) { this.setvisible(false); system.exit(0); } return; } /**====================================================** * **[## public void setlabeltext(jlabel jl,int row) {}] 为jlabel设置text * 返回值 :无 * 修饰符 :public * 功能 :为jlabel设置text **===================================================**/ public void setlabeltext(jlabel jl,int row) { try{ jl.settext(integer.tostring(row)+" "+"间"); }catch(exception e){} } /**====================================================** * **[## public void updateroomstate{}] 更新入住状态 * 返回值 :无 * 修饰符 :public * 功能 :更新入住统计情况 **=================================================== * @throws exception **/ public void updateroomstate() { databaseconnect ns=new databaseconnect(); vector<vector> returndata = null; try { setlabeltext(allroom_jl1, ns.getrow("select * from room_table")); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } int tol=1; try { tol = ns.getrow("select * from room_table"); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } try { setlabeltext(empty_jl1, ns.getrow("select * from room_table where roomatate=0")); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } try { setlabeltext(ordered_jl1, ns.getrow("select * from room_table where roomatate=1")); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } try { setlabeltext(isliv_jl1, ns.getrow("select * from room_table where roomatate=2")); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } int isl=1; try { isl = ns.getrow("select * from room_table where roomatate=2"); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } try { setlabeltext(else_jl1, ns.getrow("select * from room_table where roomatate=3")); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } try { staticsstate.settext("入 住 率 :"+ " "+(int)(isl*100/tol)+"%"); returndata=ns.roomoperation(); } catch (exception e) { // todo auto-generated catch block e.printstacktrace(); } for(int i=0;i<returndata.get(0).size();i++) { try{ roomjb.get(i).settext("<html>" +returndata.get(0).get(i)+"<br>"+returndata.get(1).get(i)+"</html>"); }catch(exception e){} try{ if(returndata.get(2).get(i).equals(0)) roomjb.get(i).setforeground(color.green); else if(returndata.get(2).get(i).equals(1)) roomjb.get(i).setforeground(color.pink); else roomjb.get(i).setforeground(color.red); }catch(exception e){} repaint(); } } }
4.登记-换房-退房等父类
/**====================================================** * 项目名 :酒店管理系统 * 模块名 :入住登记窗口与预定登记窗口 * 文件名 :checkin.java * 相关文件 :databaseconnct.java * 实现功能 :入住登记或预定登记并写入数据库 * 函数说明 : * [## public checkin(){}]: * 功能:构造函数 组建入住登记窗口 * * [## public void cancelbutton(){}] * 功能:取消按钮的事件监听处理 * * [## returnbutton{}]: * 功能:返回按钮的事件监听处理 * * [## public void checkinbutton(final int flag){}]: * 功能:确定登记按钮的事件监听处理 * **===================================================**/ package com.databasejdbc; import com.hotelgui.myhotelmaingui; import com.common.*; import java.util.*; import java.awt.*; import java.awt.event.*; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.mouseevent; import java.awt.event.mouselistener; import javax.swing.*; public class checkin extends jframe { jlabel name_jl,gender_jl,id_jl,room_num_jl,room_type_jl,checkin_jl,checkout_jl,tital_jl,tip_jl,price_jl,charge_jl,despoit_jl,tip_jl1,tip_jl2; jbutton checkin_bt,cancel_bt,return_bt; jcombobox<string> gender_jb,room_type_jb; jtextfield name_jf,id_jf; public jtextfield room_num_jf; jtextfield price_jf; jtextfield despoit_jf; jtextfield charge_jf; jtextfield checkin_jf; jtextfield checkout_jf; public static void main(string[] args) { // todo auto-generated method stub checkin ck=new checkin("入住登记","images\\checkin_bt.jpg"); ck.cancelbutton(); //ck.checkinbutton(); } /**====================================================** * **[## public checkin(){}] 构造函数 * 参数 :string str1,string path //界面tital、按钮ui地址 * 返回值 :无 * 修饰符 :public * 功能 :构造函数,初始化入住登记界面 **===================================================**/ public checkin(string str1,string path) { tital_jl=new jlabel(str1); tital_jl.setbounds(300,20, 100, 60); tital_jl.setfont(new font("宋体",font.bold,23)); tip_jl=new jlabel("(以下信息请完整填写)"); tip_jl.setbounds(270,70, 200, 30); tip_jl.setfont(new font("宋体",font.hanging_baseline,14)); name_jl=new jlabel("姓 名"); name_jl.setbounds(150, 170, 60, 30); name_jl.setfont(new font("宋体",font.hanging_baseline,14)); name_jf=new jtextfield(10); name_jf.setbounds(230, 170, 140, 27); id_jl=new jlabel("身份证号"); id_jl.setbounds(450, 170, 60, 30); id_jl.setfont(new font("宋体",font.hanging_baseline,14)); id_jf=new jtextfield(10); id_jf.setbounds(530, 170, 140, 27); gender_jl=new jlabel("性 别"); gender_jl.setbounds(150, 220, 60, 30); gender_jl.setfont(new font("宋体",font.hanging_baseline,14)); gender_jb=new jcombobox<string>(); gender_jb.setbounds(230, 220, 140, 27); gender_jb.additem("男"); gender_jb.additem("女"); room_num_jl=new jlabel("房 间 号"); room_num_jl.setbounds(450, 220, 60, 30); room_num_jl.setfont(new font("宋体",font.hanging_baseline,14)); room_num_jf=new jtextfield(10); room_num_jf.setbounds(530, 220, 140, 27); room_type_jl=new jlabel("房间标准"); room_type_jl.setbounds(150, 270, 60, 30); room_type_jl.setfont(new font("宋体",font.hanging_baseline,14)); room_type_jb=new jcombobox<string>(); room_type_jb.setbounds(230, 270, 140, 27); room_type_jb.additem("商务单间"); room_type_jb.additem("商务标间"); room_type_jb.additem("大床房"); room_type_jb.additem("杂物间"); price_jl=new jlabel("房间价格"); price_jl.setbounds(450, 270, 60, 30); price_jl.setfont(new font("宋体",font.hanging_baseline,14)); price_jf=new jtextfield(10); price_jf.setbounds(530, 270, 140, 27); charge_jl=new jlabel("实际收费"); charge_jl.setbounds(150, 320, 60, 30); charge_jl.setfont(new font("宋体",font.hanging_baseline,14)); charge_jf=new jtextfield(10); charge_jf.setbounds(230, 320, 140, 27); despoit_jl=new jlabel("预收押金"); despoit_jl.setbounds(450, 320, 60, 30); despoit_jl.setfont(new font("宋体",font.hanging_baseline,14)); despoit_jf=new jtextfield(10); despoit_jf.setbounds(530, 320, 140, 27); checkin_jl=new jlabel("入住日期"); tip_jl1=new jlabel("(####-##-##)"); tip_jl1.setbounds(145, 400, 80, 40); checkin_jl.setbounds(150, 370, 60, 40); checkin_jl.setfont(new font("宋体",font.hanging_baseline,14)); checkin_jf=new jtextfield(10); checkin_jf.setbounds(230, 370, 140, 27); checkout_jl=new jlabel("离店日期"); tip_jl2=new jlabel("(####-##-##)"); tip_jl2.setbounds(445, 400, 80, 40); checkout_jl.setbounds(450, 370, 60, 30); checkout_jl.setfont(new font("宋体",font.hanging_baseline,14)); checkout_jf=new jtextfield(10); checkout_jf.setbounds(530, 370, 140, 27); checkin_bt=new jbutton(new imageicon(path)); checkin_bt.setbounds(160, 500, 85, 30); checkin_bt.setopaque(false); cancel_bt=new jbutton(new imageicon("images\\cancel_bt.jpg")); cancel_bt.setbounds(345, 500, 85, 30); cancel_bt.setopaque(false); return_bt=new jbutton(new imageicon("images\\return_bt.jpg")); return_bt.setbounds(530, 500, 85, 30); return_bt.setopaque(false); return_bt.setactioncommand("1"); /**========================================** * 返回按钮注册监听 =========================================*/ return_bt.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { // todo auto-generated method stub if(e.getactioncommand().equals("1")) returnbutton(); } }); this.setlayout(null); this.add(tital_jl); this.add(tip_jl); this.add(name_jl); this.add(name_jf); this.add(id_jl); this.add(gender_jl); this.add(room_num_jl); this.add(room_type_jl); this.add(price_jl); this.add(charge_jl); this.add(despoit_jl); this.add(checkin_jl); this.add(tip_jl1); this.add(checkout_jl); this.add(tip_jl2); this.add(checkin_bt); this.add(cancel_bt); this.add(return_bt); this.add(id_jf); this.add(gender_jb); this.add(room_num_jf); this.add(room_type_jb); this.add(price_jf); this.add(charge_jf); this.add(despoit_jf); this.add(checkin_jf); this.add(checkout_jf); this.settitle(str1); this.seticonimage(new imageicon("images\\入住登记.jpg").getimage()); this.setbounds(250, 80, toolkit.getdefaulttoolkit().getscreensize().width-600,toolkit.getdefaulttoolkit().getscreensize().height-150); this.setresizable(false); this.setvisible(true); } /**====================================================** * **[## public void cancelbutton() {}] 取消按钮操作 * 参数 :无 * 返回值 :无 * 修饰符 :public * 功能 :点击取消按钮清空操作 **===================================================**/ public void cancelbutton() { cancel_bt.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { // todo auto-generated method stub name_jf.settext(""); id_jf.settext(""); room_num_jf.settext(""); charge_jf.settext(""); price_jf.settext(""); despoit_jf.settext(""); checkin_jf.settext(""); checkout_jf.settext(""); gender_jb.setselectedindex(0); room_type_jb.setselectedindex(0); } }); } /**====================================================** * **[## public void returnbutton() {}] 返回按钮操作 * 参数 :无 * 返回值 :无 * 修饰符 :public * 功能 :点击返回按钮返回到主界面,入住登记界面释放 **===================================================**/ public void returnbutton() { this.dispose(); } /**====================================================** * **[## public void checkinbutton(int flag) {}] 确定按钮操作 * 参数 :int flag flag==1,则表示入住登记状态更改 ;flag==2,则表示预订登记状态更改 * 返回值 :无 * 修饰符 :public * 功能 :点击确定按钮进行入住登记输入数据库操作操作 **===================================================**/ public void checkinbutton(final int flag) { checkin_bt.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { // todo auto-generated method stub databaseconnect dc=new databaseconnect(); string str=new string(integer.valueof(room_num_jf.gettext())+",\'"+name_jf.gettext()+"\',\'"+gender_jb.getselecteditem().tostring()+"\',\'"+ id_jf.gettext()+"\',\'"+checkin_jf.gettext()+"\',\'"+checkout_jf.gettext()+"\',"+integer.valueof(charge_jf.gettext())+","+integer.valueof(despoit_jf.gettext())+","+1); try { dc.insertdata("costomer_table", str); } catch (exception e1) { // todo auto-generated catch block e1.printstacktrace(); } string sql="update room_table set roomatate="+flag+" where roomnum="+integer.valueof(room_num_jf.gettext()); try { dc.updatedata(sql); } catch (exception e1) { // todo auto-generated catch block e1.printstacktrace(); } joptionpane.showconfirmdialog(null, "登记成功!","提示",joptionpane.closed_option); int option=0; if(option==joptionpane.yes_option) { try{ myhotelmaingui hm=new myhotelmaingui(1); hm.updateroomstate(); thread th=new thread(hm); th.start(); } catch(exception e1) {} } } }); } }
源代码比较多,就不再上传了,欢迎交流,共同学习进步。项目全部资源需要可从此下载:java实现酒店管理系统
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: java 多线程的三种构建方法