当前位置:文档之家› 基于J2ME手机网络商店的设计与实现(客户端的开发)

基于J2ME手机网络商店的设计与实现(客户端的开发)

基于J2ME手机网络商店的设计与实现(客户端的开发)
基于J2ME手机网络商店的设计与实现(客户端的开发)

本文由conanfish9贡献

doc1。

基于 J2ME 手机网络商店的设计与实现(客户端的开发) 手机网络商店的设计与实现(客户端的开发)

论文作者姓名: 申请学位专业: 申请学位类别: 指导教师姓名 职称) (职称) : 论文提交日期:

基于 J2ME 平台的掌上网络商店——客户端的开发 平台的掌上网络商店—— 摘 要

根据 SUN 的定义, J2ME 是一种以广泛消费性产品为目标的高度优化的 Java 运行时环境, 它包括寻呼机、 移动电话、 可视电话、 数字机顶盒和汽车导航系统。 J2ME 具有显著的优势,它对移动设备的智能化和多样化提供了革命性的解决方 案,并因其具有“Write Once, run anywhere”的 Java 特性提高了开发效率。 随着移动通信市场竞争的逐渐加剧, 移动通信运营商将逐步把战略投资方向转移 到种类繁多的无线数据业务上面来,因此 J2ME 无线数据应用具有较为广泛的商 业前景。目前,网上购物系统具备的 24×7 服务模式与即时互动方式,大量吸引 了广大购物者的注意力,具有很大的市场潜力。 本论文选择的是基于 J2ME 平台来研究无线网络模式下的网络商店,论文首 先介绍了 J2ME 相关的基础技术与理论,随后研究了在线销售系统的若干关键技 术,重点是对客户端部分的结构和具体功能做了较为详细的阐述。最后,根据自 己的设计思路和方法实现了基于 J2ME 平台的掌上网络商店客户端系统的开发, 并与负责服务端开发的同学进行了验证、配合测试,达到了预期成果。

关键词 关键词:J2ME;XML;无线应用;网络商店

The Palm Platform of e-Shop Based on the J2ME- -

Client Development Abstract

According to Sun’s definition, J2ME is an optimized Java functioning environment oriented in massive consumption products. And it includes: pagers, mobile phones, video phone, digital set-top boxes and car navigation systems. As a result, it provides a revolutionary solution for mobile devices and intelligent diversification, and improves the developing efficiency for its "Write Once, run anywhere "Java properties. Meanwhile, as the competition of mobile communications market increases, mobile communications operators will gradually shift the strategic direction of the investment business to a wide variety of wireless data services to their superiors, So J2ME wireless data applications with a wider range of business will prospect. Currently, online shopping system with a 24 x 7 service, which is an immediate interactive mode, not only attracts a lot of customers, but also has great market potential. Based on that, this paper chooses J2ME-based network shop to study the wireless network model. At first, this paper introduces and analyzes the J2ME related basic technology and theory. And then it studies some key technologies of the online sales system. Still this paper surveys the details of the client part of the structural analysis and specific functions. Finally, according to the ideas and design method based on the J2ME platform for handheld shops network client system, and with the help of the classmate who was in charge of the server development, this paper achieves the expected results.

Key words: Java 2 Micro Edition; XML; Wireless application; Network store

论文总页数:26 页

引言…… 1 1.1 1.2 选题背景及目的 …… 1 手机软件现状 …… 1

相关技术及开发环境介绍 …… 2 2.1 2.2 2.3 2.4 2.5 J2ME 概况 …… 2 J2ME 体系结构 …… 3 联网机制…… 5 数据交换技术 …… 7 开发环境…… 8 关于 WIRELESS TOOL KIT 2.5 …… 9

ECLIPSE 下面的

2.5.1 2.5.2 3

J2ME 环境配置 …… 9

需求分析与设计方案 …… 9 3.1 3.2 3.3 需求分析…… 9 设计方案…… 10 J2ME 客户端需要完成的任务 …… 12

程序流程与具体实现 …… 13 4.1 4.2 4.3 4.4 4.5 4.6 程序涉及到的若干类 …… 13 XML 的解析 …… 13 登陆系统实现 …… 17 注册系统实现 …… 18 查询系统实现 …… 20 购买系统实现 …… 21

系统开发测试中的问题 …… 22 5.1 5.2 屏幕跳转…… 22 事件处理机制 …… 23 论…… 24

参考文献…… 24 致 声 谢…… 25 明…… 26

1 引言

选题背景及目的 1.1 选题背景及目的

近几年,由于微处理器性能的大幅提升,加上无线通讯技术的突破,手持式 移动设备开始受到大众的青睐。短短几年内,手机已经升级了几代产品,普及率 逐年攀升, 生产效率不断上升, 产品价格比个人电脑的摩尔定律有更惊人的下调, 以至手机是大多是城市居民不可缺少的一件随身设备。 继短信、 彩信等服务之后, 中国移动提供基于 Java 的百宝箱业务,应用产品遍及商务应用、信息获取、英 汉互译、游戏娱乐等多媒体领域。根据官方公布的统计数据,我国移动电话用户 已突破 3 亿。依托这样的市场,一旦无线 Java 应用大规模开展起来,将会创造 出比短信业务更为惊人的利润。Java 语言原先的开发目的与市场的需求不谋而 合,并且也已经成为手机应用程序开发的标准,国际大公司如 Nokia、Motorola 及 Siemens 等所设计的手机内都加入 Java 程序的支持, 可见在不久的将来, Java 将会成为移动设备上最热门的语言。 手机中将 Java 语言引入,作为一种通用的开发标准, 并将向市场推广普及仅 仅短短几年,中文资料除台湾出版过相关书籍外,国内相关介绍资源很有限, 国内 J2ME 开发商也屈指可数,名声较响的 Digital-Red 公司也仅成立于 1999 年。本 文可算是对新技术的一些尝试,代表对无线平台应用程序推广的一些努力。 而本次研究的目的就在于: 在设计 J2ME 网络商店-客户端中, 仔细研究 J2ME, 掌握基本的 J2ME 开发技术、网络编程技术,XML 解析技术等知识。

1.2 手机软件现状

Java 手机软件平台采用的基本 Java 平台是 CLDC (Connected Limited Device Configuration)和 MIDP (Mobile Information Device Profile),是 J2ME (Java 2 Micro Edition)的一部分,在中国一般称为“无线 Java”技术。此前, 有人把它叫做“K-Java”;其实,K-Java 的叫法只是 Sun 公司在开发 KVM Java 虚拟机时的项目代号, 在该技术被正式命名为 KVM 后, 就不再用 K-Java 了。 KJava 即 J2ME(Java 2 Micro Edition) ,是 Sun 公司专门用于嵌入式设备的 Java 软 件。以 KJava 编程语言为手机开发应用程序,可以为手机用户提供游戏、个人信 息处理、电子地图、股票等服务程序。J2ME(Java 2 Micro Edition)是致力于消 费产品和嵌入式设备的最佳解决方案。J2ME 在设计其规格的时候,遵循着“对 于各种不同的装置而造出一个单一的开发系统是没有意义的事”这个基本原则。 于是 J2ME 先将所有的嵌入式装置大体上区分为两种:一种是运算功能有限、电 力供应也有限的嵌入式装置(比方说 PDA、 手机); 另外一种是运算能力相对较佳、 并且在电力供应上相对比较充足的嵌入式装置(比方说冷气机、电冰箱)。因为这 两种区分,所以 Java 引入了一个叫做 Configuration 的概念,然后把上述运算

第 1 页 共 26 页

功 能 有 限 、 电 力 有 限 的 嵌 入 式 装 置 定 义 在 Connected Limit

ed Device Configuration(CLDC)规格之中;而另外一种装置则规范为 Connected Device Configuration(CDC) 规 格 。 也 就 是 说 ,j2me 先 把 所 有 的 嵌 入 式 装 置 利 用 Configuration 的概念区隔成两种抽象的型态。 Java 技术的开放性、 安全性和庞大的社会已有资源,以及其跨平台性, 即“编 写一次,到处运行”的特点,使 Java 技术成为智能手机软件平台的事实标准。采 用 Java 技术后,编写应用程序和提供服务的人就不必关心接受其服务的手机采 用的是什么操作系统和芯片,只要按照 Java 的要求去写程序就好了;同样,生产 手机的厂商也不必顾虑将来谁来提供增值服务。可以看出,采用 Java 技术,可以 建立完整、高效的无线数据增值服务产业链,从而为用户提供灵活、个性化、内 容方式多样的服务。

2 相关技术及开发环境介绍 相关技术及开发环境介绍 及开发环境

2.1 J2ME 概况

虽然 Java 已经被用到许多企业级软体上,可是其实骨子里面还是非常适合 用在嵌入式系统之中。 Java 平台演进到 Java2 后,Java 平台分别针对不同领域的需 J2SE、 J2ME 以及 JavaCard(其结构示意图见图 1)。 求被分成四个版本,亦即 J2EE、 其中 J2ME 定位在消费性电子产品的应用上。 这个版本针对资源有限的电子消费 产品的需求精简核心类库, 并提供了模块化的架构让不同类型产品能够随时增加 支持的能力。 这个版本的应用层面相当广泛,会是未来 Java 平台发展的重点项目。 J2ME 在设计其规格的时候,遵循着 “对各种不同的装置而造出一个单一的开发系 统是没有意义的事”这个基本原则。

图 1 Java 平台的结构

于是 J2ME 先将所有的嵌入式装置大体上区分为两种:一种是运算功能有 限、电力供应也有限的嵌入式装置(比方说 PDA 、手机);另外一种则是运算能 力相对较佳、 在电力供应上相对比较充足的嵌入式装置 (比方说冷气机、 电冰箱、 电视机上盒 (set-top box))。因为这两种型态的嵌入式装置,所以 Java 引入了一 个叫做 Configuration 的概念,把上述运算功能有限、电力有限的嵌入式装置定 义在 Connected Limited Device Configuration(CLDC)规格之中;而另外一种装置

第 2 页 共 26 页

则规范为 Connected Device Configuration(CDC)规格。也就是说,J2ME 先把所有 的嵌入式装置利用 Configuration 的概念区隔成两种抽象的型态。J2ME 平台被认 为是最杰出的手机游戏平台,它为开发者、设备制造商、网络通信公司和消费者 广泛接受。它有一些非常重要的特征对所有组织都有益。因为 J2ME 应用在不同 设备上都是便携式的,他们常常可在网络上下载和执行。如果没有正确的防范, 它则为用户和无线通信公司冒着无数个安全的风险。幸运的是,Java 被设计成一 种安全的语言。所有字节码应用在执行之前都要校验;JVM 在执行过程中监督 应用的安全性和存储违反问题。MIDP v2 运行时间包括一个完全特征化的、基 于域的安全管理员,它在应用的数字签名者鉴别的基础上赋予应用 API 级许可。

2.2 J2ME 体系结构

J2ME 体系结构是基于设备的系列和类别的。一个类别定义了一个特定种类 的设备:移动电话、简单寻呼机和电脑记事本都是单独的类别。对存储器和处理 能力有相近需求的若干类别的设备构成设备的一个系列。移动电话、简单寻呼机 和简单个人电脑记事本一起就是占用资源很小的设备的一个系列。 图 2 定义了在 J2ME 上下文环境中设备的系列和类别之间的关系。

图 2 设备的系列(family)和类别(category)

为了支持资源受限设备系列所要求的那种灵活性和可定制部署,人们将 J2ME 体系结构设计成模块化的和可伸缩的。 J2ME 技术在一个完整的应用程序运 行时模型中定义了这种模块性和可伸缩性,在该模型(图 3 所示)中的四个软件 层都构建在设备的主机操作系统上。 Java 虚拟机层(Java Virtual Machine Layer):这一层是 Java 虚拟机的 一个实现,它是为特定设备的主机操作系统定制的,而且支持一个特定的 J2ME 配置(configuration) 。 配置层(Configuration Layer) 配置层定义了 Java 虚拟机功能的和特定 :

第 3 页 共 26 页

类别设备上可用的 Java 类库的最小集。 从某种程度上说, 一个配置定义了 

Java 平台功能部件和库的共同性, 开发者可以假设这些功能部件和库在属于某一特定 类别的所有设备上都是可用的。用户不太会见到这一层,但它对框架(profile) 实现者非常重要。 框架层(Profile Layer) :框架层定义了特定系列设备上可用的应用程序编 程接口(API)的最小集。框架在一个特定的配置上面实现。应用程序是针对特 定的框架编写的,因此可以移植到支持该框架的任何设备上。一个设备可以支持 多个框架。用户和应用程序供应商看到最多的就是这一层。 MIDP 层:移动信息设备框(Mobile Information Device Profile(MIDP) ) 是一个 Java API 集合,它处理诸如用户界面、持久存储和联网这样的问题。 Java 虚拟机层(Java Virtual Machine Layer) 、配置层(Configuration Layer)和框架层(Profile Layer)一起构成了连接限制设备配置(Connected Limited Device Configuration(CLDC)。MID 框架(MID Profile)和 CLDC 提 ) 供了一个标准的运行时环境, 这个环境允许把新的应用程序和服务动态地部署在 终端用户设备上。

图 3 J2ME 体系结构

用 MIDP API 进行 J2ME 编程:构件 CLDC 和 MIDP 组合起来为创建移动电话 和简单双向寻呼机上的应用程序提供了完整的环境。 MIDP 框架的核心是一个 MIDlet 应用程序。这个应用程序继承了 MIDlet 类,以允许应用程序管理软件对 MIDlet 进行控制、从应用程序描述符检索属性 以及对状态变化进行通知和请求。 所有 MIDlet 都继承 MIDlet 类 — 运行时环境(应用程序管理器)MIDlet 应用程序代码之间的接口。MIDlet 类提供了用于调用、暂停、重新启动和终止 MIDlet 应用程序的 API。 应用程序管理软件可以在运行时环境内管理多个 MIDlet 的活动。此外,

第 4 页 共 26 页

MIDlet 可以自己发起一些状态变化,并把这些变化通知给应用程序管理软件。 MIDP API 类的完整集合可以分为两个类别: 1、用于用户界面的 MIDP API:设计这些 API 是为了能以一系列屏幕显示 为基础与用户进行交互操作,每一屏幕显示把适量的数据显示给用户。命令以每 屏幕为基础提供给用户。这些 API 应用程序决定下一屏显示什么、执行什么计 算和使用网络服务的何种请求。 2、用于处理数据库的 MIDP API:这些 API 负责组织和操作设备数据库, 这个数据库由在 MIDlet 的多个调用之间跨越时保持持久的信息组成。 底层的 CLDC API 用于处理字符串、对象和整数。还提供了 Java 2 API 的 一个子集,用于处理 I/O 和网络通信。 图 4 定义了 J2ME 的构件。

图 4 J2ME 的构件

2.3 联网机制

通用联网框架(图 5)在 J2ME 平台中扮演着十分重要的角色,如果没有它, 我们写的应用程序对外人来说只能说“神秘”, 而应用了通用联网框架进行联网 的程序就显得“神奇”了。这里我将对通用联网框架进行整体的分析,由于移动 信息设备的资源受限特性,所以 java.net 和 java.io 包不适合在这里使用。现 实世界中使用着各种各样的网络通信协议,这使得设计好这个框架非常不容易, 至少我是这么认为的。 然而当我们分析 GCF 的时候可以清楚地发现它有如下几个 特性:基于接口设计,便于扩展、提供创建连接的工厂方法、使用标准 URL 简化 了程序员的工作。 当我们察看 CLDC1.1 的 API 的时候可以发现其中定义了 8 个接 口、一个 Connector 类和 ConnectionNotFoundException 异常。在 MIDP2.0 中进

第 5 页 共 26 页

行了扩展,提供了 HttpConnection、HttpsConnection 接口,这样使得 MIDlet 具 备 了 通 过 Http 或 者 Https 协 议 与 server 通 信 的 能 力 , 提 供 了 SocketConnection、ServerSocketConnection、UDPDatagramConnection 接口, 使得 MIDlet 能够在 TCP/IP 层通过 socket 进行通信或者使用数据报进行通信的 能力。 结合 GCF 的接口层次图来了解通用联网框架是最好的办法, 下面我们看看它 的层次结构。 最上层的接口是 Connection,其他的接口都从他那里继承。在 Connection 中只定义了一个方法 close()。在我们的现实世界中通常使用的是分组数据交换 和电路交换,所以在网络框架中有 DatagramConnection 和 StreamConnection。 由于在基于流传输中我们需要对输入流和输出流通是具有操作的能力。因此 StreamConnection 扩展了 InputConnection 和 OutputConneciton, 我们经常使用 的 Co

nn.openInputStream(),conn.openOutputStream()方法都是在这两个重要 的接口中定义的。StreamConnectionNotifier 接口定义了连接监听器应该具备 的能力,它的方法 acceptAndOpen()方法返回一个 StreamConnection 类型的连 接,ServerSocketConnection 继承了 StreamConnectionNotifier 接口,这样如 果你做 socket server 的时候就可以通过使用这样的 URL,socket://:port 在你 的设备上建立监听端口等待连接。SocketConnection 继承 StreamConnection 正 好可以和 ServerSocketConnection 交相辉映。UDPDatagramConnection 则是为 了分组数据交换中使用而继承了 DatagramConnection 接口。 ContentConnection 接 口 中 只 定 义 了 三 个 方 法 getEncoding(),getLength() 和 getType() , HttpConnection 就是他的子类,在 HttpConnection 中定义了大量的操作。

图 5 通用联网框架

而 GCF 的是使用非常简单,主要集中在 Connector 的 open()方法上。我们要 做的是提供一个标准 URL 给 open 方法, 例如需要得到 HttpConnection 我们应该 第 6 页 共 26 页

写类似下面的代码: String url = “http://myip:myport/myservlet”; HttpConnection httpConn = (HttpConnection)Connector.open(url); 我在这里只列入它的基本格式:{scheme}:[{target}][{parms}],针对不同 的网络通信方式,我要做的就是写出不同的 URL,并通过强制转换得到你需要的 连接类型。

2.4 数据交换技术

本章主要介绍在 J2ME 中客户端和服务器端的数据交换技术,由于移动设备 有限的处理器能力和内存,不支持一些像 JavaRMI 或 JAX-RPC 复杂的客户端/服 务器通信机制, 而必须选择一种较为轻量级通信机制。 一般通信方式有:基于 HTTP 的通信方式、基于 SOCKET 的通信方式和基于数据包的通信方式等。 但是基于 SOCKET 或数据包方式目前不是所有的 MIDP 设备都支持, 而且可能 无法穿越防火墙,而基于 HTTP 的通信方式却不存在此类问题,大多数企业的防火 墙都对 80 端口上的向外 HTTP 请求没有限制或做少量的限制,对大多数应用,以 HTTP 作为通信协议基础完全可以胜任。而且所有的 MIDP 设备都支持 HTTP 网络, 因此使用 HTTP 网络的应用程序跨平台性很好。另外,Java 网络 API 为 HTTP 通信 提供了编程接口。

HTTP 请求 移动设备 客 户端 HTTP 响应 Servlet

图 6 基于 HTTP 的 MIDP 客户端和服务器端

下面阐述基于 HTTP 的 MIDP 客户端和 Servlet 之间的基本通信方案(如图 6 所示)。 一、基于 HTTP 的 MIDP 客户端和 Servlet 之间的通信步骤为: 1.首先,MIDP 客户端将请求消息编码并将其打包成一个 HTTP 请求,设置 Content_type 头 内 容 , 将 其 设 置 为 text/plain( 文 本 内 容 请 求 ) 或 application/octet-stream(二进制请求)等等,以确保网关对该请求的正确处 理。 2.然后,Servlet 接收 HTTP 请求包,并将其解码,然后 Servlet 或一些代 理(如企业 bean)执行该请求任务。 3.接着,Servlet 将响应消息编码并将其打包成一个 HTTP 响应包,同样设 置 Content_type 和 Content-Length 的头内容。text/plain 针对文本内容响应, 第 7 页 共 26 页

image/png 针对 PNG 图片响应,而 application/octet-stream 用来指定二进制 响应。 4.最后,MIDP 客户端接收 HTTP 响应并将该响应解码,然后 MIDP 客户端应用 程序执行相应的任务。 本系统采用的通讯方式即为如上所述的传统的 HTTP 方式。但是这种通信方 式在移动商务系统的应用的过程中也有一些弊端,比如:在服务器端响应的过程 中,客户端异常关机或超出了网络服务范围,这样数据将丢失。 二、Servlet 之间的基本通信方案: 目前有效的数据交换格式有两种:二进制格式和 XML 格式。 XML 是一种更复杂的数据交换格式。 使用 XML 数据格式存在如下的不利因素: 1.将额外的库加载到 MIDP 应用程序中,额外地要占有一定的内存,这对于 有线内存的移动设备来说可能是不可取的。 2.使用 XML 格式的数据比较大,必将增加了网络的传输负担,而对有限带宽 的无线网络来说将会产生更长的延迟。 二 进 制 格 式 是 最 简 单 的 数 据 交 换 格 式 , 它 通 过 DataInputStream 和 DataOutputStream 提供的一些方法读写数据,如 DataInputStream.readUTF 和 DataO

utputStream.writeUTF 读写 UTF-8 码的字符串等。 虽然二进制格式没有自我 描述的功能, 客户端和服务端的数据格式必须一致, 但是使用二进制数据对移动设 备非常有效。因为二进制数据是紧压缩的,而且二进制数据的大小比 XML 小得多, 没有复杂的描述,数据量小,这对有限资源的移动设备是特别重要的,不但可以节 省存储空间,而且可以加快数据传输速度。 当然随着以后系统处理器和存储功能的增强以及无线网络的改进,采用 XML 格式作为数据交换格式是非常可取的。

2.5 开发环境

目前流行的开发 J2ME 的工具有 JBuilder、Eclipse、WTK 等三种方式,其 中前面两者都是集成开发环境,在编程上比较方便,有智能联想等功能, WTK 相 而 对只提供了手动编译和打包,并且没有 Debug 功能。但 WTK 不需要多余的配置, 对各种模拟器可以说是即插即用,而且在 WTK 下的程序目录简洁明了,方便查询。 这几种开发环境各有长短处,根据我自身的实际情况我选择了 Eclipse 3.2 做为 我的开发工具,以下罗列了本论文的主要开发环境: 1. 2. 3. 4. 操作系统: 程序语言: 开发包: Sun Micro: Microsoft Windows XP Java 2 Java(TM) 2 Standard Edition 1.5 J2ME Wireless Tool Kit 2.5

第 8 页 共 26 页

5.

IDE:

Eclipse 3.2

2.5.1 关于 Wireless Tool Kit 2.5 WTK(Wireless Tool Kit)是 Sun 公司针对 J2ME 推出的用于手机和 Palm 等移 动设备的开发包,是除手机厂商的专用开发包外唯一的手机模拟器开发包。它通 用性高,开发出的应用程序可保证能运行在大部分设备上,而不像专用厂商具有 一定的不兼容性。虽然它没有强大的功能和完善的调试手段,但它提供运行模拟 器的最基本组件,是其他 IDE 需集成采用的必备元素。 2.5.2 eclipse 下面的 J2ME 环境配置 一、需要下载的软件包括: JDK 1.5;Eclipse 3.2;Eclipse 3.2 汉化包;EclipseMe 1.6.6;WTK 2.5。 二、配置过程 1.安装 JDK。 2.安装 Eclise 3.2。 3.安装汉化包和 EclipseMe。 4.安装 WTK2.5。 5.设置 EclipseME。 到此,基本上 J2ME 基本环境结束了。

3 需求分析与设计方案

3.1 需求分析

当今网络技术不断的发展,在将来的无线通信时代中,大量的网络应用程序 将被开发出来去满足无线移动通讯的要求, 而要充分的发挥无线移动通讯设备的 通信能力,J2ME 网络编程就变得尤为重要。现在以淘宝,易趣等网络支付平台的 24×7 的网络商店,技术相对较为成熟已经逐步受到人们的关注,市场潜力非常巨 大。 但是, 只有网络的支持而没有用户手中的无线通信设备也是无法实现无线通 信的。 手机是最常用的无线设备, 因此通过手机进行无线数据业务服务前景广阔, 而且随着手机硬件的不断发展,其在无线移动商务方面的前途更是不可限量。移 动商务主要是指消费者借助无线网络,通过手机或 PDA 等手持设备,进行有形货 物或无形劳务的具有货币价值的交易, 或执行数据采集的工作更好地推进商务的 发展等活动。人们使用手机进行数据采集、地理信息查询、股市交易如今都已经 成为了现实,因为现有的 J2ME 技术已经做到了这一点。因此,基于 J2ME 平台来 研究无线网络模式下的网络商店是具有一定的市场潜力的。 图 7 是本论文的总体架构模型,客户端(移动设备)部分根据用户需求发送

第 9 页 共 26 页

请求信息给 Web Server,转到后台进行处理,而服务器端则通过判断客户端发送 过来的信息,来安排需要做什么具体的操作,有可能需要数据库内的数据, 这时就 会启动和 DB Server(数据库服务器),而绝大多数的网络应用都是将数据信息保 存到 DB Server(数据库服务器),通过 Web Server 协调各种客户端的请求与响应, 存取数据库中的数据。 数据库服务器和 Web 服务器可能是网络中的 1 台或多台的 设备;客户端可以通过网际中的通用协议(如 http 协议)对服务器端进行访问,因 此移动设备只要能支持网络通讯的协议就应该能够正确获取服务器端的资源。

servlet REQUEST RESPONSE DB Server

Web Server

图 7 系统架构模型

图 7 的虚线框内的为本毕业设计的主要内容,为了规范的管理,我们设定只 有合法的用户才能登陆到系统上。因此我们设计了完整的注册和登陆系统,在注 册系统中杜绝了相同用户名多次注册的问题和注册信息不齐全就可以注册的问 题。 而在登陆系统中,用户登陆所需要的帐号和密码,保存在服务器端的数据库中, 每次登陆的时候和服务器端中数据库内的数据进行比较,只有在数据库内有相关 信息的用户才能被系统判断为合法用户。做为一个用户,登陆进入一个网络商店 的目的就是购买商品,而在购买商品之前,做为用户来说需要了解到商品的详细 信息(名字、价格、产地等等) ,于是我们为用户制作了商品查询系统和商品购 买系统,让用户可以在移动设备中享受到移动购物的乐趣。 基于上述的需求分析得出:本论文就是将基于 J2ME 平台技术的网络商店应 用与无线通信设备中,设计出由 4 大功能模块(注册模块、登陆模块、查询模块、 购买模块)组成的完整客户端系统,充分发挥无限通讯设备的通信能力和网络商 店的实时交互的能力,让购物变得更加便利。

3.2 设计方案

根据图 8 的系统总体流程图进行具体的分析: 系统从欢迎界面开始进入登陆界面,在这个地方有 2 种情况发生: 1.用户登陆成功则进入主菜单 这里需要进行联网,将用户输入的用户名和密码发送给服务器,服务器接受

第 10 页 共 26 页

以后将信息和数据库里面的信息进行比较,如果数据库里有用户信息确认完毕, 把信息返回给客户端,由客户端程序根据返回的信息来进行判断,成功后用户就 可以进入主菜单了,进入具体商品的查询。

欢迎界面

登陆界面

帮助界面

主菜单

错误显示界面

查询界面

购买界面

服务端对比数据资料

进行联网

进行联网

注册界面

进行数据库操作

发送购买信息

联网发送注册信息

得到相关数据

数据库操作

是否成功

将数据发送回 将数据发送回 成功界面

失败界面

查询显示界面

查询显示界面

图 8 程序总体功能流程

2.用户登陆不成功进入错误显示界面 首先为了防止用户的错输入,在错误显示界面中考虑到 2 种情况一种是返回 登陆界面,而另外一种是进入注册界面。 注册界面中,注册过的帐号不能进行注册,用户输入的用户名会发送给服务 器进行判断来得出结果,如果服务器进行查询后发现数据库内有了这个用户名, 这时就返回注册失败的错误信息,客户端会显示出这些返回的错误信息,如果在

第 11 页 共 26 页

数据库内没有发现一样的帐号, 就把用户输入的帐号和密码插到服务器端的数据 库内进行保存,返回给客户端注册成功的信息,此时注册好的帐号和密码就可以 在登陆界面上进行登陆了。 登陆成功后进入商店的主菜单,在主菜单上有 3 个选项分别是: 1 查询商品 用户可以根据不同的分类来选择一个大的分类方向,例如计算机类,这个就 是告诉服务器在计算机类这个相关表格里面进行数据查询操作,选择了以后屏幕 就跳转到了,关键字查询界面,这个屏幕是用户根据自己输入的关键字来确定商 品,这里需要将用户的输入的数据发送给服务器端,用的仍然是 GET 方法, 由服务 器端来进行数据处理。 如果用户输入的关键字在服务器的数据库里有相关的记录, 那么服务器将返 回商品的一些信息详细,客户端就需要将这些服务器返回的数据显示出来。 2 购买商品 用户查询完了以后对喜欢的商品会购买,根据查询商品得到的 ID 号来购买 商品,然后将用户输入的商品 ID 和商品数量发送给服务器,服务器端接收以后, 先是查找出商品,然后对数据库进行相关的更新操作,最后将服务器的得到的返 回信息显示给用户看。 3 使用帮助 帮助用户快速的上手本系统,解决一些常见的问题。

3.3 J2ME 客户端需要完成的任务

本程序是 C/S 结构,而客户端需要做的就是和用户的交流,将用户的信息发 送给服务器,将服务器的信息反馈给用户, 因此一个完整的基于 j2me 的掌上网络 商店应该具备以下的功能: 1.注册功能:用户的注册分为注册成功与注册失败(用户名存在) ,新用户 必须使用注册功能以后才可以进行其他操作。 2. 登陆功能:用户的登陆是将用户输入的帐号和密码发送给服务器, 由服务 器来进行判断,是否在数据库呢存在,如果存在则跳转到主菜单,否则跳转到注 册系统。 3. 查询功能:用户进入系统后需要了解各种各样的商品,那么就需要对分类 进行查询,查询分为 2 个部分来进行,首先用户需要确定一个大的方向也就是告 诉服务器端应该在数据库的什么地方进行查找,缩小了查找的范围,然后需要用 户输入关键字进行查询,更加准确定位商品的具体信息。 4. 购买功能:看好了商品若是用户喜欢就涉及到一个购买的过程了,用户需 要输入商品的 ID 号(通过查询得到),和购买的数量。如果购买成功会

第 12 页 共 26 页

这些都是 J2ME 网络商店需要完成的任务

4 程序流程与具体实现 程序流程与具体实现

4.1 程序涉及到的若干类

一个 J2ME 程序可以没有其他类,但不能没有 MIDlet 类,只要有一个完整的 主类,便是一个完整的 J2ME 程序。比如非常精典的"HelloWorld",便只有一个 MIDlet。 而本程序的主类就是 ShopMIDlet 就是一个设计为可使应用管理软件通过次 接口运行和控制的类。它主要通过 startApp,pauseApp,destroyApp,3 个抽象方 法来实现。从他们的名字上可以非常简单的看出它们分别在启动、暂停和销毁时 被调用。在主类的基础上,陆续设计出了各个功能类。 表 1 列举了一下本程序的各个类以及对各个类的功能进行简单的说明

表 1 程序各功能类说明

ShopMIDlet MainMenu Denglu DengluThread Cuowu DHScreen Fenlei Goumai Help MIDPConnector OkScreen ResultScreen UpDataUserData Screen UpDataUserData Thread 和服务器连接的一个线程,用于与服务器中的信息进行验证 程序的主类 程序的欢迎界面 可以选择进入登陆界面或者退出 程序的登陆界面 判断用户是否合法 具体实现和服务器相连接代码部分的一个线程 显示登陆时用户的输入不完整的信息 用户输入关键字和服务器连接在数据库中进行查找 用户可以根据跳出菜单,进行选择。例如书籍,时装等等。 购买界面,需要用户输入商品的 ID 号和数量。 为了让用户可以快速上手,做的一个帮助界面 把和服务器连接的代码 封装成一个类,以后直接调用 显示商品购买成功的情况 显示查询的结果,包括商品的详细信息 用户注册类,需要用户输入用户名和密码

4.2

XML 的解析

目前,XML 已经广泛应用于数据交换领域,XML 是基于纯文本的,具有优秀的 跨平台特性。本节将讲述如何在 J2ME 中解析 XML 进行数据传输。 XML 写法比较简单,而

且非常便于人来阅读。但是必须在客户端和服务器端 有 XML 的解析器才可以正常通信,由于初期的移动信息设备内存和处理器上的不 足,所以在 MIDP1.0 中并没有提供对 XML 的支持。随着内存和处理器的提高,对

第 13 页 共 26 页

XML 的支持成为了可能。在 JSR182 中提供了 XML 的解析器,但是这并不是标准 MIDP 中的 API 需要特定的实现才可以支持。 幸运的是有第三方的 API 对解析 xml 提供了支持,比较有名的是 kxml 和 nanoxml。我们选用的是 KXML。 使用 XML 之前,你必须考虑好是不是必须用它来传输数据,因为解析 xml 是 比较耗费资源的,尤其是在 CPU 和内存的资源都很宝贵的条件下。如果我们能使 用 DataInputStream 和 DataOutputStream 传输的话就尽量不要使用 XML。 的 XML 解析器有两种,一种是确认性的,他在解析之前会对 xml 的文档进行有效性的验 证,确保这是应用程序需要的。另一种则是非确认性的,他不做验证工作直接进 行解析,无疑这样的速度会快。kxml 和 nanoxml 都是这样的解析器。它们也存在 差别,kxml 是增量解析器他会一点一点的解析,这样在解析大的文档的时候会效 率比较高。nanoxml 是一步解析器,一次就把文档解析完,如果文档很大的话, 这无疑会耗费很大的内存。 要使用 kxml,你必须首先得到一个 XmlParser 实例,它用 Reader 作为构造 器的参数: try { Reader r = ……; XmlParser parser = new XmlParser( r ); } catch( java.io.IOException e ){ // handle exception…… } 如果你的 XML 文档存储在 String 内的话你可以使用 ByteArrayInputStream 和 InputStreamReader: String xml = "some xml"; ByteArrayInputStream bin =new ByteArrayInputStream( xml.getBytes() ); XmlParser parser = new XmlParser( new InputStreamReader( bin ) ); 当从网上接收数据的时候可以这样: HttpConnection conn = ……; InputStreamReader doc = new InputStreamReader( conn.openInputStream()); XmlParser parser = new XmlParser( doc ); 得到 parser 实例后我们就可以调用 read 方法进行解析了,read 方法会返回 一个 ParseEvent,通过判断他的类型我们就可以解析 xml 了.

第 14 页 共 26 页

try { boolean keepParsing = true; while( keepParsing ){ ParseEvent event = parser.read(); switch( event.getType() ){ case Xml.START_TAG: // handle start of an XML tag break; case Xml.END_TAG: …… // handle end of an XML tag break; case Xml.TEXT: …… // handle text within a tag break; case Xml.WHITESPACE: …… // handle whitespace break; case Xml.COMMENT: …… // handle comment break; case Xml.PROCESSING_INSTRUCTION: …… // handle XML PI break; case Xml.DOCTYPE: …… // handle XML doctype break; case Xml.END_DOCUMENT: …… // end of document; keepParsing = false; break;}}} catch( java.io.IOException e ){}; 这样我们就可以解析一个 XML 文档了, 而就本程序来说我们需要做的首先是 将 XML 文档发送给服务器, 在服务器端接收以后需要通过解析器将 XML 文档解析 出来,以下给出发送 XML 文档的代码: HttpConnection httpConnection = (HttpConnection) Connector

第 15 页 共 26 页

.open("http://127.0.0.1:8080/jinboservlet"); httpConnection.setRequestMethod(HttpConnection.POST); DataOutputStream dos = null; String textXml = null; textXml = textXml+"<courses>"; textXml = textXml +" " E001" + " <name></name>" + " + " 

"+ "<weight></weight>"+ "<date></date>"; textXml = textXml + "</courses>"; byte[] ss = textXml.getBytes(); dos = httpConnection.openDataOutputStream(); dos.write(ss); 当服务器的数据处理完了以后就需把需要返回给客户端的信息发送给客户 端,而客户端需要做的就是将数据解析出来,以下给出解析 XML 的重要代码: KXmlParser parser = new KXmlParser(); //解析数据 parser.setInput(new InputStreamReader(httpConnection .openInputStream())); parser.nextTag(); parser.require(XmlPullParser.START_TAG, null, "courses"); while (parser.nextTag() != XmlPullParser.END_TAG) readCourses(parser); parser.require

(XmlPullParser.END_TAG, null, "courses"); parser.next(); parser.require(XmlPullParser.END_DOCUMENT, null, null); } catch (Exception e) { e.printStackTrace();}} public void readCourses(KXmlParser parser) throwsIOException, XmlPullParserException { parser.require(XmlPullParser.START_TAG, null, "course"); textXml = "<?xml version = '1.0' encoding = 'UTF-8'?>";

第 16 页 共 26 页

String title = null; String description = null; while (parser.nextTag() != XmlPullParser.END_TAG) { parser.require(XmlPullParser.START_TAG, null, null); String name = parser.getName(); String text = parser.nextText(); System.out.println("<" + name + ">" + text); if (name.equals("id")) course.setId(text); else if (name.equals("name")) course.setName(text); else if (name.equals("author")) course.setauthor(text); else if (name.equals("price")) course.setprice(text); else if (name.equals("weight")) course.setweight(text); else if (name.equals("data")) course.setdata(text); parser.require(XmlPullParser.END_TAG, null, name); }parser.require(XmlPullParser.END_TAG, null, "course");}}

4.3 登陆系统实现

从图 9 中可以看出来这个需要用户输入用户名和密码,这里有个判断就是当 用户输入的不完整时会显示错误如图 10,这时用户可以选择注册,或者返回登 陆界面,下面给出登陆的重要代码: public void commandAction(Command c, Displayable d) { if (c.getCommandType() == c.BACK) { MainMenu zhucd = new MainMenu(); Display.getDisplay(ShopMIDlet.instance).setCurrenzhucd); }else if (c.getCommandType() == c.OK) { if(((id.getString()).compareTo("")==0)|| ((pw.getString()).compareTo("") == 0) || (((id.getString()).compareTo("") == 0) && ((pw.getString()).compareTo("") == 0))) {cuowu ss1 = new cuowu(); Display.getDisplay(ShopMIDlet.instance).setCurrent(ss1);} else {String url = "http://127.0.0.1:8080/loginservlet1"; DengluThread t = new DengluThread(url, id.getString(),

第 17 页 共 26 页

pw.getString());t.start();}

图 9 登陆界面

图 10 错误显示界面

4.4 注册系统实现

一个新用户,如果想要购买商品那么最先需要做的就是注册成会员,因此我 们做了一个完整的用户注册系统,只要您的用户名没有被其它人注册过那么您就 可以成功注册,图 11 就是本程序的用户注册界面程序会根据不同的情况给用户返 回信息如果您注册成功那么会看到图 12 的注册失败信息,如果没有成功也可以就 会看到图 13 的注册成功的信息了。 以下给出重要功能部分的代码: String url; public UpDataUserDataThread(String url, String id, String pw) { this.url = url + "?id=" + id + "&pw=" + pw; System.out.print("准备连接" + url); }public void run() { boolean error = false; HttpConnection c = null; InputStream is = null; OutputStream os = null; DataInputStream dos = String line = ""; try { c = (HttpConnection) Connector.open(url); System.out.print("回传码:" + c.getResponseCode()); is = c.openInputStream(); dos = new DataInputStream(is); line = dos.readUTF();

第 18 页 共 26 页

null;

} catch (EOFException e) { System.out.print("接收到的响应:" + line); } catch (Exception e) {error = true; Alert al = new Alert("更新时期发生错误", e.toString(), null,AlertType.ALARM); al.setTimeout(Alert.FOREVER); Display.getDisplay(ShopMIDlet.instance).setCurrent(al);} finally { try {if (is != null) is.close(); if (os != null)os.close(); if (c != null)c.close();}

 catch (Exception e) {} if (!error) {Alert al = new Alert(“”, line, null, AlertType.CONFIRMATION); al.setTimeout(Alert.FOREVER); Display.getDisplay(ShopMIDlet.instance).setCurrent(al);}}}}

图 11 用户注册界面

图 12 注册失败界面

图 13 注册成功界面 第 19 页 共 26 页

4.5 查询系统实现

当用户进入了查询界面的时候,可以看到如图 14 中,每一个大类中都有详细 的小类,例如 computer 分得比较详细,当用户按下选择按钮的时候会跳到如图 15 的界面中,这里就需要用户想要查找的关键字了,例如我们在这里输入“j2me”那 么在联网了以后程序会在服务器端的数据库内进行查找如果在服务器中有这个 数据,我们就会看到图 16 商品的详细信息就显示出来了。 下面给出主要的功能代码 : public ResultScreen(String rename, String table) {super("查询显示"); try{this.name=rename;this.table = table; jbInit();displayShopInfo(); xianshi(line);} catch (Exception e) {e.printStackTrace();} }public void commandAction(Command command, Displayable displayable) { if (command.getCommandType() == command.BACK) {String sa = table; DHScreen dhScreen = new DHScreen(sa); Display.getDisplay(ShopMIDlet.instance).setCurrent(dhScreen); } else if (command.getCommandType() == command.OK) { Goumai ss = new Goumai(); Display.getDisplay(ShopMIDlet.instance).setCurrent(ss);}} public void displayShopInfo() {Thread thread = new Thread() { public void run() {try {updateShopInfo();} catch (Exception e) {}}}; thread.start();} private void updateShopInfo() throws IOException, EOFException { HttpConnection con = null; String requestString = "&name=" + name + "&table=" + table; // 关键字 InputStream iStrm = null;OutputStream oStrm = null;DataInputStream dis = null; DataOutputStream dos = null;// String line = "";// 发数据 try {con = MIDPConnector.open(requestString); con.setRequestMethod(HttpConnection.GET);if (con != null) System.out.println("connect sucess");iStrm= con.openInputStream(); oStrm = con.openOutputStream(); dos= new DataOutputStream(oStrm); dis = new DataInputStream(iStrm); processServerResponse(con,dis); line = dis.readUTF();

第 20 页 共 26 页

while (line != null) {System.out.println(line);xianshi(line); line = dis.readUTF();}}

图 14 查询界面 1

图 15 查询界面 2

图 16 查询结果界面

4.6 购买系统实现

当用户查询完了以后,发现了自己喜欢的商品就会去购买,而这个部分就是 实现了用户购买功能,图 17 是购买系统的界面需要用户输入商品的 ID 号和购买 的数量然后和服务器进行联网进行相关操作把,在数据库内将商品的数量更新。 购买成功以后会看到图 18 的购买成功的界面。 以下是购买系统的重要功能代码: public void goumai() {Thread thread = new Thread() {public void run() { try {lianjie();} catch (Exception e) {e.printStackTrace();}}}; thread.start();} private void lianjie() throws IOException, EOFException { HttpConnection conn = null; DataInputStream dis = null; try {ID = id1.getString();NUMBER = number1.getString(); conn=(HttpConnection)

第 21 页 共 26 页

Connector.open("http://localhost:8080/servlet/PurchaseServlet" + "?" + "ID=" + ID + "&NUMBER=" + NUMBER); dis = new DataInputStream(conn.openDataInputStream()); line = dis.readUTF(); OkScreen ss = new OkScreen(line); Display.getDisplay(ShopMIDlet.instance).setCurrent(ss); System.out.println

(line); // 在服务器端如果收到请求后发送用 writreUTF(message); }finally {if (conn != null)conn.close();if (dis != null) dis.close();}} public void commandAction(Command c, Displayable displayable) { ID = id1.getString();NUMBER = number1.getString(); if (c.getCommandType() == c.OK) { if (ID.compareTo("") != 0 && NUMBER.compareTo("") != 0) {goumai();}

图 20 购买系统界面

图 21 购买成功界面

5 系统开发测试中的问题

5.1 屏幕跳转

在编写手机程序时,经常要进行各个屏幕间的切换。一开始不知道怎么样 去做,看了比较多的实例,很简单,但很能说明问题。所以总结一下: 1.主程序中必然定义了一个 Display 对像,如 private Display display, 它表示当前的屏幕。还有一些 Displayable 对像。如 Form,TextField 等都是 Displayable 的子类在主程序中通过 dipslay.serCurrent(Displayable 实例名); 即可将当 Displayable 实例加入当前的屏幕。 2.要想进行屏幕间的切换, 只要将你想显示的 Item 放到到主程序的 display 对象中即可。主程序中定义了一个 display,则要在另一个屏幕(我姑且把它称

第 22 页 共 26 页

之为目标屏幕)中引用到主程序的 display。 3.以下是程序中的屏幕部分的关键代码来做测试: if (cmd.equals("购买产品")) { Goumai ss = new Goumai(); Display.getDisplay(ShopMIDlet.instance).setCurrent(ss);} 意思当程序的命令按钮为“购买商品”时,程序将跳转到 Goumai 这个类, 最关键的是: “Display.getDisplay(ShopMIDlet.instance).setCurrent(ss);” 这条语句,就是把 ss 在当前的屏幕中显示出来!这样就可以看到 Goumai 中定义 的各个元素了!

5.2 事件处理机制

在 MIDP 中分高级事件处理和低级事件处理,前者主要是针对高级 UI,而后者 主要是这对 Canvas 这样的低级 UI 的。 在编程的实际过程中遇到了 2 个大类的问题: 一类问题是在 CommandListener 这个接口下,我想实现的是,用户单击一个 确定的按钮,可以跳转到另外一个屏幕中去,是一直不能实现,主要是没有搞清 楚这个接口的作用,当我了解到了以后,对代码进行了修改,一般是选用的比较 的方法 if (cmd.equals("查询)然后再进行相关的操作。 第二类问题,是我在设计查询界面的时候遇到的,在设计这个 ChoiceGroup 组件的时候,我的想法是有一个跳出式菜单供用户来选择,在 ChoiceGroup 组件 的样式中 POP 样式实现了这个功能,但是用户所选择的内容,程序不能传递给下 一个屏幕,看了很多相关的资料,才知道犯了一个致命的错误,就是将 ChoiceGroup 的监听设置在 CommandListener 中了,但是 ChoiceGroup 的状态改 变是由 ItemStateListener 来控制的,了解到了这个问题就解决了。高级事件处 理 主 要 由 两 个 接 口 来 实 现 :CommandListener 和 ItemStateListener 。 在 CommandListener 中 定 义 了 方 法 commandAction(Command cmd,Displayable disp),我们必须实现这个方法来完成事件处理,告诉应用程序当在 disp 界面下 如果 cmd 按钮并按下的时候他应该去做什么。ItemStateListener 中定义了方法 itemStateChanged(Item item),应用程序通过他来得到在 Form 内的 item 内部 状态发生变化的事件。用户在进行如下操作的时候都会触发这样的事件,调整交 互 性 Guage 在 TextField 内 输 入 或 者 修 改 内 容 、 修 改 DateField 、 改 变 ChoiceGroup 的状态。

第 23 页 共 26 页

掌上网络商店做为毕业设计,是本人目前做过的最大的程序。虽然大学期间 在 Delphi 下设计过一些程序,并且反复的调试修改过,但接手这个题目时仍感觉 十分棘手。 本毕业设计建立在 J2ME 平台上,是本人以前未曾接触过的领域。 凭着探索新 知识的热情,我选择了该设计题目。但是学习该平台背景和功能的时间远远超出 了我想象的时间。在设计初期,为了搭建平台,需要花费好几天的时间,为了使屏 幕看起来

相对美观又会花费几天的努力。 很多相关的技术,如需要使用到的线程、 高级图形界面的使用每一项都需要花一定的时间去掌握和熟悉。更为困难的 是,J2ME 为一种刚出现仅几年的新技术,国内的参考资料非常少,仅有的几本也 停留在简单的介绍阶段。台湾的王森写了两本较好的书,给了我很大的帮助,但 对设计该 J2ME 程序来说,仍只够入门。在发觉中文资料的稀少后,为了进一步探 索深层次的技巧,我花费了大量时间在 j2me 的 API 上。 在终于可以照猫画虎的写出一小段注册的代码时,已经过去了相当长的准备 时间。 我原以为这样的速度将无法完成毕业设计,但当掌握了大部分应用技巧时, 剩下的程序思路的设计就显得不是最大的障碍了。 在今后的学习工作,我希望可以继承在做毕业设计时候的那种干劲,和创新 的精神,从专业知识下手努力提升自己的专业能力。

参考文献

[1] 耿祥义,张跃平.JAVA2 实用教程[M].北京:清华大学出版社,2005.2 [2] 朱喜福.JAVA 网络应用编程入门[M].北京:人民邮电出版社,2005.4 [3] 陈永强.SQL 数据库企业应用系统开发[M].北京:清华大学出版社,2004.7 [4] 庄东,刘小华.JbuilderX 无线应用开发[M].北京:电子工业出版社,2004.3 [5] 温尚书.J2ME 无线通信-实用案例教程[M].北京:清华大学出版社,2003.10 [6] 王森.JAVA 手机程序设计[M].北京:中国铁道出版社,2003.1

第 24 页 共 26 页

本文是在何林波老师的热情关心和指导下完成的, 他渊博的知识和严谨的治 学态度使我受益匪浅,对顺利完成本课题起到了极大的作用。在此向他表示我最 衷心的感谢! 在论文完成过程中,本人还得到了沈峰同学的热心帮助,本人向他表示深深 的谢意! 最后向在百忙之中评审本文的各位专家、老师表示衷心的感谢!

第 25 页 共 26 页

本论文的工作是 2007 年 2 月至 2007 年 6 月在信息工程学院网络工程系完 成的。 文中除了特别加以标注地方外, 不包含他人已经发表或撰写过的研究成果, 也不包含为获得信息工程学院或其他教学机构的学位或证书而使用过的材料。 除 非另有说明,本文的工作是原始性工作。 关于学位论文使用权和研究成果知识产权的说明: 本人完全了解信息工程学院有关保管使用学位论文的规定,其中包括: (1)学校有权保管并向有关部门递交学位论文的原件与复印件。 (2)学校可以采用影印、缩印或其他复制方式保存学位论文。 (3)学校可以学术交流为目的复制、赠送和交换学位论文。 (4)学校可允许学位论文被查阅或借阅。 (5)学校可以公布学位论文的全部或部分内容(保密学位论文在解密后遵 守此规定) 。 除非另有科研合同和其他法律文书的制约, 本论文的科研成果属于信息工程 学院。 特此声明!

第 26 页 共 26 页

山东建筑大学计算机网络课程设计基于Python的网络爬虫设计

山东建筑大学 课程设计成果报告 题目:基于Python的网络爬虫设计课程:计算机网络A 院(部):管理工程学院 专业:信息管理与信息系统 班级: 学生姓名: 学号: 指导教师: 完成日期:

目录 1 设计目的 0 2 设计任务内容 0 3 网络爬虫程序总体设计 0 4 网络爬虫程序详细设计 0 4.1 设计环境和目标分析 0 4.1.1 设计环境 0 4.1.2 目标分析 (1) 4.2 爬虫运行流程分析 (1) 4.3 控制模块详细设计 (2) 4.3 爬虫模块详细设计 (2) 4.3.1 URL管理器设计 (2) 4.3.2 网页下载器设计 (2) 4.3.3 网页解析器设计 (2) 4.4数据输出器详细设计 (3) 5 调试与测试 (3) 5.1 调试过程中遇到的问题 (3) 5.2测试数据及结果显示 (4) 6 课程设计心得与体会 (4) 7 参考文献 (5) 8 附录1 网络爬虫程序设计代码 (5) 9 附录2 网络爬虫爬取的数据文档 (8)

1 设计目的 本课程设计是信息管理与信息系统专业重要的实践性环节之一,是在学生学习完《计算机网络》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1.巩固和加深学生对计算机网络基本知识的理解和掌握; 2.培养学生进行对网络规划、管理及配置的能力或加深对网络协议体系结构的理解或提高网络编程能力; 3.提高学生进行技术总结和撰写说明书的能力。 2 设计任务内容 网络爬虫是从web中发现,下载以及存储内容,是搜索引擎的核心部分。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 参照开放源码分析网络爬虫实现方法,给出设计方案,画出设计流程图。 选择自己熟悉的开发环境,实现网络爬虫抓取页面、从而形成结构化数据的基本功能,界面适当美化。给出软件测试结果。 3 网络爬虫程序总体设计 在本爬虫程序中共有三个模块: 1、爬虫调度端:启动爬虫,停止爬虫,监视爬虫的运行情况 2、爬虫模块:包含三个小模块,URL管理器、网页下载器、网页解析器。 (1)URL管理器:对需要爬取的URL和已经爬取过的URL进行管理,可以从URL 管理器中取出一个待爬取的URL,传递给网页下载器。 (2)网页下载器:网页下载器将URL指定的网页下载下来,存储成一个字符串,传递给网页解析器。 (3)网页解析器:网页解析器解析传递的字符串,解析器不仅可以解析出需要爬取的数据,而且还可以解析出每一个网页指向其他网页的URL,这些URL被解析出来会补充进URL管理器 3、数据输出模块:存储爬取的数据 4 网络爬虫程序详细设计 4.1 设计环境和目标分析 4.1.1 设计环境

《产品设计与开发》知识点总结

《产品设计与开发》知识点复习 第一章工业产品概述 第一讲工业产品发展史 思考题 1、手工工场时代产品生产的特点? 2、蒸汽时代的标志性产品是什么? 3、电气时代与电子时代的标志是什么?举出几种标志性产品。 4、生命科学和绿色科技时代要解决的主要问题? 5、向外太空移民,人类还需要发展什么科学技术? 第二讲产品整体概念 思考题 1、自行车的三个层次产品是什么?如何增值其附加产品? 2、产品设计的核心是什么? 第三讲工业产品的实现过程 思考题 1、产品商品化失败的主要原因? 2、为什么产品设计师要树立营销观念? 第二章工业产品开发 第四讲工业产品开发 思考题 1.产品开发有哪些类别? 2.产品开发的一般流程是什么? 3.新产品开发的一般原则是什么? 第五讲新产品开发流程 思考题 1.硬件产品的开发过程? 2.创意设计的基本方法? 第三章工业产品设计方法基础 第六讲工业产品设计与工程设计 思考题 1.工业产品的设计内容是什么? 2.方案设计的主要内容有哪些? 3.产品工程设计的原则是什么? 第七讲工业设计概论(一) 1. 工业设计的概念? 2. 工业设计对产品的重要性? 第八讲工业设计概论(二) 思考题 1.工业设计的创造方法? 2.产品造型设计? 3.产品造型设计的基本要求? 4.产品造型设计中色彩的主要功能? 第九讲工业设计概论(三) 思考题

1.人机工程研究内容? 2.经济性法则是什么? 第四章工业产品的全生命周期管理 第十讲产品生命周期管理 第十一讲产品全生命周期各个阶段的管理思考题: 1、PLM的定义是什么? 2、PLM的内涵是什么? 3、PLM的核心功能是什么? 第五章材料概论 第十二讲金属和非金属材料 思考题 1.工程材料有哪三大类? 2. 合金钢的概念? 3. 复合材料的概念? 第十三讲新材料 思考题 1.纳米材料的概念? 2. 选材的一般原则和步骤? 第六章工业品加工方法 第十四讲热加工 思考题 1.什么是热加工? 2.冲压加工的应用范围及特点? 3.焊接方法具有以下优点? 第十六讲冷加工 思考题 1.什么是冷加工? 2.切削加工的主要形式有哪些? 3.数控机床特点有哪些? 第十八讲增材制造 1.快速成型的优势是什么? 第七章工业品的物流过程 第二十讲物流概念 思考题 1.物流的定义? 第二十一讲物流对产品设计的影响 思考题 1. 绿色设计其主要原则? 2. 面向物流的产品设计方法? 第八章工业品的使用手册与服务手册 第二十二讲产品的使用说明手册 思考题

手机研发流程

第二章手机研发流程 一、比亚迪通讯电子研究院介绍 1、概况 通讯电子研究院(Telecommunication&ElectronicsResearchInstitute简称TERI)成立于2007年9月,由第七事业部通讯技术研究所发展而来。致力于IT和汽车领域的通信技术的开发以及电子产品的研究,目前拥有32个部门,分布在比亚迪宝龙,坪山和北京三个工业区。 2、工作内容 1)专业从事IT和汽车领域的通信技术的开发以及电子产品的研究;利用研究开发成果,支持公司的发展战略,销售工作,产品开发工作等; 2)配合其他事业部的产品开发工作,从硬件、软件以及测试等方面提供产品设计和项目管理支持,使公司资源得到充分利用; 3)培养专业技术团队,向公司相关领域输送高素质技术及管理人才。 3、研究方向 ?通讯技术:2G,2.5G,2.75G,3G,3.5G,4G…. ?网络技术:BT(UWB),Zigbee,WiFi,RFID,WiMax等 ?各类操作系统:WindowsCE,Linux,WindowsMobile ?软件平台:MTK,展迅,英飞凌,天碁,联发等 ?电子产品:MultiMedia,DTV,GPS等 ?天线,射频,基带,声学等 ?电源管理,驱动 ?汽车通讯 ?其他相关技术 4、组织框架 5、研发部门介绍 (1)天线研究部 ? a.跟踪和了解天线的发展趋势,为后续项目研发作积累; ? b.配合平台整合工作,支持各种平台的应用;

? c.配合公司项目需求,致力于手机、蓝牙耳机等通讯产品天线品质的改善研究;? d.协助公司其他部门进行天线相关测试软件、测试流程的编写; ? e.整合现有技术资源,研究、制定产品天线质量评价体系标准。 (2)射频(RF)研究部 ? a.跟踪和了解手机及通讯相关的电子产品的发展趋势和新的射频方案,为后续项目研发作积累; ? b.配合平台整合工作,支持各种平台的应用; ? c.配合公司项目需求,致力于手机、蓝牙耳机等通讯产品射频品质的改善研究;? d.协助公司其他部门进行射频相关测试软件、测试流程的编写; ? e.整合现有技术资源,研究、制定产品射频质量评价体系标准。 (3)基带(BB)研究部 ? a.根据产品开发的路线图预先对硬件技术进行技术评估和可行性研究;根据产品定义完成具体产品电路设计,以满足产品定义的功能和性能要求;保证产品的电磁兼容,安全性,环境达到国家或相应国际标准要求; ? b.跟踪和了解嵌入式处理器(总线结构,处理能力,支持的应用)和多媒体(视频和音频)的最新进展; ? c.协助公司其他部门进行基带相关测试软件、测试流程的编写; ? d.配合平台整合工作,支持各种平台的应用; ? e.整合现有技术资源,研究、制定产品基带质量评价体系标准。 (4)声学研究部 a.致力于扬声器单体性能评价及其最优音腔匹配,并建立相应数据库; b.配合平台整合工作,支持各种平台的应用; c.配合公司项目需求,致力于手机、汽车、蓝牙耳机等通讯及电子产品声学品质的改善研究; d.根据市场的需求,自主开发相关声学应用软件;

网络课程的设计与开发

网络课程的设计与开发 余胜泉、王耀武 ysq@https://www.doczj.com/doc/f58544264.html, 北京师范大学现代教育技术研究所(100875) 【摘要】网络课程是通过网络表现的某门学科的教学内容及实施的教学活动的总和,它包括两个组成部分:按一定的教学目标、教学策略组织起来的教学内容和网络教学支撑环境。网络课程设计包括教学内容的设计、网络教学环境的设计以及在网络教学环境上实施的教学活动设计。本文从这设计三个方面出发,介绍了网络课程设计的过程模式。 【关键词】网络课程、网络课程设计、网络教学支撑环境、网络学习资源设计、网络学习活动设计 在网络教学环境中,教师和学生在地理位置上的分离,使得教学无法围绕教师为中心来展开,而必须以学生为中心,学生已经成为教学过程中的主体,所有的教学资源都必须围绕学生学习来进行优化配置,教师不再是知识的唯一源泉,最大的知识源泉是网络,教师的任务是指导学生如何获取信息,帮助学生解决学习过程中的问题,并帮助学生形成一套有效的学习方法和解决问题的方法。学生的地位也应该由原来的被动接受者转变为主动参与者,学生应该成为知识的探究者和意义建构的主体。学生的头脑不再被看作是一个需要填满的容器,而是一支需要点燃的火把。网络学习环境不再是教师讲解的辅助工具,而变为帮助学生探索、发现、学习用的认知工具。网络教学应该围绕如何促进学生的自主学习、促进学生思维的深度与广度发展、组织学生的自主学习活动来展开。这些内容构成了支撑网络教育教学观念的基石。 网络课程是通过网络表现的某门学科的教学内容及实施的教学活动的总和,它包括两个组成部分:按一定的教学目标、教学策略组织起来的教学内容和网络教学

手机产品设计手册范本

. . . . .. .. ..

. . . . .. .. .. 第1章绪论 1.1手机的分类 随着国通信业的迅猛发展,国手机行业的竞争也日趋白热化,国外各手机厂商纷纷推出不同样式、功能的手机。手机按照外形可以统称分为直板机和翻盖机两种(如图1-1和1-2所示),根据手机的特殊功能又可分为拍照手机、滑盖手机、旋盖手机和具有商务功能的PDA手机(如图1-3~图1-6所示),由于手机种类过于繁多,这里就不再赘述。 图1-1 直板机图1-2 翻盖机 图1-3 滑盖机图1-4 旋盖机 图1-5 拍照手机图1-6 PDA手机 1.2手机的主要结构件名称 目前,由于手机的样式繁多,其结构件数量和样式也是越来越多。直板机的主要结构件名称:本体上壳、本体下壳、LCD 镜片、按键、电池等;翻盖机的主要结构件名称:翻盖顶盖、翻盖底盖、本体上壳、本体下壳、按键、侧按键、LCD镜片、标牌、电池等。在后续的章节中将详细列举结构件的中英文名称。 1.3手机结构件的几大种类 根据手机结构件的功用和材料性质可分为以下五类: 胶壳类:例如:翻盖机的翻盖和本体,直板机的本体上下壳等; 按键类:主按键、侧按键、Metal Dome等; 标牌和镜片装饰类:金属标牌、塑料标牌和镜片等; 金属部件类:镁合金射铸件、铝合金冲压件、铰链、屏蔽盖、天线螺母、螺钉、螺母等;

. . . . 胶贴类:双面胶带、导电泡棉、热反应胶带等。 1.4手机零件命名规则 由于Pro/ENGINEER文件不支持中文名,所有零件均使用英文命名;为减少文件名长度,部分单词使用简写,如:“Microphone“简写为:“Mic”,“front”简写为“fr”,“rear”简写为“rr”,“cosmetic”简写为“cos”;零件词与单词之间使用下划线“_”连接,例如:翻盖顶盖翻译为“Flip_Top”,电池盖板翻译为“Battery_cover”,电池壳翻译为“Battery_case”等。 下面以直板机K269和翻盖机K698为例,对照表1-1、表1-2和图1-6、图1-7介绍一下手机零件的中英文名称。 表1-1 K269中英文名称对照表 .. .. ..

新产品设计和开发程序文件

公司设计和开发程序文件 文件类别:开发类 文件编号: RD-CX-01 撰写部门:产品开发部 版本: 1.0 生效日期: 2016/03/25 合计页数:共9页

新产品设计和开发程序文件 1.1 开发创新—新技术 围绕新产品的研究开发而开展的商业化经济技术活动。包括自行研制开发和外部引进消化两种形式。 1.2 新产品 产品结构、性能等主要技术特征发生重大的变化或改进的产品属于新产品。主要包括: 1)产品的基本原理或结构性能比同类产品和老产品有新的发展; 2)填补国际、国内和省内空白的产品; 3)基本型派生出来的变形产品; 4)引进的新产品 1.3 设计评审 在设计阶段结束前,对设计所作的正式的、以文件为依据的技术资料(包括设计计算书,图纸等)进行综合的和系统性的检查,其目的在于评价设计能力和设计文件是否满足设计要求,并找出问题,提出解决方案。 2.0 程序 2.1 设计和开发的策划 2.1.1 设计和开发的阶段应包括 1)项目的申报(在单新产品除外); 2)项目的确立; 3)项目的设计; 4)项目的试制; 5)项目的改进。 2.1.2 设计和开发的评审应包括 1)项目的设计评审; 2)样品评审或样品检测; 3)改进后的项目评审。 2.1.3 设计和开发的验证应在样品试验达到要求后进行,主要是进行样品的鉴定。 2.1.4 设计和开发的确认应在所有设计和开发工作完成之后进行,对结果确认的同时编写试制总结报告。 2.1.5 设计和开发的职责和权限 2.1.5.1 职责

1)开发部负责组织项目的确立、项目设计和开发的全过程; 2)制造工程部负责设计样品的工艺审定与工艺保证; 3)协调计划部负责样品试制的计划安排; 4)生产部负责样品的制作及协调工作; 5)材料控制部负责按试制用量制订外购件的采购计划; 6)采购部负责样品所需采购件的采购工作; 7)质量管理部负责样品的试验(如需户外试验,由开发部负责组织实施)及样品试制中自制件和外购件的质量。 2.1.5.2 权限 1)项目开发小组负责人(或项目经理)有权按照设计计划监督和 协调各部门的工作; 2)项目开发小组负责人(或项目经理)在保证设计任务和产品质 量的前提下,在样品中有选择供方及零部件的权利; 3)开发部的设计工作由开发部经理领导。 2.2 设计和开发输入 2.2.1 项目申报(在单新产品除外) 2.2.1.1 各办事处根据各分销商的反馈信息、市场信息以及用户反馈的质量信息等,在年中(终)销售工作会议上,将新产品设计、开发需求申报给开发部经理;或技术部经理根据公司内部要求,自己立项。 2.2.1.2 质量管理部负责收集和受理各部门、职工的创新建议,并进行分类、整理,然后以项目申报表的形式申报给开发部经理。 2.2.1.3 项目申报表的内容包括:项目名称及对该项目的可行性分析。 2.2.1.4 产品设计和项目开发所涉及的项目范围: 1)新产品; 2)其它能够带来技术进步和提高效益的项目。 2.2.2 立项 2.2.2.1 开发部经理负责对申报来的项目进行分类,并组织有关人员进行初评审。初评审内容包括项目的科学性、可行性、经济性、市场性、生产能力等方面的分析。并决定是否将立项的建议上报给副总经理、总经理或董事会。 2.2.2.2 由董事会、总经理或副总经理决定立项,并将新产品开发项目作为公司的新产品开发计划在每年的年初以书面形式下达给技术部。 2.2.2.3 对于在单新产品的开发立项,可由各办事处根据有关信息,提出可能签订订单的新产品开发要求,书面报给销售协调人员,由其转给开发部经理进行分析,以确定其属于非标产品还是“在单新产品”。对于非标产品可直接执行“生产准备和计划程序”。“在单新产品”要由开发部经理负责组织有关人员进行初评审,评审结果上报副

产品设计与开发

“ “ 确认客户需求 一个成功的手工工具制造商正在探索处于增长中的手持动力工具市场。在进行了初步 研究后,该企业决定以无绳螺丝刀进入市场。图表 4- 1 展示了几个用于拧螺钉的现有产品。 在一些初步的概念工作之后,制造商的开发团队制造并实地侧试了几种原型产品.;结果令人 沮丧。尽管有些产品比其他产品更受欢迎,但每个产品都有客户以这种或那种方式所反对 的特征。这种结果很奇怪,因为该公司长期以来已经在相关的客户产品上取得了成功。在 大量讨论之后,开发团队认为其确认客户需求的过程是不够的。 本章提供了一种方法.以综合确定一系列客户需求。该方法的目标是: .确保产品集中在客户需求上 .确定潜在或隐藏的需求,以及外在需求。 .提供一个事实基础,以证明产品指标的合理性。 .创建开发过程中需求确认活动的文档记录。 .确保没有遗漏或忘记关键性的客户需求。 .在开发团队的成员中建立对客户籍求的统一认识。 该方法背后的哲学思想是建立一个在目标市场上的客户和产品开发者之间直接沟通的 高质量信息渠道。该哲学建立在这样的前提上:那些直接控制产品细节的人(包括工程师和 工业没计师)必须和客户沟通,并体验产品的使用环境(use environment)。没有这种直接体 验,就不大可能正确地进行技术性取舍从而不可能找到挤决客户需求的创新方法,就可能永 远都不会深切致力于满足客户的需求。 确认客户需求的过程是更广泛的产品开发过程的一个不可或缺的部分,它与概念生成、 概念选择、竞争性标杆以及产品指标的建立等关系最为密切。图表 4 一 2 给出了与其他产 品开发前期活动(他们可以集体视为‘’概念开发”阶段)相关的客户需求活动。 图表 4 一 2 所示的概念开发阶段间接地体现了客户筋求与产品指标之间的差别。这个 差别很微妙。但很重要。需求”在很大程度上与我们开发的特定产品无关;它们井不专属于 我们最终选择并贯彻的概念。团队应该有确认客户需求的能力——无需知道能否或怎样满 足这些需求。另一方面,性能指标”确实与我们所选择的概念有关。我们最终选择开发的产 品的技术指标。将取决于其技术和经济可行性,取决于竞争对手在市场上提供什么东西以 及客户需求〔关于这种差别的详细描述,详见第 5 章‘’产品指标”)。还请注意,我们选择 使用“需求’这个词来标识客户所期望的潜在产品上的任何属性。在这里。我们.不区分要求 (want )和需求(need )。 在工业实践中用于指代客户需求的其他术语包括客户属性和客户要求 确认客户需求本身就是一个过程,对此我们提供了一种方法。我们相信一个小的结构 对有效的产品开发实践很有好处,并且我们希望并期待这种方法不会被那些应用它的人视 为一个拘谨的过程,而是持续提高和提炼的起点。这种方法分为以下 5 个步骤:

网络课程设计与开发

河北大学成人教育学院试卷 专业年级课程课程设计姓名学号 学员必读: 1、本学期7月9日下午在语音室,对本资料进行集中辅导。 2、辅导资料完成后请于2011年7月之前交到教务处,其中出勤成绩,平时测验 成绩包含在辅导资料成绩中。(满分35分) 3、作业需单独完成从课后做题,作业本写满位置,作业必须独立完成,复印无 效,另算成绩。(满分15分) 4、本学期考试时间为2011年7月(以准考证为准),请各位学员7月15日来校 领准考证。 5、考试和交作业,不再另行通知,如果不参加考试或不交作业,没有成绩,后 果自负!切记! 6、考试题从复习资料中抽取。 7、联系电话:校长室:3216556 教务处:3258890 财务处:3038890 一、填空。(每空2分,共19空) 1、课程概念应该包括以下4个基本要素:、课程内容、、。 2、教学系统赢包括的4各要素分别是:教师、、教材和。 3、一般的网络课程设计应包括课程设计和两个阶段。 4、网络课程的设计与开发应分为、课程设计、教学设计、和课程实施5个实施阶段。 5、课程设计阶段的主要工作包括、、确定内容的组织结构、计划网络课程中教与学的活动。 6、媒体在教学过程中能起到各种各样的作用,最常见的5中使用目的是,、创设情境、、、探究发现。 7、生成性目标导向下的问题情境设计包括两个阶段:和。 8、表现性任务可以归为三大类:简短评价任务、以及。 9、补充学习材料是对教学内容的拓展和丰富,可以使与教学内容相关的、讲解性材料和等。 10、网络教师在教学中扮演着多种角色,包括、组织者、、指导者、辅导者,是至关重要的人力资源。

11、“生成性目标—问题中心”的网络课程是以为中心组织网络课程各要素的,其教学策略主要包括:、、、随机进入策略等。 12、“表现性目标—活动中心”的网络课程是以为中心组织网络课程各要素的,其教学策略主要包括:、抛锚策略、、和教练策略。 13、网络课程中反馈系统主要体现在学习过程状态信息反馈,,教师和学习者的反馈信息。 14、课程中的导航系统按照导航功能分为导航、导航、导航。 15、学习导航的主要技术方法有:学习内容直接引导、、、学习内容隐藏4种。 16、按照学习发生的进程来看,网络课程的教学活动主要分为学习发生前的导学活动、学习进行过程中的辅导活动和。 17、网络环境下的讨论按照发生时间可分为和。 18、网络环境下的讨论按照讨论的形式可分为、和问题式讨论。 19、目前基于互联网络实施网上答疑的方式主要有:异步答疑和同步答疑两种。异步答疑主要包括:常见问题答疑、、;同步答疑主要为:。 20、网络教师在网络课程教学活动中可能扮演多种角色,如、学习方法和学习过程指导者、。 21、网络教师所扮演的角色主要有三种:、亦师亦友、。 22、行为目标导向下的网络课程学习评价反馈的内容包括:、、测试用时。 23、图、文、声、象是网络课程的基本组成单位。其中多媒体图片、文字、影像动画都属于,而声音属于。 24、不论网页界面中的图形图片跟内容和形式如何复杂多变,作为视觉形式的语言,构成图的最基本造型元素都是、、。

网络爬虫的设计与实现(完整版)

网络爬虫的设计与实现

摘要 网络爬虫将下载的网页和收集到的网页信息存储在本地数据库中以供搜索引擎使用,它是一个专门从万维网上下载网页并分析网页的程序。随着网络的快速发展,人们对搜索引擎的要求也越来越高,而网络爬虫的效率直接影响着搜索引擎的质量。 本课题研究的是通用网络爬虫,它是从一个或若干个初始网页的链接开始进而得到一个链接队列。伴随着网页的抓取又不断从抓取到的网页中抽取新链接放入到链接队列中,直到爬虫系统满足了停止条件。该课题主要涉及到了缓冲池技术,多线程技术,套接字技术,HTTP和SSL协议,正则表达式,Linux网络编程技术,PHP+Apache的使用等相关技术。 本说明书叙述的网络爬虫是以Linux C实现的,加以PHP语言编写的界面使用户更加方面的操作,利用Shell脚本和Apache服务器使得爬虫系统和界面很好的结合在一起。 关键词:网络爬虫缓冲池正则表达式 SSL协议多线程

目次 1 引言 (1) 1.1 课题选题背景 (1) 1.2 课题研究的意义 (2) 2 需求分析 (3) 2.1 功能需求分析 (3) 2.2 系统性能分析 (4) 3 系统设计 (5) 3.1 系统工作流程图 (5) 3.2 数据结构设计 (6) 3.3 系统各功能流程图 (7) 4 系统实现 (10) 4.1 相关技术分析 (10) 4.2 系统功能模块的实现 (11) 5 测试与结果 (17) 结论 (23) 致谢............................................................................................ 错误!未定义书签。参考文献. (24)

山东建筑大学计算机网络课程设计基于Python的网络爬虫设计范文

山东建筑大学计算机网络课程设计基于Python的网络爬 虫设计

山东建筑大学 课程设计成果报告 题目:基于Python的网络爬虫设计课程:计算机网络A 院(部):管理工程学院 专业:信息管理与信息系统 班级: 学生姓名: 学号: 指导教师: 完成日期:

目录 1 设计目的 0 2 设计任务内容 0 3 网络爬虫程序总体设计 0 4 网络爬虫程序详细设计 (1) 4.1 设计环境和目标分析 (1) 4.1.1 设计环境 (1) 4.1.2 目标分析 (1) 4.2 爬虫运行流程分析 (2) 4.3 控制模块详细设计 (3) 4.3 爬虫模块详细设计 (3) 4.3.1 URL管理器设计 (3) 4.3.2 网页下载器设计 (4) 4.3.3 网页解析器设计 (5) 4.4数据输出器详细设计 (6) 5 调试与测试 (6) 5.1 调试过程中遇到的问题 (6) 5.2测试数据及结果显示 (7) 6 课程设计心得与体会 (7) 7 参考文献 (8) 8 附录1 网络爬虫程序设计代码 (8)

9 附录2 网络爬虫爬取的数据文档 (15)

1 设计目的 本课程设计是信息管理与信息系统专业重要的实践性环节之一,是在学生学习完《计算机网络》课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1.巩固和加深学生对计算机网络基本知识的理解和掌握; 2.培养学生进行对网络规划、管理及配置的能力或加深对网络协议体系结构的理解或提高网络编程能力; 3.提高学生进行技术总结和撰写说明书的能力。 2 设计任务内容 网络爬虫是从web中发现,下载以及存储内容,是搜索引擎的核心部分。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。 参照开放源码分析网络爬虫实现方法,给出设计方案,画出设计流程图。 选择自己熟悉的开发环境,实现网络爬虫抓取页面、从而形成结构化数据的基本功能,界面适当美化。给出软件测试结果。 3 网络爬虫程序总体设计

手机产品交互设计样式

手机产品交互设计样式 很多人都说,手机产品交互限制因素很多,过小的屏幕分辨率,过低的系统性能,过慢的网速,过弱的电池续航能力等等。但是在限制中还能做出优秀的设计,才显得弥足珍贵,就像风靡Symbian平台的gravity一样。 其实,我认为手机产品交互设计还是有很多想象空间的,它不仅仅是界面交互,而是跟空间、跟时间、跟触觉、跟视觉、跟听觉、跟嗅觉的交互,而且随着技术的推移,相信界面的可扩展性也会越来越好,不管是电子纸(ePaper),还是投影技术应用到手机上,都会让手机界面变得能承载更多容、更复杂的交互。 我们在使用手机产品的时候,视觉、触觉、听觉是经常被触发的。在此我对互联网产品的交互设计样式进行了分类:视觉交互样式、触觉交互样式、听觉交互样式和嗅觉交互样式。 1 视觉 1.1 界面 界面的信息传达作用不赘述,对交互的影响也不容置喙。 这里我更想说的视觉不仅仅是指界面,而是脱离手机屏幕本身的视觉效果,达到让用户的视觉上的体验越来越丰富的效果。 1.2轨迹球 当有新消息到达的时候,带有LED灯轨迹球的手机都会让轨迹球闪烁,起到提醒作用。相信不久的将来,五彩的轨迹球和轨迹球上写字都是可以实现的,到时候你可以根据不同的轨迹球颜色和文字提醒,在屏幕暗下的状态下也能判断出是什么新消息,来自谁。

图1 HTC hero和黑莓8800的轨迹球,在来电来消息的时候可以闪烁发光 1.3 指示灯 目前主流手机的LED指示灯大多是可以控制的,包括LED的颜色,亮的时长,灭的时长,都可以控制。之前指示灯多是用在提示电量不足,当快没电的时候,指示灯会按照一定的频率闪烁红光。充电的时候,红色指示灯常亮,充满电之后变成绿色。后来指示灯又被用在提醒功能里,有新消息、未接来电的时候,指示灯也会频闪。 图2诺基亚N900,指示灯,开机、充电、来电都会亮起 1.4 投影 Logic Wireless带投影功能的手机,被很多人认为是中国山寨手机的胜利。据了解,投影手机最早的机型来自中国南方。

新产品设计与开发项目生命周期管理

新产品设计与开发项目生命周期管理 国内外的汽车企业很多都通过了QS-9000或VDA6.1质量体系认证,但是其证书在全世界范围内并不能得到所有国家的承认和认可。于是,国际汽车特别工作组(IATF)以及ISO/TC176、质量管理和质量保证委员会及其分委员会的代表在以ISO9001:1994版质量体系的基础上结合QS-9000(美国)、VDA6.1(德国)、EAQF(法国)94和AVSQ (意大利)95等质量体系的要求制定了ISO/TS 16949技术规范,并且己于1999年1月1日颁布发行适用。 根据ISO/TS16949:2002的要求,质量管理体系由《质量手册》、程序文件、作业指导书和表单记录四个层次的文件构成。(见图一) 《质量手册》包括了质量方针和质量目标的书面声明,确定了质量管理体系的范围、满足ISO/TS16949:2002的途径和职责、识别了质量管理体系所有的过程,确定其先后顺序和相互关系,为质量管理体系而建立了书面程序并对其引用。 程序文件是对质量管理体系策划过程中确定的过程和程序的描述,规定了这些过程和程序的应用,确保有效运行和控制的准则和方法。 作业指导书包括图纸、标准、规范、管理规定、守则等。 表单记录的格式由所支持的过程/程序/作业指导书确定。 产品质量先期策划管理程序是质量管理体系中的程序文件。产品质量先期策划(APQP)是一种结构化的方法,用来确定和制定确保其产品使顾客满意所需要的步骤,其目标是促进与所涉及的每一个人的联系,以确保所要求的步骤按时完成。 产品质量先期策划过程就是一个完整的新产品设计与开发项目生命周期。 项目生命周期的阶段的划分,不同的人和企业,有不同的分法。以某汽车配套产品制造企业为例,一个全新产品的APQP过程包括5个阶段、26个过程、69项任务,有10个重要的里程碑,输出64个表单记录。5个阶段是计划和项目确定阶段、产品设计与开发阶段、过程设计与开发阶段、产品和过程确认阶段、反馈评定和纠正阶段,还有

手机APP的研发和设计流程

手机APP的研发和设计流程 一、研发流程 大局观 产品的研发流程分为四个步骤:产品定义——交互设计——开发 ——测试。这四个步骤也分别对应研发中的四个角色:产品经理 ——设计师——开发工程师——测试工程师。 产品定义阶段的目标就是确定用户场景,定义产品的功能和范围。 而设计师需要根据这些用户场景和功能范围进行交互设计。 之后开发工程师将会根据产品经理和设计师的方案进行写代码,把这个方案实现成可用的产品。 之后的再由测试工程师进行产品测试,以保证产品达到了产品经理和设计师的这个要求。 步骤细分: 一、产品定义 从用户需求初步定义产品功能 1、关于需求 在这里要谈论的主要是用户需求和产品需求。 1.1用户需求和产品需求 首先必须要搞清的是用户需求不等同于产品需求。 用户需求,简单来说是用户希望同构使用某一款产品来实现和满足某种需要。如安全、娱乐、沟通、交友等。用户需求是用户对某类产品真实需要的反应。 而产品需求,是某一类产品或服务能够满足用户需要的集合。也就是说,用户需求并不完全传递到产品需求当中去。而产品需求的获取渠道也不仅仅是用户需求。 1.2获取产品需求的方式

(1)用户需求:用户需求是产品需求的核心来源。但并不是所有的用户需求都能转化为产品需求。用户需求需要子可行性和必要性验证上,才可以转化为产品需求。 (2)相关利益合作伙伴:开发商、咨询机构、制造商等等。他们通过对市场的研究分析和对运营所积累的产品需求,是设计分析产品需求很好的参考。 (3)竞品分析:对竞争对手主要产品进行对标研究,分析其产品的成败关键和发展趋势,了解市场对类似产品的反馈。 (4)标杆市场:标杆市场是国内外在同类产品上运营比较成功的热门行业,通过对标杆市场中知名企业所运营的相近产品的功能进行剖析。可以了解国际与国内在该类产品上的先进做法。 (5)企业内部产品研讨会、员工体验及内部专家评估。 1.3用户需求的提取与挖掘的方式 了解用户需求的有效方式是用户研究,这是用户中心设计流程的第一步。其主要研究方式是:用户访谈、用户观察、问卷调研、焦点小组、眼动实验等等。并对由此得到的信息与数据进行处理和分析。从中提取制作出初步的用户需求文档。 显然这些需求是不够的。这些需求仅仅是用户在现有需求上的反馈。此外,设计师可以利用在用户研究阶段所生成的人物角色(人物画像)这个工具,并放置到具体场景中,从而挖掘用户可能的潜在需求。 (1)通过用户研究直接获取 用户研究阶段可能会出现各式各样的问卷及数据列表。这些数据的收集活动并不难,所需要付出的只是耐心和时间。 为了更多更好的获取初步用户的需求,用户研究员需要在问卷调查的问卷设计、用户访谈、焦点小组等的脚本设计中,明确哪些问题或者选项是为需求而设置的,以便后续阶段的整理。 (2)在场景中运用人物角色进行挖掘。 人物角色的来源、概念及功能:人物角色不是真实的人,但它是基于我们观察到的那些真实的人的行为和动机,并且在整个设计过程中代表真实的人,是在

网络爬虫设计与实现毕业设计论文

毕业设计(论文)说明书 题目:网络爬虫设计与实现 学院软件学院 专业软件工程

毕业设计(论文)任务书题目:网络爬虫设计与实现

独创声明 本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行研究工作所取得的成果,成果不存在知识产权争议。尽我所知,除文中已经注明引用的内容外,本设计(论文)不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体均已在文中以明确方式标明。 本声明的法律后果由本人承担。 作者签名: 二〇一〇年九月二十日 毕业设计(论文)使用授权声明 本人完全了解滨州学院关于收集、保存、使用毕业设计(论文)的规定。 本人愿意按照学校要求提交学位论文的印刷本和电子版,同意学校保存学位论文的印刷本和电子版,或采用影印、数字化或其它复制手段保存设计(论文);同意学校在不以营利为目的的前提下,建立目录检索与阅览服务系统,公布设计(论文)的部分或全部内容,允许他人依法合理使用。 (保密论文在解密后遵守此规定) 作者签名: 二〇一〇年九月二十日

一、原始依据(包括设计或论文的工作基础、研究条件、应用环境、工作目的等。) 互联网是一个庞大的非结构化的数据库,将数据有效的检索并组织呈现出来有着巨大的应用前景。搜索引擎作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性。不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。所以需要一个能基于主题搜索的满足特定需求的网络爬虫。 为了解决上述问题,参照成功的网络爬虫模式,对网络爬虫进行研究,从而能够为网络爬虫实现更深入的主题相关性,提供满足特定搜索需求的网络爬虫。 二、参考文献 [1]Winter.中文搜索引擎技术解密:网络蜘蛛 [M].北京:人民邮电出版社,2004年. [2]Sergey等.The Anatomy of a Large-Scale Hypertextual Web Search Engine [M].北京:清华大学出版社,1998年. [3]Wisenut.WiseNut Search Engine white paper [M].北京:中国电力出版社,2001年. [4]Gary R.Wright W.Richard Stevens.TCP-IP协议详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议 [M].北京:机械工业出版社,2002 年1月. [5]罗刚王振东.自己动手写网络爬虫[M].北京:清华大学出版社,2010年10月. [6]李晓明,闫宏飞,王继民.搜索引擎:原理、技术与系统——华夏英才基金学术文库[M].北京:科学出版社,2005年04月.

手机产品的结构设计基础

手机产品的结构设计基础 手机产品的结构设计是实现产品功能的关键,这不仅需要与产品外观相协调,更要考虑后序的生产装配、喷漆、喷绘、模具设计制造等各个方面。 手机产品的形体结构设计牵扯知识范围十分广泛,主要有: 1.材料选用; 2.表面处理; 3.加工手段; 4.包装装潢; 这些因素的运用直接影响着手机产品的生命和外观形象的变化。可以说设计者水平的高低决定了产品的生命力和产品的档次高低,高档次产品不一定是高造价,运用低造价设计出高档次的产品是设计者高水平高素质的体现。 我主要想讲的是前两项,后两项以后再说。 1.要评审造型设计是否合理可靠,包括制造方法,塑件的出模方向、出模斜度、抽芯、结构强度, 电路安装(和电子工程人员配合)等是否合理。 2.根据造型要求确定制造工艺是否能实现。包括模具制造、产品装配、外壳的喷涂、丝印、材质 选择、须采购的零件供应等。 3.确定产品功能是否能实现,用户使用是否最佳。 4.进行具体的结构设计、确定每个零件的制造工艺。要注意塑件的结构强度、安装定位、紧固方 式、产品变型、元器件的安装定位、安规要求,确定最佳装配路线。 5.结构设计要尽量减小模具设计和制造的难度,提高注塑生产的效率,最小限度的减低模具成本 和生产成本。 6.确定整个产品的生产工艺、检测手段,保证产品的可靠性。 一、塑料选材的途径 理解工程塑料的性能 塑料在成型加工中有时表现得很奇特。对一个成型问题的解答可能完全不同于另一个成型问题。这也许是因为这些例子中涉及到两种本质上互不相同的塑料树脂。本文将对这些材料的性质以及各种不同材料之间的差异加以讨论,以增进对注塑过程中机理的理解。 (1)结晶型聚合物的特性 许多人熟悉的物质是晶体如食用盐,糖,石英,矿物质和金属,当然还有冰。这些固态物质具有分子排布有序,致密堆积的特性。其它表现为固态物质,并不形成有规则的晶体排列方式。它们只是冷却成为无序的或随机的分子团,称为无定型聚合物。非晶体物质不是真正的固体,最普通的例子就是玻璃,它们只是过冷的,极端粘稠的液体。(一件玻璃若放置几十年,其底部会逐渐变厚,这是由于很慢的流动引起的。) 塑料树脂可分为无定形或结晶形的。由于很长的聚合物链较大复杂,从而阻止了它们形成象石英那种固体所具有近乎完美的结构和完整的晶体排列次序。聚合物,例如高密度聚乙烯是有点结晶性的,尼龙的结晶性表现得更为强一些,而聚甲醛的结晶性表现得就更强了。左图给出了一些常

完整版产品设计与开发复习题

一、填空题 1、近代资本主义的经济开始于工场手工业经济,其特征是雇佣劳动、工人多 且进行分工合作、生产规模大及产量高,有简单的生产工具,如:人力纺织机、风能磨坊等。 2、产品的设计包含了工业设计和工程设计两部分,每一个产品的设计必须 有工业设计师的参与,也必须有产品工程设计人员的参与。 3、对批量生产的工业产品而言,凭借训练、技术、经验及视觉感受,赋 予产品以材料、结构、形态、色彩、表面加工以及修饰以新的质量和性能。 4、人性化设计原理就是把人的理性要求和感性要求融入到产品造型设计中 去,使产品的功能和形态、结构和外观、材料和工艺等诸多因素充分满足人的要求,达到产品与人的完美协调。 5、常用工程材料可分为金属材料和非金属材料两大类,金属材料包括黑色金属和有色金属。 6、能被顾客理解的,并能满足其需求的、由企业营销人员所提供的一切有形和无形的统一体,包括实质层、实体层和延伸层三个层次。 7、产品开发是指从研究选择适应市场需要的产品开始到产品设计、工艺制造 设计,直到投入正常生产的一系列决策过程。从广义而言,产品开发既包括新 产品的研制也包括原有的老产品改进与换代。 8、组合设计法是把原来不能单独存在的相邻近的东西组合起来的方法,或 是把两种功能让一件制品来担当,叫组合设计法。 9、产品的全生命周期包括产品的孕育期、生产期、储存销售期、服役期 和转化再生期的整个闭环周期。 10、非金属材料是指除金属材料以外的其他材料。在工业产品中使用的非金属 材料主要有高分子材料、陶瓷材料以及复合材料三大类。

二、简答题 1、工业设计对产品的重要性? (1)满足顾客需求的重要性:大多数市场上销售的产品都可以通过较好的工业设计在某些方面得到改进,人们所使用、操纵或所见到的所有产品在商业销售上的成功都在很大程度上依赖于工业设计。 传统的评价工业设计重要性的指标主要是人机工程学和美学。 人机工程学方面的需求: a、使用方便:对于大多数消费者来说非常重要,尤其是产品具有多种特性或功能,并且有多种操作模式时。 b、维护的简便性:如果产品需要经常维修和维护,用户一般希望操作简单方便,在大多数情况下,最好的方案是减少维护的必要性。 c、产品的用户界面:用户界面的新颖性是在改进设计中首先应该考虑的,产品的用户界面越多,工业设计在产品的界面设计上就越重要。 d、安全因素考虑:所有的产品都必须考虑其安全性,对于某些特殊产品,安全因素可能是设计人员面临的重大挑战。 美学方面的需求: a、产品的差别化:具有稳定市场和成熟技术的产品在很大程度上依赖于工业设计来创造美观的外形,从而使得产品差异化,来吸引消费者。 b、产品的外观:消费者对产品的感受很大程度上取决于产品的外观,即产品的形象和式样,美观的造型和式样往往能够吸引顾客,并给拥有者带来强烈的自豪感。 c、美观的产品设计激励着设计人员:当一个具有美观外形的产品最终生产出来时,常常会在设计人员和制造人员心目中产生一种“集体荣誉感”,将有助于激励和凝聚每一个开发人员。 (2)工业设计的经济效果: a、工业设计的费用:工业设计的费用包括直接成本、制造成本和时间成本。直接成本是指工业设计服务的开销,取决于雇佣设计师的知名度、人数、项目周期、所需模型的数量,还有材料费用的相关开支;制造成本是具体实现工业设计师所确定的产品细节的费用;时间成本是指延迟产品进入市场的时间所造成的不利后果。 b、工业设计的利益:工业设计所带来的好处包括以额外或更好地特征来美化产品的外观、增加顾客满意度、强化品牌形象和产品的差异性。这些方面使得相对于那些没有经过工业设计的产品来说,这些产品能卖到更高的价格,占有更大的市场份额。 2、产品造型设计的基本要求? 美观性原则、创新性原则、实用性原则、工业产品设计要注意遵循以下原则:经济性原则、合理性原则、环保性原则,这些原则是精神功能和物质功能的完美

(精品)网络爬虫的设计与实现毕业论文

摘要 网络爬虫是一种自动搜集互联网信息的程序。通过网络爬虫不仅能够为搜索引擎采集网络信息,而且可以作为定向信息采集器,定向采集某些网站下的特定信息,如招聘信息,租房信息等。 本文通过JAVA实现了一个基于广度优先算法的多线程爬虫程序。本论文阐述了网络爬虫实现中一些主要问题:为何使用广度优先的爬行策略,以及如何实现广度优先爬行;为何要使用多线程,以及如何实现多线程;系统实现过程中的数据存储;网页信息解析等。 通过实现这一爬虫程序,可以搜集某一站点的URLs,并将搜集到的URLs 存入数据库。 【关键字】网络爬虫;JAVA;广度优先;多线程。

ABSTRACT SPIDER is a program which can auto collect informations from internet. SPIDER can collect data for search engines, also can be a Directional information collector, collects specifically informations from some web sites, such as HR informations, this paper, use JAVA implements a breadth-first algorithm multi-thread SPDIER. This paper expatiates some major problems of SPIDER: why to use breadth-first crawling strategy, and collect URLs from one web site, and store URLs into database. 【KEY WORD】SPIDER; JA V A; Breadth First Search; multi-threads.

相关主题
文本预览
相关文档 最新文档