




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 . . . 毕毕业业论论文文(设设计计)B BA AC CH HE EL LO OR R D DI IS SS SE ER RT TA AT TI IO ON N论文题目:基于奇异值分解的编码捕获方法 . . . I / 86基于基于 J2MEJ2ME 的手机水电费查询系统的设计与实现的手机水电费查询系统的设计与实现中中 文文 摘摘 要要J2ME是JAVA的一个重要分支,不仅保留了JAVA的传统特性,更是将JAVA的优势扩展到了无线领域。它主要针对消费型和嵌入式设备而开发,克服了这些小型设备电力、网络等物理环境相对较弱的缺点,为这些设备提供资源利用率高的可开发环境。随着生活中小型嵌入式设备利
2、用率的提高,J2ME也越来越受到大家的青睐。本文是在深入研究J2ME平台的基础上,设计并实现了基于J2ME的手机水电费查询系统。该系统总体上采用MVC3层架构,基于 协议。其中手机客户端使用J2ME语言作为编程平台,实现各种界面显示;控制层 Communication负责程序跳转,处理客户端的请求,调用模型层进行处理;服务器端采用Mysql数据库,以JDBC作为数据连接技术。运用通用分组无线业务技术,本系统可以使手机终端实现几乎所有柜台功能,包括普通用户的缴费、各种信息查询、个人信息修改,抄表员的抄表功能等。做到了可随时随地查询所需的水电费信息,突破了目前只能到水电部门缴费、查询的现状,能快速
3、完整地开发出高效GPRS应用。本系统的实现为E时代的用户提供了更多便利。关键词:水电费查询;关键词:水电费查询;J2MEJ2ME;MVCMVC;JDBCJDBC;ServletServlet;MysqlMysql;通用分组无线业务;通用分组无线业务 . . . II / 86TheThe DesignDesign andand ImplementationImplementation ofMobileofMobile PhonePhone UtilitiesUtilities InquiringInquiring SystemSystemBasedBased onon J2MEJ2MEABST
4、RACTABSTRACTJ2ME is an important branch of JAVA,it not only keeps JAVAs traditional characteristics,but expands JAVAs advantage to wireless.J2ME is developed for comsumptive and embedded equipments mainly,which overcomes the weak physical envirment of these equipments,such as power,network and so on
5、,so it provides high resource utilization for these equipment.With the more and more extendsive use of these equipment,J2ME is favored more and more.This article is based on the deep research of J2ME platform,then designs and implements the mobile phone Utilities Inquiring System based on J2MEAs a w
6、hole ,MVC 3-tier architecture is adopted in this system ,which is based on protocol.In the system, the mobile client terminal uses J2ME as Programming platform to achieve a variety of screen displays.Control layer Communication is responsible for the program jumps,deals with requests from client ter
7、minal and calls model layer to deal.Serversideadopts Mysql as database and uses JDBC as database connection skill.Combining with GPRS, mobile terminal achieves all counter founctions,including common users payment,information being searched,information being modified and workers meter reading.Client
8、 can search all information about utilities anytime and anywhere almostly,which breaks the status that people can only pay and search in hydropower sector and develops efficient GPRS application quickly and completely.This system provides more convenience to clients in E age.KEYKEY WORD:UtilitiesWOR
9、D:Utilities iquiringiquiring;J2MEJ2ME;MVCMVC;JDBCJDBC;ServletServlet;MysqlMysql;GPRSGPRS . . . III / 86目目 录录第一章前言 11.1 开发背景 11.2 项目的主要研究工作 1第二章理论基础 22.1 JAVA22.1.1 JAVA 概念 22.1.2 JAVA 主要特点 22.2 J2ME32.2.1 J2ME 概念 32.2.2 J2ME 架构 32.2.3 J2ME 开发流程 42.2.4 J2ME 的优势 52.3 Mysql 数据库 52.3.1 数据库 52.3.2 Mysql
10、数据库 62.3.3 Mysql 数据库特点 62.4 关键技术 62.4.1 多线程技术 62.4.2 序列化和反序列化 72.4.3 无线网络开发技术 72.4.4 GPRS 技术 82.4.5 数据库连接技术 82.4.6 域名解析技术 9第三章系统的配置与使用 103.1 硬件环境配置 103.2 软件环境配置 103.2.1 JDK 的安装与设置 103.2.2 Tomcat 安装与设置 113.2.3 Eclipse 的安装 113.2.4 Mysql 的安装和配置 12第四章手机水电费查询系统分析 134.1 系统需求分析 134.2 系统功能分析 134.3 系统架构 14第五
11、章公共类设计 155.1 用户信息类的设计 155.1.1 类图 155.1.2 类的结构 155.1.3 核心代码 165.2 抄表员信息类的设计 16 . . . IV / 865.2.1 类图 165.2.2 类的结构 175.2.3 核心代码 175.3 银行卡类的设计 175.3.1 类图 175.3.2 类的结构 185.3.3 核心代码 185.4 缴费类的设计 195.4.1 类图 195.4.2 类的结构 195.4.3 核心代码 195.5 消费类的设计 205.5.1 类图 205.5.2 类的结构 205.5.3 核心代码 21第六章数据库详细设计 226.1 概念设计
12、 226.1.1 实体集与其属性 226.1.2 系统 E-R 图 236.2 逻辑设计 246.3 物理设计 28第七章客户端的设计与实现 297.1 客户端通信流程 297.2 欢迎界面的设计与实现 307.2.1 界面设计 307.2.2 设计思路 307.2.3 核心代码 307.3 登录功能的设计与实现 317.3.1 界面设计 317.3.2 设计思路 327.3.3 核心代码 337.4 抄表功能的设计与实现 367.4.1 界面设计 367.4.2 设计思路 377.4.3 核心代码 377.5 缴费功能的设计与实现 387.5.1 界面设计 387.5.2 设计思路 397.
13、5.3 核心代码 407.6 查询功能的设计与实现 417.6.1 界面设计 417.6.2 设计思路 427.6.3 核心代码 43 . . . V / 867.7 设置账户信息功能的设计与实现 457.7.1 界面设计 457.7.2 设计思路 467.7.3 核心代码 477.8 网络处理模块的设计与实现 497.8.1 设计思路 497.8.2 核心代码 49第八章服务器端的设计与实现 518.1 服务器端的通信流程 518.2 解析登录功能的设计与实现 528.2.1 设计思路 528.2.2 核心代码 538.3 解析缴费功能的设计与实现 548.3.1 设计思路 548.3.2
14、核心代码 548.4 解析查询功能的设计与实现 558.4.1 设计思路 558.4.2 核心代码 568.5 解析设置账户信息功能的设计与实现 588.5.1 设计思路 588.5.2 核心代码 58第九章系统的发布与测试 609.1 系统的发布 609.2 系统的测试 61第十章总结 63参考文献 64致 66附录 67 . . . I / 86第一章第一章 前言前言1.11.1 开发背景开发背景随着移动通信技术的突飞猛进,移动开发慢慢成为开发者关注的热点。J2ME专为嵌入式/移动设备而开发,是嵌入式/移动应用平台的王者,它把JAVA的使用围扩展到所有的电子设备开发上。所以,J2ME是本系
15、统开发语言的第一选择1。随着人们生活水平质量的提高,传统的水电费缴纳方式已不能满足人们的要求,特别是当消费者对水电费结算产生质疑时,水电费详单的查询就显得非常重要。目前,国居民的水电费都是到柜台进行缴纳和查询,如何才能够给客户提供更方便的服务成为水电部门面临的重要问题之一。众所周知,由于移动通信突飞猛进的发展和手机智能化程度的加强,手机在日常生活中得到广泛应用,移动开发也成为软件开发的热点。因此,利用手机的便捷性是解决问题的有效途径。利用本系统,用户和抄表员可以随时随地进行水电费的相关操作,如普通用户的缴费、信息查询、信息修改,抄表员的抄表等。而我国移动用户数量居世界首位,移动终端的硬件性能也
16、在不断提高2。所以本系统的研究与实现具有很大的应用价值和市场前景。1.21.2 项目的主要研究工作项目的主要研究工作本项目要完成的任务即是设计一个系统,基于协议,使用J2ME语言作为编程平台,结合Mysql数据库实现普通用户的缴费、信息查询、信息修改,抄表员的抄表等,做到可随时随地查询所需的水电费信息。系统可以用手机模拟器进行模拟,最终可以在手机上利用GPRS技术成功运行。 . . . II / 86第二章第二章 理论基础理论基础2.12.1JAVAJAVA2.1.1JAVA 概念JAVA 是一种重要的编程语言,是由 Sun Microsystems 公司推出的,已经在世界围被软件开发商所接受
17、。很多团队将 JAVA 作为通用编程语言,是因为 JAVA 的易于编程和安全特性使用户可以快速地产生工作代码,而多线程支持符合时新的基于网络和图形用户界面的应用程序,这些应用程序必须同时参加多个任务,同时异常处理机制则简化了错误情况的处理。尽管 JAVA 的建工具很强大,但它仍然是一门简单的语言,程序员能够很快地上手。又因为 JAVA 的可移植性,程序员只要编写一次代码,不必关心应用程序在各个软硬件平台上的移植问题。JAVA 不仅是编程语言,还是一个程序开发和发布平台,给程序员提供了许多工具,如编译器、解释器、文档生成器、文件打包工具和运行时环境(JRE,JAVA runtime enviro
18、nment)等3。目前针对不同的市场目标和设备进行定位,JAVA 被划分成 J2EE、J2SE、J2ME 三个平台。J2EE,即 JAVA2 Enterprise Edition,主要是为企业提供一个应用服务器的运行和开发平台,其本身是一个开放的标准,任何软件厂商都可以推出自己的符合 J2ee 标准的产品,使用户可以有多种选择。J2SE,即 JAVA2 Standard Edition,主要是为台式机和工作站提供一个开发和运行的平台。J2ME,即 JAVA2 Micro Edition,主要是面向嵌入式设备和消费电子产品,使得 JAVA 程序能够在手机、机顶盒、PDA 等小型设备上运行。2.1
19、.2JAVA 主要特点1、跨平台与平台无关可以说是 JAVA 最大的优势。当其他语言编写的程序面临因为操作系统的变化、处理器升级以与核心系统资源的变化而导致程序出现错误或无法运行的困境时,JAVA 虚拟机成功地解决了这个问题,实现了“一次编成,处处运行”的目标4。 2、多线程线程是程序中一个单一的顺序控制流程 ,所谓的多线程就是指 在单个程序中同 . . . III / 86时运行多个线程完成不同的工作 。线程机制是 JAVA 的又一大亮点,通过使用多线程可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易实现网络上实时的交互行为,通过提高资源使用效率 进而提高系统
20、的 效率。3、简单一方面 JAVA 语言的语法与其他语言很接近,所以大多数学者很容易学习和使用JAVA。另一方面 JAVA 丢弃了其他语言中很少使用的、令人难以理解的的特性。并且 JAVA语言提供了自动垃圾回收机制,程序员不必单独考虑存管理的问题5。4、丰富的类库和网络功能JAVA 类库就是一些已写好、可供调用的类的集合,JAVA 将这些类整理在一个个包中,每一包里都包含一些特定功能的类和接口,当这些包被用 import 引入程序后,用户就可以访问包中类和接口,不需要再重新设计。2.2J2ME2.2J2ME2.2.1J2ME 概念美国 Sun 公司是 IT 界为全球用户提供最具实力的硬件、 软
21、件与服务的领先供应商,而 J2ME 是 Sun 公司专门针对嵌入式、消费类电子产品推出的开发平台,是一种高度优化的运行环境。J2ME 的另一种称法是 JAVA ME,是 JAVA 的一个组成部分,与J2SE、J2EE 并称。由于 JAVA 的跨平台性,遵循 J2ME 规开发的 JAVA 程序可以移植到各种不同的小型电子设备上,允许移动无线设备之间共享应用程序。2.2.2J2ME 架构J2ME 架构从上至下分为简表(Profile)、配置(Configuration)和主机操作系统(HostOperating System)6,如图 1。 . . . IV / 86图 1J2ME 架构1、简表简
22、表(Profile)是专门针对某种特定的设备而制定的功能接口。它为一样消费电子设备的不同的生产商提供了标准化的 JAVA 类库,现今已经有五个简表有了规,分别是Mobile information devices profile (MIDP)、Personal digital assistant profile、Foundation profile、Personal profile、RMI profile。本系统主要利用的简表是 MIDP,它定义了一个标准 JAVA API 集合。2、配置JAVA 是边解释边运行的程序,所有的程序都被编译成二进制代码并运行在 JAVA 虚拟机(JVM,JAVA
23、 Virtual Machine)上,而配置决定了所使用的 JVM。配置包括核心库、虚拟机等。当前 J2ME 存在两种配置:CDC(Connected Device Configuration,连接设备配置)、CLCD(Connected limited device configuration,有限连接设置配置)。CDC 面向强大的可以间歇式地与网络连接的设备,即有稳定的电源供应、设备性能强劲的设备;CLCD 面向微型设备和嵌入式设备。JAVA 虚拟机是所用 JAVA程序的基础,在手机出厂前已经固化在手机中了7。配置与简表一起提供了一个面向移动信息设备的完整J2ME 应用程序运行环境。3、主
24、机操作系统 主机操作系统是在物理计算机上运行的操作系统,在它之上运行虚拟机软件。2.2.3J2ME 开发流程1、J2ME 开发的第一步就是要详细了解客户的需求,针对客户的需求来编写适合客户的应用软件。2、配置自己的开发环境,然后进行编码,生成.JAVA 文件。3、对.JAVA 文件进行编译,生成.class 文件。4、打包成.jar 文件,下载发布到移动设备上8。开发步骤如图 2。 . . . V / 86 图 2J2ME 开发步骤2.2.4J2ME 的优势与 J2SE 和 J2EE 相比,J2ME 不是一个单独的技术规,而是一系列技术规的总称,其总体的的运行环境和目标也更加多样化,具有独特的
25、优势。首先,J2ME 是为了使用有限的电力、网络连接以与有限图形界面设计用户的开发,通过剪裁某些小型设备上不需要的功能,以达到减少 JAVA 虚拟机体积以与相应运行库体积的目的,目标是为小型设备提供资源利用率高的可开发环境。其次,J2ME 将 JAVA 的“一次编写,处处运行”的设计理念扩展到无限领域。对于程序开发员而言,只要手机安装了 JAVA 虚拟机即可执行 JAVA 程序,提高程序的一致性;对用户而言,也不必担心下载的程序无法运行。最后,无线设备上大多数的现有程序都是置的且功能固定的,没有制造商的参与很难进行软件安装与升级。J2ME 提供了动态部署机制,可以通过无线网络下载和安装程序。不
26、仅为厂商和开发者提供了低成本的软件产品发布方式,还允许用户按需动态地下载并个性化定制自己的程序。2.3Mysql2.3Mysql 数据库数据库2.3.1 数据库数据(Data)是用物理符号记录下来的可以识别的信息,不同的物理符号体现出数据的不同表现形式,如数字、图形、文字等,而数据库(DB,Database)就是长期存储 . . . VI / 86在计算机的数据集合9。数据库的系统由操作系统、数据库管理系统、应用开发工具、应用系统/软件和数据库系统管理员组成,其系统图如下图 3。图 3 数据库系统2.3.2Mysql 数据库Mysql 是众多数据库中的一种,它是一个小型开放源代码的 关系型数据
27、库管理系统,最常用的数据库管理语言 是结构化查询语言 SQL。2.3.3Mysql 数据库特点与其他数据库相比,Mysql 数据库具有以下特点:1、是目前市场上运行速度最快的数据库系统。2、提供 TCP/IP、ODBC 和 JDBC 等多种数据库连接途径 。3、同时访问数据库的用户数量不受限制。4、可以处理上千万条记录。5、支持多线程。正因为 Mysql 具有的这些特点,所以被许多中小型选为数据库10。 . . . VII / 862.42.4 关键技术关键技术2.4.1 多线程技术线程是程序中一个单一的顺序控制流程 ,每个线程共享其所附属的进程的所有资源,多线程就是指在单个程序中同时运行多个
28、线程完成不同的工作 。当多线程执行时,该程序对应的进程就有多个控制流在同时运行,意味着一个程序的多条执行语句同时执行。多线程技术使系统速度更快、通信实现更容易11。2.4.2 序列化和反序列化1、序列化数据序列化是将对象转换为二进制数据流的一种方法,这种转换可以使对象保存在文件中或在网络中传输。2、反序列化反序列化是序列化的相反过程,即在另一程序中打开字节流并重构对象。这两个过程结合起来使得数据能被轻松传输和存储,简化了对象持久化的实现。2.4.3 无线网络开发技术1、GCF由于受移动信息设备处理能力和存的限制,J2ME 有自己的联网框架通用连接框架(GCF,Generic Connectio
29、n Framework),由 CLDC 定义。层次结构如图 4。 . . . VIII / 86图 4 GCF 层次结构2、 连接在 MIDP 规中规的设备是必须支持 和 S 的。 属于无状态协议,其工作机制是请求和响应,也就是说当用户输入了一个的地址,其实质就是发送了一个请求,那这时浏览就会给予响应,返回给用户所需要的页面。一个 连接会经过三种状态:setup、connected、closed。当一个 被打开,但请求未发送之前为 setup 状态,这时应用程序设置与服务器进行连接的各种信息,用setRequestMethod 和 setRequestProperty 两种方法完成。在 被打开
30、和被关闭之间为connected 状态。连接关闭时,就进入了 closed 状态12。2.4.4GPRS 技术GPRS,通用分组无线服务(General Packet Radio Service),是一种基于全球移动通信系统(GSM,Global System for Mobile Communications)的无线分组交换技术,其实现的方法就是以“分组”的形式将数据信息传送到用户端。GPRS 工作时,它在移动用户和数据网络之间提供一种连接,通过路由管理来进行寻址和建立数据连接13。2.4.5 数据库连接技术JAVA 语言提供了一套访问关系数据库的应用程序编程接口,即 JDBC API。JD
31、BC 代表JAVA 数据库互联,包含一组 JAVA 语言编写的类和接口,是 JAVA 数据库应用的基础。它定义了一个底层的 API,用来支持独立任何特定 SQL 实现基本 SQL 功能。其主要特点是与任何关系式数据库协同工作的方式完全一样,在许多不同的数据库连接模块的顶端提供 . . . IX / 86了统一的接口,也就是说,访问所有数据库时无需分别写程序。在创建数据库之前必须先加载JDBC驱动,然后才可以创建数据库连接,与数据库建立连接后,应用程序在此连接上可创建SQL语句对象,以便执行用户定义的特定SQL语句。执行后的SQL语句将返回结果,查询语句返回的是一个结果集对象,然后用next()
32、方法在记录中移动游标定位结果集中的记录。最后关闭数据库连接14。JDBC使用流程如图5。图 5JDBC 连接数据库流程2.4.6 域名解析技术IP地址是网路上标识站点的数字地址,其重要性可想而知,但比起IP地址,现实生活中在使用网络资源时人们更熟识的是域名。例如学院的IP为“5”,而我们通常用域名“”来代替IP地址,这是便于记忆的一种方式。反过来说,当我们注册了域名后,只对自己的域名具有使用权,只有解析成IP才可使用。域名的解析工作由DNS服务器完成,分为静态和动态两种。本系统所运用的是动态域名解析,即将固定的互联网域名和动态 IP地址实时对应解析的服务。相对于传统的
33、静态DNS而言,它可以将一个固定的域名解析到一个动态的 IP地址,不管用户何时 何地、以何种方式上网、 IP地址是否变化 ,都能保证通过一个固定的域名就能访问到用户的计算机15。 . . . 10 / 86第三章第三章 系统的配置与使用系统的配置与使用开发之前,首先准备一下自己的开发环境。设计本系统时需要硬件和软件两方面的配置。3.13.1 硬件环境配置硬件环境配置安装 Windows xp 操作系统的三星笔记本电脑一台,开通 GPRS、型号为 OPPO A125 的手机一部。3.23.2 软件环境配置软件环境配置3.2.1JDK 的安装与设置1、JDK 的安装JDK(JAVA Develop
34、ment Kit)是 JAVA 开发工具包,是一切 JAVA 应用程序的基础。其安装步骤如下所述:(1)下载 JDK 安装文件 JDK1.7.0。(2)解压文件,双击安装文件 jdk1.7.0.exe,单击“接受”按钮进入下一步。(3)选择安装容与路径。中间列表是要安装的可选功能,单击每个可选功能左边的按钮,将弹出下拉菜单,我们选择系统默认的第一项“此功能将安装在本地硬盘驱动器上”。安装路径选择“D:JDK”。设置好安装容与路径后,单击“下一步”,系统开始在选择的安装路径下安装所选的容。 (4)安装 JRE。安装方法和(3)中所述一样,安装目录为“D:JDKjre”。设置好安装容与路径后,单击
35、“下一步”,系统开始在选择的安装路径下安装所选的容。系统提示提示 JDK 安装完成16。2、设置环境变量设置环境变量的方法如下所述: . . . 11 / 86(1)重启电脑,右击“我的电脑”,选择“属性”命,打开“系统属性”,选择“高级”选项卡,单击“环境变量”按钮,打开“环境变量”对话框。(2)单击“用户变量”中的“新建”按钮,打开“新建系统变量”对话框,将变量名设置为 JAVA_HOME,变量值设置为 JDK 安装目录“D:JDK”。(3)新建一个系统变量,变量名设置为 classpath,变量值设置为“.D:JDKlib;D:JDKlibtools.jar;D:JDKlibservle
36、t-api.jar”,表示搜索 JAVA 类的路径,包含一些 Jar 归档文件相应的目录,JAVA 程序执行时往往会从 classpath 中选择并添加自己需要的类路径。变量值最前面的“.”表示当前路径不同值之间用“;”隔开。(4)新建一个系统变量,变量名设置为 Path,变量值设置为“D:JDKbin”。(5)环境测试:单击“开始”-“运行”-输入“cmd”-输入“JAVA-version”-按“Enter”键。出现如下界面,安装成功17。图 6 测试成功界面3.2.2Tomcat 安装与设置1、Tomcat 安装(1)下载 Tomcat 压缩文件 Apache Tomcat 5.5。(2)
37、解压文件到“D:tomcat”下即可。2、设置环境变量(1)按 3.2.1 中的方法,新建用户变量,其中变量名设置为 TOMCAT_HOME,变量值设置为“D:tomcat”。(2)修改用户变量 classpath,在变量值后面添加“%TOMCAT_HOME%commonlibservlet-api.jar”。(3)修改用户变量 path,在变量值后面添加“%TOMCAT_ HOME%bin”18。 . . . 12 / 863.2.3Eclipse 的安装1、下载 Eclipse 压缩包。2、将压缩包进行解压,双击安装文件 Eclipse.exe,安装过程中导入 JDK 的安装目录即可。3.
38、2.4Mysql 的安装和配置1、下载 Mysql 压缩文件。2、解压文件,在解压后的文件中双击安装文件 Setup.exe 开始安装。在 Setuptype窗口中”Custom”单击“Next”。3、设定 Mysql 的组件包和安装路径,单击“Next”按钮,直至出现“Finsh”,勾上“Configure the MySQL Server now”,单击按钮即完成 Mysql 的安装。4、配置 Mysql 服务器(1)在 Mysql 配置向导启动界面,选择配置方式“Detailed Configuration”,单击“Next”。(2)选择服务器安装类型界面选择“Server achine
39、”,单击“Next”。(3)选择安装类型为“Transactional Database Only”,单击“Next”。(4)选择允许 Mysql 的最大数目为“Online Transaction Processing(OLTP)”,单击“Next”。(5)设置 Mysql 端口。选中“Enable TCP/IP Networking”选项。设置 Port Number 值为 3306,单击“Next”。(6)设置字符集。选择第三项,在 Character Set 下拉框里选择“gbk”,单击“Next”。(7)注册数据库。选中“Install As Windows Service”选项,单
40、击“Next”。(8)权限设置。“New root password”项填写新密码,“Confirm”重输一次密码。设置完毕单击“Next”按钮直至出现 finish,单击“finish”。Mysql 安装完毕19。如图 7。 . . . 13 / 86图 7 Mysql 安装完成 . . . 14 / 86第四章第四章 手机水电费查询系统分析手机水电费查询系统分析4.14.1 系统需求分析系统需求分析随着人们生活水平的不断提高,手机逐步成为被大众依赖的通信工具,如果能够开发出一套水电费查询系统使用户能够使用手机就进行信息查询、缴纳与设置,不仅给用户带来方便,也可以给水电部门节约成本。所以本系
41、统无论从实用性还是从市场前景方面考虑,都是非常必要的20。4.24.2 系统功能分析系统功能分析根据使用对象不同,系统可以实现不同的功能。当使用对象为抄表员时,可以实现登录、抄表的功能。当使用对象为普通用户时可以完成登录、缴费、查询、设置账户信息等功能。1、抄表员首先,当抄表员进入系统,输入正确的用户账号和密码后即可登录成功,用户不存在或密码不正确均不可登录并提示错误。登录成功后的抄表员可以输入用户的水电费使用情况,系统会将数据发送给数据库端,并将数据添加到用户的消费表中。2、普通用户首先,和抄表员一样,当用户进入系统,输入正确的用户账号和密码后即可登录成功,用户不存在或密码不正确均不可登录并
42、提示错误。用户登录成功后可以进行功能选择,可供选择的功能有缴费、查询和设置账户信息。当用户选择缴费功能时,系统会自动获取当前时间,提醒用户所欠的水费、电费、账户余额以与银行卡余额,用户可根据信息提示输入所缴纳的费用。当用户选择查询功能,用户可进行个人信息查询、水电费消费记录查询和缴费记录查询。个人信息包括用户名、用户账号、联系、账户余额和银行卡余额。如果进行消费和缴费记录查询,用户输入时间即可查到相关信息。如果想查全部消费或缴费信息就无需输入时间;想查一年的信息输入年份,如“2011” ,就可以查到 2011 这一年的信息了; . . . 15 / 86想查某个月的信息就输入年份和月份,如“2
43、01104” ,就可以查到 2011 年 4 月份的信息了。当用户需要修改登录密码、用户、联系时,可以在登录后选择设置账户信息功能。如选择修改密码,用户只要输入正确的原始密码、新密码以与新密码确认就可修改成功。4.34.3 系统架构系统架构系统采用 MVC 设计模式。视图层负责和用户交互,然后把模型层的数据显示到页面上,当模型层变化的时候,能实现自动更新,它也负责把视图层的数据传送给控制器。控制器主要负责程序的跳转,处理客户的请求,调用模型层进行处理。模型层负责执行具体的商业逻辑21。具体来说,就是客户端程序通过 向服务器端发送请求,服务器接受并解析请求后向数据库查询相关信息,然后将结果返回给
44、客户端。系统整体架构如图 8。图 8 系统整体架构在客户端和服务器端交换的信息过程中,需要交互很多信息,但是通过方式与服务器进行网络传输时只能传输二进制数据。所以需要把对象进行序列化,因此需要把要交互的信息以序列化的方式编写成多个类,这些类是客户端与服务器端都需要使用的。一个手机的 MIDP 客户端开发包和服务器端开发包都需要调用通用的信息传递包。如图 9。图 9 交互信息 . . . 16 / 86第五章第五章 公共类设计公共类设计为了提高系统的可维护性和可重用性,可以设计一些公共类,在客户端程序和服务器端同时使用,在这些类中对对象进行序列化和反序列化。5.15.1 用户信息类的设计用户信息
45、类的设计5.1.1 类图图 10UserInfo 类图5.1.2 类的结构用户信息类 UserInfo 用来封装用户的用户 ID、用户密码、用户名、银行卡号、 、账户余额、性别等信息。private String userID = ;/用户 IDprivate String password = ;/用户密码private String userName = ;/用户名private String bankID = ;/银行卡号private String phoneNum = ;/private float accountmoney =0;/账户余额private int sex = 0;
46、/性别 . . . 17 / 865.1.3 核心代码实现用户信息类 UserInfo 的核心代码为:public String getUserID() return userID;public void setUserID(String userID) this.userID = userID;/Password、userName、bankID、phoneNum、accountmoney、sex 的实现方法与 UserID 方法一样,省略public byte serialize() throws IOException /序列化信息ByteArrayOutputStream bout =
47、new ByteArrayOutputStream();DataOutputStream dataStream = new DataOutputStream(bout);dataStream.writeUTF(userID);/序列化 userID/password、bankID、userName、sex、phoneNum、accountmoney 省略return bout.toByteArray();public void deserialize(byte data) throws IOException /反序列化信息ByteArrayInputStream bin = new Byte
48、ArrayInputStream(data);DataInputStream dataStream = new DataInputStream(bin);userID = dataStream.readUTF();/反序列化 userID/password、bankID、userName、sex、phoneNum、accountmoney 省略5.25.2 抄表员信息类的设计抄表员信息类的设计5.2.1 类图图 11WorkerInfo 类图 . . . 18 / 865.2.2 类的结构抄表员信息类 WorkerInfo 用来封装抄表员的用户账号、用户密码、用户名、性别、等信息。privat
49、e String workerID = ;/用户账号private String workerPassword = ;/用户密码private String workerName=;/用户名private String sex = ;/性别private String phoneNum = ;/5.2.3 核心代码实现抄表员信息类 WorkerInfo 的核心代码为:public void setworkerID(String workerID) this.workerID = workerID;public String getworkerID() return workerID;/ wor
50、kerPassword、workerName、sex、phoneNum 的实现方法与 workerID 方法一样,省略public byte serialize() throws IOException /序列化信息ByteArrayOutputStream bout = new ByteArrayOutputStream();DataOutputStream dataStream = new DataOutputStream(bout);dataStream.writeUTF(workerID );/序列化 workerID /workerPassword、workerName、sex、ph
51、oneNum 省略public void deserialize(byte data) throws IOException /反序列化信息ByteArrayInputStream bin = new ByteArrayInputStream(data);DataInputStream dataStream = new DataInputStream(bin);workerID = dataStream.readUTF();/反序列化 workerID /workerPassword、workerName、sex、phoneNum 省略5.35.3 银行卡类的设计银行卡类的设计5.3.1 类图
52、 . . . 19 / 86图 12BankcardInfo 类图5.3.2 类的结构银行卡类 BankcardInfo 用来封装用户银行卡的银行卡号、持卡人、卡余额、等信息。private String bankID = ;/银行卡号private String userName = ;/持卡人private String money = ;/卡余额private String phoneNum = ;/5.3.3 核心代码实现银行卡类 BankcardInfo 的核心代码为:public void setbankID(String bankID) this.bankID = bankID;
53、public String getbankID() return bankID;/userName、money、phoneNum 的实现方法与 bankID 方法一样,省略public byte serialize() throws IOException /序列化ByteArrayOutputStream bout = new ByteArrayOutputStream();DataOutputStream dataStream = new DataOutputStream(bout);dataStream.writeUTF(bankID );/序列化 bankID/userName、mon
54、ey、phoneNum 省略public void deserialize(byte data) throws IOException /反序列化 . . . 20 / 86ByteArrayInputStream bin = new ByteArrayInputStream(data);DataInputStream dataStream = new DataInputStream(bin);bankID = dataStream.readUTF();/反序列化 bankID/userName、money、phoneNum 省略5.45.4 缴费类的设计缴费类的设计5.4.1 类图图 13
55、PayInfo 类图5.4.2 类的结构缴费类 PayInfo 用来封装缴费信息的账单号、用户 ID、缴费日期、水费、电费等信息。private int billID = 0;/账单号private String userID = ;/用户 IDprivate String billDate = ;/缴费日期private float shuifei = 0;/水费private float dianfei = 0;/电费5.4.3 核心代码实现缴费类 PayInfo 的核心代码为:public void set userID (String userID) . . . 21 / 86this
56、. userID = userID;public String ge userID () return userID;/billDate、shuifei、dianfei 的实现方法与 bankID 方法一样,省略public byte serialize() throws IOException /序列化ByteArrayOutputStream bout = new ByteArrayOutputStream();DataOutputStream dataStream = new DataOutputStream(bout);dataStream.writeUTF(userID);/序列化
57、bankID/billDate、shuifei、dianfei 省略public void deserialize(byte data) throws IOException /反序列化ByteArrayInputStream bin = new ByteArrayInputStream(data);DataInputStream dataStream = new DataInputStream(bin); userID = dataStream.readUTF();/反序列化 bankID/billDate、shuifei、dianfei 省略5.55.5 消费类的设计消费类的设计5.5.1
58、 类图图 14 ConsumeInfo 类图5.5.2 类的结构消费类 ConsumeInfo 用来封装消费信息的账单号、用户 ID、消费日期、消费的水费、消费的电费等信息。private int billID =0;/账单号 . . . 22 / 86private String userID = ;/用户 IDprivate String bill_date = ;/消费日期private float shuifei =0;/消费的水费private float dianfei =0;/消费的电费5.5.3 核心代码实现消费类 ConsumeInfo 的核心代码如下:public void
59、 set billID (String billID) this. billID = billID;public String ge billID () return billID;/ bill_date、shuifei、dianfei 的实现方法与 bankID 方法一样,省略public byte serialize() throws IOException /序列化ByteArrayOutputStream bout = new ByteArrayOutputStream();DataOutputStream dataStream = new DataOutputStream(bout)
60、;dataStream.writeUTF(billID);/序列化 bankID/bill_date、shuifei、dianfei 省略public void deserialize(byte data) throws IOException /反序列化ByteArrayInputStream bin = new ByteArrayInputStream(data);DataInputStream dataStream = new DataInputStream(bin);billID = dataStream.readUTF();/反序列化 bankID/bill_date、shuifei
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 村民饮水协议书
- 2025年上海外服面试试题及答案
- 杨幂签约协议书
- 果实转让协议书
- 架管租赁协议书
- 查询离婚协议书
- 2025年vb考试试题及答案中职
- 2025年珠算三级试题及答案
- 2025年变电专业考试题库技巧及答案
- 2025年sql多选题试题及答案
- 车抵工资协议书
- 软式内镜清洗消毒技术规范2025
- 严重过敏反应诊断和临床管理专家共识(2025)解读课件
- 洗涤厂安全知识培训
- 锅炉原理课程设计答辩
- 2025年秋季学期特殊教育教学工作计划
- 基层护理进修后回院汇报
- 员工入职申请表(完整版)
- 《胸痛中心质控指标及考核标准》(第三版修订版)
- 2025年保安证考试模拟测试及答案
- 浙江省杭州市2024-2025学年高三上学期期末学业水平测试语文试题(含答案)
评论
0/150
提交评论