摘 要: 任何一家企业中最为关键的肯定就是企业的财务管理。财务管理是企业管理的基础。伴随着信息化的浪潮,企业的财务管理需要优先考虑进行信息化改革。这样才能保证企业在行业竞争中不被落下。基于SSM的企业财务分析报告系统正是出于此环境下开发的一款企业财务管理系统。本系统使用JSP作为标记语言,并结合JavaScript+CSS等脚本语言实现了前端页面的展示,使用Java作为后台开发语言。数据存储则使用了MySQL数据库。结合MVC架构进行了开发。系统在开发过程中将其部署到Tomcat服务器进行系统测试。
本论文就企业的财务分析报告系统进行了详细且全面的论述。系统主要角色分为系统管理员和员工,其中系统管理员主要功能包括公司资产、经营、费用、员工等基本信息的管理,并可根据这些信息汇总数据查看报表;员工主要功能包括查看公司资产、经营、年终资产分析报表和个人工资情况等。使用本系统进行企业财务分析既能实现财务管理的规范化提升,同时也为财务管理分析提供便捷,提升了企业核心竞争力。
关键词:JSP;MySQL;财务管理;
1 引言
1.1 研究背景及意义
记得一位著名的会计师说过:“财务管理的核心是价值创造。”财务管理系统的目的是支持对公司财务管理进行最灵活、最高效的管理,以实现价值创造。除了初创型企业,目前还有多少正式企业可以离开财务管理系统?不能说没有,但几乎很少很少。独特的财务管理系统不仅高效,尤其是在数字经济浪潮中,而且数字财务管理系统可以实现科学卓越、标准化和精细化,并为企业和机构活动及创新提供强有力的支持。如今,无论是大、中、小企业,财务管理状况显然与企业生命线息息相关,几乎没有一家公司重视它[1]。
财务管理非常专业,涵盖业务的各个方面。而且轻微过失就容易导致违法行为,损害商业利益。财务管理软件在财务管理中的作用体现在改进、简化和标准化流程规划,以避免人为因素导致的风险。例如,财务管理软件可以简化和标准化财务流程,系统可以使用各种模块或系统自动记录和评估业务活动。财务系统更要与企业主营业务系统进行集成,以避免信息孤立,无法进行信息共享与交换,将主营业务数据转换为会计凭证和实时信息,来为管理分析提供基础。
1.2 研究现状
在国外,由于其信息化发展的比较早,所以国外大部分企业在企业财务管理上都已经完成了信息化改革。国外比较出名的财务软件比如SAP、Orcacle、Quicken等。这些在财务管理领域已经做到极致的软件核心业务也还是总账管理、固定资产管理、财务分析管理、核算管理等,并结合具体的业务系统,如采购管理系统、库存管理系统,将这些业务系统的数据汇总成报表与财务管理系统的数据进行交互后可以根据业务来划分出财务支出与收入等。
目前国内有很多优秀的企业管理软件,比如用友、金蝶等软件。用友财务云采用领先的大智物移云的技术,基于事项法会计理论,以业务事项为基础,实时会计、智能财务、精准税务、敏捷财资为核心理念,构建财务会计、管理会计、税务服务、报账服务、财资服务、企业绩效、电子档案服务、共享服务的全新一代财务体系。打造具备实时、智能、精细、多维、可视、生态的企业数智化财务云服务平台,助力企业财务数字化转型。
2 开发环境及技术介绍
2.1 开发环境
本系统的开发工作是在Windows系统进行的,使用MyEclipse作为系统开发工具,系统后台使用Java语言结合SSM框架进行开发,系统页面使用HTML+JavaScript+CSS等静态脚本语言结合JSP标记语言及其丰富的内置对象组件进行开发。数据库选用的是MySQL数据库,并结合Navicat数据库可视化工具进行辅助开发。系统在开发及测试阶段使用Tomcat服务器进行部署。系统基于B/S架构,系统部署完成后,在浏览器输入系统地址即可进行访问。
2.2 MySQL数据库
MySQL作为当先最为盛行的关系型数据库,被广泛的应用于各个领域的应用系统中。相较于其他的关系型数据库,比如SqlServer和Oracle,MySQL的安装包很轻巧,只有几百兆,而且其安装流程很简单,只需要傻瓜式的一直点下一步即可。相信就因为这一点对初学者来说都是相当友好的。另外MySQL还有很多特别,比如开源免费;兼容多种开发语言,移植性好,而且在MySQL中,数据库表名和字段名大小写不是敏感的,所以项目如果需要从其他的关系型数据库切换为MySQL,这样就会很方便,省去了很多不必要的工作。
2.3 IDEA介绍
IDEA作为一款当前比较流程的开发工具,它拥有丰富的整合能力,整合了包括GIT、Maven,其内部也包含了丰富的系统框架。另外使用过IDEA的开发者应该都知道,IDEA有丰富的快捷键及强大的代码提示功能,这就为有些对代码不是很熟悉的开发人员提供了很大的便利。且IDEA中支持精准搜索与替换功能。
2.4 JavaScrip简介
JavaScript作为一种即时编译的脚本语言,它轻量级的优点自然不用赘述。虽然它的出生是伴随着Web开发的,但不同的开发技术如雨后春笋般不断涌现之后,JavaScript为了生存下来,它也开始适应于非浏览器环境。JavaScript与Java一样,是可以面向对象变成的,所以学习过Java语言的同学,再学习JavaScript是很有助于理解的。另外JavaScript可以结合CSS制作很多有趣的页面效果,这也是JavaScript在大环境下仍然能盛行的一大原因[7]。
2.5 JSP简介
JSP技术最大的特点就是其跨平台支持做的很好,也就是可以将在任何平台开发的JSP页面运行在任意一台B/S架构的Web应用中。另外JSP中内置了很多的标签,且都是基于Java的,所以在JSP页面中可以灵活的使用Java语言来做协作开发。并完全支持编译,这一特性是其他的前端语言可玩而不可及的。而且JSP也可以通过创建独立的组件来供不同页面的调用,这一特性能为开发者节省很多的代码量,并提高了代码的复用性[8]。
3 系统分析
3.1 可行性分析
(1)技术可行性
本系统的开发所涉及到的开发技术及开发工具,学校均已开设过相关课程,另外本人在课余时间也曾对相关技术进行了补习。但任何一个项目的开发都不会是简单的,要想把系统做好就必须花相匹配的时间才行,所以只要肯花时间,认真思考,并借助强大的网络资源,相信本系统的开发是具备技术可行性的。
(2)经济可行性
经过完整的需求分析过后,确认本系统无需硬件设备的采购;另外在软件开发过程中所需要用到的开发工具如MyEclipse、Navicat、Tomcat等都是开源免费的,且各开发框架也都是开源的。本设计的开发工作只使用于校内答辩,暂时不涉及到服务器的购买,基于此,本系统具备经济可行性。
(3)操作可行性
本系统开发与系统测试阶段,都会保持人机交互简单的原则,比如在操作者填写表单的时候,如果有异常数据的录入,系统会及时进行提醒。另外由于系统是基于B/S架构的,操作者只需要一台可以安装浏览器的电脑即可输入系统网址进行系统操作。如果是在服务器本地操作系统,甚至于不需要联网即可进行系统操作。基于此,本系统具备操作可行性。
3.2 需求分析
系统需求分析顾名思义就是对系统用户提出来的需求进行详细的分析,包括系统需要解决的问题,以及怎样去解决这些问题。比如系统用户在输入数据后,经过系统运算或数据流转之后,系统需要输出什么数据反馈给客户。简而言之,系统的需求分析就是确定系统需要“做什么”。下面将详细介绍系统的需求分析过程。
本系统最终目的是根据企业经验数据汇总报表来解决企业财务分析问题。系统主要需要管理维护的数据包括企业的经验数据、费用支出、资产信息、员工工资等,以这些数据作为基本,来汇总不同层面的数据形成报表。企业高管则可以根据这些报表数据来分析公司的盈亏状况,并根据不同情况来制定不同的企业发展方向。
4 系统设计
4.1 系统设计概述
系统设计是在系统分析基础上通过抽象得到具体的过程,同时,还考虑到系统所实现的环境和主客观条件。
系统设计阶段主要目的是将系统分析阶段所提出的反映用户信息需求的系统逻辑方案转换成可以实施的基于计算机与通信系统的物理方案。
系统设计原则
(1) 易用性原则:方便上网客户浏览和操作,最大限度地减轻后台管理人员的负担,做到部分业务的自动化处理,提供良好的用户体验。
(2) 阶段开发原则:系统框架和数据结构全面设计,具体功能实现分阶段进行。
(3)业务规范化原则:在系统设计的同时,也为将来的业务流程制定了较为完善的规范,具有较强的实际操作性,也给整个系统带来安全性。
(4)可扩展性原则:系统设计要考虑到业务未来发展的需要,要尽可能设计得简明,各个功能模块间的耦合度小,便于系统的扩展。如果存在旧有的数据库系统,则需要充分考虑兼容性,比如说浏览器的兼容。
(5) 业务完整性原则:对于业务进行中的特殊情况能够做出及时、正确的响应,保证业务数据的完整性,减少数据的误读。
4.2 系统用例图
员工的操作:
(1)员工可以查看个人工资情况。
(2)员工可以查询公司资产情况。
(3)员工可以查询公司经营情况。
(4)员工可以查询公司费用情况。
(5)员工可以查询年终资产分析表。
员工用例图,如图4-1所示:
图 4-1 员工的用例图
管理员的操作:
(1)管理员可以管理部门信息。
(2)管理员可以管理员工信息。
(3)管理员可以管理员工工资信息。
(4)管理员可以管理资产信息。
(5)管理员可以管理经营信息。
(6)管理员可以管理费用信息。
管理员用例图,如图4-2所示:
图 4-2 管理员用例图
4.3 系统流程图
当管理员进入本系统之后,管理员首先要登录之后,才能管理后台。登录失败,给管理员相关的提示,请管理员重新登录。登录成功之后,管理员可管理员工、公司资产、经营、费用等信息。管理员的后台管理的基本流程如下图4-3所示:
图 4-3 管理员流程图
4.4 系统功能分析
图 4-4 系统后台功能图
管理员的所有模块的功能分析:
部门信息管理模块:对公司部门信息进行管理,包括部门信息的添加、修改、删除等。
员工信息管理模块:对公司员工信息进行管理,包括员工信息的添加、修改、删除等。
员工工资管理模块:对员工工资信息进行管理,包括员工工资的添加、修改等。
资产信息管理模块:对公司资产信息进行管理,包括资产信息的添加、修改、删除等。
经营信息管理模块:对公司经营信息进行管理,包括经营信息的添加、修改、删除等。
费用信息管理模块:对公司费用信息进行管理,包括费用信息的添加、修改、删除等。
年终资产分析模块:对公司产终资产情况进行分析,查看分析报表。
修改个人密码:管理员登录系统,可以修改自己的登录密码。
4.5 数据库结构设计
4.5.1 表概要说明
系统数据库db_cwgl中含有6张数据表,分别是部门信息表t_bumen、员工信息表t_zhigong、资产类别表t_catelog、经营信息表t_jingying、费用信息表t_feiyong、管理员信息表t_admin,本章将简单介绍其中一些表的结构。
4.5.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_jingying)
经营信息表主要用于保存企业经营信息,如项目名称、时间、投入等内容。该表结构如表4-4所示:
表4-4 t_jingying的结构
字段名 |
数据类型 |
长度 |
主键否 |
描述 |
id |
int |
4 |
是 |
自动编号 |
mingcheng |
varchar |
50 |
否 |
名称 |
riqi |
varchar |
4 |
否 |
日期 |
touru |
decimal |
8,2 |
否 |
投入 |
shouri |
decimal |
8,2 |
否 |
收益 |
lirun |
decimal |
8,2 |
否 |
利润 |
(5)费用信息表(t_feiyong)
费用信息表主要用于保存日常费用信息,如费用名称、发生时间、费用等内容。该表结构如表4-5所示:
表4-5 t_feiyong的结构
字段名 |
数据类型 |
长度 |
主键否 |
描述 |
id |
int |
4 |
是 |
自动编号 |
mingcheng |
varchar |
50 |
否 |
名称 |
shijian |
varchar |
4 |
否 |
日期 |
feiyong |
decimal |
8,2 |
否 |
金额 |
leixing |
int |
4 |
否 |
类型 |
(6)管理员信息表(t_admin)
管理员信息表主要用于保存管理员的基本信息,该表结构如表4-6所示。
表4-6 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)描述:系统管理员进入部门信息添加页面后,在表单中输入部门名称、人数及工资系数后,点击提交即可将请求提交到系统后台,后台接收到添加部门请求后,在业务逻辑层调用持久层方法,通过sql insert完成部门信息的添加操作。
(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 员工信息管理
员工信息管理关键代码:
publicvoid 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
List catelogList=new ArrayList();
TCatelog catelog=new TCatelog();
catelog.setId(rs.getInt("id"));
catelog.setName(rs.getString("name"));
catelogList.add(catelog);
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
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(?,?,?,?,?)";
req.setAttribute("message", "操作成功");
req.setAttribute("path", "jingying?type=jingyingMana");
String targetURL = "/common/success.jsp";
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(?,?,?,?)";
req.setAttribute("message", "操作成功");
req.setAttribute("path", "feiyong?type=feiyongMana");
String targetURL = "/common/success.jsp";
dispatch(targetURL, req, res);
}
public void feiyongMana
{
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 系统测试
系统测试是系统开发过程中最后一道关卡,也是对系统开发成果的把关。在系统开发中往往都只考虑了一些正常的情况来对系统进行开发,而忽视了很多异常情况。所以在系统测试阶段就需要对这些异常情况考虑在内。如果代码无法满足这些异常情况,则需调整代码,修改BUG。如果系统在未经过测试就交付,那后果无疑是灾难性的[12]。
6.1 测试方法
测试的方法可分二种:黑盒测试和白盒测试。
黑盒测试是系统开发测试中尤为重要的一步,黑盒测试之所以叫黑盒测试,是因为在进行黑盒测试过程中,将我们开发的系统程序看做一个未被打开的黑匣子。在未打开黑匣子之前,对其进行整体的测试,所以在测试过程中无需考虑其内部的总体结构或特性。只需将注意力集中在系统的外在功能上。说白了黑盒测试也就是测试系统暴露在外的系统模块功能,通过输入正确或错误的实例,去测试系统是否能正常输出系统用户期望的结果数据[13]。
白盒测试与黑盒测试从某种意义上将是相对的,黑盒测试注重外部功能,而白盒测试则需将注意力集中在系统程序代码的逻辑性上。也就是需要关注系统内部的结构或逻辑。比如开发者在程序 开发过程中经常要用的debug开发模式就是最常见的白盒测试实例。在业务代码中打上断点,再从前端输入测试数据之后,开发者进入断点来判断输入的参数和返回结果是否符合系统功能的要求。
6.2 测试用例
在测试过程中,不仅要保证单个模块的数据正确性,还需要保证整个系统数据流的正确。比如在新增某一子模块的数据时,其父模块在调用子模块的数据时,该新增的子模块数据是否正常展示在其中。再有比如在修改了某一子模块的某一数据后,其父模块中该子模块的相关信息是否同时进行了更变。另外一些有相互关联的模块直接,如果需要对某一模块数据进行删除,那其相关联的数据是否能保持正常,亦或是需要进行同步删除,这些都需要在系统测试过程中进行更细致的测试与调整。
测试如表6-1测试用例表所示:
表 6-1测试用例表
方法 |
目的 |
预期结果 |
过程 |
测试结果 |
比较 |
结论 |
功能测试方法 |
测试录入功能的正确性 |
有出错并弹出警告 |
在设置用户信息中并未填写任何内容,直接提交 |
无法保存,有出错警告 |
与预期结果相当 |
正确 |
功能测试方法 |
登录功能的正确性 |
有出错弹出警告,并返回登陆界面 |
在设置用户信息中并未填写任何内容,直接提交 |
登录出错,有出错警告,返回登录界面 |
与预期结果相当 |
正确 |
功能测试方法 |
修改信息功能的正确性 |
修改完成,提示完成并录入数据库 |
在修改用户信息处修改信息并提交 |
修改成功,并修改数据库中内容 |
与预期结果相当 |
正确 |
系统总体情况如下:
(1) 各功能模块都可以正常进行,基本实现了系统设计时的各项功能要求;
(2) 界面简洁,操作简单,系统使用方便;
本系统的下一步开发方向如下:
(1) 加强网站个性化设计;
(2) 加强网站人性化服务功能;
7 总结与展望
在毕业设计和开发期间,经过老师的指导和三个多月的认真学习,同时翻阅了大量的资料,终于完成了企业财务分析系统的开发设计。其功能基本符合用户需求,能够完成课题的提交。我感觉自己从理论到实践都有了长足的进步和很大的提高,使我在数据库设计方面、JSP编程技术方面有了长足的进步,对企业财务分析系统开发过程、步骤有了比较深刻的认识。
在系统开发之前,作为开发人员,必须要对开发系统有全方位的认识,例如该系统的特点、适用范围等,通过对系统的了解作为基础再对客户或使用者所需实现的功能进行分析并按照客户要求写出需求分析并设计初步方案。系统开发不仅仅是对代码的准确性的要求,而且要考虑系统的稳定性,实用性,开发过程中及时与客户交流,在开发过程中不断地改进代码,更加贴近客户需求。
设计实践上的体会:在这次做毕业设计的过程中,我对JSP等编程知识又有了更深层次的了解和应用,认识到自己很多的不足和对知识的不成熟,还需要多加锻炼并深入学习,在本次设计过程中所遇到的问题我尽量通过自己的方式进行解决,很大的提高了自己的自学能力,在没办法解决的情况下,对基地和学校老师进行认真的询问并解决问题,学到了很多知识,在这感谢老师对我的指导起到了画龙点睛的作用。
通过毕业设计,我还明白了一点,合作是至关重要的。虽然我是自己一个人为一组,但是在设计过程中也经常和同学们商量,相互借鉴。一个完整软件程序需要若干个人的通力合作。在企业财务分析系统开发过程中,我加强和同学们的沟通和交流,使得对每一个问题的解决获得较优的方案,从而保证企业财务分析系统系统的合理性、完整性,为该平台的进一步完善和扩充打下了良好的基础。
撰写毕业论文期间,我深刻体会到,实践到理论的重要性。在实践到理论的转化中,我将自己的工作过程清晰的展现在面前,而且增强了自己查阅资料的能力,获得了一些必要的知识。