Android日程管理系统设计与开发.docx

上传人:b****8 文档编号:23571591 上传时间:2023-05-18 格式:DOCX 页数:35 大小:3.35MB
下载 相关 举报
Android日程管理系统设计与开发.docx_第1页
第1页 / 共35页
Android日程管理系统设计与开发.docx_第2页
第2页 / 共35页
Android日程管理系统设计与开发.docx_第3页
第3页 / 共35页
Android日程管理系统设计与开发.docx_第4页
第4页 / 共35页
Android日程管理系统设计与开发.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

Android日程管理系统设计与开发.docx

《Android日程管理系统设计与开发.docx》由会员分享,可在线阅读,更多相关《Android日程管理系统设计与开发.docx(35页珍藏版)》请在冰豆网上搜索。

Android日程管理系统设计与开发.docx

Android日程管理系统设计与开发

 

智能终端应用系统开发实训

——Android日程管理系统设计与开发

(2013/12/3—2014/01/3)

 

项目名称

Android日程管理系统设计与开发

院系

计算机与软件学院

班级

移设1213

组别

第五组

学号

1202613106、09、23、48、50、52

学生姓名

顾飞黄锦烽张国浩张慧敏张燕云朱冰雪

指导老师

张以利

 

第1章绪论5

1.1日程管理的起源5

1.2日程管理的特点5

1.3任务分配5

第2章系统开发环境及技术6

2.1系统开发环境6

2.1.1硬件环境6

2.1.2软件支持6

2.2系统开发技术6

2.2.1java简介6

2.2.2eclipse简介7

2.2.3SQLite简介8

第3章日程管理的设计与分析9

3.1用户需求9

3.2功能需求9

3.3日程管理设计难易点分析9

3.4日程管理设计总体框架10

第4章概要设计

4.1系统总体功能设计11

4.1.1系统设计原则11

4.1.2系统结构功能图11

4.2数据库设计11

4.2.1分类报表11

4.2.2数据库表12

第5章APP界面设计13

5.1APP应用图标设计13

5.2界面元素13

第6章详细设计与实现13

6.1程序引导加载界面13

6.2欢迎界面15

6.3注册登录模块16

6.4程序主界面模块18

6.5滑动菜单模块19

6.6添加日程模块23

6.7个人中心模块26

6.8反馈信息界面29

6.9应用分享模块29

6.10应用推荐模块29

6.11关于我们界面30

6.12设置模块30

第7章应用测试33

小结34

参考文献38

第1章绪论

1.1 日程管理的起源

在没有手机功能齐全的时代,我们的日程安排只能通过手写记录,经常会因为没有及时翻阅记录而错过了重要的日程,随着手机技术的飞速发展,手机应用的迅速推广,手机改变了人们的生活,工作的方式。

日程管理就是将每天的工作和事务安排在日期中,并做一个有效的记录,方便管理日程的工作和事务,达到工作备份的目的。

同时也具有对日常工作进行指导、监督的作用。

1.2日程管理的特点

1:

绿色免费,程序轻便小巧,只占用几M内存!

2:

非常灵活的日期提醒设置

3:

全年月日周的周期定时循环提醒

4:

绝不错过未开机情况下的提醒

5:

完善的日程查询功能

6:

功能完善,简单易用

1.3任务分配

表1.1任务分配表能够清晰的看到每个人在项目开发过程中所承担的任务

顾飞

任务分配已经做好的功能归类项目设置,编写文档

黄锦烽

设置通知栏常驻语音识别

张国浩

欢迎界面图片资源准备

张慧敏

数据库表设计设置界面布局

张燕云

图标设计主界面引导界面图片设计

朱冰雪

时间日期选择器记事本功能,编写文档

第2章系统开发环境及技术

2.1系统开发环境

2.1.1硬件环境

处理器PentiumⅡ以上;

内存容量1G以上;

外存容量50G以上;

2.1.2软件支持

操作系统:

windows7

编程语言:

JAVA

数据库:

SQLite

开发工具:

eclipse

2.2系统开发技术

2.2.1java简介

背景:

Java是一种应用分布式网络环境中的程序设计语言,由sun公司开发,Java语言广为人知,得益于Internet的迅猛发展。

人们开始了解并使用这种神奇的语言,一般的应用程序、Applet、web服务器乃至手机的嵌入式系统,Java都足以胜任。

Java对网络提供了强有力的支持,这也是这种奇妙语言的魅力所在。

特点:

(1)面对对象

(2)可移植性(universality)

(3)安全性(security)

(4)多线程(thread)

(5)多态

(6)解释执行

(7)分布性

2.2.2eclipse简介

Eclipse中三个最吸引人的地方:

一是它创新性的图形API,即SWT/JFace,在此之前,我曾经用过Java的AWT/SWING来开发Windows应用程序,AWT/SWING其界面客观地讲不够美观,而且界面响应速度比较慢;而SWT/JFace则大大改善了Java在这方面的能力。

二是它的插件机制。

三是利用它的插件机制开发的众多功能强大的插件。

Eclipse平台体系结构:

Eclipse平台是一个具有一组强大服务的框架,这些服务支持插件,比如Java开发环境插件(JDT)、插件开发环境(PDE)和其他的第三方插件(Newtool)。

它由几个主要的部分构成:

平台运行库、工作区、工作台、团队支持和帮助。

Eclipse平台体系结构:

平台运行库是内核,它在启动时检查已安装了哪些插件,并创建关于它们的注册表信息。

为降低启动时间和资源使用,它在实际需要任何插件时才加载该插件。

除了内核外,其他每样东西都是作为插件来实现的。

工作区是负责管理用户资源的插件。

这包括用户创建的项目、那些项目中的文件,以及文件变更和其他资源。

工作区还负责通知其他插件关于资源变更的信息,比如文件创建、删除或更改。

工作台为Eclipse提供用户界面。

它是使用标准窗口工具包(SWT)和一个更高级的API(JFace)来构建的;SWT是Java的Swing/AWTGUIAPI的非标准替代者,JFace则建立在SWT基础上,提供用户界面组件。

SWT已被证明是Eclipse最具争议的部分。

SWT比Swing或SWT更紧密地映射到底层操作系统的本机图形功能,这不仅使得SWT更快速,而且使得Java程序具有更像本机应用程序的外观和感觉。

使用这个新的GUIAPI可能会限制Eclipse工作台的可移植性,不过针对大多数流行操作系统的SWT移植版本已经可用。

Eclipse对SWT的使用只会影响Eclipse自身的可移植性——使用Eclipse构建的任何Java应用程序都不会受到影响,除非它们使用SWT而不是使用Swing/AWT。

团队支持组件负责提供版本控制和配置管理支持。

它根据需要添加视图,以允许用户与所使用的任何版本控制系统(如果有的话)交互。

大多数插件都不需要与团队支持组件交互,除非它们提供版本控制服务。

2.2.3Sqlite简介

SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。

它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。

SQLite第一个Alpha版本诞生于2000年5月。

至今已经有13个年头,SQLite也迎来了一个版本SQLite已经发布。

SQLite是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。

它是D.RichardHipp建立的公有领域项目。

不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。

所以主要的通信协议是在编程语言内的直接API调用。

这在消耗总量、延迟时间和整体简单性上有积极的作用。

整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。

它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。

第3章日程管理的设计与分析

3.1用户需求

(1)功能需求:

本系统完成对自己的日程进行记录,每天日程安排以及查看修改工作。

(2)权限需求:

用户管理员拥有最高的权限,可以对系统中所有的数据进行查看、

添加、修改和删除等操作;普通用户只可以对自己的进程进行查看、添加、修改和删除等操作。

3.2功能需求

(1)用户登录、用户注册:

用户通过登录的方式进行口令校验安全进入在线日程管理系统:

用户注册是用户为进入该系统时将个人信息提交到数据库中。

(2)日程管理:

其中使用ListView控件,对某一天或某段时间的日程进程查看,和对某个日程的地点、开始时间、重要性及联系电话进行修改,更新等操作。

3.3日程管理设计难易点分析

数据库操作(增删改查)

界面的整体设计:

找不到适合的框架,自己又不会写

调试程序的时候经常性的遇到异常

3.4日程管理总体框架

日程管理APP开发流程包含应用定位、项目规划、UI设计数据库设计,功能类的实现以及工具类的附加

图3.1总体框架图

第4章概要设计

4.1系统总体功能设计

4.1.1系统设计原则

日程管理APP主要分为两大块功能:

日程记录功能:

日程添加闹钟提醒

个人中心:

能够进行注册登录并且能够对自己的信息进行修改

系统设置:

设置主题通知栏的开启清除缓存等功能

应用分享:

根据第三方提供的share分享服务能够将APP分享到别的平台

4.1.2系统机构功能图

日程管理概要设计包含四大模块:

日程管理,个人中心,系统设置,应用分享

图4.1系统功能图

4.2数据库设计

4.2.1分类报表

本次实训采用了一张数据库两张表(分别是日程表和用户表)

4.2.2数据库表

数据库采用了两张数据库表分别是日程管理表(Remind表)和用户信息表(Usertab表)

Remind表

字段

数据类型

备注

title

varchar

标题

remindDate

varchar

设置闹钟日期

remindTime

varchar

设置闹钟的时间

serviceflag

integer

闹钟服务的开关

_id

integer

日程的id

remindCounts

integer

闹钟计数

note

varchar

正文

图表4.2Remind表数据表内容

Usertab表

字段

数据类型

备注

id

int

用户id

username

varchar

用户名

password

varchar

密码

nickname

varchar

昵称

regist_time

varchar

注册的时间

图表4.3Usertab表数据表内容

 

第5章APP界面设计

5.1APP应用图标设计

图标设计含义:

一周有7天,我们要计划着做好每一天的事情,所以APP的名字为7DayToDo

绘制工具:

Ps

绘制方法:

钢笔工具切片图层,填充色块而成

图5.1应用图标

5.2界面元素

图标设计伪扁平

蓝色+灰色朴素大方

设计比较简洁,易于查看

第6章详细设计与实现

6.1程序引导加载页面

每次进入应用时会显示一个程序的加载页面

图6.1程序引导加载图

主要代码(设置线程休眠后进行跳转)

finalIntentintent=newIntent(this,GuideActivity.class);

//如果之前启动过这个Activity,并还没有被destroy的话,而是无论是否存在,都重新启动新的activity

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

//创建一个新的线程来显示欢迎动画,指定时间后结束,跳转至指定界面

newThread(newRunnable(){

@Override

publicvoidrun(){

try{

Thread.sleep(3000);//用线程暂停3秒来模拟做了一个耗时3秒的检测操作

SharedPreferencespreferences=getSharedPreferences("isFirstUse",MODE_WORLD_READABLE);

isFirstUse=preferences.getBoolean("isFirstUse",true);

if(isFirstUse){

startActivity(newIntent(Welcome.this,GuideActivity.class));

}else{

startActivity(newIntent(Welcome.this,MainActivity.class));

}

//获取应用的上下文,生命周期是整个应用,应用结束才会结束

//getApplicationContext().startActivity(intent);//跳转

finish();//结束本欢迎画面Activity

Editoreditor=preferences.edit();

editor.putBoolean("isFirstUse",false);

mit();

}catch(InterruptedExceptione){

e.printStackTrace();

}

}).start();

6.2第一次进入时的欢迎界面

第一次使用应用所看到的欢迎漫画

图6.2欢迎界面图

主要代码(创建一个引导图片切换适配器来管理几个view)

privatevoidinitView(){

LayoutInflatermLi=LayoutInflater.from(this);

view1=mLi.inflate(R.layout.gudie_view01,null);

view2=mLi.inflate(R.layout.gudie_view02,null);

view3=mLi.inflate(R.layout.guide_view03,null);

view4=mLi.inflate(R.layout.guide_view04,null);

viewPager=(ViewPager)findViewById(R.id.viewpager);

views=newArrayList();

vpAdapter=newViewPagerAdapter(views);

regist=(Button)view4.findViewById(R.id.regist);

login=(Button)view4.findViewById(R.id.login);

startBt=(Button)view4.findViewById(R.id.startBtn);

}

privatevoidinitDate(){

viewPager.setOnPageChangeListener(this);

viewPager.setAdapter(vpAdapter);

views.add(view1);

views.add(view2);

views.add(view3);

views.add(view4);

6.3注册登录模块

注册登录所展示的UI界面以及数据库写入的实现方法

图6.3注册登录图

主要代码(用db_help来管理数据库的增删改查只需给它传一个sql语句便可执行)

sql="select*fromusertabwhereusername='"

+nameString+"'";

cursor=db.select(sql);

if(cursor.getCount()==0){

Toast.makeText(getBaseContext(),"该用户名不存在",

Toast.LENGTH_LONG).show();

}else{

cursor.moveToFirst();

Stringpassword=cursor.getString

(2);

if(password.equals(passString)){

SharedPreferencesuserkey;//用户名存放

userkey=getSharedPreferences("userkey",0);//打开Preferences,名称为userkey,如果存在则打开它,否则创建新的Preferences

SharedPreferences.Editoreditor=userkey.edit();//让userkey处于编辑状态

editor.putString("name",nameString);//存放数据

mit();//完成提交

Toast.makeText(getBaseContext(),"成功",

Toast.LENGTH_LONG).show();

Intentintent=newIntent(LoginActivity.this,

MainActivity.class);

startActivity(intent);

finish();

}else{

Toast.makeText(getBaseContext(),"密码错误",

Toast.LENGTH_LONG).show();

}

sql="select*fromusertabwhereusername='"

+usernameString+"'";

cursor=db.select(sql);

if(cursor.getCount()>0){

Toast.makeText(getBaseContext(),"该用户名已存在",

Toast.LENGTH_LONG).show();

}else{

sql="insertintousertab(username,password,nickname,regist_time)values('"

+usernameString

+"','"

+passwordString

+"','"

+nicknameString+"','"+time+"')";

db.insert(sql);

cursor.close();

6.4程序主界面模块

利用SlidingMenu+ViewPager+fragment开源框架所组成的应用主界面框架

图6.4程序主界面模块图

主要代码(SlidingMenu+ViewPager+fragment开源框架)

FragmentTransactionfragmentTransaction=getFragmentManager()

.beginTransaction();

MenuFragmentmenuFragment=newMenuFragment();

fragmentTransaction.replace(R.id.menu,menuFragment);//加载滑动设置布局

ScheduleFragmentsf=newScheduleFragment();//新建一个日程管理Fragment,并在里面创建一个view

title.setText("近期日程");

fragmentTransaction.replace(R.id.contnet,sf);//所创建新的Frgment布局替换容器的布局

fragmentTmit();

SlidingMenusm=getSlidingMenu();

sm.setShadowWidth(50);

sm.setShadowDrawable(R.drawable.shadow);

sm.setBehindOffset(60);

sm.setBehindWidth(300);//设置SlidingMenu菜单的宽度

sm.setFadeDegree(0.35f);

sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

6.5滑动菜单

利用Preferences自定义布局,来设计滑动菜单里的显示内容

图6.5滑动菜单图

主要代码

addPreferencesFromResource(R.xml.menu);

//addlistener

findPreference("a").setOnPreferenceClickListener(this);

findPreference("b").setOnPreferenceClickListener(this);

findPreference("c").setOnPreferenceClickListener(this);

findPreference("d").setOnPreferenceClickListener(this);

findPreference("e").setOnPreferenceClickListener(this);

findPreference("f").setOnPreferenceClickListener(this);

findPreference("g").setOnPreferenceClickListener(this);

publicbooleanonPreferenceClick(Preferencepreference){

}

6.6添加日程界面模块

几个控件组成的组成的布局,设置线程完成闹钟响应的功能

图6.6添加日程图

主要代码(定时线程启动)

newThread(newRunnable(){

@Override

publicvoidrun(){

sql="insertintoremind(Title,Note,RemindTime,RemindTimeSecond,RemindCounts,ServiceFlag)values('"

+

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 化学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1