




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计指导Name _手持移动设备应用开发课程设计_ 目录TOC o 1-3 h z u HYPERLINK l _RefHeading_Toc312914363 一、课程设计目的与要求1 HYPERLINK l _RefHeading_Toc312914364 1.1 设计目的1 HYPERLINK l _RefHeading_Toc312914365 1.2 设计要求1 HYPERLINK l _RefHeading_Toc312914366 1.3 设计容简介1 HYPERLINK l _RefHeading_Toc312914367 二、开发环境与系统流程2 HYPERLINK l
2、_RefHeading_Toc312914368 2.1开发平台构建2 HYPERLINK l _RefHeading_Toc312914369 2.1.1环境简介2 HYPERLINK l _RefHeading_Toc312914370 2.1.2安装步骤2 HYPERLINK l _RefHeading_Toc312914371 2.2系统流程图5 HYPERLINK l _RefHeading_Toc312914372 三、详细设计与分析6 HYPERLINK l _RefHeading_Toc312914373 3.1主界面程序设计6 HYPERLINK l _RefHeading_
3、Toc312914374 3.1.1 SocketMIDlet功能简介6 HYPERLINK l _RefHeading_Toc312914375 3.1.2界面截图6 HYPERLINK l _RefHeading_Toc312914376 3.1.3界面关键代码和描述6 HYPERLINK l _RefHeading_Toc312914377 3.2服务器端界面程序设计7 HYPERLINK l _RefHeading_Toc312914378 3.2.1Server功能简介7 HYPERLINK l _RefHeading_Toc312914379 3.2.2界面截图7 HYPERLIN
4、K l _RefHeading_Toc312914380 3.2.3界面关键代码和描述8 HYPERLINK l _RefHeading_Toc312914381 3.3服务器端接收信息程序设计8 HYPERLINK l _RefHeading_Toc312914382 3.3.1功能简介8 HYPERLINK l _RefHeading_Toc312914383 3.3.2界面截图8 HYPERLINK l _RefHeading_Toc312914384 3.3.3界面关键代码和描述9 HYPERLINK l _RefHeading_Toc312914385 3.4客户端主界面设计10 H
5、YPERLINK l _RefHeading_Toc312914386 3.4.1功能简介10 HYPERLINK l _RefHeading_Toc312914387 3.4.2界面截图11 HYPERLINK l _RefHeading_Toc312914388 3.4.3界面关键代码和描述11 HYPERLINK l _RefHeading_Toc312914389 3.5客户端发送/接收信息设计11 HYPERLINK l _RefHeading_Toc312914390 3.5.1功能简介11 HYPERLINK l _RefHeading_Toc312914391 3.5.2界面截
6、图12 HYPERLINK l _RefHeading_Toc312914392 3.5.3界面关键代码和描述12 HYPERLINK l _RefHeading_Toc312914393 四、课程设计总结14 HYPERLINK l _RefHeading_Toc312914394 五、参考文献14 HYPERLINK l _RefHeading_Toc312914395 附录(源程序代码)15一,课程设计的目的和要求1.1设计目的本课程设计课题是手持设备移动应用开发教学的实践课程。旨在要求学生全面掌握在Eclipse集成开发环境下基于J2ME技术的手持移动设备应用开发的全过程,特别是掌握基
7、于Socket网络连接的用户界面设计和编程方法,进一步熟悉WTK文档的使用,强化学生对专业应用的综合编程能力。1.2设计要求(1)掌握Eclipse集成开发环境下基于J2ME技术的手持移动设备应用开发的完整开发流程;(二)掌握课程设计的工作原理,完成系统分析和相应的程序设计,包括:(1)主界面的编程,指定服务器、客户端和通信端口号的功能;(2)服务器端的接口程序设计和服务器端读取客户发送信息过程的线程设计;(3)客户端界面程序设计,客户端发送/接收信息线程设计。(3)完成课程设计说明书的编写。1.3设计能力介绍本课程设计参考WTK文档实现了一个基于Socket网络编程协议的智能手机J2ME网络
8、通信应用程序。该系统包括服务器和客户端功能,可以根据通信需要启用服务器或客户端功能,并可以指定通信端口号。客户端和服务器之间的通信由独立的线程完成。二。开发环境和系统流程2.1.开发平台建设环境介绍为了使Java语言进入嵌入式系统和消费电子产品领域,孙在Java2中引入了,并提供了一整套开发工具,可以在PC上完成应用的开发、调试、预验证和运行。用J2ME的CLDC/MIDP编写的Java程序被称为MIDlet。为了开发MIDlet应用程序,选择了Windows操作系统平台。在这个平台上安装相关软件:JDK、SunWTK、Eclipse、Eclipse插件、WTK插件。安装步骤作为Eclipse
9、的插件,Eclipse致力于帮助开发人员开发J2ME应用程序。Eclipse不为开发者提供无线设备模拟器,而是将各个手机厂商的实用模拟器紧密连接到Eclipse开发环境中,为开发者提供一个无缝统一的集成开发环境。下载/downloads/index.php.月食从oracle下载无线工具包。/tech network/Java/download-135801 . html/。安装步骤:安装jdk-7u1-windows-i586.exe(设置系统环境变量)安装01-win.exe WTK 2.5正式版。解压缩eclipse-SDK-3.7.1-win32.zip。加载ec
10、lipse.feature _ 1.7.9 _ site.zip插件,如下所示:通过在菜单窗口-首选项的J2ME选项中添加无线工具包来组合eclipse和WTK。加载WTK插件安装Eclipse简体中文语言包2.2.系统流程图主接口服务器客户端监听端口接受客户端连接将套接字连接到客户端。打开输入流。打开输出流。通过输出流发送数据通过输入流接收数据连接服务器端口打开输入流。打开输出流。通过输入流接收数据通过输出流发送数据结束?结束?拆开拆开目标目标是是不不发射端三。详细设计和分析3.1主界面编程3 . 1 . 1 Socket Midlet功能介绍主界面定义了相关的端口号、类型名称和显示功能,并
11、指定了服务器、客户端和通信端口号的设计。界面截图3.1.3界面的关键代码和描述该程序段实现了主界面显示效果的功能,主要程序段如下:public SocketMIDlet() display = display . get display(this);/获取系统屏幕f =新表单(“套接字演示”);/创建界面的标题cg = new ChoiceGroup(请选择同行,Choice。独占,名称,空);/创建两个单选按钮f .追加(CG);portField = new TextField(端口号:,String.valueOf(DEFAULT_PORT),6,TextField。数值);/创建一个不
12、超过6个字符的文本框对象f . append(portField);f . add command(exit command);f . add command(start command);/将命令按钮添加到窗体窗口f.setCommandListener(这个);/设置当前窗口的侦听器display . set current(f);3.2服务器端接口编程3.2.1服务器功能介绍服务器接口程序设计,读取客户发送信息的服务器端线程设计。界面截图3.2.3界面的关键代码和描述该程序段实现了服务器端界面显示的功能,主要程序段如下:公共服务器(SocketMIDlet m,int p) parent
13、 = m;port = p;display = display . get display(parent);f =新形式(“套接字服务器”);si = new StringItem(Status:, );tf = new TextField(Send:,30,TextField。任何);f .追加(si);f .追加(TF);f . add command(exit command);f.setCommandListener(这个);display . set current(f);3.3服务器接收信息的程序设计3.3.1功能介绍打开两个模拟器,一个作为服务端,一个作为客户端,客户端向服务端发
14、送“1231AD”。界面截图3.3.3界面的关键代码和描述这个程序段实现了在服务器端发送/接收信息的功能。主要节目片段如下:public void start() Thread t =新线程(this);t . start();/启动线程以防止网络拥塞公共无效运行()string port string = string . value of(port);尝试si.setText(等待端口上的连接+portString);SCN =(ServerSocketConnection)connector . open( socket:/:+portString);/等待连接sc =(socket c
15、onnection)SCN . acceptand open();si.setText(接受连接);is = sc . open inputstream();/打开输入流OS = sc . open output stream();/打开输出流发件人=新发件人(OS);/仅在创建发件人后才允许发送消息f . add command(send command);while (true) string buffer sb = new string buffer();int c = 0;while(c = is . read()!= n) & (c!= -1) /判断读取的字符sb . append
16、(char)c);if (c = -1) 打破;si.setText(消息接收-+sb . tostring();stop();si.setText(连接关闭);f.removeCommand(发送命令); catch (IOException ioe) if (ioe.getMessage()。equals( server socket Open )Alert a =新警报(服务器,端口+端口字符串+已被占用。,null,AlertType。错误);a.setTimeout(Alert。永远);a . setcommandlistener(this);display . set curren
17、t(a);否则如果(!停止)ioe . printstacktrace(); catch(异常e) e . printstacktrace();public void commandAction(命令c,可显示s) if (c = sendCommand) &!parent.isPaused() sender . send(TF . getstring();/发送数据if (c = Alert。dissolve _ COMMAND)| |(c = = exit COMMAND)parent . notify destroyed();parent . destroyapp(true);/退出3.
18、4客户端主界面设计功能介绍客户端界面程序设计,客户端发送/接收信息线程设计界面截图3.4.3关键代码和界面描述该程序段实现了客户端界面显示的功能,主要程序段如下:公共客户端(SocketMIDlet m,int p) parent = m;port = p;display = display . get display(parent);f =新表单(“套接字客户端”);si = new StringItem(Status:, );tf = new TextField(Send:,30,TextField。任何);f .追加(si);f .追加(TF);f . add command(exit
19、command);f . add command(send command);f.setCommandListener(这个);display . set current(f);3.5客户端发送/接收信息设计功能介绍服务器接收客户端发送的消息“1231AD”,并向客户端发送消息:“GJ1JMAMJM”界面截图3.5.3界面的关键代码和描述这个程序段实现了客户端发送/接收信息的功能。主要节目片段如下:public void start() Thread t =新线程(this);t . start();公共无效运行()string port string = string . value of(
20、port);尝试sc =(socket connection)connector . open( socket:/localhost:+portString);si.setText(连接到服务器的端口+portString);is = sc . open inputstream();OS = sc . open output stream();/启动发送消息的线程-查看发送方的主/注释进行解释发件人=新发件人(OS);/永远循环,接收数据while (true) string buffer sb = new string buffer();int c = 0;while(c = is . re
21、ad()!= n) & (c!= -1) sb . append(char)c);if (c = -1) 打破;/显示发送的信息。si.setText(消息接收-+sb . tostring();stop();si.setText(连接关闭);f.removeCommand(发送命令); catch(ConnectionNotFoundExceptionfe)警报a =新警报(客户端,请首先在端口+ portString上运行服务器MIDlet,null,AlertType。错误);a.setTimeout(Alert。永远);a . setcommandlistener(this);disp
22、lay . set current(a); catch (IOException ioe) 如果(!停止)ioe . printstacktrace(); catch(异常e) e . printstacktrace();四。课程设计概要本课程设计是一个客户端-服务器的信息发送和接收系统,分为实践和测试两部分。系统采用的技术主要是使用MyEclipse集成开发环境和WTK文档。套接字通信的基本原理是创建套接字,然后连接、监听、接受、发送、关闭等。在这次实践中,我印象最深的是通过运行继承自MIDlet的主程序来看结果,然后分析程序的接口设计和通信过程,遇到一些不懂的知识就查阅WTK文档,或者从网
23、上查了很多资料,比如ChoiceGroup类的getSelectedIndex()方法的含义,Choice。独家等。底层接口的手机应用软件设计,让我更好地掌握了Java编程和J2ME程序调试的基本技能。让我掌握了设计手机应用软件的基本思路和方法,提高了运用J2ME解决实际问题的能力。通过这次课程设计,我不仅学到了课程中知识的实际应用,还学到了编程的基本习惯和开发系统时应该注意的过程。体现自己独立设计和综合运用知识的能力,体会学以致用和突出劳动成果的喜悦,找出平时学习中的不足和薄弱环节,以便弥补。从这个意义上说,我们的贾老师,他严谨细致的作风一直是我工作学习的榜样;老师的循循善诱的教学和不拘一格
24、的思维给了我无尽的启迪;这个课程设计的每一个细节和数据,都离不开你们老师的悉心指导。而你开朗的性格和宽容的态度帮助我顺利完成了这次课程设计。动词 (verb的缩写)参考1蓝光。基于J2ME的手机日志系统的设计与实现。信息工程学院,2007。2高名娟。基于J2ME的手机考试系统的设计与实现。信息工程学院,2007。附录(源代码)SocketMIDlet包装插座;导入javax . micro edition . lcdui . choice;导入javax . micro edition . lcdui . choice group;导入javax . micro edition . LC du
25、i mand;导入javax . micro edition . lcdui mand listener;导入javax . micro edition . LC dui . display;导入javax . micro edition . lcdui . displayable;导入javax . micro edition . LC dui . form;导入javax . micro edition . LC dui . textfield;导入javax . micro edition . midlet . midlet;公共类SocketMIDlet扩展MIDlet实现Comman
26、dListener 私有静态final int DEFAULT _ PORT = 5000private static final String SERVER = SERVER ;私有静态最终字符串CLIENT = Client私有静态最终字符串 names = SERVER,CLIENT ;私人静态显示显示器;私人表格f;私人选择组CG;私有布尔值被禁用;私有TextField portField私有服务器服务器;私人客户客户;私有命令exitCommand = new Command(Exit ,命令。退出,1);私有命令startCommand =新命令(“开始”,命令。项,1);pub
27、lic SocketMIDlet() display = display . get display(this);f =新表单(“套接字演示”);cg = new ChoiceGroup(请选择同行,Choice。独家,名字,null);f .追加(CG);portField = new TextField(端口号:,String.valueOf(DEFAULT_PORT),6,TextField。数值);f . append(portField);f . add command(exit command);f . add command(start command);f.setCommand
28、Listener(这个);display . set current(f);public boolean isPaused() 返回被暂停;public void startApp() isPaused = falsepublic void pauseApp() isPaused = truepublic void destroyApp(布尔型无条件)如果(服务器!= null) server . stop();如果(客户端!= null) client . stop();public void commandAction(命令c,可显示s) if (c = exitCommand) dest
29、royApp(真);notify destroyed(); else if (c = startCommand) string name = CG . getstring(CG . getselectedindex();int port = integer . parse int(portfield . getstring();if (name.equals(SERVER) server =新服务器(这个,端口);server . start();否则client =新客户端(this,port);client . start();客户包装插座;导入Java . io . io excepti
30、on;导入Java . io . inputstream;导入Java . io . output stream;导入javax . micro edition . io . connectionnotfoundexception;导入javax . micro edition . io . connector;导入javax . micro edition . io . socket connection;导入javax . micro edition . LC dui . alert;导入javax . micro edition . LC dui . alert type;导入javax
31、 . micro edition . LC dui mand;导入javax . micro edition . lcdui mand listener;导入javax . micro edition . LC dui . display;导入javax . micro edition . lcdui . displayable;导入javax . micro edition . LC dui . form;导入javax . micro edition . lcdui . stringitem;导入javax . micro edition . LC dui . textfield;公共类客
32、户端实现Runnable、CommandListener 私有SocketMIDlet父级;私人展示展示;私人表格f;私有字符串si;私有TextField tf私有布尔停止;私有命令sendCommand =新命令(“发送”,命令。项,1);私有命令exitCommand = new Command(Exit ,命令。退出,1);InputStream是;OutputStream osSocketConnection sc发送者发送者;专用int端口;公共客户端(SocketMIDlet m,int p) parent = m;port = p;display = display . get
33、 display(parent);f =新表单(“套接字客户端”);si = new StringItem(Status:, );tf = new TextField(Send:,30,TextField。任何);f .追加(si);f .追加(TF);f . add command(exit command);f . add command(send command);f.setCommandListener(这个);display . set current(f);/*启动客户端线程*/public void start() Thread t =新线程(this);t . start();
34、公共无效运行()string port string = string . value of(port);尝试sc =(socket connection)connector . open( socket:/localhost:+portString);si.setText(连接到服务器的端口+portString);is = sc . open inputstream();OS = sc . open output stream();/启动发送消息的线程-查看发送方的主/注释进行解释发件人=新发件人(OS);/永远循环,接收数据while (true) string buffer sb =
35、new string buffer();int c = 0;while(c = is . read()!= n) & (c!= -1) sb . append(char)c);if (c = -1) 打破;/向用户显示消息si.setText(消息接收-+sb . tostring();stop();si.setText(连接关闭);f.removeCommand(发送命令); catch(ConnectionNotFoundExceptionfe)警报a =新警报(客户端,请首先在端口+ portString上运行服务器MIDlet,null,AlertType。错误);a.setTimeo
36、ut(Alert。永远);a . setcommandlistener(this);display . set current(a); catch (IOException ioe) 如果(!停止)ioe . printstacktrace(); catch(异常e) e . printstacktrace();public void commandAction(命令c,可显示s) if (c = sendCommand) &!parent.isPaused() sender . send(TF . getstring();if (c = Alert。dissolve _ COMMAND)|
37、|(c = = exit COMMAND)parent . notify destroyed();parent . destroyapp(true);/*关闭所有打开的流*/公共无效站点()尝试stop = true如果(发件人!= null) sender . stop();如果(是!= null) is . close();如果(os!= null) OS . close();如果(sc!= null) sc . close(); catch (IOException ioe) 发报机包装插座;导入Java . io . io exception;导入Java . io . output
38、stream;公共类发送方扩展线程私有输出流操作系统;私有字符串消息;公共发送方(输出流操作系统)this.os = osstart();公共同步void发送(字符串消息)消息= msgnotify();公共同步void运行()while (true) /如果没有客户端要处理,请等待,直到有一个客户端连接if (message = null) 尝试wait(); catch (InterruptedException e) if (message = null) 打破;尝试OS . write(message . getbytes();os.write(rn 。getBytes(); catc
39、h (IOException ioe) ioe . printstacktrace();/完成客户端处理,将处理程序返回到池中/标记为等待message = null公共同步void stop() message = nullnotify();计算机网络服务器包装插座;导入Java . io . io exception;导入Java . io . inputstream;导入Java . io . output stream;导入javax . micro edition . io . connector;导入javax . micro edition . io . serversocket
40、connection;导入javax . micro edition . io . socket connection;导入javax . micro edition . LC dui . alert;导入javax . micro edition . LC dui . alert type;导入javax . micro edition . LC dui mand;导入javax . micro edition . lcdui mand listener;导入javax . micro edition . LC dui . display;导入javax . micro edition .
41、lcdui . displayable;导入javax . micro edition . LC dui . form;导入javax . micro edition . lcdui . stringitem;导入javax . micro edition . LC dui . textfield;公共类服务器实现Runnable、CommandListener 私有SocketMIDlet父级;私人展示展示;私人表格f;私有字符串si;私有TextField tf私有布尔停止;私有命令sendCommand =新命令(“发送”,命令。项,1);私有命令exitCommand = new Command(Exit ,命令。退出,1);InputStream是;OutputStream osSocketConnection scServerSocketConnection scn发送者发送者;专用int端口;公共服务器(SocketMIDlet m,int p) parent = m;port = p;display = display . get display(parent);f =新形式(“套接字服务器”);si = new StringItem(Status:, );tf = new T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合同违约怎么签协议书
- 租赁合同解除调解协议书
- 旅游景点合作合同协议书
- 二级MySQL数据清理与维护技巧试题及答案
- 二级MySQL数据结构与查询试题及答案
- 四级软件测试考试常见误区试题及答案
- 提升测试文档准确性的有效方法与技巧试题及答案
- 电气行业法律法规解读考核试卷
- 教学地图绘制技术考核试卷
- 专注2025年软件测试核心试题及答案
- 《三毛流浪记》作者简介张乐平
- 2023年山西建设投资集团有限公司招聘笔试题库及答案解析
- 铁皮石斛的抗氧化、保湿功效研究和应用现状
- GB/Z 18620.4-2008圆柱齿轮检验实施规范第4部分:表面结构和轮齿接触斑点的检验
- GB/T 97.1-2002平垫圈A级
- 泊 秦 淮唐 杜牧
- GB/T 1871.1-1995磷矿石和磷精矿中五氧化二磷含量的测定磷钼酸喹啉重量法和容量法
- GB/T 1725-2007色漆、清漆和塑料不挥发物含量的测定
- 公路工程工作总结范文
- 初中物理杠杆滑轮课件
- 课件:第七章 社会工作项目结项(《社会工作项目策划与评估》课程)
评论
0/150
提交评论