简易的记事本android课程设计.docx

上传人:b****8 文档编号:8865034 上传时间:2023-02-02 格式:DOCX 页数:32 大小:2.69MB
下载 相关 举报
简易的记事本android课程设计.docx_第1页
第1页 / 共32页
简易的记事本android课程设计.docx_第2页
第2页 / 共32页
简易的记事本android课程设计.docx_第3页
第3页 / 共32页
简易的记事本android课程设计.docx_第4页
第4页 / 共32页
简易的记事本android课程设计.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

简易的记事本android课程设计.docx

《简易的记事本android课程设计.docx》由会员分享,可在线阅读,更多相关《简易的记事本android课程设计.docx(32页珍藏版)》请在冰豆网上搜索。

简易的记事本android课程设计.docx

简易的记事本android课程设计

河南科技学院

《物联网移动应用开发》课程设计报告

 

设计题目:

简易的记事本

班级:

物联网131班

学号:

20131554119

姓名:

指导教师:

徐睿

成绩:

 

信息工程学院

课程设计报告说明

一、写报告前,请认真阅读《课程设计报告说明》。

二、打印装订要求

1、一律用A4纸,双面打印,并左侧装订。

报告正文部分均采用宋体小四。

《课程设计报告说明》页也打印。

2、课程设计概述部分占一页;课程设计内容长度根据实际需要填写;结论和指导教师评语及成绩单独占一页。

保证打印格式工整。

3、指导教师评语及成绩部分由指导教师填写。

三、报告内容要求

1、课程设计目的结合实际自己写,不要雷同。

2、课程设计原理简要说明所完成课程设计项目所涉及的理论知识。

3、课程设计内容这是课程设计报告极其重要的内容。

概括整个课程设计过程。

(最好在上述内容基础上画出相应的流图、设计思路和设计方法,再配以相应的文字进行说明。

 

一、课程设计概述

1、课程设计目的

  Window操作系统的诞生成就了微软帝国,同时也造就了PC时代的繁荣,然而如今,以Android和iPhone手机为代表的智能移动设备的发明与互联网云技术的兴起却敲响了PC时代的丧钟!

这也预示着移动互联网时代(3G)已经来临。

       

在这个互联网繁荣的时代,有一颗超新星,以它独特性能优势与人性化的UI设计使它在短短的几年迅速的占领了智能移动设备的市场份额,它就是Google的Android!

这也意味着Google在移动互联网时代开始抢跑并领跑。

 

通过调查显示,大部分消费者都会使用手机记事本功能。

随着手机记事本功能的不断加强与完善,手机记事本对于人们的意义,已不仅仅像一般记事簿一样简单记录,而是向着更个性化人性化的方向发展。

Android[1]系统是开源的,它以迅猛的姿势已经占领了全球一半多的市场。

记事本在生活和工作也日益凸显出它的重要性,它能更好地帮助人们更好地管理自己的工作和生活,极大的方便了人们的生活。

因其开源,我们可以在之上开发安卓记事本软件,同时这也符合广大的市场需求。

2、课程设计要求

设计的最终作品包括设计报告和能成功运行的程序,能够达到设计指标的要求。

每个小组在设计完成后,要经指导教师检查。

课程设计报告每个学生一份,由学习委员收齐后统一交给指导教师。

按照课程设计的进程,认真完成各个环节,保证质量,达到目标。

 

3、课程设计原理

(1)设计实现添加事件、保存事件、删除事件、导出事件、添加图片等主功能。

(2)利用Android中的一些组件和事件监听解决功能的实现问题。

(3)利用mysql语句来实现数据库的设计为用户保存数据。

(4)使用debug调试来解决程序运行时遇到的问题

二、课程设计内容

1、软件功能规划

(1)软件功能 

能够提示用户是否有已写记事本,能够进行记事本的标题填写和内容填写,确定后保存。

(2)界面设计

进入程序提示“您还没有开始写日记呢!

点击下边的Menu按钮开始写日记吧!

”,点击图片按钮后进入标题和内容的填写界面。

2、程序设计

(1)记事本组件的设计

本项目涉及到以下组件:

 

TextView:

“记事本”,“新建记事”,“编辑记事”等标题。

 

EditView:

“记事本的标题”,“内容”等。

 

ImageButton:

“写事件”,“保存”,“加图片”按钮。

 

Menu:

“编译内容”,“删除当前记事”,“修改当前记事”,“导出当前记事”

“帮助”,“关于”等。

(2)记事本逻辑设计

(i)添加新记事

如果当前没有记事,点击“listview中的事件”后只有一个菜单选项“添加新记事”,写完记事之后,点击“确定”进行保存。

(ii)编辑内容

选中要编辑的那一个记事,然后点击“listview中的事件”菜单,会出现三个选项“新建记事”,“编辑内容”,“删除当前记事”,点击“编辑内容”对被选中的记事进行编辑,然后点击“确定”加以保存。

(iii)删除记事

点击上下键,选中要删除的记事,然后点击“listview中的事件”菜单,然后点击“删除当前记事”,对选中的记事加以删除。

(3)记事本存储实现

Android中一共提供了5种数据存储方式,但是由于存储的这些数据都是其应用程序私有的,所以如果需要在其他应用程序中使用这些数据,就要使用Android提供的ContentProviders。

ContentProviders:

Android提供的一个特殊的存储数据的类型,它提供了一套标准的接口来获取,操作数据。

SharedPreference:

用来存储“key-valuepaires”格式的数据,它是一个轻量级的键值存储机制,只可以存储基本数据类型。

Files:

它通过FileInputStream和FileOutputStream对文件进行操作,但是在Android中,文件是一个应用程序私有的,一个应用程序无法读写其他应用程序的文件。

SQLite:

Android提供的一个标准的数据库,支持SQL语句。

Network:

通过网络来存储和获得数据。

(i)数据存储之SQLite

通过sqlite中的增删改查方法来保存、删除、修改、查找数据。

来实现对数据的操作。

代码:

publicclassDBManage{

privateContextmContext=null;

privateSQLiteDatabasemSQLiteDatabase=null;//用于操作数据库的对象

privateDBHelperdh=null;//用于创建数据库的对象

Cursornamecursor=null;

privateStringdbName="notepad.db";

privateintdbVersion=1;

publicDBManage(Contextcontext){

mContext=context;

}

/**

*打开数据库

*/

publicvoidopen(){

try{

dh=newDBHelper(mContext,dbName,null,dbVersion);

if(dh==null){

return;

}

mSQLiteDatabase=dh.getWritableDatabase();

//dh.onOpen(mSQLiteDatabase);

Log.i("log","DBisopened");

}catch(SQLiteExceptionse){

se.printStackTrace();

Log.i("log","openDBfaile");

}

}

/**

*关闭数据库

*/

publicvoidclose(){

mSQLiteDatabase.close();

dh.close();

Log.i("log","DBisclosed");

}

//获取列表

publicCursorselectAll(){

Cursorcursor=null;

try{

Stringsql="select*fromtravels";

cursor=mSQLiteDatabase.rawQuery(sql,null);

}catch(Exceptionex){

ex.printStackTrace();

cursor=null;

}

returncursor;

}

publicCursorselectById(intid){

Cursorcursor=null;

try{

Stringsql="select*fromtravelswhere_id='"+id+"'";

cursor=mSQLiteDatabase.rawQuery(sql,null);

}catch(Exceptionex){

ex.printStackTrace();

cursor=null;}

returncursor;

}

publicCursorselcetPathByName(Stringname){

Cursorcursor=null;

try{

Stringsql="selectpathfromiconswherefilename='"+name+"'";

cursor=mSQLiteDatabase.rawQuery(sql,null);

Log.i("log",sql);

}catch(Exceptionex){

ex.printStackTrace();

Log.i("log","selectfaile");

}

returncursor;

}

//插入数据

publiclonginsert(Stringtitle,Stringcontent){

Log.i("log","readytoinsert");

longdatetime=System.currentTimeMillis();

Log.i("log","time------>"+datetime);

longl=-1;

try{

ContentValuescv=newContentValues();

cv.put("title",title);

cv.put("content",content);

cv.put("time",datetime);

Log.i("log","data----->"+title+content+datetime);

l=mSQLiteDatabase.insert("travels",null,cv);

Log.i("log",cv.toString());

Log.i("log",datetime+""+l);

}catch(Exceptionex){

ex.printStackTrace();

l=-1;

}

returnl;

}

publiclonginserticonpath(Stringfilename,Stringiconpath){

longl=-1;

try{

Log.i("log","readytoinserticon");

ContentValuescv=newContentValues();

cv.put("filename",filename);

cv.put("path",iconpath);

l=mSQLiteDatabase.insert("icons",null,cv);

Log.i("log","inserticonnamesuccess");

}catch(Exceptionex){

ex.printStackTrace();

l=-1;

}

returnl;

}

//删除数据

publicintdelete(longid){

intaffect=0;

try{

Log.i("log","trytodeletethedataindatabases");

affect=mSQLiteDatabase.delete("travels","_id=?

",newString[]{id+""});

Log.i("log","deletesuccess");

}catch(Exceptionex){

ex.printStackTrace();

affect=-1;

Log.i("log","deletefaile");

}

returnaffect;

}

//修改数据

publicintupdate(intid,Stringtitle,Stringcontent){

intaffect=0;

try{

ContentValuescv=newContentValues();

cv.put("title",title);

cv.put("content",content);

affect=mSQLiteDatabase.update("travels",cv,"_id=?

",newString[]{id+""});

}catch(Exceptionex){

ex.printStackTrace();

affect=-1;

}

returnaffect;

}

}

(ii)数据存储之Files

我们可以通过自定义的copyfile()方法来复制数据

代码:

//复制文件

publicintcopyfile(Stringfrom,Stringinto){

try

{

copyfrom=newFileInputStream(from);

copyinto=newFileOutputStream(into);

Log.i("log","fuckyou");

byte[]bt=newbyte[1024];

intc;

while((c=copyfrom.read(bt))>0){

copyinto.write(bt,0,c);

}

copyfrom.close();

copyinto.close();

Log.i("log","copysuccess");

return1;

}catch(FileNotFoundExceptione){

e.printStackTrace();

return-1;

}catch(IOExceptione){

e.printStackTrace();

return-1;

}

}

3、程序开发

(1)主activity的设计

当选择“新建记事本”,“编辑内容”,“删除当前记事”等菜单选项时对应的操作

代码:

publicvoidinitAdapter(){

dm.open();//打开数据库操作对象

cursor=dm.selectAll();//获取所有数据

cursor.moveToFirst();//将游标移动到第一条数据,使用前必须调用

intcount=cursor.getCount();//个数

ArrayListitems=newArrayList();

ArrayListtimes=newArrayList();

for(inti=0;i

items.add(cursor.getString(cursor.getColumnIndex("title")));

times.add(cursor.getString(cursor.getColumnIndex("time")));

cursor.moveToNext();//将游标指向下一个

}

dm.close();//关闭数据操作对象

adapter=newListViewAdd(this,items,times);//创建数据源

}

publicclassmyOnCreateContextMenuListenerimplementsOnCreateContextMenuListener{

publicvoidonCreateContextMenu(ContextMenumenu,Viewv,ContextMenuInfomenuInfo){

menu.setHeaderTitle("");

//设置选项

Log.i("log","chooseingmenu");

menu.add(0,0,0,"删除");

menu.add(0,1,0,"修改");

menu.add(0,2,0,"查看");

menu.add(0,3,0,"导出到SD卡");

}

}

publicbooleanonContextItemSelected(MenuItemitem){

AdapterView.AdapterContextMenuInfomenuInfo=(AdapterView.AdapterContextMenuInfo)item.getMenuInfo();

dm.open();

switch(item.getItemId()){

case0:

//删除

Log.i("log","selectItem---->"+item.getItemId());

try{

Log.i("log","cursorreadymove");

Log.i("log","menuInfoposition"+menuInfo.position);

cursor.moveToPosition(menuInfo.position);

Log.i("log","cursormovesuccess");

adapter.removeListItem(menuInfo.position);//删除数据

adapter.notifyDataSetChanged();//通知数据源,数据已经改变,刷新界面

dm.close();

}catch(Exceptionex){

ex.printStackTrace();

}

break;

case1:

//修改

try{

cursor.moveToPosition(menuInfo.position);

//用于Activity之间的通讯

Intentintent=newIntent();

//通讯时的数据传送

intent.putExtra("id",cursor.getString(cursor.getColumnIndex("_id")));

intent.putExtra("state",ALERT_STATE);

intent.putExtra("title",cursor.getString(cursor.getColumnIndex("title")));

intent.putExtra("time",cursor.getString(cursor.getColumnIndex("time")));

intent.putExtra("content",cursor.getString(cursor.getColumnIndex("content")));

//设置并启动另一个指定的Activity

intent.setClass(MainActivity.this,EditTravels.class);

MainActivity.this.startActivity(intent);

finish();

}catch(Exceptionex){

ex.printStackTrace();

}

break;

case2:

//查看

try{

cursor.moveToPosition(menuInfo.position);

Intentintent=newIntent();

intent.putExtra("id",cursor.getString(cursor.getColumnIndex("_id")));

intent.putExtra("title",cursor.getString(cursor.getColumnIndex("title")));

intent.putExtra("time",cursor.getString(cursor.getColumnIndex("time")));

intent.putExtra("content",cursor.getString(cursor.getColumnIndex("content")));

intent.setClass(MainActivity.this,CheckTravels.class);

MainActivity.this.startActivity(intent);

}catch(Exceptionex){

ex.printStackTrace();

}

break;

case3:

//导出

try{

cursor.moveToPosition(menuInfo.position);

Stringtitle=cursor.getString(cursor.getColumnIndex("title"));

Stringcontent=cursor.getString(cursor.getColumnIndex("content"));

HM.htmlmanager(title,content);

copyicon(title,content);

Toast.makeText(MainActivity.this,"导出成功,快去SD卡的\"记事本\"里找出来分享吧!

",Toast.LENGTH_LONG).show();

}catch(Exceptionex){

Toast.makeText(MainActivity.this,"Sorry!

!

!

导出失败!

",Toast.LENGTH_LONG).show();

ex.printStackTrace();

}

break;

default:

;

}

dm.close();

returnsuper.onContextItemSelected(item);

}

(2)修改内容

代码:

publicclassEditTravelsextendsActivity{

privatestaticfinalintSELECT_IMAGE=123;

introtate=0;

privateEditTexttitleedit;

privateEditTexttravelsedit;

privateImageButtonsave;

privateImageButtoninsertimage;

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

当前位置:首页 > 总结汇报 > 学习总结

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

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