对于企业集来说,财务管理的地位很重要。随着计算机和网络在企业中的广泛应用,企业发展速度在不断加快,在这种市场竞争冲击下企业财务管理系统必须优先发展,这样才能保证在竞争中处于优势地位。对此企业必须实现财务管理系统的设计与开发。
在这个系统中综合应用了MySQL、Servlet、JSP等知识。网页界面的结构设计以实用性出发,具有易于操作、简洁、方便等特点。在设计中,首先,运用HTML语言对网站的静态页面进行精细的加工并且在网站的美工方面取得了良好的效果。其次,对于Java编程、JSP的动态编程以及MySQL数据库进行努力学习和大量实践,并运用到了网站的建设中。
本报告就企业财务管理系统进行了详细全面的论述。访问本系统的用户分为、管理员和员工两种角色,管理员的功能有基础信息管理、公司资产、经营、费用信息的管理及年终资产分析表的生成;员工的功能有查看个人工资、查看公司资产、经营、费用及年终资产分析表。
JSP;MySQL;Servlet
目 录
1 系统概述与技术介绍.................................................................................. 2
3.5 数据库结构设计.................................................................................... 13
4 数据库设计与实现................................................................................... 14
4.1 数据库结构设计.................................................................................... 14
4.1.2 数据表的结构..................................................................................... 14
5 系统的详细设计与实现............................................................................ 18
5.1 系统登陆页面实现................................................................................. 18
5.2 管理员功能模块.................................................................................... 18
5.2.1 部门信息管理..................................................................................... 19
5.2.2 员工信息管理..................................................................................... 21
5.2.3 员工工资管理..................................................................................... 22
5.2.4 资产类别管理..................................................................................... 23
5.3.1 个人工资查看..................................................................................... 29
5.3.2 公司资产查询..................................................................................... 29
5.3.3 公司经营查询..................................................................................... 29
5.3.4 公司费用查询..................................................................................... 30
5.3.5 资产分析查看..................................................................................... 30
绪 论
财务管理工作随着我国市场经济的发展,在各个企业的管理中扮演着越来越重要的角色,渐渐起到不可替代的核心作用。对于大型企业集团来说,财务管理显得更为重要,财务管理系统的建立将直接受到企业集团管理方式的影响,直接影响企业的管理效率的经济效益。如何在现有经营环境下选择最佳的财务管理模式,使用最优的财务管理系统,实现企业的管理目标,适应企业信息化发展的需要,是一个值得研究和探讨的问题。
在信息时代,每个企业都紧跟步伐,逐渐转变着经营模式、办公模式。同时,各个企业的传统的管理的模式也在逐步由人工管理向着自动化管理模式转变,财务管理系统应运而生。无论是政府还是企事业单位,成员之间相互的信息沟通对于提高工作效率,更好完成工作显得特别重要。此外,每个单位都希望能和异地的分支机构、各个部门等保持实时联系,进行统一管理,因此,建立一个财务管理系统是可行的。在针对现有的系统进行调查之后,拟开发一套财务管理系统以适应信息化时代的财务管理需求。
我国的生产企业发展十分迅速。但企业的信息化管理一直是影响我国企业进一步发展的难点。企业信息化是企业应用信息化的主要过程,指的是在企业的各个层次,应用先进的通信、计算机、互联网和软件等信息化技术,并充分的整合、广泛的利用企业内外信息的资源,提高企业的生产、经营和管理的水平,增强企业的竞争力和过程。结合我国目前的国情来看,改革开放以来,我国的中小企业得到了迅速发展。这些中小企业存在着一定的普遍特征:资金不是十分雄厚,管理不是非常完善,信息化基础普遍较差,面临着异常激烈的市场竞争。
随着信息时代到来,企业的生存和竞争环境产生了根本性变化。当前中小型企业的信息化具有深刻的内容,其中管理信息化成为及其重要方面。如何运用信息的技术用来增强企业管理,对于如何制定企业信息化的发展战略用来提升企业的核心竞争力,怎样把信息化系统融入日常管理工作来为企业带来效益,是当前我们所面临的重要课题。
1 系统概述与技术介绍
作了一个管理系统,首先布局一定要新颖、有特色,只有这样才能引起用户的关注,最大限度的满足人们的需求,而且要有很强的易用性,易用性差的管理系统会让用户产生厌烦情绪。当然一个好的管理系统还要有很完整的处理信息的功能。通过对用户的调查和对现有的企业财务系统运行的流程分析,为了满足大多数用户的需求,我的目标是要构建一个页面简单清晰但包含信息相对全面、易用性强的中小型企业财务管理系统。
1.1 B/S结构介绍
B/S模式是一种以Web技术为基础的新型的MIS系统平台模式。把传统C/S模式中的服务器部分分解为一个数据服务器与一个或多个应用服务器(Web服务器),从而构成一个三层结构的客户服务器体系。
第一层客户机是用户与整个系统的接口。客户的应用程序精简到一个通用的浏览器软件,如微软公司的IE。浏览器将HTML代码转化成图文并茂的网页。网页还具备一定的交互功能,允许用户在网页提供的申请表上输入信息提交给后台,并提出处理请求。这个后台就是第二层的Web服务器。
第二层Web服务器将启动相应的进程来响应这一请求,并动态生成一串HTML代码,其中嵌入处理的结果,返回给客户机的浏览器。如果客户机提交的请求包括数据的存取,处理这一工作需要web服务器与数据库服务器协同完成。
第三层数据库服务器的任务类似于C/S模式,负责协调不同的服务器发出的请求,帮助管理数据库。
B/S模式首先简化了客户端。它无需像C/S模式那样在不同的客户机上安装不同的客户应用程序,而只需安装通用的浏览器软件。这样不但可以节省客户机的硬盘空间与内存,而且使安装过程更加简便、网络结构更加灵活。假设一个企业的决策层要开一个讨论库存问题的会议,他们只需从会议室的计算机上直接通过浏览器查询数据,然后显示给大家看就可以了。甚至与会者还可以把笔记本电脑联上会议室的网络插口,自己来查询相关的数据。其次,它简化了系统的开发和维护。系统的开发者无须再为不同级别的用户设计开发不同的客户应用程序了,只需把所有的功能都实现在Web服务器上,并就不同的功能为各个组别的用户设置权限就可以了。各个用户通过HTTP请求在权限范围内调用Web服务器上不同处理程序,从而完成对数据的查询或修改。现代企业面临着日新月异的竞争环境,对企业内部运作机制的更新与调整也变得逐渐频繁。相对于C/S,B/S的维护具有更大的灵活性。当形势变化时,它无须再为每一个现有的客户应用程序升级,而只需对Web服务器上的服务处理程序进行修订。这样不但可以提高公司的运作效率,还省去了维护时协调工作的不少麻烦。如果一个公司有上千台客户机,并且分布在不同的地点,那么便于维护将会显得更加重要。
再次,它使用户的操作变得更简单。对于C/S模式,客户应用程序有自己特定的规格,使用者需要接受专门培训。而采用B/S模式时,客户端只是一个简单易用的浏览器软件。无论是决策层还是操作层的人员都无需培训,就可以直接使用。B/S模式的这种特性,还使 MIS系统维护的限制因素更少。
最后,B/S特别适用于网上信息发布,使得传统的MIS的功能有所扩展。这是C/S所无法实现的。而这种新增的网上信息发布功能恰是现代企业所需的。这使得企业的大部分书面文件可以被电子文件取代,从而提高了企业的工作效率,使企业行政手续简化,节省人力物力。
鉴于B/S相对于C/S的先进性,本系统采用B/S结构,即Browser/Server(浏览器/服务器)结构,此结构就是只安装维护一个服务器(Server),而客户端直接用浏览器(Browse)就可以运行软件。它是随着Internet技术的兴起,对C/S结构的一种改进。主要利用了成熟的WWW浏览器的技术,结合多种Script语言(VBScript、JavaScript…)和ActiveX技术,是最新的系统构造技术。 在B/S体系结构系统中,用户可以通过浏览器向服务器发出请求,服务器对请求进行处理,将用户所需的信息返回到浏览器。而其余如数据请求、加工以及动态网页的生成、对数据库的访问以及应用程序的执行等工作全部由Web Server完成。
1.2 MySQL数据库
MySQL数据库是一个关系数据库管理系统,瑞典的MySQL AB公司是该数据库的原开发者,该公司于2008年被升阳微系统(Sun Microsystems)收购。2009年,被甲骨文公司(Oracle)收购升阳微系统公司,MySQL成为Oracle旗下产品。MySQL在过去由于成本低、稳定性好等优点已经成为最实用的开源数据库,被广泛地应用在Internet上的网站中。
1.3 MyEclipse介绍
本系统是跨越平台限制和跨越浏览器限制的充满动感的网页。构建财务管理系统所用的网页编辑器为MyEclipse, MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对开元产品十分不错。MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它,我们完全可以在数据库进行JavaEE的开发,以及对应用程序的服务器整合的极大提高了工作效率。它丰富了JavaEE的集成开发环境,并且包括了完整的编码、调试和测试功能,完全支持HTML, Struts, JSP, CSS, Javascript, SQL, Hibernate。
1.4 JavaScrip语言
Javascript是基于对象的脚本语言,主要是基于客户端运行的,用户点击带有Javascript的网页,网页里的Javascript就传到浏览器,由浏览器对此作处理。它的代码可以直接嵌入到HTML命令中,最大特点是可以方便操纵网站上的元素,并与Web浏览器交互,同时JavaScrip可以捕捉用户操作并作出反映。
JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言。同时也是一种广泛用于客户端Web开发的脚本语言,常常用来给HTML网页添加动态功能,比如响应用户的各种操作。JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观、模块化和可重复使用的方式进行程序开发。在HTML基础上,使用Javascript可以开发交互式Web网页。Javascript的出现使得网页和用户之间实现了一种实时的、动态的关系,使网页中包含更多 的活跃元素和更加精彩的内容。在本系统中很多地方使用了javascript技术,比如说,检验用户输入数据的有效性,是否重复,是否为空等等。
1.5 JSP技术
JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。JSP与Servlet一样,是在服务器端执行的,通常返回给客户端就是一个HTML文本,因此客户端只要有浏览器能浏览。JSP页面由HTML代码和嵌入其中的Java代码所组成。服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。JSP技术的优点:
(1)运行方便,编写好之后,不用做任何修改就可在系统上运行。
(2)具有强大的适应性,支持多平台并且可以再任意环境中进行部署。
(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
(4)多样化和功能强大的开发工具支持。Java已经有了许多非常优秀的开发工具,并且其中许多已经可以顺利的运行于多种平台之下
(5)支持服务器端的组件。web应用首先需要强大的服务器端的组件来支持,开发人员必须需要利用其他的工具设计来实现复杂功能的组件并供web页面调用,来增强系统性能。JSP可以使用非常成熟的JAVA BEANS 组件来实现比较复杂商务功能。
1.6 MVC模式
为了满足系统对先进性、安全性、跨平台性、可扩展性、可移植性、分布式等方面的要求,系统总体架构设计采用先进的基于java的B/S的三层体系结构。MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)[9]。 MVC模式目的就是为了实现Web系统的职能的分工。Model层实现系统中业务的逻辑,通常可以用JavaBean或EJB来实现。 View层用于用户交互,通常用JSP来实现。 Controller层是Model与View之间的沟通桥梁,它可以直接分派用户请求并且选择合适的视图以用于显示,同时它也可以解释用户输入并将它们映射为模型层可执行的操作。Web浏览技术已经广泛地应用于Internet,并被广大用户接受和使用。Web技术是随http和html一起出现的。Web服务器利用http传递html文件,Web浏览器使用http检索html文件。Web服务器一旦检索到信息,Web浏览器就会以静态和交互(如文本、图像)方式显示各种对象。在电子商务业务进行过程中,需要在各种贸易角色之间浏览和交换各种信息,此时就要使用Web浏览技术。 这种模型使系统结构更加清楚,分工更加明确,有利于整个系统后期的维护和升级。
MVC(Model View Controller)模型(model)-视图(view)-控制器(controller)MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器。使用MVC 的目的是将同一个程序可以使用不同的表现形式M和V的实现代码分离,。比如一批统计数据分别用柱状图、饼图来表示。C存在的目是确保M和V的同步,一旦M改变,V应该同步更新。模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到广泛的使用 ColdFusion 和 PHP 的开发者的喜爱。模型-视图-控制器模式是一个有用的模型,它的好处很多。
三层体系结构由浏览器、web服务器和数据库组成,并结合HTML语言、jsp、JavaScript脚本语言、Ajax、ODBC等技术,后台的数据库采用微软的SQL Server 2005,系统一般的MVC模型如图1-1所示。
图1-1 系统MVC结构图
如图1-1可知,用户界面层是用户和整个系统的接口,客户端只需安装通用的浏览器即可建立与本系统的连接。业务逻辑层负责处理用户输入的信息,或将这些信息发送给数据库层进行保存,或调用数据库层中的函数再次读出这些数据。数据访问层是整个体系的最底层,它主要实现与数据库交互,即完成数据库的增删改查功能,MVC是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。分层概念视图,模型,控制器。
视图是用户看到并与之交互的界面。对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷,它们包括Macromedia Flash和像HTML,XML/XSL,WML等一些标识语言和Web services。如何处理应用程序的界面变得越来越有挑战性。MVC一个大的好处是它能为你的应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。MVC模型还可以实现软件工程的高内聚,低耦合的终极目标。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制器接受用户的输入并调用模型和视图去完成用户需求。所以当单击网页中的超链接或者发送表单时,控制器本身其实并不输出任何东西也不做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求自己本身并不参与业务逻辑处理,然后再确定用哪个视图来显示返回的数据。
MVC的优点:
1)低耦合性
2)可适用性
3)较低成本
4)快速部署
5)可维护性
2 系统需求分析
2.1 开发环境
本系统的开发环境为Windows 7,数据库使用的是Oracle公司开发的的MySQL,发布使用MyEclipse工具。采用JSP为服务器端脚本环境,脚本语言使用JavaScript编写的财务管理系统,不需要安装客户端程序,客户端只需安装浏览器即可,使用方便,方便升级维护,方便与Internet和Internet上的应用程序集成。
2.2 需求分析
需求分析是指理解用户需求,估计软件风险和评估项目代价,就软件功能与客户达成一致,最终形成开发计划的过程。需求分析的重要性在于他具有决策性、方向性、策略性的作用,需求分析也就是软件定义的最后一个阶段,它的基本任务是回答“系统必须做什么” 这个问题。需求分析的任务是对目标系统提出完整、准确、清晰、具体的要求,而不是确定系统怎样完成他的工作,它在软件开发的过程中具有举足轻重的地位。
本课题解决的是基于JSP的中小型企业财务管理系统,包括了员工的基本信息的添加和管理以及对部门信息的管理,对员工的工资管理,设置以及查询功能公司的收入与支出金额的基本显示和费用的具体使用原因,公司资产信息管理,并能够根据公司今年的盈利情况初步计算出分红等基本功能的实现。
细节:用户登录,用户密码管理,系统使用完毕可以注销登录,安全退出。
2.3 可行性分析
(1)经济性
经济可行性研究是对组织的经济现状和投资能力进行分析,对系统建设运行和维护费用进行估算,对系统建成后可能取得的社会和经济效益进行估计。由于本系统是作为项目设计由我自己开发的,在经济上的投入甚微,系统完成之后为财务管理提供很大的方便,原因是服务器端的安装简洁明了,客户机不需再装任何软件,直接通过浏览器就可以访问,无论身在何处,只要可以访问Internet都可以使用本系统。本系统对计算机配置的要求不高,企业机房更换下来的低配置电脑都可以完全满足需要,所以在经济上具有完全的可行性
(2)技术性
技术可行性要考虑现有的技术条件是否能够顺利完成开发工作,软硬件配置是否满足开发的需求等。通过原有系统和开发系统的系统流程图和数据流图,对系统进行比较,分析其优越性,以及运行后环境等队其影响程度。软件开发涉及多方面的技术,包括开发方法、软硬件平台、网络结构、系统布局和结构、输入输出技术、系统相关技术等。应该全面和客观地分析软件开发所涉及的技术,以及这些技术的成熟度和现实性。在开发过程中,尽可能的采用成熟的技术,以便提高成功率,并且其优化程度好,可操作性强,鉴于以上原因,本系统开发工具是MyEclipse和MySQL数据库,开发语言是Java,主要使用了J2EE的技术,java是一种面向对象编程语言,简单易学而且灵活方便。大三时就学习了java课程,大四期间也系统的了解了J2EE的知识,财务管理系统总体上开发难度不高,数据库的设计和操作是本系统设计的核心。在大学期间学习过软件工程,软件测试,UML统一建模语言等课程,每个学期也会完成对应的课程设计,具备一定的系统分析、设计和测试能力。因此,完成系统实现在技术上完全具有可行性。
(3)操作性
本系统的开发,主要是对数据进行处理,包括数据的提交,以及数据的各种报表形式的输出,采用较为流行的JSP+MySQL的体系,操作相对简单,输入信息页面大多数都是下拉框的选择形式,在某些页面,信息可以自动生成,无需输入,时间的输入也是用的日历控件,操作简便,对用户的要求较低,只需对WINDOWS操作熟练,而且本系统可视性非常好,所以在技术上不会有很大难度。从时间上看,在三个月的时间里学习相关知识,并开发财务审批系统,时间上是有点紧,但是不是不可能实现,通过自己的努力实现基本功能。
(4)法律性
法律可行性是考虑开发系统是否存在任何侵犯、妨碍和责任问题。本系统是自行开发的管理系统,所有技术资料都为合法,开发过程中不存在知识产权问题,未抄袭任何已存在的的财务管理系统,不存在侵权问题,本系统是很有实际意义的系统,开发环境软件和使用的数据库都是开源代码,所以开发这个系统即法律上是可行的。
3 系统概要设计
3.1 系统设计概述
系统设计是在系统分析基础上通过抽象得到具体的过程,同时,还考虑到系统所实现的环境和主客观条件。
系统设计阶段主要目的是将系统分析阶段所提出的反映用户信息需求的系统逻辑方案转换成可以实施的基于计算机与通信系统的物理方案。
这一阶段的主要任务就是从管理信息系统的总体目标出发,根据系统分析阶段对系统逻辑功能的需求,考虑到经济、技术和环境等方面的条件,可以确定系统的总体结构和系统组成部分的方案,合理选择计算机和通信设备,提出系统的实施计划,确保系统总体目标的实现。
系统设计工作的特点:
1)在系统设计的阶段,大量的工作还是技术性的。
2)允许用户对已提出信息的需求做非原则性修改或着补充。
3)用户在操作使用环境等方面的要求也要在系统设计阶段加以说明并在系统的技术方案中得到反映,因此系统设计人员必须同管理环境打交道。
4)系统设计的环境是管理环境和技术环境的结合,是系统设计工作的重要特点也是整个系统成功的一个必不可缺的环节。
系统设计原则
1) 易用性原则:方便上网客户浏览和操作,最大限度地减轻后台管理人员的负担,做到部分业务的自动化处理,提供良好的用户体验。
2) 阶段开发原则:系统框架和数据结构全面设计,具体功能实现分阶段进行。
3) 业务规范化原则:在系统设计的同时,也为将来的业务流程制定了较为完善的规范,具有较强的实际操作性,也给整个系统带来安全性。
4) 可扩展性原则:系统设计要考虑到业务未来发展的需要,要尽可能设计得简明,各个功能模块间的耦合度小,便于系统的扩展。如果存在旧有的数据库系统,则需要充分考虑兼容性,比如说浏览器的兼容。
5) 业务完整性原则:对于业务进行中的特殊情况能够做出及时、正确的响应,保证业务数据的完整性,减少数据的误读。
3.2 系统用例图
员工的操作:
1、员工可以查看个人工资情况。
2、员工可以查询公司资产情况。
3、员工可以查询公司经营情况。
4、员工可以查询公司费用情况。
5、员工可以查询年终资产分析表。
员工用例图,如图3-1所示:
图 3-1 员工的用例图
管理员的操作:
1、管理员可以管理部门信息。
2、管理员可以管理员工信息。
3、管理员可以管理员工工资信息。
4、管理员可以管理资产信息。
5、管理员可以管理经营信息。
6、管理员可以管理费用信息。
管理员用例图,如图3-2所示:
图 3-2 管理员用例图
3.3 系统流程图
当管理员进入本系统之后,管理员首先要登录之后,才能管理后台。登录失败,给管理员相关的提示,请管理员重新登录。登录成功之后,管理员可管理员工、公司资产、经营、费用等信息。管理员的后台管理的基本流程如下图3-3所示:
图 3-3 管理员流程图
3.4 系统功能分析
图 3-4 系统后台功能图
管理员的所有模块的功能分析:
部门信息管理模块:对公司部门信息进行管理,包括部门信息的添加、修改、删除等。
员工信息管理模块:对公司员工信息进行管理,包括员工信息的添加、修改、删除等。
员工工资管理模块:对员工工资信息进行管理,包括员工工资的添加、修改等。
资产信息管理模块:对公司资产信息进行管理,包括资产信息的添加、修改、删除等。
经营信息管理模块:对公司经营信息进行管理,包括经营信息的添加、修改、删除等。
费用信息管理模块:对公司费用信息进行管理,包括费用信息的添加、修改、删除等。
年终资产分析模块:对公司产终资产情况进行分析,查看分析报表。
修改个人密码:管理员登录系统,可以修改自己的登录密码。
3.5 数据库结构设计
数据库是“按照数据结构来组织、存储和管理数据的仓库”。作为网络中的一个重要的应用,数据库在网站建设中起着非常重要的作用,对于普通网站相对而言,具有数据库功能的网站,我们通常称为动态页面,也就是说页面是动态的,它可以根据数据库中相应内容的调整而变化,使网站更新更便捷,维护更方便,内容更灵活。MySQL数据库作为Oracle推出的以标准数据库系统,由于具有操作简单、界面友好等特点,具有较大的用户群体。本系统数据库采用MySQL数据库,下面分别给出数据表概要说明。
4 数据库设计与实现
4.1 数据库结构设计
4.1.1 表概要说明
系统数据库db_cwgl中含有8张数据表,部门信息表t_bumen、员工信息表t_zhigong、员工工资表t_gongzi、资产类别表t_catelog、资产信息表t_zichan、经营信息表t_jingying、费用信息表t_feiyong、管理员信息表t_admin,本章将简单介绍其中一些表的结构。
4.1.2 数据表的结构
(1)t_bumen(部门信息表)
部门信息表主要用于保存单位的部门信息,如部门名称、人数、工资系数,该表结构如表4-1所示。
表4-1 t_bumen的结构
字段名 | 数据类型 | 长度 | 主键否 | 描述 |
id | int | 4 | 是 | 自动编号 |
mingcheng | varchar | 50 | 否 | 部门名称 |
renshu | int | 4 | 否 | 编制人数 |
xishu | decimal | 8,2 | 否 | 工资系数 |
(2)t_zhigong(职工信息表)
职工信息表主要用于保存职工的基本信息,如职工所在部门、姓名、性别等,该表结构如表4-2所示:
表4-2 t_zhigong的结构
字段名 | 数据类型 | 长度 | 主键否 | 描述 |
id | int | 4 | 是 | 自动编号 |
bumen_id | int | 4 | 否 | 所在部门 |
bianhao | varchar | 50 | 否 | 编号 |
loginpw | varchar | 50 | 否 | 登录密码 |
xingming | varchar | 50 | 否 | 姓名 |
xingbie | varchar | 50 | 否 | 性别 |
ruzhi | varchar | 50 | 否 | 入职时间 |
(3)t_catelog(资产类别表)
资产类别表主要用于资产类别信息,如类别名称,该表结构如表4-3所示:
表4-3 t_catlog的结构
字段名 | 数据类型 | 长度 | 主键否 | 描述 |
id | int | 4 | 是 | 自动编号 |
name | varchar | 50 | 否 | 类别名称 |
(4)t_zichan(资产信息表)
资产信息表主要用于保存资产基本信息,如资产类别、编号、名称、添加时间等,通过主键编号和产品类别来队公司的资产信息进行增删改查,内容包括资产的名称,修改时间,此资产的实际价值,资产的类型和本次资产产生的方式,例如出租,贷款等方式来反映。
(5)t_jingying(经营信息表)
经营信息表主要用于保存企业经营信息,如项目名称、时间、投入等内容。该表结构如表4-5所示:
表4-5 t_jingying的结构
字段名 | 数据类型 | 长度 | 主键否 | 描述 |
id | int | 4 | 是 | 自动编号 |
mingcheng | varchar | 50 | 否 | 名称 |
riqi | varchar | 4 | 否 | 日期 |
touru | decimal | 8,2 | 否 | 投入 |
shouri | decimal | 8,2 | 否 | 收益 |
lirun | decimal | 8,2 | 否 | 利润 |
(6)t_feiyong(费用信息表)
费用信息表主要用于保存日常费用信息,如费用名称、发生时间、费用等内容。该表结构如表4-6所示:
表4-6 t_feiyong的结构
字段名 | 数据类型 | 长度 | 主键否 | 描述 |
id | int | 4 | 是 | 自动编号 |
mingcheng | varchar | 50 | 否 | 名称 |
shijian | varchar | 4 | 否 | 日期 |
feiyong | decimal | 8,2 | 否 | 金额 |
leixing | int | 4 | 否 | 类型 |
(7)t_gongzi(工资信息表)
工资信息表主要用于保存职工工资信息,通过主键id使得员工能够登陆后查询自己的工资情况并且能使管理员对工资修改后,员工能够正确的看到工资的情况,此表中包括了职工信息,基本工资情况,工龄对工资的加成,职务和补贴对总工资的影响。
(8)t_admin(管理员信息表)
管理员信息表主要用于保存管理员的基本信息,该表结构如表4-8所示。
表4-8 t_admin的结构
字段名 | 数据类型 | 长度 | 主键否 | 描述 |
id | int | 4 | 是 | 自动编号 |
userName | varchar | 50 | 否 | 登录账号 |
userPw | varchar | 50 | 否 | 登录密码 |
5 系统的详细设计与实现
在管理系统的生命周期中,经过了需求分析、系统设计等阶段之后,便开始了系统的设计实施阶段。在系统分析和设计阶段,系统开发的工作主要是集中在逻辑和技术设计上,系统的实施阶段要继承此前各个阶段所实现的工作成果,将技术的设计转化为物理的实现,因此系统实施的成果其实是系统的分析和设计阶段的结晶。
5.1 系统登陆页面实现
1.描述:为了保证系统的安全性,要先使用本系统必须先登陆到系统中,用户需要正确的账号和密码登录本系统。
2.程序运行效果图如图5-1所示:
图5-1 系统登陆页面设计
3.在登陆页面输入用户名和密码以后,当点击提交按钮后,就会跳转到loginservice中,在该service中会对用户名,密码进行判断,验证通过进入对应的页面。
5.2 管理员功能模块
1.描述:管理员进入系统主页面,左方页面展示了管理员可操作的功能模块,进入相关的管理页面可以链接到子菜单,并且高亮显示,每个管理模块下面都有相应的子菜单。
2.程序运行效果图如图5-2所示:
图5-2管理员主页面
5.2.1 部门信息管理
1.部门信息录入
(1)描述:管理员输入部门信息相关正确信息后点击录入按钮,如果是没有输入完整的部门信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法οnsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。
(2)程序效果图如下图5-3所示:
图5-3 部门信息录入
2. 部门信息管理
(1).描述:管理员点击左侧的菜单“部门信息管理”,页面跳转到部门信息管理界面,调用后台的action类查询出所有的部门信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出部门信息。
(2).程序效果图如下图5-4所示
图5-4 部门信息管理
部门信息管理关键代码:
public void bumenMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
String sql="select * from t_bumen where del='no'";
req.setAttribute("bumenList", getBumenList(sql));
req.getRequestDispatcher("admin/bumen/bumenMana.jsp").forward(req, res);
}
3.部门信息修改
(1)描述:先是点击部门信息管理,页面跳转到部门信息管理界面,浏览所有的部门信息,点击要修改的部门信息,跳转到部门信息修改页面修改该条部门信息。
(2)程序效果图如下图5-5所示
图5-5 部门信息管理
4.部门信息删除
(1).描述:先是点击部门信息管理,页面跳转到部门信息管理界面,浏览所有的部门信息,点击要删除的部门信息,点击确定按钮,即可删除该部门信息。
(2).程序效果图如下图5-6所示
图5-6 部门信息删除
5.2.2 员工信息管理
1.员工信息录入
描述:管理员输入员工正确信息后点击录入按钮,如果没有输入正确的员工信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法οnsubmit="return checkForm()"来检查,checkForm()函数中是全部校验输入数据的方式。
2.员工信息管理
(1).描述:管理员点击左侧的菜单“员工信息管理”,页面跳转到员工信息管理界面,调用后台的action类查询出所有的员工信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出员工信息。
(2).程序效果图如下图5-8所示
图5-8 员工信息管理
员工信息管理关键代码:
public void zhigongMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
String sql="select ta.*,tb.mingcheng bmmc,tb.xishu from t_zhigong ta,t_bumen tb " +
"where ta.del='no' and ta.bumen_id=tb.id";
req.setAttribute("zhigongList", getZhigongList(sql));
req.getRequestDispatcher("admin/zhigong/zhigongMana.jsp").forward(req, res);
}
3.员工信息修改
描述:先是点击员工信息管理,页面跳转到员工信息管理界面,浏览所有的员工信息,点击要修改的员工信息,跳转到员工信息修改页面修改该条员工信息。
4.员工信息删除
(1).描述:先是点击员工信息管理,页面跳转到员工信息管理界面,浏览所有的员工信息,点击要删除的员工信息,点击确定按钮,即可删除该员工信息。
(2).程序效果图如下图5-10所示
图5-10 员工信息删除
5.2.3 员工工资管理
1.员工工资录入
(1).描述:管理员输入员工工资相关正确的信息后点录入按钮,如果没有输入正确的员工工资,一定会给出相应的错误提示,必定不能录入成功。输入数据都通过form表单中定义的方法οnsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。
(2).程序效果图如下图5-11所示:
图5-11 员工工资录入
2.员工工资管理
(1).描述:管理员点击左侧的菜单“员工工资管理”,页面跳转到员工工资管理界面,调用后台的action类查询出所有的员工工资,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出员工工资。
(2).程序效果图如下图5-12所示
图5-12 员工工资管理
3.员工工资修改
(1).描述:先是点击员工工资管理,页面跳转到员工工资管理界面,浏览所有员工工资,点击要修改的员工工资,跳转到员工工资修改页面修改该员工工资。
(2).程序效果图如下图5-13所示
图5-13 员工工资修改界面
5.2.4 资产类别管理
1.资产类别录入
(1).描述:管理员输入资产类别相关正确信息后点击录入按钮,如果是没有输入完整的资产类别,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法οnsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。
(2).程序效果图如下图5-14所示:
图5-14 资产类别录入
2.资产类别管理
(1).描述:管理员点击左侧的菜单“资产类别管理”,页面跳转到资产类别管理界面,调用后台的action类查询出所有的资产类别,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出资产类别。
(2).程序效果图如下图5-15所示
图5-15 资产类别管理
资产类别管理关键代码:
public void catelogMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
List catelogList=new ArrayList();
String sql="select * from t_catelog where del='no'";
Object[] params={};
DB mydb=new DB();
try
{
mydb.doPstm(sql, params);
ResultSet rs=mydb.getRs();
while(rs.next())
{
TCatelog catelog=new TCatelog();
catelog.setId(rs.getInt("id"));
catelog.setName(rs.getString("name"));
catelogList.add(catelog);
}
rs.close();
}
catch(Exception e)
{
e.printStackTrace();
}
mydb.closed();
req.setAttribute("catelogList", catelogList);
req.getRequestDispatcher("admin/catelog/catelogMana.jsp").forward(req, res);
}
3.资产类别删除
(1).描述:先是点击资产类别管理,页面跳转到资产类别管理界面,浏览所有的资产类别,点击要删除的资产类别,点击确定按钮,即可删除该资产类别。
(2).程序效果图如下图5-16示
图5-16资产类别删除
5.2.5 资产信息管理
1.资产信息录入
描述:管理员输入资产信息相关正确信息后点击录入按钮,如果是没有输入完整的资产信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法οnsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。
2.资产信息管理
(1).描述:管理员点击左侧的菜单“资产信息管理”,页面跳转到资产信息管理界面,调用后台的action类查询出所有的资产信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出资产信息。
(2).程序效果图如下图5-18所示
图5-18 资产信息管理
资产信息管理关键代码:
public void zichanMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
String sql="select ta.*,tb.name lbmc from t_zichan ta,t_catelog tb " +"where ta.catelog_id=tb.id";
req.setAttribute("zichanList", getZichanList(sql));
req.getRequestDispatcher("admin/zichan/zichanMana.jsp").forward(req, res);
}
5.2.6 经营信息管理
1.经营信息录入
描述:管理员输入经营信息相关正确信息后点击录入按钮,如果是没有输入完整的经营信息,都会给出相应的错误提示,不能录入成功。输入数据都通过form表单中定义的方法οnsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。
2.经营信息管理
(1).描述:管理员点击左侧的菜单“经营信息管理”,页面跳转到经营信息管理界面,调用后台的act ion类查询出所有的经营信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出经营信息。
(2).程序效果图如下图5-20所示
图5-20 经营信息管理
经营信息管理关键代码:
public void jingyingAdd(HttpServletRequest req,HttpServletResponse res)
{
String mingcheng=req.getParameter("mingcheng");
String riqi=req.getParameter("riqi");
String touru=req.getParameter("touru");
String shouyi=req.getParameter("shouyi");
String lirun=req.getParameter("lirun");
String sql="insert into t_jingying (mingcheng,riqi,touru,shouyi,lirun) values(?,?,?,?,?)";
Object[] params={mingcheng,riqi,touru,shouyi,lirun};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "jingying?type=jingyingMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
5.2.7 费用信息管理
1. 费用信息录入
描述:管理员输入费用信息相关正确的信息后点录入按钮,如果是没有输入正确的完整的费用信息,则都会给出对应的错误提示,如果不能录入成功。输入数据都通过form表单中定义的方法οnsubmit="return checkForm()"来检查,checkForm()函数中是各种的校验输入数据的方式。
2.费用信息管理
(1).描述:管理员点击左侧的菜单“费用信息管理”,页面跳转到费用信息管理界面,调用后台的action类查询出所有的费用信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出费用信息。
(2).程序效果图如下图5-20所示
图5-20 费用信息管理
费用信息管理关键代码:
public void feiyongAdd(HttpServletRequest req,HttpServletResponse res)
{
String mingcheng=req.getParameter("mingcheng");
String shijian=req.getParameter("shijian");
String feiyong=req.getParameter("feiyong");
String leixing=req.getParameter("leixing");
String sql="insert into t_feiyong (mingcheng,shijian,feiyong,leixing) values(?,?,?,?)";
Object[] params={mingcheng,shijian,feiyong,leixing};
DB mydb=new DB();
mydb.doPstm(sql, params);
mydb.closed();
req.setAttribute("message", "操作成功");
req.setAttribute("path", "feiyong?type=feiyongMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
public void feiyongMana(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException
{
String sql="select * from t_feiyong";
req.setAttribute("feiyongList", getfeiyongList(sql));
req.getRequestDispatcher("admin/feiyong/feiyongMana.jsp").forward(req, res);
}
5.2.8 年终资产分析
1.描述:管理员点击左侧的菜单“年终资产分析”,页面跳转到年终资产分析界面,调用后台的action类查询公司的资产信息,包括总资产,总收益及总费用,绑定到request对象,然后页面跳转到相应的jsp,显示年终资产分析表。
5.3 员工功能模块
5.3.1 个人工资查看
1.描述:员工点击左侧的菜单“个人工资查看”,页面跳转到个人工资查看界面,调用后台的action类查询出当前登录职工的工资信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出工资信息。
2.程序效果图如下图5-22所示
图5-22 个人工资查看管理
5.3.2 公司资产查询
1.描述:员工点击左侧的菜单“公司资产查询”,页面跳转到公司资产查询界面,调用后台的action类查询出当前公司的资产信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出资产信息。
2.程序效果图如下图5-23所示
图5-23 公司资产查询
5.3.3 公司经营查询
1.描述:员工点击左侧的菜单“公司经营查询”,页面跳转到公司经营查询界面,调用后台的action类查询出当前公司经营信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出经营信息。
2.程序效果图如下图5-24所示
图5-24 公司经营查询
5.3.4 公司费用查询
1.描述:员工点击左侧的菜单“ 公司费用查询”,页面跳转到公司费用查询界面,调用后台的action类查询出公司费用信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出费用信息。
5.3.5 资产分析查看
1.描述:员工点击左侧的菜单“资产分析查看”,页面跳转到资产分析查看界面,调用后台的action类查询出资产分析信息,并把这些信息封转到数据集合List中,绑定到request对象,然后页面跳转到相应的jsp,显示出资产分析信息。
2.程序效果图如下图5-26所示
图5-26 资产分析查看
6 系统测试
系统测试这一模块是系统开发过程的重要部分,是用来评定一个系统的品质或性能是否符合开发前所提出的部分要求。系统测试的目的是在系统投入运行前,对系统需求分析、设计说明和编码的最终复审,是系统的质量保证的关键。系统测试是为了发现错误而执行的程序过程。
在设计系统的过程中,存在一些错误是必然的。对于语句的语法错误,在程序运行时自动提示,并请求立即纠正,因此,这类错误比较容易发现和纠正。但另一类的错误是在程序执行的时候,由于不正确的操作或着对某些数据的计算公式运用错误导致的结果。这类错误隐蔽性极强,有时会直接出现,有时又不直接出现,因此,排查这一类动态的错误的是耗时费力的。
对于软件来讲,不论采用何种技术或方法,软件中仍然会有错。采用新的语言、新的开发方式、完善的开发过程,可有效减少错误的引入,但并是不可能完全杜绝软件中的错误,这些引入的错误则需要测试来找出,软件中错误的密度也需要测试来进行具体的估计。测试是所有工程学科的基本组成单元,是软件开发的重要部分。自有程序设计的那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%以上。而在软件开发的总成本中,用在测试上的开销要占30%到50%。如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有许多测试工作。
6.1 测试方法
测试的方法可分三种:传统测试方法、功能验证、系统测试。
传统测试方法包括简单的单元测试,通常由开发人员来执行。设计这些测试需要了解系统内部知识,并且这些测试几乎是针对产品的特定的部分。这些类型的测试非常适合与其他代码组件极少交互,甚至没有交互的简单部分。
功能验证也是一种测试过程,在这个过程中,对产品源代码了解有限的设计者进行测试以确认产品或服务的核心功能。设计这种测试是为了证明这个核心功能符合某个规范。举个例子,登录时输入的邮箱错误时是不是有提示?如果测试失败,通常就意味着检测到了系统的一个基本问题。这种测试也是适合简单的 Web 服务,使您可以检查服务是否能够正确执行它的各个功能。
系统测试通常是在功能验证阶段完成,验证了核心功能后进行。它倾向于把整个系统作为一个整体来查找问题。弄清Web服务作为系统的一部分怎样运作,以及Web服务之间如何的交互。由于系统测试实际是在开发生命周期快结束时才进行,所以经常不能给它分配充足的时间来完成。系统测试阶段常常被忽略,并且一些通常都可以发现的、极为少见的错误都不能被发现。即使发现了这种错误,这时也来不及确定错误的原因并设法修复它们了。因此,在查找代码错误时,必需把系统测试应用设计得尽可能高效。
6.2 系统测试结果
在系统开发完成后,对系统进行了测试,所用方法是系统测试和功能测试,
主要内容包括:
功能测试。即测试系统的功能是否正确,它的依据是需求的文档,如《产品需求规格说明书》。软件最重要的质量因素,所以功能测试肯定是必不可少的。
健壮性测试。即测试软件系统在异常情况下能否正常运行的能力。健壮性有两层含义:一是容错的能力,二是恢复的能力。
测试如表6-1测试表所示:
表 6-1测试结果表
方法 | 目的 | 预期结果 | 过程 | 测试结果 | 比较 | 结论 |
功能测试方法 | 测试录入功能的正确性 | 有出错并弹出警告 | 在设置用户信息中并未填写任何内容,直接提交 | 无法保存,有出错警告 | 与预期结果相当 | 正确 |
功能测试方法 | 登录功能的正确性 | 有出错弹出警告,并返回登陆界面 | 在设置用户信息中并未填写任何内容,直接提交 | 登录出错,有出错警告,返回登录界面 | 与预期结果相当 | 正确 |
功能测试方法 | 修改信息功能的正确性 | 修改完成,提示完成并录入数据库 | 在修改用户信息处修改信息并提交 | 修改成功,并修改数据库中内容 | 与预期结果相当 | 正确 |
系统总体情况如下:
(1) 各功能模块都可以正常进行,基本实现了系统设计时的各项功能要求;
(2) 界面简洁,操作简单,系统使用方便;
本系统的下一步开发方向如下:
(1) 加强网站个性化设计;
(2) 加强网站人性化服务功能;
总之,本此系统开发圆满成功,各模块运行正常。本次的设计开发为下一步的完善提供了重要的帮助和支持,将会更加提高我们的系统的功能。
总 结
在项目设计和开发期间,经过老师的指导和三个多月的认真学习,同时翻阅了大量的资料,终于完成了中小型企业财务管理系统的开发设计。其功能基本符合用户需求,能够完成课题的提交。我感觉自己从理论到实践都有了长足的进步和很大的提高,使我在数据库设计方面、JSP编程技术方面有了长足的进步,对中小型企业财务管理系统开发过程、步骤有了比较深刻的认识。
在系统开发之前,作为开发人员,必须要对开发系统有全方位的认识,例如该系统的特点、适用范围等,通过对系统的了解作为基础再对客户或使用者所需实现的功能进行分析并按照客户要求写出需求分析并设计初步方案。系统开发不仅仅是对代码的准确性的要求,而且要考虑系统的稳定性,实用性,开发过程中及时与客户交流,在开发过程中不断地改进代码,更加贴近客户需求。
设计实践上的体会:在这次做项目设计的过程中,我对JSP、servlet等编程知识又有了更深层次的了解和应用,认识到自己很多的不足和对知识的不成熟,还需要多加锻炼并深入学习,在本次设计过程中所遇到的问题我尽量通过自己的方式进行解决,很大的提高了自己的自学能力,在没办法解决的情况下,对基地和学校老师进行认真的询问并解决问题,学到了很多知识,在这感谢老师对我的指导起到了画龙点睛的作用。
通过项目设计,我还明白了一点,合作是至关重要的。虽然我是自己一个人为一组,但是在设计过程中也经常和同学们商量,相互借鉴。一个完整软件程序需要若干个人的通力合作。在中小型企业财务管理系统开发过程中,我加强和同学们的沟通和交流,使得对每一个问题的解决获得较优的方案,从而保证中小型企业财务管理系统系统的合理性、完整性,为该平台的进一步完善和扩充打下了良好的基础。
撰写项目报告期间,我深刻体会到,实践到理论的重要性。在实践到理论的转化中,我将自己的工作过程清晰的展现在面前,而且增强了自己查阅资料的能力,获得了一些必要的知识。
总之,在整个项目设计期间,我既有收获,也发现了自己的不足。今后,我一定更加努力,弥补自己的不足,提高自己的水平。
参考文献
[1] 张孝祥、徐明华, JAVA基础与案例开发详解, 清华大学出版社, 2009.
[2] 康牧,JSP动态网站开发实用教程,清华大学出版社,2009.
[3] 刘亚宾,精通Eclipse--JAVA技术大系,电子工业出版社,2005.
[4] 于万波,网站开发与应用案例教程,清华大学出版社,2009.
[5] 杨学瑜,高立军,软件开发过程与项目管理,电子工业出版社,2008.
[6] 张洁才,Java web应用开发教程,科学出版社,2005.
[7] 戴维尔,JavaScript程序员教程,电子工业出版社,2010.
[8] 黎连业、王华、李淑春,软件测试与测试技术,清华大学出版社,2009.
[9] 黄梯云著.管理信息系统.北京.电子工业出版社.2006 .
[10](美)John J.Patrick著.SQL基础(第二版).清华大学出版社.2004.
[11](美)David flanagan著. 《Java技术手册》(《Java in a Nutshell》) 《Java技术手册》(《Java in a Nutshell》)《Java in a Nutshell》.东南大学出版社.2006.
[12]黄裴、徐汀荣,电子商务原理与技术(第二版),科学出版社,2006年10月
[13] Juan Lipson Vuong.A semantics-based routing scheme for grid resource discovery[M].E-Science: First International Conference on E-Science and GridComputing,2005:58-70,90.
[14]Watts D J.Small Worlds. The dynamics of networks between order and randomness[P].America: 56A2579BB6,l999-05-13.
[15]Peter Rob, Carlos Coronel .Database Systems[M]. Cengage Learning EMEA, 2008
[16]BurgessR. S. DESIGNING CODASYL DATABASE PROGRAMS USING JSP[C].Information and Software Technology,Vol29,No3,1987:151-158
Java Server Pages(JSP)是一种基于web的脚本编程技术,类似于网景公司的服务器端Java脚本语言—— server-side JavaScript(SSJS)和微软的Active Server Pages(ASP)。与SSJS和ASP相比,JSP具有更好的可扩展性,并且它不专属于任何一家厂商或某一特定的Web服务器。尽管JSP规范是由Sun公司制定的,但任何厂商都可以在自己的系统上实现JSP。
在Sun正式发布JSP(Java Server Pages)之后,这种新的Web应用开发技术很快引起了人们的关注。JSP为创建高度动态的Web应用提供了一个独特的开发环境。按照Sun的说法,JSP能够适应市场上包括Apache WebServer、IIS4.0在内的85%的服务器产品。
本文将介绍JSP相关的知识,以及JavaBean的相关内容,当然都是比较粗略的介绍其中的基本内容,仅仅起到抛砖引玉的作用,如果读者需要更详细的信息,请参考相应的JSP的书籍。
1.1 概述
JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其在动态网页的建设中有其强大而特别的功能。JSP与Microsoft的ASP技术非常相似。两者都提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。下面我们简单的对它进行介绍。
JSP页面最终会转换成servlet。因而,从根本上,JSP页面能够执行的任何任务都可以用servlet来完成。然而,这种底层的等同性并不意味着servlet和JSP页面对于所有的情况都等同适用。问题不在于技术的能力,而是二者在便利性、生产率和可维护性上的不同。毕竟,在特定平台上能够用Java编程语言完成的事情,同样可以用汇编语言来完成,但是选择哪种语言依旧十分重要。
和单独使用servlet相比,JSP提供下述好处:
JSP中HTML的编写与维护更为简单。JSP中可以使用常规的HTML:没有额外的反斜杠,没有额外的双引号,也没有暗含的Java语法。
能够使用标准的网站开发工具。即使是那些对JSP一无所知的HTML工具,我们也可以使用,因为它们会忽略JSP标签(JSP tags)。
可以对开发团队进行划分。Java程序员可以致力于动态代码。Web开发人员可以将经理集中在表示层(presentation layer)上。对于大型的项目,这种划分极为重要。依据开发团队的大小,及项目的复杂程度,可以对静态HTML和动态内容进行弱分离(weaker separation)和强分离(stronger separation)。
此处的讨论并不是说人们应该放弃使用servlet而仅仅使用JSP。事实上,几乎所有的项目都会同时用到这两种技术。在某些项目中,更适宜选用servlet,而针对项目中的某些请求,我们可能会在MVC构架下组合使用这两项技术。我们总是希望用适当的工具完成相对应的工作,仅仅是servlet并不一定能够胜任所有工作。
1.2 JSP的由来
Sun公司的JSP技术,使Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求来变化的)。
Java Servlet是JSP技术的基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成,Servlet这个名称源于Applet,现在国内的翻译方式很多,本书为了避免误会,决定直接采用Servlet而不做任何翻译,读者如果愿意,可以称之为“小服务程序”。Servlet其实和传统的CGI、ISAPI、NSAPI等Web程序开发工具的作用是相似的,在使用Java Servlet以后,用户不必再使用效率低下的CGI方式,也不必使用只能在某个固定Web服务器平台运行的API方式来动态生成Web页面。许多Web服务器都支持Servlet,即使不直接支持Servlet的Web服务器也可以通过附加的应用服务器和模块来支持Servlet。得益于Java的跨平台的特性,Servlet也是平台无关的,实际上,只要符合Java Servlet规范,Servlet是完全与平台无关且是与Web服务器无关的。由于Java Servlet内部是以线程方式提供服务,不必对于每个请求都启动一个进程,并且利用多线程机制可以同时为多个请求服务,因此Java Servlet效率非常高。
但Java Servlet也不是没有缺点,和传统的CGI、ISAPI、NSAPI方式相同,Java Servlet是利用输出HTML语句来实现动态网页的,如果用Java Servlet来开发整个网站,动态部分和静态页面的整合过程会非常难以实现。为了解决Java Servlet的这种缺点,SUN推出了JSP。
许多年前,Marty受到邀请,参加一个有关软件技术的小型研讨会.坐在Marty旁边的人是James Gosling--- Java编程语言的发明者。隔几个位置,是来自华盛顿一家大型软件公司的高级经理。在讨论过程中,研讨会的主席提出了Jini的议题,这在当时是一项新的Java技术。主席向该经理询问他的想法.他回答说,虽然现在言之过早,但这看起来会是非常有前途的一项技术。他们会持续关注这项技术,如果这项技术变得流行起来,他们会遵循公司的“接受并扩充(embrace and extend)”的策略.此时, Gosling随意地插话说“你的意思其实就是不接受且不扩充(disgrace and distend)。”
在此, Gosling的抱怨显示出,他感到这个公司会从其他公司那里拿走技术,用于他们自己的目的.出人意料的是,形势已经完全不同。Java团队并没有发明这一思想----将页面设计成由静态HTML和用特殊标签标记的动态代码混合组成.。ColdFusion多年前就已经这样做了。甚至ASP(来自于前述经理所在公司的一项产品)都在JSP出现之前推广了这种方式。实际上,JSP不只采用了这种通用概念,它甚至使用许多和ASP相同的特殊标签。
JSP是建立在Java servlets模型之上的表达层技术,它使编写HTML变得更简单。像SSJS一样,它也允许你将静态HTML内容与服务器端脚本混合起来生成动态输出。JSP把Java作为默认的脚本语言,然而,就像ASP可以使用其他语言(如JavaScript和VBScript)一样,JSP规范也允许使用其他语言。
1.3 JSP的特点
按照脚本语言是服务于某一个子系统的语言这种论述,JSP应当被看作是一种脚本语言。然而,作为一种脚本语言,JSP又显得过于强大了,在JSP中几乎可以使用全部的Java类。
作为一种基于文本的、以显示为中心的开发技术,JSP提供了Java Servlet的所有好处,并且,当与一个JavaBeans类结合在一起时,JSP提供了一种使内容和显示逻辑分开的简单方式。分开内容和显示逻辑的好处是,更新页面外观的人员不必懂得Java代码,而更新JavaBeans类的人员也不必是设计网页的行家里手,就可以用带JavaBeans类的JSP页面来定义Web模板,以建立一个由具有相似的外观的页面组成的网站。JavaBeans类完成数据提供,这样在模板中就没有Java代码,这意味着这些模板可以由一个HTML编写人员来维护。当然,也可以利用Java Servlet来控制网站的逻辑,通过Java Servlet调用JSP文件的方式来将网站的逻辑和内容分离。
一般来说,在实际的JSP引擎中,JSP页面在执行时是编译式,而不是解释式的。解释式的动态网页开发工具如ASP、PHP3等由于速度等原因已经满足不了当前大型电子商务应用的需要了,传统的开发技术都在向编译执行的方式改变,如ASP→ASP+;PHP3→PHP4。
在JSP规范书中,并没有明确要求JSP中的程序代码部分(称为Scriptlet)一定要用Java来写。实际上,有一些JSP引擎就是采用的其他脚本语言,如EMAC-Script、WebL等,但实际上这几种脚本语言也是构建在Java上面,编译为Servlet来实现的。按照JSP规范书写,和Java没有任何关系的Scriptlet也是可以的,不过,由于JSP的强大功能主要在于能和JavaBeans、Enterprise JavaBeans共同运转,所以即使是Scriptlet部分不使用Java,编译成的执行代码也应该是与Java相关的。
1.4 JSP的机制
要理解JSP怎样联合以上各种所提到的技术的优点,从而轻而易举地实现各种效果,用户必须首先了解“组件为中心的网页开发”和“页面为中心的网页开发”的区别。
SSJS和ASP都是在几年前推出的,那时网络还很年轻,没有人知道除了把所有的商务、数据和表达逻辑统统堆进原始网页中之外还有什么更好的解决方法。这种以页面为中心的模型容易学习并且得到相当快速的发展。然而,随着时间的推移,人们认识到这种方法不适于构建大型的、可升级的Web应用程序。在脚本环境中书写的表达逻辑被锁在页面内,只有通过剪切和粘贴才能被重用。表达逻辑通常和商务及数据逻辑混在一起,这使得当程序员试图改变一个应用程序的外观而不想破坏与之紧密结合的商务逻辑时,应用程序的维护就变得十分艰难。其事实上,企业中可重用组件的应用早已经很成熟,没有人愿意为它们的应用程序重写那些逻辑。HTML和图形设计师把它们的设计的实施工作交给了Web编写者,使他们不得不加倍工作—— 常常是手工编写,因为没有合适的工具可以把服务器端脚本与HTML内容结合起来。简而言之,随着Web应用程序的复杂性不断提升,以页面为中心的开发方式的局限性变得明显起来。
与此同时,人们一直在寻找建立Web应用程序的更好方法,组件在客户机/服务器领域流行起来。JavaBeans和ActiveX被“快速应用程序开发”(RAD)工具发行商推广给Java和Windows应用程序开发者用来快速开发复杂的程序。这些技术使某领域内的专家可以为本领域内的垂直应用编写组件,而开发者可以直接拿来使用而不必掌握这一领域的专门技术。
作为一种以组件为中心的开发平台,JSP出现了。它以JavaBeans和Enterprise JavaBeans(EJB)组件包含商务和数据逻辑的模型为基础,提供大量标签和一个脚本平台用来在HTML页中显示由JavaBeans产生或回送的内容。由于JSP的以组件为中心的性质,它可以被Java和非Java开发者同样使用。非Java开发者可以通过JSP的标签(Tags)来使用高级Java开发者创建的JavaBeans。Java开发者不仅可以创建和使用JavaBeans,还能在JSP页中使用Java语言来更精密地控制基于底层JavaBeans的表达逻辑。
现在来看看JSP是如何处理HTTP请求的。在基本请求模型中,一个请求直接被送到JSP页中。JSP代码控制着进行逻辑处理时与JavaBeans组件的交互,并在动态生成的、混合了静态HTML代码的HTML页中显示结果。Beans 可以是JavaBeans 或EJB组件。另外,更加复杂的请求模型可看作从被请求页呼叫其他JSP页或Java Servlets。
JSP引擎实际上要把JSP标签、JSP页中的Java代码甚至连同静态HTML内容都转换为大块的Java代码。这些代码块被JSP引擎组织到用户看不到的Java Servlet中去,然后Servlet自动把它们编译成Java字节码。这样,当网站的访问者请求一个JSP页时,在它不知道的情况下,一个已经生成的、预编译过的Servlet实际上将完成所有的工作,非常隐蔽而又高效。因为Servlet是编译过的,所以网页中的JSP代码不需要在每次请求该页时被解释一遍。JSP引擎只需在Servlet代码最后被修改后编译一次,然后这个编译过的Servlet就可以被执行了。由于是JSP引擎自动生成并编译Servlet,不用程序员动手编译代码,所以JSP能带给你高效的性能和快速开发所需的灵活性。
和传统的CGI相比较,JSP有相当的优势。首先,在速度上,传统的CGI程序需要使用系统的标准输入输出设备来实现动态网页的生成,而JSP是直接和服务器相关联的。而且对于CGI来说,每一个访问就需要新增加一个进程来处理,进程不断地建立和销毁对于作为Web服务器的计算机将是不小的负担。其次,JSP是专门为Web开发而设计的,其目的是为了建立基于Web的应用程序,其中包含了一整套的规范和工具。使用JSP技术可以很方便地将一大堆JSP页面组合成为一个Web应用程序。
参考资料:
基于jsp的财务管理系统与实现(项目报告+中期报告+答辩PPT+源代码+数据库+部署视频)https://download.csdn.net/download/dwf1354046363/87813593Java毕业设计174例,包含部署视频_易小侠的博客-CSDN博客
https://cv2022.blog.csdn.net/article/details/124463185?spm=1001.2014.3001.5502