基于J2ME的手机水电费查询系统的设计与实现(软件类)毕业论文

上传人:s**** 文档编号:87380621 上传时间:2022-05-09 格式:DOC 页数:87 大小:3.50MB
返回 下载 相关 举报
基于J2ME的手机水电费查询系统的设计与实现(软件类)毕业论文_第1页
第1页 / 共87页
基于J2ME的手机水电费查询系统的设计与实现(软件类)毕业论文_第2页
第2页 / 共87页
基于J2ME的手机水电费查询系统的设计与实现(软件类)毕业论文_第3页
第3页 / 共87页
点击查看更多>>
资源描述
. . . 毕业论文(设计)BACHELOR DISSERTATION论文题目:基于奇异值分解的编码捕获方法 81 / 87基于J2ME的手机水电费查询系统的设计与实现中 文 摘 要J2ME是JAVA的一个重要分支,不仅保留了JAVA的传统特性,更是将JAVA的优势扩展到了无线领域。它主要针对消费型和嵌入式设备而开发,克服了这些小型设备电力、网络等物理环境相对较弱的缺点,为这些设备提供资源利用率高的可开发环境。随着生活中小型嵌入式设备利用率的提高,J2ME也越来越受到大家的青睐。本文是在深入研究J2ME平台的基础上,设计并实现了基于J2ME的手机水电费查询系统。该系统总体上采用MVC3层架构,基于 协议。其中手机客户端使用J2ME语言作为编程平台,实现各种界面显示;控制层 Communication负责程序跳转,处理客户端的请求,调用模型层进行处理;服务器端采用Mysql数据库,以JDBC作为数据连接技术。运用通用分组无线业务技术,本系统可以使手机终端实现几乎所有柜台功能,包括普通用户的缴费、各种信息查询、个人信息修改,抄表员的抄表功能等。做到了可随时随地查询所需的水电费信息,突破了目前只能到水电部门缴费、查询的现状,能快速完整地开发出高效GPRS应用。本系统的实现为E时代的用户提供了更多便利。关键词:水电费查询;J2ME;MVC;JDBC;Servlet;Mysql;通用分组无线业务The Design and Implementation ofMobile Phone Utilities Inquiring SystemBased on J2MEABSTRACTJ2ME 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,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 whole ,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 terminal 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 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.KEY WORD:Utilities iquiring;J2ME;MVC;JDBC;Servlet;Mysql;GPRS目 录第一章前言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数据库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第五章公共类设计155.1 用户信息类的设计155.1.1 类图155.1.2 类的结构155.1.3 核心代码165.2 抄表员信息类的设计165.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 概念设计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.5.3 核心代码407.6 查询功能的设计与实现417.6.1 界面设计417.6.2 设计思路427.6.3 核心代码437.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 核心代码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第一章 前言1.1 开发背景随着移动通信技术的突飞猛进,移动开发慢慢成为开发者关注的热点。J2ME专为嵌入式/移动设备而开发,是嵌入式/移动应用平台的王者,它把JAVA的使用围扩展到所有的电子设备开发上。所以,J2ME是本系统开发语言的第一选择1。随着人们生活水平质量的提高,传统的水电费缴纳方式已不能满足人们的要求,特别是当消费者对水电费结算产生质疑时,水电费详单的查询就显得非常重要。目前,国居民的水电费都是到柜台进行缴纳和查询,如何才能够给客户提供更方便的服务成为水电部门面临的重要问题之一。众所周知,由于移动通信突飞猛进的发展和手机智能化程度的加强,手机在日常生活中得到广泛应用,移动开发也成为软件开发的热点。因此,利用手机的便捷性是解决问题的有效途径。利用本系统,用户和抄表员可以随时随地进行水电费的相关操作,如普通用户的缴费、信息查询、信息修改,抄表员的抄表等。而我国移动用户数量居世界首位,移动终端的硬件性能也在不断提高2。所以本系统的研究与实现具有很大的应用价值和市场前景。1.2 项目的主要研究工作本项目要完成的任务即是设计一个系统,基于协议,使用J2ME语言作为编程平台,结合Mysql数据库实现普通用户的缴费、信息查询、信息修改,抄表员的抄表等,做到可随时随地查询所需的水电费信息。系统可以用手机模拟器进行模拟,最终可以在手机上利用GPRS技术成功运行。第二章 理论基础2.1JAVA2.1.1JAVA概念JAVA是一种重要的编程语言,是由Sun Microsystems公司推出的,已经在世界围被软件开发商所接受。很多团队将JAVA作为通用编程语言,是因为JAVA的易于编程和安全特性使用户可以快速地产生工作代码,而多线程支持符合时新的基于网络和图形用户界面的应用程序,这些应用程序必须同时参加多个任务,同时异常处理机制则简化了错误情况的处理。尽管JAVA的建工具很强大,但它仍然是一门简单的语言,程序员能够很快地上手。又因为JAVA的可移植性,程序员只要编写一次代码,不必关心应用程序在各个软硬件平台上的移植问题。JAVA不仅是编程语言,还是一个程序开发和发布平台,给程序员提供了许多工具,如编译器、解释器、文档生成器、文件打包工具和运行时环境(JRE,JAVA runtime environment)等3。目前针对不同的市场目标和设备进行定位,JAVA被划分成J2EE、J2SE、J2ME三个平台。J2EE,即JAVA2 Enterprise Edition,主要是为企业提供一个应用服务器的运行和开发平台,其本身是一个开放的标准,任何软件厂商都可以推出自己的符合J2ee标准的产品,使用户可以有多种选择。J2SE,即JAVA2 Standard Edition,主要是为台式机和工作站提供一个开发和运行的平台。J2ME,即JAVA2 Micro Edition,主要是面向嵌入式设备和消费电子产品,使得JAVA程序能够在手机、机顶盒、PDA等小型设备上运行。2.1.2JAVA主要特点1、跨平台与平台无关可以说是JAVA最大的优势。当其他语言编写的程序面临因为操作系统的变化、处理器升级以与核心系统资源的变化而导致程序出现错误或无法运行的困境时,JAVA虚拟机成功地解决了这个问题,实现了“一次编成,处处运行”的目标4。 2、多线程线程是程序中一个单一的顺序控制流程,所谓的多线程就是指在单个程序中同时运行多个线程完成不同的工作。线程机制是JAVA的又一大亮点,通过使用多线程可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易实现网络上实时的交互行为,通过提高资源使用效率进而提高系统的效率。3、简单一方面JAVA语言的语法与其他语言很接近,所以大多数学者很容易学习和使用JAVA。另一方面JAVA丢弃了其他语言中很少使用的、令人难以理解的的特性。并且JAVA语言提供了自动垃圾回收机制,程序员不必单独考虑存管理的问题5。4、丰富的类库和网络功能JAVA类库就是一些已写好、可供调用的类的集合,JAVA将这些类整理在一个个包中,每一包里都包含一些特定功能的类和接口,当这些包被用import引入程序后,用户就可以访问包中类和接口,不需要再重新设计。2.2J2ME2.2.1J2ME概念美国Sun公司是IT界为全球用户提供最具实力的硬件、软件与服务的领先供应商,而J2ME是Sun公司专门针对嵌入式、消费类电子产品推出的开发平台,是一种高度优化的运行环境。J2ME的另一种称法是JAVA ME,是JAVA 的一个组成部分,与J2SE、J2EE并称。由于JAVA的跨平台性,遵循J2ME规开发的JAVA程序可以移植到各种不同的小型电子设备上,允许移动无线设备之间共享应用程序。2.2.2J2ME架构J2ME架构从上至下分为简表(Profile)、配置(Configuration)和主机操作系统(HostOperating System)6,如图1。图1J2ME架构1、简表简表(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 Virtual Machine)上,而配置决定了所使用的JVM。配置包括核心库、虚拟机等。当前J2ME存在两种配置:CDC(Connected Device Configuration,连接设备配置)、CLCD(Connected limited device configuration,有限连接设置配置)。CDC面向强大的可以间歇式地与网络连接的设备,即有稳定的电源供应、设备性能强劲的设备;CLCD面向微型设备和嵌入式设备。JAVA虚拟机是所用JAVA程序的基础,在手机出厂前已经固化在手机中了7。配置与简表一起提供了一个面向移动信息设备的完整J2ME应用程序运行环境。3、主机操作系统 主机操作系统是在物理计算机上运行的操作系统,在它之上运行虚拟机软件。2.2.3J2ME开发流程1、J2ME开发的第一步就是要详细了解客户的需求,针对客户的需求来编写适合客户的应用软件。2、配置自己的开发环境,然后进行编码,生成.JAVA文件。3、对.JAVA文件进行编译,生成.class文件。4、打包成.jar文件,下载发布到移动设备上8。开发步骤如图2。 图2J2ME开发步骤2.2.4J2ME的优势与J2SE和J2EE相比,J2ME不是一个单独的技术规,而是一系列技术规的总称,其总体的的运行环境和目标也更加多样化,具有独特的优势。首先,J2ME是为了使用有限的电力、网络连接以与有限图形界面设计用户的开发,通过剪裁某些小型设备上不需要的功能,以达到减少JAVA虚拟机体积以与相应运行库体积的目的,目标是为小型设备提供资源利用率高的可开发环境。其次,J2ME将JAVA的“一次编写,处处运行”的设计理念扩展到无限领域。对于程序开发员而言,只要手机安装了JAVA虚拟机即可执行JAVA程序,提高程序的一致性;对用户而言,也不必担心下载的程序无法运行。最后,无线设备上大多数的现有程序都是置的且功能固定的,没有制造商的参与很难进行软件安装与升级。J2ME提供了动态部署机制,可以通过无线网络下载和安装程序。不仅为厂商和开发者提供了低成本的软件产品发布方式,还允许用户按需动态地下载并个性化定制自己的程序。2.3Mysql数据库2.3.1 数据库数据(Data)是用物理符号记录下来的可以识别的信息,不同的物理符号体现出数据的不同表现形式,如数字、图形、文字等,而数据库(DB,Database)就是长期存储在计算机的数据集合9。数据库的系统由操作系统、数据库管理系统、应用开发工具、应用系统/软件和数据库系统管理员组成,其系统图如下图3。图3 数据库系统2.3.2Mysql数据库Mysql是众多数据库中的一种,它是一个小型开放源代码的关系型数据库管理系统,最常用的数据库管理语言是结构化查询语言SQL。2.3.3Mysql数据库特点与其他数据库相比,Mysql数据库具有以下特点:1、是目前市场上运行速度最快的数据库系统。2、提供TCP/IP、ODBC和JDBC等多种数据库连接途径。3、同时访问数据库的用户数量不受限制。4、可以处理上千万条记录。5、支持多线程。正因为Mysql具有的这些特点,所以被许多中小型选为数据库10。2.4 关键技术2.4.1 多线程技术线程是程序中一个单一的顺序控制流程,每个线程共享其所附属的进程的所有资源,多线程就是指在单个程序中同时运行多个线程完成不同的工作。当多线程执行时,该程序对应的进程就有多个控制流在同时运行,意味着一个程序的多条执行语句同时执行。多线程技术使系统速度更快、通信实现更容易11。2.4.2 序列化和反序列化1、序列化数据序列化是将对象转换为二进制数据流的一种方法,这种转换可以使对象保存在文件中或在网络中传输。2、反序列化反序列化是序列化的相反过程,即在另一程序中打开字节流并重构对象。这两个过程结合起来使得数据能被轻松传输和存储,简化了对象持久化的实现。2.4.3 无线网络开发技术1、GCF由于受移动信息设备处理能力和存的限制,J2ME有自己的联网框架通用连接框架(GCF,Generic Connection Framework),由CLDC定义。层次结构如图4。图4 GCF层次结构2、 连接在MIDP规中规的设备是必须支持 和 S的。 属于无状态协议,其工作机制是请求和响应,也就是说当用户输入了一个的地址,其实质就是发送了一个请求,那这时浏览就会给予响应,返回给用户所需要的页面。一个 连接会经过三种状态:setup、connected、closed。当一个 被打开,但请求未发送之前为setup状态,这时应用程序设置与服务器进行连接的各种信息,用setRequestMethod和setRequestProperty两种方法完成。在 被打开和被关闭之间为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。JDBC代表JAVA数据库互联,包含一组JAVA语言编写的类和接口,是JAVA数据库应用的基础。它定义了一个底层的API,用来支持独立任何特定SQL实现基本SQL功能。其主要特点是与任何关系式数据库协同工作的方式完全一样,在许多不同的数据库连接模块的顶端提供了统一的接口,也就是说,访问所有数据库时无需分别写程序。在创建数据库之前必须先加载JDBC驱动,然后才可以创建数据库连接,与数据库建立连接后,应用程序在此连接上可创建SQL语句对象,以便执行用户定义的特定SQL语句。执行后的SQL语句将返回结果,查询语句返回的是一个结果集对象,然后用next()方法在记录中移动游标定位结果集中的记录。最后关闭数据库连接14。JDBC使用流程如图5。图5JDBC连接数据库流程2.4.6 域名解析技术IP地址是网路上标识站点的数字地址,其重要性可想而知,但比起IP地址,现实生活中在使用网络资源时人们更熟识的是域名。例如学院的IP为“221.130.162.35”,而我们通常用域名“”来代替IP地址,这是便于记忆的一种方式。反过来说,当我们注册了域名后,只对自己的域名具有使用权,只有解析成IP才可使用。域名的解析工作由DNS服务器完成,分为静态和动态两种。本系统所运用的是动态域名解析,即将固定的互联网域名和动态IP地址实时对应解析的服务。相对于传统的静态DNS而言,它可以将一个固定的域名解析到一个动态的IP地址,不管用户何时何地、以何种方式上网、IP地址是否变化,都能保证通过一个固定的域名就能访问到用户的计算机15。第三章 系统的配置与使用开发之前,首先准备一下自己的开发环境。设计本系统时需要硬件和软件两方面的配置。3.1 硬件环境配置安装Windows xp操作系统的三星笔记本电脑一台,开通GPRS、型号为OPPO A125的手机一部。3.2 软件环境配置3.2.1JDK的安装与设置1、JDK的安装JDK(JAVA Development Kit)是JAVA开发工具包,是一切JAVA应用程序的基础。其安装步骤如下所述:(1)下载JDK安装文件JDK1.7.0。(2)解压文件,双击安装文件jdk1.7.0.exe,单击“接受”按钮进入下一步。(3)选择安装容与路径。中间列表是要安装的可选功能,单击每个可选功能左边的按钮,将弹出下拉菜单,我们选择系统默认的第一项“此功能将安装在本地硬盘驱动器上”。安装路径选择“D:JDK”。设置好安装容与路径后,单击“下一步”,系统开始在选择的安装路径下安装所选的容。 (4)安装JRE。安装方法和(3)中所述一样,安装目录为“D:JDKjre”。设置好安装容与路径后,单击“下一步”,系统开始在选择的安装路径下安装所选的容。系统提示提示JDK安装完成16。2、设置环境变量设置环境变量的方法如下所述:(1)重启电脑,右击“我的电脑”,选择“属性”命,打开“系统属性”,选择“高级”选项卡,单击“环境变量”按钮,打开“环境变量”对话框。(2)单击“用户变量”中的“新建”按钮,打开“新建系统变量”对话框,将变量名设置为JAVA_HOME,变量值设置为JDK安装目录“D:JDK”。(3)新建一个系统变量,变量名设置为classpath,变量值设置为“.D:JDKlib;D:JDKlibtools.jar;D:JDKlibservlet-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)解压文件到“D:tomcat”下即可。2、设置环境变量(1)按3.2.1中的方法,新建用户变量,其中变量名设置为TOMCAT_HOME,变量值设置为“D:tomcat”。(2)修改用户变量classpath,在变量值后面添加“%TOMCAT_HOME%commonlibservlet-api.jar”。(3)修改用户变量path,在变量值后面添加“%TOMCAT_ HOME%bin”18。3.2.3Eclipse的安装1、下载Eclipse压缩包。2、将压缩包进行解压,双击安装文件Eclipse.exe,安装过程中导入JDK的安装目录即可。3.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”,单击“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”选项,单击“Next”。(8)权限设置。“New root password”项填写新密码,“Confirm”重输一次密码。设置完毕单击“Next”按钮直至出现finish,单击“finish”。Mysql安装完毕19。如图7。图7 Mysql安装完成第四章 手机水电费查询系统分析4.1系统需求分析随着人们生活水平的不断提高,手机逐步成为被大众依赖的通信工具,如果能够开发出一套水电费查询系统使用户能够使用手机就进行信息查询、缴纳与设置,不仅给用户带来方便,也可以给水电部门节约成本。所以本系统无论从实用性还是从市场前景方面考虑,都是非常必要的20。4.2系统功能分析根据使用对象不同,系统可以实现不同的功能。当使用对象为抄表员时,可以实现登录、抄表的功能。当使用对象为普通用户时可以完成登录、缴费、查询、设置账户信息等功能。1、抄表员首先,当抄表员进入系统,输入正确的用户账号和密码后即可登录成功,用户不存在或密码不正确均不可登录并提示错误。登录成功后的抄表员可以输入用户的水电费使用情况,系统会将数据发送给数据库端,并将数据添加到用户的消费表中。2、普通用户首先,和抄表员一样,当用户进入系统,输入正确的用户账号和密码后即可登录成功,用户不存在或密码不正确均不可登录并提示错误。用户登录成功后可以进行功能选择,可供选择的功能有缴费、查询和设置账户信息。当用户选择缴费功能时,系统会自动获取当前时间,提醒用户所欠的水费、电费、账户余额以与银行卡余额,用户可根据信息提示输入所缴纳的费用。当用户选择查询功能,用户可进行个人信息查询、水电费消费记录查询和缴费记录查询。个人信息包括用户名、用户账号、联系、账户余额和银行卡余额。如果进行消费和缴费记录查询,用户输入时间即可查到相关信息。如果想查全部消费或缴费信息就无需输入时间;想查一年的信息输入年份,如“2011”,就可以查到2011这一年的信息了;想查某个月的信息就输入年份和月份,如“201104”,就可以查到2011年4月份的信息了。当用户需要修改登录密码、用户、联系时,可以在登录后选择设置账户信息功能。如选择修改密码,用户只要输入正确的原始密码、新密码以与新密码确认就可修改成功。4.3系统架构系统采用MVC设计模式。视图层负责和用户交互,然后把模型层的数据显示到页面上,当模型层变化的时候,能实现自动更新,它也负责把视图层的数据传送给控制器。控制器主要负责程序的跳转,处理客户的请求,调用模型层进行处理。模型层负责执行具体的商业逻辑21。具体来说,就是客户端程序通过 向服务器端发送请求,服务器接受并解析请求后向数据库查询相关信息,然后将结果返回给客户端。系统整体架构如图8。图8系统整体架构在客户端和服务器端交换的信息过程中,需要交互很多信息,但是通过方式与服务器进行网络传输时只能传输二进制数据。所以需要把对象进行序列化,因此需要把要交互的信息以序列化的方式编写成多个类,这些类是客户端与服务器端都需要使用的。一个手机的MIDP客户端开发包和服务器端开发包都需要调用通用的信息传递包。如图9。图9 交互信息第五章 公共类设计为了提高系统的可维护性和可重用性,可以设计一些公共类,在客户端程序和服务器端同时使用,在这些类中对对象进行序列化和反序列化。5.1 用户信息类的设计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; /性别5.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 = 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 ByteArrayInputStream(data);DataInputStream dataStream = new DataInputStream(bin);userID = dataStream.readUTF();/反序列化userID/password、bankID、userName、sex、phoneNum、accountmoney省略5.2 抄表员信息类的设计5.2.1 类图图11WorkerInfo类图5.2.2 类的结构抄表员信息类WorkerInfo用来封装抄表员的用户账号、用户密码、用户名、性别、等信息。private 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;/ workerPassword、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、phoneNum省略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.3 银行卡类的设计5.3.1 类图图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;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、money、phoneNum省略public void deserialize(byte data) throws IOException /反序列化ByteArrayInputStream bin = new ByteArrayInputStream(data);DataInputStream dataStream = new DataInputStream(bin);bankID = dataStream.readUTF();/反序列化bankID/userName、money、phoneNum省略5.4 缴费类的设计5.4.1 类图图13 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) this. 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);/序列化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.5 消费类的设计5.5.1 类图图14 ConsumeInfo类图5.5.2 类的结构消费类ConsumeInfo用来封装消费信息的账单号、用户ID、消费日期、消费的水费、消费的电费等信息。private int billID =0;/账单号private String userID = ;/用户IDprivate String bill_date = ;/消费日期private float shuifei =0;/消费的水费private float dianfei =0;/消费的电费5.5.3 核心代码实现消费类ConsumeInfo的核心代码如下:public void 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);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、dianfei省略第六章 数据库详细设计6.1概念设计概念模型是面向现实世界的,就是在理解数据需求的基础上,确定在数据库中存储和处理什么数据22。6.1.1 实体集与其属性根据需求,本系统需要五个实体集,分别是:用户、抄表员、银行卡、消费、缴费。属性是实体的重要部分,本数据库各实体集属性如下所述。(1)用户实体实体集用户的属性有:用户账号、密码、用户名、银行卡号、性别、联系、账户余额。实体图如图15。图15 用户实体图(2)抄表员实体实体集抄表员的属性有:用户账号、密码、用户名、性别、联系。实体图如图16。图16 抄表员实体图(3)银行卡实体实体集银行卡的属性有:银行卡号、持卡人、银行卡余额、联系。实体图如图17。图17 银行卡实体图(4)消费实体实体集消费的属性有:账单号、用户账号、消费日期、水费、电费。实体图如图18。图18 消费实体图(5)缴费实体实体集缴费的属性有:账单号、用户账号、缴费日期、水费、电费。实体图如图19。图19缴费实体图6.1.2 系统E-R图联系现实生活,五个实体集之间的关系可以描述为:(1)当抄表员抄表之后,相关信息就自动插进水电费消费表中,而一个抄表员不止抄一条信息,每次消费却只需要一个抄表员即可完成,所以两者之间联系为抄表,关系类型为1:n。(2)一个用户会有多次消费,而每次消费都是一个用户完成的,所以用户和消费之间的关系为消费,关系类型为1:n。(3)一个用户拥有一银行卡,而每卡可以为多个用户支付水电费,所以用户和银行卡之间是拥有的关系,关系类型为1:n。(4)一个用户会有多次缴费,而每次缴费都是一个用户完成的,所以用户和缴费之间的关系为支付,关系类型为1:n。根据以上分析与设计,系统的E-R图如图20。图20E-R图6.2 逻辑设计逻辑设计即是用简单的方法二维表格,在计算机中组织、存储、处理和管理数据。将E-R模型转换为关系模型的对应关系为:实体集和联系转换为同名关系表;实体实例转换为元组,也就是行;属性转换为列,属性值为列值。根据转换规则,联系类型为1:n的联系转换为关系表时,关系的码为n端实体集的码,而一样码的表需要合并,所以本系统的联系都无需转换为关系表了23。根据分析,本系统一共需要5表,分别为:用户、抄表员、银行卡、消费、缴费。1、用户表(1)表的设计如表1。表1 用户表(userinfo)(2)创建用户表的SQL语句:CREATE TABLE USERINFO ( USERID VARCHAR(20) NOT NULL PRIMARY KEY, USERNAME VARCHAR(20), PASSWORD VARCHAR(10), BANKID VARCHAR(30) , SEXINT(2), PHONENUM VARCHAR(20) ACCOUNTMONEY VARCHAR(20);FOREIGN KEY(BANKID) REFERENCES BANKCARD(BANKID);INSERT INTO USERINFO VALUES(1000,WCHM,1000,1234567, 0,);2、抄表员表(1)表的设计如表2。表2 抄表员表(workerinfo)(2)创建抄表员表的SQL语句:CREATE TABLE WORKERINFO (WORKERID VARCHAR(20) NOT NULL PRIMARY KEY,WORKERNAME VARCHAR(20),WORKERPASSWORD VARCHAR(30), SEXINT(2)PHONENUM VARCHAR(20);INSERT INTO WORKERINFO VALUES(10000,WCHM,10000, 0,);3、银行卡表(1)表的设计如表3。表3 银行卡表(bankcard)(2)创建银行卡表的SQL语句:CREATE TABLE BANKCARD(BANKID VARCHAR(20) NOT NULL PRIMARY KEY,USERNAME VARCHAR(20),MONEY FLOAT(10), PHONENUM VARCHAR(15);INSERT INTO BA
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!