基于JavaSwing設(shè)計和實(shí)現(xiàn)的酒店管理系統(tǒng)
前言:
項(xiàng)目是使用Java swing開發(fā),可實(shí)現(xiàn)基礎(chǔ)數(shù)據(jù)維護(hù)用戶登錄、系統(tǒng)首頁酒店信息管理、主要模塊是開房管理、退房管理、房間信息管理、顧客信息管理等功能。界面設(shè)計比較簡介、適合作為Java課設(shè)設(shè)計以及學(xué)習(xí)技術(shù)使用。獲取源碼
引言
在信息高度發(fā)達(dá)的今天, 酒店業(yè)務(wù)涉及的各個工作環(huán)節(jié)已不再僅僅是傳統(tǒng) 的住宿、 結(jié)算業(yè)務(wù),而是更廣、更全面的服務(wù)性行業(yè)代表。酒店賓館作為一個服務(wù)性行業(yè),從客 房的營銷即客人的預(yù)定開始, 到入住登記直到最后退房結(jié)賬, 整個過程應(yīng)該能夠體現(xiàn)以 賓客為中心,提供快捷方便服務(wù),給賓客感受一種顧客至上的享受,提高管理水平,簡 化各種復(fù)雜操作, 在最短時間內(nèi)完成酒店業(yè)務(wù)規(guī)范操作, 這樣才能令旅客舒適難忘。 因 此,采用全新的計算機(jī)管理系統(tǒng), 將成為提高酒店的管理效率, 改善服務(wù)水準(zhǔn)的手段之 一。系統(tǒng)從滿足客戶的需求角度出發(fā), 實(shí)現(xiàn)了酒店管理的基本流程。 系統(tǒng)的主要功能包 登錄、重置、查看 設(shè)置等等。用戶入住酒店的時候所要等待的時間就會大大的減少, 操作員能夠很方便的 對用戶信息的登記和對房間狀態(tài)的的管理, 從而實(shí)現(xiàn)了酒店管理系統(tǒng)高效、 準(zhǔn)確的特點(diǎn)。

主要技術(shù)和工具:
eclipse+JDK1.8+Navicat +swing +mysql
功能截圖:
登錄管理:
用戶輸入賬號密碼以及驗(yàn)證碼進(jìn)行登錄驗(yàn)證

酒店管理信息:
開房:
用戶錄入開房相關(guān)信息、 提交的時候后臺會驗(yàn)證數(shù)據(jù)的數(shù)據(jù)是否正確、房間是否被占用等情況

退房:
輸入身份證信息和房間號進(jìn)行驗(yàn)證正確后完成退房

房間信息:
房間信息管理管理頁面可以查看所有的房間信息、房間標(biāo)準(zhǔn)以及狀態(tài)等、也可以更具房間類型來查詢房間信息。

顧客信息:

關(guān)鍵代碼:
主入口:
public class LoginFrame extends JFrame {
private JPanel contentPane;
private JTextField textField;
private JPasswordField passwordField;
private JTextField textField_1;
private CaptchaUtils cpt;
private BufferedImage image1;
private String code;
private JLabel label_6;
//創(chuàng)建deskservice對象
private DeskService deskService=new DeskServiceImpl();
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LoginFrame frame = new LoginFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public LoginFrame() {
setBackground(Color.GREEN);
setTitle("KING'S LANDING");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(500, 250, 624, 524);
contentPane = new JPanel(){
protected void paintComponent(Graphics g){
super.paintComponent(g);
ImageIcon images=new ImageIcon("images/624524.jpg");
g.drawImage(images.getImage(),0,0,null);
}
};
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
JLabel label_1 = new JLabel("\u7528\u6237\u540D");
label_1.setBackground(Color.WHITE);
label_1.setForeground(Color.WHITE);
label_1.setFont(new Font("微軟雅黑", Font.PLAIN, 15));
label_1.setIcon(new ImageIcon(LoginFrame.class.getResource("/images/yonghu.png")));
textField = new JTextField();
textField.setBackground(Color.WHITE);
textField.setColumns(10);
label_6=new JLabel();
label_6.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
cpt=new CaptchaUtils();
//獲取畫布
image1=cpt.getBuffImg();
//獲取隨機(jī)數(shù)
code=cpt.getCode();
ImageIcon icon=new ImageIcon(image1,"jpeg");
label_6.setIcon(icon);
}
});
/**
* 驗(yàn)證碼
*/
cpt=new CaptchaUtils();
//獲取畫布
image1=cpt.getBuffImg();
//獲取隨機(jī)數(shù)
code=cpt.getCode();
ImageIcon icon=new ImageIcon(image1,"jpeg");
label_6.setIcon(icon);
JLabel label_2 = new JLabel("\u5BC6\u7801");
label_2.setForeground(Color.WHITE);
label_2.setFont(new Font("微軟雅黑", Font.PLAIN, 15));
label_2.setIcon(new ImageIcon(LoginFrame.class.getResource("/images/mima.png")));
JButton button = new JButton("\u767B\u5F55");
//設(shè)置按鈕的透明
button.setContentAreaFilled(false);
//給按鈕上的字設(shè)置顏色
button.setForeground(Color.WHITE);
button.setBackground(Color.WHITE);
button.setFont(new Font("微軟雅黑", Font.PLAIN, 20));
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//獲取輸入的用戶名和密碼
String name=textField.getText();
char[]array=passwordField.getPassword();
String password=new String(array);
System.out.println("name:"+name);
System.out.println("password:"+password);
//用戶輸入的驗(yàn)證碼
String codeFrame=textField_1.getText();
if(!(code.equalsIgnoreCase((codeFrame)))){
JOptionPane.showMessageDialog(null, "驗(yàn)證碼錯誤,請重新輸入!");
return;
}
DeskDaoImpl deskDao=new DeskDaoImpl();
Desk desk=new Desk(name,password);
int code=deskDao.LoginDesk(desk);
//判斷是否是管理員登錄
if(code==1){
//登錄成功
new HomeFrame().setVisible(true);
//符合 則跳轉(zhuǎn)到管理員的后臺管理界面
dispose();
return ;
}
else{
boolean bool=deskService.LoginDeskService(desk);
if(!bool){
JOptionPane.showMessageDialog(null, "賬號或密碼錯誤,請重新輸入!");
return;
}
//登錄成功
new HomeFrame().setVisible(true);
dispose();
}
});
}
開房入?。?/h3>
@Override
//開房監(jiān)聽事件
public void mouseClicked(MouseEvent e) {
//獲取輸入的房間號
int houseId=Integer.parseInt(textField.getText());
//獲取輸入的姓名
String name=p_name.getText();
//獲取輸入的年齡
int age=Integer.parseInt(p_age.getText());
//獲取輸入的入住天數(shù)
int day=Integer.parseInt(p_day.getText());
//獲取輸入的身份證號
String id=p_id.getText();
//獲取輸入的性別
String sex=p_sex.getText();
//獲取房間類型
String type=p_type.getText();
//封裝到Guest實(shí)體中
Guest guest=new Guest();
guest.setG_roomid(houseId);
guest.setG_name(name);
guest.setG_age(age);
guest.setG_days(day);
guest.setG_id(id);
guest.setG_sex(sex);
//封裝到Room實(shí)體中
Room room=new Room();
room.setR_id(houseId);
//判斷年齡是否合理
if(!(age>0&&age<100)){
JOptionPane.showMessageDialog(null, "年齡輸入不合理,請重新輸入!");
return;
}
//判斷性別是否合理
if(!(sex.equals("男")||sex.equals("女"))){
JOptionPane.showMessageDialog(null, "性別只能是男或女,請重新輸入!");
return;
}
//入住天數(shù)不能小于1
if(!(day>0)){
JOptionPane.showMessageDialog(null, "入住天數(shù)不能小于1天,請重新輸入!");
return;
}
boolean bool=rs.OpenRoom(room);
if(!bool){
//房間已滿則開房失敗
JOptionPane.showMessageDialog(null, "該房間已滿,請更換房間!");
return;
}
if(!(type.equals("標(biāo)準(zhǔn)房")||type.equals("套房")||type.equals("雙人房")||type.equals("豪華套房"))){
JOptionPane.showMessageDialog(null, "輸入的信息有誤,開房失敗!");
return;
}
boolean bool1=gsi.AddGuest(guest);
if(bool1){
//身份證不符合格式也失敗
JOptionPane.showMessageDialog(null, "身份證不符合格式,開房失敗!");
return;
}
}
});
@Override
//開房監(jiān)聽事件
public void mouseClicked(MouseEvent e) {
//獲取輸入的房間號
int houseId=Integer.parseInt(textField.getText());
//獲取輸入的姓名
String name=p_name.getText();
//獲取輸入的年齡
int age=Integer.parseInt(p_age.getText());
//獲取輸入的入住天數(shù)
int day=Integer.parseInt(p_day.getText());
//獲取輸入的身份證號
String id=p_id.getText();
//獲取輸入的性別
String sex=p_sex.getText();
//獲取房間類型
String type=p_type.getText();
//封裝到Guest實(shí)體中
Guest guest=new Guest();
guest.setG_roomid(houseId);
guest.setG_name(name);
guest.setG_age(age);
guest.setG_days(day);
guest.setG_id(id);
guest.setG_sex(sex);
//封裝到Room實(shí)體中
Room room=new Room();
room.setR_id(houseId);
//判斷年齡是否合理
if(!(age>0&&age<100)){
JOptionPane.showMessageDialog(null, "年齡輸入不合理,請重新輸入!");
return;
}
//判斷性別是否合理
if(!(sex.equals("男")||sex.equals("女"))){
JOptionPane.showMessageDialog(null, "性別只能是男或女,請重新輸入!");
return;
}
//入住天數(shù)不能小于1
if(!(day>0)){
JOptionPane.showMessageDialog(null, "入住天數(shù)不能小于1天,請重新輸入!");
return;
}
boolean bool=rs.OpenRoom(room);
if(!bool){
//房間已滿則開房失敗
JOptionPane.showMessageDialog(null, "該房間已滿,請更換房間!");
return;
}
if(!(type.equals("標(biāo)準(zhǔn)房")||type.equals("套房")||type.equals("雙人房")||type.equals("豪華套房"))){
JOptionPane.showMessageDialog(null, "輸入的信息有誤,開房失敗!");
return;
}
boolean bool1=gsi.AddGuest(guest);
if(bool1){
//身份證不符合格式也失敗
JOptionPane.showMessageDialog(null, "身份證不符合格式,開房失敗!");
return;
}
}
});
數(shù)據(jù)庫設(shè)計:
用戶表:
CREATE TABLE `NewTable` ( `d_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '前臺id' , `d_name` varchar(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '姓名' , `d_password` varchar(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '密碼' , INDEX `d_id` (`d_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARACTER SET=latin1 COLLATE=latin1_swedish_ci AUTO_INCREMENT=112 ROW_FORMAT=COMPACT ;
入住信息表:
CREATE TABLE `NewTable` ( `g_roomid` int(11) NULL DEFAULT NULL COMMENT '房間id' , `g_id` varchar(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '顧客編號' , `g_name` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '姓名' , `g_sex` varchar(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT '性別' , `g_age` int(11) NULL DEFAULT NULL COMMENT '年齡' , `g_days` int(11) NULL DEFAULT NULL COMMENT '入住天數(shù)' , `g_time` datetime NULL DEFAULT NULL COMMENT '入住日期' ) ENGINE=InnoDB DEFAULT CHARACTER SET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=COMPACT ;
房間信息表 :
CREATE TABLE `NewTable` ( `r_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'roo id' , `r_type` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT 'room 類型' , `r_price` double NULL DEFAULT NULL COMMENT 'room價格' , `r_local` varchar(100) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT 'room位置' , `r_state` varchar(10) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL COMMENT 'room狀態(tài)' , INDEX `r_id` (`r_id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARACTER SET=latin1 COLLATE=latin1_swedish_ci AUTO_INCREMENT=106 ROW_FORMAT=COMPACT ;
ps:項(xiàng)目來于網(wǎng)絡(luò)、作者整理優(yōu)化測試、若有侵權(quán)聯(lián)系作者刪除
總結(jié):
通過這次課程設(shè)計。我學(xué)到了許多令我受益匪淺的知識。感覺java的界面設(shè)計和 mfc差不多。只是java沒有可視化的界面做起來太累了。其他主要是類和對象的問題。實(shí)現(xiàn)起來還是挺簡單的。綜合了根據(jù)中小型星級酒店的實(shí)際情況的特點(diǎn), 雖然用戶界面比較一般,但操作使用還是方便。符合酒店管理的基本流程。但由于時間倉促,一些不足之處還很多、比如美化和部分功能設(shè)計的都比較簡單、但作為學(xué)生學(xué)習(xí)參考以及課程設(shè)計還是不錯的選擇。
到此這篇關(guān)于基于JavaSwing設(shè)計和實(shí)現(xiàn)的酒店管理系統(tǒng)的文章就介紹到這了,更多相關(guān)JavaSwing管理系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java代碼實(shí)現(xiàn)酒店管理系統(tǒng)
- Java實(shí)現(xiàn)簡單酒店管理系統(tǒng)
- Java實(shí)戰(zhàn)之酒店人事管理系統(tǒng)的實(shí)現(xiàn)
- Java 實(shí)戰(zhàn)練手項(xiàng)目之酒店管理系統(tǒng)的實(shí)現(xiàn)流程
- Java實(shí)現(xiàn)簡單的酒店管理系統(tǒng)
- java實(shí)現(xiàn)酒店管理系統(tǒng)
- Java swing實(shí)現(xiàn)酒店管理系統(tǒng)
- Java實(shí)現(xiàn)酒店客房管理系統(tǒng)
- Java代碼實(shí)現(xiàn)簡單酒店管理系統(tǒng)
相關(guān)文章
java并發(fā)編程關(guān)鍵字volatile保證可見性不保證原子性詳解
這篇文章主要為大家介紹了java并發(fā)編程關(guān)鍵字volatile保證可見性不保證原子性詳解,文中附含詳細(xì)示例說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-02-02
SpringBoot 如何整合 ES 實(shí)現(xiàn) CRUD 操作
這篇文章主要介紹了SpringBoot 如何整合 ES 實(shí)現(xiàn) CRUD 操作,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-10-10
SpringMVC攔截器和異常處理器使用示例超詳細(xì)講解
攔截器(Interceptor)是一種動態(tài)攔截方法調(diào)用的機(jī)制,在SpringMVC中動態(tài)攔截控制器方法的執(zhí)行。本文將詳細(xì)講講SpringMVC中攔截器參數(shù)及攔截器鏈配置,感興趣的可以嘗試一下2022-09-09
Spring Boot中整合PageHelper實(shí)現(xiàn)分頁功能詳細(xì)步驟
在Spring Boot項(xiàng)目中整合PageHelper并實(shí)現(xiàn)分頁查詢功能的全部步驟,通過以上配置和代碼,我們可以輕松地實(shí)現(xiàn)數(shù)據(jù)庫分頁查詢,提高了開發(fā)效率并改善了用戶體驗(yàn),感興趣的朋友跟隨小編一起看看吧2024-05-05
SpringMVC實(shí)現(xiàn)賬號只能在一處登陸
這篇文章主要為大家詳細(xì)介紹了SpringMVC如何實(shí)現(xiàn)賬號只能在一處登陸,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
SpringBoot整合jasypt進(jìn)行重要數(shù)據(jù)加密的操作代碼
Jasypt(Java?Simplified?Encryption)是一個專注于簡化Java加密操作的開源工具,它提供了一種簡單而強(qiáng)大的方式來處理數(shù)據(jù)的加密和解密,使開發(fā)者能夠輕松地保護(hù)應(yīng)用程序中的敏感信息,本文給大家介紹了SpringBoot整合jasypt進(jìn)行重要數(shù)據(jù)加密,需要的朋友可以參考下2024-05-05
Java中Comparable與Comparator的區(qū)別解析
這篇文章主要介紹了Java中Comparable與Comparator的區(qū)別解析,實(shí)現(xiàn)Comparable接口,重寫compareTo方法,一般在實(shí)體類定義的時候就可以選擇實(shí)現(xiàn)該接口,提供一個默認(rèn)的排序方式,供Arrays.sort和Collections.sort使用,需要的朋友可以參考下2024-01-01
SpringBoot開發(fā)存儲服務(wù)器實(shí)現(xiàn)過程詳解
這篇文章主要為大家介紹了SpringBoot開發(fā)存儲服務(wù)器實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12

