Xhotel
Introduction
TopView工作室一輪考核項目:酒店管理系統(黃鈺朝)
xhotel是一個酒店管理系統,提供查看房間,預訂房間,個人信息管理,房間和酒店信息管理(管理員)等功能後台技術:Java,tomcat,mysql,servlet,jsp
Quick Start
點擊這裡立即體驗
Information
開發者:黃鈺朝聯繫郵箱:[email protected]
項目開發時間:2019-04-04至2019-04-25
版本號:1.0.0
開源許可:Apache License 2.0
運行環境:
- tomcat 9.0.17
- mysql 5.7.29
- jdk 1.8
Features
1.登陸頁面

2.首頁
3.模糊查詢房間

4.留言板

實現的功能
1.用戶模塊
- 註冊功能
- 登陸功能
- 記住登陸狀態,下次自動登陸
- 退出登陸
- 用戶查看個人信息,修改自己的個人信息
- 用戶上傳自己的頭像,修改自己的頭像
- 用戶修改自己的登陸密碼
- 用戶修改自己的支付密碼
- 搜索房間,查看房間信息,預訂房間
- 訂單中可以選擇入住時間,離開時間
- 訂單中可以填寫備註信息
- 用戶查看自己的訂單,取消自己的訂單
- 可以在留言板中留言,查看別人的留言
2.管理員模塊
- 管理員可以添加新用戶
- 管理員可以添加新房間
- 管理員可以修改房間信息,刪除房間
3.超級管理員
代碼特色
安全性
- 使用正則進行輸入檢查,不允許不合法數據進入數據庫
- PrepareStatement防止sql注入
- 過濾標籤注入
- 使用md5加密用戶密碼
- 使用uuid保證全局唯一性
- 空指針檢查
代碼復用性
- 所有Dao都是BaseDao的子類,子類只負責處理對應Service層傳入的數據和書寫部分sql語句,所有數據庫操作都在BaseDao的兩個方法中
- po層使用繼承體系,所有實體都(直接或間接)繼承BaseEntity,存儲數據庫表的id,status,gmt_create,和gmt_modified信息, 並且房間和服務都繼承Product類,房間和服務訂單都繼承Order
- md5加密,獲取uuid,等等功能放到工具類復用
- 重複代碼抽取重構,使用模板方法和策略模式等優化代碼
可維護性
- 代碼註釋:絕大部分代碼都提供了類註釋,方法註釋,屬性註釋
- 接口文檔:使用javadoc註釋,提供API文檔
- 面向接口編程:Dao層和Service層都向上提供接口,與實現類分離
- 封裝性:po,vo層只有getter和setter方法
- 健壯性:絕大多數類都有對應的測試類,並且經過多輪測試
- 規範性: 統一前端請求參數規範,使用枚舉類管理請求參數
- 使用配置文件,數據庫配置,連接池配置,工廠配置全部與代碼分離
- MVC設計模式:servlet中沒有頁面輸出,jsp中沒有java代碼,數據處理都下放到service層
- 幾乎沒有“魔法值”:絕大多數的常量使用枚舉類,極少數使用final變量, 剩下的是前端部分請求參數中的常量
- 避免代碼污染:將CheckException封裝成RuntimeException再向上層拋出,避免各層之間出現耦合
- 單一職責:每個Service都有自己對應的Dao層實現類,每個Service和Dao可以單獨完成自己的功能
封裝數據的入口和出口:
- 前端數據:所有的請求參數通過BeanUtils映射成實體類對象,在此過程統一過濾標籤注入
- 持久化數據:所有的數據庫更新操作和數據庫查詢操作都封裝在BaseDaoImpl的executeUpdate和executeQuery 方法中,只有這兩個方法中向數據庫連接池取連接,資源統一獲取和釋放
- 查詢結果集數據:BaseDaoImpl封裝了所有的數據庫更新操作和大部分的查詢操作,只有少數查詢通過子類傳入sql語句執行,結果集的處理全部由BaseDaoImpl封裝
- 狀態和處理結果:service層返回的轉台碼和處理後的數據,全部放在Result中返回
- 頁面數據:所有返回前端的數據都放在PageVo中返回
性能
設計模式
- 工廠模式
- 單例模式
- 策略模式
- 裝飾模式
- 模板方法
- MVC模式
項目開發日誌:
4月20日更新:構建基本的jsp頁面
4月17日更新:構建房間,訂單等服務
4月14日更新:構建控制層,UserService實現
4月12日更新:構建房間,訂單Dao實現
4月11日更新:構建UserDao
4月10日更新:構建基礎Dao層
4月9日更新:初步構建Dao層
4月8日更新:構建數據庫連接池
4月7日更新:建立項目
4月3日更新:提交項目需求分析(項目命名:Xhotel)
4月1日更新:目前處於需求分析,建立數據模型和業務流程初步設計階段
3月30日更新:剛剛完成CAT工作室的項目,加上QG訓練營有任務,暫未開始動手
準備先好好總結一下CAT項目的經驗,並且把一些遇到的問題理解清楚再動手寫這個項目
License
本軟件僅供交流學習,不得用於商業用途
Copyright 黃鈺朝
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.