当前位置 博文首页 > dizebang0309的博客:项目设计文档

    dizebang0309的博客:项目设计文档

    作者:[db:作者] 时间:2021-08-27 16:08

    目录

    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类

    接口名称参数返回值功能
    Diarynullnull空构造方法
    DiaryString(内容)null以内容构造日记
    getTextnullString(内容)获取日记内容
    setTextString(新的内容)null设置/修改日记内容
    getDatenullDate(日期)获取日记日期
    setDatenullnull新建并初始化日记日期
    setDateData(新的日期)null设置/修改日记日期
    getDiarybooknullDiarybook(日记所在日记本)获取日记所在日记本
    setDiarybookDiarybook(指定的日记本)null一个普通的setter方法,设置diary book属性
    insertDatabaseHelper(数据库助手)null添加日记
    updateDatabaseHelper(数据库助手)null修改日记
    deleteDatabaseHelper(数据库助手)null删除日记
    insertLabelDatabaseHelper(数据库助手),Label(添加的标签)null给日记添加新标签
    deleteLabelDatabaseHelper(数据库助手),Label(指定的标签)null删除指定标签
    getByDateDatabaseHelper(数据库助手),Date(指定的日期)List<Diary>(日记列表)获取指定日期的所有日记
    getAllDatabaseHelper(数据库助手),Boolean(表示顺序,true为按创建日期升序排列,即最早的在最前面;false为按创建日期降序排列,即最晚的在最前面)List<Diary>(日记列表)获取所有日记
    getAllLabelDatabaseHelper(数据库助手)List<Label>(标签列表)获取日记的所有标签
    getByRestrictDatabaseHelper(数据库助手),String(特定字段),Date(起始日期),Date(终止日期),List<Label>(标签列表),Boolean(表示顺序,类似前述)List<Diary>(日记列表)获取所有符合条件的日记
    countByDateLabelDatabaseHelper(数据库助手),Date(起始日期),Date(终止日期),List<Label>(标签列表)long(日记数量)统计符合条件的日记数量


    Label类

    接口名称参数类型返回值类型功能
    Labelnullnull空构造方法
    LabelString(标签名)null以名称构造标签
    getLabelnamenullString(标签名)获取标签名称
    setLabelnameString(新的标签名)null设置/修改标签名称
    insertDatabaseHelper(数据库助手)boolean(是否成功)添加标签
    deleteDatabaseHelper(数据库助手)null删除标签
    getAllLabelDatabaseHelper(数据库助手)List<Label>(标签列表)获取所有标签


    Sentence类

    接口名称参数类型返回值类型功能
    Sentencenullnull空构造方法
    SentenceString(内容)null以内容构造纸条
    getTextnullString(内容)获取纸条内容
    setTextString(新的内容)null设置/修改纸条内容
    getDatenullDate(日期)获取纸条日期
    setDatenullnull新建并初始化纸条日期
    setDateDate(新的日期)null设置/修改纸条日期
    getSentencebooknullSentencebook(纸条所在瓶子)获取纸条所在瓶子
    setSentencebookSentencebook(指定的瓶子)一个普通的setter方法,设置diary book属性
    insertDatabaseHelper(数据库助手)null添加纸条
    updateDatabaseHelper(数据库助手)null修改纸条
    deleteDatabaseHelper(数据库助手)null删除纸条
    insertLabelDatabaseHelper(数据库助手),Label(添加的标签)null给纸条添加新标签
    deleteLabelDatabaseHelper(数据库助手),Label(指定的标签)null删除指定标签
    getByDateDatabaseHelper(数据库助手),Date(指定日期)List<Sentence>(纸条列表)获取指定日期的所有纸条
    getAllDatabaseHelper(数据库助手),Boolean(表示顺序,类似前述)List<Sentence>(纸条列表)获取所有纸条
    getAllLabelDatabaseHelper(数据库助手)List<Label>(标签列表)获取纸条的所有标签
    getByRestrictDatabaseHelper(数据库助手),String(特定字段),Date(开始日期),Date(终止日期),List<Label>(标签列表),Boolean(表示顺序,类似前述)List<Sentence>(纸条列表)获取所有符合条件的纸条
    countByDateLabelDatabaseHelper(数据库助手),Date(开始日期),Date(终止日期),List<Label>(标签列表)long(纸条数量)统计符合条件的纸条数量


    Diarybook类

    接口名称参数类型返回值类型功能
    Diarybooknullnull空构造方法
    DiarybookString(日记本名)null以名称构造日记本
    getDiarybookNamenullString(日记本名)获取日记本名称
    setDiarybookNameString(新的日记本名)null设置/修改日记本名称
    getAllSubDiaryDatabaseHelper(数据库助手)List<Diary>(日记列表)获取日记本中所有日记
    deleteSubDiaryDatabaseHelper(数据库助手)null删除日记本中所有日记
    insertDatabaseHelper(数据库助手)null添加日记本
    updateDatabaseHelper(数据库助手)null修改日记本
    deleteDatabaseHelper(数据库助手)null删除日记本
    getAllDatabaseHelper,BooleanList获取所有diary book;Boolean参数无意义
    `getByName(DatabaseHelper, String(名字)Diarybook通过名字获取一个diary book,如无该名字的则返回null


    Sentencebook类

    接口名称参数类型返回值类型功能
    Sentencebooknullnull空构造方法
    SentencebookString(瓶子名)null以名称构造瓶子
    getSentencebookNamenullString(瓶子名)获取瓶子名称
    setSentencebookNameString(新的瓶子名)null设置/修改瓶子名称
    getAllSubSentenceDatabaseHelper(数据库助手)List<Sentence>(纸条列表)获取瓶子中所有纸条
    deleteSubSentenceDatabaseHelper(数据库助手)null删除瓶子中所有纸条
    insertDatabaseHelper(数据库助手)null添加瓶子
    updateDatabaseHelper(数据库助手)null修改瓶子
    deleteDatabaseHelper()数据库助手null删除瓶子
    getAllDatabaseHelper,BooleanList获取所有sentence book;Boolean参数无意义
    `getByName(DatabaseHelper, String(名字)Sentencebook通过名字获取一个sentence book,如无该名字的则返回null


    DiaryLabel类

    接口名称参数类型返回值类型功能
    DiaryLabelnullnull空构造方法
    DiaryLabelDiary(日记),Label(日记关联的一个标签)null以日记<标签构造关系
    getDiarynullDiary(在一组日记<标签关系中的日记)获取关系中的日记
    getLabelnullLabel(在一组日记<标签关系中的标签)获取关系中的标签
    setDiaryDiary(在一组日记<标签关系中的日记)null设置关系中的日记
    setLabelLabel(在一组日记<标签关系中的标签)null设置关系中的标签
    insertDatabaseHelper(数据库助手)null添加关系
    deleteDatabaseHelper(数据库助手)null删除关系


    SearchHistory类

    接口名称参数类型返回值类型功能
    SearchHistorynullnull空构造方法
    SearchHistoryString(条目的内容)null以条目构造历史记录
    getEntrynullString(条目的内容)获取条目
    getAllDatabaseHelper(数据库助手)List<SearchHistory>(历史记录列表)获取所有历史记录
    deleteEntryDatabaseHelper(数据库助手)null删除条目
    deleteAllEntryDatabaseHelper(数据库助手)null删除所有条目


    注:以上带加粗的为构造方法,带底纹的为静态方法。

    5. 模块设计


    5.1. 安卓数据库模块

    使用安卓自带的sqlite数据库,完成各种信息的存储。为了方便编码,使用了ormlite框架。为了给数据加密,使用sqlcipher开源包。

    基本表结构:
    1344816-20180528011335429-249109953.png


    5.2. 服务器模块

    使用数据库,管理一张用户名、密码、用户信息的表,并存储每个用户同步的数据库数据。对于用户需要同步的文件,存在每个用户各自的文件夹下。


    5.3. 网络通信模块

    使用服务器与安卓各自的网络功能,完成通信。


    5.4. UI模块

    详见2.3

    cs
    下一篇:没有了