第一章 绪论
1.1课题来源
信息化的飞速发展,促使电脑和网络已经日益影响到了人们的日常和工作过程中,给我们带来了很大的方便,也使人们对电脑依赖性越来越强。各种各样的应用软件系统成为了人民的重要助手和有效工具,明显改变着人民的生活。
随着网络的普及,通过手写的方式在纸张上记录一些收支的做法已经逐渐被淘汰,已逐渐被在电脑上记录自己的收支情况的做法所取代。但是现在的问题是,当前市场中关于财务管理的软件系统大多数都是面向于企业需求,这些软件的价格都比较偏贵,也可能是专门针对某一领域而不具有通用性,免费的财务管理软件更是少之又少,为了满足中小企业及个体经营者的需求,特尝试开发此软件。
1.2系统结构模式的选择
一个计算机的结构模式有C/S和B/S两种基本模式。C/S即为客户/服务器模式。一般来说,服务器一般为性能比较优良的个人电脑和小型机等,才用的数据库也较为高级,如Sybase、SQL Server和Oracle等。而客户端指在终端安装客户端软件。B/S即为浏览器/服务器模式。在终端只需要通过浏览器就可以访问服务器。也一般安装Sybase、SQL Server和Oracle等数据库。
客户/服务器模式最主要的有点是可以利用终端计算机的处理能力,具有终端响应速度优越的特点,但是缺点也较为明显[1]:
第一,这种模式只比较适合于局域网,而这种模式系统的扩展性较差又不适合互联网的飞速发展潮流。
第二,需要在终端安装客户端程序。而这种程序的传输和携带都极为不便,很多数据信息都保存在了终端,对于终端设备的依赖性非常强,极其不方便。而且成本极高,不仅仅体现在软件程序上,还有使用的时间成本和方便性上。
第三,对于操作系统的兼容性也较差。对于不同的操作系统可能产生不适应的情形,尤其是对于Linux这样的操作系统。
而相应的,浏览器/服务器模式则完全不存在如上的3个缺点。
B/S主要最大的优点就是在每个都可以使用在任何地方,只需电脑连上网络,都不用维护。系统的可以进行非常容易的扩展,要满足条件后就可以上网,然后管理员随机分一个用户名和密码,就可以用了[2]。也可以在线申请,验证后安全认证后,不用人的参与,在我的这个系统可以自动分配给用户一个账号进入系统。由于B/S的种种优点,本系统采用了B/S模式。B/S结构维护方便,能够降低总体拥有成本。
1.3 核心框架三层架构
系统的核心框架三层架构指用户界面表示层(USL)、业务逻辑层(BLL)、数据访问层(DAL) ,BLL将USL与DAL隔开了,并且加入了业务规则。多了一个中间层,也称为组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构。三层是指逻辑上的三层,即使这三个层放置到一台机器上, 三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交换[3]。
1.3.1 各层的作用
各层作用如下:
(1)数据访问层:其最主要的功能是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,换一句话说,数据访问层就是是对数据的操作,其主要负责的是具体为业务逻辑层或表示层提供了一些数据服务等。
(2)业务逻辑层:就是主要是针对具体逻辑问题的操作,换一句话说其就是对数据层操作,对数据业务进行了逻辑处理让层次更加清晰更加具有逻辑性,如果说数据层是建筑,那逻辑层就是对这建筑上的每一块砖头。
(3)表示层:主要表示网页的方式, 如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
1.3.2 各层具体的区分方法
数据访问层:简单可以理解为是对如何能实现不同类型的数据库的动态的切换,而我们不需要修改任何的程序功能等,
业务逻辑层:主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。
表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。
1.4 软件测试概述
1.4.1测试的重要性
大型软件开发过程中,面对复杂的问题,人为的配合不可能没缺憾,因此,在软件生命周期的各个阶段难免会出现差错。如果在软件投入运行之前,没有发现并纠正软件中的大多数差错,这些问题就会迟早在生产过程中暴露,那时不仅改正这些差错的代价更高,而且会造成更严重的后果。测试的目的就是在软件投入生产性运行之前,尽可能地发现其中的错误。目前软件测试是保证软件质量的重要步骤,它是对软件的规格说明、设计和编码的最后复审。
1.4.2单元测试的简介
单元测试是在软件开发过程中独立单元将在与程序的其他部分相隔离的情况下进行测试。没有实际给多数用户测试的软件总是潜在着许多善未发现的问题。本系统虽然基本实现了其功能,满足了客户需求,但使用过程中还会存在一些问题,今后会更进一步优化,希望能被广大用户接受。
在开发每一个模块后,为了保证程序正常运行,一定要对模块进行单元测试。单元测试在开发中非常重要,只有通过单元测试才能发现模块中存在的不足之处,才能及时更正程序中出现的错误。
1.4.3 测试的目的
一般来说,软件系统的测试一般包含以下目的:
软件测试的目的:
第一:保证软件的高质量;
第二:确定软件的可行性;
第三:为风险评估做准备,反馈给开发者信息;
第四:确定产品本身是否存在缺陷等作用。
1.5本课程设计的意义
本课程设计具有如下几点现实意义:
第一,开发一个简单的但是较为完善、扩展性强、稳定性好的财务管理系统,能够有良好的人机交互功能,用户界面直观、友好、简便。
第二,可以为小企业和个体经营者能够清晰自己的现金流状况、工资发放情况,以及财务专员的财务统计。
第三,财务管理系统完全实现无纸化的运作流程,节约人力成本,避免造成不必要的浪费,方便统计以及打印输出。
第二章 开发技术及开发工具简介
这一章主要是在开发过程中所用到的开发技术和工具来介绍,包括ASP.NET 、Visual Studio 2010和SQL Server 2008的简介,并在介绍这些技术和工具的过程中通过分析其优点或与其他同类产品的比较来论述选择它们的原因。
2.1 ASP.NET 简介
本系统选择了微软.NET技术框架平台作为主导,一方面考虑到当前的微软的发展飞速,越来越多的企业将微软平台作为首选方案;其主要有逻辑布局都非常容易,而且性能好。
在兼容性上,ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是 Active Server Page (ASP) 的下一个版本;它还提供了一个统一的 Web 开发模型,其中包括开发人员生成企业级 的各种服务。可以逐渐添加 ASP.NET 功能,增加 应用程序功能。
2.2 Visual Studio 2010 简介
Visualstudio.NET 2010里面有包含了很多高效率又智能的开发工具,然后不管你不是是为开发初学者,还是为了丰富经验的开发团队都提供了强大的作用。
2.3 SQL Server 2008数据库简介
SQL全称是“Structured Query Language(结构化查询语言)”,它是用于与数据库通信的语言。SQL是一个非过程化的语言,它实行的是一次处理一个记录。所有SQL语句使用查询优化器,决定对指定数据存取的最快的方法[11]。以下是SQL Server的浏览器/服务器结构,图2-1所示:
图2-1 SQL Server的浏览器/服务器结构
浏览器端口可以通过发送一条消息或一个操作来启动服务器与数据库之间的交互,而服务器在获取数据后通过返回消息进行响应。
综上,本系统的开发采用的语言:C#
开发工具:Microsoft Visual Studio 2010
操作系统:Windows XP professional
后台数据库:Microsoft SQL Server 2008
第三章 系统需求分析
软件开发中一个至关重要的问题是需求分析。然后继续弄清用户需求,这样子之后才可以开发出满足用户需要的系统,发挥系统作用,避免了开发人员在开发过程中因与用户需求的不一致,而导致的浪费。
3.1财务管理系统的流程描述
本系统主要有三种角色,分别为管理员、财务专员和员工。职能如下,
1)管理员:可以进行本系统任何一项操作,工资设定等。
2)财务专员:除了基本信息编辑外,其他的都可以操作。
3)员工:只能查看自己的工资情况以及公司简介
3.2功能描述
本财务管理系统的功能包含以下几个方面:
1)信息编辑
对于信息编辑主要有三个角色的用户,分别为管理员、财务专员以及员工。只有管理员方可操作,能对三种角色进行添加、更新、删除等一系列基本操作。本系统三种角色的用户信息统一存在一张表,表中有字段用来区分为何种角色。
2)登账模块
只有管理员以及财务专员的角色,才可以操作此模块的内容,可以先设置登账的类型,比如工资支出或是财务收入,然后方可选择进行登帐,登账记录金额等相关信息。
3)工资设定
只有管理员以及财务专员的角色,才可以操作此模块的内容,每个月只能设定一次,设定错误可以删除,重新设定。
3.3 系统功能结构
了解系统的业务流程之后,根据系统的业务流程及总体规划设计的功能结构图如下:
系统功能结构图 3-1
第四章 数据库设计
4.1系统数据流图
财务管理系统的数据流图举例如下:
图4-1用户综合管理流图
4.2数据库结构设计
4.2.1数据库概念结构
由于管理系统在本质上是处理信息的系统,所以,在软件的整个开发过程中,都应该考虑这两方面:“数据”和对数据的“处理”。在需求分析阶段则即要分析用户需要有哪些数据,数据间有何种联系,数据本身有哪些性质,数据的结构等,又要分析用户的处理品要求,包括对数据进行哪些处理,每个处理的逻辑功能等。
通常,软件系统中有许多数据是需要长久存储的,为了修改简化数据过程,减少数据冗余,应该对数据进行规范化。财务管理系统E-R图如下所示:
图4-2 财务管理系统E-R图
4.2.2 逻辑结构设计
本数据库名称为:FinanceSystem,表结构设计阐述如下。
表4-1:Finance_EACate,登帐类别信息表。主要是用来存放登帐类别,如每日基本消费或是工资支出等,主要是OutOrIn用来区分是支出还是收入,方便统计。
表4-1 Finance_EACate
序号 列名 数据类型 长度 小数位 标识 主键 允许空 说明
1 CateID int 4 0 是 是 否 ID
2 CateName nvarchar 50 0 是 名称
3 OutOrIn nvarchar 20 0 是 收入或支出
表4-2 表名:Finance_EALog,登帐记录信息表。主要是用来存放登帐记录,有报销者以及登帐者信息,还有登帐金额类型等。
表4-2 Finance_EALog
序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明
1 LogID int 4 0 是 是 否 ID
2 CateID int 4 0 是 所属登帐类别
3 EAUserID int 4 0 是 登帐ID
4 UserID int 4 0 是 报销者ID
5 Price decimal 9 0 是 数目
6 EATime datetime 8 3 是 时间
7 Remark ntext 16 0 是 备注
如表4-3,表名:Finance_Pay,工资信息表 ,主要是存放工资设置的信息。
表4-3 Finance_Pay
序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明
1 PayID int 4 0 是 是 否 ID
2 UserID int 4 0 是 员工ID
3 BasePay decimal 9 0 是 基本工资
4 Award decimal 9 0 是 奖金
5 RealPay decimal 9 0 是 总工资
6 PayUserID int 4 0 是 操作ID
7 PayTime datetime 8 3 是 getdate
如表4-4 表名:Finance_User用户信息表 主要是用来存放用户信息。有三种角色的用户信息都是存放在此表中,然后用字段区分开。
表4-4 Finance_User
序号 列名 数据类型 长度 小数位 标识 主键 允许空 默认值 说明
1 UserID int 4 0 是 是 否 ID
2 UserName nvarchar 50 0 是 用户名
3 RealName nvarchar 20 0 是 真实姓名
4 Password nvarchar 50 0 是 密码
5 Position nvarchar 250 0 是 职务
6 CardID nvarchar 20 0 是 身份证号码
7 Status int 4 0 是 状态
8 Intro ntext 16 0 是 简历
9 Mobile nvarchar 20 0 是 手机号码
10 QQ nvarchar 20 0 是 QQ
11 Email nvarchar 250 0 是 邮箱地址
12 Address nvarchar 250 0 是 地址
13 UserType int 4 0 是 用户类型权限(管理员、财务专员、员工)
14 LoginTimes int 4 0 是
15 LastLoginIP nvarchar 20 0 是
16 LastLoginTime datetime 8 3 是 getdate
第五章 系统详细设计及测试
本系统主要包含以下几个方面,系统登录、管理员首页、公司简介、工资列表信息、基本信息显示及添加、登帐记录和查询以及系统设置。
5.1 系统登录
系统登录,如图5-1所示:
图5-1系统登录图
在登录登录页面中,使用了验证码来验证,防止恶意登录,造成系统崩溃,如图5-2所示。在点击按钮进行登录的过程如下:
(1)利用JQuery判断是否输入用户名、密码、和验证码,避免浪费不必要的时间与服务器进行验证;
(2)当用户名、密码和验证码都有值时,判断验证码文本框的值与用session记录下来的验证码的值是否一致,一致则进行下一步;
(3)判断用户名是否存在;
(4)判断密码是否正确;
(5)当输入的信息与数据库某条记录一致,即可登录本系统,本系统将采用cookie来记录登录信息,并且跳到主界面。
图5-2 验证码测试界面
5.2管理员首页
管理员首页,如图5-3所示:
图5-3管理员首页图
管理员首页,直观简洁。分别为头部标题,右边菜单和左右内容,以及地步版权。除了中心内容外,头部和底部还有菜单全部采用自定义控件,方便控制,以及不必要的浪费时间。本页主要是显示个人信息,显示何时登录以及登录Ip等一切登录信息,让用户核对,是否哪时被他人登录,避免不必要的麻烦。可以及时更新密码等一切手段。主要流程:
(1)判断是否登录(以下都省去这一步,操作本系统,必须登录,如果想投机取巧访问本系统的,也会跳到登录页面)。
原创文章,作者:Editor,如若转载,请注明出处:https://www.diyilunwen.com/lwfw/cwgl/1871.html