韋瀟婧,王兆驛,謝青松,路康偉,喬雨
(南京工業(yè)大學(xué)浦江學(xué)院 計算機(jī)與通信工程學(xué)院,江蘇南京,211200)
隨著網(wǎng)絡(luò)技術(shù)和信息社會的飛速發(fā)展,信息分享平臺已成為人們上網(wǎng)查看信息、交流觀點必不可少的工具之一,比較突出的代表有知乎、B 站等平臺[1]。人們可以在論壇里自由地交流與分享,表達(dá)內(nèi)心的想法,彰顯自己的個性,結(jié)交志趣相投的朋友。人們也可以在社區(qū)上提出問題,以尋求別人的幫助[2]。通過這樣即時互動的方式,提問者可以解決問題,而回答者則可以在交流中成長自己。然而,現(xiàn)有的平臺均需要商業(yè)化的盈利來產(chǎn)生附屬的價值,這些商業(yè)化的行為,如向用戶推送廣告、誘導(dǎo)用戶點擊引流卡片等給用戶的使用體驗帶來了極大的影響[3];因此,本平臺期望在提供相關(guān)信息交流功能的同時,從系統(tǒng)的界面、操作等方面提升用戶的體驗。
(1)訪談:用戶訪談是指分析人員按照一定準(zhǔn)則事先準(zhǔn)備好一系列問題,通過用戶對問題的回答來獲取有關(guān)目標(biāo)軟件方面的內(nèi)容。本項目是通過對潛在用戶進(jìn)行面對面訪談,收集用戶在社區(qū)信息共享方面的需求以及對用戶日常社交的行為喜好進(jìn)行分析[4]。
(2)問卷調(diào)查:在進(jìn)行用戶訪談時,由于很多關(guān)鍵人員的時間有限,不易安排過多的時間或者項目涉及的客戶面較廣。因此,就需要借助用戶調(diào)查的方法,通過精心設(shè)計要問的問題,然后下發(fā)到相關(guān)的人員手中,讓他們填寫,再從所填寫的內(nèi)容中獲取系統(tǒng)的需求信息,這樣就可以克服上述的問題[5]。
用戶登錄時系統(tǒng)將根據(jù)用戶信息表對用戶輸入的賬戶密碼進(jìn)行檢索匹配,匹配成功即登錄成功;用戶進(jìn)行發(fā)帖時,通過文本框編輯帖子,提交帖子后,帖子的內(nèi)容將被寫入數(shù)據(jù)庫表中即帖子發(fā)布完成。其他用戶此時通過對更新后用戶信息表的檢索可以看到新發(fā)布的帖子。用戶登錄/發(fā)帖功能數(shù)據(jù)流圖1 所示。
圖1 用戶登錄/發(fā)帖功能數(shù)據(jù)流圖
當(dāng)用戶查看帖子時,系統(tǒng)將檢索帖子信息表;當(dāng)用戶對帖子進(jìn)行評論時,評論數(shù)會發(fā)生改變,此時評論表更改;當(dāng)用戶對帖子進(jìn)行點贊時,點贊數(shù)改變,帖子信息表也發(fā)生更改;當(dāng)兩者任一發(fā)生改變時都會通知用戶。其數(shù)據(jù)流圖如圖2 所示。
圖2 用戶評論回復(fù)功能數(shù)據(jù)流圖
在用戶登錄成功后,點擊個人中心界面將會進(jìn)入修改密碼界面,輸入原密碼后通過比對用戶數(shù)據(jù)庫,比對正確則輸入新密碼,錯誤則提示。進(jìn)行一次原密碼與新密碼是否一致的校驗后將新密碼寫入數(shù)據(jù)庫。修改密碼功能數(shù)據(jù)流圖如圖3 所示。
圖3 用戶修改密碼功能數(shù)據(jù)流圖
在用戶輸入對應(yīng)信息后,點擊注冊按鈕。在通過校驗后數(shù)據(jù)庫將寫入新的用戶信息。在登錄頁面輸入剛注冊的用戶信息對更新后的用戶數(shù)據(jù)庫進(jìn)行檢索,檢索成功后將跳轉(zhuǎn)到用戶頁面,其數(shù)據(jù)流圖如圖4 所示。
圖4 用戶注冊功能數(shù)據(jù)流圖
校園論壇系統(tǒng)主要包含四個模塊,分別是:用戶模塊、發(fā)帖模塊、點贊評論模塊、系統(tǒng)模塊。各模塊的具體功能如下:
登錄模塊:包括登錄功能,支持GitHub API,即通過GitHub 賬號登錄,若沒有GitHub 賬號,則可以注冊本地賬號(本地賬號和GitHub 賬號不互通且暫時無法綁定);用戶基本信息的修改;查看個人中心數(shù)據(jù);對自己的評論或者發(fā)帖進(jìn)行修改,刪除或者隱藏功能;設(shè)置個人空間訪問。
發(fā)帖模塊:包括用戶發(fā)表帖子功能,可以圖文并茂式文字圖片穿插進(jìn)行寫作;查看他人所發(fā)布帖子的具體內(nèi)容;對自己所發(fā)布的帖子進(jìn)行內(nèi)容的修改,并且可以刪除自己所發(fā)布的帖子。
點贊評論模塊:包括對帖子或者評論進(jìn)行點贊功能;對帖子或評論進(jìn)行回復(fù)功能;其他用對自己的發(fā)帖進(jìn)行點贊、評論、收藏時,系統(tǒng)將會有消息提示。
系統(tǒng)模塊:主要包括熱門評論功能;對與該問題相關(guān)的問題進(jìn)行推薦;發(fā)帖者可以設(shè)置自己的發(fā)帖是否需要付費(fèi)瀏覽,進(jìn)行積分累計,開啟會員模式。
建立系統(tǒng)的數(shù)據(jù)模型,即抽象出實體之間的關(guān)系,構(gòu)建E-R(實體-聯(lián)系)圖。本項目根據(jù)前文描述的基本功能模塊,建立了本系統(tǒng)的數(shù)據(jù)模型,如圖5 所示。
圖5 數(shù)據(jù)模型E-R 圖
根據(jù)E-R 模型,設(shè)計了本系統(tǒng)的數(shù)據(jù)庫表,具體如表1 ~表5 所示。
表1 user表
user 表包 含id、account_id、name、token、gmt_create 等字段。它主要用于存放GitHub 用戶的各類信息,其中通過id 字段與其他表建立聯(lián)系,其具體如表1 所示。
question 表包 含id、title、creator、comment_count、gmt_create、gmt_modified 等字段。它主要用于存放帖子的各類信息,其中通過creater 字段與user 表建立聯(lián)系,其具體如表2 所示。
表2 question表
comment 表包 含id、parent_id、type、commentator、gmt_create 等字段。它主要用于存放評論的各類信息,其中通過commentator 字段與user 表建立聯(lián)系,其具體如表3 所示。
表3 comment表
notification 表包 含id、notifiler、type、receiver、outerid、gmt_create、status 等字段。它主要用于存放通知的各類信息,其中通過notifiler 字段與user 表建立聯(lián)系,其具體如表4 所示。
表4 notification表
local_user 表包 含user_id、username、password、nickname 等字段。它主要用于存放本地用戶的各類信息,其中通過user_id 字段與user 表建立聯(lián)系,其具體如表5 所示。
表5 local_user表
基于Springboot+Bootstrap 的信息分享平臺,利用Bootstrap+Thymeleaf+jquery 構(gòu)建前端頁面,后端實現(xiàn)第三方授權(quán)登錄、攔截驗證、cookie 緩存,使用Mybatis 生成mysql 的數(shù)據(jù)庫映射,實現(xiàn)用戶發(fā)帖、評論、回復(fù)、話題搜索等功能,最后上傳項目至github 并部署到云主機(jī)運(yùn)行。
用戶通過輸入賬號密碼進(jìn)行登錄,從頁面接收參數(shù)username, paassword, repsssword, nickname, 通 過 調(diào)用addLocalUser 方法給localuser 對象賦值實現(xiàn)注冊。該功能核心實現(xiàn)代碼為:
@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:/” ; }
游客可以點擊分類的標(biāo)簽進(jìn)入自己感興趣的標(biāo)簽下瀏覽文章。頁面?zhèn)鬟ftag 參數(shù)給list 列表,用list 方法首先對字符串進(jìn)行分離操作,形成字符數(shù)組tags,把tags 存入pagination 返回頁面。該功能通過給typename 賦值為數(shù)據(jù)庫里存放的文章類別名的數(shù)據(jù),typeid 為文章類別的對應(yīng)編號,通過文章類別名以及編號來確定該文章的類別,如果點擊某個類別,主界面會顯示該類別的相關(guān)文章信息。實現(xiàn)代碼為:
@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” ;}
用戶點擊發(fā)帖按鈕進(jìn)入發(fā)帖界面,輸入內(nèi)容。頁面?zhèn)鬟fteitle, description, tag,id 通過StringUtils.isBlank 做校驗,給question 對象傳入值返回首頁。該功能由Post 方式提交form 表單實現(xiàn)。實現(xiàn)代碼為:
if (StringUtils.isBlank(title)) {
model.addAttribute(” error” , ” 標(biāo)題不能為空” );
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:/” ;}
本文詳細(xì)敘述了基于SpringBoot+Bootstrap 技術(shù)的智超社區(qū)的設(shè)計與實現(xiàn),從系統(tǒng)的需求分析到總體設(shè)計再到測試驗收階段,該系統(tǒng)具有了BBS 論壇所具備的提問、點贊、評論、回復(fù)等功能。本系統(tǒng)綜合運(yùn)用SpringBoot 框架以及Bootstrap 框架實現(xiàn)開發(fā)以節(jié)省開發(fā)時間,并通過一些插件實現(xiàn)UI 設(shè)計,做到界面的干凈、簡潔、美觀。能夠為社區(qū)用戶們的交流提供良好的交流體驗。