小程序是如今比較熱門的一種移動端應用形式,跨平臺且用戶使用十分便利。爲此咱們選擇將咱們的應用開發在小程序上。小程序的前端框架咱們選擇了騰訊的wepy前端框架,該框架支持 npm 包,支持 css 預處理器,並且組件美觀且有完整的指導文檔,便於咱們學習以及完成咱們的開發任務。php
關於後端框架的選擇,咱們調研了基於python 的Django,Flask 框架,以及基於php 的ThinkPHP,基於java的JSP。最終咱們選擇了基於python語言的Django框架。願意以下:css
做爲手機APP,頁面是用戶直接接觸到的主要部分,也是前端的主要部分。合理的頁面佈局設計與頁面跳轉關係是確保用戶體驗的必要條件。前端
頁面的轉換關係以下圖,其中,矩形框表示具體頁面,連線表示頁面的跳轉,線上文字表示觸發跳轉的用戶動做。用戶按下返回按鍵時,返回當前頁面的上一級頁面。當前頁面上一級有多個頁面時,由哪一個頁面進入當前頁面,則返回哪一個頁面。java
頁面佈局設計在功能規格說明書中有詳細示意圖,此處再也不重複。設計的主要原則是儘可能清晰簡明的將該頁面中的主要信息傳達給用戶。python
/index
/register
/f
/p/<post_id>
/p/<post_id>/apply
/my/<ID>/post
/my/<ID>/apply
c/post
parameter數據庫
{ "account":"string", // 惟一,英文字母和數字,長度不超過14,以英文開頭 "password":"string" // 數字大小寫字母,標點符號,8~14個字符 }
returnnpm
{ "ret":"bool", //是否登陸成功 "ID":"string" // 用戶的惟一ID }
parameterjson
{ "account":"string", // 惟一,英文字母和數字,長度不超過14,以英文開頭 "password":"string", // 數字大小寫字母,標點符號,8~14個字符 "name":"string", //真實姓名 "age":"int", "studentID":"string", "sex":"string", "major":"string", "grade":"string" }
return小程序
{ "ret":"bool", //是否註冊成功 "ID":"string" // 用戶的惟一ID }
parameter後端
{ "title":"string", "postDetail":"string", "requestNum":"int", "ddl":"datetime", //YYYY-MM-DD "posterID":"string", }
return
{ "ret":"bool", //是否發佈成功 "postID":"string" // 帖子ID }
return
[ { "title":"string", "postDetail":"string", "requestNum":"int", "acceptedNum":"int", "ddl":"datetime", //YYYY-MM-DD "ifEnd":"bool", "postID":"string", "posterID":"string", }, ... ]
return
{ "title":"string", "postDetail":"string", "requestNum":"int", "acceptedNum":"int", "ddl":"datetime", //YYYY-MM-DD "ifEnd":"bool", "postID":"string", "posterID":"string", }
return
[ { "applyID":"string", "resume":"file", "applyStatus":"string", //接受,待定,結束 "applicantID":"string", }, ... ]
return
[ { "title":"string", "postDetail":"string", "requestNum":"int", "acceptedNum":"int", "ddl":"datetime", //YYYY-MM-DD "ifEnd":"bool", "postID":"string", "posterID":"string", }, ... ]
return
[ { "applyID":"string", "resume":"file", "applyStatus":"string", //接受,待定,結束 "applicantID":"string", }, ... ]
咱們定義錯誤處理類,對錯誤進行分類彙總,集中處理,目前暫時分爲以下幾大類,具體的細化會在開發的時候逐漸擴充。
咱們將功能抽象成獨立的接口,前端UI操做與後端響應函數與數據管理十分獨立,程序每一個頁面之間的實現也互相獨立,程序具備良好的擴展性以及應對變化的能力。
擁有較好的異常處理機制防止程序崩潰,對於模擬大量用戶同時操做的壓力測試目前尚未作。