韋瀟婧,王兆驛,謝青松,路康偉,喬雨
(南京工業大學浦江學院 計算機與通信工程學院,江蘇南京,211200)
隨著網絡技術和信息社會的飛速發展,信息分享平臺已成為人們上網查看信息、交流觀點必不可少的工具之一,比較突出的代表有知乎、B 站等平臺[1]。人們可以在論壇里自由地交流與分享,表達內心的想法,彰顯自己的個性,結交志趣相投的朋友。人們也可以在社區上提出問題,以尋求別人的幫助[2]。通過這樣即時互動的方式,提問者可以解決問題,而回答者則可以在交流中成長自己。然而,現有的平臺均需要商業化的盈利來產生附屬的價值,這些商業化的行為,如向用戶推送廣告、誘導用戶點擊引流卡片等給用戶的使用體驗帶來了極大的影響[3];因此,本平臺期望在提供相關信息交流功能的同時,從系統的界面、操作等方面提升用戶的體驗。
(1)訪談:用戶訪談是指分析人員按照一定準則事先準備好一系列問題,通過用戶對問題的回答來獲取有關目標軟件方面的內容。本項目是通過對潛在用戶進行面對面訪談,收集用戶在社區信息共享方面的需求以及對用戶日常社交的行為喜好進行分析[4]。
(2)問卷調查:在進行用戶訪談時,由于很多關鍵人員的時間有限,不易安排過多的時間或者項目涉及的客戶面較廣。因此,就需要借助用戶調查的方法,通過精心設計要問的問題,然后下發到相關的人員手中,讓他們填寫,再從所填寫的內容中獲取系統的需求信息,這樣就可以克服上述的問題[5]。
用戶登錄時系統將根據用戶信息表對用戶輸入的賬戶密碼進行檢索匹配,匹配成功即登錄成功;用戶進行發帖時,通過文本框編輯帖子,提交帖子后,帖子的內容將被寫入數據庫表中即帖子發布完成。其他用戶此時通過對更新后用戶信息表的檢索可以看到新發布的帖子。用戶登錄/發帖功能數據流圖1 所示。

圖1 用戶登錄/發帖功能數據流圖
當用戶查看帖子時,系統將檢索帖子信息表;當用戶對帖子進行評論時,評論數會發生改變,此時評論表更改;當用戶對帖子進行點贊時,點贊數改變,帖子信息表也發生更改;當兩者任一發生改變時都會通知用戶。其數據流圖如圖2 所示。

圖2 用戶評論回復功能數據流圖
在用戶登錄成功后,點擊個人中心界面將會進入修改密碼界面,輸入原密碼后通過比對用戶數據庫,比對正確則輸入新密碼,錯誤則提示。進行一次原密碼與新密碼是否一致的校驗后將新密碼寫入數據庫。修改密碼功能數據流圖如圖3 所示。

圖3 用戶修改密碼功能數據流圖
在用戶輸入對應信息后,點擊注冊按鈕。在通過校驗后數據庫將寫入新的用戶信息。在登錄頁面輸入剛注冊的用戶信息對更新后的用戶數據庫進行檢索,檢索成功后將跳轉到用戶頁面,其數據流圖如圖4 所示。

圖4 用戶注冊功能數據流圖
校園論壇系統主要包含四個模塊,分別是:用戶模塊、發帖模塊、點贊評論模塊、系統模塊。各模塊的具體功能如下:
登錄模塊:包括登錄功能,支持GitHub API,即通過GitHub 賬號登錄,若沒有GitHub 賬號,則可以注冊本地賬號(本地賬號和GitHub 賬號不互通且暫時無法綁定);用戶基本信息的修改;查看個人中心數據;對自己的評論或者發帖進行修改,刪除或者隱藏功能;設置個人空間訪問。
發帖模塊:包括用戶發表帖子功能,可以圖文并茂式文字圖片穿插進行寫作;查看他人所發布帖子的具體內容;對自己所發布的帖子進行內容的修改,并且可以刪除自己所發布的帖子。
點贊評論模塊:包括對帖子或者評論進行點贊功能;對帖子或評論進行回復功能;其他用對自己的發帖進行點贊、評論、收藏時,系統將會有消息提示。
系統模塊:主要包括熱門評論功能;對與該問題相關的問題進行推薦;發帖者可以設置自己的發帖是否需要付費瀏覽,進行積分累計,開啟會員模式。
建立系統的數據模型,即抽象出實體之間的關系,構建E-R(實體-聯系)圖。本項目根據前文描述的基本功能模塊,建立了本系統的數據模型,如圖5 所示。

圖5 數據模型E-R 圖
根據E-R 模型,設計了本系統的數據庫表,具體如表1 ~表5 所示。

表1 user表
user 表包 含id、account_id、name、token、gmt_create 等字段。它主要用于存放GitHub 用戶的各類信息,其中通過id 字段與其他表建立聯系,其具體如表1 所示。
question 表包 含id、title、creator、comment_count、gmt_create、gmt_modified 等字段。它主要用于存放帖子的各類信息,其中通過creater 字段與user 表建立聯系,其具體如表2 所示。

表2 question表
comment 表包 含id、parent_id、type、commentator、gmt_create 等字段。它主要用于存放評論的各類信息,其中通過commentator 字段與user 表建立聯系,其具體如表3 所示。

表3 comment表
notification 表包 含id、notifiler、type、receiver、outerid、gmt_create、status 等字段。它主要用于存放通知的各類信息,其中通過notifiler 字段與user 表建立聯系,其具體如表4 所示。

表4 notification表
local_user 表包 含user_id、username、password、nickname 等字段。它主要用于存放本地用戶的各類信息,其中通過user_id 字段與user 表建立聯系,其具體如表5 所示。

表5 local_user表
基于Springboot+Bootstrap 的信息分享平臺,利用Bootstrap+Thymeleaf+jquery 構建前端頁面,后端實現第三方授權登錄、攔截驗證、cookie 緩存,使用Mybatis 生成mysql 的數據庫映射,實現用戶發帖、評論、回復、話題搜索等功能,最后上傳項目至github 并部署到云主機運行。
用戶通過輸入賬號密碼進行登錄,從頁面接收參數username, paassword, repsssword, nickname, 通 過 調用addLocalUser 方法給localuser 對象賦值實現注冊。該功能核心實現代碼為:
@PostMapping(” /RegisterUser” )
String token = UUID.randomUUID().toString();
LocalUser localUser=localUserService.addLocalUser(username, password, nickname, token);
localUserMapper.register(localUser);
request.getSession().setAttribute(” localUser” ,localUser);
response.addCookie(new Cookie(” token” , token));
return ” redirect:/” ; }
游客可以點擊分類的標簽進入自己感興趣的標簽下瀏覽文章。頁面傳遞tag 參數給list 列表,用list 方法首先對字符串進行分離操作,形成字符數組tags,把tags 存入pagination 返回頁面。該功能通過給typename 賦值為數據庫里存放的文章類別名的數據,typeid 為文章類別的對應編號,通過文章類別名以及編號來確定該文章的類別,如果點擊某個類別,主界面會顯示該類別的相關文章信息。實現代碼為:
@GetMapping(” /” )
public String index(Model model,
@RequestParam(name = ” tag” , required = false)String tag,
@RequestParam(name = ” sort” , required = false)String sort) {
PaginationDTO pagination = questionService.list(search, tag, sort, page, size);
model.addAttribute(” paginations” , pagination);
model.addAttribute(” search” , search);
model.addAttribute(” tag” , tag);
model.addAttribute(” sort” , sort);
return ” index” ;}
用戶點擊發帖按鈕進入發帖界面,輸入內容。頁面傳遞teitle, description, tag,id 通過StringUtils.isBlank 做校驗,給question 對象傳入值返回首頁。該功能由Post 方式提交form 表單實現。實現代碼為:
if (StringUtils.isBlank(title)) {
model.addAttribute(” error” , ” 標題不能為空” );
return ” publish” ;}
User user = (User) request.getSession().getAttribute(” user” );
LocalUser localUser = (LocalUser) request.getSession().getAttribute(” localUser” );
if (user == null&&localUser==null) {
model.addAttribute(” error” , ” 用戶未登錄” );
return ” publish” ;}
Question question = new Question();
question.setTitle(title);
question.setDescription(description);
question.setTag(tag); question.setCreator((user!=null?user.getId():localUser.getUserId()));
question.setId(id);
questionService.UpQuestionOrInQuestion(question);
return ” redirect:/” ;}
本文詳細敘述了基于SpringBoot+Bootstrap 技術的智超社區的設計與實現,從系統的需求分析到總體設計再到測試驗收階段,該系統具有了BBS 論壇所具備的提問、點贊、評論、回復等功能。本系統綜合運用SpringBoot 框架以及Bootstrap 框架實現開發以節省開發時間,并通過一些插件實現UI 設計,做到界面的干凈、簡潔、美觀。能夠為社區用戶們的交流提供良好的交流體驗。