西南科技大学课程设计报告课程名称:软件设计基础设计名称:基于android的日记本开发姓名:学号:班级:通信1003班指导教师:起止日期:11.28——12.12西南科技大学信息工程学院制2方向设计任务书学生班级:通信1003班学生姓名:学号:设计名称:基于android的日记本开发起止日期:11.28——12.12指导教师:设计要求:1.安装android开发环境,学习使用eclipse,用java编程语言开发一个简易日记本;2.所开发的日记本具有新建文件,删除文件,保存文件等基本功能,文件的标题后面会显示出保存日期;3.文件保存后可以查看已建立的文件,打开文件可以编辑和删除内容,并保存更改后的文件内容;4.协调的呈现出图标和按钮的布局,菜单功能要相对简单,不能复杂,以便于让用户方便操作。方向设计学生日志时间设计内容11.28—12.1看资料文档,安装开发环境,熟悉Android开发知识;12.2—12.3安装及配置开发工具盒开发环境;12.4—12.9确定方案,从概要设计到程序开发,并调试程序;12.10—12.11功能测试,分析结果,撰写课程设计报告。3基于android的日记本开发一、摘要(150-250字)伴随着无线移动设备的迅速发展,手机的日益普及成为主流,在这一关键时期,Android系统的推出使手机发展进入了一个新的领域。世界上一些知名移动设备生产厂商对于Android智能机的开发热情日益提高,Android系统的使用人群正在急速提升,Android应用程序的多样化使人们从手机中获得更多乐趣,方便着人们的生活,使Android得到了社会越来越多的认同。本次设计主要描述了基于android开发一个简易日记本的技术方法。关键字:Android;DbAdapter;Activity;diary二、设计目的和意义在中国,手机已经成为人们日常生活必不可少的一部分,智能手机在高校人群中逐渐得到了普及,Android手机凭借其优秀的系统性能以及良好的用户体验迅速得到了高校师生的青睐。在高校中,上课并不像高中时期有固定的教室和固定的时间,高校课程种类繁多,并且上课地点和时间不固定,一周内极少会出现重复课程,所以要将课程表完整的记忆下来是一项很艰难的事情,很多同学不得不随身携带一张课表来防止遗忘上课,但是还是不能完全避免该问题的发生,同时,作为一个当今高速发展的时代的成员,适应这个社会是必不能少的,在各种社交场合中,记住一些必须的信息很重要,而它们往往又繁琐又多,不易人为记住。基于这些问题,有必要设计一款方便小巧的简易日记本程序,可以让用户自定义文件,记住上课时间和地点,从而避免遗忘上课的事情出现,同时记住那些琐碎却有意义的小信息。而且,由于android系统市场的开放性和服务免费,它的应用程序方面就成了一块非常大的市场,。三、设计原理用户在第一次进入程序时会看到到一个日记本的主界面,可进行日记文件的新建和删除操作,按menu键可以选择“帮助”和“退出”,程序主界面使用course_activity.java展示记录,从Diary_activity,DiaryEditActivity类中可以新建和删除日记信息,并在主界面中显示。程序的配置信息主要存在DbAdapter中,该信息在数据显示时读取必要的配置信息,在按钮监听函数中监听系统时间变化用来实现日记的创建功能。BaseColumns是一个接口,里边有两个变量,一个是_ID=_id,一个是_COUNT=_count。在Android当中,每一个数据库表至少有一个字段,而且这个字段是_id。所以当我们构造列名的辅助类时,直接实现BaseColumns,这样我们便默认地拥有了_id字段。在我们的日记本的数据表里,一共有4个字段,分别是:id、title、body、created。在Android中鼓励使用内部类,这样不但使用方便,而且执行效率也高是请求数据的类型,例如,在例子当中定义的类型是diary。当然这一部分可以是0个片段或者多个片段构成,如果ContentProvider只是暴露出了一种类型的数据,那么这部分可以为空,但是如果暴露出了多种,尤其是包含子类的时候,就不能为空,1这部分是允许为空的,如果为空,表示请求全部数据;如果不为空,表示请求特定ID的数据。DatabaseHelper是操作数据库的辅助类,通过这个类我们可以生成数据库,并且维护这个数据库。在DiaryContentProvider中,我们定义了一些变量和常量,其中这些常量主要是描述数据库的信息。在删除方法中,rowId=uri.getPathSegments().get(1)负责得到rowId的值。getPathSegments()方法得到一个string的list,db.delete(DIARY_TABLE_NAME,DiaryColumns._ID+=+rowId,null)是标准的SQLite删除操作。update()是更新一条数据的方法,使用ContentProvider时首先得到SQLiteDatabase,然后得到rowId,最后再调用db.update(DIARY_TABLE_NAME,values,DiaryColumns._ID+=+rowId,null)语句执行更新工作。4其主要流程图如下:功能模块:四、详细设计步骤简易日记本应该具有日记本的基本功能,比如新建,编辑,删除,保存等,从这几方面初步想到应该有一个主类负责调用其他负责实现功能的类,这样整个程序会比较清晰,通过流程分析和可行性分析之后我开始查阅资料编写程序,本程序主要由六个类组成,它们分别为Dbadapter,help-activity,lookDiary,MainActivity,diary-activity和DiaryEditActivity,1.其中MainActivity类为整个应用的主Activity,其主要方法如下:onCreate:Activity主要重写方法之一,实现程序初始化和界面展示;find_and_modify_button:寻找并点击按钮;onClick(Viewv):点击当前所选按钮;onCreateOptionMenu:实现Option菜单的创建;onOptionsItemSelected:实现菜单项的点击事件响应;界面设计方面通过RelativeLayout实现布局,使用了TextView,ImageButton文件列表通用户打开日记本程序新建日记打开一个已存日记进行编辑在菜单项直接选择退出小小日记本Tab标签底部标签日记列表新建手机日记手机日历新建日记日记类型设置帮助退出5过ListView实现界面展示。该类通过继承ListActivity类,用来显示ListView中的数据并实现对ListView上ImageView控件点击的统一响应。其主要代码:publicclassMainActivityextendsActivity{//菜单选项publicstaticfinalintHELP=Menu.FIRST;publicstaticfinalintEXIT=Menu.FIRST+1;/**Calledwhentheactivityisfirstcreated.*/publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);setTitle(小小日记本);find_and_modify_button();Toast.makeText(MainActivity.this,欢迎使用简易日记本,Toast.LENGTH_SHORT).show();}privatevoidfind_and_modify_button(){//TODOAuto-generatedmethodstubButtonbtn_diary=(Button)findViewById(R.id.btn_diary);btn_diary.setOnClickListener(diary_listener);}privateButton.OnClickListenerdiary_listener=newOnClickListener(){publicvoidonClick(Viewv){//TODOAuto-generatedmethodstubIntentintent=newIntent();intent.setClass(MainActivity.this,diary_activity.class);startActivity(intent);}}/**menu.findItem(EXIT_ID);找到特定的MenuItem*MenuItem.setIcon.可以设置menu按钮的背景*/publicbooleanonCreateOptionsMenu(Menumenu){super.onCreateOptionsMenu(menu);menu.add(0,HELP,0,帮助).setIcon(R.drawable.helps);menu.add(0,EXIT,0,退出).setIcon(R.drawable.exit);returntrue;}publicbooleanonOptionsItemSelected(MenuItemitem){switch(item.getItemId()){caseHELP:Intenthelp_intent=newIntent();help_intent.setClass(MainActivity.this,help_activity.class);startActivity(help_intent);break;caseEXIT:6finish();break;}returnsuper.onOptionsItemSelected(item);}}2.help-activity和lookDiary类为实现添加课程界面的Activity,主要实现由用户选择和输入文件信息,并将所有的输入信息添加到数据库中。主要方法如下:onCreate:新建文件信息;updateListView:更新当前文件内容;onListItemClick:提醒执行删除操作;OnClickListener:按钮监听函数;onClick:实现button点击事件的响应;lookDiary:继承ListActivity;主要代码:publicclasshelp_activityextendsActivity{protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.help);setTitle(小小日记本);setTitle(帮助);}}publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.diary_list);setTitle(小小日记本);mDbHelper=newDbAdapter(this);updateListView();}//更新当前的listacvitityprivatevoidupdateListView(){mDbHelper.open();mDiaryCursor=mDbHelper.getAllNotes();startManagingCursor(mDiaryCursor);String[]from=newString[]{DbAdapter.KEY_TITLE,DbAdapter.KEY_CREATED};int[]to=newint[]{R.id.text1,R.id.created};