银行交易系统的设计与实现_第1页
银行交易系统的设计与实现_第2页
银行交易系统的设计与实现_第3页
银行交易系统的设计与实现_第4页
银行交易系统的设计与实现_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京邮电大学毕业设计PAGEPAGEv银行交易系统的设计与实现摘要随着我国信息技术的发展,无论是国内银行之间还是国外银行之间,竞争都越来越激烈,怎样高效、方便、快捷的完成用户的要求是银行生存的当务之急。银行管理中的重中之重是有关银行账户与交易的管理,本系统便是为日常银行的交易事务设计的。本系统设计时采用软件工程的思想,按照需求分析、概要设计、详细设计、程序编码、测试等过程开发了一个银行交易系统。对于后台的数据库,本系统采用SQLSERVER2005与前台界面相关联。整个系统以java作为开发语言在Myeclipse8.5平台上进行设计开发。整个系统主要用来帮助银行处理日常业务,分为管理员模块和普通用户模块。管理员具有对系统的管理权限,可以管理用户信息和交易信息等,普通用户可以进行转账和取现等业务,方便了银行日常业务的操作。关键词:JAVA;数据库;Myeclipse;银行交易系统ThedesignandimplementationofBanks'tradingsystemAbstractWiththedevelopmentofinformationtechnologyinourcountry,whetherbetweendomesticBanksandforeignBanks,competitionisincreasinglyfierce,howtoefficient,convenientandfasttocompletetheuser'srequirementsisabankthepriorityofsurvival.Toppriorityisthebankaccountofbankmanagementandtransactionmanagement,thissystemisdesignedfordailybanktransactions.Thissystemisdesignedbyadoptingtheideaofsoftwareengineering,accordingtothedemandanalysis,generaldesign,detaileddesign,programcoding,testingprocesstodevelopabanktradingsystem.Forthebackgrounddatabase,thissystemUSEStheSQLSERVER2005thatisassociatedwiththefrontdeskinterface.ThewholesystemwithJavaasadevelopmentlanguageonMyeclipse8.5platformfordesignanddevelopment.ThewholesystemismainlyusedtohelpBanksdealwithday-to-daybusiness,dividedintoadministratorsandordinaryusersmodule.Administratorhasadministrativeprivilegesonthesystem,userscanmanageinformationandtransactioninformation,suchasordinaryuserscantransferandcashbusiness,convenientbankdailybusinessoperations.Keywords:Myeclipse;Database;Java;Banks'tradingsystem目录30550摘要 i22234Abstract ii140231概述 1149191.1课题名称的来源背景 1107181.2信息系统与管理信息系统 12601.2.1信息系统 133971.2.2管理信息系统 2269081.3银行交易系统的现状与发展趋势 2293641.4银行交易系统的意义 3250242系统分析 419402.1系统的功能 4148162.2用户需求分析 43992.3应用程序结构 4289232.4系统开发环境 5268173开发工具简介 689633.1Eclipse简介 6298063.2MyEclipse简介 642933.3Eclipse与Myeclipse的区别 657363.4介绍JSP 641553.5JSP的由来 7293113.6Jsp的工作原理 7196243.7JSP的生命周期 7109433.8JSP与Javabean 8154813.9SQLServer2005 8282244系统的功能设计 990164.1功能概述 9265814.2后台数据库设计 9266514.2.1存储过程 9212204.2.2设计数据库中的表 1035644.2.3设计局部E-R模式 11287004.2.4设计全局E-R模式 13162274.2.5数据字典 1484405系统设计 18151485.1系统设计综述 1813205.2系统操作模块 19159425.2.1系统操作主界面 19119475.2.2用户账号管理模块 20260285.2.3账户信息添加模块 22219635.2.4用户取现模块 25319945.2.5查询余额管理模块 26153515.2.6账户明细记录模块 28204366系统测试 3157416.1软件测试基本理论 3176836.1.1软件测试 3139196.1.2软件测试工程师 3139196.1.3软件测试基本原则 3139196.1.4软件测试分类 3152996.2软件测试过程 32256956.2.1单元测试 32211806.2.2集成测试 33145166.2.3系统测试 33225456.2.4验收测试 3363626.3本系统测试实例 334606.4系统整体测试 34279706.5不足与改进 3413553总结 3532621参考文献 3613553致谢 37PAGEPAGE551概述1.1课题名称的来源背景银行,通俗的来讲就是人们将暂时不用的钱存进去,交代给银行相关人员进行负责、管理,而在人们需要花费钱时再将它们取出来的金融机构。早在我国西周时期,劳动人们就已经有了银行的些许概念,他们主要是用金属货币来进行交换,促进商品的流通,以满足自己的生活需求。但是,当时的生产力水平毕竟跟现在无法比拟,所谓银行的发展受到很大的限制。真正银行的出现则是在著名的意大利水城威尼斯,由于威尼斯当时是屈指可数的国际贸易中心,频繁的商品交易促进了商品交换的需要,于是出现了保管货币资金的委托人,并有发票做担保。随着委托人手中的货币积累的越来越多,他们不得不考虑扩大这项日渐发展的规模,并开始从事与今天银行相像的存取款业务等,这已经很类似于今天我们随处可见的银行了。而银行的发展最重要的得益于19世纪科学技术的不断进步以及资本主义生产力的蓬勃发展,极大的促进了银行的发展。各国的银行业务不仅在本国范围内高速发展,更是在世界范围内日益进步,壮大。随着社会分工越来越细,各个部门分管的职能有所区别,银行又划分为不同的属性。就我国来说,银行分为中央银行,即中国人们银行,商业银行,政策性银行。我们常见的中国工商银行,中国农业银行,中国银行,中国建设银行,交通银行便是属于商业银行。随着经济的发展,人们对银行业务的需求也越来越高,越来越多样化。为了促进银行的发展,各种银行系统也渐渐完善。本系统的开发主要是根据银行的实际需求而进行,系统整体包括:基础资料管理、银行业务管理、财务报表管理、系统维护管理四大功能模块。对银行的日常业务进行全面管理。“银行交易系统”的出现在传统的银行经营管理模式基础上,结合计算机和网络的应用,使得银行内部信息量增大,方便了银行管理人员的操作,提高了工作效率,减轻了他们的工作量,方便了银行的管理,更重要的是为用户带来极大的便利。银行已经成为我们日常生活中不可缺少的一部分,已经渗透我们生活的方方面面,并且随着我国经济的发展,银行更会在金融方面发挥不可替代的作用。1.2信息系统与管理信息系统1.2.1信息系统21世纪是信息科学技术飞速发展的时代,信息技术的应用可谓空前广泛,网络的发展更是促进了信息化的发展。而全球经济的一体化与信息化又是相辅相成的,所以正确客观的认识信息化是必要的。信息系统虽然感觉庞大陌生,其实早已出现,并逐步改变着我们的日常生活。信息系统实质是一个人机一体化系统,它由人以及计算机硬件、计算机软件、网络、设备、数据资源和相关制度组成,目的是及时、准确地对数据进行输入、存储、处理、输出及控制,也就是对数据实现集中、高效、便利的管理,达到项目的有序,做出正确决策。银行管理系统恰恰需要这种方便周到的信息系统。信息系统包括信息处理系统、管理信息系统、决策支持系统、专家系统和虚拟办公室系统。我们常用的是信息处理和传输。信息处理系统(DataProcessingSystem,简称DPS)对数据仓库进行处理,需要用到联机分析处理和数据挖掘技术从而产生新的数据。数据传输功能也即数据通信,将数据从一方传到另一方,进行交流通信。决策支持系统是对大量收集到的数据进行统计分析,帮助用户解决半结构化和非结构化决策问题,主要是运用概率学和统计学。对于专家系统,则分属于人工智能,是智能领域中最为活跃。虚拟办公室则是可以把任何场所当做办公室的系统,方便了管理人员对工作人员的管理,同时给工作人员带来生活上的便捷,提高了工作积极性和效率。1.2.2管理信息系统随着人类进入信息时代,信息管理的水平越来越成为衡量国家综合实力的重要标志。信息成为了一种无形的,价值量巨大的资源。过去的所谓的资源多为人、物、资金、能源等。随着信息技术的发展,无形的信息资源也成为我们得以发展的重要因素。把握了无形的信息资源,才能更好的利用有形资源。因而,对于各种信息的管理必须引起我们的高度重视,人们因此研究出来管理信息系统。管理信息系统(MIS)由手工最基础的操作到机器辅助设备,再到如今的使用计算机、打印机等设备发展而来,是一个复杂多元高效准确的人机系统。主要是结合计算机、数据库、网络以及管理学、概率学、统计学等对信息进行合理处理、正确管理。管理信息系统不仅可以对数据有处理功能,而且可以根据提供的现有条件和约束条件的控制下,为各个部门制定计划,比如企业财务管理、库存进出货管理等。除此之外,还具有对计划执行的控制功能,对计划检查,监督。管理信息系统既是一个技术系统,又是一个社会系统。工作既可以实现人机分离,也可以实现人机统一。不同的情境运用不同的策略,二者相互协调,充分发挥其作用,高效完成作业,大大节约了工作人员的劳动时间。管理信息系统的开发分为五大阶段:规划、设计、实施、维护和评价。完善的管理系统在我国已有了广泛的应用,适应了现代化管理的需要,成为谋求发展的必由之路。1.3银行交易系统的现状与发展趋势银行交易系统在银行系统中占有重要地位,用户需求增多,市场竞争增大,对银行的经营提出了更高的要求。提高银行核心竞争力除了人为因素外,银行交易系统起的作用更为关键。银行的运行效率、盈利能力、成本和管理水平的高低和银行所使用的交易系统直接挂钩,如果有一套好的银行交易系统,可大大减少应用开发和维护成本,进一步提高银行的综合实力。在这种市场机制之下,促进了银行交易系统的发展。虽然银行交易系统已经广泛用于银行的日常管理中,但不可避免的会出现一些问题需要不断改善。例如,系统不应仅仅局限于功能的实现,还应注意与操作人员的交互是否人性化,最直观的就是界面是否符合使用效果等诸多问题。需要在使用中不断升级,需要快速迭代的进化程序。为了进一步提升银行交易系统的质量,在设计方面已经注重从简思维,繁琐的操作会影响执行效率,只有操作简单,理解简单,才能愿意使得人们消费。其次,更应注意享受银行服务,尽量将银行业务与人们生活结合起来,方便人们的日常生活。再次,合理利用网络,提高银行服务质量。1.4银行交易系统的意义时间就是金钱,效率就是质量。采用银行交易系统无疑大大提高了银行业务的执行效率,增强了银行的核心竞争力,以面对当今世界对金融等各方面提出的各种风险。同时,提高了银行管理效率,方便了管理员及用户的使用,保障了银行的发展,保证了人们的正常生活。2系统分析管理信息系统常用的开发方法有结构化系统开发方法、原型方法、面向对象的开发方法、计算机辅助开发方法。本系统采用的是最常用的管理信息系统开发方法——结构化系统开发方法。该方法具体分为四个步骤,即系统调研分析、数据库设计实现、界面设计实现和系统功能设计实现,这其中系统调研分析阶段是最为关键,基础、重要。2.1系统的功能该系统开发的主要任务是实现银行的管理。目的是提高银行管理的工作效率,改善工作环境,降低银行管理成本,实现工作的现代化、系统化、规范化、自动化。该系统开发主要分为两大部分:前台的操作界面部分和后台的数据库部分。前台的操作界面主要实现用户的各种基本操作,比如对基础资料管理、银行业务管理、财务报表管理等功能。后台的数据库方面主要实现系统用到的数据的管理。2.2用户需求分析软件开发流程为系统需求分析、系统需求定义、总体设计、软件需求分析、数据建模、编码/单元测试、联合测试、系统测试和运行维护。在进行系统设计和开发之前,基础且关键的步骤为进行用户需求分析。对用户的需求进行调查分析,通过与用户的沟通充分了解系统应有的功能,确定系统的总体框架,实现方案,并形成完整的用户需求分析文档。此文档的使用贯穿在系统设计、开发、测试、维护整个过程中,是进行相关活动的参考依据。同时,在设计过程中也可以进一步与用户交流,达到尽量完善系统的目的。该系统经过需求分析,最终确定将其分为管理模块和交易模块。管理模块包括超级管理员和普通管理员的操作模块。交易模块包括取现、转账、查看交易记录等模块。2.3应用程序结构应用程序有两种模式:客户端/服务器端应用程序(C/S),该程序一般独立运行;浏览器/服务器端应用程序(B/S),该程序借助浏览器运行。本系统前台采用的就是建立在B/S架构上的web服务器端的脚本程序,采用了动态网页技术。静态网页和动态网页的区别是web服务器对待方式不同,效率也有区别。从用户应用角度来看,可把应用程序系统的组成部分分成datalayer(数据层)、businesslayer(业务逻辑层)、persentationlayer(显示层)等3个层次。业务逻辑处理中用到servlet,servlet由java和html结合而成。在做显示时主要用jsp,jsp也有java和html结合而成。2.4系统开发环境(1)数据库的选择:数据库的选择需要结合系统要求、自己机器的情况以及自己的兴趣进行选择。数据库有高低级之分,ACCESS简单易懂,属于低级数据库;DB2,QRACLE,SYBASE则由于比较系统,实力很强,属于高级数据库。本系统中选择了中级数据库——SQLServer2005。SQLServer2005是微软公司开发的,基于客户端/服务器的关系型数据库管理系统,对应用程序提供了安全可靠,且高效的数据管理平台。可以用于大规模练级事务处理(OLTP),有报表、分析、集成、通知、复制等功能。如此强大功能的SQLServer2005安装简便,组织、管理数据简单明了,卸载方便容易。(2)开发工具的选择:MyEclipseEnterpriseWorkbench,简称MyEclipse是我学习期间相对熟悉的一种开发工具。MyEclipse属于企业级工作平台,极易部署,极大的提高了应用程序编程的工作效率,且为J2EE提供了丰富的集成开发环境,容易上手,方便管理,界面熟悉。所以这次系统的设计选择在MyEclipse上进行。本系统整体确定使用下面的开发环境:采用的网络操作系统为:Windows7;采用的数据库服务器为:SQLServer2005;采用的服务器平台为:Windows7;采用的前台开发工具为:MYECLIPSE;采用的数据访问对象为:JAVA;采用的网络开发语言为:JAVA3开发工具简介3.1Eclipse简介大学较为熟悉的开发工具之一为ECLIPSE,与J2EE结合起来使用不仅方便了我们编程,更是由于它本身的操作比较简单,使得我们对编程的兴趣有了很大提高。之后,随着认识上的提高与进一步的学习,偶然用到了MYECLIPSE。下面就来简单讨论下二者。Eclipse的好处是它包含着JDK(JavaDevelopmentKit,JAVA开发工具),这归功于它自带的一个插件集。虽然就eclipse来看,它仅仅是个框架和相关插件结合起来的跨平台的、源码开放的、有java开发环境的开发工具。正是因为eclipse中插件的一致性,所以开发人员所使用的开发环境也保持一致,这样交付给用户的产品的性质也大同小异。例如,eclipse的开发语言是java,但也支持C编程、C++编程等,再加上简洁的界面和人性化的设计,方便了开发人员的使用。3.2MyEclipse简介对于myeclipse来说,它更像是eclipse的集合,eclipse工作依靠插件,因此也可以认为myeclipse强大的功能来自eclipse的各类插件,使得这款产品更满足人们的需要,适应行业的发展。Myeclipse中功能众多,可以完成hibernate,spring,和structs布局,除了普通的编程外,还可以进行调试与测试、设计图样,每种功能对应一种插件,并且这些插件相互独立,互不影响,开发人员可以根据自己的编程需要适当的升级其中某一个插件,而不影响其他插件。这与软件工程中的模块思想类似,只是更容易操作,如此强大却简便的操作深得人心。Myeclipse功能的价值远远大于市场上单独的软件功能,且无论对于个人还是企业来说,其价格都是可以被接受的。这些原因都导致myeclipse的市场占有率越来越大,日渐受到开发人员的欢迎。3.3Eclipse与Myeclipse的区别Eclipse与myeclipse的区别如下:Eclipse主要用来进行java应用程序开发,myeclipse主要用来进行javaee应用程序开发,若在eclipse上进行javaee开发,只需安装个相关插件就可以。当然,由于myeclipse所有插件都已存在,形成了一种高级编程环境,程序开发运行时会出现一段反应时间,比eclipse慢些。3.4介绍JSPJSP(JavaServerPage),是一种实现普通静态HTML和动态HTML混合编码的技术。JSP的基础是JavaServlet,将JavaServlet与JSP配合使用可以较好的完成大型的web应用程序开发。JSP是sun公司在1998年提出的一种动态网页技术,其本质还是servlet,jsp最终会被转化成标准的servlet。对于我们熟知的html,它属于网页文件,而.asp、.php和.jsp则属于镶嵌型的脚本语言,是建立在B/S架构上的web服务器端的脚本程序。服务器对待网页方式的不同决定了该网页是属于静态网页还是动态网页。Jsp设计目的在于简化表示层,实质为html与java的结合。JSP页面的成分分为三种:脚本元素、指令、动作。JSP还继承了java面向对象的优点,极大方便了人员使用。3.5JSP的由来JSP的由来:传统的应用程序模型中表示层、业务层和数据层都在一个应用中,也就是所谓的单层结构。三层绑在一起,增加了各层的工作负担。这种模型无论是对代码的修改、维护还是重复性使用都不方便,最主要的是该模型没有伸缩性,复用率低,造成人力、物力等资源的浪费。不仅对用户使用的要求高,而且对编程人员来说更是一件头疼的事。之后,出现的web应用程序模型改变了以上状况。Web应用程序模型就是我们熟悉的三层架构模式。客户端用来做为显示界面,将客户端的请求提交给服务器,服务器响应相关服务,再将结果返回给浏览器,交代给用户,使程序各层分工明确,相互独立,减少了各层的工作量,便于管理人员进行管理、维护,方便用户操作。尤其对于数据库来说只需和组件相通即可,不必连接每个用户。虽然由传统的应用程序模型到web应用程序模型得到诸多改进,例如提高了灵活性等,但也对开发人员提出了较高要求。他们需要熟悉HTTP、HTTPS等分布式协议,考虑所处理事务的一致性以及安全性等。这样就引出了我们对J2EE的关注。J2EE只需开发者利用它的可重用构件、JSP和EJB以及简便的连接数据库的方式(JDBC、XML等)便可实现开发。EJB是J2EE的基石,JSP则是J2EE的核心。因此,人们开始大量使用JSP。3.6Jsp的工作原理JSP在首次载入时被翻译成servlet文件(*.java),JSP引擎调用java编译器将*.java编译成class,然后JSP引擎调用JVM执行*.class,将运行结果返回给服务器,服务器封装响应后返回给客户端。3.7JSP的生命周期JSP的生命周期分为三个阶段,分别是翻译阶段、编译阶段和执行阶段。翻译阶段主要是当容器接受到客户端第一次对jsp的请求后,先判断被请求的jsp是否存在,若不存在返回404错误,若存在,将该jsp先翻译成一个Servlet。编译阶段主要是将Servlet的源文件编译成一个字节码文件,然后由容器将其装载进虚拟机并实例化(单例)。对于执行阶段来说主要是调用Servlet的init()方法、service方法、destroy()方法。值得我们重视的是如果被请求的jsp源文件内容发生变化,那么要重新将jsp翻译成Servlet,再编译、装载和实例化,最后运行Servlet。如果第二次请求jsp时,此时若被请求的jsp已经有对应的Servlet实例,那么就直接运行该Servlet。3.8JSP与Javabean提到JSP不得不提到javabean。使用Javabean的目的有三方面:第一,用来封装数据信息,业务,数据访问,事务控制逻辑的代码;第二,用来封装jsp中的一些脚本,便于重用,可以减少jsp中脚本的使用;第三,作为一个可重用的组件来使用。javabean按照位置可以分为两类:其一,可视化JavaBean,位于客户端(例如:在Swing中处理事件的JavaBean);其二,不可视化JavaBean,位于服务端,用于封装数据信息,业务,数据。Javabean实质就是java中的可重用组件,普通的java类,可以实现Serializable接口并且是一种无参构造器,有自己相应的属性,最关键的就是相应属性有对应public的setter和getter。这点和JSP结合起来完善了编程的需要。对于useBean,主要用于在JSP页面中初始化一个Java实例,setProperty用来为JavaBean实例的属性赋值,getProperty用来输出JavaBean实例的属性。3.9SQLServer2005一个系统的数据往往繁多杂乱,光靠人为的统计是不足以完成系统要求的。为了有效方便的管理这些数据,我们广泛的使用了专门的数据库。数据库中的数据既有联系性又有独立性,被每个有相应权限的人员进行增删改查,这就需要用到数据库管理系统(databasemanagementsystem,DBMS),方便用户访问计算机软硬件资源以及数据。由于数据库界面设计简单,但功能强大,因此方便了数据的整理、保存,提高了工作效率。SQLServer是由赛贝斯公司在1987年发布的数据库系统,经过之后微软公司参与其中的设计,该系统有了进一步提升。在1995年,微软正式发布了MicrosoftSQLServer6.0系统。而SQLServer2005系统也由微软公司在2005年发布。SQLServer中SQL是StructuredQueryLanguage的意思,即结构化查询语言。这种语言可以对数据库中数据进行操作,方便人员和计算机的交流沟通。SQLServer系统有数据库引擎、报表服务和分析服务等服务集成。数据库分割成用户数据库和系统数据库,可以用于多个行业。数据库的业务操作环境和模拟分析环境是不同的,只有当数据库置于真正的业务环境中,我们才能更好的掌握它们的优缺点。SQLServer2005在以前版本的基础上,改善了一些功能。将好的功能保留下来升级,将不适合的功能索性淘汰。对于数据库来说,安全性至关重要。SQLServer2005提供了身份验证、安全对象的权限设置等机制保证数据完整。数据库中默认sa是SQLServer的登录名,该用户名不能删除,且拥有SQLServer的全部权限。如果由混合模式进入SQLServer后,我们应及时为sa设置一个秘密。该密码可以通过设置它的复杂性和密码过期时间来提高数据库安全性。数据库中不仅有数据,更是有这些数据的用户。因此,管理这些用户也是一项大任务。在SQLServer2005中数据库用户并不能拥有数据库中表、视图等对象,只能架构操作这些对象。管理员有着全部权限,可以对普通用户进行创建、修改、删除等操作,保证数据库数据简洁和完整。管理员可以通过角色权限管理用户。首先创建角色,赋予角色相关权限,再将角色和用户关联起来,这些用户也就拥有了相关角色的权限。这样管理员可以对用户进行成批操作,减少了管理员的工作量,提高了工作效率。4系统的功能设计4.1功能概述该系统实现的功能主要分为两部分,一部分是管理员模块,另一部分就是普通账户模块。管理员分为超级管理员和普通管理员。超级管理员可以对用户账号进行管理(对可以使用该系统的账号添加、删除),对银行数据进行备份管理。除此之外,管理员都可以进行账户管理(账户基本信息的添加、查询);挂失管理(可以对账户进行挂失和解冻);交易记录管理(查看、修改、删除)。普通账户可以进行用户账号管理(修改个人密码)和交易管理(查询余额、转账、取现、查看历史记录)。系统流程图如图4-1所示:用户账号管理用户账号管理账户信息管理账户信息管理挂失管理挂失管理YY交易记录管理是否为管理员交易记录管理是否为管理员退出退出开始数据管理数据管理NN账号管理账号管理交易管理交易管理图4-1系统流程图4.2后台数据库设计4.2.1存储过程(1)综述SQL存储过程经过该系统基本模块的实现,各个功能也日渐明了,接着的关键任务就是保存其庞大的数据,需要分析各个模块需要哪些表,各表需要有哪些字段,各个字段有哪些属性各表之间有哪些联系,设定各表的主键和外键等工作。这也就是简单的数据库设计。操作数据库的完整步骤为创建新的数据库、设置数据库名称、指定数据库的存储位置、完成事务日志文件、创建数据库完成、使用数据库、删除数据库。大学期间认真学习过数据库的触发器,其实,在接触到存储过程之后,认识到触发器就是存储过程,只不过是其中一种而已。两者客观看来就是在流程控制语句下的SQL语句,触发器和存储过程都对数据库起着非常重要的作用。存储过程完成过程中,会将编译后的SQL语句存储在数据库中,这些SQL具有与用户需求相关的功能,在使用这些SQL语句时,通过给定它的名称参数执行。本系统中采用的数据库是SQLSERVER2005,该版本的存储过程分为用户自定义的和系统自带的。用户自定义的存储过程可以根据用户自己的需求创建完成。系统自带的存储过程需要存储在master中,且可以和其他数据库相互调用,保证对数据库操作的顺利准确的完成。为了更好的满足本系统的需求,我采用了用户自定义的存储过程,不用在计算机上自己写SQL程序,节约了时间,方便管理。具体说来,其优点如下:存储过程执行速度快,因为使用存储过程时只需调用语句,不是SQL语句块,节省了网络流量,减少执行时间。并且,存储过程的安全性也足以令人放心,管理员可以授权给各个普通用户,避免普通用户破坏数据,保证了数据的完整完全。值得考虑清楚的是,存储过程与函数不同。虽然两者都有参数和返回值,但是函数可以直接被其他函数调用,而存储过程只有当名称前加上EXEC保留字时才能被调用。操作是否执行成功,由存储过程的返回值指示。存储过程可以有参数也可以无参数,无参数相对简单,如果是更新或者插入数据最好使用带有参数的存储过程,需要用到@符号。对于SQL数据库中最为核心的事务——存储过程,它可以常驻内存,由于数据量巨大时需要分页技术,ASP便保证了这一需要的实现。使用普通的SQL语句经常会丢失数据或者显示出现错误,因为SQL语句需要顺序读取。为了简单性和系统内存的最小利用原理,保证资源充分利用,我们更应使用存储过程。创建存储过程简单易行,只需平时常用的SQL语句和流程控制语句便可根据自己的需要完成。完成之后,这些相关的信息就会在服务器资源管理器中的节点下出现,点击运行该存储过程即可实现。4.2.2设计数据库中的表除了索引、存储过程,建表是创建数据库中最基本的操作。表就是客观存在的事物,我们也称之为实体,一个实体可以对应一张表或者多张表,这主要需要具体情况具体看待。而实体的属性,就是表中的字段。前面已经提到实体间的关系有一对一、一对多和多对多三种关系。表中的一对一关系描述主表和其他表的关联关系,需要借助外键。比如当学生信息表中学生学号唯一,成绩表中的学号可以设置为外键,二者构成一对一关系。对于一对多,是在理解一对一的基础上进行。比如每个班级很多学生,一个年级很多班级,这些构成了一对多关系。多对多的例子也很好找。餐厅吃饭,一道菜可以被很多人点,一个人也可以点很多道菜。为保证表的完整性,在建表过程中应注意基本表的几个特性。第一,原子性。表中字段为最小数据单位。第二,原始性。表中的数据时原始记录。第三,演绎性。由基本表和其他相关表可以共同到处需要的数据。第四,稳定性。保证表的长期储存。数据库中除了基本表外,临时表和中间表也较为常用。中间表之所以不是基本表是因为它没有属性。中间表不仅有自身的主键,还有其他两个表的主键,目的就是将这两个表关联起来,中间表起到桥梁作用。这是用于多对多的情况,若是一对多或者一对一便不需要使用中间表,两个表直接联系起来就可以。临时表的表名以“#”开头,将临时数据存放在临时表中,用户推出连接时数据库自动清空临时表的数据,提高了资源利用率。这种临时表称为本地临时表,只对用户自己可见,其他用户不可见。另外一种常用的临时表就是全局临时表,以“##”开头,它与本地临时表有两点不同。第一,当本用户断掉实例连接时,若该表还正在被其他用户使用,它的数据不能被清除。当所有用户断开对它的使用时,才会清除临时表的数据。第二,基于上述特性,该表对所有用户可见。建表过程离不开三大范式。第一范式对应属性的原子性,属性不可分割性。第二范式是第一范式的拓展,具体说就是若表中与主键的字段有依赖关系,则构成第二范式。第二范式也有唯一性要求。第三范式更进一层,避免了字段的冗余。但是冗余程度与数据的访问速率不成反比关系,关键看系统的实际要求。在数据库设计中更遵循第三范式。4.2.3设计局部E-R模式(1)实体和属性的定义:银行管理员的定义如图4-2所示:银行管理员银行管理员添加时间用户名密码权限添加时间用户名密码权限 图4-2银行管理员的定义普通账户的定义如图4-3所示:账户信息账户信息账号账号密码地址余额密码地址余额图4-3普通账户的定义交易记录信息的定义如图4-4所示:交易记录交易记录添加时间转账金额转入账户转出账户添加时间转账金额转入账户转出账户图4-4交易记录信息的定义(2)实体关系定义:实体关系(E-R)由实体、关系和属性三部分构成,主要通过单纯构造数据间的结构来展现它们之间的关系,与数据的处理过程无关。实体是指现实中的任何事物。属性是指各个实体具有的特点,可以表现它们的本质或非本质特点。联系是指实体之间存在的某种关系。E-R图简单易懂,主要用到四种基本图形:实体用矩形框表示,实体的属性用椭圆形框表示,实体之间的联系用菱形框表示,实体和属性通过直线连接起来,在直线上标明联系的种类。联系的种类则分为三种:一对一联系(1:1)、一对多联系(1:N)、多对多联系(M:N)。该银行交易系统的实体关系部分如下各图所示:一个管理员可以管理多个普通账户,一个普通账户被多个管理员管理。如图4-5所示:普通账户管理管理员普通账户管理管理员图4-5管理员与普通账户关系图(多对多的关系)一个管理员可以管理多个出入账信息,一个出入账信息被多个管理员管理。如图4-6所示:NNNN管理员出入账信息管理管理员出入账信息管理图4-6管理员与出入账信息关系图(多对多的关系)一个普通账户可以管理一个普通账号,一个普通账户被一个普通账号管理。如图4-7所示:1111管理普通账号普通账户管理普通账号普通账户图4-7普通账户与普通账号关系图(一对一的关系)总的关系图。如图4-8所示:权限密码用户名权限密码用户名NNNN银行管理员银行管理员管理管理管理管理1NN1NN1管理普通账号普通账户1管理普通账号普通账户账号余额账号余额姓名身份证姓名身份证图4-8总的E-R图4.2.4设计全局E-R模式E-R模型中只有实体、联系和属性。在应用中,数据库的用户往往有多个。设计数据库是我们应先考虑单个用户的需求,形成局部E-R模型。我们在做出局部的E-R模型之后,就要从全局出发,为系统构造全局的ER的模型。全局模型是局部模型的整合,保证了数据库的完整性。具体来说,设计全局ER模型步骤为:首先确定所有的局部ER模型,识别出这些局部公共的实体类型,然后将这些局部ER模型两两合并,检查这两个局部ER模型是否有冲突,如果有,将其消除,再次合并,检查是否还有其他冲突,直至没有冲突为止。依次将剩余没有合并的局部ER模式合并,直至所有的局部模型合并起来没有冲突为止。这里的关键是消除冲突。分析冲突的种类,大致分为属性冲突,命名冲突和结构冲突三种。属性冲突如计量单位不一致等。命名冲突如属性、实体或者联系的名称不一致,包括同名异义和异名同义。对于结构冲突,表现为实体间的联系在各个局部ER模式中呈现不同,或者实体的属性在局部ER模式中表现不同,再或者同一个对象的抽象也有不同。这些都是我们在消除冲突时应关注的地方。ER模型需要优化,最终应保证可以准确反映用户需求,实体个数和类型尽量少,实体所含属性个数尽量少,实体间联系也尽量少。4.2.5数据字典数据字典经常用在软件系统开发过程中的数据库部分,在系统的需求分析阶段结束后,需要将涉及到的实体和它们之间的关系制作成表,这些表形成了数据字典。数据字典预留在数据库中,是存储数据的数据,描述数据库中各类数据的属性等特征,是一个数据集合,方便管理人员对数据的分析和整理,是软件开发过程中必不可少的工具。数据元素、数据结构、数据流、数据存储和处理过程构成了完整的数据字典,可以手动存储和自动存储,属于文档类。数据字典描述数据和存储数据主要依靠数据项和数据机构。数据字典中最小的数据单位是数据项,一个数据结构由一个或几个数据项构成。数据字典中还可以包含用户的信息,用户的权限以及审计信息等,可以把数据字典当做数据库中心处理,任何相关数据都可以在数据字典中找到信息。数据流也由数据项构成,包括数据流名称、来源等。数据存储只涉及逻辑结构。处理过程是对流程图的一种解释说明,也是逻辑说明,不涉及物理结构。数据字典列表——数据流,如表4-1所示:数据存储名称:管理员信息数据来源:管理员信息表数据去向:管理员登录模块数据组成:管理员信息=管理员姓名+管理员密码+管理员权限+添加时间描述:存储了管理员的基本信息数据存储名称:银行普通账户信息数据来源:账户信息表数据去向:银行账户管理模块数据组成:银行普通账户信息=账号+密码+姓名+性别+身份证号+地址+余额+状态等描述:存储了银行普通账户的基本信息数据存储名称:交易记录信息数据来源:交易记录信息表数据去向:交易记录模块数据组成:交易记录信息=转出账号+转入账号+转账金额+添加时间等描述:存储了交易记录的基本信息数据存储名称:账户取现信息数据来源:交易记录信息表数据去向:交易管理模块数据组成:取现记录信息=账号+取现金额描述:存储了取现记录表4-1数据流(2)数据字典列表——数据处理,如表4-2所示和表4-3所示:表4-2数据处理1名称:身份验证名称:身份验证描述:银行管理员经过身份验证进入系统进行管理输入:银行管理员的用户名、密码过程:判断身份是否合法名称:查询银行交易系统中的信息描述:根据需求列出条件查询信息输入:输入与查询相关的条件过程:查询所需要的信息输出:查询得到的新的页面表4-3数据处理表4-3数据处理2名字:输入信息名字:输入信息描述:输入账户名称、密码、转账金额等相关信息输入:输入管理员和普通账户需要输入的信息过程:将需要输入银行交易系统中的数据输入输出:输入信息后新的页面名字:增、删、改、查信息描述:对普通账号的信息、交易记录增删改查输入:输入要增删改查信息过程:对需要修改的信息做处理输出:增删改查后新的页面(3)数据字典列表——数据存储,如表4-4所示:表4-4数据存储名字:数据库信息名字:数据库信息别名:无描述:存储了银行交易系统数据库的相关信息数据组成:数据库信息=管理员信息+普通账户信息+账户交易信息输出:所有相关信息的页面数据表图例allusers(用户)表,如表4-5所示:表4-5用户表序号列名数据类型大小允许空最大长度1IDint4否102usernamevarchar50是2553pwdvarchar66是2554cxvarchar50是2555addtimedatetime8是100Zhanghuxinxi(账户信息)表,如表4-6所示:表4-6账户信息表序号列名数据类型大小允许为空最大长度1IDint4否102zhanghaovarchar50否2553mimavarchar66否2554xingmingvarchar50否2555xingbievarchar50是2556shenfenzhengvarvhar50否2557dizhivarvhar50是2558yuefloat8否209zhuangtaivarvhar50否25510beizhuvarvhar50是25511addtimedatetime8是100Zhuanzhangjilu(账户记录)表,如表4-7所示:表4-7交易记录表序号列名数据类型大小允许为空最大长度1IDint4否102zhuanchuzhanghaovarchar50否2553zhuanruzhanghaovarchar50是2554zhuanzhangjinevarchar50是2555beizhuvarchar66是2556addtimedatetime8是1007leixingvarchar50否2555系统设计5.1系统设计综述系统首页是用户的登录界面,按照权限的不同分为管理员身份和普通账户身份。默认设置管理员名称为admin,密码为admin。普通账户的名称和密码由管理员录入。只有当各自名称和密码均相符时,才能进入各自的模块。如图5-1为系统设计流程图:开始开始登录系统登录系统NNN出错三次身份验证N出错三次身份验证YYYY进入系统进入系统操作系统操作系统退出系统退出系统图5-1系统设计流程图5.2系统操作模块5.2.1系统操作主界面若是超级管理员进入该银行交易系统后,可以看到有用户账号管理、账户管理、挂失管理、交易记录管理和数据管理模块。若是普通管理员进入该系统,则只能对账户管理、挂失管理和交易记录管理模块操作。若是普通账户进入该银行交易系统,则有用户账户管理和交易管理模块。主界面的设计看似简单,其实包含了三种不同的权限,超级管理员权限最大,可以管理普通管理员和普通用户。而普通管理员则相当于实体银行中柜员的身份,只可以管理自己的密码和管理普通账户。5.2.2用户账号管理模块该模块主要实现超级管理员对银行交易系统中用户账户管理。可以通过输入用户名和密码进行授予权限,也可以通过删除用户的信息达到回收权限的功能。图中有一位超级管理员“admin”,其密码为“admin”。还有另外三名普通管理员,分别为“b”、“c”和“d”,为方便管理,超级管理员模块中可以看到普通管理员的用户名、密码、添加时间等信息。若点击“删除”,可以取消该普通管理员对系统的操作权限,这样可以方便超级管理员的操作,提高了实际操作的可行性。此模块的操作界面如图5-2所示:图5-2用户管理界面此模块的实现代码如下:<%if(request.getSession().getAttribute("cx").equals("超级管理员")){ }else//否则的话,为登录失败{ out.print("<script>alert('对不起,您没有这个权限!!');history.back();</script>");}%><%@pagelanguage="java"pageEncoding="gb2312"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><%@pagelanguage="java"import="java.sql.*"%><jsp:useBeanid="connDbBean"scope="page"class="db.db"/><html><head><basehref="<%=basePath%>"><title>修改密码</title></head><body><formname="form1"id="form1"method="post"action="yhzhgl_post.jsp"><tablewidth="100%"border="1"align="center"cellpadding="3"bordercolor="#db7093"style="border-collapse:collapse"><tr><td>用户名:</td><td><inputname="username"type="text"id="username"/>*</td></tr><tr><td>密码:</td><td><inputname="pwd1"type="password"id="pwd1"/>*</td></tr><tr><td>确认密码:</td><td><inputname="pwd2"type="password"id="pwd2"/>*</td></tr><tr><td> </td><td><inputtype="submit"name="Submit"value="提交"onclick="returncheck();"/><inputtype="reset"name="Submit2"value="重置"/></td></tr></table></form><p>已有管理员列表:</p><tablewidth="100%"border="1"align="center"cellpadding="3"cellspacing="1"bordercolor="#db7093"style="border-collapse:collapse"><tr><tdbgcolor="f08080">序号</td><tdbgcolor="f08080">用户名</td><tdbgcolor="f08080">密码</td><tdbgcolor="f08080">权限</td><tdbgcolor="f08080">添加时间</td><tdbgcolor="f08080">操作</td></tr><%ResultSetRS_result=connDbBean.executeQuery("select*fromallusersorderbyiddesc");//在数据库中执行查询操作Stringid="";Stringusername="";Stringpwd="";Stringcx="";Stringaddtime="";inti=0;while(RS_result.next()){i=i+1;id=RS_result.getString("id");username=RS_result.getString("username");pwd=RS_result.getString("pwd");cx=RS_result.getString("cx");addtime=RS_result.getString("addtime");%><tr><td><%=i%></td><td><%=username%></td><td><%=pwd%></td><td><%=cx%></td><td><%=addtime%></td><td><ahref="del.jsp?id=<%=id%>&tablename=allusers"onclick="returnconfirm('真的要删除?')">删除</a></td></tr> <%}%></table></body></html>5.2.3账户信息添加模块该模块主要是通过管理员的操作实现账户基本信息的添加录入。需要用到账号、密码、姓名、性别、身份证号、地址、余额和状态等字段。账号、密码、姓名、身份证和余额为其中的必填信息,若其中有一项为填写,当点击提交按钮时,系统便会提示某项不得为空,请填写后再提交,这就保证了系统在录入账户信息时,避免了对账户信息重要数据的遗漏,便于对系统数据的录入和对数据的管理。该模块的操作界面如图5-3所示:图5-3添加账户界面此模块的实现代码如下:<%@pagelanguage="java"pageEncoding="gb2312"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><%@pagelanguage="java"import="java.sql.*"%><jsp:useBeanid="connDbBean"scope="page"class="db.db"/><html><head><basehref="<%=basePath%>"<title>帐户信息</title><LINKhref="CSS.css"type=text/cssrel=stylesheet><scriptlanguage="javascript"src="js/Calendar.js"></script></head><scriptlanguage="javascript">functioncheck()//验证所填表单信息是否为空,如果为空,弹出提示{ if(document.form1.zhanghao.value==""){alert("请输入帐号");document.form1.zhanghao.focus();returnfalse;}if(document.form1.mima.value==""){alert("请输入密码");document.form1.mima.focus();returnfalse;}if(document.form1.xingming.value==""){alert("请输入姓名");document.form1.xingming.focus();returnfalse;}if(document.form1.shenfenzheng.value==""){alert("请输入身份证");document.form1.shenfenzheng.focus();returnfalse;}if(document.form1.yue.value==""){alert("请输入余额");document.form1.yue.focus();returnfalse;}}functiongow(){ document.location.href="zhanghuxinxi_add.jsp?zhanghao="+document.form1.zhanghao.value;}</script><body><formname="form1"id="form1"method="post"action="zhanghuxinxi_add_post.jsp">//添加账户信息表单添加帐户信息:<br><br><tablewidth="100%"border="1"align="center"cellpadding="3"cellspacing="1"bordercolor="#db7093"style="border-collapse:collapse"><tr><td>帐号:</td><td><inputname='zhanghao'type='text'id='zhanghao'value=''size='50'/> *</td></tr><tr><td>密码:</td><td><inputname='mima'type='text'id='mima'value=''/> *</td></tr><tr><td>姓名:</td><td><inputname='xingming'type='text'id='xingming'value=''/> *</td></tr><tr><td>性别:</td><td><selectname='xingbie'id='xingbie'><optionvalue="男">男</option><optionvalue="女">女</option></select></td></tr><tr><td>身份证:</td><td><inputname='shenfenzheng'type='text'id='shenfenzheng'value=''size='50'/> *</td></tr><tr><td>地址:</td><td><inputname='dizhi'type='text'id='dizhi'value=''size='50'/></td></tr><tr><td>余额:</td><td><inputname='yue'type='text'id='yue'value=''/> *</td></tr><tr><td>状态:</td><td><selectname='zhuangtai'id='zhuangtai'><optionvalue="正常">正常</option><optionvalue="挂失">挂失</option></select></td></tr><tr><td>备注:</td><td><textareaname='beizhu'cols='50'rows='5'id='beizhu'></textarea></td></tr><tr><td> </td><td><inputtype="submit"name="Submit"value="提交"onClick="returncheck();"/><inputtype="reset"name="Submit2"value="重置"/></td></tr></table></form></body></html>5.2.4用户取现模块该模块主要针对普通账户,他们进入银行交易系统后可以输入取现金额,点击提交确认操作。普通用户登录系统之后,账号一栏便会自动提取到当前用户的账号,并显示在框中,用户只需输入所要提取的金额数量之后,点击确认即可。若是所取的数量大于账号中的余额,系统便会提示余额不足,请用户重新输入。此模块的操作界面如图5-4所示:图5-4用户取现界面此模块的实现代码如下:<%@pagelanguage="java"pageEncoding="gb2312"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><%@pagelanguage="java"import="java.sql.*"%><jsp:useBeanid="connDbBean"scope="page"class="db.db"/><html><head><basehref="<%=basePath%>"><title>转帐记录</title><LINKhref="CSS.css"type=text/cssrel=stylesheet><scriptlanguage="javascript"src="js/Calendar.js"></script></head><scriptlanguage="javascript">functioncheck()//验证需填账号处是否为空,若为空,弹出提示{ if(document.form1.zhuanchuzhanghao.value==""){alert("请输入转出帐号");document.form1.zhuanchuzhanghao.focus();returnfalse;}if(document.form1.zhuanruzhanghao.value==""){alert("请输入转入账号");document.form1.zhuanruzhanghao.focus();returnfalse;}}functiongow(){ document.location.href="zhuanzhangjilu_add.jsp?zhanghao="+document.form1.zhanghao.value;}</script><body><formname="form1"id="form1"method="post"action="zhuanzhangjilu_add_post2.jsp">//取现表单取现:<br><br><tablewidth="100%"border="1"align="center"cellpadding="3"cellspacing="1"bordercolor="#db7093"style="border-collapse:collapse"><tr><td>帐号:</td><td><inputname='zhuanchuzhanghao'type='text'readonly="readonly"id='zhuanchuzhanghao'value='<%=request.getSession().getAttribute("username")%>'size='50'/> *</td></tr><tr><td>取现金额:</td><td><inputname='zhuanzhangjine'type='text'id='zhuanzhangjine'value=''/></td></tr><tr><td> </td><td><inputtype="submit"name="Submit"value="提交"onClick="returncheck();"/><inputtype="reset"name="Submit2"value="重置"/></td></tr></table>

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论