收藏 分享(赏)

基于Android的记事本设计-职业学院毕业论文.docx

上传人:精品资料 文档编号:7769928 上传时间:2019-05-25 格式:DOCX 页数:45 大小:475.75KB
下载 相关 举报
基于Android的记事本设计-职业学院毕业论文.docx_第1页
第1页 / 共45页
基于Android的记事本设计-职业学院毕业论文.docx_第2页
第2页 / 共45页
基于Android的记事本设计-职业学院毕业论文.docx_第3页
第3页 / 共45页
基于Android的记事本设计-职业学院毕业论文.docx_第4页
第4页 / 共45页
基于Android的记事本设计-职业学院毕业论文.docx_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、江苏经贸职业技术学院毕 业 设 计 (论 文 )题目:系 (院)专业班级学 号学生姓名指导教师 职 称指导教师 职 称2016 年 05 月 10 日基于 Android 的记事本设计摘要就目前而言 Android 在很多领域都有广泛的使用,作为一款面向对象编程的语言,而且网络、多线程等重要的基础知识安卓都有涉及到,因此安卓言也是学习面向对象编程和网络编程的首选语言。在平时只是学习了安卓的理论知识,并没有自己独立的去完成一个设计,课本中指定课时的知识学习结束之后,毕业设计是每个学生都必须做的。能够让学生深入理解并实践在本课程中所学的有关安卓程序设计方面的语言基础、异常处理、事件处理、小应用程序

2、以及图形用户界面设计等是本次毕业设计的目的。在这次的毕业设计中我的设计题目是基于安卓的记事本 app 设计。本课程设计是为了配合安卓专门设计的,帮助学生深入学习掌握安卓的开发环境,通过此次的毕业设计课题让学生更好的掌握安卓平台的编程。本次设计的基于安卓的记事本 app 让使用者对个人日记进行记录并且管理,可以显示日期,对用户所做的事情进行记录,相当于备忘录,当基本本里面的数据信息过多的时候可以进行删除。以上就是本次毕业设的基于安卓的记事本 app 所具备的主要功能。关键字:android 、app、记事本Notepad App Design Based on androidabstractAt

3、 present Java language in many fields are widely used as an object-oriented programming language, and basic knowledge of Java language network, multi thread and other important is involved, so learning Java language is the preferred language of object-oriented programming and network programming lan

4、guage. In peacetime, only to learn the theoretical knowledge of Java, and do not have their own independent to complete a design, the knowledge of the course specified in the book after the end of the study, the graduate design is necessary for each student to do. The JAVA programming language found

5、ation, can let the students understand and practice what they have learned in the course of exception handling, event handling, small applications and graphical user interface design is the purpose of this graduation design. In this graduation project in my design topic is based on the Java Notepad

6、app design.This course is designed to meet the Java specifically designed to help students learn to master the Java language, through the graduation project for students to better grasp the Java programming tool. The design of the user Java Notepad based on app records and make the management of per

7、sonal diary, you can display the date, time to remind the user to do an event, can also do before recording, when the basic data inside too much information can be deleted in. The above is based on the graduation of the Java Notepad app has the main features.Keywords: android,java,app,目录1 绪论 51.1 背景

8、 51.2 国内外趋势 62 开发环境及相关技术介绍 72.1 开发环境 72.2 ANDROID应用平台架构 72.3 ANDROID开发技术 93 系统需求分析 113.1 任务概述 113.2 功能需求 114 系统及数据库设计 134.1 功能模块设计 134.2 项目使用流程图 134.3 部分系统流程图 144.4 数据库设计 15 界面设计与功能实现 25.1 数据库连接 26.2 添加记事 66.3 删除/修改/删除记事 13第五章总结 28参考文献 29基于 Aandroid 的记事本 app 设计1 绪论随着移动互联网技术的快速发展,智能手机在我们日常的工作生活中扮演着越来

9、越重要的角色,人们越来越习惯于使用各类 App 来辅助完成工作、学习和生活中的各项事务。所以移动 App 的开发成为软件应用开发的热点。1.1 背景这次设计的系统我使用的是安卓来设计的,安卓在目前来说使用是最广泛的,跟其他的语言相比较起来,还是有他自身的一些特点,在这次的毕业设计中我对很多的问题还是不了解,虽然之前学习过,但是在这次的毕业设计中我一开始对这次的毕业设计还是无从下手的,根本不知道怎么开始设计这款app,有点丈二和尚,弄不到偷脑,后来我去请教了导师,在导师的精心指导之下我首先分析了这次设计的这款系统所需要实现的功能,然后设计的这款软件的主要结构,在然后就是进行编程,当然最后的编程以

10、及系统的调试还是离不开同学和老师的帮助的。在这次的毕业设计中老师以及身边的同学给了我很多的帮助,大学三年就这样结束了,我依然记得大学刚开学时候的情景。在这三年里我学大了很多的东西结交到了很多的朋友。在以后的生活中我将继续努力,不辜负老师的希望。最后,针对商务人士,邮箱的用户来说或者是经常使用,看邮箱的同时查看记事本的信息有时候希望通过查,一次性获取全部。能够为用户带来更多的功能与便利所以记事本同步邮箱功能。1.2 国内外趋势Evernote,小米便签,NoteEverything,麦库记事,比较火的记事本软件是目前国内外有4款。 。Evernote 界面清爽在软件界面方面,使用需注册登录后才可

11、,比较协调图标布局;可编写内容记事笔记方面,支持上传图片,添加标签,特色功能方面具有搜索笔记和发送笔记、同步等功能、定位服务;内存占最多资源占用方面,CPU占用适中。界面功能简单小米便签在软件界面方面,相对丰富菜单功能,可查看和新建便签;只支持文字内容记事方面,桌面Widget颜色、字体大小等可以选择;可以移进文件夹和分享、备份、还原和设置保护密码特色功能方面;内存占用较中资源占用方面,CPU占用最少。2 开发环境及相关技术介绍2.1 开发环境本次设计的记事本 app 是基于 Android 应用平台开发的,安卓开发对环境还是有一定的要求的,具体的系统方面的要求如下。1、首先是开发系统方面:常

12、用的就是 windows 7 系统2、C/S 结构是安卓系统结构是常用的结构3、MyEclipse10、Eclipse 是此次设计中使用的开发环境4、Tomcat 7.0 是常用的服务器类型5、数据库就使用 SQLite2.2 Android 应用平台架构底层是建立在 Linux 系统之上的对于 Android 系统来说,用户界面、中间件、操作系统、应用软件这四个部分就是组成这次记事本 app 的四个部分,他的构建方式是一种被叫做软件叠层的方式进构建而成,也就是常说的 software stack。如图 2-1 所示,系统的体系结构分为 4 层对于 Android 操作系统来说,由下到上依次是

13、 Linux 内核、核心类库、应用程序、应用程序框架,其中Android 运行时的环境是包括在第二层里面的。图 2-1 Android 系统架构2.2.1 Linux 内核层他是基于Linux2.6内核来开发的对于Android平台的系统核心服务来说。如Error! Reference source not found.所示,一系列驱动模块的底层服务包括内存管理机制,进程管理机制,一些安全管理机制的提供是该层主要的功能,同时作抽象层连接软件和硬件是Linux内核的主要作用。图 2-2 Linux 内核层2.2.2 应用程序框架层在创建应用程序时各种需要使用的高级构建块应用程序框架层都提供了。设

14、计者想要访问核心应用程序所使用的API框架,设计人员可以很久设计的要求进行访问,当然设计人员也可以扩展该框架,只要根据设计的要求来扩展就行应用程序的框架如图2-3所示。图 2-3 应用程序框架层2.3 Android 开发技术2.3.1 Activity 的生命周期如24所示对Activity的生命周期的流程进行了详细的解释,如下三个关键的循环过程是一个Activity必须包含的:1、从开始调用Activity从onCreate(),最后onDestroy()结束调用,就是一个Activity的生命周期,初始化工作必须首先进行,对资源的清理工作是放在周期的最后一步的。2、Activity的活动

15、周期是可视的。onStart()表示开始,onStop()就是程序结束,用户可以在屏幕上看到它,不管这个过程中Activity有没有和用户进行互动。3、Activity后台生命期是活动的。后台生命期是从onResume()到onPause()被调用结束,与用户进行互换,但是是在其期间内的其它活动之前。图 2-4 Activity 的生命周期2.3.2 界面开发技术对于设计app系统来说最基本的技术就是界面的开发,界面的开发在几乎所有的程序开发中都是需要的。合理、是否美观的界面对客户的体验是有直接的影响的,可以提高客户体验对于好的用户交互界面来说,能大大的提高APP的使用频率。设计者通过XML技

16、术来实现AndriodUI设计,而布局是UI设计离不开的。相对布局、帧布局、线性布局、绝对布、表格布局是安卓设计系统中经常使用的五个布局,是相互嵌套的这些布局之间,设计者可以非常灵活的使用,设计者很容易就开除一些比较复杂的UI界面布局,当然只要你的布局比较合理。相对布局、线性布局、表格布局是本次的设计中所使用的。3 需求分析3.1 任务概述本次设计的目的是方便使用对对平时的时间进行记录,所有所设计的记事本软件必须具备以下的功能:(1)个人账号的注册是必须实现的(2)可以添加以及记录相关事件(3)可以上传视频以及图片(4)实现时间的显示等功能3.2 功能需求3.1.1 用户触发事件必须先点击屏幕

17、才能进行数据的互换。那些记事本上的相关按钮就是操作请求的相关按钮,屏幕的主要作用向用户提供输出的信息。每个事件就是来此操作人员的操作信息,如下表所示就是相关的出发事件,所有事件响应及其执行结果对于记事本系统中可能发生的都在下表中显示。事件 系统响应 执行结果1 点击软件系统从手机屏幕 启动系统,进入该软件,调用函数入口进入该软件,显示记事列表2 选择添加记事,点击 Menu 添加调用函数 进入添加界面3 对其中一个记事点击 调用查看记事函数 进入详细界面4 点击 Menu 在记事详细界面,可进行修改编辑记事修改函数调用 进入修改界面5 在记事详细界面点击Menu,可对记事进行删除删除函数调用

18、删除记事6 选择退出,点击 Menu 在记事列表界面,退出函数调用 退出软件3.1.2 记事本基本需求控制用户眼中的系统就是系统用例图来进行描述的,即有哪些功能用户希望系统拥有,以及完成这些功能需要通过哪些操作来进行。用户与系统交互的一种方式使用一个用例来表示。正如前面介绍过的,从参与者的角度分析系统就是识别用例的最好方法。在本次设计的 Android 记事本 app 系统中,用户就是首先的参与者。如下图所示就是系统的 E-R 图,该系统应该具有何种功能它从用户角度描述了。Ad NoteEdit/Update Note UserDelte Note3-1 记事本需求E-R图记事本个人信息 添加

19、记事 视频及图片 软件设置4 项目概要设计4.1 功能模块设计基于对记事本的功能进行整体分析之后,设计了如图 41 所示的功能模块构成。图 4-1 系统模块结构图4.2 项目使用流程图项目的使用流程,如图 4-2 所示CalendarPadYear Month NotePad程序初始化开始获取当前系统时间年份等数据计算,绘制屏幕创建保存日记文件结束图 4-2 使用流程图4.3 部分系统流程图(1)以下就是此记事本系统的登录流程图(如图 4-3)图 4-3 登录流程图(2)数据项项目的添加(如图 4-4)图 4-4 添加数据项流程图(3)数据项的删除流程图(如图 4-5)图 4-5 删除数据项流

20、程图14.4 数据库设计4.4.1 数据库概念设计根据用户需求设计出的概念性数据模型就是数据库的概念,通常用 E-R 模型表示,本设计数据库的概念结构如图 4-6 所示:Ad NoteEdit/Update Note UserDelte Note图 4-6E-R 图4.4.2 数据库逻辑设计在数据库设计中,数据库的设计应该规范合理。应该合理规划每个数据表,各个表中的属性设计应该详细齐全,命名要规范。基于数据库的概念设计,对数据库的逻辑结构设计如下:(1) 用户信息(用户名,用户密码)(2) 事件(图片,事件,时间,具体事项)(3) 留言信息(留言内容,留言者姓名,接收留言者姓名,留言时间)具体

21、实现如下表所示:表 4-1 用户信息表字段名 主键类型 主键否 描述userid int(11) 是 用户 idusername varchar(32) 否 用户名password varchar(32) 否 用户密码表 4-3 留言信息表字段名 主键类型 主键否 描述messageid int(11) 否 id2content varchar(1024) 否 留言内容username varchar(1024) 否 留言者姓名receivename varchar(32) 否 接收留言者姓名leave_time timestamp 否 留言时间表 4-4 收藏信息表5 界面设计与功能实现5.

22、1 数据库连接这是一款轻型的数据库对于 SQLite 来说,属于关系型数据库管理系统是遵守 ACID 的,在一个相对小的 C 库中包含了 SQLite。它是公有领域项目由D.RichardHipp 建立的。嵌入式是它的设计目标,而且目前已经使用了它在很多嵌入式产品中,它占用非常低的资源,在嵌入式设备中,几百 K 的内存可能只需要。主流的操作系包括 Windows/Linux/Unix 它能够支持,跟很多程序语言相结合同时能够,他还拥有 ODBC 接口,同样比起还有两种世界著名数据库管理系统 Mysql、PostgreSQL,他们的处理速度还是比较慢的。2000 年 5 月 SQLite第一个

23、Alpha 版本诞生。 目前已经发展了 17 年, 后来 SQLite 3 在 2015 年的时候发布了。个程序与之通信的独立进程对于 SQLite 引擎来说,跟一般的客户-服务器存在着一定的差距,而是成为它的一个主要部分通过连接到程序中去。所以是在编程语言内的直接 API 调用对于主要的通信协议。它的是通过在开始一个事务的时候锁定整个数据文件而完成的简单的设计。1. ACID 相关的事务2.无需安装和管理配置,就是零配置3.一个完整的数据库储存在单一磁盘文件中的4.不同字节顺序的机器间可以自由的共享数据库文件5.支持大小至 2TB 数据库6.大致 13 万行 C 代码, 4.43M7. 大部

24、分普通数据库操作要快比一些流行的数据库在8. API 简单, 轻松9. TCL 绑定功能具备, 同时支持其他语言的绑定通过 Wrapper10.注释的源代码良好, 并且有测试覆盖率 90%以上11.没有额外依赖,完全独立12. 完全开源的源码, 任何用途你都可以使用,包括商业性的13. 支持多种开发语言先下载 SQLite 数据库的 JDBC 这里给出一个中文站点的 URL:将下载到的包解压后得到 jar 包 sqlitejdbc-v033-nested.jar 放到 %JAVA_HOME%lib 下,并且将其添加 classpath 系统环境变量中,我的 classpath 系统环境变量为;

25、%JAVA_HOME%lib;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar;%JAVA_HOME%libsqlitejdbc-v033-nested.jar3在你的代码中引用这个驱动:Class.forName(“org.sqlite.JDBC“);Connection conn = DriverManager.getConnection(“jdbc:sqlite:filename“);/filename 为你的 SQLite数据名称/ . use the database .conn.close();图 4.1 记事本的界面设计package co

26、m.ironqin.note;import android.app.Activity;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.AdapterView;i

27、mport android.widget.AdapterView.OnItemClickListener;import android.widget.Button;4import android.widget.ListView;public class MainActivity extends Activity implements OnClickListener, OnItemClickListenerprivate Button btn_text,btn_photo,btn_video;private ListView listView;private Intent i;private M

28、yAdapter myAdapter;private NotesDB notesDB;private SQLiteDatabase dbReader;private SQLiteDatabase dbWriter;private Cursor cursor;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();/clearDatabase();/初始化 ,将原有数

29、据库内容清空public void initView()listView=(ListView)findViewById(R.id.list);btn_text=(Button)findViewById(R.id.button_text);btn_photo=(Button)findViewById(R.id.button_photo);btn_video=(Button)findViewById(R.id.button_video);btn_text.setOnClickListener(this);btn_photo.setOnClickListener(this);btn_video.se

30、tOnClickListener(this);listView.setOnItemClickListener(this);notesDB=new NotesDB(this);dbReader=notesDB.getReadableDatabase();5Overridepublic void onClick(View v) i=new Intent(this,AddContent.class);switch (v.getId() case R.id.button_text:i.putExtra(“flag“, “1“);startActivity(i);break;case R.id.butt

31、on_photo:i.putExtra(“flag“, “2“);startActivity(i);break;case R.id.button_video:i.putExtra(“flag“, “3“);startActivity(i);break;public void selectDB()cursor=dbReader.query(NotesDB.TABLE_NAME, null, null, null, null, null, null);myAdapter=new MyAdapter(this, cursor);listView.setAdapter(myAdapter);Overr

32、ideprotected void onResume() super.onResume();selectDB();Overridepublic void onItemClick(AdapterView parent, View view, int position, long id) cursor.moveToPosition(position);Intent intent=new Intent(MainActivity.this,SelectAct.class);intent.putExtra(NotesDB.ID, cursor.getInt(cursor.getColumnIndex(N

33、otesDB.ID);intent.putExtra(NotesDB.CONTENT, cursor.getString(cursor.getColumnIndex(NotesDB.CONTENT);intent.putExtra(NotesDB.TIME, cursor.getString(cursor.getColumnIndex(NotesDB.TIME);intent.putExtra(NotesDB.PHOTO, cursor.getString(cursor.getColumnIndex(NotesDB.PHOTO);intent.putExtra(NotesDB.VIDEO, c

34、ursor.getString(cursor.getColumnIndex(NotesDB.VIDEO);startActivity(intent);6/清空数据库操作public void clearDatabase()dbWriter=notesDB.getWritableDatabase();dbWriter.delete(NotesDB.TABLE_NAME, null, null);6.2 添加记事记事本最重要的功能无非就是事件的添加以及事件的删除功能设计,软件设计如下图 4.2图 4.2 事件的添加 package com.ironqin.note;import java.io.F

35、ile;import java.sql.Date;import java.text.SimpleDateFormat;import android.annotation.SuppressLint;import android.app.Activity;import android.content.ContentValues;import android.content.Intent;import android.database.sqlite.SQLiteDatabase;7import android.graphics.Bitmap;import android.graphics.Bitma

36、pFactory;import .Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.ImageView;import

37、android.widget.VideoView;SuppressLint(“SimpleDateFormat“)public class AddContent extends Activity implements OnClickListener private String val;private Button btn_save,btn_giveup;private ImageView img_photo;private VideoView v_video;private EditText edit_content;private File photo_file;private File

38、video_file;private NotesDB notesDB;private SQLiteDatabase dbWriter;Overrideprotected void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.activity_add_content);val=getIntent().getStringExtra(“flag“);btn_save=(Button)findViewById(R.id.button_save);btn_gi

39、veup=(Button)findViewById(R.id.button_giveup);img_photo=(ImageView)findViewById(R.id.img_photo);v_video=(VideoView)findViewById(R.id.v_video);edit_content=(EditText)findViewById(R.id.edit_content);btn_save.setOnClickListener(this);btn_giveup.setOnClickListener(this);8v_video.setOnClickListener(this)

40、;notesDB=new NotesDB(this);dbWriter=notesDB.getWritableDatabase();initView();Overridepublic void onClick(View v) switch (v.getId() case R.id.button_save:addDB();finish();break;case R.id.button_giveup:finish();break;case R.id.v_video:v_video.start();break;public void addDB()ContentValues contentValue

41、s=new ContentValues();contentValues.put(NotesDB.CONTENT, edit_content.getText().toString();contentValues.put(NotesDB.TIME, getTime();if(img_photo.getVisibility()= View.GONE)contentValues.put(NotesDB.PHOTO,“null“);elsecontentValues.put(NotesDB.PHOTO,photo_file+“);if(v_video.getVisibility()= View.GONE

42、)contentValues.put(NotesDB.VIDEO,“null“);elsecontentValues.put(NotesDB.VIDEO, video_file+“);dbWriter.insert(NotesDB.TABLE_NAME, null, contentValues);private String getTime()SimpleDateFormat format=new SimpleDateFormat(“yyyy 年 MM 月 dd 日 HH:mm:ss“);java.util.Date date=new java.util.Date();String strin

43、g=format.format(date);return string;9private String getDocumentName()SimpleDateFormat format=new SimpleDateFormat(“yyyy-mm-dd_HHmmss“);java.util.Date date=new java.util.Date();String string=format.format(date);return string;public void initView()switch (val) case “1“:/文字img_photo.setVisibility(View.

44、GONE);v_video.setVisibility(View.GONE);break;case “2“:/图片+文字img_photo.setVisibility(View.VISIBLE);v_video.setVisibility(View.GONE);Intent camera=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);/开启系统相机photo_file=new File(Environment.getExternalStorageDirectory().getAbsoluteFile()+“/“+getDocumentName()+“.

45、jpg“);/保存照片,只在数据库中存储地址camera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo_file);startActivityForResult(camera, 1);break;case “3“:/视频+文字img_photo.setVisibility(View.GONE);v_video.setVisibility(View.VISIBLE);Intent videointent=new Intent(MediaStore.ACTION_VIDEO_CAPTURE);video_file=new File(Env

46、ironment.getExternalStorageDirectory().getAbsoluteFile()+“/“+getDocumentName()+“.mp4“);videointent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(video_file);startActivityForResult(videointent, 2);break;Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) / TODO 自动生成

47、的方法存根super.onActivityResult(requestCode, resultCode, data);if (requestCode = 1) Bitmap bitmap=BitmapFactory.decodeFile(photo_file.getAbsolutePath();10img_photo.setImageBitmap(bitmap);if (requestCode = 2) v_video.setVideoURI(Uri.fromFile(video_file);/v_video.start();/播放package com.ironqin.note;import

48、 android.annotation.SuppressLint;import android.content.Context;import android.database.Cursor;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.media.ThumbnailUtils;import android.provider.MediaStore;import android.view.LayoutInflater;import android.view.View;impor

49、t android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.TextView;SuppressLint(“ViewHolder“)public class MyAdapter extends BaseAdapterprivate Context context;private Cursor cursor;private LinearLayout layout;private TextView tv_content;private TextView tv_time;public MyAdapter(Context context,Cursor cursor) this.context=context;this.cursor=cursor;Overridepublic int getCount() return curs

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报