1、安卓项目演习开发实训基于 Android 的日程管理系统设计与开发(2016/6/62016/6/23)项目名称 基于 Android 日程管理系统纳米生活院 系 计算机与软件学院班 级学 号学生姓名课程老师南京工业职业技术学院实训报告2目录第 1 章 绪论 .41.1 项目背景 .41.2 项目目标 .4第 2 章 系统开发环境及技术 .52.1 系统开发环境 .52.1.1 硬件环境 .52.1.2 软件支持 .62.2 系统开发技术 .62.2.1 Java 简介 62.2.2 Android Studio 简介 62.2.3 SQLite 简介 7第 3 章 “日程管理”的需求分析 .
2、83.1 用户需求 .83.2 功能分析 .83.3 开发环境 .8 3.3.1 难点 83.3.2 易点 8第 4 章 概要设计 104.1 设计目标 .10南京工业职业技术学院实训报告34.2 系统角色 .104.3 系统流程图 .10第 5 章 详细设计 125.1 设计目标 .125.2 编码设计 .125.2.1 splash 界面 125.2.2 日历界面 .135.2.3 编辑日程界面 .145.2.4 查看日程界面 .155.2.5 删除日程界面 .165.2.6 闹钟提醒界面 .175.2.7 倒计时界面 .185.2.8 日程提醒界面 .195.2.9 通知栏提醒界面 .2
3、0第 6 章 测试 216.1 闹钟提醒测试用例 .216.2 备忘录测试用例 .22第 7 章 小结 23第 8 章 参考文献 24南京工业职业技术学院实训报告4第 1 章 绪论1.1 项目背景随着计算机技术的飞速发展,计算机应用的迅速推广,计算机及技术给人们的日常生活、工作、学习带来了十分巨大的影响,计算机改变了人们的生活,工作的方式。而在使用计算机时有一些好的、实用的软件,将会给使用者提供非常便利的环境。因此我们采用 Android 技术开发一个实用的个人日程管理系统,以便提醒大家一些重要的事情不要忘记,比如开会,生日什么的事情,有了这款APP,它会按时的提醒你去做该事情,你可以设置提醒
4、一次,每天提醒,每周提醒。1.1 日程管理的起源在没有手机功能齐全的时代,我们的日程安排只能通过手写记录,经常会因为没有及时翻阅记录而错过了重要的日程,随着手机技术的飞速发展,手机应用的迅速推广,手机改变了人们的生活,工作的方式。日程管理就是将每天的工作和事务安排在日期中,并做一个有效的记录,方便管理日程的工作和事务,达到工作备份的目的。同时也具有对日常工作进行指导、监督的作用。1.2 项目目标1.通过关于本系统管理系统的实现,使个人的日程管理更加完善。2.可以编辑日程事务,了解行程。3.可以提醒备忘事项,大大提高了办事效率。4. 完 善 的 日 程 查 询 功 能 , 方 便 使 用 者 的
5、 生 活南京工业职业技术学院实训报告5第 2 章 系统开发环境及技术2.1 系统开发环境2.1.1 硬件环境处理器 Pentium IV 及以上;内存容量 4G 以上;存储容量 50G 以上;2.1.2 软件支持操作系统: Mac OS X 10.11.5编程语言:JAVA数据库: SQLite开发工具: Android Studio 2.2 系统开发技术2.2.1 java 简介背景:Java 是一种应用分布式网络环境中的程序设计语言,由 sun 公司开发,Java语言广为人知,得益于 Internet 的迅猛发展。人们开始了解并使用这种神奇的语言,一般的应用程序、Applet、web 服务
6、器乃至手机的嵌入式系统,Java 都足以胜任。Java 对网络提供了强有力的支持,这也是这种奇妙语言的魅力所在。特点:(1) 面对对象(2)可移植性(universality)(3)安全性(security)(4)多线程(thread)(5)多态(6)解释执行(7)分布性南京工业职业技术学院实训报告62.2.2 Android Studio 简介Android Studio 是一个 Android 开发环境,基于 IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。 2013 年 5 月 16 日,在
7、I/O 大会上,谷歌推出新的 Android 开发环境Android Studio,并对开发者控制台进行了改进,增加了五个新的功能。Android Studio 是谷歌推出了新的 Android 开发环境,开发者可以在编写程序的同时看到自己的应用在不同尺寸屏幕中的样子。谷歌对开发者控制台进行了改进,增加了五个新的功能,包括优化小贴士、应用翻译服务、推荐跟踪、营收曲线图、用版测试和阶段性展示。1、优化小贴士:在主体中打开你的应用,点击小贴士,会得到这样的建议:为你的应用开发平板电脑版本。2、应用翻译服务:允许开发者直接在开发主体中获得专业的翻译。上传你的需求,选择翻译,其会显示翻译方和价格,并在
8、一周内发回译本。3、推荐跟踪:允许开发者找出最有效的广告4、营收曲线图:向开发者展示其应用营收,以国家进行划分5、试用版测试和阶段性展示:开发者可以对应用进行测试,然后向测试用户推出,测试结果不会对外公布。当一个版本的测试结束,开发者可以向特定比例用户推出。Android Studio 这款开发工具被首次公布,这也是为了方便开发者基于Android 开发。首先解决的一个问题是多分辨率。Android 设备拥有大量不同尺寸的屏幕和分辨率,根据新的 Studio,开发者可以很方便的调整在各个分辨率设备上的应用。同时 Studio 还解决语言问题,多语言版本(但是没有中文版本)、支持翻译都让开发者更
9、适应全球开发环境。Studio 还提供收入记录功能。最大的改变在于 Beta 测试的功能。Studio 提供了 Beta Testing,可以让开发者很方便试运行。2015 年 5 月 29 日,在谷歌 I/O 开发者大会上,谷歌发布 AndroidStudio 1.3 版,支持 C+编辑和查错功能。Android Studio 1.3 版开发码代码变得更加容易,速度提升,而且支持 C+编辑和查错功能 。南京工业职业技术学院实训报告72.2.3 Sqlite 简介SQLite,是一款轻型的数据库,是遵守 ACID 的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使
10、用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百 K 的内存就够了。它能够支持Windows/Linux/Unix 等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java 等,还有 ODBC 接口,同样比起 Mysql、PostgreSQL 这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。SQLite 第一个 Alpha 版本诞生于 2000 年 5 月。 至今已经有 13 个年头,SQLite 也迎来了一个版本 SQLite 已经发布。SQLite 是遵守 ACID 的关系型数据库管理系统,它包含在一个相对小的 C 库中。它是 D.R
11、ichardHipp 建立的公有领域项目。不像常见的客户-服务器范例,SQLite 引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接 API 调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。南京工业职业技术学院实训报告8第 3 章 “日程管理”设计与分析3.1 用户需求(1)功能需求:本系统完成对自己昨天的日程进行记录,今天、明天的日程安排以及查看修改工作。(2)权限需求:用户管理员拥
12、有最高的权限,可以对系统中所有的数据进行查看、添加、修改和删除等操作;普通用户只可以对自己的行程进行查看、修改、删除和删除等操作。(3)系统安全性需求:一是用户进入系统时必须进行口令校验;二是连接数据库是使用 windows 身份验证。3.2 功能分析(1)用户登录、用户注册:用户通过登录的方式进行口令校验安全进入在线日程管理系统:用户注册是用户为进入该系统时将个人信息提交到数据库中。(2)人员管理:系统管理员可以对用户进行修改,其中对用户密码进行修改,对一些长期没有用的人员进行删除操作,以减少系统压力。(3)个人日程管理:其中使用 TabControl 控件,对某一天或某段时间的日程进行查看
13、,和对某个日程的地点、开始时间、重要性及联系电话进行修改,更新等操作。南京工业职业技术学院实训报告93.3 难易点分析3.3.1、难点本程序在设计方面存在很大困难,这与我们目前所学习到的知识有关,用个可能不太恰当的比喻就是:刚刚学习了一点什么是空气动力学的概念知识,就让我们去造一架会飞的飞机出来。困难是存在的,但是实训的成果和报告是要交的,所以我们要从多方面入手,尽自己的最大努力完成本次实训的目的和效果。3.3.2、易点本程序的很多设计可以从各种日程管理的 APP 中得到相关参考,程序中的用法有之前上课做的范例作为参照,退一步而言,所以在遇到某些问题时,可以小组讨论解决。也可以通过翻阅不同的资
14、料来得到一定的经验。南京工业职业技术学院实训报告10第 4 章 概要设计4.1 设计目标个人日程管理系统是对已完成的工作进行记录,对未完成的工作进行有效、合理的安排,提高工作效率。每天可以自己安排自己的日程以及查看和修改。通过关于本系统的实现,个人的日程管理更加完善,可以通过笔记日程事务,了解行程,还可以提醒备忘录事项,大大提高了办事效率。4.2 系统角色本系统的角色主要包括有:系统管理员(拥有整个系统 的访问权限,可以对本系统的所有数据进行查看、添加、修改、删除的操作),普通用户:进入日程管理系统,查看制定自己的日程安排;查看日程的详细内容,对日程安排提出疑问,通过网络与管理员沟通(拥有次级
15、管理权限,可以进行本人日程管理)。管理人员:进入日程管理系统,查看所有用户日程安排;查看日程的详细内容;对日程安排进行调整,制定统一日程的制定;对系统进行维护和管理。南京工业职业技术学院实训报告114.3 系统流程图如图所示:用户信息系统简介登 录用户注册找回密码 日程管理所有日程已完成日程未完成日程图 4.3 系统流程图日历部分设有三个模块:年份模块,月份模块,日期模块。具体如图所示:图为日历部分流程:图 4.4 日历部分流程图系统界面日历部分 备忘录部分南京工业职业技术学院实训报告12第 5 章 详细设计5.1 设计目标个人日程管理系统是对已完成的工作进行记录,对未完成的工作进行有效、合理
16、的安排,提高工作效率。5.2 编码设计5.2.1 splash 界面该界面只有在开启本 APP 时才会出现,起到美观、缓冲的作用。图 5.2.1 欢迎界面核心代码如下:handler.sendEmptyMessageDelayed(1,2500);Boolean isLogin = SharedPreferencesUtils.getValue(SplashActivity.this,“Login“,“isLogin“,false);if (isLogin = true)startActivity(new Intent(SplashActivity.this,MainActivity.clas
17、s);finish();elsestartActivity(new Intent(SplashActivity.this,LoginActivity.class);finish();南京工业职业技术学院实训报告135.2.2 日期选择界面本界面主要是编辑界面进行选择事件日期。图 5.2.2 日期选择界面核心代码如下:Calendar calendar = Calendar.getInstance();int year = calendar.get(Calendar.YEAR);int monthOfYear = calendar.get(Calendar.MONTH);int dayOfMon
18、th = calendar.get(Calendar.DAY_OF_MONTH);datePicker.init(year, monthOfYear, dayOfMonth, new DatePicker.OnDateChangedListener() Overridepublic void onDateChanged(DatePicker view, final int year,final int monthOfYear, final int dayOfMonth) if (year currentYear | monthOfYear currentMonthOfYear | dayOfM
19、onth currentDayOfMonth) Toast.makeText(EditActivity.this, “选择日期不能小于当前“ , Toast.LENGTH_SHORT).show(); else dateStr = year + “-“ + (monthOfYear + 1) + “-“ + dayOfMonth;showTimePicker(year, monthOfYear, dayOfMonth);dialog.dismiss();南京工业职业技术学院实训报告145.2.3 添加日程界面本界面主要实现日程系统的填写与添加操作。图 5.2.3 添加日程界面核心代码如下:5.
20、2.4public static Boolean insertLog(Context context, String title, String content, String time) Boolean isSuccess = false;DBHelper dbHelper = new DBHelper(context);SQLiteDatabase dbWrite = dbHelper.getWritableDatabase();ContentValues values = new ContentValues();values.put(“title“, title);values.put(
21、“time“, time);values.put(“content“, content);values.put(“state“,0);if (dbWrite.insert(“info“, null, values) != -1) isSuccess = true;dbWrite.close();dbHelper.close();return isSuccess;南京工业职业技术学院实训报告15查看日程界面本界面主要实现已存在日程的信息查看。图 5.2.4 日程查看界面核心代码如下:5.2.5删 除日程界面private void getInfo() Intent intent = getInt
22、ent();id = intent.getIntExtra(“id“, -1);mList = DataBaseUtil.queryLogById(this, id);tvTitle.setText(mList.get(0).getTitle();tvContent.setText(mList.get(0).getContent();tvTime.setText(mList.get(0).getTime();南京工业职业技术学院实训报告16本界面主要实现的功能是建好后的日程的删除操作。图 5.2.5 日程删除界面核心代码如下:5.2.6 闹钟设置界面public static void del
23、eteInfoById(Context context, int id) DBHelper dbHelper = new DBHelper(context);SQLiteDatabase dbWrite = dbHelper.getWritableDatabase();dbWrite.delete(“info“, “_id = ?“, new StringString.valueOf(id);dbWrite.close();dbHelper.close();南京工业职业技术学院实训报告17本界面主要实现的功能是添加日程时时间的选择。图 5.2.6 闹钟设置界面核心代码如下:5.2.7 倒计时界
24、 面主界面主要实现的是倒计时的功能,输入倒计时的时间后点击确定按钮,下int currentMinute = Integer.valueOf(format1.format(date1);if (year = currentYear return;elsedateStr += “ “ + hourOfDay + “:“ + minute;tvDate.setText(dateStr);dialog.dismiss();elsedateStr += “ “ + hourOfDay + “:“ + minute;tvDate.setText(dateStr);dialog.dismiss();南京工
25、业职业技术学院实训报告18方的方块即会显示倒计时时间,时间到后手机会震动及振铃。点击方块后取消提醒。图5.2.7 倒计时界面核心代码如下:5.2.8日程提醒界面int hour = 0, minute = 0, second = 0;if (!TextUtils.isEmpty(etHour.getText().toString() hour = Integer.valueOf(etHour.getText().toString();if (!TextUtils.isEmpty(etMinute.getText().toString() minute = Integer.valueOf(etM
26、inute.getText().toString();if (!TextUtils.isEmpty(etSecond.getText().toString() second = Integer.valueOf(etSecond.getText().toString();int sum = hour * 1000 * 3600 + minute * 1000 * 60 + second * 1000;if (sum = 0) Toast.makeText(getActivity(), “请输入倒计时时间!“ , Toast.LENGTH_SHORT).show(); else mc = new
27、MyCount(sum, 1000);mc.start();etMinute.setText(“);etHour.setText(“);etSecond.setText(“);南京工业职业技术学院实训报告19主界面主要实现的是“正在提醒”,此时便是日程所设定的时间已到,系统正在提醒。图5.2.8 日程提醒界面核心代码如下:5.2.9int state = mList.get(position).getState();if (state = 0)holder.tvState.setText(“待办“);else if (state = 1)holder.tvState.setText(“已完成“
28、);holder.tvState.setTextColor(getResources().getColor(R.color.purple);elseholder.tvState.setText(“正在提醒“);holder.tvState.setTextColor(getResources().getColor(R.color.red);南京工业职业技术学院实训报告20通知栏提醒界面主界面主要实现的是在日程提醒的状态下通知栏展示提醒的日程,点击该通知栏后可进入日程查看界面。图5.2.9 通知栏提醒界面核心代码如下:Notification.Builder builder = new Notif
29、ication.Builder(this);notificationManager = (NotificationManager) this.getSystemService(NOTIFICATION_SERVICE);Intent clickIntent = new Intent(NotificationService.this, MyReceiver.class);clickIntent.putExtra(“id“, id);PendingIntent pendingIntent = PendingIntent.getBroadcast(NotificationService.this,
30、1, clickIntent, PendingIntent.FLAG_CANCEL_CURRENT);builder.setTicker(“您有设定日程已到时间“).setDefaults(Notification.DEFAULT_VIBRATE).setContentIntent(pendingIntent).setSmallIcon(R.mipmap.android).setContentTitle(“日程提示“).setContentText(“点击查看日程: “ + title);Notification notification = builder.build();notificat
31、ionManager.notify(1, notification);南京工业职业技术学院实训报告21第6章 测试6.1 闹钟提醒测试用例用例名称 日程提醒用例编号 01 设计人:梁新宇测试目标 基本功能:测试铃声是否正常响起前置条件 将铃声响起时间设定为17:00步骤 操作描述 期望结果1 提醒时间到 下拉通知栏显示提醒,并且铃声响起2 点击关闭铃声 点击下拉提醒显示是否关闭铃声对话框3 点击是 铃声关闭4 点击否 铃声继续响用例名称 日程提醒用例编号 02 设计人:梁新宇测试目标 基本功能:浏览网页时,铃声可以正常响起前置条件 将铃声响起时间设定为17:00步骤 操作描述 期望结果1 浏览
32、网页是,铃声响 主界面出现闹铃界面,铃声响起2 点击关闭铃声 闹铃关闭,停留在网页页面南京工业职业技术学院实训报告226.2 备忘录测试用例用例名称 日程提醒用例编号 03 设计人:梁新宇测试目标 基本功能:测试备忘录能否正常新建前置条件 出厂默认状态步骤 操作描述 期望结果1 1、在编辑备忘录界面,选中“开始时间_日期”项2、输入1970/01/013、输入当天日期4、输入2026/06/151、显示为2017/01/012、日期显示为1970/01/013、日期显示不正常4、日期显示为2026/06/152 1、在编辑备忘录界面,选中“开始时间_日期”项2、输入1969/00/003、输入
33、2016/06/174、输入2036/16/171、显示为2016/01/012、警告提示,显示为1979/01/013、警告提示,显示为2016/06/054、警告提示,显示为2035/16/163 1、在备注编辑界面2、按键“选项”3、选中“常用短语”,按OK键“确定”1、进入选项列表界面2、进入常用短语列表界面,内容显示正常3、返回编辑界面,显示常用短语内容4 1、新增一个备忘2、方式设置为每月3、保存完成后1、可以新增2、编辑正常3、时间到响铃,按OK键“确定”后,每个月的1号备忘录响起南京工业职业技术学院实训报告23第7章 小 结通过本次的实训,我感受颇多,尽管平时上课也认真听了老师
34、的讲课,但是一开始面对这个实训题目时,除了设计主界面,其他的一些功能什么的感觉无从下手。要设计一个独具一格的日程管理系统方法与技巧是必要的;以前老是觉得自己只要认真听课,什么东西都会,什么东西都懂,一到实践应用中,什么技巧也没用上,常因为一点小错误而前功尽弃,这才发现,原来是自己眼高手低了。当然过程也需要美化,怎样让手中的素材尽可能地动起来,从而吸引别人的眼球。那就必须充分运用教程中所学到的制作技巧,举一反三,大胆尝试,在学习阶段要尽量把老师所教的内容充分运用到作品中去,这样才能学深学透。遇有不懂的地方要随时请教同学、老师,要做到不耻下问,好在我们每天都有个各组交流的时间,那样我们就能够在欣赏
35、别人作品的同时也能让自己有一个灵感,使自己的程序更加美观。同时,在设计过程中一定要耐心、细致,对于其中的细节、布局等方面要反复推敲、练习,考虑周祥,力求做到完美。在整个过程中,我感觉就像人生的一个缩影,充满了酸甜苦辣。当一个问题我想了好久也没办法解决时,我感到沮丧与无助;当经过努力解决了一个程序上的难题时,我感到无比的喜悦;当经过每天为了写代码,找素材一坐就是一上午甚至一天的时候,我感到无比的痛苦。但艰难痛苦已成往事,灿烂的明天正向我们走来,今天我们总算迎来了胜利的坚果,以前的辛酸和艰苦化作了我们坚强的力量,将在我们将来的人生历程中,为我们的美好明天打下坚实的基础。经过这次的实训,我又一次的感
36、受到了只有付出才会有收获,成功永远只属于不懈努力的人。人非生而知之,要学得知识,一靠学习,二靠实践。没有实践,学习就是无源之水,无本之木。以上就是我这次图书管理系统设计与开发的心得和感受。不到一年的时间就将步入社会的我们,面临是继续深造,还是就业的压力,我想我们更应该把握住最后的一段时间,充实、完善自我。南京工业职业技术学院实训报告24第8章 参考文献1.Java JDK学习笔记 ,林信良 编著,清华大学出版社,2012年2.Java核心技术 卷1 ,cay s.horstmann;gary cornell著,叶乃文等译,机械工业出版社,2008年版3.Android开发入门与实战,靳岩 姚尚朗,人名邮电出版社,2009年4.疯狂Android讲义(第3版),李刚,电子工业出版社,2015年5.Android编程权威指南, 美Bill Phillips Brian Hardy,人民邮电出版社,2014年6.数据库系统原理教程,王珊 陈红,清华大学出版社,2004年7.Android 的设计与实现,杨云君著,机械工业出版社,2013 年8.Android 系统上应用程序按需加载机制的设计与实现,孙剑,北京大学,2011 年