移动开发实践成果报告.doc_第1页
移动开发实践成果报告.doc_第2页
移动开发实践成果报告.doc_第3页
移动开发实践成果报告.doc_第4页
移动开发实践成果报告.doc_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.软 件 学 院实践成果一报告课题名称: _Android日程管理小助手开发 专 业: 软件工程 班 级: 卓越131 学 号: 201307104107 学生姓名: 王萌彦 指导老师:_ 韩玉民_2014年12月中原工学院软件学院实践成果一设计任务书姓 名王萌彦软件工程 卓越131题 目Android端日程管理小助手设计任务系统主要功能包括: 第一、用户可以新建日程来记录自己近来需要办理的事务;第2、 查看日程,用户可以通过分类的不同来查看不同的事务记录;第3、 编辑日程,即用户可以对其进行修改,或者删除日程;第4、 用户可以设置是否设置登录密码;第5、 用户可以调换不同的视图来查看当前日期,分别以月试图、周视图、日视图来显示;第6、 链接12306网站来方便用户购买火车票;第7、 关于本软件的系统信息了。时间进度第14周(20014.12.14):主要任务是对整个系统进行需求分析,设计出数据库,写出各表间的关系,设计出结构图,设计并创建数据库。把基本界面实现,例如试题库的增删改查,以及用户管理。第15周(2014-12-15-2014-12-21): 对系统的核心模块,也就是对日程的增删改查这几功能,开始编写。第16周(2014-10-22-2014-11-28):主要任务是完成系统设置的功能,以及联网功能。第17周(201409-29-201501-04):对程序进行调试,并撰写报告原 主始 要资 参料 考与 文献1李刚. 疯狂Android讲义M:北京:电子工业出版社,2011.72杨丰盛. Android应用开发揭秘 M:北京:机械工业出版社,2011.123李宁. Android/OPhone开发完全讲义M:北京:中国水利水电出版社4李钟尉 陈丹丹. Java开发实战1200例M:清华大学出版社摘要随着移动设备越来越普及,移动设备的功能越来越完善,移动设备的系统平台也日渐火热起来。目前国内最常见的移动开发平台有塞班,iPhone,Windows phone以及当下正在逐步兴起的Android。目前为止国内已经有很多Android的忠实粉丝。不论是用户还是开发者都已经有了相当数量,Android已经成为国内移动开发平台不可忽视的力量。Android作为一款十分优秀的移动开发平台十分适合国内的开发环境。尤其是中小企业开发团队低成本以及源代码的分享可以为企业节省大量资金,这对于中小企业来说无疑是最大的诱惑。青年网络推出的星网睿话就是国内成功的Android开发产品。我对Android也产生了很大的好奇心,所以我不断地学习,不断地攻破难关。在本文中主要讲的是对日程管理小助手的数据库设计,以及实现分析作了阐述,其中日程管理的主要模块有:第一、用户可以新建日程来记录自己近来需要办理的事务,根据需要可以调整日程时间,设置提醒方式,选择日程类型,添加日程联系人,还可以将声音片段或者短信内容添加到日程中;第二、用户可以通过分类的不同来查看不同的事务记录,也可以查看全部事务,另外,可以通过输入关键字进行模糊查询;第三,编辑日程,日程建立之后,用户可以对其进行修改,或者删除日程;第四、用户可以设置是否设置登录密码,也可以设置日程到期时的提示音;第五、用户可以调换不同的视图来查看当前日期,分别以月试图、周视图、日视图来显示;第六、为方便用户使用,本软件特别实现链接12306网站来方便用户购买火车票;第七、关于本软件的系统信息。关键字: 日程管理;助手;Android;SlidingDrawer目录摘要3目录4第1章 引言51.1课题背景51.2 日程管理助手功能分析5第2章 系统分析62.1 设计思路62.2 技术分析62.3 结构分析7第3章 数据库设计与分析83.1 数据库表分析83.2 数据库表关系分析10图3-1 数据表关系图第4章 系统实现104.1 数据库的开发114.2 欢迎界面114.3 视图界面144.4 主菜单144.5 新建日程164.6 查找日程324.7 系统设置354.8 小助手374.9 软件信息38第5章 结束语40参考文献:43第1章 引言在现在的时代,随着社会的竞争力越来越大,总是有各种各样的事情要办,可能事情太多就会遗漏了某件事,这时我们也许就会需要一个日程管理助手在手边,帮助我们整理琐事。1.1课题背景目前,由于社会的竞争越来越大,人们面临的挑战也越来越多,大家都在百忙中中去争取自己在社会中生存的机会,所以就会计划很多的事情,但是计划的事情太多,可能就记不太清楚了,因而就会耽误许多的事情,此款软件就是针对人们对于事物的处理,不管是哪一方面的事情都可以记录在当前软件中,并且在用户设定的时间点提示,并且在业务上很很方便用户操作。这款日程管理小助手是基于Android平台设计的,Android平台是目前发展最快、最具市场前景的智能手机操作系统。1.2 日程管理助手功能分析第一、用户可以新建日程来记录自己近来需要办理的事务,根据需要可以调整日程时间,设置提醒方式,选择日程类型,添加日程联系人,还可以将声音片段或者短信内容添加到日程中;第二、用户可以通过分类的不同来查看不同的事务记录,也可以查看全部事务,另外,可以通过输入关键字进行模糊查询;第三,编辑日程,日程建立之后,用户可以对其进行修改,或者删除日程;第四、用户可以设置是否设置登录密码,也可以设置日程到期时的提示音;第五、用户可以调换不同的视图来查看当前日期,分别以月试图、周视图、日视图来显示;第六、为方便用户使用,本软件特别实现链接12306网站来方便用户购买火车票;第七、也就是关于本软件的系统信息了。大体上该小助手也就实现了这些功能。第2章 系统分析本章主要对小助手系统进行综合型分析,对设计系统的思路以及技术进行分析,2.1 设计思路日程管理助手是一款帮助用户记录事务的软件,采用3种不同的视图来显示日期,分别是月试图、周视图、日视图,可以在这三个视图上都可以直接进入到日程的修改,所以就利用了Android中的抽屉控件来实现该功能,并且实现对日程的增删改查功能,另外可以对密码设定和铃声提示做出修改,甚至在一定程度上可以实现链接网络的功能,在新建日程时,可以像短信一样添加附件,尽量设计的符合用户习惯。2.2 技术分析Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。由于Android带有相当浓郁的Linux血统这也就意味着他拥有开源Linux的众多优点:安全、运算速度快、易于开发等等。正因为Android具有上述的优点,所以它在国内具有相当强劲的竞争优势。青年网络的主要负责人潘长华先生说到:Android作为一款十分优秀的移动开发平台十分适合国内的开发环境。尤其是中小企业开发团队低成本以及源代码的分享可以为企业节省大量资金,这对于中小企业来说无疑是最大的诱惑。青年网络推出的星网睿话就是国内成功的Android开发产品。日程管理助手的开发和数据库的开发,都是基于Android本身实现的,数据库的实现时使用Android自带的SQLite数据库,本软件是基于Android系统的,是使用ADT开发工具进行的,ADT的开发环境的搭建是基于Eclipse的,是在Android SDK与Eclipse开发的插件ADT下完成的,采用的API是使用19版本的。2.3 结构分析日程管理助手功能结构图如图2-1所示:日程管理小助手编辑日程信息其他功能系统设置 密码设置 铃声设置 新建日程 删除日程 编辑日程 查找日程 小助手 软件信息图2-1 日程管理助手结构图第3章 数据库设计与分析当前正是面临大数据的时代,数据存储是一个问题,而目前Android提供的几种数据存储中,我们常见的SharedPreference、内置的SQLite数据库,ContentProvide实现数据共享这三种数据存储方式,它们都有不一样的特色,而针对于当前小助手的需要,采用的是SQLite数据存储方式。3.1 数据库表分析对于该日程管理小助手来说,采用SQLite数据库来存储数据,在该数据库中涉及的有提醒时间表、充值设置表、日程信息表、内容信息表以及日程类别表。下边介绍各个表的设计及表之间的联系。1、日程信息表(eventtable)用于记录日程的基本信息,主要属性有id、title(日程标题)、content(日程内容)、type(类型编号)、person(添加的联系人)、alertstyle(提醒方式),如表3-1所示:表3-1 日程信息表(eventtable)结构字段名称数据类型字段大小是否主键备注idInteger20是日程事件编号titlechar20否日程标题contentInteger8否日程内容编号typeInteger20否类型编号personchar30否联系人alertstylechar20否提醒方式2、 内容信息表(contenttable) 用于记录日程的文本、声音信息,主要属性有id,text(内容),sound(声音路径),如表3-2所示:表3-2 内容信息表(contenttable)结构字段名称数据类型字段大小是否主键备注idInteger8是日程内容编号textchar50否文本信息soundchar50否声音路径3、 日程类别表(typetable) 用于记录日程的类型信息,主要属性有id,type(类型名称),如表3-3所示:表3-3 日程类别表(typetable)结构字段名称数据类型字段大小是否主键备注idInteger20是类型编号typechar20否类型名称4、 重复设置表(timetable) 用于提醒时间表与日程信息表的连接,主要有属性id,eventid(日程事件编号),alerttime(提醒事件编号),如表3-4所示表3-4 重复设置表(timetable)结构字段名称数据类型字段大小是否主键备注idInteger20是日程内容编号eventidInteger20否日程时间编号alerttimeInteger20否提醒事件编号5、 提醒时间表(alerttable) 用于记录日程提醒的时间,主要属性有alerttime(编号)、nowtime(日程新建时间)、alertone(正点提醒时间)、alerttwo(提醒5分钟提醒)、alertthree(提醒10分钟提醒)、alertfour(提醒30分钟提醒)、alertfive(提醒1小时提醒)、alertsix(提醒1天提醒)、alertseven(提醒1周提醒),如表3-5所示:表3-5 提醒时间表(alerttable)结构字段名称数据类型字段大小是否主键备注alerttimeIneteger20是提醒时间编号nowtimechar20否日程的创建时间alertonechar20否正点提醒时间alerttwochar20否提醒5分钟提醒时间alertthreechar20否提醒10分钟提醒时间alertfourchar20否提醒30分钟提醒时间alertfivechar20否提醒1小时提醒时间alertsixchar20否提醒1天提醒时间alertsevenchar20否提醒1周提醒时间3.2 数据库表关系分析本软就爱你的主要数据库表有提醒时间表、重复设置表、日程信息表、内容信息表以及日程类别表。下面介绍各个表的数据表之间的联系,通过数据表的关系如图3-1所示:alerttablecontenttabletimetableeventtabletypetable映射1映射nn1n1n1映射映射图3-1 数据表关系图第4章 系统实现4.1 数据库的开发由于日程管理小助手是基于数据库的,所以说数据库的开发就显得尤为重要,数据库的开发设计到表的创建,以及将要使用到的方法,当然,方法要结合到后边的开发慢慢整理,首先,先说日程信息表(eventtable)、内容信息表(contenttable)、日程类别表(typetable)重复设置表(timetable)和提醒时间表(alerttable)的创建。4.2 欢迎界面日程管理小助手首先以动画进入,实现淡入淡出的效果,给用户很好的视觉体验,欢迎界面效果如图4-1、4-2所示: 图4-1 欢迎界面1 图4-2 欢迎界面2淡入淡出的欢迎界面代码如下所示:public MySurfaceView(ScheduleManagerActivity context) super(context);this.activity=context;this.getHolder().addCallback(this);/设置生命周期回调接口的实现者paint = new Paint();/创建画笔paint.setAntiAlias(true);/消除锯齿/加载图片logos0=BitmapFactory.decodeResource(activity.getResources(), R.drawable.c); logos1=BitmapFactory.decodeResource(activity.getResources(), R.drawable.b);SuppressLint(WrongCall)Overridepublic void surfaceCreated(SurfaceHolder holder) /创建时被调用new Thread()public void run()for(Bitmap bm:logos)currentLogo=bm;/计算图片位置currentX=screenWidth/2-bm.getWidth()/2;currentY=screenHeight/2-bm.getHeight()/2;for(int i=255;i-10;i=i-10)/动态更改图片的透明度值并不断重绘currentAlper=i;if(currentAlper0)currentAlper=0;SurfaceHolder myholder=MySurfaceView.this.getHolder();/SurfaceView的SurfaceHolder对象holderCanvas canvas = myholder.lockCanvas();/获取画布 只有在此方法以及Destroyed方法中才获得画布,其他方法中获取到的是空trysynchronized(myholder)onDraw(canvas);/绘制catch(Exception e)e.printStackTrace();finallyif(canvas != null)myholder.unlockCanvasAndPost(canvas);/画图结束后调用holder.unlockCanvasAndPost()就把图画在窗口中了。try/当出现下一张图片时if(i=255)Thread.sleep(1000);Thread.sleep(sleepSpan);catch(Exception e)e.printStackTrace();activity.hdd.sendEmptyMessage(0);.start();public void onDraw(Canvas canvas )/绘制黑填充矩形背景paint.setColor(Color.BLACK);/绘制画笔颜色paint.setAlpha(255);/透明度设为最大canvas.drawRect(0,0,screenWidth,screenHeight,paint);/进行平面贴图if(currentLogo=null)return;paint.setAlpha(currentAlper);canvas.drawBitmap(currentLogo, currentX, currentY,paint);4.3 视图界面日程管理小助手主要向用户呈现3种视图界面,分别是月视图、周视图、日视图,下边分别对着三种视图做出一一解释:(1)月视图:以日历的形式把每个月呈现给用户;(2)日视图:以上午、下午、晚上的形式显示日程(3)周视图:以一周的形式显示日程若是用户第一次使用,则默认显示月视图,周视图(有Bug,待修改)暂未实现,月试图效果如图4-3所示、日视图效果如图4-4所示: 图4-3 月试图界面 图4-4 日视图界面4.4 主菜单日程管理小助手主要是通过一个SlidingDrawer控件来实现的,运行效果如图4-5所示:图4-5 主菜单界面主菜单界面主要代码如下:public void showSlidingDrawer() / 得到抽屉控件,抽屉的拉手及抽屉内容的GridView的引用sliding = (SlidingDrawer) findViewById(R.id.sliding01);gv = (GridView) findViewById(R.id.contentShow);hi = (ImageView) findViewById(R.id.handleImage);/ 创建一个GridAdaper适配器给gv添加GridAdapter ga = new GridAdapter(this, icons, textSliding);/ 给gridview添加适配器gv.setAdapter(ga);/ 给抽屉添加打开的监听/sliding.setOnDrawerOpenListener(new SlidingDrawer.OnDrawerOpenListener() Overridepublic void onDrawerOpened() hi.setImageResource(R.drawable.close);/ 设为主页面分支,按返回键关闭抽屉curr = Constant.MAIN_BRANCH;);/ 给关闭抽屉添加监听sliding.setOnDrawerCloseListener(new SlidingDrawer.OnDrawerCloseListener() Overridepublic void onDrawerClosed() hi.setImageResource(R.drawable.open););4.5 新建日程 对于用户来说,每天的事务可能都不一样,在新建日程模块里边,主要实现了用户对不同类型事务的记录,以及提醒日期,提醒方式的设置,在添加附件时,可以选择添加联系人、手机内的短信或者声音,这样会更加方便用户的使用,同时,用户不必拘泥于系统提供的类型设置,用户可以自由的添加类型或删除类型,在新建日程时,用户必须添加标题这一属性,是为了在提醒时间到时,能够准确明了的提醒用户该做某件事情了,一定程度上方便了用户,新建日程的效果界面如图4-6所示:图4-6 新建日程界面新建日程主要代码如下:curr = Constant.MAIN_BRANCH;this.currdate = date;/ 接收参数显示相应的日期,此处显示的是默认的日期/ 添加日期的id号码 唯一的标识符final int tempid = db.geteventID(ScheduleManagerActivity.this, 1);id = tempid;setContentView(R.layout.newschedule);/ =设置标题=TextView newOredit = (TextView) findViewById(R.id.title);newOredit.setText(日程新建);/ =初始化类型=db.getstype(this);Spinner sp = (Spinner) findViewById(R.id.typespinner);/ 显示项目BaseAdapter ba = new BaseAdapter() / 为Spinner准备内容适配器Overridepublic int getCount() return alType.size();Overridepublic Object getItem(int position) return alType.get(position);Overridepublic long getItemId(int position) return position;Overridepublic View getView(int position, View convertView, ViewGroup parent) LinearLayout ll = new LinearLayout(ScheduleManagerActivity.this);ll.setOrientation(LinearLayout.HORIZONTAL);TextView tv = new TextView(ScheduleManagerActivity.this);tv.setText(alType.get(position);selectedtype = alType.get(position);/ 新建日程的类型、type = position;tv.setTextSize(20);tv.setTextColor(R.color.black);return tv;sp.setAdapter(ba);/ =为类型添加按钮添加监听=ImageView btstype = (ImageView) findViewById(R.id.btstype);btstype.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) showDialog(DIALOG_ADD_TYPE););/ =为删除类型添加监听ImageView delete = (ImageView) findViewById(R.id.deletdtype);delete.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) showDialog(Constant.MORE_EDIT););alertone = nowtime;/ =设置日程显示的日期和时间 Start=TextView tv = (TextView) findViewById(R.id.tvnewscheduleDate);nowtime = cs.DateToString(currdate);tv.setText(nowtime);ImageView dateimageview = (ImageView) findViewById(R.id.dateimageview);dateimageview.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / 调取系统的时间设置对话框并且返回时间showDialog(TIME_DIALOG);/回调onCreateDialog()函数,根据唯一Id的不同,显示不同的对话框);/ =为闹钟重复提醒添加监听=ImageView alertimageview = (ImageView) findViewById(R.id.alertimageview);alertimageview.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) showDialog(TIME_ALERT););EditText titletext = (EditText) findViewById(R.id.newscheduletitleedit);/ =为附件那添加监听,添加联系人,短信,图片,声音等ImageView fujian = (ImageView) findViewById(R.id.fujianimageview);fujian.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) showDialog(FUJIAN_LIST););/ =禁止显示提醒的内容TextView showalarm = (TextView) findViewById(R.id.showalarm);showalarm.setVisibility(View.GONE);/ =禁止显示播放按钮Button soundplay = (Button) findViewById(R.id.playsound);soundplay.setVisibility(View.GONE);/ =为保存按钮添加监听ImageButton btcancle = (ImageButton) findViewById(R.id.btcancle);btcancle.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) goBack(curr););ImageButton btsave = (ImageButton) findViewById(R.id.btsave);btsave.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / 显示标题EditText titletext = (EditText) findViewById(R.id.newscheduletitleedit);String title = titletext.getText().toString();/ type是根据类型获取到的/ 显示联系人TextView contact = (TextView) findViewById(R.id.contacttextview01);contact.setText(person);/ 添加日程的联系人TextView contacttext = (TextView) findViewById(R.id.contacttextview01);person = contacttext.getText().toString();/ 添加日程的正文EditText contenttext = (EditText) findViewById(R.id.etxjrcNote);text = contenttext.getText().toString();Date nowDate = new Date(System.currentTimeMillis();String nowDateStr = cs.DateToString(nowDate);if (title.length() != 0) db.insertcontent(getApplicationContext(), id, text,picpath, soundpath);db.insertalert(ScheduleManagerActivity.this, id, nowtime,alertone, alerttwo, alertthree, alertfour,alertfive, alertseven, alertsix);db.insetschedule(ScheduleManagerActivity.this, id, title,id, type, person, place, alertstyle);db.inserttimetable(getApplicationContext(), id, id); else Toast.makeText(getApplicationContext(), 请输入标题,Toast.LENGTH_LONG).show();return;ImageButton btsave = (ImageButton) findViewById(R.id.btsave);btsave.setVisibility(View.VISIBLE);btsave.setEnabled(false);setAlarm();/ 更新闹铃设置if (Constant.monthweekday = 1) / 判断显示哪个主界面界面gotoMonthView(); else if (Constant.monthweekday = 2) createWeek(); else createDay(););用户可选择的系统类型主要有三个,其中有学习、生活和工作,以Dialog的方式显示,其中用户还可以选择是否添加新类型或者删除类型,添加类型效果如图4-7所示,类型选择效果如图4-8所示,删除类型效果如图4-9所示: 图4-7 添加新类型界面 图4-8 类型选择界面 图4-9 删除类型界面添加类型代码如下:/ =为类型添加按钮添加监听=ImageView btstype = (ImageView) findViewById(R.id.btstype);btstype.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) showDialog(DIALOG_ADD_TYPE);); case DIALOG_ADD_TYPE:AlertDialog.Builder b = new AlertDialog.Builder(this);b.setTitle(添加类型);b.setIcon(android.R.drawable.ic_dialog_info);final EditText text = new EditText(this);b.setView(text);/PositiveButton是确定按钮b.setPositiveButton(确定, new DialogInterface.OnClickListener() / 获取view里面的值public void onClick(DialogInterface dialog, int which) temp = text.getText().toString();/ 获取上面view的值并且赋给temp添加到类型里面去db.insertType(ScheduleManagerActivity.this, temp););b.setNegativeButton(取消, null);/取消按钮 dialogSetRange = b.create(); dialog = dialogSetRange; break;删除类型代码如下:case Constant.MORE_EDIT:AlertDialog.Builder builderdeletetype = new AlertDialog.Builder(this);builderdeletetype.setTitle(点击删除类型);builderdeletetype.setIcon(android.R.drawable.ic_dialog_info);ListView deletelistview = new ListView(this);ArrayList deletetype = new ArrayList();deletetype = (ArrayList) db.getTypeList(getApplicationContext();ArrayAdapter deletetypeaa;deletetypeaa = new ArrayAdapter(ScheduleManagerActivity.this,android.R.layout.simple_expandable_list_item_1, deletetype);deletelistview.setAdapter(deletetypeaa);deletelistview.setOnItemClickListener(new OnItemClickListener() Overridepublic void onItemClick(AdapterView arg0,View deletelistview, int arg2, long arg3) TextView tvn = (TextView) deletelistview;String deletetypestr = tvn.getText().toString();String tempdelete = deletetypestr.split(#);String deletetype = tempdelete1.toString();db.deleteType(ScheduleManagerActivity.this, deletetype););builderdeletetype.setView(deletelistview); dialog = builderdeletetype.create();break; 在新建日程时,用户可以选择事件提醒日期和提醒方式,其中选择事件的提醒日期是使用自定义组件,而不是使用系统组件,选择提醒日期效果如图4-10所示,选择提醒方式效果如图4-11所示: 图4-10 选择提醒日期界面 图4-11 选择提醒方式界面选择提醒日期功能:case TIME_DIALOG:isSelect = true;/ 改变标志为新建编辑中的日期选择updateChangeq(dialog);/ 设置日历时间selectbnc = (BNCalendar) dialog.findViewById(R.id.calendar01);selectbnc.setDate(new Date(calendar3.getTimeInMillis();/ 设置日历时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论