`
xyh
  • 浏览: 85789 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

J2ME实现的通讯录程式

阅读更多

     本程序主要利用在J2ME MIDP的RMS功能,演示了 如何通过 RecordStore 对象进行存储数据 ,并实现一个通讯录程序,程序的主要代码如下:

AddressBook.java 的源代码如下:

java 代码
    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;
    import javax.microedition.rms.*;
    
    
    public class AddressBook extends MIDlet implements CommandListener
    {
    	private Display display=null;
    	Command search=null;
    	Command quit=null;
    	Command delete=null;
    	Command addnow=null;	
    	Command edit=null;
    	Command mainmenu=null;
    	
    	List menu=null;
    	Form ui_form=null;
    	StringItem si=null;
    	TextField name=null;
    	TextField phone=null;
    	TextField nameForEdit=null;
    	
    	RecordStore recordStore=null;//声明记录储存
    	
    	public AddressBook()
    	{
    		display=Display.getDisplay(this);  //定义Display变量
    		quit=new Command("关闭",Command.SCREEN,3);//定义关闭按钮
    		search=new Command("查找",Command.SCREEN,2);//定义查询按钮
    		delete=new Command("删除",Command.SCREEN,2);//定义删除按钮
    		addnow=new Command("增加",Command.SCREEN,2);//定义增加按钮
    		edit=new Command("修改",Command.SCREEN,2);//定义修改按钮
    		mainmenu=new Command("主菜单",Command.SCREEN,2);//定义主菜单按钮
    	        //记录储存初始化
    		try 
    		{
    			recordStore=RecordStore.openRecordStore("address",true);
    		}
    		catch(RecordStoreException rse)
    		{
    			rse.printStackTrace();
    		}
    	}
    	public void startApp()
    	{
    		menu=new List("电话薄...",List.IMPLICIT);
    		menu.append("1.查询",null);
    		menu.append("2.增加",null);
    		menu.append("3.删除",null);
    		menu.append("4.修改",null);
    		menu.append("5.关闭",null);
    		menu.setCommandListener(this);
    		display.setCurrent(menu);
    		}
    	void searchScreen()  //查询用户界面
    	{
    		ui_form=new Form("电话薄查询");
    		 name=new TextField("查询姓名","",50,0);
    		ui_form.append(name);
    		
    		ui_form.addCommand(search);
    		ui_form.addCommand(quit);
    		
    		ui_form.setCommandListener(this);
    		
    		display.setCurrent(ui_form);
    	}
        void addScreen()
        {
        	ui_form=new Form("添加");
    		
        	name=new TextField("姓名","",50,0);
    		ui_form.append(name);
    		
    		phone=new TextField("电话号码","",50,0);
    		ui_form.append(phone);
    		
    		ui_form.addCommand(addnow);
    		ui_form.addCommand(quit);
    		
    		ui_form.setCommandListener(this);
    		
    		display.setCurrent(ui_form);
        }
        void editScreen()
        {
        	ui_form=new Form("修改");
    		
        	nameForEdit=new TextField("需要修改的姓名","",50,0);
    		ui_form.append(nameForEdit);
    		
    		name=new TextField("姓名","",50,0);
    		ui_form.append(name);
    		
    		phone=new TextField("电话号码","",50,0);
    		ui_form.append(phone);
    				
    		ui_form.addCommand(edit);
    		ui_form.addCommand(quit);
    		
    		ui_form.setCommandListener(this);
    		
    		display.setCurrent(ui_form);
        }
        void deleteScreen()
        {
        	ui_form=new Form("删除");
    		
        			
    		name=new TextField("姓名","",50,0);
    		ui_form.append(name);
    		
    						
    		ui_form.addCommand(delete);
    		ui_form.addCommand(quit);
    		
    		ui_form.setCommandListener(this);
    		
    		display.setCurrent(ui_form);
        }
    public void pauseApp()
    {
    	menu=null;
    }
    public void destroyApp(boolean unconditional)
    {
    	menu=null;
    	notifyDestroyed();
    }
    public void commandAction(Command c,Displayable d)
    {
    	if(c==quit)
    	{
    		try
    		{
    			close();
    		}
    	
    		catch(RecordStoreException rse)
    		{
    			rse.printStackTrace();
    		}
    		destroyApp(true);
    		}
    
    else if(c==search)
    {
    	String temp_search=name.getString();
    	address_search(temp_search);
    	
    }
    else if(c==edit)
    {
    	String temp_nameForEdit=nameForEdit.getString();
    	String temp_name=name.getString();
    	String temp_phone=phone.getString();
    	address_edit(temp_nameForEdit,temp_name,temp_phone);
    	}
    else if(c==mainmenu)
    {
    	startApp();
    }
    else if (c==delete)
    {
    	String temp_delete=name.getString();
    	address_del(temp_delete);
    }
    else if(c==addnow)
    {
    	String temp_name=name.getString();
    	String temp_phone=phone.getString();
    	address_add(temp_name,temp_phone);
    }
    else   //其他事件,根据list选项调用个界面
    {
    	List down=(List)display.getCurrent();
    	switch(down.getSelectedIndex())
    	{
    	case 0: searchScreen();break;
    	case 1: addScreen();break;
    	case 2: deleteScreen();break;
    	case 3: editScreen();break;
    	case 4: destroyApp(true);break;
    	}
    }
    }
    void address_search(String address)
    {
    	String temp=" ";
    	String phone_number;
    	String person_name;
    	String check_name="";
    	int size=address.length();
    	try
    	{
    		RecordEnumeration re=
    			recordStore.enumerateRecords(null,null,false); //enumeration通过项目集允许对例程进行重复调用。
    	    ui_form=new Form("查询结果");
    		while(re.hasNextElement())
    		{
    			String name1=new String(re.nextRecord());
    			try
    			{
    				person_name=name1.substring(0,name1.indexOf("?"));
    			}
    			catch(Exception ef)
    			{
    				person_name="请检查姓名是否正确";
    				ef.printStackTrace();
    			}
    			if(person_name.length()>=size)
    			{
    				check_name=person_name.substring(0,size);
    				
    			}
    			if(check_name.equals(address))
    			{
    				try{
    					phone_number=name1.substring(name1.indexOf("?")+1);
    					}
    				catch(Exception e)
    				{
    					phone_number="";
    				}
    		temp=temp+"\n姓名.."+person_name+"\n电话.."+phone_number;
    		}
    		}
    	//}
    
    if(temp.equals(" "))
    {
    	temp="没有找到......";
    }
    ui_form.append(temp);
    
    ui_form.addCommand(quit);
    ui_form.addCommand(mainmenu);
    ui_form.setCommandListener(this);
    display.setCurrent(ui_form);
    //}
    	}
    catch(RecordStoreNotOpenException rsnoe)
    {
    	rsnoe.printStackTrace();
    }
    catch(InvalidRecordIDException irid)
    {
    	irid.printStackTrace();
    	}
    catch(RecordStoreException rse)
    {
    	rse.printStackTrace();
    }
    } 
    void address_del(String address)
    {
    	String temp=" ";
    	String phone_number;
    	String person_name;
    	int id;
    	int del_id=0;
    	try
    	{   RecordEnumeration re=
    		recordStore.enumerateRecords(null,null,false);
    	    ui_form=new Form("删除结果");
    	while(re.hasNextElement())
    	{
    		id=re.nextRecordId();
    		String name1=new String(recordStore.getRecord(id));
    		try
    		{
    			person_name=name1.substring(0,name1.indexOf("?")); //搜索截取特定的字符串
    		}
    		catch(Exception ef)
    		{
    			person_name="请检查姓名是否正确";
    			ef.printStackTrace();
    		}
    		if(person_name.equals(address))
    		{
    			del_id=id;
    		}
    	}
    	if(del_id!=0)
    	{
    		recordStore.deleteRecord(del_id);
    		temp="成功地删除一条记录";
    		}
    	else
    	{
    		temp="所指定的记录不在电话薄内";
    	}
    }
    	catch(Exception e)
    	{
    	}
    	ui_form.append(temp);
    	
    	ui_form.addCommand(quit);
    	ui_form.addCommand(mainmenu);
    	
    	ui_form.setCommandListener(this);
    	
    	display.setCurrent(ui_form);
    	}
     void address_add(String address,String phone)
     {
     	String data=address+"?"+phone;
     	System.out.println(data);
     	try
    	{
     		byte[] b=data.getBytes();
     		recordStore.addRecord(b,0,b.length);
     		ui_form=new Form("添加成功");
     		ui_form.append("成功地添加一条记录");
     		
     		ui_form.addCommand(quit);
     		ui_form.addCommand(mainmenu);
     		
     		ui_form.setCommandListener(this);
     		
     		display.setCurrent(ui_form);
    	}
     	catch(RecordStoreException rse)
    	{
     		rse.printStackTrace();
    	}
     }
     	void address_edit(String addressForEdit,String address,String phone)
     	{
     		int id=1;
     		int edit_id=0;
     		String person_name;
     		String temp="error";
     		try
    		{
    		RecordEnumeration re=
    			recordStore.enumerateRecords(null,null,false);
    		    ui_form=new Form("修改");
    		while(re.hasNextElement())
    		{
    			id=re.nextRecordId();
    			String name1=new String(recordStore.getRecord(id));
    			try
    			{
    				person_name=name1.substring(0,name1.indexOf("?"));
    			}
    			catch(Exception ef)
    			{
    				person_name="请检查姓名是否正确";
    			}
    			if(person_name.equals(addressForEdit))
    			{
    				edit_id=id;
    			}
    		}
    		if(edit_id!=0)
    		{
    			String data=address+"?"+phone;
    			byte[] b_data=data.getBytes();
    			recordStore.setRecord(edit_id,b_data,0,b_data.length);
    			temp="成功地修改一条记录";
    			}
    		else
    		{
    			temp="要修改的记录不在电话薄内";
    		}
     	    }
    		catch(Exception e)
    		{
    		e.printStackTrace();
    		}
    		ui_form.append(temp);
     		
     		ui_form.addCommand(quit);
     		ui_form.addCommand(mainmenu);
     		
     		ui_form.setCommandListener(this);
     		display.setCurrent(ui_form);
     	}
        //关闭记录储存
        public void close()throws RecordStoreNotOpenException,RecordStoreException
       {
    	recordStore.closeRecordStore();
        }
     }
    
     

    分享到:
    评论

    相关推荐

      J2ME 手机通讯录系统

      【J2ME手机通讯录系统】是一个专门为移动设备设计的应用程序,它利用Java 2 Micro Edition(J2ME)技术实现手机上的联系人管理功能。J2ME是Java平台的一个子集,专为资源有限的嵌入式设备,如早期的智能手机和平板...

      J2ME调用通讯录

      在J2ME平台上,textfield设置为phonenumber,在一般的高端点手机,比如塞班s60上都会自动...而如果平台不支持这个属性的话,我们还可以自己写代码去调用通讯录的信息.代码奉上.这年头还在整J2ME,都是历史遗留问题啊...

      J2ME手机通讯录简易版

      《J2ME手机通讯录简易版》是一款基于Java Micro Edition(J2ME)技术开发的轻量级应用程序,主要用于在移动设备上管理个人联系人信息。这款应用利用了J2ME中的Record Management System (RMS) 技术来存储和检索联系...

      J2ME 手机通讯录实现(部分)

      本教程将深入探讨如何使用J2ME技术来实现一个简单的手机通讯录应用,这对于初学者来说是一个很好的实践项目。 1. **J2ME基础** - **架构**:J2ME由配置(Configurations)和配置文件(Profiles)组成,例如MIDP...

      J2ME个人通讯录(你会看到奇迹)

      这个“J2ME个人通讯录”项目,正如其标题所言,是一个利用J2ME技术实现的手机通讯录应用,它能够帮助用户在移动设备上管理和存储联系人信息,方便日常通信。 J2ME的特点在于它的轻量级和跨平台能力,这使得它非常...

      j2me手机通讯录代码

      本篇文章将详细解析一个J2ME手机通讯录应用的代码实现,帮助初学者更好地理解J2ME的编程方式以及如何在手机上开发简单的应用。 #### 二、应用概述 该程序实现了基本的通讯录功能,包括查询、增加联系人,并能够显示...

      简单j2me实现手机通讯录的备份与还原(源码)

      1.通过j2me的pim相关函数把通讯录内容存入字符串中 String name=""; String tel=""; String dis=""; PIM pim = PIM.getInstance(); ContactList contactList = null; Enumeration em = null; try { contact...

      J2ME手机通讯录

      本文将深入探讨如何使用J2ME实现一个基本的手机通讯录功能,特别是通过Canvas组件来构建用户界面。 一、J2ME简介 J2ME是一种轻量级的Java平台,专门设计用于资源有限的嵌入式设备,如早期的智能手机和平板电脑。它...

      基于mvc实现的j2me 通讯录

      **基于MVC实现的J2ME通讯录详解** 在移动设备上开发应用程序时,Java Micro Edition(J2ME)是一个常见的选择,它为小型设备提供了跨平台的编程能力。本项目是一个基于Model-View-Controller(MVC)设计模式实现的...

      j2me通讯录

      在【描述】中提到,该程序提供了完整的代码和文档,这意味着它不仅包含可执行的源代码,还附带了详细的说明和解释,这对于学习J2ME编程或理解通讯录应用的实现机制非常有价值。开发者可以通过查看和分析代码来学习...

      j2me通讯录实习报告

      根据给定的信息,这里主要涉及的是一个与JSP相关的实习报告,而非J2ME通讯录。但是,为了满足您的需求,我们将重点放在J2ME通讯录的开发上,并结合给出的信息来生成相关知识点。 ### J2ME通讯录实习报告 #### 一、...

      基于J2ME的手机通讯录代码

      总结来说,基于J2ME的手机通讯录代码利用了J2ME的RMS系统存储联系人数据,通过用户界面实现添加、删除和查看联系人等功能。开发者需要理解J2ME的架构、RMS机制,以及如何在有限的资源下构建用户友好的交互。这种技术...

      J2me通讯录程序源码

      【J2ME通讯录程序源码】是一种基于Java Micro Edition(J2ME)平台的源代码,用于开发手机或其他小型设备上的联系人管理应用程序。J2ME是Java平台的一个子集,专门设计用于资源有限的嵌入式设备,如移动电话、智能...

      j2me rms 通讯录

      package j2me4; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet....

      j2me通讯录代码框架

      标题中的"J2ME通讯录代码框架"是指一个基于Java 2 Micro Edition (J2ME)平台开发的手机通讯录应用程序的源代码框架。J2ME是Java的一个子集,主要用于移动设备、嵌入式系统等资源有限的环境。这个框架提供了一个基本...

      J2ME中实现电话通讯录的源代码

      在这个案例中,"J2ME中实现电话通讯录的源代码"项目运用了MVC(Model-View-Controller)设计模式,这是一种广泛用于软件工程的架构模式,特别适用于用户界面的开发。 **1. MVC设计模式详解:** - **Model(模型)**...

      J2ME 手机通讯录

      实现基本的添加、快速查找、查看、修改、删除功能,同时还能打电话和发短信的功能,其中包括打包好的jar包,可以直接在手机上运行。解压密码:robin

      J2ME 实现的 UrlEncode编码

      J2ME 实现的 UrlEncode编码 J2ME 实现的 UrlEncode编码 J2ME 实现的 UrlEncode编码

      J2ME实现画图程序

      在这个J2ME实现的画图程序中,我们主要关注的是如何在移动设备上利用Java Micro Edition(J2ME)框架创建一个简单的画图应用。J2ME是Java平台的一个子集,专门用于嵌入式设备,如手机和PDA。在这个程序中,核心功能...

    Global site tag (gtag.js) - Google Analytics