項目設計文檔


目錄

1. 開發規划

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

2. 總體設計

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

3. 數據結構

4. 接口規范

5. 模塊設計


1. 開發規划


1.1. 開發人員

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

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


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

2. 總體設計


2.1. 概念術語描述

標簽

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

日記

常規的日記。屬於一個日記本,並包含一系列標簽。

日記本

日記的容器,用於分門別類。

小紙條

碎片化的日記,可以用來寫碎片化的心情和感悟,方便查看與分享。屬於一個瓶子,並包含一系列標簽。

瓶子

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

情緒統計

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


### 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM