ssm 전자책방 경영시스템 졸업 프로젝트 설계 및 구현 - 소스코드 080050

목차

요약

1 소개

1.1 주제 선정 배경

1.2 연구의 의의

1.3 논문 구성 및 장 배치

2 전자서점 경영시스템의 시스템 분석 

2.1 타당성 분석

2.2 시스템 흐름 분석

2.2.1 데이터 흐름

3.3.2 비즈니스 프로세스

2.3 시스템 기능 분석

2.3.1 데이터 추가 프로세스

2.3.2 데이터 수정 프로세스

2.3.3 데이터 삭제 프로세스

2.4 시스템 사용 사례 분석

2.5 이 장의 요약

3 전자서점 운영시스템의 전체 설계

3.1 시스템 아키텍처 설계

3.2 시스템 기능 모듈 설계

3.2.1 전체 기능 모듈 설계

3.2.2 사용자 모듈 설계

3.2.3 댓글 관리 모듈 설계

3.2.4 신규분류 관리모듈 설계

3.2.5 도서 순위 관리 모듈 설계

3.3 데이터베이스 설계

3.3.1 데이터베이스 개념 구조 설계

3.3.2 데이터베이스 논리 구조 설계

3.4 이 장의 요약

4 전자서점 운영시스템 상세설계 및 구현 

4.1 사용자 기능 모듈

4.1.1 첫 페이지 인터페이스

4.1.2 사용자 등록 인터페이스

4.1.3 사용자 로그인 인터페이스

4.1.4 코멘트 인터페이스

4.1.5 게시판 인터페이스

4.1.6 새로운 세부 정보 인터페이스

4.2 판매자 기능 모듈

4.2.1 콘텐츠 관리 인터페이스

4.2.2 주문 목록 인터페이스

4.3 관리자 기능 모듈

4.3.1 사이트 관리 인터페이스

4.3.2 사용자 관리 인터페이스

4.3.3 콘텐츠 관리 인터페이스

4.3.4 추가 관리 인터페이스

5 시스템 테스트

5.1 시스템 테스트의 목적

5.2 시스템 테스트 케이스

5.3 시스템 테스트 결과

결론적으로

참조

감사합니다  

요약

정보화 사회에서는 표적 정보 획득 채널이 필요하지만 채널의 확장은 기본적으로 사람들이 추구하는 방향이다. 가장 극복하기 어려운 기술 주제. 전자서점 경영시스템과 같은 문제점을 겨냥하여 전자서점 경영시스템을 연구 분석하고 이를 해결하기 위해 전자서점 경영시스템을 개발 및 설계한다.

전자 서점 관리 시스템의 주요 기능 모듈은 사용자 관리, 소설 센터, 소설 분류, 도서 순위 및 소설 기록을 포함합니다.객체 지향 개발 모드는 소프트웨어 개발 및 하드웨어 구축에 채택되어 실제 요구를 잘 충족시킬 수 있습니다. 해당 소프트웨어 구축 및 프로그램 코딩 작업을 완료하고 MySQL을 배경 데이터의 주요 저장 장치로 채택하고 SSM 프레임워크, JAVA 기술, Ajax 기술을 채택하여 비즈니스 시스템을 코딩 및 개발하고 시스템의 모든 기능을 실현했습니다. 이 보고서는 먼저 연구의 배경, 기능 및 의의를 분석하여 연구 작업의 합리성을 위한 토대를 마련합니다. 전자서점 경영시스템의 다양한 요구사항과 기술적 문제점을 분석하여 시스템의 필요성과 기술적 타당성을 입증한 후 디자인 시스템에서 사용되어야 하는 기술적인 소프트웨어와 디자인 아이디어에 대한 기본적인 소개를 하고 최종적으로 전자책방 운영시스템 구축 및 운영에 활용합니다.

주제어 : SSM 기술, MYSQL, 전자서점 운영시스템

추상적인

정보화 사회에서는 표적화된 정보 접근이 필요하지만 접근의 확대는 기본적으로 사람들의 노력의 방향이다. 관점의 편차로 인해 사람들은 종종 다른 유형의 정보를 얻을 수 있으며 이는 기술이 극복하기 가장 어려운 주제이기도 합니다. 본 논문은 전자책방 운영시스템의 문제점에 착안하여 전자책방 운영시스템을 연구 분석하고 이를 해결하기 위한 전자책방 운영시스템을 개발 및 설계한다.

전자책방 관리 시스템의 주요 기능 모듈은 사용자 관리, 소설 센터, 소설 분류, 도서 순위 및 소설 기록을 포함합니다. 객체 지향 개발 모드는 소프트웨어 개발 및 하드웨어 구축에 채택되어 실제 사용 요구를 잘 충족하고 해당 소프트웨어 구축 및 프로그램 코딩을 개선하며 MySQL을 배경 데이터의 주요 저장 단위로 채택하고 SSM 프레임 워크, Java를 채택합니다. 기술 Ajax 기술은 비즈니스 시스템을 인코딩하고 개발하며 시스템의 모든 기능을 구현합니다. 이 보고서는 먼저 연구의 합리성에 대한 토대를 마련하는 연구의 배경, 기능 및 의의를 분석합니다. 본 논문은 전자책방 운영시스템의 다양한 요구사항과 기술적 문제점을 분석하고,

키워드 :  SSM 기술; MYSQL; 전자 서점 관리 시스템

1 소개

1.1 주제 선정 배경

최근 몇 년 동안 WEB(네트워크) 기술은 초기 정적 HTML(정적 웹 페이지)에서 동적 웹 페이지 기술인 DHTML, CGI를 거쳐 스크립팅 언어와 ASP(Active Server Pages)로 발전했습니다. WEB 기술은 더 이상 많은 수의 정보 서비스를 제공하는 데 국한되지 않고 상호 작용과 풍부한 정보 콘텐츠가 있는 페이지를 네트워크 기술의 새로운 즐겨찾기로 만듭니다. WEB 브라우징은 이제 Windows 프로그램을 실행하는 것과 동일한 느낌과 작동을 가집니다. 인터넷 기술의 발달과 함께 데이터베이스 정보 관리 등 강력한 서비스를 사용자에게 제공하는 운영 플랫폼이 되었습니다.

가장 빠르게 성장하는 컴퓨터 분야 중 하나인 데이터베이스 기술은 일련의 고유한 이론을 형성했으며 사람들의 업무와 생활에 널리 사용됩니다. 데이터베이스 기술과 웹사이트의 결합은 오늘날 웹 기술의 핫스팟입니다. 데이터베이스의 지원으로 웹 페이지의 기능을 확장할 수 있고 인터랙티브 페이지를 편리하게 디자인할 수 있으며 강력한 배경 관리 시스템을 구축할 수 있으며 웹 사이트 업데이트 및 유지 관리에 큰 편의성을 제공할 수 있습니다.

1.2 연구의 의의

그러나 관련 국내 제도의 설계 및 시행은 아직 탐색 단계에 있다. 이러한 문제점을 해결하기 위해 B/S 방식 기반의 전자서점 운영 시스템 설계 방안을 제안하고, 그 방안에 포함된 데이터 저장, 데이터 처리 등의 핵심 기술을 정교화하고 이를 테스트 분석한 결과 다음과 같다. 제안된 방식은 전자책방 관리의 기능적 요구사항을 더 잘 충족할 수 있고, 원래 시스템의 운영에 영향을 미치지 않으면서 관리 효율성을 효과적으로 개선할 수 있으며, 관리자의 노동 강도를 줄이고, 확장성과 유지보수성이 우수합니다. 다양한 규모와 유형의 전자도서관 요구 사항을 충족하고 향후 유사한 시스템 개발을 위한 특정 참고 자료를 제공합니다. (5) 대학 도서관을 예로 웹 기반 전자자원 탐색 서비스 기술을 도입하고 구체적인 실행 방안을 제시한다. 먼저 사용자의 요구에 따라 시스템의 기능 모듈을 구분하는 원리와 방법을 결정한 다음 전체 시스템 아키텍처와 각 모듈의 구성을 상세하게 분석하고 최종적으로 데이터베이스를 통해 시스템의 각 주요 하위 모듈의 설계를 완료합니다. 액세스 인터페이스.

이 프로젝트에서 수행한 작업은 이론과 실제를 결합한 탐색 연구 주제이며 연구 결과는 중국 대학 도서관의 정보화 수준을 촉진하는 데 긍정적인 영향을 미칩니다. 실제 적용의 관점에서 본 논문은 시스템 구축 과정을 A. 시스템 전체 설계, B. 데이터 저장 구조 설계, C. 데이터 처리 체계 설계, D. 인터페이스 설계의 4단계로 구분한다. 그중 전체 시스템 계획에는 시스템 구조 프레임 워크, 비즈니스 프로세스 흐름, 시스템 기능 설계 및 데이터베이스 테이블 설계 등이 포함되며 파트 A는 B/S 3 계층 아키텍처를 채택하고 레이어 B는 My SQL 데이터베이스를 배경 데이터베이스 시스템으로 사용합니다. C 계층은 MySQL 데이터베이스를 배경 데이터베이스 시스템으로 사용하며 프로그래밍에는 JAVA 언어를 사용하고 응용 프로그램 작성에는 Java Script 스크립트 언어를 사용하여 독자가 전자책 정보를 쉽게 읽고 열람할 수 있도록 합니다. 본 논문의 혁신은 다음과 같다. A. 기존 전자도서관 외부 내비게이션 시스템을 모바일 인터넷 기술과 결합하여 대출, 조회, 추천, 통계를 통합한 개인화 전자책 검색 플랫폼 세트를 설계 및 개발한다. , 완전하고 실용적인 디지털 캠퍼스 서비스 플랫폼이 될 수 있도록 B. 디지털 캠퍼스의 새로운 개념, 즉 지식 시스템에 따라 학교의 모든 교육 자원을 구성하여 통일된 전체를 형성하고 공유를 실현하는 새로운 개념을 제안합니다. 교육 자원을 제공하고 교육 공정성의 이점을 진정으로 활용합니다. 따라서 이 주제에 대한 연구는 이론적인 의의뿐만 아니라 실천적인 의의도 있다.

1.3 논문 구성 및 장 배치

논문은 추상적인 감사의 글과 참고문헌을 제외하고, 본문도 웹사이트의 요구 사항을 분석하고, 일반적인 디자인과 구현된 기능을 설명하고, 최종적으로 일부 커미셔닝 기록을 나열하는 것을 레이어로 배열할 것입니다. 논문의 주요 구조는 다음과 같습니다. 다음과 같이:

1 장 소개. 첫 번째 장에서는 주로 주제 연구의 배경, 시스템 개발의 현황 및 연구 내용과 본 논문의 주요 작업을 소개한다.

2장: 시스템 요구 사항 분석. 2장에서는 주로 시스템 사용자 및 기능 측면에서 요구 분석을 수행한다.

3장: 시스템 설계. 세 번째 장은 주로 시스템 프레임, 시스템 기능 모듈, 데이터베이스에 대한 기능 설계를 수행합니다.

4장: 시스템 실현. 네 번째 장에서는 주로 시스템 프레임워크의 구성과 시스템 인터페이스의 구현을 소개합니다.

5장: 시스템 테스팅. 5장에서는 주로 시스템의 일부 인터페이스를 테스트하고 주요 기능을 테스트합니다.

6장: 요약.

2 전자책방 운영시스템 분석

시스템 분석은 프로젝트를 개발하기 위한 전제 조건으로, 시스템 분석을 통해 시스템의 주요 사용자의 기본 요구 사항을 잘 이해할 수 있으며 이는 프로젝트 개발의 이유이기도 합니다. 또한 타당성 분석은 일반적으로 기술적 타당성, 경제성 등을 포함하여 시스템 개발에 대해 수행됩니다. 타당성 분석은 프로젝트의 전반적인 관점에서의 분석이기도 합니다. 그런 다음 프로젝트의 특정 요구 사항을 분석하고 분석 수단은 일반적으로 사용자의 사용 사례 다이어그램을 통해 실현됩니다. 다음은 자세한 소개입니다.

2.1 타당성 분석

(1) 경제성:

프로젝트에 사용되는 대부분의 도구는 현재 대중적인 오픈 소스이며 무료이므로 개발 초기 단계에서 프로젝트에 사용되는 자금이 크게 줄어들고 소프트웨어 개발은 ​​자금의 영향을 받지 않습니다. 프로젝트 시작 기간이므로 여전히 경제적으로 실현 가능합니다. 사용자의 요구를 충족시키기 위해 최소한의 비용을 사용하십시오. 인건비 및 장비 비용을 위한 자금을 절약하십시오. 페이퍼리스(Paperless)와 고효율(High Efficiency)의 길을 더욱 더 나아가게 될 것입니다.

따라서 경제적 생존 가능성에 대해서는 의문의 여지가 없습니다.

(2) 운영 타당성:

본 프로젝트의 디자인은 이 모드에서 웹 사이트의 몇 가지 개발 사례를 참조하고 운영 인터페이스를 분석하며 많은 사례를 함께 결합하고 사람 중심의 단순화된 운영을 강조하여 기본적인 컴퓨터 지식을 가진 사람들이 이 프로젝트를 운영할 수 있도록 합니다.

따라서 작동에는 문제가 없습니다.

(3) 기술적 타당성:

기술적 타당성은 프레임워크 구축의 타당성, 더 나은 기술이 등장할 때 시스템 기술 업그레이드에 대한 수용 가능성, 개발 시간 대비 비용의 비율을 의미합니다.

기존 Java 기술은 모든 전자 상거래 시스템 구축에 적합할 수 있습니다. 이 전자책방 관리 시스템을 개발할 때 Java+MYSQL을 사용하여 전체 프로그램을 실행했습니다.

결론적으로 기술적인 타당성에는 문제가 없다.

(4) 법적 타당성:

개발자의 입장에서 Java와 MYSQL은 오픈 소스이며 온라인에서 무료이며 지적 재산권 측면에서 법적 분쟁이 없을 것입니다.

사용자 사용의 관점에서 시스템에서 밀수품이 판매되지 않는 한 시스템에서 조약 계약이 이루어지고 불법 지불이 제거됩니다.

요컨대, 법적 타당성에 대해서는 의문의 여지가 없습니다.

2.2 시스템 흐름 분석

비즈니스 프로세스는 특정 기호와 선을 사용하여 사용자가 시스템을 사용하는 프로세스를 나타내는 것으로, 시스템 분석을 수행할 때 비즈니스 프로세스는 개발자가 비즈니스를 더 잘 이해하고 오류를 발견하고 시스템을 개선하는 데 도움이 될 수 있습니다.

2.2.1 데이터 추가 프로세스

사용자가 성공적으로 시스템에 로그인한 데이터를 추가하는 작업을 실현할 수 있습니다.데이터를 추가하는 횟수는 특정하며 시스템에서 생성되며 사용자가 임의로 채울 수 없습니다.숫자를 제외하고 사용자는 다른 추가 정보는 스스로 작성하고, 채워진 정보는 시스템에 의해 검증되고 적법한 것으로 검증됩니다. 통과는 데이터 추가가 성공했음을 의미하고, 반대로 추가가 성공하지 않았음을 의미합니다. 그림 2-1 데이터를 추가합니다.

그림 2-1 데이터 추가 순서도

2.2.2 데이터 수정 프로세스

데이터 수정 프로세스는 위에서 설명한 데이터 추가 프로세스와 유사합니다( 그림 2-2 참조 ).

그림 2-2 데이터 수정 흐름도

2.2.3 데이터 삭제 프로세스

시스템에 불필요한 데이터가 있는 경우 관련 관리자 도 이러한 데이터를 삭제할 수 있습니다.그림 2-3 데이터 삭제 흐름도입니다.

그림 2-3 데이터 삭제 흐름도

2.3 시스템 기능 분석

2.3.1 기능 분석

전자책방 관리 시스템의 역할에 따라 사용자 관리 모듈과 관리자 관리 모듈 두 부분으로 나누었습니다.

사용자 관리 모듈:

(1) 이용자 등록 및 로그인 : 이용자는 전자책방 운영시스템에 회원가입을 하고 로그인하여 개인정보 추가, 삭제, 수정, 비밀번호 변경 등 개인정보 확인을 합니다.

(3) 게시판: 홈페이지의 내비게이션 바에 " 게시판 뉴스 " 메뉴가 표시됩니다 . 입력을 클릭하면 백그라운드에서 모든 관리자가 공개한 게시판 정보가 표시됩니다.

(4) 소설 정보: 홈페이지의 내비게이션 바에 " 소설 정보 " 메뉴가 표시됩니다 . 입력을 클릭 하면 에서백그라운드 관리자가 공개한 모든 소설 정보가 표시됩니다 . 예를 들어, 다음에 이 정보를 더 빨리 찾고 싶다면 북마크하고 댓글을 달 수도 있습니다.

(5) Novel Center 정보: 홈페이지의 내비게이션 바에 " Novel Center Information" 메뉴가 표시됩니다. 입력을 클릭하면 백그라운드에서 관리자가 공개한 모든 Novel 센터가 표시됩니다 . 우리는 다음을 선택합니다. 소설 에 대해 알고 정보를 위해 소설 센터의 정보를 보려면 좋아요 + 북마크를 할 수 있습니다 .

(6) 내 즐겨찾기: "내"에서 "내 즐겨찾기" 정보를 보고 관리할 수 있으며 즐겨찾기를 볼 수 있으며 즐겨찾기 정보를 삭제할 수도 있습니다.

( 7 ) Novel Center : 사용자는 백그라운드의 " Novel Center " 인터페이스에서 Novel Center 정보를 제출할 수 있으며 사서는 " Novel Center " 인터페이스 에서 볼 수 있습니다 .

관리자 관리 모듈:

(1) 로그인: 관리자의 계정은 데이터 테이블에서 직접 설정 및 생성되며 등록이 필요하지 않습니다.

(2) 사이트 관리: "사이트 관리" 메뉴를 클릭하면 캐러셀 지도 + 게시판 2개의 하위 메뉴가 나타나며 이 두 모듈을 추가, 삭제, 수정 및 확인할 수 있습니다.

(3) 사용자 관리: "사용자 관리" 메뉴를 클릭하면 관리자 + 일반 사용자 + 사서의 세 가지 하위 메뉴가 나타나며 이 세 가지 모듈을 추가, 삭제, 수정 및 조회할 수 있습니다.

(4) 컨텐츠 관리 : "컨텐츠 관리" 메뉴를 클릭하면 신규 정보 + 신규 정보 분류 목록 2개의 하위 메뉴가 나타나며, 접수처에서 이용자가 제출한 신규 정보를 관리할 수 있습니다. 프런트 데스크에 표시된 소설을 동시에 관리합니다. 정보 분류 정보가 추가, 삭제, 수정 및 확인됩니다.

( 5 ) 추가관리 : "더보기" 메뉴를 클릭하면 소설센터 + 소설분류 + 도서순위 + 소설기록 4 개의 하위 메뉴가 나타나 소설 센터를 추가, 삭제, 수정, 확인할 수 있습니다. 사서가 제출한 소설의 분류를 관리 하고 사용자 사서가 제출한 도서 순위 + 소설 기록 의 검토 및 관리를 실현합니다.

2.3.2 비기능 분석

전자책방 관리시스템의 보안성, 신뢰성, 성능, 확장성 등 전자책방 관리시스템의 비기능적 요구사항 구체적으로 다음 표 3-1과 같이 나타낼 수 있다.

3- 1 전자서점 운영시스템 비기능 요구사항 목록

안전

주로 전자서점관리시스템 데이터베이스 설치를 말하며, 데이터베이스 사용 및 비밀번호 설정은 규범을 준수해야 합니다.

신뢰할 수 있음

신뢰성이란 전자서점관리시스템이 사용자의 지시에 따라 설치 및 운영될 수 있음을 의미하며, 테스트 후 신뢰성은 90% 이상이다.

성능

성능은 전자책방 경영시스템이 시장을 선점하기 위한 필요조건이므로 성능이 좋을수록 좋다.

확장성

예를 들어, 데이터베이스는 시스템의 비기능적 요구 사항을 보장하기 위해 인터페이스 사용과 같은 여러 속성을 예약합니다.

사용의 용이성

사용자는 전자 서점 관리 시스템의 페이지 표시 내용을 따라 작동하기만 하면 됩니다.

유지 보수성

전자서점 관리시스템 개발의 유지보수성은 매우 중요하며, 테스트 후 유지보수성에 문제가 없음

2.4 시스템 사용 사례 분석

2.3 기능 분석을 통해 전자책방 관리 시스템의 사용 사례 다이어그램을 얻습니다.

그림 2-3은 사용자 역할의 예를 보여줍니다.

                                         

그림 2-3 전자책방 관리 시스템 사용자 역할 사용 사례 다이어그램

웹 배경 관리의 관리자는 전체 전자책방 관리 시스템의 모든 데이터 정보를 유지합니다. 그림 2-4는 관리자 역할의 예를 보여줍니다.

그림 2-4 전자 책방 관리 시스템 관리자 역할 사용 사례 다이어그램

2.5 이 장의 요약

본 장에서는 전자책방 운영 시스템의 타당성 분석, 프로세스 분석, 기능적 요구사항 분석, 시스템 활용 사례 분석을 통해 전자책방 운영 시스템 전체에서 구현될 기능을 주로 결정한다. 동시에 전자서점 운영시스템의 코드 구현 및 테스트를 위한 표준도 제공한다.

3 전자서점 운영시스템의 전체 설계

본 장에서는 전자서점 운영 시스템의 기능적 모듈 설계와 데이터베이스 시스템 설계를 주로 다룬다 .

3.1 시스템 아키텍처 설계

전자책방 운영시스템은 구조상 UI(Pressentation Layer), BLL(Business Logic Layer), DL(Data Layer)의 3계층으로 구분된다.

                                          

그림 3-1 전자책방 운영 시스템의 시스템 구조 설계도

프리젠테이션 계층(UI): UI 계층이라고도 하며 주로 전자책 서점 관리 시스템의 UI 상호작용 기능을 완성합니다. 체계. UI 인터페이스 디자인은 또한 좋은 호환성을 달성하기 위해 다양한 버전의 전자 서점 관리 시스템과 다양한 크기 해상도에 적응해야 합니다. UI 상호 작용 기능에 대한 요구 사항은 합리적이며 사용자는 상호 작용 작업을 수행할 때 일관된 상호 작용 결과를 얻어야 하며 프레젠테이션 계층과 비즈니스 논리 계층 간의 양호한 연결이 필요합니다.

BLL(Business Logic Layer): 주로 전자책 서점 관리 시스템의 데이터 처리 기능을 완성합니다. 프리젠테이션 계층에서 사용자가 전송한 데이터는 비즈니스 로직 계층을 통해 처리되어 데이터 계층으로 전달되고, 데이터 계층에서 시스템이 읽은 데이터는 비즈니스 로직 계층을 통해 처리되어 프리젠테이션 계층으로 전달된다.

데이터 계층(DL): 이 전자책방 관리 시스템의 데이터는 서버 측의 mysql 데이터베이스에 있기 때문에 서비스 계층에 속하는 부분은 비즈니스 로직 계층에 직접 통합될 수 있으므로 주로 전자서점 관리 시스템의 데이터 저장 및 관리 기능을 완성하는 데이터 계층의 데이터베이스.

3.2 시스템 기능 모듈 설계

3.2.1 전체 기능 모듈 디자인

앞 장에서는 시스템의 기능적 요구사항과 비기능적 요구사항을 중심으로 분석하였고, 요구사항에 따라 전자책방 운영시스템에서의 활용 사례를 분석하였다. 다음 단계는 전자책 서점 관리 시스템의 아키텍처, 주요 기능 및 데이터베이스 설계를 시작하는 것입니다. 전자책방 운영 시스템은 앞 장의 요구사항 분석을 기반으로 얻어지며 전체적인 디자인 모듈 다이어그램은 그림 3-2와 같다.

     

그림 3-2 전자서점 운영시스템의 기능 모듈도

3.2.2 사용자 모듈 설계

백그라운드 매니저는 프런트에 등록된 사용자를 추가, 삭제, 수정, 확인할 수 있으며 사용자 모듈의 구조도는 다음과 같습니다.

그림 3-3 회원 사용자 모듈의 구조도

3.2.3 댓글 관리 모듈 설계

전자책방 운영시스템은 소통을 위한 개방형 플랫폼으로, 회원 이용자는 플랫폼에서 소통하여 이용자 간 상호작용을 높일 수 있다. 그러나 동시에 메시지 내용을 더 잘 규제하고 관리자에게 부적절한 댓글을 삭제하는 기능을 제공하기 위해 메시지 관리 모듈을 설계해야 합니다.구체적인 구조 다이어그램은 다음과 같습니다.

그림 3-4 주석 모듈 구조 다이어그램

3.2.4 신규분류 관리모듈 설계

전자 서점 관리 시스템은 많은 소설 분류 정보를 저장해야 하며 모듈 기능 구조, 구체적인 구조 다이어그램은 다음과 같습니다.

그림 3-5 신규 분류 모듈의 구조도

3.2.5 도서 순위 관리 모듈 설계

전자책방 관리 시스템 의 가장 중요한 기능 중 하나 는 순위 입니다 .그 모듈 기능 구조, 구체적인 구조 다이어그램은 다음과 같습니다.

그림 3-5 도서 순위 모듈 구조도

3.3 데이터베이스 설계

데이터베이스 설계는 일반적으로 요구사항 분석, 개념 모델 설계, 데이터베이스 테이블 구축의 세 가지 주요 프로세스로 구성되며 요구 사항 분석은 이전 장에서 설명했으며 개념 모델 설계는 개념 모델과 논리 구조 설계의 두 부분으로 구성됩니다.

3.3.1 데이터베이스의 개념적 구조 설계

다음은 전체 전자책방 관리 시스템의 주요 데이터베이스 테이블의 ER 개체 관계도이다.

그림 3-6 전자책방 운영시스템 전체 ER 관계도

전자서점 관리 시스템의 전체 데이터베이스 ER 관계도에 따르면 전자서점 관리 시스템은 많은 ER 다이어그램이 필요하다는 결론을 내릴 수 있으며, 여기에 몇 가지 주요 데이터베이스 ER 모델 다이어그램이 나열되어 있습니다.

그림 3-7 일반 사용자를 위한 ER 관계도

그림 3-8 신기록의 ER 관계도

그림 3-9 신규 센터의 ER 관계도

그림 3-10 도서 순위 ER 관계도

3.3.2 데이터베이스 논리 구조 설계

앞 장의 전자책방 관리 시스템의 전체 ER 관계도에서 많은 데이터 테이블을 생성해야 한다는 결론을 내릴 수 있다. 여기서는 주로 몇 가지 주요 데이터베이스 테이블 구조 디자인을 나열합니다.

ordinary_users 테이블:

이름

유형

길이

null이 아님

기본 키

메모

plain_users_id

정수

11

공통 사용자 ID

사용자 이름

varchar

64

아니요

사용자 이름

user_gender

varchar

64

아니요

아니요

사용자 성별

user_age

varchar

64

아니요

아니요

사용자 연령

검사_상태

varchar

16

아니요

승인 상태

추천하다

정수

11

아니요

지능형 추천

user_id

정수

11

아니요

사용자 아이디

생성 시간

날짜 시간

0

아니요

생성 시간

업데이트 시간

타임스탬프

0

아니요

업데이트 시간

novel_record 테이블:

이름

유형

길이

null이 아님

기본 키

메모

novel_record_id

정수

11

소설 레코드 ID

소설_번호

varchar

64

아니요

아니요

소설 번호

소설 이름

varchar

64

아니요

아니요

소설 제목

소설 유형

varchar

64

아니요

아니요

소설 장르

클릭률

정수

11

아니요

아니요

클릭률

다운로드 속도

정수

11

아니요

아니요

다운로드 속도

추천하다

정수

11

아니요

지능형 추천

생성 시간

날짜 시간

0

아니요

생성 시간

업데이트 시간

타임스탬프

0

아니요

업데이트 시간

소설_분류表:

이름

유형

길이

null이 아님

기본 키

메모

소설_분류_ID

정수

11

소설 카테고리 ID

소설 유형

varchar

64

아니요

아니요

소설 장르

추천하다

정수

11

아니요

지능형 추천

생성 시간

날짜 시간

0

아니요

생성 시간

업데이트 시간

타임스탬프

0

아니요

업데이트 시간

novel_center 테이블:

이름

유형

길이

null이 아님

기본 키

메모

novel_center_id

정수

11

소설 센터 ID

소설_번호

varchar

64

아니요

아니요

소설 번호

소설 이름

varchar

64

아니요

아니요

소설 제목

소설 유형

varchar

64

아니요

아니요

소설 장르

소설 작가

varchar

64

아니요

아니요

소설가

소설_장

varchar

64

아니요

아니요

소설 장

선반 시간

날짜

0

아니요

아니요

추가된 시간

소설_세부

varchar

255

아니요

아니요

소설 세부 정보

cover_picture

varchar

255

아니요

아니요

표지 그림

Introduction_to_the_novel

긴 문장

0

아니요

아니요

소설 소개

안타

정수

11

아니요

안타

칭찬_len

정수

11

아니요

좋아요

추천하다

정수

11

아니요

지능형 추천

생성 시간

날짜 시간

0

아니요

생성 시간

업데이트 시간

타임스탬프

0

아니요

업데이트 시간

book_ranking 테이블:

이름

유형

길이

null이 아님

기본 키

메모

book_ranking_id

정수

11

도서 순위 ID

소설_번호

varchar

64

아니요

아니요

소설 번호

소설 이름

varchar

64

아니요

아니요

소설 제목

소설 유형

varchar

64

아니요

아니요

소설 장르

소설 작가

varchar

64

아니요

아니요

소설가

소설_장

varchar

64

아니요

아니요

소설 장

선반 시간

날짜

0

아니요

아니요

추가된 시간

소설_세부

varchar

255

아니요

아니요

소설 세부 정보

cover_picture

varchar

255

아니요

아니요

표지 그림

클릭률

정수

11

아니요

아니요

클릭률

다운로드 속도

정수

11

아니요

아니요

다운로드 속도

Introduction_to_the_novel

긴 문장

0

아니요

아니요

소설 소개

안타

정수

11

아니요

안타

칭찬_len

정수

11

아니요

좋아요

추천하다

정수

11

아니요

지능형 추천

생성 시간

날짜 시간

0

아니요

생성 시간

업데이트 시간

타임스탬프

0

아니요

업데이트 시간

코멘트 테이블:

이름

유형

길이

null이 아님

기본 키

메모

comment_id

정수

11

댓글 ID

user_id

정수

11

아니요

검토자 ID

reply_to_id

정수

11

아니요

댓글 ID에 회신

콘텐츠

긴 문장

0

아니요

아니요

콘텐츠

별명

varchar

255

아니요

아니요

닉네임

화신

varchar

255

아니요

아니요

아바타 주소

생성 시간

타임스탬프

0

아니요

생성 시간

업데이트 시간

타임스탬프

0

아니요

업데이트 시간

소스 테이블

varchar

255

아니요

아니요

소스 테이블

source_field

varchar

255

아니요

아니요

소스 필드

source_id

정수

10

아니요

소스 ID

3.4 이 장의 요약

전체 전자서점 운영시스템의 수요분석은 주로 전반적인 시스템 아키텍쳐와 기능모듈의 설계에 중점을 두고 있으며, 데이터베이스 시스템 설계는 ER 모델과 데이터베이스 로직 시스템 설계를 수립함으로써 완성된다.

4 전자서점 운영시스템 상세설계 및 구현

전자서점 운영 시스템의 세부 설계 및 구현은 주로 기존 전자 서점 운영 시스템의 요구사항 분석과 전자 서점 운영 시스템의 전반적인 설계에 따라 페이지를 설계하고 비즈니스 로직을 구현하는 것이다. 주로 전자서점 관리 시스템 인터페이스 구현과 비즈니스 로직 구현을 소개한다.

4.1 사용자 기능 모듈

4. 1.1 전면 페이지 인터페이스

当进入电子书店管理系统的时候,首先映入眼帘的是系统的导航栏,下面是轮播图以及系统内容,其主界面展示如下图4-1所示。

图4-1 前台首页界面图

4.1.2 用户注册界面

不是电子书店管理系统中正式会员的是可以在线进行注册的,如果你没有本电子书店管理系统的账号的话,添加“注册”,当填写上自己的账号+密码+确认密码+昵称+邮箱+手机号等后再点击“注册”按钮后将会先验证输入的有没有空数据,再次验证密码和确认密码是否是一样的,最后验证输入的账户名和数据库表中已经注册的账户名是否重复,只有都验证没问题后即可会员注册成功。其用用户注册界面展示如下图4-2所示。

图4-2 前台用户注册界面图

注册逻辑关键代码如下所示。

/**

     * 注册

     * @return

     */

    @PostMapping("register")

    public Map<String, Object> signUp(HttpServletRequest request) throws IOException {

        // 查询用户

        Map<String, String> query = new HashMap<>();

        Map<String,Object> map = service.readBody(request.getReader());

        query.put("username",String.valueOf(map.get("username")));

        List list = service.selectBaseList(service.select(query, new HashMap<>()));

        if (list.size()>0){

            return error(30000, "用户已存在");

        }

        map.put("password",service.encryption(String.valueOf(map.get("password"))));

        service.insert(map);

        return success(1);

}

    public Map<String,Object> readBody(BufferedReader reader){

        BufferedReader br = null;

        StringBuilder sb = new StringBuilder("");

        try{

            br = reader;

            String str;

            while ((str = br.readLine()) != null){

                sb.append(str);

            }

            br.close();

            String json = sb.toString();

            return JSONObject.parseObject(json, Map.class);

        }catch (IOException e){

            e.printStackTrace();

        }finally{

            if (null != br){

                try{

                    br.close();

                }catch (IOException e){

                    e.printStackTrace();

                }

            }

        }

        return null;

    }

    public void insert(Map<String,Object> body){

        E entity = JSON.parseObject(JSON.toJSONString(body),eClass);

        baseMapper.insert(entity);

        log.info("[{}] - 插入操作:{}",entity);

}

4.1.3 用户登录界面

电子书店管理系统中的前台上注册后的会员是可以通过自己的账户名和密码进行登录的,当会员输入完整的自己的账户名和密码信息并点击“登录”按钮后,将会首先验证输入的有没有空数据,再次验证输入的账户名+密码和数据库中当前保存的用户信息是否一致,只有在一致后将会登录成功并自动跳转到电子书店管理系统的首页中;否则将会提示相应错误信息,用户登录界面如下图4-3所示。

图4-3用户登录界面图

登录系统主要代码如下。

/**

     * 登录

     * @param data

     * @param httpServletRequest

     * @return

     */

    @PostMapping("login")

    public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {

        log.info("[执行登录接口]");

        String username = data.get("username");

        String email = data.get("email");

        String phone = data.get("phone");

        String password = data.get("password");

        List resultList = null;

        QueryWrapper wrapper = new QueryWrapper<User>();

        Map<String, String> map = new HashMap<>();

        if(username != null && "".equals(username) == false){

            map.put("username", username);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(email != null && "".equals(email) == false){

            map.put("email", email);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }

        else if(phone != null && "".equals(phone) == false){

            map.put("phone", phone);

            resultList = service.selectBaseList(service.select(map, new HashMap<>()));

        }else{

            return error(30000, "账号或密码不能为空");

        }

        if (resultList == null || password == null) {

            return error(30000, "账号或密码不能为空");

        }

        //判断是否有这个用户

        if (resultList.size()<=0){

            return error(30000,"用户不存在");

        }

        User byUsername = (User) resultList.get(0);

        Map<String, String> groupMap = new HashMap<>();

        groupMap.put("name",byUsername.getUserGroup());

        List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));

        if (groupList.size()<1){

            return error(30000,"用户组不存在");

        }

        UserGroup userGroup = (UserGroup) groupList.get(0);

        //查询用户审核状态

        if (!StringUtils.isEmpty(userGroup.getSourceTable())){

            String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());

            if (res==null){

                return error(30000,"用户不存在");

            }

            if (!res.equals("已通过")){

                return error(30000,"该用户审核未通过");

            }

        }

        //查询用户状态

        if (byUsername.getState()!=1){

            return error(30000,"用户非可用状态,不能登录");

        }

        String md5password = service.encryption(password);

        if (byUsername.getPassword().equals(md5password)) {

            // 存储Token到数据库

            AccessToken accessToken = new AccessToken();

            accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));

            accessToken.setUser_id(byUsername.getUserId());

            tokenService.save(accessToken);

            // 返回用户信息

            JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));

            user.put("token", accessToken.getToken());

            JSONObject ret = new JSONObject();

            ret.put("obj",user);

            return success(ret);

        } else {

            return error(30000, "账号或密码不正确");

        }

}

    public String select(Map<String,String> query,Map<String,String> config){

        StringBuffer sql = new StringBuffer("select ");

        sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");

        sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));

        if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){

            sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");

        }

        if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){

            sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");

        }

        if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){

            int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;

            int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;

            sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);

        }

        log.info("[{}] - 查询操作,sql: {}",table,sql);

        return sql.toString();

}

    public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

4.1.4评论界面

用户在点击导航栏上面的评论后,就可以搜索查看评论信息,用户根据自己的喜好可以进行评论,评论界面如下图4-4所示。

图4-4评论界面图        

评论逻辑代码如下所示。

@PostMapping("/add")

    @Transactional

    public Map<String, Object> add(HttpServletRequest request) throws IOException {

        Map<String,Object> paramMap = service.readBody(request.getReader());

        this.addMap(paramMap);

        return success(1);

}

    @Transactional

    public Map<String, Object> addMap(Map<String,Object> map){

        service.insert(map);

        return success(1);

}

4.1.5 公告栏界面

当点击导航栏上的“公告栏”的时候,就会进入对应的界面查看公告信息,公告栏界面如下图4-5所示。

图4-5公告栏界面图

4.1.6 小说详情界面

当访客点击了任意小说后将会进入该款小说的详情界面,可以了解到该小说的小说编号、小说名称、小说类型、小说作者、小说章节、上架时间、小说详情等,同时可以对该小说进行点赞+评论+收藏,小说详情展示页面如图4-6所示。

图4-6 小说详情界面图              

4.2管理员功能模块

4.2.1 站点管理界面

电子书店管理系统中的管理人员在“站点管理”这一菜单中是可以对前台显示的轮播图以及公告栏进行管控。界面如下图4-7所示。

图4-7站点管理界面图

站点管理关键代码如下所示。

@RequestMapping(value = "/del")

    @Transactional

    public Map<String, Object> del(HttpServletRequest request) {

        service.delete(service.readQuery(request), service.readConfig(request));

        return success(1);

}

4.2.2 用户管理界面

电子书店管理系统中的管理人员是可以对前台注册的用户、图书管理员进行管理的,也可以对管理员进行管控。界面如下图4-8所示。

图4-8用户管理界面图

用户管理关键代码如下所示。

public List selectBaseList(String select) {

        List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);

        List<E> list = new ArrayList<>();

        for (Map<String,Object> map:mapList) {

            list.add(JSON.parseObject(JSON.toJSONString(map),eClass));

        }

        return list;

}

4.2.3 内容管理界面

电子书店管理系统中的管理人员在“内容管理”这一菜单中是可以对电子书店管理系统内的小说资讯、小说资讯分类进行维护和管理的,界面如下图4-9所示。

图4-9内容管理界面图

4.2.4 更多管理界面

电子书店管理系统中的管理人员在“更多管理”这一菜单下是可以对电子书店管理系统内的小说中心、小说记录、书籍排行、小说分类信息进行管控的,其管理界面如下图4-10所示。

图4-10更多管理界面图   

5系统测试

5.1系统测试的目的

系统开发到了最后一个阶段那就是系统测试,系统测试对软件的开发其实是非常有必要的。因为没什么系统一经开发出来就可能会尽善尽美,再厉害的系统开发工程师也会在系统开发的时候出现纰漏,系统测试能够较好的改正一些bug,为后期系统的维护性提供很好的支持。通过系统测试,开发人员也可以建立自己对系统的信心,为后期的系统版本的跟新提供支持。

5.2 系统测试用例

系统测试包括:用户登录功能测试、小说展示功能测试、小说添加、小说搜索、密码修改功能测试,如表5-1、5-2、5-3、5-4、5-5所示:

用户登录功能测试:

表5-1 用户登录功能测试表

用例名称

用户登录系统

目的

测试用户通过正确的用户名和密码可否登录功能

前提

未登录的情况下

测试流程

1) 进入登录页面

2) 输入正确的用户名和密码

预期结果

用户名和密码正确的时候,跳转到登录成功界面,反之则显示错误信息,提示重新输入

实际结果

实际结果与预期结果一致

小说查看功能测试:

表5-2 小说查看功能测试表

用例名称

小说查看

目的

测试小说查看功能

前提

用户登录

测试流程

点击小说列表

预期结果

可以查看到所有小说信息

实际结果

实际结果与预期结果一致

管理员添加小说界面测试:

表5-3 管理员添加小说界面测试表

用例名称

小说发布测试用例

目的

测试小说发布功能

前提

卖家用户正常登录情况下

测试流程

1)卖家点击小说信息管理就,然后点击添加后并填写信息。

2)点击进行提交。

预期结果

提交以后,页面首页会显示新的小说信息 

实际结果

实际结果与预期结果一致

小说搜索功能测试:

表5-4小说搜索功能测试表

用例名称

小说搜索测试

目的

测试小说搜索功能

前提

测试流程

1)在搜索框填入搜索关键字。

2)点击搜索按钮。

预期结果

页面显示包含有搜索关键字的小说

实际结果

实际结果与预期结果一致

密码修改功能测试:

表5-5 密码修改功能测试表

用例名称

密码修改测试用例

目的

测试管理员密码修改功能

前提

管理员用户正常登录情况下

测试流程

1)管理员密码修改并完成填写。

2)点击进行提交。

预期结果

使用新的密码可以登录

实际结果

实际结果与预期结果一致

5.3 系统测试结果

通过编写电子书店管理系统的测试用例,已经检测完毕用户登录模块、小说查看模块、小说添加模块、小说搜索模块、密码修改功能测试,通过这5大模块为电子书店管理系统的后期推广运营提供了强力的技术支撑。

结论

至此,电子书店管理系统已经结束,在开发前做了许多的准备,在本系统的设计和开发过程中阅览和学习了许多文献资料,从中我也收获了很多宝贵的方法和设计思路,对系统的开发也起到了很重要的作用,系统的开发技术选用的都是自己比较熟悉的,比如Web、Java技术、MYSQL,这些技术都是在以前的学习中学到了,其中许多的设计思路和方法都是在以前不断地学习中摸索出来的经验,其实对于我们来说工作量还是比较大的,但是正是由于之前的积累与准备,才能顺利的完成这个项目,由此看来,积累经验跟做好准备是十分重要的事情。

当然在该系统的设计与实现的过程中也离不开老师以及同学们的帮助,正是因为他们的指导与帮助,我才能够成功的在预期内完成了这个系统。同时在这个过程当中我也收获了很多东西,此系统也有需要改进的地方,但是由于专业知识的浅薄,并不能做到十分完美,希望以后有机会可以让其真正的投入到使用之中。

参考文献

[1]王春丽.基于SSM框架的会议管理信息系统设计与实现[J].电脑编程技巧与维护,2022(03):83-85.DOI:10.16184/j.cnki.comprg.2022.03.016.

[2]蒋赛文,沈利迪.基于Java Swing技术的企业进销存管理系统的设计与实现[J].现代工业经济和信息化,2022,12(02):174-176.DOI:10.16525/j.cnki.14-1362/n.2022.02.067.

[3]常兵,薛桢一,陈德徐,孙诚彬,阮莹莹. 一种基于JAVA技术实现数据结构化导入导出的方法[P]. 江苏省:CN114063989A,2022-02-18.

[4]张文慧,王国田,陈永,温禾,袁涛,艾显威.基于SSM框架城市水体治理工程案例信息系统设计与实现[J].软件,2022,43(02):83-88+92.

[5]熊勇.基于Java技术的后台服务程序设计分析[J].信息记录材料,2022,23(02):80-82.DOI:10.16009/j.cnki.cn13-1295/tq.2022.02.002.

[6]白杨. 基于JAVA的电力公司安监管理系统的设计与实现[D].电子科技大学,2021.DOI:10.27005/d.cnki.gdzku.2021.002572.

[7]Xiaojie Guo,Tingmei Wang*. Design and Implementation of Graduate Information Management System Based on SSM Framework[J]. Journal of Simulation,2020,8(2).

[8], 专科(678人) 软件技术(Java方向)(225人). 朱金瑞 主编,河南财经政法大学年鉴,中州古籍出版社,2018,525-526,年鉴.DOI:10.38722/y.cnki.ycjzf.2020.001067.

[9]Ping Wanxin,Chen Yuankun,Hou Xiaoyan. Design of Campus Bicycle Rental Management System Based on SSM Framework[J]. Journal of Physics: Conference Series,2019,1314.

[10]刘昊欣.博群书店管理系统及其Andriod模块的设计与实现[J].河南科技,2019(16):15-17.

[11]Taizhi Lv, Juan Zhang. Non-Book Resource Management of Library based SSM Framework[J]. Scientific Journal of Economics and Management Research,2019,1(4).

[12]王昊,薛益鸽.基于Web的书店管理系统的设计开发[J].智能计算机与应用,2019,9(01):267-269.

[13]张倩,王蕾,史述红,吕经纬. 基于JAVA并行计算技术的电力直接交易集中撮合交易算法[C]//.中国电机工程学会电力市场专业委员会2018年学术年会暨全国电力交易机构联盟论坛论文集.,2018:373-377.

[14]杨种学,王小正. Java EE框架技术与案例教程[M].南京大学出版社:应用型本科院校计算机类专业校企合作实训教材系列, 201712.284.

[15]王茂钢.网上书店管理信息系统的数据库设计[J].信息与电脑(理论版),2016(19):117-118.

[16]苏健.电子书店管理系统的设计研究[J].知识经济,2014(08):114+118.DOI:10.15880/j.cnki.zsjj.2014.08.085.

[17]方正,张承东. Java在中国十年栽树 何年歇凉[N]. 网络世界,2005-09-05(014).DOI:10.28829/n.cnki.nwlsj.2005.001783.

致  谢

逝者如斯夫,不舍昼夜。转眼间,大学生会员活便已经接近尾声,人面对着离别与结束,总是充满着不舍与茫然,我亦如此,仍记得那年秋天,我迫不及待的提前一天到了学校,面对学校巍峨的大门,我心里充满了期待:这里,就是我新生活的起点吗?那天,阳光明媚,学校的欢迎仪式很热烈,我面对着一个个对着我微笑的同学,仿佛一缕缕阳光透过胸口照进了我心里,同时,在那天我认识可爱的室友,我们携手共同度过了这难忘的两年。如今,我望着这篇论文的致谢,不禁又要问自己:现在,我们就要说再见了吗?

感慨莫名,不知所言。遥想当初刚来学校的时候,心里总是想着工科学校会过于板正,会缺乏一些柔情,当时心里甚至有一点点排斥,但是随着我对学校的慢慢认识与了解,我才认识到了她的美丽,她的柔情,并且慢慢的喜欢上了这个校园,但是时间太快了,快到我还没有好好体会她的美丽便要离开了,但是她带给我的回忆,永远不会离开我,也许真正离开那天我的眼里会满含泪水,我不是因为难过,我只是想将她的样子映在我的泪水里,刻在我的心里。最后,感谢我的老师们,是你们教授了我们知识与做人的道理;感谢我的室友们,是你们陪伴了我如此之久;感谢每位关心与支持我的人。

少年,追风赶月莫停留,平荒尽处是春山。

点赞+收藏+关注 → 私信领取本源代码、数据库

추천

출처blog.csdn.net/weixin_61498557/article/details/131619732