Springboot交流論壇網站00304

Springboot交流論壇網站

摘要

隨著信息技術在管理上越來越深入而廣泛的應用,管理信息系統的實施在技術上已逐步成熟。本文介紹了交流論壇網站的開發全過程。通過分析交流論壇網站管理的不足,創建了一個計算機管理交流論壇網站的方案。文章介紹了交流論壇網站的系統分析部分,包括可行性分析等,系統設計部分主要介紹了系統功能設計和數據庫設計。

本論壇網站有管理員和注冊用戶兩個角色。管理員功能有后臺首頁、系統用戶管理,系統管理(輪播圖管理、敏感詞管理),網站管理,新聞資訊管理,資訊分類管理,論壇分類管理,交流論壇管理等。用戶功能有個人中心,交流論壇管理,我的收藏管理,系統管理等。普通管理員有首頁,交流論壇,網站公告,新聞資訊,我的賬戶,個人中心(個人首頁、交流論壇、收藏)等。因而具有一定的實用性。

本站是一個B/S模式系統,采用Spring Boot框架,MYSQL數據庫設計開發,充分保證系統的穩定性。系統具有界面清晰、操作簡單,功能齊全的特點,使得論壇網站管理工作系統化、規范化。本系統的使用使管理人員從繁重的工作中解脫出來,實現無紙化辦公,能夠有效的提高交流論壇網站管理效率。

關鍵詞:交流論壇網站,Springboot,數據庫

Development of Springboot Campus Forum Communication System

abstract

With the deepening and widespread application of information technology in management, the implementation of management information systems has gradually matured in technology. This article introduces the entire process of developing a communication forum website. By analyzing the shortcomings of communication forum website management, a computer managed communication forum website solution has been created. The article introduces the system analysis part of the communication forum website, including feasibility analysis, etc. The system design part mainly introduces the system function design and database design.

This forum website has two roles: administrator and registered user. The administrator functions include backend homepage, system user management, system management (carousel image management, sensitive word management), website management, news information management, information classification management, forum classification management, communication forum management, etc. The user functions include personal center, communication forum management, my favorites management, system management, etc. Ordinary administrators have a homepage, communication forum, website announcements, news and information, my account, personal center (personal homepage, communication forum, favorites), etc. Therefore, it has certain practicality.

This site is a B/S mode system, using the Spring Boot framework and MYSQL database design and development to fully ensure the stability of the system. The system has the characteristics of clear interface, simple operation, and complete functions, making the management of forum websites systematic and standardized. The use of this system frees management personnel from heavy work, achieves paperless office, and effectively improves the efficiency of communication forum website management.

Keywords:?communication forum website, Springboot, database

目 ?錄

摘要

第1章 緒 ??論

1.1課題背景與意義

1.2 研究內容

1.3研究方法

1.4?開發技術

1.4.1?J2EE技術

1.4.2 MVVM模式

1.4.3 B/S結構

1.4.4 Spring boot框架

1.4.5 Mysql數據庫

第2章 系統分析

2.1?可行性分析

2.2總體設計原則

2.3 系統需求分析

2.4 業務流程分析

第3章 系統設計

3.1 系統概要設計

3.2系統結構設計

3.3 數據庫設計

第4章系統實現

4.1用戶功能模塊

4.2管理員功能模塊

第5章軟件測試

5.1軟件測試的重要性

5.2測試實例的研究與選擇

5.3測試環境與測試條件

5.4系統運行情況

5.5系統評價

第6章 總結

參考文獻:

致???謝

  1. ?緒 ??論

1.1課題背景與意義

論壇是互聯網的一種應用服務模式,通過這種服務,互聯網用戶可以在上面瀏覽到其他用戶在網站發表的各種主題、文章、資訊信息、問題交流等具有各種表現形式的文字,并且用戶可以在上面針對某個具體的內容即時地發表自己的回答、看法、議論等,或者直接發表自己的文章、問題或其它內容。由于論壇的這種特點,使得全球的用戶都可以隨時隨地進行交流,從而真正做到全球信息的交流。論壇具有多種表現形式,各網站可以按照自己的服務特點設計出適合自身的論壇形式,例如:各類論壇、在線問答、各種供求信息、網上訂購等,都可以是論壇的表現形式。論壇目前在互聯網上得到非常廣泛的應用,而且反應非常活躍。由于論壇可以使網上信息交流變得非常方便、廣泛、及時,因而對于加深網站的服務深度、提高網站的知名度、拓展網站的交流范圍、激活網站的人氣都有不小的作用,因此在互聯網的服務中,論壇將是一個重要的內容。

在 Internet飛速發展的二十一世紀的今天,互聯網成為人們快速獲取、發布和傳遞交流信息的重要渠道,它在人們政治、經濟、生活、學習等各個方面發揮著重要的作用。隨著Internet的飛速發展,目前,國內外大部分機關、學校、公司、企業都已經或正在建立自己的論壇.由此可見學生校園論在Internet應用上的地位顯而易見,它已成為學校及其它單位信息化建設中倍受人們的重視重要組成部分。

本科題研究實現的交流論壇網站,用戶可以通過發貼回帖的方式在論壇中進行交流,結合管理員在線對論壇信息進行實時調整管理,從而成為最為穩定的交流論壇網站。交流論壇網站擁有新聞資訊、資訊分類、交流論壇、論壇分類、敏感詞等功能。

1.2 研究內容

交流論壇網站及實現,所需要的工作內容:

(1)首先是確定選題,確定好所要做的系統,并對系統的背景及現在面臨的一些問題等進行系統的初步確認。

(2)系統確認完成后,結合系統開發的需求進行確認系統開發所使用的技術,交流論壇網站使用Springboot框架,數據庫進行平臺的搭建開發,確認好使用的技術進行技術分析,所使用的技術是否可以完成系統的實現。

(3)確定好系統使用的技術,進行在線確認系統所劃分的用戶角色,并且根據用戶角色劃分確定所要設計的功能模塊,對交流論壇網站的設計主要劃分別為管理員和用戶角色,并所使用的功能模塊也相應不同,但是系統的數據庫實現的內容是交互的,用戶可以隨時根據自己的需求進行論壇交流,對于系統工作人員可以根據自己的分管內容進行在線信息的處理及操作,管理員獲取到所有用戶的詳細數據信息,并根據需求進行第一時間處理解決。

(4)系統的功能模塊確認完成后進行程序及界面的設計,設計完成后,并且通過測試來判斷程序是否完善,對于系統測試,需要不同的用戶進行不同的內容編輯及提交,及使用不同的測試方式找出程序中存在的漏洞,并對程序出現的漏洞問題進行在線解決處理,如果測試系統沒有任何問題時,可以將系統上傳進行正式操作使用。

1.3研究方法

首先,通過引擎搜索或者查閱相關文獻資料,了解了本系統開發的背景以及設計系統的意義所在,收集用戶需求信息。其次,在開發工具上,最終確定是基于Mysql數據庫,在Java的Springboot框架設計的基礎上實現,設計出系統大致的功能模塊。主要從方便系統用戶和系統管理員的角度進行分析,明確該系統應該具有的功能。最終是測試系統,通過用例測試發現存在的問題并找到解決的方案。利用現有的開發平臺,結合自己所學的知識,在老師的指導幫助下來完成該設計,確保系統的可用性、實用性。

1.4?開發技術

本系統前端部分基于MVVM模式進行開發,采用B/S模式,后端部分基于Java的Springboot框架進行開發。

前端部分:前端框架采用了比較流行的漸進式JavaScript框架Vue.js。使用Vue-Router和Vuex實現動態路由和全局狀態管理,Ajax實現前后端通信,Element UI組件庫使頁面快速成型,項目前端通過柵格布局實現響應式,可適應PC端、平板端、手機端等不同屏幕大小尺寸的完美布局展示。

后端部分:采用Springboot作為開發框架,同時集成MyBatis、Redis等相關技術。

1.4.1?J2EE技術

人可以掌握多門外語,而一個計算機科學家精通的大多是編程語言,它不是人類的自然語言,比如C語言、Java、Perl等等。由于不同的公司開發出的“中間件”不夠規范,所以Sun公司推出J2EE,用這個標準來解決弊病。它提供了良好的機制,讓每個層次允許與之相對的服務器、組件運行,使得系統的搭建穩定可用、開發高效、維護方便。

1.4.2 MVVM模式

MVVM模式是常用的開發模式,主要是在代碼實現上將其分為M層、V層和C層。

視圖(View)代表用戶交互界面,一個 Web 應用就可能有很多的界面,在 MVVM?模式中,視圖僅僅處理的只有數據采集、處理,還有用戶的請求, 并不包括業務流程的處理,業務流程由模型(Model)來處理。

模型(Model)就是業務流程/狀態的處理及業務規則的制定。模型處理業務流程的過程其它層是無法看見了的,它就像黑箱子,在接受視圖請求的數據之后,然后返回最終的處理結果。MVVM?最主要的核心就是業務模型的設計,一個典型的應用例子就是目前流行的 EJB 模型,它從應用技術實現的角度對模型做了進一步的劃分,以便充分利用現有的組件,但是它不能作為應用設計模型的框架。

控制器(Controller)可以理解為接收用戶的請求,然后視圖和模型匹配在一起,一起再完成用戶請求。它有非常明顯的作用在劃分控制層上,可以很清晰地告訴你,它就是一個分發器,選擇什么樣的模型、視圖,可以完成用戶的什么樣的請求。控制層不做所有的數據處理,比如說:用戶點擊一個連接,控制層接受到請求之后,并不處理業務信息,它只是向模型傳遞用戶的信息,同時告訴模型做什么,然后選擇符合需求的視圖返回給用戶。

1.4.3 B/S結構

B/S(Browser/Server)比前身架構更為省事的架構。它借助Web server完成數據的傳遞交流。只需要下載瀏覽器作為客戶端,那么工作就達到“瘦身”效果, 不需要考慮不停裝軟件的問題。

1.4.4 Spring boot框架

Spring框架是Java平臺上的一種開源應用框架,提供具有控制反轉特性的容器。盡管Spring框架自身對編程模型沒有限制,但其在Java應用中的頻繁使用讓它備受青睞,以至于后來讓它作為EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架為開發提供了一系列的解決方案,比如利用控制反轉的核心特性,并通過依賴注入實現控制反轉來實現管理對象生命周期容器化,利用面向切面編程進行聲明式的事務管理,整合多種持久化技術管理數據訪問,提供大量優秀的Web框架方便開發等等。Spring框架具有控制反轉(IOC)特性,IOC旨在方便項目維護和測試,它提供了一種通過Java的反射機制對Java對象進行統一的配置和管理的方法。Spring框架利用容器管理對象的生命周期,容器可以通過掃描XML文件或類上特定Java注解來配置對象,開發者可以通過依賴查找或依賴注入來獲得對象。Spring框架具有面向切面編程(AOP)框架,SpringAOP框架基于代理模式,同時運行時可配置;AOP框架主要針對模塊之間的交叉關注點進行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖無法與AspectJ框架相比,但通過與AspectJ的集成,也可以滿足基本需求。Spring框架下的事務管理、遠程訪問等功能均可以通過使用SpringAOP技術實現。Spring的事務管理框架為Java平臺帶來了一種抽象機制,使本地和全局事務以及嵌套事務能夠與保存點一起工作,并且幾乎可以在Java平臺的任何環境中工作。Spring集成多種事務模板,系統可以通過事務模板、XML或Java注解進行事務配置,并且事務框架集成了消息傳遞和緩存等功能。Spring的數據訪問框架解決了開發人員在應用程序中使用數據庫時遇到的常見困難。它不僅對Java:JDBC、iBATS/MyBATIs、Hibernate、Java數據對象(JDO)、ApacheOJB和ApacheCayne等所有流行的數據訪問框架中提供支持,同時還可以與Spring的事務管理一起使用,為數據訪問提供了靈活的抽象。Spring框架最初是沒有打算構建一個自己的WebMVC框架,其開發人員在開發過程中認為現有的StrutsWeb框架的呈現層和請求處理層之間以及請求處理層和模型之間的分離不夠,于是創建了SpringMVC。

1.4.5 Mysql數據庫

Mysql 經過多次的更新,功能層面已經非常的豐富和完善了,從Mysql4版本到5版本進行了比較大的更新,在商業的實際使用中取得了很好的實際應用效果。最新版本的Mysql支持對信息的壓縮,同時還能進行加密能更好的滿足對信息安全性的需求。同時經過系統的多次更新,數據庫自身的鏡像功能也得到了很大的增強,運行的流暢度和易用性方面有了不小的進步,驅動的使用和創建也更加的高效快捷。最大的變動還是進行了空間信息的顯示優化,能更加方便的在應用地圖上進行坐標的標注和運算。強大的備份功能也保證了用戶使用的過程會更加安心,同時支持的Office特性還支持用戶的自行安裝和使用。在信息的顯示形式上也進行了不小的更新,增加了兩個非常使用的顯示區,一個是信息區,對表格和文字進行了分類處理,界面的顯示更加清爽和具體。第二是儀表的信息控件,能在儀表信息區進行信息的顯示,同時還能進行多個信息的比對,為用戶的實際使用帶來了很大的便捷。

針對本文中設計的交流論壇網站在實際的實現過程中,最終選擇Mysql數據庫的主要原因在于在企業的應用系統應用及開發的過程中會存在大量的數據庫比較頻繁的操作,而且數據的安全性要求也是非常的高。綜合這些因素,最終選擇安全性系數比較高的Mysql來對交流論壇網站后臺數據進行存儲操作。


  1. 系統分析

2.1?可行性分析

可行性分析的目的是確定一個系統是否有必要開發、確定系統是否能以最小的代價實現。其工作主要有三個方面,分別是技術、經濟和社會三方面的可行性。我會從這三個方面對交流論壇網站進行詳細的分析。

2.1.1技術可行性

該系統主要使用Springboot框架啊和MySQL數據庫進行開發,Java易于學習和使用靈活。在校期間也接觸過Springboot和MySQL數據庫的課程,對此有一定的開發經驗,因此開發難度不高,所以從技術上來說是可行的。

2.1.2經濟可行性

本系統設計所選擇的開發工具和服務器都是免費的開源軟件,又或者是適合學生使用的免費版本,并不需要支付費用,而且由作者本人單獨完成,也不存在團隊費用,幾乎沒有經濟成本,具備經濟可行性。

2.1.3社會可行性

社會可行性主要包括法律和用戶兩個方面,下面將從這兩方面進行分析。

(1)法律因素

本系統是學習開發所制作的程序,并不用作商業用途,是在根據實際調研的結果結合現有的校園交流論壇后得出的,而且系統制作的全部過程都是在個人的工作電腦中完成的,使用的都是開源和免費的開發環境、分析軟件和數據庫,不存在侵權問題。

(2)用戶可行性

操作人員或者客戶只需要具備一定的windows電腦操作常識,不需要精通計算機技能。此外系統管理人員,只需要在windows常識之上再熟悉下使用Tomcat服務器的操作流程,只要掌握一定的計算機知識即可,在正式上線運營之前,僅需要對操作人員進行簡單的熟悉流程培訓即可。所以從用戶可行性上也是可行的。

2.2總體設計原則

一個系統要在開發和維護的過程中方便使用,必須采取一定的設計原則,其主要設計原則有:

簡單性:系統功能簡單易懂,只需要掌握基本的計算機操作能力即可使用。

針對性:針對特定的用戶,沒有多余的其他功能,使用戶可以專心使用。

實用性:能夠滿足用戶查看論壇信息、新聞資訊等方面的需求。

先進性:本系統的代碼采用讀取數據的方式,方便后續開發、拓展。

2.3 系統需求分析

交流論壇網站需要滿足的需求有以下幾個:

1.信息獲取方便,用戶可在網頁上快速瀏覽到新的信息

2.查看新聞資訊詳情等。

3.注冊登錄,需要吸引用戶,即通過注冊來提高用戶的存留率。

4.修改用戶信息,可以修改用戶密碼或者用戶名等一些個性化操作。

5.管理員功能,管理員可以對用戶或者論壇類型、資訊類型、敏感詞等進行管理。

6.系統安全,操作簡便,不過于復雜。

7.系統可以穩定運行,不存在卡頓等問題造成用戶反感。

2.4 業務流程分析

2.4.1登錄流程

登錄模塊主要滿足管理員以及用戶的權限登錄,用戶登錄流程圖如圖2-1所示。

圖2-1?登錄流程圖

2.4.2注冊流程

未有賬號的用戶可進入注冊界面進行注冊操作,用戶注冊流程圖如圖2-2所示。

圖2-2?注冊流程圖

2.4.3添加信息流程

用戶在添加信息時,信息編號自動生成,系統會對添加的信息進行驗證,驗證通過則添加至數據庫,添加信息成功,反之添加失敗。添加信息流程如圖2-3所示。

圖2-3?添加信息流程圖

2.4.4刪除信息流程

用戶可選擇要刪除的信息進行信息刪除操作,在刪除信息時系統提示是否確定刪除信息,是則刪除信息成功,系統數據庫將信息進行刪除。刪除信息流程圖如圖2-4所示。

圖2-4刪除信息流程圖

  1. 系統設計

3.1 系統概要設計

本交流論壇網站選擇B/S結構(Browser/Server,瀏覽器/服務器結構)和基于Web服務兩種模式。適合在互聯網上進行操作,只要用戶能連網,任何時間、任何地點都可以進行系統的操作使用。系統工作原理圖如圖3-1所示:

圖3-1 系統工作原理圖

3.2系統結構設計

整個系統是由多個功能模塊組合而成的,要將所有的功能模塊都一一列舉出來,然后進行逐個的功能設計,使得每一個模塊都有相對應的功能設計,然后進行系統整體的設計。

交流論壇網站結構圖如圖3-2所示。

圖3-2?交流論壇網站結構圖

3.3 數據庫設計

數據庫可以說是所有軟件的根本,如果數據庫存在缺陷,那么會導致系統開發的不順利、維護困難、用戶使用不順暢等一系列問題,嚴重時將會直接損害企業的利益,同時在開發完成后,數據庫缺陷也更加難以解決。所以必須要對數據庫設計重點把握,做到認真細致。因此,數據庫設計是這個交流論壇網站的重點要素。

3.3.1概念結構設計

(1)管理員實體屬性圖如下圖3-3所示

圖3-3管理員實體屬性圖

(2)?交流論壇網站實體屬性如下圖3-4所示

圖3-4交流論壇網站實體屬性圖

(3)交流論壇網站總E-R圖如下圖3-5所示

圖3-5交流論壇網站總E-R圖

3.3.2數據庫表設計

將數據庫概念設計的E-R圖轉換為關系數據庫。在關系數據庫中,數據關系由數據表組成,但是表的結構表現在表的字段上。

表access_token (登陸訪問時長)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

token_id

int

10

0

N

Y

臨時訪問牌ID

2

token

varchar

64

0

Y

N

臨時訪問牌

3

info

text

65535

0

Y

N

4

maxage

int

10

0

N

N

2

最大壽命:默認2小時

5

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

6

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間:

7

user_id

int

10

0

N

N

0

用戶編號:

表article (文章:用于內容管理系統的文章)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

article_id

mediumint

8

0

N

Y

文章id:[0,8388607]

2

title

varchar

125

0

N

Y

標題:[0,125]用于文章和html的title標簽中

3

type

varchar

64

0

N

N

0

文章分類:[0,1000]用來搜索指定類型的文章

4

hits

int

10

0

N

N

0

點擊數:[0,1000000000]訪問這篇文章的人次

5

praise_len

int

10

0

N

N

0

點贊數

6

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

7

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間:

8

source

varchar

255

0

Y

N

來源:[0,255]文章的出處

9

url

varchar

255

0

Y

N

來源地址:[0,255]用于跳轉到發布該文章的網站

10

tag

varchar

255

0

Y

N

標簽:[0,255]用于標注文章所屬相關內容,多個標簽用空格隔開

11

content

longtext

2147483647

0

Y

N

正文:文章的主體內容

12

img

varchar

255

0

Y

N

封面圖

13

description

text

65535

0

Y

N

文章描述

表article_type (文章分類)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

type_id

smallint

5

0

N

Y

分類ID:[0,10000]

2

display

smallint

5

0

N

N

100

顯示順序:[0,1000]決定分類顯示的先后順序

3

name

varchar

16

0

N

N

分類名稱:[2,16]

4

father_id

smallint

5

0

N

N

0

上級分類ID:[0,32767]

5

description

varchar

255

0

Y

N

描述:[0,255]描述該分類的作用

6

icon

text

65535

0

Y

N

分類圖標:

7

url

varchar

255

0

Y

N

外鏈地址:[0,255]如果該分類是跳轉到其他網站的情況下,就在該URL上設置

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間:

表auth (用戶權限管理)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

auth_id

int

10

0

N

Y

授權ID:

2

user_group

varchar

64

0

Y

N

用戶組:

3

mod_name

varchar

64

0

Y

N

模塊名:

4

table_name

varchar

64

0

Y

N

表名:

5

page_title

varchar

255

0

Y

N

頁面標題:

6

path

varchar

255

0

Y

N

路由路徑:

7

position

varchar

32

0

Y

N

位置:

8

mode

varchar

32

0

N

N

_blank

跳轉方式:

9

add

tinyint

3

0

N

N

1

是否可增加:

10

del

tinyint

3

0

N

N

1

是否可刪除:

11

set

tinyint

3

0

N

N

1

是否可修改:

12

get

tinyint

3

0

N

N

1

是否可查看:

13

field_add

text

65535

0

Y

N

添加字段:

14

field_set

text

65535

0

Y

N

修改字段:

15

field_get

text

65535

0

Y

N

查詢字段:

16

table_nav_name

varchar

500

0

Y

N

跨表導航名稱:

17

table_nav

varchar

500

0

Y

N

跨表導航:

18

option

text

65535

0

Y

N

配置:

19

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

20

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間:

表collect (收藏)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

collect_id

int

10

0

N

Y

收藏ID:

2

user_id

int

10

0

N

N

0

收藏人ID:

3

source_table

varchar

255

0

Y

N

來源表:

4

source_field

varchar

255

0

Y

N

來源字段:

5

source_id

int

10

0

N

N

0

來源ID:

6

title

varchar

255

0

Y

N

標題:

7

img

varchar

255

0

Y

N

封面:

8

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

9

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間:

表comment (評論)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

comment_id

int

10

0

N

Y

評論ID:

2

user_id

int

10

0

N

N

0

評論人ID:

3

reply_to_id

int

10

0

N

N

0

回復評論ID:空為0

4

content

longtext

2147483647

0

Y

N

內容:

5

nickname

varchar

255

0

Y

N

昵稱:

6

avatar

varchar

255

0

Y

N

頭像地址:[0,255]

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間:

9

source_table

varchar

255

0

Y

N

來源表:

10

source_field

varchar

255

0

Y

N

來源字段:

11

source_id

int

10

0

N

N

0

來源ID:

表forum (論壇)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

forum_id

mediumint

8

0

N

Y

論壇id

2

display

smallint

5

0

N

N

100

排序

3

user_id

mediumint

8

0

N

N

0

用戶ID

4

nickname

varchar

16

0

Y

N

昵稱:[0,16]

5

praise_len

int

10

0

Y

N

0

點贊數

6

hits

int

10

0

N

N

0

訪問數

7

title

varchar

125

0

N

N

標題

8

keywords

varchar

125

0

Y

N

關鍵詞

9

description

varchar

255

0

Y

N

描述

10

url

varchar

255

0

Y

N

來源地址

11

tag

varchar

255

0

Y

N

標簽

12

img

text

65535

0

Y

N

封面圖

13

content

longtext

2147483647

0

Y

N

正文

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

15

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間:

16

avatar

varchar

255

0

Y

N

發帖人頭像:

17

type

varchar

64

0

N

N

0

論壇分類:[0,1000]用來搜索指定類型的論壇帖

表forum_type (論壇分類)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

type_id

smallint

5

0

N

Y

分類ID:[0,10000]

2

name

varchar

16

0

N

N

分類名稱:[2,16]

3

description

varchar

255

0

Y

N

描述:[0,255]描述該分類的作用

4

url

varchar

255

0

Y

N

外鏈地址:[0,255]如果該分類是跳轉到其他網站的情況下,就在該URL上設置

5

father_id

smallint

5

0

N

N

0

上級分類ID:[0,32767]

6

icon

varchar

255

0

Y

N

分類圖標:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間:

表hits (用戶點擊)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

hits_id

int

10

0

N

Y

點贊ID:

2

user_id

int

10

0

N

N

0

點贊人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間:

5

source_table

varchar

255

0

Y

N

來源表:

6

source_field

varchar

255

0

Y

N

來源字段:

7

source_id

int

10

0

N

N

0

來源ID:

表learning_resource (學習資源)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

learning_resource_id

int

10

0

N

Y

學習資源ID

2

title

varchar

64

0

Y

N

標題

3

resource_name

varchar

64

0

Y

N

資源名稱

4

resource_type

varchar

64

0

Y

N

資源類型

5

cover

varchar

255

0

Y

N

封面

6

resource

varchar

255

0

Y

N

資源

7

resource_contains

text

65535

0

Y

N

資源包含

8

details

longtext

2147483647

0

Y

N

詳情

9

hits

int

10

0

N

N

0

點擊數

10

praise_len

int

10

0

N

N

0

點贊數

11

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

創建時間

12

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間

表notice (公告)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

notice_id

mediumint

8

0

N

Y

公告id:

2

title

varchar

125

0

N

N

標題:

3

content

longtext

2147483647

0

Y

N

正文:

4

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

5

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間:

表praise (點贊)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

praise_id

int

10

0

N

Y

點贊ID:

2

user_id

int

10

0

N

N

0

點贊人:

3

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間:

5

source_table

varchar

255

0

Y

N

來源表:

6

source_field

varchar

255

0

Y

N

來源字段:

7

source_id

int

10

0

N

N

0

來源ID:

8

status

bit

1

0

N

N

1

點贊狀態:1為點贊,0已取消

表registered_users (注冊用戶)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

registered_users_id

int

10

0

N

Y

注冊用戶ID

2

name

varchar

64

0

Y

N

姓名

3

gender

varchar

64

0

Y

N

性別

4

telephone

varchar

64

0

Y

N

電話

5

examine_state

varchar

16

0

N

N

已通過

審核狀態

6

user_id

int

10

0

N

N

0

用戶ID

7

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

創建時間

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間

表resource_classification (資源分類)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

resource_classification_id

int

10

0

N

Y

資源分類ID

2

resource_type

varchar

64

0

Y

N

資源類型

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

創建時間

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間

表sensitive_vocabulary (敏感詞匯)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

sensitive_vocabulary_id

int

10

0

N

Y

敏感詞匯ID

2

sensitive_vocabulary

varchar

64

0

Y

N

敏感詞匯

3

create_time

datetime

19

0

N

N

CURRENT_TIMESTAMP

創建時間

4

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間

表slides (輪播圖)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

slides_id

int

10

0

N

Y

輪播圖ID:

2

title

varchar

64

0

Y

N

標題:

3

content

varchar

255

0

Y

N

內容:

4

url

varchar

255

0

Y

N

鏈接:

5

img

varchar

255

0

Y

N

輪播圖:

6

hits

int

10

0

N

N

0

點擊量:

7

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

8

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間:

表upload (文件上傳)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

upload_id

int

10

0

N

Y

上傳ID

2

name

varchar

64

0

Y

N

文件名

3

path

varchar

255

0

Y

N

訪問路徑

4

file

varchar

255

0

Y

N

文件路徑

5

display

varchar

255

0

Y

N

顯示順序

6

father_id

int

10

0

Y

N

0

父級ID

7

dir

varchar

255

0

Y

N

文件夾

8

type

varchar

32

0

Y

N

文件類型

表user (用戶賬戶:用于保存用戶登錄信息)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

user_id

mediumint

8

0

N

Y

用戶ID:[0,8388607]用戶獲取其他與用戶相關的數據

2

state

smallint

5

0

N

N

1

賬戶狀態:[0,10](1可用|2異常|3已凍結|4已注銷)

3

user_group

varchar

32

0

Y

N

所在用戶組:[0,32767]決定用戶身份和權限

4

login_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

上次登錄時間:

5

phone

varchar

11

0

Y

N

手機號碼:[0,11]用戶的手機號碼,用于找回密碼時或登錄時

6

phone_state

smallint

5

0

N

N

0

手機認證:[0,1](0未認證|1審核中|2已認證)

7

username

varchar

16

0

N

N

用戶名:[0,16]用戶登錄時所用的賬戶名稱

8

nickname

varchar

16

0

Y

N

昵稱:[0,16]

9

password

varchar

64

0

N

N

密碼:[0,32]用戶登錄所需的密碼,由6-16位數字或英文組成

10

email

varchar

64

0

Y

N

郵箱:[0,64]用戶的郵箱,用于找回密碼時或登錄時

11

email_state

smallint

5

0

N

N

0

郵箱認證:[0,1](0未認證|1審核中|2已認證)

12

avatar

varchar

255

0

Y

N

頭像地址:[0,255]

13

open_id

varchar

255

0

Y

N

針對獲取用戶信息字段

14

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

表user_group (用戶組:用于用戶前端身份和鑒權)

編號

名稱

數據類型

長度

小數位

允許空值

主鍵

默認值

說明

1

group_id

mediumint

8

0

N

Y

用戶組ID:[0,8388607]

2

display

smallint

5

0

N

N

100

顯示順序:[0,1000]

3

name

varchar

16

0

N

N

名稱:[0,16]

4

description

varchar

255

0

Y

N

描述:[0,255]描述該用戶組的特點或權限范圍

5

source_table

varchar

255

0

Y

N

來源表:

6

source_field

varchar

255

0

Y

N

來源字段:

7

source_id

int

10

0

N

N

0

來源ID:

8

register

smallint

5

0

Y

N

0

注冊位置:

9

create_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

創建時間:

10

update_time

timestamp

19

0

N

N

CURRENT_TIMESTAMP

更新時間:

第4章系統實現

4.1用戶功能模塊

交流論壇網站,在系統首頁可以查看首頁、新聞資訊、網站公告、交流論壇、我的賬戶、個人中心等內容,如圖4-1所示。

圖4-1系統首頁界面圖

用戶注冊:用戶在注冊頁面通過填寫用戶賬號、密碼、昵稱、身份、手機等信息完成用戶注冊,如圖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-3所示。

圖4-3新聞資訊界面圖

新聞資訊的邏輯代碼如下:

<%

String lb=request.getParameter("lb");

HashMap ext = new HashMap(); ?

new CommDAO().insert(request,response,"xinwentongzhi",ext,true,false,"xinwentongzhi_add.jsp?lb="+lb);

%>

交流論壇列表,在此頁面可以查看其他用戶發布的論壇信息進行點贊、收藏和在線交流,也可編輯封面圖、標題、分類、標簽、內容等信息進行發布論壇等,如圖4-4所示。

圖4-4發布論壇界面圖

我的賬戶:用戶在此頁面可對個人資料和密碼進行修改操作,如圖4-5所示。

圖4-5我的賬戶界面圖

收藏:用戶在此頁面可查看自己所有收藏的文章列表,可進行查看或刪除操作,如圖4-6所示。

圖4-6 收藏界面圖

4.2管理員功能模塊

管理員登錄,通過填寫注冊時輸入的用戶名、密碼、驗證碼進行登錄,如圖4-7所示。

圖4-7管理員登錄界面圖

管理員登錄的關鍵代碼如下。

???* 登錄

?????* @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-8所示。

圖4-6管理員功能界面圖

管理員功能界面邏輯代碼如下:

@RequestMapping("/get_list")

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

????????Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

????????return success(map);

}

新聞資訊管理,在資訊列表中可以進行資訊編輯發布,還可以對資訊進行修改或刪除操作,如圖4-9所示。

圖4-9新聞資訊管理界面圖

新聞資訊管理界面邏輯代碼如下:

@RequestMapping("/get_obj")

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

????????List resultList = service.selectBaseList(service.select(service.readQuery(request), service.readConfig(request)));

????????if (resultList.size() > 0) {

????????????JSONObject jsonObject = new JSONObject();

????????????jsonObject.put("obj",resultList.get(0));

????????????return success(jsonObject);

????????} else {

????????????return success(null);

????????}

}

新聞分類管理,在新聞分類管理中可以對新聞資訊信息添加類目進行分類管理,并可根據需求進行修改或刪除操作,如圖4-10所示。

圖4-10新聞分類管理界面圖

新聞分類管理界面邏輯代碼如下:

@RequestMapping("/get_list")

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

????????Map<String, Object> map = service.selectToPage(service.readQuery(request), service.readConfig(request));

????????return success(map);

網站公告管理,管理員可以對網站公告信息進行維護管理。如圖4-11所示。

圖4-11網站公告管理界面圖

網站公告管理界面邏輯代碼如下:

?@PostMapping("/add")

????@Transactional

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

????????service.insert(service.readBody(request.getReader()));

????????return success(1);

????}

????@Transactional

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

????????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){

????????StringBuffer sql = new StringBuffer("INSERT INTO ");

????????sql.append("`").append(table).append("`").append(" (");

????????for (Map.Entry<String,Object> entry:body.entrySet()){

????????????sql.append("`"+humpToLine(entry.getKey())+"`").append(",");

????????}

????????sql.deleteCharAt(sql.length()-1);

????????sql.append(") VALUES (");

????????for (Map.Entry<String,Object> entry:body.entrySet()){

????????????Object value = entry.getValue();

????????????if (value instanceof String){

????????????????sql.append("'").append(entry.getValue()).append("'").append(",");

????????????}else {

????????????????sql.append(entry.getValue()).append(",");

????????????}

????????}

????????sql.deleteCharAt(sql.length() - 1);

????????sql.append(")");

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

????????Query query = runCountSql(sql.toString());

????????query.executeUpdate();

????}

輪播圖管理,管理員在對輪播圖進行添加、修書或刪除操作,如圖4-12所示。

圖4-12輪播圖管理界面圖

敏感詞管理:管理員可此欄添加敏感詞匯信息,前臺用戶在發表帖子時如果涉及到敏感詞將會接收到提示并不能發表,如圖4-13所示。

圖4-13 添加敏感詞界面圖

交流論壇網站管理,在交流論壇網站列表中可以對論壇信息進行維護管理,并且根據需要進行修改或刪除操作,如圖4-14所示。

圖4-14交流論壇網站管理界面圖

第5章軟件測試

測試存在于軟件開發進程中的最后一個階段,它可以保證一個軟件的開發質量是否符合設計者的初衷,也為程序的正式上線做了最后一道質量檢測的工序。軟件測試主要是控制各種條件、包括軟件輸出方式,使用模式和運行環境等,來評估一個系統或應用是否符合設計標準。在軟件測試過程中,我們一般刻意的去制造錯誤和極端條件,不能僅依照正常模式允許,而是多去嘗試那些意外的情況。

5.1軟件測試的重要性

只有在運行和維護階段之前經歷大量的測試的軟件,才能說明它的質量是經得起檢驗的。最近計算機業界也都一致認為,測試應該存在于軟件設計的每個階段,因為越早發現錯誤,修復起來就越容易。

實際上,對于一個軟件應用,錯誤是必然存在的,無論使用何種技術或手段,都不可能絕對的排除軟件漏洞。測試是隨著軟件開發一同誕生的,兩者是共同發展進步的。實際上,測試可以大幅度的降低維護的成本,如果一個漏洞在開發的早期就被發現,那么修復它的成本遠比上線后再修復的成本要低得多。

5.2測試實例的研究與選擇

測試有白盒測試和黑盒測試兩種方式。

其中,白盒測試是將軟件看成一個透明的白盒子,按照程序的內部控制結構和處理技術邏輯來選定測試用例、軟件系統測試的邏輯路徑及過程需要進行管理測試,又稱玻璃盒測試。因此白盒測試需要選擇足夠多的測試用例,覆蓋盡可能多的代碼來發現程序中的錯誤。

黑盒測試,也稱為功能測試。它將需軟件看作一個黑盒,像一個普通用戶一樣來模擬軟件的使用流程。黑盒測試通過大量的輸入邊界值或錯誤數據,來檢查是否可產生正確的輸出。

本系統測試 主要選擇黑盒測試,少量采用白盒測試。通過測試達到以下測試目的:

1.檢查各大功能模塊的運行,確保其能夠正確運行,并檢查各頁面的完整性,保證頁面完整。

2.檢查各個接口是否可以正確地輸入和輸出,保證數據流通穩定可行。

3.檢查數據結構,保證其和外部接口沒有訪問錯誤,訪問順利。

4.檢查原計劃的性能需求有沒有完成,運行流暢。

本系統的測試用例(部分):

登錄部分測試用例

編號

對象

項目

操作

預期結果

結果

1

登錄

登錄提示

使用正確的賬號密碼登錄

成功登錄

預期結果

2

登錄提示

使用正確的賬號但錯誤的密碼登錄

提示密碼錯誤

預期結果

3

登錄提示

使用錯誤的賬號登錄

提示不存在賬戶

預期結果

4

登錄提示

不輸入賬號,點擊登錄

提示輸入賬號

預期結果

5

登錄提示

輸入賬號但不輸入密碼點擊登錄

提示輸入密碼

預期結果

6

登錄入口

已登錄賬號,查看登錄入口

不顯示登錄入口

預期結果

5.3測試環境與測試條件

處理器:Inter Core I7-4710MQ四核處理器

內存:4GB

硬盤:1T

操作系統:Windows 10

數據庫:MySQL

5.4系統運行情況

全部測試用例都已通過(包括但不限于以上測試用例),且不存在漏洞,實現了論文開始時所作要求。本系統運行穩定,使用流暢,可以滿足客戶需求。

5.5系統評價

5.5.1系統功能評價

試運行后進行系統評估,可以認為該系統達到預定的目標要求,可以滿足用戶的需求,也滿足了系統開發前所作目標。

5.5.2系統技術評價

系統在經過大量重復測試后運行十分穩定,安全實用,功能模塊已經達到預定目標所需。

5.5.3系統經濟評價

在規定的時間內實現系統的大部分功能,且滿足要求,節省開發成本,有助于提高科學管理水平,符合本人經濟情況。


第6章 總結

隨著計算機互聯網技術的迅猛發展,各行各業都已經實現采用計算機相關技術對日益放大的數據進行管理。該課題是交流論壇網站以交流為核心展開的。本研究針對交流論壇網站需求建模,數據建模及過程建模分析設計并實現程序研究的過程。給出系統應用架構并分析優劣勢,通過功能分解圖,系統組件圖描述功能需求。設計建立了數據庫,給出系統關鍵數據結構的定義。通過類關系圖描述組件間的協作關系,給出各個類的定義方法。通過描述每一個類的字段,屬性及方法實現系統的前后端代碼。最終給出系統集成整合方法,完成交流論壇網站的設計與實現。投入運行時,各功能均運行正常。系統的每個界面的操作符合常規邏輯,對使用者來說操作簡單,界面友好。整個系統的各個功能設計合理,體現了人性化。

但是由于自己在系統開發過程中對一些用到的相關知識和技術掌握不夠牢固,再加上自身開發經驗欠缺,因此系統在有些方面的功能還不夠完善,考慮的不夠全面,因此整個系統還有待日后逐步完善。


參考文獻:

[1]張豪, 朱石磊, 胡建華, 楊潔. 基于B/S架構的校園論壇系統的設計與實現[J]. 電腦知識與技術, 2023, 19 (33): 32-35.

[2]Leit?o Renata M., Noel Lesley Ann. Special Forum: Designing a World of Many Centers[J]. Design and Culture, 2022, 14 (3): 247-253.

[3]中國積極教育實踐交流論壇(原浙江積極教育大會)——用前沿學術研究賦能教育實踐,用優秀實踐成果助力幸福校園[J]. 中學生博覽, 2022, (15): 2+1.

[4]祁小峰. 高校大學生國際交流網絡傳播平臺的構建[J]. 齊齊哈爾大學學報(哲學社會科學版), 2022, (11): 148-150.

[5]謝靜, 李璐, 趙康. “丁香園”在線學術交流論壇運營模式研究[J]. 科技傳播, 2021, 6 (02): 227-229.

[6]向鴻榮,李昕昕.場景測試方法和正交測試方法在論壇網站中的應用研究[J].無線互聯科技,2021,18(16):97-98.

[7]張新宇. 某高校電影交流論壇系統的設計與實現[D]. 北京郵電大學, 2021.

[8]徐健.基于寶塔面板(BT Panel)+Discuz!搭建交流論壇網站[J].信息技術與信息化,2021(02):56-57.

[9]劉發穩,高宇,陳云川,宋浩.程序猿論壇設計與實現[J].電腦知識與技術,2021,17(05):99-102.

[10]高靜,李思慧.基于B/S模式的交流論壇網站網站設計與實現[J].南方農機,2020,51(23):162+169.

[11]王勝勇,王羚伊.校園生活論壇交流平臺的設計與實現[J].數碼世界,2020(11):231.

[12]College of Engineering, Boise State University, 1910 University Dr., 83725-2070, Boise, ID, USA, Mary Lou Fulton Teachers College, Arizona State University, Mail Code 1811, 85069, Phoenix, AZ, USA. Asynchronous discussion forum design to support cognition: effects of rubrics and instructor prompts on learner’s critical thinking, achievement, and satisfaction[J]. Educational Technology Research and Development: A bi-monthly publication of the Association for Educational Communications & Technology, 2020, 68 (1): 37-66.

[13]Dionisio Sánchez Rubio. II Bau Design Forum Barcelona. New perspectives in design and visual communication[J]. Communication Design, 2020, 5 (1-2): 269-272.

[14]熊宇涵,侯玲.淺析校園網站的管理——以“錦城生活”論壇網站為例[J].文化產業,2019(24):39-40.

[15]李鵬飛. 基于Web技術的交流論壇網站設計與實現[D].內蒙古科技大學,2019.

[16]王艷萍.基于云平臺的分享論壇設計與研究[J].電腦編程技巧與維護,2019(08):104-106.

[17]周希思. 基于ASP.NET的在線交流論壇設計[D].河北大學,2018.

[18]盧曦,王巖.簡易論壇設計與實現[J].電腦編程技巧與維護,2018(09):26+31.??????[19]周游.博客,論壇,網站一個都不能少[J].電腦迷,2018(01):86.

[20]楊衛平,張子頔.基于MongoDB的社區論壇設計與研究[J].電腦知識與技術,2018,11(23):7-10.

致???謝

大學生活在這個時候即將劃上一個句號,但是對于我的人生道路來說,這僅僅是一個逗號,我將面對的是又一次征程的開始。

回憶過去,許許多多的事情浮現在腦海:剛上大學時歡樂心情和興奮的場景還歷歷在目。一切都是那么新鮮,那么富有吸引力。有快樂也有艱辛,有收獲也有失落。衷心感謝信息學院所有支持幫助過我的老師,謝謝你們多年來的關心和愛護。同窗的友情同樣難忘,你們與我共同走過了人生中不平凡的道路,給我留下了值得珍藏的美好記憶。

最后,我要特別感謝指導交流論壇網站設計的老師。本論文是在他的悉心指導和熱情幫助下完成的,老師認真負責的工作態度,嚴謹的治學精神和精深的理論水平都使我受益匪淺。老師無論在理論上還是在實踐中,都給予我很大的幫助,使我專業技能的應用水平得到很大提高,這對于我以后的工作和學習都有益處。值此論文完成之際,特別向老師表示衷心的感謝和崇高的敬意,謝謝他細心而又耐心地輔導,使得我得以順利的完成畢業設計開發工作,同時也要感謝其他幫助過我的老師和同學,他們在我成長過程中給予了我很大的幫助,在此一并表示感謝。

由于本人水平有限,加上時間緊促,本文一定有不少缺點和不足,懇請各位老師給予幫助和指正。

免費領取項目源碼,請關注?點贊收藏并私信博主,謝謝~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/39814.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/39814.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/39814.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

x-ray投影圖文件.raw轉換成.tif文件【python代碼】

如下&#xff1a; path 輸入文件所在的文件夾路徑import os import numpy as np import tifffile as tiffdef read_raw_data(path, dimensions, dtype):"""讀取 .raw 文件并返回圖像數據:param path: .raw 文件路徑:param dimensions: 圖像的行數和列數 (hei…

elementui中table組件合并行(看就懂)

做一個動態合并的table表格, 如下圖 1.首先定義需要合并的字段及合并后的對象 data(){return {mergeFields: [name, amount3],mergeObj: {}} }2.分配合并項函數, data為數據源 //獲取合并序號getSpanArr(data []) {this.mergeFields.forEach(key > {// 用來記錄合并行的起…

數據類型的分類和查看

數據類型是指定程序在運行過程中&#xff0c;將各種數據根據表示形式和組織形式劃分為不同的分類。 例如&#xff0c;一個人的姓名可以用字符類型存儲&#xff0c;年齡可以用數值類型存儲&#xff0c;而婚否可以用布爾類型存儲&#xff0c;這些都是 Python 中的 標準數據類型…

為什么我感覺 C 語言在 Linux 下執行效率比 Windows 快得多?

在開始前剛好我有一些資料&#xff0c;是我根據網友給的問題精心整理了一份「Linux的資料從專業入門到高級教程」&#xff0c; 點個關注在評論區回復“888”之后私信回復“888”&#xff0c;全部無償共享給大家&#xff01;&#xff01;&#xff01;Windows的終端或者叫控制臺…

c++初級-2-引用

文章目錄 引用一、引用的定義二、引用做函數參數三、引用作為返回對象四、引用的本質五、常量引用 引用 即給一個變量起別名。 一、引用的定義 int a 10;//引用int& b a;cout << "a " << a << endl;cout << "b " <&l…

時間12小時和24時轉換方法

24小時時間轉為12小時制 function convertTo12Hour(time24h){let [hours, minutes] time24h.split(:);let modifier 上午;if (parseInt(hours, 10) > 12) {modifier 下午;hours (parseInt(hours, 10) - 12).toString();}if (parseInt(hours, 10) 12) {modifier 下午;}…

新手入門:無服務器函數和FaaS簡介

無服務器&#xff08;Serverless&#xff09;架構的價值在于其成本效益、彈性和擴展性、簡化的開發和部署流程、高可用性和可靠性以及使開發者能夠專注于業務邏輯。通過自動化資源調配和按需計費&#xff0c;無服務器架構能夠降低成本并適應流量變化&#xff0c;同時簡化開發流…

《昇思25天學習打卡營第01天|sun65535》

開始 昇思25天打卡訓練營&#xff0c;讓我第一次了解了華為昇思的平臺&#xff0c;之前也有自己本地使用4060訓練了一些“小模型”&#xff0c;但是都是比較皮毛的知識&#xff0c;只是根據教程去搭建。很少了解到具體的過程。昇思25天打卡訓練營給了一個比較全面的訓練課程。…

大數據基礎知識【大數據導論】

各位大佬好 &#xff0c;這里是阿川的博客&#xff0c;祝您變得更強 個人主頁&#xff1a;在線OJ的阿川 大佬的支持和鼓勵&#xff0c;將是我成長路上最大的動力 阿川水平有限&#xff0c;如有錯誤&#xff0c;歡迎大佬指正 大數據基礎知識前 必看 【大數據導論】—大數據序言…

Golang | Leetcode Golang題解之第206題反轉鏈表

題目&#xff1a; 題解&#xff1a; func reverseList(head *ListNode) *ListNode {if head nil || head.Next nil {return head}newHead : reverseList(head.Next)head.Next.Next headhead.Next nilreturn newHead }

vue3基于uni-app 封裝小程序request請求

const BASE_URL https://47.122.26.142; // 替換為你的 API 基礎 URL const token uni.getStorageSync(token);const request (url: string, method: any, data {}, headers {}) > {return new Promise((resolve, reject) > {uni.request({url: ${BASE_URL}${url},m…

【1.1】動態規劃求解不同的子序列

一、題目 給定一個字符串s和一個字符串t&#xff0c;計算在s的子序列中t出現的個數。 字符串的一個子序列是指&#xff0c;通過刪除一些&#xff08;也可以不刪除&#xff09;字符且不干擾剩余字符相對位置 所組成的新字符串。&#xff08;例如&#xff0c;"ACE"是…

6.2、函數的定義

代碼 #include <iostream> using namespace std; #include <string>//函數定義//語法&#xff1a;//返回值類型 函數名(參數列表) {函數體語句 return表達式}//加法函數 int add(int num1, int num2) {int sum num1 num2;return sum; } int main() {cout <&l…

SpringBoot異步接口實現 提升吞吐量

前言 Servlet 3.0之前&#xff1a;HTTP請求由單一線程處理。Servlet 3.0之后&#xff1a;支持異步處理&#xff0c;提高系統吞吐量。 SpringBoot 異步接口實現方式 AsyncContext&#xff1a;Servlet層級&#xff0c;不常用。Callable&#xff1a;使用java.util.concurrent.C…

聊聊Redis持久化策略RDB

寫在文章開頭 為避免服務器宕機著情況導致redis內存數據庫數據丟失&#xff0c;redis默認出通過rdb保證可靠性&#xff0c;本文將從源碼的角度帶讀者了解rdb讀寫時機和寫入流程。 Hi&#xff0c;我是 sharkChili &#xff0c;是個不斷在硬核技術上作死的 java coder &#xff…

刷代碼隨想錄有感(124):動態規劃——最長公共子序列

題干&#xff1a; 代碼&#xff1a; class Solution { public:int findLength(vector<int>& nums1, vector<int>& nums2) {vector<vector<int>>dp(nums1.size() 1, vector<int>(nums2.size() 1, 0));int res 0;for(int i 1; i <…

數據集采樣策略對模型性能的影響問題

數據集采樣策略對模型性能的影響問題&#xff0c;需要具體代碼示例 隨著機器學習和深度學習的快速發展&#xff0c;數據集的質量和規模對于模型性能的影響變得越來越重要。在實際應用中&#xff0c;我們往往面臨著數據集規模過大、樣本類別不平衡、樣本噪聲等問題。這時&#…

uni.showShareMenu({}) 和 uni.showShareImageMenu({}) 的區別

ChatGPT uni.showShareMenu({}) 和 uni.showShareImageMenu({}) 是 Uni-app 中兩個不同的 API&#xff0c;它們的作用和用法有所不同&#xff1a; uni.showShareMenu({}) 作用&#xff1a;用于顯示當前頁面的分享菜單&#xff0c;通常顯示在頁面的右上角&#xff08;類似于微…

lnternet 發展史

一&#xff0c;lnternet 發展史 ARPA net &#xff08;上世紀50年代二戰結束&#xff09; 無線 戰場指揮通信協議落后 TCP/IP 包交換 WEB (70年代 ) 80年代 90年代 二&#xff0c;互聯網的典型應用&#xff1a; 96年到2008年 第一代技術…

AJAX的概述 ,同步和異步的區別 ,AJAX 的交互模型和傳統交互模型的區別

一. AJAX的概述 1.1 什么是ajax 同步&#xff1a; 異步&#xff1a; 1.AJAX Asynchronous JavaScript and XML&#xff08;異步的 JavaScript 和 XML&#xff09;。 ? 說明&#xff1a;異步&#xff1a;就是不同步。例如我們向后臺發送請求&#xff0c;同步的方式是后臺必…