移动平台课程设计--日记本
瞬时日记
一、概述
(一)研究背景
人们在生活或工作中,都会有很多事情需要记录下来,比如美好的生活瞬间和重要的大事件等等,以便于保存和查看。瞬间日记的基本功能就是记录,不需要纸和笔,随时可以记录信息,以文字形式,图片形式,语言形式等多种方式瞬间记录,这样更自由与便携。
(二)研究意义
帮助我们珍藏哪些回忆,岁月流逝,当我们翻开日记的时候,往日就会重视。那些美好的事物与岁月总是能让我们欣然一笑。那些不开心的也可以重新品味。也许日后翻阅以前的日记,我们会觉得当初的做法不是最好的解决方法,事情可以换一个角度去思考,或许会有更好的效果,让我们学会自我反省,而且不断的完善子自我个方面的不足之处。
二、系统设计
(一)关键设计
让瞬间日记APP包含搜索功能、日记锁功能、分享功能、拍照保存、获取照片和到时提醒功能等
(二)系统设计
1.系统管理结构图
2.数据库设计
创建bean文件夹存放共公类,它们相对应数据库中的数据表,这些模型将被访问数据库的SQLBean类和程序中各个模块和控件所使用。数据模型是对数据表中所有字段的封存,主要通过get和set方法实现获取数据和存储数据。
为了实现日记信息的保存,需要用到数据库,片刻日记采用SQLite数据库,在创建数据库时,是在DatabaseOperation类里创建create_db()方法来实现创建数据库和数据表。
其中使用openOrCreateDatabase()方法实现数据库的创建,使用execSQL()方法实现数据表创建。Insert_ab()插入日记,update_db()更新日记,query_db()查询日记,query_db(int item_ID)通过主键查询日记,query_db(String keword)通过日记内容查询,query_db (String starttime, String endtime)时间范围内查询日记,delete_db(int item_ID)删除日记。
主要实现功能
三、系统实现
1.首页日记列表功能
MianActivity主要函数图
在首页上显示日记列表及创建日期,点击界面下面的新增按钮,可以添加日记。为了实现在首页上显示日记列表,需要从数据库里获取日记信息,并将信息显示在首页上。首先在MainActivity类中,创建showNotesList()方法,在该方法中,使用Cursor类读取数据库信息,然后通过while循环取出数据内容,最后使用自定义适配器MainAdapter将数据装载到首页记事列表里。
主页面跳转跳转结构图
2.实现列表长按编辑/删除功能
为首页日记列表中单条日记添加编辑和删除功能,长按首页中的单条日记会弹出对话框,可以选择对日记是进行编辑还是删除操作。
为了实现列表长按功能,需要为首页列表添加setOnItemLong ClickListener()方法实现长按事件,在Android生命周期的onStrart()方法里添加该事件,启动当前页面就会给列表绑定长按事件。
创建ItemLongClickEvent类,让其继承OnItemLongClickListener用于监听列表长按事件,在onItemLongClick()方法里实现长按事件需要实现的内容。首先初始化单条列表上的控件,然后获取控件上的内容,再把获取到的单条日记id,是否已添加了锁,以及日记锁密码传递给simpleList()方法,用于接下来的操作。其中,日记id用于操作,日记锁信息用于解锁和判断是否跳转到解锁页面。
使用AlertDialog控件实现弹出编辑/删除选择弹窗,根据传递过来的信息保存日记id:日记锁信息用于处理onClick()方法里编辑和删除后的操作。单击“编辑”按钮,如果没有密码锁,则进入编辑页面,如果有密码,则弹出解锁弹窗,需要输入密码:单击删除按钮,如果没有密码,则删除日记,则弹出密码解锁弹窗,输出正确密码则删除该条信息。
3.搜索功能设计
搜索功能包括按关键字搜索和按日期搜索
(1)关键字搜索
实现按关键字进行搜索的具体步骤如下:
① 通过getText()方法,获取搜索控件上输入的关键字,并判断是否为空,然后使用putExtra()方法,传递关键字到搜索结果页。
② 在SearchActivity类中使用getStringExtra()方法获取传递过来的参数。
③ 为了实现显示搜索结果列表,首先需要使用query_db()方法
根据关键字从数据库中获取搜索结果,并保存在Cursor中,然后通过while循环列表获取的单条信息保存到List数组里,最后使用自定义适配器MainAdapter将List数组里的日记信息显示到页面上在DatabaseOperation类中,使用rawQuery()方法,根据关键字从数据库中模糊查询需要的内容。
(2)按日期搜索
使用query_db()方法根据开始日期和结束日期查询相关记事信息。在DatabaseOperation类中,使用rawQuery()方法,根据日期查询某个日记范围内数据库里的数据。
4.新增日记功能设计
(1)新增日记布局设计
点击首页页面下方的添加按钮,进入新增记事页面,在layout目录下创建布局文件,作为新增日记的布局。
(2)保存日记信息功能
实现保存日记信息功能的步骤如下:
① 为了实现将记事内容保存到数据库,需要判断是否为新增数据,如果是新增数据,则使用insert_db()方法将内容插入到数据库中:如果不是新增数据,则使用update_db()方法对数据原有内容进行更新,单击保存按钮保存信息。
② DatabaseOperation类中插入数据信息,在insert_db()方法中使用execSQL()方法向数据库中插入信息。
5.加载底部菜单
底部菜单包括拍照,选择手机本地图片,选择拍照照片和设置提醒时间共三个功能按钮
(1) 对相关控件进行声明,包括底部菜单GridView控制以及底部菜单图片集合,用于完成底部菜单的加载
(2) 为了显示底部菜单,需要在initBottomMenu()方法中,使用for循环,循环插入底部菜单图片,并使用SimpleAdapter适配器配置底部菜单。
(3) 为了实现底部菜单单击事件,需要使用setOnItemClickListene
方法,为底部菜单绑定单击事件。
(4) 根据功能绑定底部菜单单击事件,其中包含照片,拍照,提醒设置,并使用Intent跳转到相应的功能页面,其中startActivityFor Result()为回调方法,在onActivity()方法里对接收回调回来的信息进行处理。
6.日记分享功能设计
获取Android自定义分享功能,将日记内容生成图片。
(1)实现获取日记内容生成图片
获取日记内容并将其生成图片,因为日记内容包含在ScrollView控件中,所以需要获取ScrollView控件中内容生成图片并保存
为了实现保存图片,需要先使用File类创建文件,再使用FileOut putStream将图片换成“.jpg”格式文件,并将其保存在文件中。
(2)分享图片
实现分享图片功能,首先需要使用Environment.getExternal
StorageDirectory()方法获取文件,然后使用Uri.fromFile()方法获取字符串形式的文件路径,最后使用Intent调用分享功能,实现分享文件路径下的日记内容图片。
7.设置/取消日记锁功能
设置日记锁会弹出设置密码框,设置日记锁页面样式。
(1)密码输入框设计
为了实现密码输入框,自定义AlertDialog样式,用于密码的设置。首先创建EditText输入框,将其加入到AlertDialog中作为密码输入框,然后在“确定”按钮的onClick()方法单击事件中,判断是否设置密码成功,如果设置成功,则使用setBackgroundResource()方法设置添加密码锁后的图片背景,并使用Toast方法弹出消息提示框,提示是否设置成功。
(2)设置取消日记锁
设置取消日记锁,需要先使用locktype判断日记状态是否设置了密码,如果没有设置密码,则使用inputlockDialog()方法弹出设置密码锁:如果已经设置了密码,则使用inputunlockDialog()方法弹出取消密码锁弹窗
自定义AlertDialog,实现取消密码锁弹窗。其中,首先使用set Title()方法设置标题,然后使用setPositiveButton()方法设置按钮,在使用setBackgroundResource()方法设置没有密码锁后的背景图片,并使用Toast方法弹出提示框,提示密码已经取消,最后使用show()方法设置弹出成功取消密码锁的弹出窗
8.选择本地图片保存到日记
选择本地图片保存到日记,实现步骤如下:
① 使用Intent调用相册,选择要保存的图片。此时需要使用setType()方法设置intent类型,并且使用startActivityResult()方法把选择的图片信息传到上一个页面
② 选择图拍后,回到程序。首先使用onActivityResult()回调方法接收回调信息,然后使用MediaStore.Images.Media.DATA获取图拍呢路径,再使用BitmapFactory.decodeStream()方法将接受的图片保存到Bitmap中,最后使用InsertBitmap()方法将图片插入到日记信息里。
9.调用相册拍照图片保存到日记
调用手机相机拍照,并且返回拍照图片路径。把拍照图片保存到日记里,具体步骤如下:
① 使用Intent调用相机拍照,需要使用startActivityForResult()方法将照片信息回调到上一个界面。
② 将拍照照片保存到指定的文件夹,首先使用System.current TimeMillis()方法获得系统当前时间,并以该时间作为文件名,然后使用onActivityResult()回调方法接收回调信息,再使用MediaStore.
Image.Media.DATA获取图片路径,并使用BitmapFactory.decodeStrea方法将接收的图片保存到Bitmap中,最后使用InsertBitmap()方法将图片插入到日记信息里。
10.到时提醒功能
(1)自定义时间选择弹窗
创建data文件夹,在该文件夹中创建DataTimePickDialog类,用于自定义提醒时间设置的选择弹窗。
(2)设置提醒时间
到时提醒功能,需要设置提醒时间,设置提醒时间的弹窗样式。
实现设置提醒时间选择框,首先需要调用自定义DataTimePickDialog类,用于实现日期及时间的选择弹窗,然后使用onDataTimeSet()方法获取选择时间,再使用formatter.format()方法设置时间格式,最后使用setText()方法设置显示的提醒时间。
四、系统测试
五、文章总结
这里放上代码欢迎大家来踩踩
移动平台课程设计--日记本相关推荐
- javaweb基于SSM开发商城NBA网商购物平台 课程设计 毕业设计源码
基于SSM开发NBA网商购物平台:(毕业设计/课程设计) 开发工具: Eclipse+Jdk+Tomcat+MySQL数据库 演示视频: javaweb基于SSM开发NBA运动购物平台商城系统源码 运 ...
- 图书管理系统C语言程序设计课程,vs c语言图书管理平台课程设计_图书管理平台c语言程序设计_c语言课程设计 图书管理系统...
#include #include #include #include //#include #define MAX 100 struct Student { int num;/*书代号*/ char ...
- JSP、Servlet+MySQL线上网上图书商城书城书店系统平台课程设计JQuery
wx供重浩:创享日记 对话框发送:网上书城 获取完整源码源文件+文档资料+论文报告等 传智播客网上图书商城是典型的网上购物实践中最为普遍的电子商务企业对客户(B2C)模式,主要包括会员注册.订单管理. ...
- 计算机网络课程设计小程序,网络课程设计(简单聊天系统的设计与实现).doc
网络课程设计(简单聊天系统的设计与实现) 简单聊天程序的设计与实现 摘 要 本课程设计主要是设计并实现一个简单的聊天程序,该聊天程序能够支持多人聊天,聊天的内容可以仅仅支持文本信息,聊天程序包括服务器 ...
- 计算机组成原理精品课程申报书,【计算机科学与技术专业】【毕业设计】计算机组成原理精品课程平台的设计与实现...
[计算机科学与技术专业][毕业设计]计算机组成原理精品课程平台的设计与实现 (25页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 ( 2 ...
- 基于tutk方案的p2p源码_基于JAVA的局域网文件共享平台P2P实训项目源码(毕业设计 课程设计)...
[实例简介] 基于JAVA的局域网文件共享平台P2P实训项目源码(毕业设计 课程设计). 可直接运行.做毕业设计.课程设计或者想研究下技术的可以下载学习.需要更多资源的可以关注我. [实例截图] [核 ...
- 【毕业设计_课程设计】基于python的微信公众平台机器人的设计与实现
文章目录 0 项目说明 项目介绍 项目工程 0 项目说明 基于python的微信公众平台机器人的设计与实现 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 项目介绍 1.NGINX做负载均衡, ...
- C#课程设计(购物平台)
C#课程设计 1.开发环境 VS2019,SQL2012,winform窗体设计 2.项目主题 刚好完成了C#的课程设计,觉得该好好纪念一下((✪ω✪)),这是一个超市线上购物平台,虽然明明知道 ...
- Springboot课程教学平台设计与实现4mu05计算机毕业设计-课程设计-期末作业-毕设程序代做
Springboot课程教学平台设计与实现4mu05计算机毕业设计-课程设计-期末作业-毕设程序代做 [免费赠送源码]Springboot课程教学平台设计与实现4mu05计算机毕业设计-课程设计-期末 ...
- 【免费赠送源码】Springboot剧本杀交流分享平台1p7vg计算机毕业设计-课程设计-期末作业-毕设程序代做
[免费赠送源码]Springboot剧本杀交流分享平台1p7vg计算机毕业设计-课程设计-期末作业-毕设程序代做 [免费赠送源码]Springboot剧本杀交流分享平台1p7vg计算机毕业设计-课程设 ...
最新文章
- 企业可视化报表工具选型经验分享
- 2020年一季度中小微企业收入平均下降69.5%
- 卷积神经网络CNN 手写数字识别
- 【推荐】极简数独1.0源码
- 纯js实现html转pdf
- 计算机网络项目——最小网元设计(阶段四)
- java map put报错_java 集合(Map)
- 最后一战 源代码_不会为争冠出卖灵魂!卡特职业生涯最后一章:“半神半人”的切换...
- post和php input,PHP“php:/Input”vs$POST
- 通过iMazing将Safari浏览器的书签导出至电脑
- vue.js 首屏优化
- 策略模式详解(用java语言实现策略模式)
- 通过文献DOI下载外文文献
- 大华linux密码,大华wifi摄像头的初始化和读取视频流
- oracle中ipad是什么意思,Oracle中Ipad和Rpad函数的用法
- asp.net 注册、卸载iis,iis重启命令
- 班级随机点名html,提问之星随机点名随机抽取班级学生教程
- excel之列联表分析
- 桌面运维常见问题解决办法②
- 一次不常见的等待事件:RECO进程enq: DR - contention