J2ME 通讯录

 

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package hello;

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import javax.microedition.midlet.*;
import java.util.Enumeration;
import java.util.Vector;
import java.io.*;

public class AddressBookMIDlet 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 AddressBookMIDlet() {
  //用户界面初始化
  display=Display.getDisplay(this);
  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("addresses", true);
  }catch(RecordStoreException rse){
   rse.printStackTrace();
  }
 }
//关闭应用程序
 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
  menu=null;
  notifyDestroyed();
 }
//查询用户界面
 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);
 }
 //重置menu
 protected void pauseApp() {
  menu=null;
 }
// 设置菜单选项及监听
 protected void startApp() throws MIDletStateChangeException {
  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);
 }
 public void commandAction(Command c, Displayable d) {
  if(c==quit){//按下关闭按钮,触发相应事件处理
   try{
    close();//关闭记录存储
   }catch(RecordStoreException rse){
    rse.printStackTrace();//销毁应用程序,触发相应事件处理
   }
   try {
    destroyApp(true);
   } catch (MIDletStateChangeException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
   }
  }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){
   try {
    startApp();
   } catch (MIDletStateChangeException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();
   }//重置
  }
  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 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: try {
      destroyApp(true);
     } catch (MIDletStateChangeException e) {
      // TODO 自动生成 catch 块
      e.printStackTrace();
     }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);
   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="请检查姓名是否正确";
    }
    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();
 }
}

 

 

 

效果如下所示:

posted @ 2011-02-20 16:32  jhtchina  阅读(315)  评论(0)    收藏  举报