项目设计文档

目录

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

posted @ 2018-05-28 01:04  HeartTrace  阅读(10567)  评论(0编辑  收藏  举报