基于J撒范德萨的方式.docx
《基于J撒范德萨的方式.docx》由会员分享,可在线阅读,更多相关《基于J撒范德萨的方式.docx(21页珍藏版)》请在冰点文库上搜索。
基于J撒范德萨的方式
通信专业课程设计一
太原科技大学
课程设计(论文)
设计(论文)题目:
J撒范德萨的方式
姓名_____
学号___
班级__
学院_______
指导教师______
2010年12月31日
太原科技大学课程设计(论文)任务书
学院(直属系):
时间:
2010年12月17日
学生姓名
指导教师
设计(论文)题目
J2ME计算器设计
主要研
究内容
能够输入两个数,选择运算规则并计算结果。
研究方法
使用WTK,JDK,Eclipse搭建J2ME平台,以实现计算器的开发环境。
主要技术指标(或研究目标)
1.掌握J2ME计算器的设计思想;
2.了解J2ME开发环境;
3.学习J2ME的操作流程。
教研室
意见
教研室主任(专业负责人)签字:
年月日
目录
摘要II
第1章绪论-1-
第2章J2ME计算器-2-
2.1J2ME的基本概念-2-
2.2J2ME平台的搭建-2-
2.2.1构建J2ME平台-2-
2.2.2计算器的实现-4-
第3章运行结果-7-
3.1运行和结果-7-
3.1.1计算器演示-7-
参考文献-9-
附录-10-
J2ME计算器设计
摘要
本文简单介绍了J2ME技术,J2ME(Java2MicroEdition)是Java2的一个组成部分,它与J2SE、J2EE并称。
根据Sun的定义:
J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。
J2ME技术在1999年的JavaOneDeveloperConference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。
本文通过介绍J2ME平台的搭建,从而能实现计算器的设计。
关键词:
J2ME,搭建,实现设计
第1章绪论
在今天计算已经无处不在。
越来越多的人开始认为,经过了许多人共享一台计算机的大型主机时代,一人一台计算机的个人PC时代之后,下一个时代就是一人多台计算设备的普及计算时代(UbiquitousComputing,IBM称之为PervasiveComputing)。
计算设备将从单一的PC扩展到各种各样的大小和功能,从家庭消费电子产品,到个人随身携带,穿着,车载的各种移动信息处理设备,多样化是这个领域的最大特点。
网络是这个领域最重要的增值特性。
当手机可以随时随地无线上网,PDA可以和个人PC同步,车载PC可以获得网上GPS地图数据时,这些孤立的设备才能够发挥最大的作用。
而平台无关性和网络功能正是J2ME的设计目标和能力(事实上,Java最初的设计目标就是用于消费电子领域,但是后来在PC和服务器上得到了发展)。
一次编写,到处运行的平台无关性,对网络,多重设备间联网的机制(JINI)显然对这个领域是至关重要的软件条件。
这个领域内的Java标准就是J2ME。
明天的计算将进入普及计算时代。
各种消费电子产品,包括智能手机,PDA,Web-TV,将来的信息家电等等将实现随时随地的计算。
这是一个异常广阔和丰富多彩的领域,其设备极度多样化而且都将在网络中,Java技术的跨平台性和网络功能在这里大有用武之地。
这就是J2ME,这一丰富多彩的领域中生机勃勃的技术。
第2章J2ME计算器
2,1J2ME的基本概念
J2ME(Java2MicroEdition)是Java2的一个组成部分,它与J2SE、J2EE并称。
Java2版本书籍
根据Sun的定义:
J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。
J2ME技术在1999年的JavaOneDeveloperConference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。
2.2J2ME平台的搭建
2.2.1构建J2ME平台
1.从如下地址下载相关的软件。
J2SDK1.4.2_03+WTK2.1:
Eclipse3.0RC2http:
//www.eclipse.org
EclipseME0.4.1
2.按照顺序依次安装J2SDK1.4.2_03、WTK2.1、Eclipse3.0RC2和EclipseME0.4.1,安装完j2sdk后应该设置环境变量classpath、path和JAVA_HOME等环境变量。
接下来安装WTK2.1,和一般的应用程序安装一样。
安装以后可以从KToolBar里面运行一下WTK2.1里面自带的一些Demo,如果正常运行表示WTK安装正确,下面我们要搭建Eclipse的开发环境了,Eclipse的安装很简单,你直接把Eclipse3.0RC2解压到c:
\eclipse就可以了。
直接运行Eclipse.exe这样你就可以看到Eclipse的运行界面了。
如果没有用过Eclipse的话那么你可以看看帮助文档,自己做个小java项目运行一下。
下面我们要安装EclipseME.0.4.1的插件了,关闭Eclipse然后解压EclipseME0.4.1到c:
\eclipse\plugin里面,重新启动Eclipse,选择windows->preferences可以进行配置J2ME开发平台(图2.1)
图2.1开发平台
选择PlatformComponents->WirelessToolkits,右键选择addWirelessToolkit会出现下面的界面。
图2.2配置界面
2.2.2计算器的实现
1.简单计算器功能图
图2.3功能图
2.简单计算器界面
把其放到到eclipse生产的工程目录的res目录下。
图2.4界面
3.通过J2ME平台实现
新建一个项目来开发J2ME项目,选择file->new->others->J2ME->J2MEMIDletsuite,然后填写项目的名字calc,选择下一步最后完成,这样就新建了一个J2ME项目了。
图2.5新建
接下来从PackageExplorer里面选择项目calc然后新建一个J2MEMIDlet名字命名为calc,然后使用Eclipse编译。
启动Eclipse,配置EclipseME插件。
要实现这个功能,请单击"Window"菜单,然后选择"Preferences"菜单项,然后在弹出的菜单中选择"J2ME"。
然后执行以下步骤:
点击"PlatformComponents",见图2.6。
右键单击右边窗口"WirelessToolkits",选择"AddWirelessToolkit",此时会弹出窗口(见图2.7),"WirelessToolkitDirectory"设置为wtk_home对应的安装目录。
图2.6EclipseME插件配置界面
图2.7添加WirelessToolkit
安装完成之后应该出现如图2.8的界面。
图2.8配置EclipseME插件
图2.9
然后编译代码。
第3章运行结果
3.1运行和结果
3.1.1计算器演示
从菜单选择Run->run参照下图配置运行环境。
图3.1RUN
1.加法运算
第一个操作数输入7,第二个操作数输入8,点击“=”。
如图3.2所示
图3.2加法
2.除法运算
第一个操作数输入20,第二个操作数输入2,点击“=”。
如图3.3所示
图3.3除法
3.减法运算
第一个操作数输入100,第二个操作数输入55,点击“=”。
如图3.4所示
图3.4减法
4.乘法运算
第一个操作数输入5,第二个操作数输入12,点击“=”。
如图3.5所示
图3.5乘法
参考文献
[1]BruceEckel著.侯捷译.Java编程思想[M].机械工业出版社出版社.2009.35-40.
[2]JoshuaBloce著.潘爱民译.EffectiveJava中文版[M].机械工业出版社.2004.102-108.
[3]飞思科技产品研发中心.J2EE应用开发[C].2005年6月第一版.电子工业出版社.2005.
附录
程序1:
CalcCanvas
packagemy.calc;
importcom.nokia.mid.ui.FullCanvas;
importjavax.microedition.lcdui.*;
importjava.io.*;
/**
*计算器界面
*
Description:
*
Copyright:
Copyright(c)2005
*
Company:
*@version1.0
*/
publicclassCalcCanvasextendsFullCanvas{
/**退出按钮*/
privateCommandcmdExit;
/**标题*/
privateStringtitle="Calculator";
/**字体*/
privateFontf;
/**显示的数字*/
privatelongresult=0;
/**焦点编号*/
privateintnum=0;
/**焦点坐标*/
privateintfocusX=5;
privateintfocusY=52;
/**按钮宽度间隔*/
privateintintervalWidth=2;
privateintintervalHeight=2;
/**图片起点坐标*/
privateintx=10;
privateinty=70;
/**按钮尺寸*/
privateintbuttonWidth=37;
privateintbuttonHeight=28;
/**图片文件*/
privateImageimage=null;
/**存储控件代表的内容*/
privatechar[]info={'7','8','9','/',
'4','5','6','*',
'1','2','3','-',
'0','?
','=','+'
};
/**运算中的第一个数字*/
privatelongfirstNum=0;
/**运算中的第二个数字*/
privatelongsecondNum=0;
/**是否输入第一个数字,true代表已经输入,false代表未输入*/
privatebooleanflag=false;
/**存储按下的运算按钮的下标*/
privateintfunc=0;
/**默认构造方法*/
publicCalcCanvas(){
try{
image=Image.createImage("/calc.png");
//System.out.println(x);
}catch(IOExceptione){
//ignore
System.out.println(e);
}
}
/**
*绘制
*@paramg图形对象
*/
publicvoidpaint(Graphicsg){
/**清除当前显示*/
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
//恢复系统颜色
g.setColor(0,0,0);
f=g.getFont();
//绘制标题
g.drawString(title,getWidth()/2,f.getHeight()/2,Graphics.TOP|Graphics.HCENTER);
//绘制文本框
g.drawRect(3,24,172,20);
//绘制数字
Stringtemp=Long.toString(result);
g.drawString(temp,getWidth()-3,30,Graphics.TOP|Graphics.RIGHT);
//绘制面板
g.drawImage(image,2,50,Graphics.TOP|Graphics.LEFT);
//绘制焦点
drawFocus(g,num);
}
/**
*事件处理
*@paramkeyCode按钮值
*/
publicvoidkeyPressed(intkeyCode){
//System.out.println(keyCode);
//向左移动,如果移动到右边界,则移动到下一行
if(keyCode==KEY_LEFT_ARROW){
//判断是否到达最后一个
if(num==0){
num=15;
}else{
num--;
}
}
//向右移动,如果移动到左边界,则移动到上一行末尾
if(keyCode==KEY_RIGHT_ARROW){
//判断是否到达第一个
if(num==15){
num=0;
}else{
num++;
}
}
//向上移动,如果移动到上边界,则移动到下边界对应位置
if(keyCode==KEY_UP_ARROW){
//判断是否移动到上边界,如果是则移动到下边界的对应位置
if(num-4<0){
num=15+num-3;
}else{
num=num-4;
}
}
//向下移动,如果移动到下边界,则移动到上边界对应位置
if(keyCode==KEY_DOWN_ARROW){
//判断是否达到下边界,如果是则移动到上边界的对应位置
if(num+4>15){
num=num+3-15;
}else{
num=num+4;
}
}
//确定按钮
if(keyCode==-5){
//根据选择按钮的不同进行操作
action();
}
//System.out.println("num:
"+num);
//绘图
repaint();
}
/**
*绘制焦点矩形
*@paramg图形对象
*@paramnum焦点编号
*/
privatevoiddrawFocus(Graphicsg,intnum){
//设置绘制颜色为红色
g.setColor(255,0,0);
//设置焦点的X和Y坐标
setXandYByNum(num);
//绘制选择框
g.drawRect(focusX,focusY,buttonWidth,buttonHeight);
}
/**
*根据焦点编号,设置焦点的X和Y坐标
*@paramnum焦点编号
*/
privatevoidsetXandYByNum(intnum){
focusX=5+(num%4)*(buttonWidth+intervalWidth);
focusY=52+(num/4)*(buttonHeight+intervalHeight);
}
/**
*在用户按下确定按钮以后,根据选择按钮的不同进行操作
*/
privatevoidaction(){
//判断焦点按钮是否为数字
if((num>=0&&num<3)||(num>3&&num<7)||(num>7&&num<11)||(num==12)){
//如果是数字,则将原数字乘以10,再加上现在的数字
result=result*10+(info[num]-'0');
}
//如果按下的是负号,则求当前数字的负数
if(num==13){
result=-result;
}
//判断第一个数字是否输入
if(flag==true){
secondNum=result;
//处理功能按钮
//按下=按钮,或者按下运算按钮时,进行运算
if(num==14||(num%4==3)){
//根据运算按钮进行运算
if(func==3){
//除法运算
result=firstNum/secondNum;
}elseif(func==7){
//乘法运算
result=firstNum*secondNum;
}elseif(func==11){
//减法运算
result=firstNum-secondNum;
}elseif(func==15){
//加法运算
result=firstNum+secondNum;
}
if(num==14){
//将运算结果赋给第一个数字
firstNum=result;
//将标志修改为false
flag=false;
}else{
//记录运算按钮
func=num;
//将运算结果赋给第一个数字
firstNum=result;
//将显示清零
result=0;
}
}
}else{
//将当前值赋给第一个数字
firstNum=result;
//判断是否按下运算按钮,并存储按下的运算按钮
if(num%4==3){
func=num;
//设置第一个数字已输入,并将显示清零
flag=true;
result=0;
}
}
}
}
程序2:
CalcMIDlet
packagemy.calc;
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
publicclassCalcMIDletextendsMIDlet{
privatestaticCalcMIDletinstance;
privateCalcCanvascalc=newCalcCanvas();
/**Constructor*/
publicCalcMIDlet(){
instance=this;
}
/**Mainmethod*/
publicvoidstartApp(){
Display.getDisplay(this).setCurrent(calc);
}
/**HandlepausingtheMIDlet*/
publicvoidpauseApp(){
}
/**HandledestroyingtheMIDlet*/
publicvoiddestroyApp(booleanunconditional){
}
/**QuittheMIDlet*/
publicstaticvoidquitApp(){
instance.destroyApp(true);
instance.notifyDestroyed();
instance=null;
}
}
.