J2ME手机电话薄_第1页
J2ME手机电话薄_第2页
J2ME手机电话薄_第3页
J2ME手机电话薄_第4页
J2ME手机电话薄_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机科学与技术系课程综合实训报告项目名称(中文): 手机电话薄 (英文): 课程名称: 专业名称: 年级班级: 学年学期: 学 号: 姓 名: 年月日目 录1.前言12.系统总体设计12.1系统设计目标12.2 系统设计思路12.3 系统总体架构12.4 系统流程图13.服务器端的设计13.1数据库存储层设计13.2服务器端的代码实现和分析14.客户端设计24.1 手机客户端程序设计24.2 界面设计24.3 程序的运行流程24.4 手机客户端的代码实现和分析25.小结215个人电话薄的设计和实现1. 前言现在手机无处不在,几乎每个人都有一台手机,而手机中的通讯录及电话薄就少不了,于是通过学

2、习j2me后,便做了这个简单的个人电话薄。2. 系统总体设计2.1系统设计目标掌握用无线java应用技术即j2me技术的软件系统设计方法,通过开发个人电话薄这个小系统,熟练使用j2me开发平台,了解java各组件的使用。2.2 系统设计思路(1)电话薄导航的实现,系统启动进入的页面是一个图标,并有文字“电话薄”显示,选择该imageitem项目后进入下一个页面.(2)主菜单,该页面显示在浏览、增加、查询、修改、删除联系人等功能(3)选择主菜单中的各功能后,进入各功能的子界面(4)系统不实现对联系人发信息以及通话功能。2.3 系统总体架构主菜单浏览联系人查询联系人增加联系人编辑联系人删除联系人使

3、用提示界面联系人信息数据库2.4 系统流程图电话薄图标主菜单单击确认进入修改删除浏览查找增添进入返回进入返回进入进入进入返回返回返回3. 客户端设计4.1 手机客户端程序设计(1)使用提示界面设计:使用一个form组件,在from组件上添加一个imageitem组件和一个command按钮,从而显示出电话薄的图标并在右下角有“确认”进入的按钮。(2)主菜单的设计:主菜单使用一个list组件,list的内容分别为各个功能的名称,在list组件上添加两个command按钮,一个为“确认”,一个为“关闭”;使用list组件的getselectedindex()函数获知用户选择的哪个功能。(3)进入具

4、体功能后,使用commandlistener监听手机按键,检查用户是否确认执行相应功能。如果确认了便执行该功能,否则返回主菜单4.2 界面设计(1)提示用户进入界面(2)主菜单界面(3)浏览界面(4)查询及查询成功、查询失败界面(5)增加界面及增加成功界面(6)删除及删除成功、删除失败界面(7)修改及修改成功、修改失败界面4.3 程序的运行流程程序首先运行addressbookmidlet类的构造函数public addressbookmidlet();在该函数中初始化各command 变量并打开联系人信息的记录存储文件。接着程序执行类中的startapp()函数显示电话薄的图标并提示进入,确

5、认后,监听函数commandaction()获得对应的值,使程序跳转到main_menu()函数,此时界面显示主菜单界面,程序继续监听手机按键,当用户选中某一功能并确认后,commandaction()函数获得值,根据该值跳转到这一功能的实现函数。当功能实现完后,commandaction()监听用户的按键,如果是“返回”,则跳转到main_menu()函数,如果是“关闭”,则跳至destoryapp()函数退出系统。4.4 手机客户端的代码实现和分析import javax.microedition.midlet.midlet;import javax.microedition.midlet

6、.midletstatechangeexception;import javax.microedition.lcdui.*;import javax.microedition.rms.*;public class addressbookmidlet extends midlet implements commandlistener private display display=null; command search=null; command quit=null; command back=null; command delete=null; command addnow=null; co

7、mmand edit=null; command into=null; command brower=null; command confirm=null; list menu=null; form ui_form=null; stringitem si=null; textfield name=null; textfield phone=null; textfield address=null; textfield nameforedit=null; imageitem oneimageitem=null; recordstore recordstore=null; public addre

8、ssbookmidlet() /用户界面初始化 display=display.getdisplay(this); quit=new command("关闭",command.exit,0); back=new command("返回",command.exit,1); confirm=new command("确定",command.ok,2); search=new command("查询",command.ok,2); delete=new command("删除",command.ok,

9、2); addnow=new command("增加",command.ok,2); edit=new command("修改",command.ok,2); into=new command("确定",command.ok,2); /记录存储初始化 try recordstore=recordstore.openrecordstore("phonebook", true); catch(recordstoreexception rse) rse.printstacktrace(); /关闭应用程序 protect

10、ed void destroyapp(boolean arg0) throws midletstatechangeexception menu=null; notifydestroyed(); /浏览界面 void browerscreen() ui_form=new form("所有命片"); string temp="" string phone_number=null; string person_name=null; try recordenumeration re=recordstore.enumeraterecords(null, null,

11、 false); while(re.hasnextelement() string name1=new string(re.nextrecord(); try person_name=name1.substring(0,name1.indexof("?"); phone_number=name1.substring(name1.indexof("?")+1,name1.indexof("#"); catch(exception ef) ef.printstacktrace(); temp=person_name+" &quo

12、t;+phone_number+"n" ui_form.append(temp); catch(exception e) e.printstacktrace(); ui_form.addcommand(back); ui_form.setcommandlistener(this); display.setcurrent(ui_form); /查询用户界面 void searchscreen() ui_form=new form("输入姓名"); name=new textfield("","",50,0); ui_

13、form.append(name); ui_form.addcommand(search); ui_form.addcommand(back); ui_form.setcommandlistener(this); display.setcurrent(ui_form); /增加记录的用户界面。 void addscreen() ui_form=new form("增加"); name=new textfield("姓名","",50,textfield.any); ui_form.append(name); phone=new tex

14、tfield("电话号码","",50,textfield.phonenumber); ui_form.append(phone); address=new textfield("地址","",50,textfield.any); ui_form.append(address); ui_form.addcommand(addnow); ui_form.addcommand(back); ui_form.setcommandlistener(this); display.setcurrent(ui_form); /修

15、改记录的用户界面 void editscreen() ui_form=new form("编辑名片"); nameforedit= new textfield("需要修改的姓名","",50,0); ui_form.append(nameforedit); name=new textfield("姓名","",50,textfield.any); ui_form.append(name); phone=new textfield("电话号码","",50,

16、textfield.phonenumber); ui_form.append(phone); address=new textfield("地址","",50,textfield.any); ui_form.append(address); /if(name.getstring()!="")ui_form.settitle("zou"); ui_form.addcommand(edit); ui_form.addcommand(back); ui_form.setcommandlistener(this); dis

17、play.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(back); ui_form.setcommandlistener(this); display.setcurrent(ui_form); /重置menu protec

18、ted void pauseapp() menu=null; / 设置菜单选项及监听 protected void startapp() throws midletstatechangeexception ui_form=new form("电话薄"); try /创建第一个图片控件 oneimageitem = new imageitem("",image.createimage("/2.png"),item.layout_default,"图片没有了"); catch (exception e) system.

19、out.println("图像出错!"); ui_form.append(oneimageitem); ui_form.addcommand(into); ui_form.setcommandlistener(this); display.setcurrent(ui_form); public void main_menu() menu=new list("电话薄.",list.implicit); menu.append("1.所有名片",null); menu.append("2.姓名查找", null); m

20、enu.append("3.新建名片", null); menu.append("4.删除", null); menu.append("5.编辑", null); menu.addcommand(confirm); menu.addcommand(quit); menu.setcommandlistener(this); display.setcurrent(menu); public void commandaction(command c, displayable d) if(c=quit)/按下关闭按钮,触发相应事件处理 try

21、 close();/关闭记录存储 catch(recordstoreexception rse) rse.printstacktrace();/销毁应用程序,触发相应事件处理 try destroyapp(true); catch (midletstatechangeexception e) / todo 自动生成 catch 块 e.printstacktrace(); else if(c=into) main_menu(); else if(c=search) string temp_search=name.getstring();/获取要查询的姓名 address_search(temp

22、_search);/调用查询方法 else if (c=edit) string temp_nameforedit=nameforedit.getstring(); string temp_name=name.getstring(); string temp_phone=phone.getstring(); string temp_address=address.getstring();/调用修改方法 address_edit(temp_nameforedit,temp_name,temp_phone,temp_address); else if(c=back) main_menu(); el

23、se 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();/获得增加的电话号码 string temp_address=address.getstring();/获得增加的地址 address_add(temp_name,temp_phone,temp_address);/

24、调用增加方法 else if(c=confirm) list down=(list)display.getcurrent(); switch(down.getselectedindex() case 0: browerscreen();break; case 1: searchscreen();break; case 2: addscreen();break; case 3: deletescreen();break; case 4: editscreen();break; /查询方法 void address_search(string address) string temp="

25、" string phone_number; string person_name; string person_address; 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 pe

26、rson_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("?"

27、;)+1,name1.indexof("#")+1); person_address=name1.substring(name1.indexof("#")+1); catch(exception e) phone_number=""person_address="" temp=temp+"n姓名."+person_name+"n电话."+phone_number+"n地址."+person_address; if(temp.equals("&qu

28、ot;) temp="没有找到。" ui_form.append(temp); ui_form.addcommand(back); /ui_form.addcommand(detail); ui_form.setcommandlistener(this); display.setcurrent(ui_form); catch(recordstorenotopenexception rsnoe) rsnoe.printstacktrace(); catch(invalidrecordidexception irid) irid.printstacktrace(); catch

29、(recordstoreexception rse) rse.printstacktrace(); /删除方法 void address_del(string address) string temp="" 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.ne

30、xtrecordid(); 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="成功删除一条记录"

31、else temp="所指定的记录不在电话薄内" catch(exception e) ui_form.append(temp); ui_form.addcommand(quit); ui_form.addcommand(back); ui_form.setcommandlistener(this); display.setcurrent(ui_form); /增加方法 void address_add(string name,string phone,string address) string data=name+"?"+phone+"#&

32、quot;+address; 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(back); ui_form.setcommandlistener(this); display.setcurrent(ui_form); catch(recordstoreexception rse) rse.printsta

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论