ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:211.93KB ,
资源ID:24297075      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24297075.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多功能电话簿.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

多功能电话簿.docx

1、多功能电话簿漳州职业技术学院J2ME程序设计实验报告 题 目 基于J2ME的多功能电话簿 系 别 计算机工程系 专业及班级 10嵌入式2班 学号及姓名 1006003209林情、 1006003223林清、 1006003219李文利 指导 老师 庄景晖 日 期 2012年6月17日 1、前言J2ME(Java 2 Micro Edition) 是近年来随着各种不同设备,尤其是移动通信设备的飞速发展而诞生的一项新的开发技术。它定位在消费性电子产品的应用上,对设备的智能化、多样化,提供了革命性的解决方案。多功能电话簿是在移动电话中常用的程序,它可以用来理解在持久存储中进行添加、查找、浏览和删除的

2、过程。它可以清楚地演示每个界面切换过程,以及响应用户输入的命令,实现用户对个人电话簿信息的管理。此次多功能电话簿设计的目的:首先由于每个人都有手机,通讯录是必不可少的,很贴近我们的生活,通过设计这个项目能更深了解移动通信编程思想和移动应用开发过程。2、系统总体设计2.1系统设计目标掌握用无线Java应用技术即J2ME技术的软件系统设计方法,通过开发多功能电话簿这个小系统,熟练使用J2ME开发平台,了解java各组件的使用。2.2 系统设计思路(1)运行PhoneMIDlet.java出现的是一个动画图标,接着动画切换到另外一个图标并有伴有文字“欢迎电话簿”显示,然后弹出是否可以使用网络的选项。

3、如图2.2-1所示: 图2.2-1(2)点击是跳转到欢迎主界面,该页面有进入和退出两个按钮选项。如图2.2-2所示:(3)选择进入后,就跳转我的电话簿界面,在这个界面,有两个按钮选项:返回和菜单。点击菜单可以进行添加号码、查询号码、发送短信、删除号码的操作。如图2.2-3所示:(4)选择添加号码选项,跳转到添加电话界面,在这个界面可以输入你要添加的姓名的电话。这个界面也有两个按钮选项:返回和确定添加。如图2.2-4所示: 图2.2-2 图2.2-3 图2.2-4(6)返回到我的电话簿界面,点击菜单,进入查询号码选项,就可以进入到查询电话簿的界面,在这里可以按姓名和号码的方式对联系人进行查询操作

4、。如图2.2-5所示:(7)运行项目中的ClientMIDlet3.java,出现是否可以是用网络的询问,点击是进入客户端聊天界面。如图2.2-6所示:图2.2-5 图2.2-6(8)在进入我的电话簿界面菜单里发送短信选项后,就可以发送短信,然后可以再客户端界面收到你发送的信息。如图2.2-7所示: 图2.2-7 (9)电话簿还实现了删除联系人的功能。如图2.2-8所示:图2.2-82.3 系统总体架构 图表2.3-12.4 系统流程图 图表2.4-13、系统设计3.1 系统总体设计 3.1.1 数据库设计移动信息设备框架(Mobie Iformation Device Profile)和移动

5、Java应用程序的平台为MIDP应用程序提供一种跨多个调用持久存储数据的机制。这种持久存储机制可以被视为一种简单的面向记录的数据库模型,被称为记录管理系统(Record Management,RMS)。个人通讯录通过RMS来存储和管理数据。 3.1.2 设计思想(1)存储联系信息:设计一个“联系人”类,完成联系人信息结构的定义,并提供外部访问接口;设计一个“存储类”,完成存储定义和创建,负责将联系人信息存储到存储器中;出于性能的考虑,还可以设计一个“索引类”,完成索引联系人的映射,可以显著提高联系人的查询速度。(2)接收用户输入:设计一个“界面控制”类,用于调度各个页面的显示,以及处理用户各种

6、命令或输入;设计若干个“界面”类,用于每个独立的屏幕显示。(3)初始欢迎界面:初始欢迎界面,即闪屏显示了程序初始的第一个屏幕,一般用于显示版权信息。(4)程序主界面:它包含了用户可操作的基本功能。3.2 系统详细设计 3.2.1 核心技术在通常的MIDP应用程序中,包含多个Screen或者是Canvas,而界面之间的切换一般是依靠命令来进行切换,比如用户单击Next按扭就可以跳转到下一个界面,单击Previous按扭便会跳转到上一个界面。当应用程序包含大量界面的时候,可以通过MVC实现页面导航。 MVC(Model-view-Controller, 模型-视图-控制器)的核心思想是分离。Mod

7、el就是对试题类的抽象;View就是在屏幕上的表示;Controller即使协调者。它是基于用户输入的,并将整个问题划分为3个功能模块。模型(Model)模型是应用程序的主体部分,表示业务数据或者业务逻辑,它响应视图的请求。(2)视图(View) 视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。对于应用程序而言,视图就是一系列界面,用于向用户显示数据,并将用户命令传递给控制器,用户所有的操作都是通过视图来完成的。(3)控制器(Controller) 控制器工作就是根据用户的输入来控制用户界面数据显示和更新Model对象状态将MVC分离可以让不同的成员负责不同的模块,一般情况下,

8、M部分由熟悉数据库和网络传输的成员负责;V交给对UI熟悉的成员负责。这样可以提高效率。通常MVC模式的应用程序的工作流程如图3.2.1-1所示。图3.2.1-13.2.2 静态类图 图3.2.2-1MIDlet类 MIDP的入口类即基本执行单元BookMIDlet类 被称为应用程序的主类。RecordStore类 用来实现记录存储和完成记录存储的创建,删除与更新,以及记录的添加,删除,查找和更新等操作。Account类 一般把存储的信息封装为Account类,它含有4个字段,即userName,mobilePhone,email和phone.Model类和Index类 RecordStore中

9、来完成记录的添加,删除,读取和更新等操作。AccountFilter类 过滤器类WelcomeUI类 应用程序的欢迎界面实现类,主要任务就是在屏幕指定位置画出欢迎信息。ConfirmationDialog类 是应用程序的的确认对话框类,主要任务是实现形如Windows系统中常见的确认对话框的功能SearchPhoneUI类 完成通讯录的搜索功能,本类实现的搜索功能较弱,仅仅是根据用户名进行搜索。NewPhoneUI类 主要完成用户号码的天家任务,当用户输入完要存储的号码信息后,单击“保存”按钮,便可以完成号码的保存操作。ListPhoneUI类 实现了一个显示列表,它显示符合查询条件的号码列表

10、。Title类 是作为一个工具类而存在的,该类定义了一系列本项目中用到的字符串常量,好处是便于以后修改。3.2.3 模块设计1. 程序主界面:类出用户可以执行的操作,如添加联系人等。2. 添加联系人模块:添加一个联系人所需要的各种信息,次界面包含了输入这些信息所需的界面控件。 3. 查看/修改/删除联系人信息模块:查看一个已经存储在通信录中的联系人信息,同时允许用户对信息进行修改,甚至删除。4. 查询联系人模块:用于接受用户查询联系人的查询条件。5. 发送信息和接受模块:用于用户发送消息和客户端接受信息。4、小结通过多功能电话簿的设计与实现,在编码和测试过程中,我们学到了不少的知识,也碰到了很

11、多问题,总体功能非常明确实用,使用非常简单,便于操作,适合用户需求。在编码之前,对整个系统进行系统的需求分析是非常重要和必要的,在这个基础上,我们逐个的完成各个功能模块,根据在课堂上学过的知识,在对后台数据的读写有了一定的了解后,通过参照课堂上做过的学生管理系统,把添加,删除,修改和查询等功能都实现了,在界面的设计上,加入了一些图片,让界面更加美观。总的来说,通过j2me多功能电话簿的设计开发,对以前的知识又加深了印象,更加了解了MVC模式,以及面向对象的编程思想,让我掌握了更多编程技巧。5、参考文献1杨建,杨军.精通J2ME嵌入式软件开发M.北京.电子工业出版社.2007.82詹建飞.J2M

12、E开发精解M.北京.电子工业出版社.2008.63温尚书.J2ME无线通信实用案例教程M.北京.清华大学出版社.2003.105郭克华.JavaMe移动开发实例精讲M.北京.清华大学出版社.2010.166、附录:手机客户端的代码实现和分析6.1控制类PhoneMIDLet.java,实现各个页面的跳转和参数的传递。import javax.microedition.lcdui.Display;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;p

13、ublic class PhoneMIDlet extends MIDlet private WelcomeGameCanvas welcomegc; private IntoGameCanvas intogc; private SearchFrom search; private ServerForm server; private PhoneList phone; private AddForm add; private Thread th1,th2,th3; private Display display; protected void startApp() throws MIDletS

14、tateChangeException display=Display.getDisplay(this); welcomegc=new WelcomeGameCanvas(this); /第一个界面 th1=new Thread(welcomegc); th1.start(); try th1.join(); catch (InterruptedException e) e.printStackTrace(); intogc=new IntoGameCanvas(this); /第二个界面 th2=new Thread(intogc); th2.start(); phone=new Phone

15、List(this); /第三个界面 add=new AddForm(this); /第四个界面 search=new SearchFrom(this); try th2.join(); catch (InterruptedException e) e.printStackTrace(); server=new ServerForm(this); /第六个界面 th3=new Thread(server); th3.start(); public void changeForm(String str) if(str.equals(WelcomeGameCanvas) display.setCu

16、rrent(welcomegc); else if(str.equals(IntoGameCanvas) display.setCurrent(intogc); else if(str.equals(ServerForm) display.setCurrent(server); else if(str.equals(SearchFrom) display.setCurrent(search); else if(str.equals(PhoneList) display.setCurrent(phone); phone.refresh(); /界面刷新 else if(str.equals(Ad

17、dForm) display.setCurrent(add); add.refresh(); /界面刷新 public PhoneMIDlet() / TODO Auto-generated constructor stub protected void destroyApp(boolean arg0) throws MIDletStateChangeException / TODO Auto-generated method stub protected void pauseApp() / TODO Auto-generated method stub 6.2AddForm.java添加电话

18、界面:添加完存储在数据库import java.io.IOException;import javax.microedition.lcdui.ChoiceGroup;import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.Image;import jav

19、ax.microedition.lcdui.ImageItem;import javax.microedition.lcdui.Item;import javax.microedition.lcdui.TextField;public class AddForm extends Form implements CommandListener private ImageItem imageitem; private Image img; private Command cmdBack=new Command(返回,Command.BACK,1); private Command cmdOk=ne

20、w Command(确定添加,Command.SCREEN,1); private TextField tfName=new TextField(请输入姓名,10,TextField.ANY); private TextField tfPhone=new TextField(请输入电话,10,TextField.PHONENUMBER); private ChoiceGroup cg=new ChoiceGroup(输入你要添加的姓名和电话,ChoiceGroup.EXCLUSIVE); private PhoneMIDlet parent; AddForm(PhoneMIDlet paren

21、t) super(添加电话); this.parent=parent; try img=Image.createImage(/shanchu1.png); catch (IOException e) e.printStackTrace(); imageitem=new ImageItem(,img,ImageItem.LAYOUT_CENTER,); this.addCommand(cmdBack); this.addCommand(cmdOk); this.append(cg); this.append(tfName); this.append(tfPhone); this.append(i

22、mageitem); this.tfName.setLayout(Item.LAYOUT_CENTER); /居中显示 this.tfPhone.setLayout(Item.LAYOUT_CENTER); this.setCommandListener(this); public void commandAction(Command c,Displayable d) if(c=cmdBack) /返回第二个界面,即显示电话薄界面 parent.changeForm(PhoneList); else if(c=cmdOk) /第一步:添加电话到记录集里, this.addPhone(); pa

23、rent.changeForm(PhoneList);/第二步:切换到第二个界面,即显示电话薄界面 /*添加电话*/ public void addPhone() Customer cus=new Customer(); cus.setCname(tfName.getString(); cus.setPhone(tfPhone.getString(); RMSOpe.addPhone(cus); refresh(); /*刷新界面*/ public void refresh() this.tfName.setString(); this.tfPhone.setString(); 6.3Clie

24、ntMIDlet3.java客户端:与服务器互相发送信息import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import javax.microedition.io.Connector;import javax.microedition.io.ServerSocketConnection;import javax.microedition.io.SocketConnection;import javax.microedition.lcdui.Command;impor

25、t javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.Image;import javax.microedition.lcdui.ImageItem;import javax.microedition.lcdui.TextField;import javax.m

26、icroedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;public class ClientMIDlet3 extends MIDlet implements CommandListener private Display display; private ImageItem imageitem; private Image img; private Form form=new Form(客户端); private Command cmdSend=new Command(发送,

27、Command.SCREEN,1); private TextField tfMessage=new TextField(聊天信息,255,TextField.ANY); private ServerSocketConnection ssc; private SocketConnection sc2; private DataInputStream dis; private DataOutputStream dos; protected void startApp() throws MIDletStateChangeException display=Display.getDisplay(th

28、is); display.setCurrent(form); form.addCommand(cmdSend); form.append(imageitem); form.append(tfMessage); form.setCommandListener(this); form.append(聊天记录:n); try sc2=(SocketConnection)Connector.open(socket:/127.0.0.1:9999); dis=sc2.openDataInputStream(); dos=sc2.openDataOutputStream(); new ReciveThre

29、ad().start(); catch (IOException e) e.printStackTrace(); public void commandAction(Command c, Displayable d) if(c=cmdSend) try dos.writeUTF(tfMessage.getString(); tfMessage.setString(); catch (IOException e) e.printStackTrace(); class ReciveThread extends Thread public void run() while(true) try String message=dis.readUTF(); form.append(message+n); catch (IOException e) e.printStackTrace(); public ClientMIDlet3() try img=Image.createImage(/benpao.png);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1