項目設計文檔

目錄

1. 開發規劃

1.1. 概念術語描述
1.2. 基本設計描述
1.3. 主要界面流程描述

2. 整體設計

2.1. 開發人員
2.2. 開發環境與工具

3. 數據結構

4. 接口規範

5. 模塊設計


1. 開發規劃


1.1. 開發人員

陳兆庭、黃志鵬、吳雪晴:負責數據庫部分編碼,服務器部分編碼,服務器與安卓端通訊部分編碼git

胡宇晨、康鑫、林靜雯、塗涵越:負責用戶界面部分編碼,及數據處理邏輯的編碼github


1.2. 開發環境和工具

工具 做用
Android Studio 安卓開發IDE
Ubuntu 服務器端系統
服務器端環境 提供web服務器功能
github 團隊項目管理


2. 整體設計


2.1. 概念術語描述

標籤web

描述日記、小紙條的屬性。包括情緒類標籤、生活類標籤等。sql

日記數據庫

常規的日記。屬於一個日記本,幷包含一系列標籤。服務器

日記本網絡

日記的容器,用於分門別類。數據結構

小紙條框架

碎片化的日記,能夠用來寫碎片化的心情和感悟,方便查看與分享。屬於一個瓶子,幷包含一系列標籤。工具

瓶子

小紙條的容器,用於分門別類。

情緒統計

根據情緒類標籤對一段時間的情緒進行統計。


2.2.基本設計描述

1.可以書寫與查看日記和瓶子,支持富文本編輯。

2.可以在日記與瓶子中加入音樂、圖片等多媒體信息。

3.可以對數據進行加密。

4.可以註冊新用戶並登陸,根據用戶將數據與服務器端同步。

5.UI清新怡人。


2.3主要界面功能流程描述


主界面:



功能1:展現、查看日記。

以時間軸的方式展現最近的日記。

點擊日記跳轉到日記的查看界面。

功能2:編輯、刪除日記。

長按日記:可選擇編輯、刪除日記。

功能3:新寫一篇日記

點擊寫日記的按鈕,跳轉到編寫日記界面,新寫一篇日記。

功能4:進入瓶子界面。

點擊瓶子按鈕進入瓶子界面。

功能5:展現我的信息。

在標題欄左側的滑動目錄,展現我的信息如頭像、郵箱等。

功能6:進入統計界面

在標題欄左側的滑動目錄中可進入統計界面。

功能7:設置。

標題欄右側目錄點擊設置進入設計界面。

功能8:搜索。

標題欄右側點擊搜索進入搜索界面。

功能9:日曆。

標題欄右側點擊搜索進入日曆界面。

功能10:標籤管理

標題欄左側進入標籤管理

功能11:數據同步


搜索界面:

功能1:按標籤搜索

功能2:按時間搜索

功能3:可選範圍(日記/紙條/所有)

功能4:顯示搜索歷史

多瓶子界面:

功能1:添加、刪除一個瓶子。

添加過程當中給瓶子取一個名字,長按刪除瓶子

功能2:查看瓶子具體內容。

進入瓶子,查看瓶子的描述,瓶子裏的紙條。


瓶子界面:

功能1:刪除該瓶子

功能2:編輯該瓶子的相關信息(瓶子名字和描述)

功能3:添加、刪除、編輯瓶子中的紙條,編輯紙條進入紙條編輯界面。

功能4:查看紙條、進入查看界面。


日記查看界面:

功能1:進入日記編輯界面

功能2:查看前一篇日記,後一篇日記


紙條查看界面:

功能1:進入紙條編輯界面。

功能2:查看前一張紙條,後一張紙條。


標籤管理界面:

功能1:添加標籤、刪除標籤

功能2:創建標籤組

功能3:進入標籤組設置統計功能界面

標籤組統計功能界面:

功能1:選擇統計方式

功能2:進入統計模塊

功能3:查看該標籤組過去統計數據。


日曆界面:

功能1:經過點擊日曆某一天來選中改日期

功能2:經過點擊日曆圖標彈出上拉框實現快速選擇日期

功能3:根據選中日期,在界面下方顯示當天的日記內容(縮略)

功能4:上滑日記記錄列表,顯示更多列表信息,日曆由月模式顯示改成周模式顯示

功能5:點擊某一條日記記錄跳轉到詳情展現界面

功能6:點擊圖片返回當前日期

功能7:左右滑動日曆時根據不一樣的月份顯示不一樣的圖片

寫日記界面:

功能1:輸入文本

功能2:點擊圖片圖標,插入本地圖片

功能3:根據展現的背景樣例,點擊相應背景圖片設置背景

功能4:滑動seekbar設置字體大小

功能5:根據展現的字體樣例,點擊相應按鈕設置文本字體

功能6:點擊確認圖標,儲存日記文件並跳轉到詳情界面

寫瓶子界面:

功能1:點擊編輯圖標,跳轉到寫紙條界面(和寫日記界面基本相同,只支持文本輸入)

功能2:點擊圖片圖標,選擇本地圖片並插入

功能3:點擊肯定圖標,保存瓶子內容,並跳轉到瓶子的展現界面

情緒統計界面:

功能1:選擇日期範圍

功能2:根據選擇的日期範圍,獲取情緒值,將其在圖表上顯示出來

登陸/註冊界面:

功能1:點擊登錄彈出登陸對話框,用戶需輸入帳號和密碼,若是帳號不存在,自動彈出註冊界面

功能2:點擊註冊彈出註冊界面

註冊界面描述:輸入基本信息,包括暱稱、性別、手機號/郵箱,點擊確認完成註冊,並跳轉到主界面

我的信息界面:

功能1: 設置暱稱、頭像

功能2: 跳轉修改用戶信息界面。

功能3: 退出登陸

修改用戶信息界面:

功能1: 修改郵箱

功能2: 修改綁定手機

功能3: 修改密碼


3. 數據結構


本地數據庫:

表名 做用
Diary 存儲日記信息
Diarybook 存儲日記本信息
Sentence 存儲小紙條信息
Sentencebook 存儲瓶子信息
Label 標籤
DiaryLabel 存儲日記與標籤的對應關係
SentenceLabel 存儲小紙條與標籤的對應關係
SearchHistory 存儲搜索歷史記錄
SearchResults 存儲歷史搜索結果


服務器數據庫:

表名 做用
Users 存儲用戶信息

各個用戶數據存儲的表結構還沒有肯定。

4. 接口規範


4.1 數據庫接口


Diary類

接口名稱 參數 返回值 功能
Diary null null 空構造方法
Diary String(內容) null 之內容構造日記
getText null String(內容) 獲取日記內容
setText String(新的內容) null 設置/修改日記內容
getDate null Date(日期) 獲取日記日期
setDate null null 新建並初始化日記日期
setDate Data(新的日期) null 設置/修改日記日期
getDiarybook null Diarybook(日記所在日記本) 獲取日記所在日記本
setDiarybook Diarybook(指定的日記本) null 一個普通的setter方法,設置diary book屬性
insert DatabaseHelper(數據庫助手) null 添加日記
update DatabaseHelper(數據庫助手) null 修改日記
delete DatabaseHelper(數據庫助手) null 刪除日記
insertLabel DatabaseHelper(數據庫助手),Label(添加的標籤) null 給日記添加新標籤
deleteLabel DatabaseHelper(數據庫助手),Label(指定的標籤) null 刪除指定標籤
getByDate DatabaseHelper(數據庫助手),Date(指定的日期) List<Diary>(日記列表) 獲取指定日期的全部日記
getAll DatabaseHelper(數據庫助手),Boolean(表示順序,true爲按建立日期升序排列,即最先的在最前面;false爲按建立日期降序排列,即最晚的在最前面) List<Diary>(日記列表) 獲取全部日記
getAllLabel DatabaseHelper(數據庫助手) List<Label>(標籤列表) 獲取日記的全部標籤
getByRestrict DatabaseHelper(數據庫助手),String(特定字段),Date(起始日期),Date(終止日期),List<Label>(標籤列表),Boolean(表示順序,相似前述) List<Diary>(日記列表) 獲取全部符合條件的日記
countByDateLabel DatabaseHelper(數據庫助手),Date(起始日期),Date(終止日期),List<Label>(標籤列表) long(日記數量) 統計符合條件的日記數量


Label類

接口名稱 參數類型 返回值類型 功能
Label null null 空構造方法
Label String(標籤名) null 以名稱構造標籤
getLabelname null String(標籤名) 獲取標籤名稱
setLabelname String(新的標籤名) null 設置/修改標籤名稱
insert DatabaseHelper(數據庫助手) boolean(是否成功) 添加標籤
delete DatabaseHelper(數據庫助手) null 刪除標籤
getAllLabel DatabaseHelper(數據庫助手) List<Label>(標籤列表) 獲取全部標籤


Sentence類

接口名稱 參數類型 返回值類型 功能
Sentence null null 空構造方法
Sentence String(內容) null 之內容構造紙條
getText null String(內容) 獲取紙條內容
setText String(新的內容) null 設置/修改紙條內容
getDate null Date(日期) 獲取紙條日期
setDate null null 新建並初始化紙條日期
setDate Date(新的日期) null 設置/修改紙條日期
getSentencebook null Sentencebook(紙條所在瓶子) 獲取紙條所在瓶子
setSentencebook Sentencebook(指定的瓶子) 一個普通的setter方法,設置diary book屬性
insert DatabaseHelper(數據庫助手) null 添加紙條
update DatabaseHelper(數據庫助手) null 修改紙條
delete DatabaseHelper(數據庫助手) null 刪除紙條
insertLabel DatabaseHelper(數據庫助手),Label(添加的標籤) null 給紙條添加新標籤
deleteLabel DatabaseHelper(數據庫助手),Label(指定的標籤) null 刪除指定標籤
getByDate DatabaseHelper(數據庫助手),Date(指定日期) List<Sentence>(紙條列表) 獲取指定日期的全部紙條
getAll DatabaseHelper(數據庫助手),Boolean(表示順序,相似前述) List<Sentence>(紙條列表) 獲取全部紙條
getAllLabel DatabaseHelper(數據庫助手) List<Label>(標籤列表) 獲取紙條的全部標籤
getByRestrict DatabaseHelper(數據庫助手),String(特定字段),Date(開始日期),Date(終止日期),List<Label>(標籤列表),Boolean(表示順序,相似前述) List<Sentence>(紙條列表) 獲取全部符合條件的紙條
countByDateLabel DatabaseHelper(數據庫助手),Date(開始日期),Date(終止日期),List<Label>(標籤列表) long(紙條數量) 統計符合條件的紙條數量


Diarybook類

接口名稱 參數類型 返回值類型 功能
Diarybook null null 空構造方法
Diarybook String(日記本名) null 以名稱構造日記本
getDiarybookName null String(日記本名) 獲取日記本名稱
setDiarybookName String(新的日記本名) null 設置/修改日記本名稱
getAllSubDiary DatabaseHelper(數據庫助手) List<Diary>(日記列表) 獲取日記本中全部日記
deleteSubDiary DatabaseHelper(數據庫助手) null 刪除日記本中全部日記
insert DatabaseHelper(數據庫助手) null 添加日記本
update DatabaseHelper(數據庫助手) null 修改日記本
delete DatabaseHelper(數據庫助手) null 刪除日記本
getAll DatabaseHelper,Boolean List 獲取全部diary book;Boolean參數無心義
`getByName(DatabaseHelper, String(名字) Diarybook 經過名字獲取一個diary book,如無該名字的則返回null


Sentencebook類

接口名稱 參數類型 返回值類型 功能
Sentencebook null null 空構造方法
Sentencebook String(瓶子名) null 以名稱構造瓶子
getSentencebookName null String(瓶子名) 獲取瓶子名稱
setSentencebookName String(新的瓶子名) null 設置/修改瓶子名稱
getAllSubSentence DatabaseHelper(數據庫助手) List<Sentence>(紙條列表) 獲取瓶子中全部紙條
deleteSubSentence DatabaseHelper(數據庫助手) null 刪除瓶子中全部紙條
insert DatabaseHelper(數據庫助手) null 添加瓶子
update DatabaseHelper(數據庫助手) null 修改瓶子
delete DatabaseHelper()數據庫助手 null 刪除瓶子
getAll DatabaseHelper,Boolean List 獲取全部sentence book;Boolean參數無心義
`getByName(DatabaseHelper, String(名字) Sentencebook 經過名字獲取一個sentence book,如無該名字的則返回null


DiaryLabel類

接口名稱 參數類型 返回值類型 功能
DiaryLabel null null 空構造方法
DiaryLabel Diary(日記),Label(日記關聯的一個標籤) null 以日記<標籤構造關係
getDiary null Diary(在一組日記<標籤關係中的日記) 獲取關係中的日記
getLabel null Label(在一組日記<標籤關係中的標籤) 獲取關係中的標籤
setDiary Diary(在一組日記<標籤關係中的日記) null 設置關係中的日記
setLabel Label(在一組日記<標籤關係中的標籤) null 設置關係中的標籤
insert DatabaseHelper(數據庫助手) null 添加關係
delete DatabaseHelper(數據庫助手) null 刪除關係


SearchHistory類

接口名稱 參數類型 返回值類型 功能
SearchHistory null null 空構造方法
SearchHistory String(條目的內容) null 以條目構造歷史記錄
getEntry null String(條目的內容) 獲取條目
getAll DatabaseHelper(數據庫助手) List<SearchHistory>(歷史記錄列表) 獲取全部歷史記錄
deleteEntry DatabaseHelper(數據庫助手) null 刪除條目
deleteAllEntry DatabaseHelper(數據庫助手) null 刪除全部條目


注:以上帶加粗的爲構造方法,帶底紋的爲靜態方法。

5. 模塊設計


5.1. 安卓數據庫模塊

使用安卓自帶的sqlite數據庫,完成各類信息的存儲。爲了方便編碼,使用了ormlite框架。爲了給數據加密,使用sqlcipher開源包。

基本表結構:


5.2. 服務器模塊

使用數據庫,管理一張用戶名、密碼、用戶信息的表,並存儲每一個用戶同步的數據庫數據。對於用戶須要同步的文件,存在每一個用戶各自的文件夾下。


5.3. 網絡通訊模塊

使用服務器與安卓各自的網絡功能,完成通訊。


5.4. UI模塊

詳見2.3

相關文章
相關標籤/搜索