Xhotel
소개
Topview Studio의 첫 번째 평가 프로젝트 : 호텔 관리 시스템 (Huang Yuchao)
Xhotel은 전망대, 예약 실, 개인 정보 관리, 객실 및 호텔 정보 관리 (관리자) 및 기타 기능과 같은 백엔드 기술을 제공하는 호텔 관리 시스템입니다 : Java, Tomcat, MySQL, Servlet, JSP
빠른 시작
지금 경험하려면 여기를 클릭하십시오
정보
개발자 : Huang Yuchao 연락처 이메일 : [email protected]
프로젝트 개발 시간 : 2019-04-04 ~ 2019-04-25
버전 번호 : 1.0.0
오픈 소스 라이센스 : Apache 라이센스 2.0
실행 환경 :
- Tomcat 9.0.17
- MySQL 5.7.29
- JDK 1.8
특징
1. 로그인 페이지

2. 홈페이지
3. 퍼지 쿼리 룸

4. 게시판

구현 된 기능
1. 사용자 모듈
- 등록 기능
- 로그인 기능
- 로그인 상태를 기억하고 다음에 자동으로 로그인하십시오.
- 로그 아웃하십시오
- 사용자는 개인 정보를보고 자신의 개인 정보를 수정합니다.
- 사용자는 자신의 아바타를 업로드하고 자신의 아바타를 수정합니다.
- 사용자는 로그인 비밀번호를 수정합니다
- 사용자는 결제 비밀번호를 수정합니다
- 객실을 검색하고, 객실 정보, 책실을보십시오
- 순서대로 체크인 시간 및 출발 시간을 선택할 수 있습니다.
- 순서대로 비고 정보를 작성할 수 있습니다.
- 사용자는 자신의 주문을보고 자신의 주문을 취소합니다.
- 다른 사람들의 의견을 볼 수 있도록 게시판에 메시지를 남길 수 있습니다.
2. 관리자 모듈
- 관리자는 새로운 사용자를 추가 할 수 있습니다
- 관리자는 새로운 방을 추가 할 수 있습니다
- 관리자는 객실 정보를 수정하고 방을 삭제할 수 있습니다.
3. 슈퍼 관리자
- 호텔을 추가, 삭제, 확인 및 수정하십시오 (인터페이스 디스플레이 없음, DAO 수준으로 만 완료됨)
코드 기능
보안
- 정기 입력 검사를 사용하고 불법 데이터가 데이터베이스를 입력하도록 허용하지 않습니다.
- 준비는 SQL 주입을 방지합니다
- 필터 레이블 주입
- MD5를 사용하여 사용자 비밀번호를 암호화합니다
- UUID를 사용하여 글로벌 고유성을 보장하십시오
- 널 포인터 점검
코드 재사용 성
- 모든 Dao는 Basedao의 서브 클래스입니다. 서브 클래스는 해당 서비스 계층에서 전달 된 데이터를 처리하고 일부 SQL 문을 작성하는 데 책임이 있습니다. 모든 데이터베이스 작업은 Basionao의 두 가지 방법에 있습니다.
- PO 층은 상속 시스템을 사용합니다. 모든 엔티티는 (직접 또는 간접적으로) Baseentity를 상속 받고, 데이터베이스 테이블의 ID, 상태, GMT_Create 및 GMT_Modified 정보를 저장하고 객실과 서비스 모두 제품 클래스를 상속 받고 객실과 서비스 주문 모두 주문을 상속합니다.
- MD5 암호화, UUID 얻기 및 기타 기능을 도구 클래스에 넣어 재사용
- 코드 추출 및 재구성을 반복하고 템플릿 메소드 및 정책 패턴을 사용하여 코드 최적화.
유지 가능성
- 코드 댓글 : 대부분의 코드는 클래스 주석, 메소드 주석 및 속성 주석을 제공합니다.
- 인터페이스 문서 : Javadoc 주석을 사용하여 API 문서를 제공합니다
- 인터페이스 지향 프로그래밍 : DAO 계층과 서비스 계층은 구현 클래스와 별개의 상향 인터페이스를 제공합니다.
- 캡슐화 : PO, VO 레이어 만 getter 및 setter 방법이 있습니다.
- 견고성 : 대부분의 클래스에는 해당 테스트 클래스가 있으며 여러 라운드의 테스트를 거쳤습니다.
- 표준화 : 프론트 엔드 요청 매개 변수 사양을 통합하고 열거 클래스를 사용하여 요청 매개 변수를 관리합니다.
- 구성 파일, 데이터베이스 구성, 연결 풀 구성 및 공장 구성 사용은 모두 코드와 분리됩니다.
- MVC 설계 패턴 : 서블릿에 페이지 출력이없고 JSP에 Java 코드가 없으며 데이터 처리가 모두 서비스 계층에 배치됩니다.
- 거의 "매직 값"없음 : 대부분의 상수는 열거 클래스를 사용하고 최종 변수를 사용하는 사람은 거의 없으며 나머지는 프론트 엔드 부분 요청 매개 변수의 상수입니다.
- 코드 오염을 피하십시오 : checkexception을 runtimeexception으로 캡슐화하고 층 간의 커플 링을 피하기 위해 상단 층에 던져
- 단일 책임 : 각 서비스에는 자체 해당 DAO 계층 구현 클래스가 있으며 각 서비스 및 DAO는 자체 기능을 별도로 완료 할 수 있습니다.
데이터 입력 및 종료 캡슐화 :
- 프론트 엔드 데이터 : 모든 요청 매개 변수는 Beanutils를 통해 엔티티 클래스 객체에 매핑 되며이 프로세스에서 레이블 주입은 균일하게 필터링됩니다.
- 영구 데이터 : 모든 데이터베이스 업데이트 작업 및 데이터베이스 쿼리 작업은 BasionaOimpl의 ExecuteUpdate 및 ExecuteQuery 메소드에 캡슐화됩니다. 이 두 가지 방법 만 데이터베이스 연결 풀에 연결할 수 있으며 리소스를 균일하게 얻고 릴리스 할 수 있습니다.
- 쿼리 결과 세트 데이터 : Basionaoimpl은 모든 데이터베이스 업데이트 작업 및 대부분의 쿼리 작업을 캡슐화합니다. 서브 클래스 및 SQL 문을 통해 몇 가지 쿼리 만 실행됩니다. 결과 세트의 처리는 모두 basedaoimpl에 의해 캡슐화됩니다.
- 상태 및 처리 결과 : 서비스 계층에서 반환 한 모든 턴테이블 코드 및 처리 된 데이터가 결과에서 반환됩니다.
- 페이지 데이터 : 프론트 엔드로 반환 된 모든 데이터는 pagevo에서 반환됩니다.
성능
- 데이터베이스 액세스 성능을 향상시키기 위해 필기 데이터베이스 연결 풀
디자인 패턴
- 공장 모델
- 싱글 톤 모드
- 정책 모드
- 장식 모드
- 템플릿 메소드
- MVC 모드
프로젝트 개발 로그 :
4 월 20 일 업데이트 : 기본 JSP 페이지를 작성하십시오
4 월 17 일 업데이트 : 건물 객실, 주문 및 기타 서비스
4 월 14 일에 업데이트 : 제어 계층 구축, Userservice 구현
4 월 12 일에 업데이트 : 건축실, 주문이 구현됩니다
4 월 11 일 업데이트 : userdao 빌드
4 월 10 일에 업데이트 : 기본 레이어 구축
4 월 9 일에 업데이트 : DAO 계층의 예비 건설
4 월 8 일 업데이트 : 데이터베이스 연결 풀 구축
4 월 7 일 업데이트 : 프로젝트 구축
4 월 3 일에 업데이트 : 프로젝트 요구 사항 분석 제출 (프로젝트 이름 지정 : Xhotel)
4 월 1 일에 업데이트 : 현재 수요 분석 단계에서 데이터 모델 설정 및 비즈니스 프로세스의 예비 설계
3 월 30 일에 업데이트 : Cat Studio의 프로젝트가 방금 완료되었으며 QG Bootcamp에는 작업이있어 아직 시작하지 않았습니다.
CAT 프로젝트의 경험을 먼저 요약하고 프로젝트를 작성하기 전에 발생하는 몇 가지 문제를 이해할 준비를하십시오.
특허
이 소프트웨어는 커뮤니케이션 및 학습만을위한 것이며 상업적 목적으로 사용되지 않을 수 있습니다.
저작권 Huang Yuchao
Apache 라이센스, 버전 2.0 ( "라이센스")에 따라 라이센스가 부여되었습니다. 라이센스를 준수하는 것 외에는이 파일을 사용할 수 없습니다. 라이센스 사본을 얻을 수 있습니다
http://www.apache.org/licenses/LICENSE-2.0
해당 법률에 의해 요구되거나 서면에 동의하지 않는 한, 라이센스에 따라 배포 된 소프트웨어는 명시 적 또는 묵시적 보증 또는 조건없이 "그대로"기준으로 배포됩니다. 라이센스에 따른 특정 언어 통치 권한 및 제한 사항에 대한 라이센스를 참조하십시오.