版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要随着计算机网络和多媒体技术的迅猛发展,Internet上的Web应用一直呈现快速的增长,其中很大一部分都是HTTP的请求服务。由于HTTP请求的增长过快,因此导致许多的网站的web服务器面临着超载的问题,主要表现是影响时间过长从而导致拒绝服务。Web服务请求的响应时间主要由两个因素决定,网络传输的质量和web服务器的处理性能。近几年来,网络传输的服务质量(qos)技术研究已经相对比较成熟,然而,如果应用层的web服务器服务质量不能保证的话,那么,在服务器过载的情况下,即使网络传输的质量能够得到很好的保证,仍然有可能被拒绝服务,或者响应时间大大的延长而导致的“拒绝服务”的效果。由此可见,由于服务器的超载问题日益严重,web服务器已经在某种程度上成为实现端到端服务质量控制的瓶颈。因此,如何实现web服务器系统的服务质量控制,为用户提供满意的服务性能,已经成为一个迫切需要解决的问题。本课题对webqos控制技术进行了简单的研究,主要是解决web服务应用中为不同级别的客户提供分类服务的问题,使web服务器资源更合理的分配,使有限的资源产生最大的使用率。关键词:信息时代,学校教学,网络,网络教学,课堂教学ABSTRACTWiththedevelopmentofthecomputernetworkandmultimediatechnologies,theWebapplicationsontheInternetisincreasingexplosively.MostoftheWebapplicationsaretheHTTPrequests.Manywebsiteshadtofacetheproblemoftheserverloading.ThemainsymptomisthatusershavetowaitaverylongtimefortheHTTPresponseandeventheHTTPrequestswillberejected.Therespondingtimeisgenerallyinfluencedbytwoelements;thequantityoftheserviceofnetwork’stransferlayerandtheperformanceofthewebserver.Recentlyyears,theresearchhasbeencarriedoutactivelyinthisfield.InconditionoftheserveroverloadingifanymeasurewasnottakenabouttheQOScontrolintheapplicationslayer,althoughtheQOSofthenetworktransferringtimebedelayedsolongthatleadsto“rejectrequest”result.SowecouldconcludethattheoverloadofthewebserverisbecomingthebotleneckoftheQOScontrol.Therefore,howtoapplythewebserverQOScontrolandprovidethecustomersthesatisfiedservices,hasbecometheimminenceproblemsthatmustbesetled.Inthispaper,wedosomeresearchofWebQoScontrolsimply,thestrategyofclassifiedserviceprovidethediffeniatedcustomersthediffeniatedservices.Ontheonehand,weproposeprototypesofcomprehensiveschedulingalgorithmsbasedoncombinationofSessionandcontent.Keyword:info-age,schoolinstruction,network,networkinstruction,classroominstruction.目录第1章绪论 11.1课题背景 11.2web技术的发展情况 11.3webserver 21.4课题设计的目标和来源 2第2章开发工具及环境 32.1c#技术 32.2。net运行环境 3第3章需求分析 53.1web服务器的基本需求 53.2http协议 73.3socket 113.4系统E-R图 13第4章系统的设计 164.1设计原则 164.2系统功能设计 164.3设计流程图 21第5章系统的实现与测试 275结论及毕业设计小结 53致谢 55参考文献 56第1章绪论1.1课题背景由于计算机网络和多媒体技术的迅猛发展,internet上的web应用一直呈现爆炸性增长的趋势。目前,web流量在internet总流量中所占的比例日益增加,已经成为internet上信息传输的主流。由于http请求的指数性增长,Internet上的许多热门站点都经常面临着服务器的超载问题,通常,人们期望的web站点的理想响应时间大约是1秒左右,这与人类的响应时间大体相当,研究表明,普通的web用户通常不会忍受超过10秒的等待时间。而根据网上的调查和zona研究中心的统计,一个电子商务网站必须保证其web用户在7秒内得到响应,否则将损失掉30%或者更多的用户。具体来说,web服务请求的响应时间主要由2个因素决定:网络传输的质量和服务器的处理性能。对web服务器而言,它需要为高级用户提供比低级用户更好的服务级别。所以,如何在web服务器及其系统中实现qos控制的机制与策略,为不同类型的用户或请求提供性能保证和服务分区,是目前web发展所迫切需要解决的问题,也是实现下一代网络qos控制不可缺少的关键环节。1.2web技术的发展情况国内外研究现状Webqos属于应用层的qos,它量度的是用户在与web站点进行交互时所感受到的服务性能。例如,下载时间,交易时间,服务器的可用性,遇到的错误等。由于web基础设施的复杂性,影响webqos的因素很多。实际上,webqos控制涉及到构成web的每一个元素,从网络技术和协议,到web服务器的硬件,软件体系结构。概括的讲,web服务供应商可以实施的web系统解决方案可以分为以下两类:1有区分的web服务机制与策略,它是通过定义用户或请求的类别,确定优先级,利用基于优先级的请求分配策略和资源监控与调度机制来保证不同的服务水平协议。2web服务器系统的体系结构设计。它的目的是确定能够向所有的web用户或者请求提供服务水平协议保证的正确体系结构,可分为三个方面:通过增加内存和CPU来扩大单个服务器的处理能力;在局域范围内通过复制服务器内容建立web集群来增强本地处理能力;在地理上的广域范围内通过复制服务器集群来扩大全局处理能力。实际上,上述两个方面也是当前webqos控制技术研究的两个主要切入点。集体来说,当前webqos技术的研究方向主要有:web服务器应用软件的qos支持技术。操作系统的webqos支持技术。中间件的webqos支持技术。Web服务器集群系统中的qos支持技术。Webqos控制策略和算法的性能分析和评价技术目前,国际上webqos控制技术的研究已经受到很多的网络研究者和著名公司的重视。许多著名的国际会议已经将webqos列为一个重要的会议议题。此外,许多生产第七层交换机的公司也不断推出能够在服务器集群环境中支持基于qos的负载均衡的硬件产品。1.3webserverWebservice平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Webservice,只要我们可以通过Webservice标准对这些服务进行查询和访问。Webservice平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,Webservice平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。在传统的分布式系统中,基于界面(interface)的平台提供了一些方法来描述界面、方法和参数。同样的,Webservice平台也必须提供一种标准来描述Webservice,让客户可以得到足够的信息来调用这个Webservice。最后,我们还必须有一种方法来对这个Webservice进行远程调用。这种方法实际是一种远程过程调用协议(RPC)。SOAPWebservice建好以后,你或者其他人就会去调用它。简单对象访问协议(SOAP)提供了标准的RPC方法来调用Webservice。实际上,SOAP在这里有点用词不当:它意味着下面的Webservice是以对象的方式表示的,但事实并不一定如此:你完全可以把你的Webservice写成一系列的C函数,并仍然使用SOAP进行调用。SOAP规范定义了SOAP消息的格式,以及怎样通过HTTP协议来使用SOAP。SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。第三章我们会讨论SOAP,并结识SOAP消息的各种元素。WSDL你会怎样向别人介绍你的Webservice有什么功能,以及每个函数调用时的参数呢?你可能会自己写一套文档,你甚至可能会口头上告诉需要使用你的Webservice的人。这些非正式的方法至少都有一个严重的问题:当程序员坐到电脑前,想要使用你的Webservice的时候,他们的工具(如VisualStudio)无法给他们提供任何帮助,因为这些工具根本就不了解你的Webservice。解决方法是:用机器能阅读的方式提供一个正式的描述文档。Webservice描述语言(WSDL)就是这样一个基于XML的语言,用于描述Webservice及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Webservice生成WSDL文档,又能导入WSDL文档,生成调用相应Webservice的代码。1.4课题设计的目标和来源毕业设计(论文)的题目为自适应webqos控制器。该课题来自在的计算机网络迅猛发展,internet上web应用的请求绝大多数是http请求服务,由于http服务请求的增长过快,所以服务器面临的超载问题。
第2章开发工具及环境2.1c#技术在企业计算领域,c#将会变成为用来编写新一代windows服务应用程序的主要语言。C#语言自c/c++演变而来,相比之下,它更加现代,简单,完全面向对象和类型安全。它是现代的编程语言。它简化和革新了c++中的类,名称空间,方法重载和异常处理等领域。屏弃了c++的复杂性,使它更方便使用,更少出错。C#减少了c++的一些功能,更方便使用,不再有宏,模板和多重继承。对企业级开发来说,有更好的使用环境。使编程更方便的新功能是严格的类型安全,版本控制,垃圾回收等。C#具有以下特征:简单,现代,面向对象,类型安全,版本控制,兼容,灵活等。2.2。net运行环境RESIN是Caucho公司的产品,RESIN的JSP引擎在速度、价格和稳定性方面表现十分出色,并且是完全免费的。运行时JSP文件位于RESIN文件夹下的DOC目录下,类库文件位于RESIN文件夹下的DOC文件夹下的Web-inf目录下。[4]直接运行RESIN文件夹下的BIN目录下的HTTP.EXE即可启动RESIN。测试运行,在浏览器的地址栏输入就可以看到RESIN的欢迎界面。第3章需求分析3.1财务管理系统的基本需求优秀的财务管理系统,应当帮助用户方便、迅捷、准确地对财务信息进行录入、查询、删除、修改及统计等操作,并且具有设计合理的数据库。根据上述要求将系统需求分解为如下的几点:1.用户基本信息的管理针对某系而设计的财务管理系统,主要财务信息为该系里的老师的经费管理信息。为了更好的管理,录入、删除每位老师的基本信息功能是十分必要的。按实际情况,基本信息可划分为:编号、姓名、性别、年龄、职称、单位。2.财务信息添加功能财务管理需要录入大量的财务数据,基本的收入及支出数据,所以需要良好的信息录入功能。录入功能应具备以下要求:·对每条收入信息的录入;·对每条支出信息的录入。3.财务信息查询功能当使用者面对大量的财务信息时,如何能快速、准确的查询信息是十分重要的需求。所以这就需要一个良好完善的查询功能来满足这个需求。查询功能应具备以下要求:·快速的查询信息·保证所查询信息准确无误·可按需求进行分类查询·多种选项的查询方式4.财务信息的删除功能当财务系统存在不必要或者错误的信息时,需要对这些信息进行删除,避免在数据库中存留大量无用数据,也为了避免在数据查询、统计中出现误差。删除功能应具备以下要求:·快速的删除信息·准确的删除信息,避免误删有用信息·安全稳定,避免破坏数据库数据5.财务信息的修改功能当出现录入信息错误时,或者需要更新某项数据时,就需要对特定的数据进行修改、更新,以保证数据信息的准确。所以就需要良好的修改功能满足这个需求。修改功能应具备以下要求:·快速的修改信息·按特定需求进行修改·修改安全、准确6.财务信息的统计功能财务管理需要对财务信息进行大量的统计,对个人收支的统计以及按类别的收支统计,全部收入、支出的统计。统计收支以保证收支的平衡,对个人经费管理,类别经费的管理都有重要的意义。所以统计功能是财务管理方面一个十分重要的需求功能。统计功能应具备以下要求:·快速的统计财务信息·统计结果要求准确·收支情况显示明确7.普通用户的对财务信息的查询功能财务管理系统包含着许多人员的财务信息,这些人员也需要对自己的财务情况进行查询了解,即可以方便普通用户对自己财务情况的了解也可以体现出财务管理的的透明性和公正性。这就需要系统具有针对普通用户的查询功能。普通用户查询功能应具备以下要求:·只能查询财务信息,不能对财务信息进行添加、删除及修改·能够快速准确的按用户要求查询所需信息8.系统管理者对普通用户的管理功能既然普通用户拥有了查询的能力,就需要一个功能使得管理员能对普通用户的查询功能进行管理,来增加或取消普通用户的查询权限。该管理功能应具备以下要求:·对普通用户查询权限的添加·对普通用户查询权限的删除·对普通用户查询登录密码的设置及修改总之,整体系统针对的是财务信息的管理,所以需要保证数据的添加、删除、修改及统计正确无误,要求系统具有良好的稳定性和安全性。3.2数据流图下面根据需求分析画出系统运行过程中的数据流图:·总的数据流图:图3.1顶层的数据流图·普通用户对数据操作的数据流图图3.2普通用户数据流图·管理员执行添加数据操作的数据流图图3.3信息添加数据流图·管理员执行查询数据操作数据流图图3.4信息查询数据流图·管理员执行删除数据操作数据流图图3.5信息删除数据流图·管理员执行修改数据操作数据流图图3.6信息修改数据流图·管理员执行统计数据操作数据流图图3.7数据统计数据流图·管理员对普通用户登录信息执行操作数据流图图3.8普通用户信息管理数据流图3.3数据字典表3.1数据文件“用户基本信息表”文件名:用户基本信息表别名:b1组成:{编号+姓名+性别+年龄+职称+单位}表3.2数据文件“收入信息表”文件名:收入信息表别名:b2组成:{编号+姓名+收入金额+收入说明+收入日期}表3.3数据文件“支出信息表”文件名:支出信息表别名:b3组成:{编号+姓名+支出金额+支出说明+支出日期}表3.4数据文件“普通用户登录信息表”文件名:普通用户登录信息表别名:b4组成:{姓名+密码}表3.5数据文件“管理员登录信息表”文件名:管理员登录信息表别名:b5组成:{姓名+密码}表3.6各项数据流数据流名:管理员登录信息组成:{姓名+密码}数据流名:普通用户登录信息组成:{姓名+密码}数据流名:用户基本信息组成:{编号+姓名+性别+年龄+职称+单位}数据流名:收入基本信息组成:{编号+姓名+收入+说明+日期}数据流名:支出基本信息组成:{编号+姓名+支出+说明+日期}表3.7各数据项数据项名:编号类型:文本型长度:10数据项名:姓名类型:文本型长度:4数据项名:性别类型:文本型长度:1数据项名:年龄类型:数字型长度:整型数据项名:职称类型:文本型长度:10数据项名:单位类型:文本型长度:20数据项名:密码类型:数字长度:整型数据项名:收入类型:数字型长度:长整型数据项名:支出类型:数字型长度:长整型数据项名:收入说明类型:文本型长度:30数据项名:收入日期类型:文本型长度:20数据项名:支出说明类型:文本型长度:30数据项名:支出日期类型:文本型长度:203.4系统E-R图·系统总体E-R图:图3.9系统总体E-R图·财务信息E-R图:图3.10财务信息E-R图·管理员对财务信息管理E-R图图3.11管理员对财务信息管理E-R图·管理员对用户基本信息管理E-R图图3.12管理员对用户基本信息管理E-R图·管理员对用户登录信息管理E-R图图3.13管理员对用户登录信息管理E-R图
第4章系统的设计4.1设计原则1.系统的安全性设计实现高效率的财务管理系统,应提高系统地运行稳定性和安全性,是系统设计的重要目标。功能的完整性为增强系统的实用性,应根据实际需求设计的各项功能,保证系统功能的完整性。满足使用者的各项需要,设计比较完善的财务管理系统。系统的人性化为了使用者方便操作,设计系统应具有友好的交互界面,简洁时尚的界面风格,使系统更具美观。4.2系统功能设计针对某系而设计的财务管理系统,就需要根据系级实际财务管理情况而设计。尽可能的详细划分功能模块,做到功能划分具体、合理,保证功能的完整性,运行稳定。以下是对模块的划分并对模块进行简单的说明:·普通用户登录模块:负责普通用户登录,对输入信息进行核对,判断是否正确,信息正确进入普通用户查询模块。·普通用户查询模块:负责普通用户对财务信息的查询功能。·管理员登录模块:负责普通用户登录,对输入信息进行核对,判断是否正确,信息正确进入普通用户查询模块。·用户基本信息添加模块:负责添加用户的基本信息。·用户基本信息查询模块:负责查询用户的基本信息。·用户基本信息删除模块:负责删除用户的基本信息。·收入信息添加模块:负责录入新的收入信息。·收入信息查询模块:负责查询收入信息。·收入信息删除模块:负责删除收入信息。·支出信息添加模块:负责添加新的支出信息。·支出信息查询模块:负责查询支出信息。·支出信息删除模块:负责删除支出信息。·查询收入信息模块:负责查询收入信息,可按多种需求进行查询。·查询支出信息模块:负责查询支出信息,可按多种需求进行查询。·修改收入信息模块:负责修改收入信息,可准确查询修改某条收入信息。·修改支出信息模块:负责修改支出信息,可准确查询修改某条支出信息。·统计所有收入金额模块:负责统计全部的收入金额。·统计所有支出金额模块:负责统计全部的支出金额。·统计所有收支金额模块:负责统计全部的收支金额。·统计特定用户的收支金额模块:负责统计指定的用户全部收支金额。·管理员对普通用户查询权限添加模块:负责添加普通用户查询权限。·管理员对普通用户登录信息修改模块:负责修改普通用户登录信息。·管理员对普通用户登录权限删除模块:负责删除普通用户查询权限。详细模块结构划分如图:·总的模块划分图4.1总模块划分图·管理员对用户基本信息管理功能模块划分:图4.2基本信息管理模块划分图·收入信息模块功能模块划分:图4.3收入信息模块功能划分图·支出信息管理功能模块划分:图4.4支出信息管理模块划分图·查询信息管理功能模块划分:图4.5查询信息管理模块功能划分图·修改信息管理功能模块划分:图4.6修改信息管理功能模块划分图·统计信息管理功能模块划分:图4.7统计信息管理功能模块划分图·管理员对普通用户查询权限管理功能模块划分:图4.8普通用户查询权限管理功能模块划分图4.3设计流程图·总的系统流程图图4.9系统流程图·添加信息功能的流程图图4.10添加信息功能的流程图·查询信息功能的流程图图4.11查询信息功能的流程图·删除信息功能的流程图图4.12删除信息功能的流程图·修改信息功能的流程图图4.13修改信息功能的流程图·统计金额功能的流程图图4.14统计功能的流程图·普通用户查询管理功能的流程图图4.15普通用户管理功能的流程图4.4数据库的设计为了更好的对数据信息进行管理,将数据信息分别划分为5个表,分别对每个表进行设计。表4.1用户基本信息表(编号,姓名,性别,年龄,职称,单位)列名类型长度允许空编号文本10否姓名文本4否性别文本1否年龄数字整型否职称文本10否单位文本20否表4.2用户收入信息表(编号,姓名,收入,收入说明,收入日期)列名类型长度允许空编号文本10否姓名文本4否收入数字长整型否收入说明文本30否收入日期文本30否列名类型长度允许空编号文本10否姓名文本4否支出数字长整型否支出说明文本30否支出日期文本30否表4.3用户支出信息表(编号,姓名,收入,收入说明,收入日期)表4.4普通用户登录信息表(姓名,密码)列名类型长度允许空姓名文本4否密码文本10否表4.5管理员登录信息表(姓名,密码)列名类型长度允许空姓名文本4否密码文本10否第5章系统的实现与测试本章介绍本系统的基本功能的实现,例如登录功能、添加功能、查询功能、删除功能、修改功能及统计功能。5.1登录功能的实现与测试登录系统负责识别用户身份,保证系统安全。并区分普通用户和管理员,使之进入相对应的程序模块。5.1.1关键技术为避免非法用户绕过身份认证模块,特别采用了Session对象在一次TCP连接中实现身份保持。当用户登录时,系统使用Session对象记录该用户的认证信息,一旦该用户退出,那么该Session对象将会被注销。Session对象可以用来记载一个客户端信息,即使该客户从一个页面跳到另一个页面,该Session信息仍然存在。比如:可以用Session信息记住客户输入的用户名信息,在其他页面中还可以用。Session信息是对一个客户而言的,不同客户的信息用不同的Session信息记载。[7]Session对象的属性、方法、事件如下。属性2个:SessionID——存储用户的SessionIDTimeout——Session的有效期长度方法1个:Abandon——清除Session对象事件2个:Session_onStart——开始前调用Session_onEnd——结束后调用5.1.2程序核心代码及运行测试以实现管理员登录功能为例:图5.1财务管理系统登录界面·管理员登录认证核心代码:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:b");Statementstmt=con.createStatement();//定义函数ResultSetrs;StringJRZNAME=request.getParameter("crzname");//取输入的姓名StringJRZPW=request.getParameter("crzpw");//取输入的密码StringrzSQL="SELECT*FROMb5WHEREname='"+JRZNAME+"'";//执行SELECT语句,从表b5中查找字段name等于JRZNAME的数据rs=stmt.executeQuery(rzSQL);rs.next();StringJRZPW3=rs.getString("pw");//将表中name对应的pw赋予JRZPW3if(JRZPW.equals(JRZPW3))//判断输入密码与表中存储的密码是否一致{//认证成功显示的页面out.println("认证成功!");//密码一致则登录成功图5.2管理员登录认证成功界面session.setAttribute("JRZNAME",JRZNAME);//将用户名存储在session.session.setAttribute("JRZPW",JRZPW);//将密码存储在sessionout.println("<P><AHREF=gnxz.htm>进入管理界面</A></P>");5.2添加功能的实现与测试添加功能负责实现对数据的录入功能,包括负责添加用户的基本信息、用户的收入信息、用户的支出信息以及添加普通用户的查询权限。5.2.1关键技术向数据库的表中添加一个新的记录,要使用INSERT语句。INSERT语句的完整语法范式为:INSERT[INTO]<表名/视图名>[(字段列表)]<缺省值/更新值列表/select语句>如果一个表有多个字段,通过把字段名和字段值用逗号隔开,可以向所有的字段中插入数据。该系统中所使用的添加语句:例如:StringaddSQL="INSERTINTOb1(num,nam,sex,age,zhicheng,danwei)VALUES('"+JNUM+"','"+JNAM+"','"+JSEX+"','"+JAGE+"','"+JZHICHENG+"','"+JDANWEI+"')"程序核心代码及运行测试以添加用户基本信息为例:·添加功能选择界面图5.3添加功能选择界面·添加用户基本信息功能核心代码:<p>请输入所要添加用户的基本信息</p><FORMaction="tjjb.jsp"method=postname=FPRM1><p>编号:<INPUTname=num></p>//输入用户编号<p>姓名:<INPUTname=nam></p>//输入用户姓名<p>性别:<INPUTname=sex></p>//输入用户性别<p>年龄:<INPUTname=age></p>//输入用户年龄<p>职称:<INPUTname=zhicheng></p>//输入用户职称<p>单位:<INPUTname=danwei></p>//输入用户单位<INPUTname=submit1type=submitvalue=添加>//添加按扭图5.4用户基本信息添加界面·添加用户基本信息功能核心代码:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:b");Statementstmt=con.createStatement();StringJNUM=request.getParameter("num");//取输入的用户编号StringJNAM=request.getParameter("nam");//取输入的用户姓名StringJSEX=request.getParameter("sex");//取输入的用户性别StringJAGE=request.getParameter("age");//取输入的用户年龄StringJZHICHENG=request.getParameter("zhicheng");//取输入的用户职称StringJDANWEI=request.getParameter("danwei");//取输入的用户单位StringaddSQL="INSERTINTOb1(num,nam,sex,age,zhicheng,danwei)VALUES('"+JNUM+"','"+JNAM+"','"+JSEX+"','"+JAGE+"','"+JZHICHENG+"','"+JDANWEI+"')";//执行对表b1插入新用户基本信息stmt.executeUpdate(addSQL);%>5.3查询功能的实现与测试查询功能负责实现普通用户和管理员对数据库数据的查询功能。包括查询收入信息、支出信息、个人基本信息及普通用户密码等功能。5.3.1关键技术SELECT语句是SQL语句中使用频率最高的,它通过规定一定的逻辑条件,在指定的表中查询符合条件的记录,并可指定返回那些字段。SELECT语句的第一部分指名要选取的字段,如果不指定那么将返回这张表中所有的字段。SELECT语句的第二部分指明要从哪个表中查询数据。最后,SELECT语句的WHERE子句指明要选择满足什么条件的记录。SELECT语句的语法范式:SELECT[ALL/DISTINCT]<目标列表达式>[,<目标列表达式>]….FROM<表名或视图名>[,<表名或视图名>]……[WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>]][ORDERBY<列名2>[]ASC/DESC]整个SELECT语句的含义是,根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,在按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表。5.3.2程序核心代码及运行测试以查询用户收入信息为例:·查询功能选择界面:图5.5查询功能选择界面·查询用户收入信息核心代码:<FORMaction="cxsrbh.jsp"method=postname=FPRM2><p>按编号查询:<INPUTname=num>//输入编号,按编号查找<INPUTname=submit1type=submitvalue=查询></p></FORM><FORMaction="cxsrxm.jsp"method=postname=FPRM3><p>按姓名查询:<INPUTname=nam>//输入姓名,按姓名查找<INPUTname=submit1type=submitvalue=查询></p></FORM><FORMaction="cxsrje.jsp"method=postname=FPRM3><p>按收入金额查询:<INPUTname=sr>//输入收入金额,按金额查找<INPUTname=submit1type=submitvalue=查询></p></FORM><FORMaction="cxsrsm.jsp"method=postname=FPRM3><p>按收入说明查询:<INPUTname=srsm>//输入收入说明,按说明查找<INPUTname=submit1type=submitvalue=查询></p></FORM><FORMaction="cxsrrq.jsp"method=postname=FPRM3><p>按收入日期查询:<INPUTname=srrq>//输入收入日期,按日期查找<INPUTname=submit1type=submitvalue=查询></p></FORM>图5.6用户收入查询界面·按用户编号查询核心代码:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:b");Statementstmt=con.createStatement();StringJNUM=request.getParameter("num");//取所要查询数据的编号StringCXJB="SELECT*FROMb2WHEREnumlike'%"+JNUM+"%'";//按编号对表b2进行查找·查询显示结果界面图5.7查询完毕显示结果界面5.4删除功能的实现与测试删除功能负责实现对数据的删除功能,包括负责删除用户的基本信息、用户的收入信息、用户的支出信息以及删除普通用户的查询权限。5.4.1关键技术删除纪录的SQL语句是用来删除符合所指定的一条或多条记录,并可以给DELETE语句提供WHERE子句。WHERE子句用来选择要删除的记录。DELETE语句的完整语法范式为:DELETE[FROM]<表名/视图名>[条件子句]在SQLSELECT语句中可以使用的任何条件都可以在DELETE语句的WHERE子句中使用。[8]该系统中所使用的删除功能语句:例如:StringSHI="DELETE*FROMb1WHEREnum='"+JNUM+"'";stmt.executeUpdate(SHI)5.4.2程序核心代码及运行测试以删除用户基本信息功能为例:·删除功能选择界面图5.8删除功能选择界面·删除用户基本信息功能核心代码:<FORMaction="scjbbh.jsp"method=postname=FPRM2><p>请输入所删除用户信息编号:<INPUTname=num></p>//输入删除编号信息<INPUTname=submit1type=submitvalue=删除>//删除功能按钮</FORM>图5.9删除用户基本信息输入界面·删除用户基本信息功能核心代码:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:b");Statementstmt=con.createStatement();StringJNUM=request.getParameter("num");//取所要删除数据的编号StringSHI="DELETE*FROMb1WHEREnum='"+JNUM+"'";//按编号删除表b1中的数据stmt.executeUpdate(SHI);//执行SHI,从表中删除数据5.5修改功能的实现与测试修改功能负责实现对数据的修改功能,负责修改用户的收入信息、用户的支出信息,保证数据库数据的更新。5.5.1关键技术要修改表中已经存在的一条或多条纪录,应使用UPDATA语句。同DELETE语句一样,UPDATA语句可以使用WHERE子句来选择更新特定的记录。UPDATA语句的完整语法范式:UPDATA<表名/视图名>SET<字段名=表达式>[,<字段名=字段名>…][条件子句]提供WHERE子句,表中的特定记录将被更新。本系统所使用修改功能语句:例如:StringaddSQL="UPDATEb2SETsr="+JSR+"WHEREnum='"+JNUM+"'ANDnam='"+JNAM+"'ANDsrrq='"+JSRRQ+"'"5.5.2程序核心代码及运行测试以修改收入信息为例:·修改功能选择界面图5.10修改功能选择界面·修改收入信息输入界面核心代码:<FORMaction="xgsr.jsp"method=postname=FPRM1><p>请输入要修改数据的信息</p><p>编号:<INPUTname=num></p>//输入所修改数据的用户编号<p>姓名:<INPUTname=nam></p>//输入所修改数据的用户姓名<p>日期:<INPUTname=srrq></p>//输入所修改数据的收入日期<p>(日期格式为:__年__月__日)</p><p>输入要更改的金额</p><p>收入金额:<INPUTname=sr>//输入所要修改的金额数目<INPUTname=submit1type=submitvalue=修改></p>//修改按钮</FORM>图5.11修改收入信息输入界面·修改收入信息核心代码:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:b");Statementstmt=con.createStatement();StringJNUM=request.getParameter("num");//取所要修改数据的用户编号StringJNAM=request.getParameter("nam");//取所要修改数据的用户姓名StringJSR=request.getParameter("sr");//取所要修改为的金额数目StringJSRRQ=request.getParameter("srrq");//取所要修改数据的收入日期StringaddSQL="UPDATEb2SETsr="+JSR+"WHEREnum='"+JNUM+"'ANDnam='"+JNAM+"'ANDsrrq='"+JSRRQ+"'";//按输入条件将收入金额修改为输入的新的收入金额stmt.executeUpdate(addSQL);%>5.6统计功能的实现与测试统计功能负责实现对数据的统计功能,包括负责统计用户的收入信息、用户的支出信息,便于财务管理及控制收支平衡。5.6.1关键技术SQL语句中的SUM函数返回指定组中的所有值的和,语法如下:SUM([ALL/DISTINCT]expression)其中参数ALL表示对组中所有值函数操作。而参数DISTINCT仅对每个值的单个实例作函数操作,而忽略该值的任何重复实例。在缺省的情况下,系统默认参数ALL。假设一个名为ORDERS的表用来记录所有访问者的定购信息。要计算所有定购量的总合,可以使用函数SUM():SELECTSUM(sr)FROMorders函数SUM()的返回值代表字段sr中所有值的和。字段sr的数据类型也许是MONEY型,但也可以对其他数值字段使用函数SUM()。本系统中所使用的统计功能语句:StringJSSR="SELECTSUM(sr)ASt1FROMb2"StringJSZC="SELECTSUM(zc)ASt2FROMb35.6.2程序核心源代码及运行测试以统计收支总合金额为例:·统计功能选择界面图5.12统计功能选择界面·统计收支金额总合功能核心代码:<P><AHREF=jsszzh.jsp>统计全部收支金额</A></P>//统计全部财务信息的收支总合<p>统计用户收支情况</p><FORMaction="jsszzhbh.jsp"method=postname=FPRM1><p>请输入所要统计用户编号:<INPUTname=num>//按编号统计用户的财务收支总合<INPUTname=submit1type=submitvalue=统计></p></FORM>图5.13统计收支金额总合功能界面·统计全部收支金额总合核心代码:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:b");Statementstmt=con.createStatement();StringJSSR="SELECTSUM(sr)ASt1FROMb2";//对表b2中字段sr中的数据求和StringJSZC="SELECTSUM(zc)ASt2FROMb3";//对表b3中字段zc中的数据求和ResultSetrs;rs=stmt.executeQuery(JSSR);rs.next();Stringx1=rs.getString("t1");//将所求和t1赋予x1rs=stmt.executeQuery(JSZC);rs.next();Stringx2=rs.getString("t2");//将所求和t2赋予x1Floata1=Float.valueOf(x1);//将x1进行Float转化为a1Floata2=Float.valueOf(x2);//将x2进行Float转化为a2floata=a1.floatValue()-a2.floatValue();//将a1和a2相加,之和为a图5.14统计全部收支金额总合执行界面5.7用户管理功能的实现与测试普通用户的查询管理功能是对用户的用户名和密码进行管理的模块,所包含了基本的添加、查询及删除功能。以便于管理员对普通用户的登录查询进行管理。5.7.1关键技术该功能包含了添加、查询及删除功能,这3个功能构成了用户查询管理功能的核心。向数据库的表中添加一个新的记录,要使用INSERT语句。INSERT语句的完整语法范式为:INSERT[INTO]<表名/视图名>[(字段列表)]<缺省值/更新值列表/select语句>查询记录的SQL语句为SELECT。整个SELECT语句的含义是,根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,在按SELECT子句中的目标列表达式,选出元组中的属性值形成结果表SELECT[ALL/DISTINCT]<目标列表达式>[,<目标列表达式>]….FROM<表名或视图名>[,<表名或视图名>]……[WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>]][ORDERBY<列名2>[]ASC/DESC]删除记录的SQL语句是用来删除符合所指定的一条或多条记录,并可以给DELETE语句提供WHERE子句。WHERE子句用来选择要删除的记录。DELETE语句的完整语法范式为:DELETE[FROM]<表名/视图名>[条件子句]5.7.2程序核心代码及运行测试·用户查询管理功能选择界面图5.15用户查询管理功能选择界面·添加用户查询权限功能核心代码:<p>请输入所要添加用户姓名及密码</p><FORMaction="gltj.jsp"method=postname=FPRM1><p>姓名:<INPUTname=nam></p>//输入所要添加的用户姓名<p>密码:<INPUTname=pw></p>//输入所要添加的用户密码<p>(注:默认密码为该职工编号)</p><INPUTname=submit1type=submitvalue=添加>//添加按钮</FORM>图5.16添加新用户输入界面·添加用户查询权限功能核心代码Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connectioncon=DriverManager.getConnection("jdbc:odbc:b");Statementstmt=con.createStatement();StringJNAM=request.getParameter("nam");//取输入的用户姓名StringJPW=request.getParameter("pw");//去输入的用户密码StringaddSQL="INSERTINTOb4(pw,nam)VALUES('"+JPW+"','"+JNAM+"')";//将输入的信息插入到表b4中stmt.executeUpdate(addSQL);//执行addSQL将信息插入表中%>5.8各功能实现总结通过以上的内容,展示了一个比较完整的财务管理系统的各项功能及运行原理。从分析定位每个功能所要满足的要求,到解决技术难题直至实现每步功能,都是按照实际需求设计开发的,并按照严谨的软件设计方法进行完成的。本系统实现了基本财务信息管理功能,并可以安全、快速及稳定的运行。
第6章课题开发中的难点以及对策虽然程序设计及实现已经完成,但在设计的过程中还是遇到了一些困难。如SQL功能语句与JSP语句的嵌套使用,财务金额的收支统计功能等。6.1SQL语句与JSP语句的嵌套使用难点SQL语句是一个通用的、功能极强的关系数据库语言,既是自含式,又是嵌入式语言。作为自含式语言,它能够独立的用于联机交互的使用方式,用户可以在终端键盘上直接输入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句能够嵌入到高级语言程序中,供程序员设计程序时使用。本系统需要SQL语句作为嵌入式语言进行使用。所以如何将SQL语句与JSP语句结合,嵌入使用SQL语句成为一个要克服的难点。[9]1.添加记录的SQL语句与JSP语句的嵌套使用向表中添加一个新的记录,要使用INSERT语句。INSERT语句的完整语法范式为:INSERT[INTO]<表名/视图名>[(字段列表)]<缺省值/更新值列表/select语句>本程序中需要使用SQL语句为:INSERTINTOb1(num,nam,sex,age,zhicheng,danwei)VALUES(‘1’,‘张强’,‘男’,‘30’,‘讲师’,‘计算机工程于科学系这样的SQL语句在JSP程序中是无法直接使用的,所以需要对SQL语句进行一定的修改,与JSP语言结合使用。解决方法,如下的JSP代码:StringJNUM=request.getParameter(“num”);//取输入的用户编号StringJNAM=request.getParameter(“nam”);//取输入的用户姓名StringJSEX=request.getParameter(“sex”);//取输入的用户性别StringJAGE=request.getParameter(“age”);//取输入的用户年龄StringJZHICHENG=request.getParameter(“zhicheng”);//取输入的用户职称StringJDANWEI=request.getParameter(“danwei”);//取输入的用户单位将SQL语句嵌入到JSP语句中:StringaddSQL=”INSERTINTOb1(num,nam,sex,age,zhicheng,danwei)VALUES(‘”+JNUM+”’,’”+JNAM+”’,’”+JSEX+”’,’”+JAGE+”’,’”+JZHICHENG+”’,’”+JDANWEI+”’)”;//执行对表b1插入新用户基本信息stmt.executeUpdate(addSQL);//执行addSQL对表进行插入添加这样就可以在程序使用SQL语句对表插入添加信息了。2.查询记录的SQL语句与JSP语句的嵌套使用查询数据库表中的信息需要使用SELECT语句。SELECT语句的语法范式:SELECT[ALL/DISTINCT]<目标列表达式>[,<目标列表达式>]….FROM<表名或视图名>[,<表名或视图名>]……[WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>]][ORDERBY<列名2>[]ASC/DESC]本程序中所要使用的SQL语句:SELECT*FROMb2WHEREnumlike‘1’从表b2中查询编号为1的所有数据。这样的SQL语句在JSP程序中是无法直接使用的,所以需要对SQL语句进行一定的修改,与JSP语言结合使用。解决方法,如下的JSP代码:StringJNUM=request.getParameter("num");//取查询条件编号StringCXJB="SELECT*FROMb2WHEREnumlike'%"+JNUM+"%'";//按编号查询表b2中的数据ResultSetrs;//定义一个RSrs=stmt.executeQuery(CXJB);//将“CXJB”赋予RS执行,实现对表的查询3.删除记录的SQL语句与JSP语句的嵌套使用删除数据库表中的数据要使用DELETE语句。DELETE语句的完整语法范式为:DELETE[FROM]<表名/视图名>[条件子句]本程序中所要使用的SQL语句:DELETE*FROMb1WHEREnum=‘1’从表b1中删除所有编号为1的数据。这样的SQL语句在JSP程序中是无法直接使用的,所以需要对SQL语句进行一定的修改,与JSP语言结合使用。解决方法,如下的JSP代码:StringJNUM=request.getParameter("num");//取删除条件,编号StringSHI="DELETE*FROMb1WHEREnum='"+JNUM+"'";//按编号对表b1进行数据删除stmt.executeUpdate(SHI);//执行SHI,执行对表的删除4.修改记录的SQL语句与JSP语句的嵌套使用修改数据库表中的数据要使用UPDATA语句。UPDATA语句的完整语法范式:UPDATA<表名/视图名>SET<字段名=表达式>[,<字段名=字段名>…][条件子句]本程序中所要使用的SQL语句:UPDATAb2SETsr=“200”WHEREnum=‘1’ANDnam=‘张强ANDsrrq=‘2006年1月3日’;将表b2中编号为‘1’,姓名为‘张强’,收入日期为‘2006年1月3日’数据中的‘sr’数值更改为‘200’。这样的SQL语句在JSP程序中是无法直接使用的,所以需要对SQL语句进行一定的修改,与JSP语言结合使用。解决方法,如下的JSP代码:StringJNUM=request.getParameter("num");//取修改条件中的编号StringJNAM=request.getParameter("nam");//取修改条件中的姓名StringJSR=request.getParameter("sr");//取所要修改成的收入数值StringJSRRQ=request.getParameter("srrq");//取修改条件中的收入日期StringaddSQL="UPDATEb2SETsr="+JSR+"WHEREnum='"+JNUM+"'ANDnam='"+JNAM+"'ANDsrrq='"+JSRRQ+"'";//对表b2的收入金额按条件进行修改stmt.executeUpdate(addSQL);//执行addSQL,完成修改5.统计记录的SQL语句与JSP语句的嵌套使用SQL语句中的SUM函数返回指定组中的所有值的和,语法如下:SUM([ALL/DISTINCT]expression)本程序中所要使用的SQL语句:SELECTSUM(sr)FROMb2;这样的SQL语句在JSP程序中是无法直接使用的,所以需要对SQL语句进行一定的修改,与JSP语言结合使用。解决方法,如下的JSP代码:StringJSSR="SELECTSUM(sr)ASt1FROMb2";//求字段为‘sr’中的所有值的和,并将值作为‘t1St
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 17980.20-2026农药田间药效试验准则第20部分:杀菌剂防治水稻纹枯病
- GB/T 17889.7-2026梯子第7部分:可分离式平台梯
- 2026年集运站安全培训内容实操要点
- 2026年宾馆全员安全培训内容核心要点
- 植树节环保公益宣传方案
- 铜陵市铜陵县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 玉溪市峨山彝族自治县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 吉安市吉安县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 聊城市临清市2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 邵阳市城步苗族自治县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 12《古诗三首》课件-2025-2026学年统编版语文三年级下册
- 团队精神与忠诚度培训讲义
- 2026河南新乡南太行旅游有限公司招聘16岗49人考试参考试题及答案解析
- 2026年辽宁点石联考高三年级3月学情调研语文试卷及答案
- 短剧网络播出要求与规范手册
- 2026年春季西师大版(2024)小学数学三年级下册教学计划含进度表
- 江苏苏锡常镇四市2026届高三下学期教学情况调研(一)数学试题(含答案)
- 2026年3月15日九江市五类人员面试真题及答案解析
- 高顿教育内部考核制度
- 2026年山西工程职业学院单招职业技能考试题库及答案解析
- (2025年)上海专升本普通心理学模拟试题真题试卷及答案
评论
0/150
提交评论