賓館客房管理系統(Java+SQL Server)

来源:https://www.cnblogs.com/nuist7bloger/archive/2023/04/17/17326492.html
-Advertisement-
Play Games

源代碼下載鏈接: 一、賓館客房管理系統開發初衷 隨著互聯網技術的迅速發展,電腦技術的普及以及信息化時代的推波助瀾,賓館客房需求的逐漸增大,這也是挑戰了賓館客房管理方面的技術,以前的人工管理方式已經不再適應現在的環境,取而代之的是先進的賓館客房管理系統,提高了賓館的工作效率,為想要入住賓館的人提供更 ...


源代碼下載鏈接:

一、賓館客房管理系統開發初衷

  隨著互聯網技術的迅速發展,電腦技術的普及以及信息化時代的推波助瀾,賓館客房需求的逐漸增大,這也是挑戰了賓館客房管理方面的技術,以前的人工管理方式已經不再適應現在的環境,取而代之的是先進的賓館客房管理系統,提高了賓館的工作效率,為想要入住賓館的人提供更好的服務。賓館客房管理工作面對大量顧客的私人信息,引入信息化的管理方式可以事半功倍,極大的提高管理效率。我們開發賓館客房管理系統就是採用現代化的信息管理方式代替手工管理方式,提高賓館管理工作效率,做到信息的規範管理,科學統計和快速查詢,讓賓館體驗達到最佳,方便廣大人民群眾出行住宿。

二、系統應該具備的功能

①顧客基本信息的輸入,包括顧客編號、顧客姓名、房號和聯繫方式等。

②顧客基本信息的查詢、修改,包括顧客編號、顧客姓名、房號和聯繫方式等。

③客房類別標準的制定、類別信息的輸入,包括房號、是否空置、房型和價格等。

④顧客類別信息的查詢、修改,包括顧客編號、顧客姓名等。

⑤房源信息信息的更改,包括房號、是否空置、房型、房子歸還日期和房價。

⑥房源庫存信息的查詢,修改,包括房號、是否空置、房型、房子歸還日期和房價等。

⑦顧客入住信息的輸入,包括顧客編號、房號、退房日期。

⑧顧客入住信息的查詢、修改,包括顧客編號、顧客姓名、房號和聯繫方式等。

⑨退房信息的輸入,包括顧客編號、顧客姓名、房號和退房日期。   

⑩退房信息的查詢和修改,包括顧客編號、顧客姓名、房號和退房日期等。

三、系統具體實現

首先映入眼帘的是程式登錄系統,這裡內部設置了兩個賬戶,一個是管理員賬戶,許可權是管理員許可權(增刪查改)。還有一個是來賓用戶,只可以查看。採用Java Swing 的模板創建,用戶界面還是十分友好的。登錄界面如圖6-1 所示。該部分偽代碼如下:

public static void main(String[] args) {

        Login log = new Login();

log.setIconImage(Toolkit.getDefaultToolkit().createImage("img1.jpg"));// 登錄界面標題logo圖片

        log.setTitle("賓館客房管理系統");

        log.setLocation(600, 300); // 方框出現在屏幕的位置

        log.setSize(750, 548); // 調整登錄框大小

        log.setResizable(false);// 設置為不可調整視窗大小

        log.setVisible(true); // 是否可視化

    }

    class Enter implements ActionListener {

        @SuppressWarnings("deprecation")

        public void actionPerformed(ActionEvent e)// 重寫事件反映

        {

             Login log = new Login();// 持有對象引用

             if ((f1.getText()).equals("nuist") && (f2.getText()).equals("123")) {

//               JOptionPane.showMessageDialog(null, "登錄成功!用戶許可權是adimistrator");// 彈出要求用戶提供值或向其發出通知的標準對話

                 power = "adminstrator";// 賦予管理員許可權

                 Qframe frame = new Qframe();// 驗證成功後就建對象調用構造方法連接資料庫

    frame.setIconImage(Toolkit.getDefaultToolkit().createImage(

                         "img1.jpg"));// 進入管理系統的logo圖片

                 frame.setLocation(400, 200);

                 frame.setSize(500, 285);

                 frame.setResizable(false);

                 frame.setVisible(true);

                 dispose();// 釋放此圖形的上文以及它使用的所有系統資源,即實現關閉彈出新視窗後關閉上個視窗

             } else if ((f1.getText()).equals("admin")

                     && (f2.getText()).equals("123")) {

                 JOptionPane.showMessageDialog(null, "登錄成功!用戶許可權是user");// 彈出要求用戶提供值或向其發出通知的標準對話框

                 power = "adminstrator";

                 Qframe frame = new Qframe();

                 frame.setIconImage(Toolkit.getDefaultToolkit().createImage(

                         "img1.jpg"));

                 frame.setLocation(400, 200);

                 frame.setSize(750, 543);// 500/285

                 frame.setResizable(false);

                 frame.setVisible(true);

                 dispose();

             } else

                 JOptionPane.showMessageDialog(null, "登錄失敗,請重新登錄!");

        }

    }   }

然後,就是登錄後的主界面,有五大板塊,分別是:增加、刪除、修改、查詢和顯示訂房表。最後還有一個退出程式的按鈕。如圖6-2所示主界面。該部分偽代碼如下:

JPanel contentPane;

    BorderLayout borderLayout1 = new BorderLayout(5, 10);// 構造邊框佈局,水平間距5,垂直間距10

 

    public static final TextArea result = new TextArea();//註意此result不是結果集,是展示表的文本區

 

    public Qframe() {

        contentPane = (JPanel) this.getContentPane();// 返回此窗體的 contentPane 對象

        contentPane.setLayout(borderLayout1);

        this.setTitle("賓館客房管理系統");// 設置視窗標題

 

        addWindowListener(new WindowAdapter() {// 監聽視窗處理事件 按X就結束程式

             public void windowClosing(WindowEvent e) {

                 System.exit(0);

             }

        });

 

        result.setEditable(false);// 設置信息顯示文本框區域為不可編輯

        result.setBackground(Color.WHITE);// 設置文本背景為白色

        JPanel option = new JPanel();// 選擇功能按鈕容器

 

        final Button zenjia = new Button("增加");// 增加按鈕

        option.add(zenjia, BorderLayout.NORTH);// 將組件置於其顯示區域的頂部,併在水平方向上居中。

        zenjia.addActionListener(new ActionListener() {// 監聽增加按鈕事件

             @Override

             public void actionPerformed(ActionEvent e) {

 

                 if (e.getSource() == zenjia) {

                     Adddialog add1 = new Adddialog();// 調用增加視窗類

                     add1.setVisible(true);// 顯示視窗

                 }

 

             }

        });

 

下方的空白是文本區,可以顯示訂單表中的信息,只需要點擊一下顯示訂單表按鈕即可顯示。如圖6-3所示。該部分偽代碼如下:

    try {

                     stmt = sin.prepareStatement("select * from 訂房表 where 客戶編號=?");

                     stmt.setObject(1, sno);

                     rs = stmt.executeQuery();

                     int count = 0;//查詢不到記為0,查詢得到記為1

                     while (rs.next()) {

                         String msg = rs.getString("客戶編號") + "\t"

                                  + rs.getString("房號") + "\t"

                                  + rs.getString("退房日期") + "\n";

                         JOptionPane.showMessageDialog(null, msg, "查詢結果:",

                                  JOptionPane.NO_OPTION);

                         dispose();

                         count = 1;//查詢得到就記count為1,

                     }

                     if (count == 0)//查詢不到就顯示無該商品號

                         JOptionPane.showMessageDialog(null, "無該客戶", "查詢結果:",

                                  JOptionPane.NO_OPTION);

                     // stmt.close();

                     // con.close();

                 } catch (SQLException h) {

                     // TODO Auto-generated catch block

                     h.printStackTrace();

             }

 
最後,演示一下添加顧客功能,對應的顧客表、房源表和訂單表在後端資料庫都會發生相應改變。如圖6-4和6-5所示。該部分偽代碼如下:

public final static void insert(Connection con, Object obj[]) {

        PreparedStatement stmt = null;

        PreparedStatement stmt2 = null;

        PreparedStatement stmt3 = null;

        try {

             stmt = con.prepareStatement("insert into 訂房表(客戶編號,房號,退房日期) values(?,?,?)"

                     + "insert into 客戶表(客戶編號,房號,退房日期,購房日期,客戶姓名,性別,所購房型,聯繫方式) values(?,?,?,?,?,?,?,?)"

                     + "update 房源表 set 是否空置 ='否',退房日期 =? where 房號 =?");

             // SQL 語句被預編譯並存儲在 PreparedStatement 對象中,包含多個 '?' IN 參數占位符的 SQL 語句

             stmt.setString(1, obj[0].toString());// 將指定參數設置為傳入的字元串

             stmt.setString(2, obj[1].toString());

             stmt.setString(3, obj[2].toString());

             ........

             stmt.execute(); // 執行sql語句

 

        } catch (SQLException e) {

             JOptionPane.showMessageDialog(null, "失敗", "操作提示!",

                     JOptionPane.NO_OPTION);          

        }

      }

源代碼下載鏈接:






您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 整合 Husky + Lint-staged + Commitlint + Commitizen + cz-git 並配置的 pre-commit 和 commit-msg 兩個鉤子分別實現 Git 提交前代碼檢測和 Git 提交信息規範。 ...
  • 收集一波常見的加速NPM包的CDN,發現有些還是挺好用的,基本上可以替代unpkg、jsdelivr,用來做博客或者網站載入NPM使用還是可以的。 經典老牌的CDN加速 unpkg.com cdn.jsdelivr.net fastly.jsdelivr.net 使用方法:直接進官網,搜NPM包名使 ...
  • 前言: 產品背景介紹 我所做的這個項目,剛開始是沒有移動端需求的,等PC端做完了上線使用了幾個月後,突然有一天產品經理找到我說是要做一個在PC端添加一個快速註冊入口,用手機微信掃二位碼進入移動端註冊頁面,用戶註冊。 所以本次需求就是在PC端添加一個tool-tip氣泡型彈出二維碼,再開發一個移動端註 ...
  • 簡介 迭代器模式(Iterator Pattern),是一種結構型設計模式。給數據對象構建一套按順序訪問集合對象元素的方式,而不需要知道數據對象的底層表示。 迭代器模式是與集合共存的,我們只要實現一個集合,就需要同時提供這個集合的迭代器,就像Java中的Collection,List、Set、Map ...
  • 今天學習C語言學習了三個部分: 第一個部分是軟體環境的搭建,如何搭建一個項目 使用工具:visual studio 2010 搭建過程:新建項目、配置設置(主要是解決運行後一閃而過的問題) 第二部分是編寫一個簡單的C語言程式代碼 #include<stdio.h> //引入頭文件 io指的是輸入與輸 ...
  • 前言 在SpringBoot框架中,我們使用最多的是Tomcat,這是SpringBoot預設的容器技術,而且是內嵌式的Tomcat。同時,SpringBoot也支持Undertow容器,我們可以很方便的用Undertow替換Tomcat,而Undertow的性能和記憶體使用方面都優於Tomcat,那 ...
  • package.json 備忘清單 如果你以前用過 Node.js,則可能會遇到 package.json 文件。它是一個 JSON 文件,位於項目的根目錄中。你的 package.json 包含關於項目的重要信息。它包含關於項目的使人類可讀元數據(如項目名稱和說明)以及功能元數據(如程式包版本號和 ...
  • # 請先使用命令 pip install sxtwl 安裝依賴庫後,再執行以下腳本 import sxtwl ymc = ["正", "二", "三", "四", "五", "六", "七", "八", "九", "十" ,"冬", "臘"] rmc = ["初一", "初二", "初三", &qu ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...