基于J2ME的手机记事本的设计与实现毕业设计 推荐.docx
《基于J2ME的手机记事本的设计与实现毕业设计 推荐.docx》由会员分享,可在线阅读,更多相关《基于J2ME的手机记事本的设计与实现毕业设计 推荐.docx(24页珍藏版)》请在冰豆网上搜索。
基于J2ME的手机记事本的设计与实现毕业设计推荐
基于J2ME的手机记事本的设计与实现
摘要:
随着信息化、智能化的社会高速发展,手机对我们的影响也日益增强,人们对手机功能要求逐步提高,为了让用户能随时很好的保存重要的事情、信息,得到及时的提醒,设计了一个功能相对健全的记事本。
该软件的主要功能有:
添加待办事项、查看编辑事项、按要求删除事项、设置事项的优先级和闹铃提示。
为了软件不至于单调,在背景图,和壁纸上加了点小功能,例如:
能够设置动态壁纸,加入有限的幽默名言,在有限的范围内选择自己喜欢的壁纸等。
本软件操作简单,已知漏洞很少,适合一般用户记录信息,管理信息等。
关键词:
手机;J2me;记事本;Java
DesignandImplementationofMobilePhoneNotepadBasedonJ2ME
WeiZheng,DepartmentofElectronicInformation
Abstract:
Withthedevelopmentofinformationandinterlligentsociety,themobilephoneisbecomingmoreandmoreimportant,andpeople’sdemandoffunctiongraduallyimproved.Inordertoletusersaveanythingatanytime,andusercanremindtimely,IdesignedabasicfunctionsNotepad.Themainfunctionsofthesoftwave:
addtodo,vieworedittodo,accoordtotherequesttodeletetodo,setpriorityandquarter-bellofthetode.ForfunIaddedsomesmallfunctionsonthebackgroundandwallpaper.Example:
youcansetdynamicwallpaper,learnsomewell-knownsayingandhumorquotes,selectthewallpaperwhichyoulikeinlimitedrangeandsoon.Thissoftwavehassimpleoperationandafewbugs.Forthegeneraluserrecordandmanageinformations.
Keywords:
Mobilephone;J2ME;Notepad;Java
目录
第一章引言1
第二章可行性分析2
2.1对手机记事本开发的理解2
2.2可行性分析2
2.2.1.技术可行性2
2.2.2.经济可行性2
2.2.3.操作可行性2
第三章需求分析3
3.1系统目标3
3.1.1.开始界面3
3.1.2.功能3
3.2需求分析3
3.2.1用户需求3
3.2.2功能分析3
第四章概要设计4
4.1系统功能模块设计4
4.2开始界面设计5
4.3其他界面设计7
4.3.1.添加编辑界面7
4.3.2.查看事项界面7
4.3.3.剪贴板界面7
4.4操作流程7
4.5数据库RMS的操作与设计8
4.5.1总体E-R图9
4.5.2数据结构及表的定义9
第五章详细设计10
5.1开始界面模块的设计10
5.2记事本模块的设计10
5.3其他模块设计11
第六章系统测试和结果分析14
6.1系统测试思路14
6.2系统测试项目14
6.2.1开始界面的测试14
6.2.2主功能界面的测试15
6.2.3添加编辑界面的测试15
6.2.4查看界面的测试15
6.2.5剪贴板界面测试16
6.2.6闹铃提示功能的测试16
6.3测试结果16
第七章总结17
参考文献:
18
鸣谢19
第一章引言
现如今手机已经成为了每个人必备的通讯工具,随着3G技术和智能手机的出现和完善,人们对手机的功能需求与日俱增,取代电脑的地位也未必是空谈。
因此手机上的软件能够深入人心,得到人们的青睐,才是一个手机软件开发人员的最终目标。
看看“水果忍者”这款游戏的发展就可想而知,可谓是一夜爆红。
如果能从小白用户的角度去考虑设计软件,相信一定会成为给用户带来便利的好产品。
我们都知道,随着安卓系统手机的飞速发展,J2me几乎已经没有用武之地,但是我相信如果能做好J2me的产品,那么对于Android平台的开发也一定不是问题。
而且用J2me设计出的东西也可以移植到Android平台。
很多东西都是相通的,所以努力学习好这门语言,对我们以后会有很大帮助。
由于技术还是太弱,所以此次开发了一个功能比较简单的记事本。
本次设计的系统是面向所有的支持java语言的手机用户,功能简单适合各种年龄阶段的人使用。
为了让很多不懂手机的用户也能使用,已经尽量设计简单,没有太多的漏洞,相信如果不是软件测试或者蓄意找错,只是正常使用不会有问题。
不过设计的时候根据自己的口味精心挑选的背景壁纸,可能会引起一部分人的反感,但是如果以后真的被实际使用的话,会重新制作一个大众版,来迎合各种用户的需求。
手机可真是一个伟大的发明,如今人们对于手机的依赖可以说是无法割舍了,的确手机在很多方面给了我们好处,方便。
现在的手机不仅功能齐全,强大,而且价格也不是很高,就是人们现在常说的性价比很高啊。
现在的人们用手机的相关代替了许多以前的东西。
有句话说的很多,人有惰性才能创造,就是希望能变得舒服方便,才会想方设法去寻找方便,创造方便。
不像走路了,于是有个交通工具;不想写信了,于是有了电子信息;不像记路了,于是有了GPS导航;不想带着厚实的记事本了,于是手机上有了记事本。
记事本到了手机上,就多了许多优点,最明显的是不会忘记了,能随时得到提醒。
方便管理了,不需要每天带着小本子了。
优点固然很多,但是也有缺点。
很多人把事情记录到手机以后自己就完全的不去记忆,如果意外丢失了手机,或者损坏,那会相当麻烦。
这里只是给大家提个醒,不要完全依赖手机,不管怎么样,软件我们还是需要用心去设计的,因为现在手机上的小软件各种各样,不胜枚举,如果没有什么创新或者优点的话,绝对会很快被无视的。
第二章可行性分析
2.1对手机记事本开发的理解
在开发软件之前,首先要清楚对于手机记事本软件的认识,它通过合理的管理把用户记录的信息及时有效的给用户提醒帮助。
让人们更放心的生活。
手机记事本的开发主要是利用Java语言的面向对象特点,将软件的模块化,每个模块之间有较高的独立性。
然后将这些模块设计成对象进行封装,把用户的需求抽象成软件的需求,通过了解软件的需求来设计。
用代码来实现设计,然后调试运行确认可以投入使用。
不过如果严格按照软件开发的步骤来进行开发,对于一个大型软件绝对是无可厚非的,但是像我们这种个人完成的设计,有时候随意起来可能会有意想不到的收获,突然迸发的灵感和创意等等,所以本人在设计的过程中没有刻意拘谨于这个开发过程。
2.2可行性分析
2.2.1.技术可行性
设计该程序不需要对J2me语言有太深的了解,够用就好。
其次就是需要对开发环境和开发工具多熟悉和了解了。
这些在平时上课学习的过程中已经有了一定基础,所以可行。
2.2.2.经济可行性
这个就更加不用多作说明了,只需要一台安装好开发工具Eclipse和手机模拟器WTK的电脑就行,除了花些时间,不需要额外的费用,完全可行。
2.2.3.操作可行性
界面设计需要考虑最普通用户的习惯,在有限的空间以简洁美观为目的设计程序。
所以不需要太复杂的功能,数据存储方面使用RMS数据库,没有问题。
第三章需求分析
3.1系统目标
对于开发后要实现的功能,在写开题报告的时候已经做了初步构想,开始设计之后在一些小的地方有了新的想法。
3.1.1.开始界面
设计时也参照了别人的设计作品,很多是为了简洁直接进入功能界面,考虑了简洁,只能在简洁的基础上加上一个界面加一点创意,避免单调。
开始界面是由20张可以互相替换的壁纸组成,可以根据喜好选择其中一张做背景,可以选择纯图片,也能设置成动态幻灯,每三秒更换,每一分钟一个循环。
不同的背景图显示不同的信息。
大部分只是显示时间,设计的复杂一些的能循环显示待办事项,每天更换一句幽默笑话或者格言,虽然存入的数据有限。
3.1.2.功能
功能界面总体分4个小功能模块,主界面是列出所有的待办事项,方便用户查看。
从模块看,主界面模块,能进行待办事项的添加、编辑、删除、更改标记等操作;添加、修改模块,编辑待办事项的内容,设定待办事项的优先级,选择是否添加闹铃;查看待办事项模块,显示待办事项的内容,时间和优先级,可以进行编辑、修改、删除等操作;剪贴板模块,对已经复制的最近5条以内的内容进行管理,主要操作有编辑,删除、清空。
由于没有存入本地,所以关闭手机同样清空。
从功能看,能对已设定好的待办事项进行编辑、删除、标记、删除符合要求的事项等,整体按照优先级排序;对每个事项能进行设定优先级,闹铃;提供复制粘贴功能,遗憾是没有做到能自由复制。
3.2需求分析
3.2.1用户需求
本系统是面向所有年龄阶段的用户。
设计时考虑的角度也是从手机小白用户的角度去思考,尽量将界面简洁化、操作简单化、功能明确化、漏洞最少化,简单的操作让刚刚会使用手机的用户都能很快学会使用。
系统主要是提供记事本功能,所以从用户的角度考虑,多余的小功能越少越好,如果功能繁琐,反而会让用户心生厌倦。
3.2.2功能分析
考虑了用户使用时的心情,没有过于复杂繁琐的功能,直接进行主要操作。
最基本的是要能够实现待办事项的添加、编辑、删除。
只要懂得这些操作,使用该系统已经完全没问题了。
然后在此基础之上又进行了一些功能上的拓展,以满足更多的用户要求,每个待办事项的都有优先级和设置闹铃的属性。
待办事项会按照优先级排序,用户可以优先处理排名考前的事项。
可以对每个事项选择不设置,安静的提示,闹铃提示三种方式。
还有考虑到一些小的细节,增加了剪贴板的功能,虽然没有做到完美的自由复制,但是也带来了一些方便。
在开始界面设计了壁纸,为系统增加一点点乐趣。
第四章概要设计
4.1系统功能模块设计
系统主要分为以下几个模块:
开始界面模块、待办事项模块、添加编辑模块、查看事项模块、剪贴板模块。
其功能模块图如下(图4-1):
图4-1总体结构图
在总体结构图中说明了系统的几个主要模块和每个模块的主要功能,以及模块在系统中的主要作用。
也同时看出系统结构简单,容易操作、使用。
一切浮华的东西都是浮云,记事本功能齐全才是正事。
主界面是显示所有已经存在的待办事项,对于待办事项的大部分操作均能在这个界面执行,可以添加待办事项、查看编辑待办事项、删除单个或者按要求删除多个代办事项、标记或取消标记已完成。
这功能介绍了不止一遍,还是看图看的明白(图4-2)。
图4-2功能结构图
4.2开始界面设计
本系统最主要的两个模块是开始界面和主要功能界面两个模块,最复杂的也是这两个模块,所以在这里作主要介绍和解释。
在很多已经完成的手机记事本实例中,大多都是没有开始界面,而直接对待办事项进行操作的,这里为了能更直观的体现本软件的创意元素,所以增加了开始界面,所幸不会占用用户太多感情,如果不喜欢可以全然不用理会直接进入主要功能界面,不会耽误太多时间。
在开始界面总共有20张壁纸,可以通过左右键进行控制选择,也可以设置更为动态壁纸,算是一个小小的创意。
然后每张图都是做过处理,毕竟时间精力有限,只有部分图制作的比较用心,可以显示更多的信息,比如年月日,星期,时间,备忘记事的循环提醒,每日一句幽默名言等等。
偷懒一点的就只增加了时间信息。
每张图片都可以通过用户按下OK键进行选择使用含有信息的图片或者纯图片。
这里是另外一个创意,而且每张图的创意都不相同,希望能给用户带来快乐。
下面是开始界面模块的操作流程图(图4-3),以及选择了几张自己认为创意比较好的壁纸,也相当于调试运行结果的截图给大家(图4-4)。
图4-3开始界面操作流程图
原图片按OK键后
原图片按OK键后
图4-4一些创意壁纸
图片还是不能贴太多的,一会在程序测试的介绍里可以贴上另外的一些壁纸。
4.3其他界面设计
4.3.1.添加编辑界面
其他界面中最值得一提的是添加编辑界面,界面由一个TextField和两个ChoiceGroup然后缀上的一张图片组成。
这TextField自然是用来编辑文字内容的,两个ChoiceGroup,一个是用来选择待办事项的优先级,一个是确认是否设置闹铃,如果选择了“安静”或者“闹铃”项,会插入一个DateField用来给用户设置时间。
在本界面还可以通过“粘贴至段尾”来进入剪切板进行操作。
至于为什么是“粘贴至段尾”而不是“粘贴”,则是因为程序无法使得想粘贴的内容插入TextField的中间。
4.3.2.查看事项界面
在此界面可以完整浏览事项,可以看到待办事项的优先等级,如果事项有设置闹铃的话则可以看到事项的时间。
在此界面可以针对所浏览事项进行编辑、删除、更改标记等操作。
4.3.3.剪贴板界面
此界面主要是用来管理用户已经复制的最近5条内容,可以对已复制的内容进行编辑、删除、清空等操作。
缺点是不能自由复制粘贴,关机后不能保存(图4-5)。
为了更好的展现,此处附上几张图:
图4-5部分运行截图
4.4操作流程
在这里介绍一下操作的步骤,也顺便告诉用户如何正确是使用本系统。
为了更好的说明,这里绘出了系统的操作流程图(图4-6)。
流程图有些不合规范,不过相信操作方法表达的应该已经清楚了,在主界面可以进行的操作主要是添加待办事项、查看编辑待办事项、删除单个或者按要求删除多个待办事项,更改待办事项标记等。
图4-6操作流程图
4.5数据库RMS的操作与设计
J2me的记录管理系统(RMS)提供了一个类似文件系统的环境,用来存储和维护小型设备中的持久性数据。
设计一个游戏也许不需要用到数据库,但是一个需要对大量数据进行读取、修改、删除、保存操作的软件,数据库的处理可以一个关键。
有人把数据库描述成为“按照数据结构来组织、储存和管理数据的仓库”。
但是管理起来却要小心谨慎,存储数据和提取数据时要转换成合适的数据类型,打开关闭操作的时候一个不小心就会抛出异常。
但是麻烦归麻烦,只要一旦运用熟练,对你程序的封装和健壮性有很大帮助。
4.5.1总体E-R图
本系统总共使用了4个数据库,RS1、RS2、RS3、RST。
其中RS3就是纯粹的存储数据,而对RS1、RS2、RST的操作是平行的,这三个有关联的可以看作的同一个数据库,这里就简单的用E-R图来说明它们的关系(图4-7):
图4-7总体E-R图
4.5.2数据结构及表的定义
表4-1待办事项表
字段名
数据类型
长度
说明
待办事项
ANY
370
优先级
NUMERIC
1
时间
NUMERIC
14
此数据库的缺点就是没有主键,所以两个待办事项可能是重复的,如果两个待办事项的内容和优先级都是相同的,那么对这两个待办事项的其中一个操作的时候会出现错误。
这点目前仍没有找到很好的方法解决,非常遗憾。
第五章详细设计
5.1开始界面模块的设计
开始界面的主要是一个ClockTodoCanvas类,下面来详细介绍一下。
此类的功能是绘制本系统的开始界面。
总共设计了20个不同风格的界面,而且与数据库相连,能够显示已经添加的待办事项还有一些幽默笑话、名言名句。
每个界面都有纯图片和显示信息两种模式,按下OK键即可以切换。
也可以设置为动态显示,每隔3秒钟壁纸会更换,一分钟幻灯则循环一次。
ClockTodoCanvas类的具体设计如下面两个表(表5.1和表5.2)所示。
表5.1ClockTodoCanvas类成员变量表
描述变量类型名称
屏幕或者图片宽度intw
屏幕或者图片高度inth
动态壁纸编号intskin
读取系统年月日intday
动态壁纸开关booleanslide
壁纸模式的选择booleanview
背景或者元素图片Imagetaiga
启用系统线程模仿时间Threadth
设置画笔的字体Fontf
连接数据库RecordStorers
进入记事本界面CommandcmdOk
切换动态壁纸CommandcmdSlide
恢复正常模式CommandcmdCalm
存放读取的数据Stringphone
表5.2ClockTodoCanvas类方法表
名称功能备注
ClockTodoCanvas()连接图片创建画布类的构造方法
Paint()绘制壁纸等元素Canvas类自带方法
keyPressed()按键监听识别按键
run()获取时间和数据线程主要方法
commandAction()按键处理处理监听到的事件
5.2记事本模块的设计
记事本主要是一个ClockTodoMIDlet类来实现的,下面进行详细介绍。
本类是该系统最主要的类,基本上记事本的所有功能都在这里实现,可以说是完全独立的,本类实现了对待办事项的添加编辑、查看删除、标记等等。
可以对每个待办事项设置闹铃。
在主Form界面安优先级排序显示。
ClockTodoMIDlet类的具体设计如下面两个表(表5.3和表5.4)所示。
表5.3ClockTodoMIDlet类成员变量表
描述变量类型名称
显示类中控件Displaydis
对待办记事的处理CommandcmdDel
添加显示记事Formfrm
选择优先级ChoiceGroupcg
编辑待办记事TextFieldtfPhone
连接数据库RecordStorers
读取用户设置时间DateFielddf
启用系统线程模仿时间Threadth
存放读取的数据Strings
表5.4ClockTodoMIDlet类方法表
名称功能备注
ClockTodoMIDlet()连接图片添加数据类的构造方法
startApp()设计Form界面MIDlet类自带方法
initList()初始化数据刷新数据
run()获取时间和数据线程主要方法
commandAction()按键处理处理监听到的事件
5.3其他模块设计
本系统在设计方面有些缺憾,系统的所有东西主要由以上两个类实现,另外还有两个类ShearPlate类和Source类。
分别是用于构建简单剪贴板和简易音乐播放的作用。
在这类就不多说了,尤其是剪贴板的代码没有完善,不长,可以给大家共享一下。
希望我没有实现的缺憾有高手能给予指点。
publicclassShearPlateextendsFormimplementsCommandListener{
privateChoiceGroupcg=newChoiceGroup("",ChoiceGroup.EXCLUSIVE);
privateTextBoxtb=newTextBox("剪贴板","",370,TextField.ANY);
privateCommandcmdClear=newCommand("清空",Command.CANCEL,4);
privateCommandcmdEdit=newCommand("编辑",Command.CANCEL,2);
privateCommandcmdDel=newCommand("删除",Command.CANCEL,3);
privateCommandcmdOver=newCommand("取消",Command.CANCEL,1);
privateCommandcmdCopy=newCommand("确定",Command.BACK,1);
Strings="",s1="",s2="",s3="",s4="";
ClockTodoMIDletm;
inta,b,select;
publicShearPlate(Stringtitle,ClockTodoMIDletm){
//TODOAuto-generatedconstructorstub
super(title);
this.m=m;
this.addCommand(cmdCopy);
this.addCommand(cmdOver);
this.addCommand(cmdClear);
this.addCommand(cmdDel);
this.addCommand(cmdEdit);
init();
this.append(cg);
this.setCommandListener(this);
tb.addCommand(cmdOver);
tb.addCommand(cmdCopy);
tb.setCommandListener(this);
}
publicvoidinit(){
intcs=cg.size();
cg.deleteAll();
for(inti=0;iif(i==0)cg.append(s,null);
if(i==1)cg.append(s1,null);
if(i==2)cg.append(s2,null);
if(i==3)cg.append(s3,null);
if(i==4)cg.append(s4,null);
}
}
publicvoidcappend(Stringss){
s4=s3;s3=s2;s2=s1;s1=s;s=ss;
cg.append(s,null);
init();
}
publicvoidcommandAction(Commandc,Displayabled){
//TODOAuto-generatedmethodstub
if(c==cmdOver){
if(d==tb){this.m.dis.setCurrent(this);}
elsethis.m.paste();
}
elseif(c==cmdCopy){
select=cg.getSelectedIndex();
if(d==tb){
cg.set(select,tb.getString(),null);
this.m.dis.setCurrent(this);
}
elsethis.m.paste(cg.getString(select));
}
elseif(c