简易的记事本android课程设计.docx
- 文档编号:28748509
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:32
- 大小:2.69MB
简易的记事本android课程设计.docx
《简易的记事本android课程设计.docx》由会员分享,可在线阅读,更多相关《简易的记事本android课程设计.docx(32页珍藏版)》请在冰豆网上搜索。
简易的记事本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:
它通过Stream和Stream对文件进行操作,但是在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="selectpathfromiconswhere'"+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(Stringiconpath){
longl=-1;
try{
Log.i("log","readytoinserticon");
ContentValuescv=newContentValues();
cv.put("",);
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()方法来复制数据
代码:
//复制文件
publicintcopyfrom,Stringinto){
try
{
copyfrom=new(from);
copyinto=new(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(e){
e.printStackTrace();
return-1;
}catch(IOExceptione){
e.printStackTrace();
return-1;
}
}
3、程序开发
(1)主activity的设计
当选择“新建记事本”,“编辑内容”,“删除当前记事”等菜单选项时对应的操作
代码:
publicvoidinitAdapter(){
dm.open();//打开数据库操作对象
cursor=dm.selectAll();//获取所有数据
cursor.moveToFirst();//将游标移动到第一条数据,使用前必须调用
intcount=cursor.getCount();//个数
ArrayList
ArrayList
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; privateImageButtontakephoto; privateStringidString; privateintid2; privateStringtitle=""; privateStringtravels
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简易 记事本 android 课程设计