计算机学院

项 目 报 告

2020 - 2021 学年 第 2 学期

课程名称: Android移动开发技术

项目名称: 单词本

学生姓名:

小组成员:

2021年 6 月

题目:单词本APP

1需求分析与系统设计

  1. 项目介绍

此项目是一个帮助记忆单词的单词本,用户输入要记忆的单词,系统会自动保存到sqllte数据库中,用户可以自行设置界面风格。设置单词记忆顺序等,可以查找单词,删除单词,以及隐藏中文。可以帮助用户更好的记忆单词。

  1. 功能需求
  1. 单词本可以通过用户输入中英文,来实现单词的添加。
  2. 用户可以随意开关某个单词的中文释义
  3. 用户可以删除已经添加的单词
  4. 用户关机或者退出应用不会导致单词本内的单词丢失
  5. 用户可以自定义单词本中单词的顺序
  6. 可以选择自己喜欢的界面风格
  7. 用户可以快捷的查找某个单词在有道上的详细信息
  8. 用户可以查找某个单词
    1. 功能需求及示意图
  1. 用户点击加号按钮输入单词,键盘会自动弹出并焦点在输入框,用户输入英文和中文释义,单词本上将在最上面显示这个单词,并会有下拉动画。用户可以通过上方放回箭头取消输入。

  1. 用户可以通过单词盘边的按钮来关闭或开启中文意思

  1. 向右滑可以删除单词,同时底部有提示信息,可以撤销删除,点击撤销可以还原被删除的单词

  1. 长按拖住上下滑动可以设置单词的优先级

  1. 搜索可以搜索相关的单词

  1. 菜单可以选择切换界面或者删除全部单词,将以卡片/列表显示单词

注:由于时间仓促,该部分的示意图以截图的形式替代。

1.4本程序需解决的有关技术问题

1. CardView 和 constraintLayout的布局切换

2.通过继承asyncTask实现多线程查询数据库

3.查询数据库过程中多个类的调用和封装解耦,模块化开发

4.通过livedate监听数据变化来改变视图显示。

5.如何通过滑动删除单词和如何改变单词位置

6.各个framgement之间的切换导航

1.5程序流程

  1. 程序启动后先通过MainActivity的onCreate方法
  1. 进入wordsFramgment类,通过MyAdaper new出单词列表
  1. 当通过监听WordViewModel发现数据发生改变时,会同时增删改单词列表条数
  1. 对数据改变的方法通过WordViewModel类中的方法调用WordReposity中的方法再调用WordDatabase或WordDao中的方法进行增删改或者查询

5.通过Word 建立数据库表和映射关系。

2系统实现

2.1类分析与设计

(1)Word类:

1.这个这个类定义了单词条目的属性:id word chineseWord chineseInvisible 并同时映射到数据库对应的属性字段;

2.定义了set/get方法用于存取数据

(2)WordDao类:

1.dao层用注解定义了增删改查方法

对于复杂查询,再注解中定义了sql语句:

A.

B.模糊查询并按倒叙排序

(3)WordDatabase类:

1.利用单例工厂模式,new了一个WordDataBase类,这个类继承了RoomDatabase,建立了数据库,用来通过getDatabase来实例化WordDao

Static 可以不需要new 就可以调用方法

Synchronized同步块只有一个再执行,反正多线程而new了多个实例

此方法构建并返回一个wordDao。同时此方法中还包含数据库的升级及修改方法

(4)WordRepository类:

1.多线程调用WordDao的方法完成增删改查。

2.主要功能是实现多线程

(5)WordViewModel类:

1.通过调用WordRepository类的方法完成增删改查

2.主要功能是处理数据相关功能,返回的LiveData可以监控数据变化,并再变化时调用相应方法来处理视图等。

(6)MainActivity类:

1.设置了视图导航。

2.重写了返回键的方法

(7)AddFragment类:

1.定义了添加单词界面的功能

2.进入界面后,将输入框聚焦在英语输入框上,并弹出键盘。

3.点击添加按钮后,通过WordViewModel将数据写入数据库,并通过导航回到主界面

(8)MyAdapter类

1.通过点击单词条,用intent并传入一个网址可以跳到有道词典搜索

2.通过查询数据库ChineseInvisible字段,初始化设置是否显示中文释义

(9)WordFragment类

1搜索功能

2.在WordsFragment中设置了菜单功能,点击清空数据会弹出alertDialog对话框,若选择确认,则调用wordViewModel中的deleteAll()方法删除所以数据;点击切换视图时,会先在SharePreferences中获得现在时什么视图的值,然后调用recyclerView的方法设置另一个视图。

3.用onChildDraw画滑动后面的灰色阴影和垃圾桶图标

4.点击悬浮按钮跳到添加单词界面

5.移动单词和滑动删除单词功能

2.2 界面布局

2.3关键实现

1.在AddFramgent中,若输入框两个都不为空,设置添加按钮可用

2.在MyAdapter中,监听开关,若发生改变显示/隐藏中文释义,同时修改数据库中ChineseVisible字段的值。

3.在WordsFragment中设置了菜单功能,点击清空数据会弹出alertDialog对话框,若选择确认,则调用wordViewModel中的deleteAll()方法删除所以数据;点击切换视图时,会先在SharePreferences中获得现在时什么视图的值,然后调用recyclerView的方法设置另一个视图。

4.滑动删除后会弹出一个snackbar,点击即可撤销删除

5.onMove()方法处理长按拖动事件,发生拖动时,替换两个Word的id,livedate检测到数据发生改变,就重新绘画界面

3系统测试

3.1程序存在的问题

(1)再添加单词页面点击上方或下方的返回,键盘不会消失

解决方法:再AddFagment中button触发方法中添加键盘回缩方法:

(2)在添加单词页面中,没有自动聚焦到英语单词输入框

解决方法:再onActivityCreate中添加方法

(3)若长按拖动速度过快,会导致有些单词的中文意思会自动隐藏。

(4)列表界面单词之间的分界不够明显

解决方法 再每个列表条目上添加下划线。

  1. 在部分手机版本中会出现搜索后单词丢失bug;

3.2运行过程示例

(1)添加单词: ---单词添加成功

(2)删除单词: ---删除单词成功

(3)中文释义显示/隐层: -成功

(4)切换视图: -成功

(5)搜索功能: --成功

(6)点击单词后跳到有道词典搜索详细详细 --成功

4总结与建议

本课程学习了andorid的开发,经过本次项目,对android开发的整体把握更加清楚。

通过模块化开发,对每个类更加清楚,对liveData..SharePreference..navigation等类的使用和数据库的操作有了更加深入的理解。

https://download.csdn.net/download/qq_39154376/85355334https://download.csdn.net/download/qq_39154376/85355334

安卓期末大作业——单词本APP(源码+任务书)相关推荐

  1. 安卓期末大作业——售票APP源码和设计报告

    大作业文档 项目名称: 售票app 专业: 班级: 学号: 姓名: 目 录 目录 一.项目功能介绍3二.项目运行环境31.开发环境32.运行环境33.是否需要联网3三.项目配置文件及工程结构31.工程 ...

  2. Android安卓期末大作业 新闻app 实现注册登录增删改查功能

    Android安卓期末大作业 新闻app (文末附下载链接) app情况如下图所示: 点我下载 https://download.csdn.net/download/weixin_43474701/7 ...

  3. 安卓期末大作业——鲜花商店APP(源码+任务书)

    安卓期末大作业--鲜花商店APP(源码+任务书) <移动应用开发> 课程考核报告 姓    名: 学    号: 完 成 日 期 2022年 5月 建议从以下方面填写:1. 课题的作用和意 ...

  4. 安卓期末大作业Android studio-记单词app(资源链接在文末,含注册登录,含设计报告,含导出app文件及源码导入方法文档)

    安卓期末大作业Android studio-记单词app(注册登录.增删改查) (资源下载链接在文末) 1.注册登录界面 2.用户点击加号按钮输入单词,键盘会自动弹出并焦点在输入框,用户输入英文和中文 ...

  5. 安卓期末大作业——猫咪社区(源码+任务书)

    安卓期末大作业--养猫论坛(源码+任务书) (第3期语音互动答疑)远程帮客户调试成功了猫咪社区APP.mp4 课题的作用和意义 随着我国孤独人口和丁克群体的增长,人们迫切需要一个事务来宣泄自己的感情, ...

  6. 安卓期末大作业——汉服社区(源码+任务书)

    安卓期末大作业--汉服社区(源码+任务书) 课题的作用和意义 汉族占中国人口的91%,是中国的主体民族,在越来越全球化的今天,我们正越来越多地,在不同场合,与不同的民族打交道,由此也就越是需要民族身份 ...

  7. 安卓期末大作业——校园二手街APP设计和实现

    安卓期末大作业--校园二手街APP设计和实现 目 录 1.引言 4 1.1 研究背景和意义 4 1.2 本文研究内容 4 1.3 论文结构安排 4 2.相关文献综述 5 2.1 关于移动互联网的地理社 ...

  8. 安卓期末大作业——番茄小说APP

    安卓期末大作业--仿番茄免费小说APP <移动应用开发实践>实践报告 APP名称: 番茄免费小说 要求: 格式:宋体,小四号字:首行缩进:行距:1.5倍. 每人独立完成Android Ap ...

  9. 安卓期末大作业——琴社商店,sqlite增删改查

    演示视频 (安卓期末大作业)琴店APP的运行演示视频 设计报告 建议从以下方面填写:1. 课题的作用和意义  2.课题综述  3.完成思路与方法  4.软件设计流程图(图示说明系统) 5. 课程设计的 ...

最新文章

  1. linux进程间通信:system V消息队列
  2. asp.net学习笔记 在GridView中添加链接
  3. 常用的20个正则表达式
  4. 美国计算机科学和计算机工程专业的好大学,2021USNews美国计算机工程专业排名一览表...
  5. 原来国家的名字可以如此浪漫!(ZZ)
  6. python selenium_Python+selenium自动化测试
  7. Tshark的使用问题
  8. oracle创建java程序并执行
  9. 拓端tecdat|用Rapidminer做文本挖掘的应用:情感分析
  10. python抽学号程序_Python 9行代码来随机抽学生回答指定问题
  11. 经历一番波折后的fedora以及wireshark
  12. AD封装库的免费下载与导入
  13. .NET Framework 4 中的新增功能【转载】
  14. 每日一词20190313——地图矢量化
  15. JavaScript-⑤代码
  16. fai 自动安装debian 7.4
  17. Adobe Photoshop(Ps)2023软件安装包下载及安装教程(mac+windows多版PS软件) 超级丰富的!
  18. 计算机网络安全的对策,计算机网络安全和对策.PDF
  19. LRU Cache 缓存
  20. 最大似然估计(机器学习)

热门文章

  1. Kali之——菜单中各工具功能
  2. 傅里叶变换及其应用笔记(part 1)
  3. Simon IELTS: Reading
  4. 跟着猴博士复试概率论(第二部分)
  5. python的循环语句有哪些_python的循环语句
  6. 支付宝的蚂蚁积分用途很多,别不当回事儿,用得好能省很多钱哦!
  7. sql 查询及格率优秀率
  8. 华为鲲鹏+银河麒麟v10 安装 docker-ce
  9. Java接入支付宝支付(沙箱)
  10. 找不到位于wsd扫描的计算机,在基于 Windows 的计算机上单击新扫描 Windows 传真和扫描时出现错误消息...