工资管理系统软件工程课程设计2Word下载.docx
《工资管理系统软件工程课程设计2Word下载.docx》由会员分享,可在线阅读,更多相关《工资管理系统软件工程课程设计2Word下载.docx(40页珍藏版)》请在冰豆网上搜索。
包括职工编号、职工姓名、性别、年龄、职位等。
工资级别和工资金额:
包括工资等级、工资额。
企业部门及工作岗位信息:
包括部门名称、工作岗位名称、工作岗位工资等。
工龄和工资金额:
包括工龄及对应工资额。
工资信息:
包括职工编号、职工姓名、职工基本工资、职工岗位工资、职工工龄工资、公司津贴、职工实发工资等。
1.4课程设计要求
坚持“规格严格,功夫到家”的优良传统,加强基本功训练,做到理论与实际相结合,继承与创新相结合,充分发挥学生的主观能动性与教师因材施教、严格要求相结合,抓智力因素教育与非智力因素教育相结合,教书育人。
所设计的工资管理系统应包含输入输出、修改、删除、查询等基本功能。
根据题目的基本需求,画出流程图、用例图、类图等,编写程序,并写出详细的设计说明书。
课程设计过程中,要严格遵守课程设计的时间安排,听从指导教师的指导。
正确地完成上述内容,规范完整地撰写出课程设计报告。
1.5预期目标
计划设计:
对于企、事业单位的工资发放来说,不需要太大型的数据库系统,只需要一个操作方便,功能实用,能满足财务部门对工资及时的发放。
本工资管理系统预期目标就是实现如下的一些功能:
查询浏览记录功能,增加记录功能、修改记录功能、删除记录功能、刷新记录功能、最后实现统计计算功能。
1.6系统环境
1.6.1硬件:
个人PC
1.6.2软件:
WindowsXP、MicrosoftVisualC++6.0、RationalRose。
第二章可行性分析
2.1可行性研究前提
要求:
满足对工资管理的基本要求及功能,并对职工信息收集、处理、保存。
目标:
实现无纸化办公,节省成本,提高工作效率。
条件、假定、限制:
当企业工资管理的信息量和复杂程度达到某一限度时,即管理人员的劳动强度超过其承受能力时,就必须采用新的管理手段,如用计算机技术对信息的收集、加工、传递和存贮等,这样,一个工资管理系统就可以对企业职工工资进行高效、合理、恰当地管理。
2.2经济上可行性
开发成本要低廉。
效益:
大幅度地提高工资管理信息系统的工作质量和效率,让企业掌握整个工资管理系统的全面情况,为管理人员提供了准确的工资管理信息,促进工资管理工作的规范化及各项管理制度与指标体系的建立和健全;
提供各种加工处理了的工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍提出的新要求。
效益/投资比:
暂时无法估算。
投资回收期内:
(1)企业有能力承担系统开发费用。
(2)新系统将为企业带来经济效益。
管理系统是一个信息化、智能化和先进。
理理念的集合体。
而管理是一个动态过程,在其运行过程中要采取多项措施。
其最主要的表现就是减少了企业管理费用和人力开支。
2.3技术可行性
(1)软件需求:
操作系统WINDOWS2000AdvanceServer以上。
硬件需求:
赛扬1.7GCPU、512M内存80G硬盘的计算机。
(2)本系统采用VC++实现,依靠其强大的面向对象系统,与数据库管理系统相结合。
(3)要求掌握计算机技术,熟悉系统的功能和使用方法使系统能够顺利运行。
2.4目标方案可行性
计算机设备处理繁杂的工资增减问题,大幅度减少人力、物力,极大地提高企业的管理水平和管理效率。
管理水平和管理效率的提高能直接产生经济效益。
高效率的管理形成了良好的经营氛围,为企业打造优良形象,提高企业竞争力。
本系统安全保密性可靠,实施独立的局域网络,人员进入系统需要登录,需输入账户和密码。
本系统的管理,可以根据市场需要进行调整,实用性强
2.5操作可行性
a.本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那有一般的计算机知识的人员就可以轻松上手。
b.整个工资管理系统采用较友好的交互界面,简单明了,操作方便,不需要对数据库进行深入的了解。
第三章需求分析
3.1引言
需求分析就是收集、分析用户的需求,准确地定义新系统的目标,获得需求规格说明书,关系到软件系统开发的成败,是决定软件产品质量的关键。
只有准确获取用户需求,才能设计出优秀的软件产品。
通过详细调查,获取工作过程和业务处理,明确用户的各种需求,确定新功能。
在我国,管理信息系统是计算机应用最广泛的领域之一。
企、事业单位为了提高自身的管理水平和竞争能力,纷纷投入人力物力,开发适合本单位需求的管理信息系统。
随着计算机技术的发展,人们的办公环境不断改变,工作效率得到了很大的提高。
在企业的发展中,办公自动化从一个侧面反映了公司的现代化水平。
其中,用于管理员工工资的工资管理系统就是现代化办公的重要组合部分。
3.2任务陈述
工资管理系统的主要任务是通过工资费用的计算和分配,为成本核算与账务处理提供依据,并且根据工资制度和职工劳动数量与质量,计算并发放应该支付给职工的工资。
工资核算时工资管理的主要内容。
工资核算包括工资结算与工资分配两个方面。
工资结算是指应付工资、代扣款项和实发工资的计算;
工资分配是指按部门、类别进行工资汇总,并按工资的用途对工资进行分配。
工资总额是指各单位在一定时期内支付给本单位全体职工的全部劳动报酬总额。
按照国家统计局的规定,工资总额有计时工资、计件工资、奖金、津贴和补贴、加班加点工资和特殊情况下支付的工资6部分组成,其中计时工资和计件工资是工资总额中最基本的部分。
上述工资构成要件所组成的工资总额只是应发工资,并非每个职工拿到手的实发工资,原因在于存在一些应扣项目,例如水电费、工会会费、保险费、公积金、病事假扣款、旷工扣款和个人所得税等。
在计算每个职工实发工资之前应在工资总额中扣除这部分款项,即有如下关系:
应发工资=基本工资+工龄工资+岗位津贴+固定补贴+加班加点工资+奖金
扣款合计=水电费+保险费+个人所得税+病假扣款+事假扣款+旷工扣款+其他扣款
实发工资=应发工资–扣款合计
每个月财务部门根据人事部门提供的职工基本工资数据、所得税率和人事变动情况计算所有员工的基本工资信息,然后根据各个部门提供并审核后的各种表格,如完成任务表、考勤表、考核表、职工当月的扣款情况(包括水电费、病事假扣款等)等计算职工变动工资、个人所得税和应发放工资等,编制工资单。
按类进行汇总,编制工资汇总表。
将实发工资转入代发银行,由银行代发工资,并进行账务处理。
工资结算过程主要设计如下会计账户:
现金、银行存款、应付工资、其他应付款、其他应收款等。
3.3市场需求分析
工资管理系统是一个企业单位不可或缺的部分,他能为用户提供充足的信息和快捷的查询手段。
一个工资管理系统可以高效能、大容量的收集、处理、存储工资管理信息,大幅度的工资管理信息系统的工作质量和效率。
能够为企业管理人员及时掌握整个工资管理系统的全面情况,提供系统的准确的工资管理信息,可以促进工资管理工作的规范化及各项管理制度与指标体系的建立和健全。
为企业提供各种加工管理了工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍建设提出的新要求,帮助管理人员选择方案,实现优化决策。
虽然当前,不少单位的工资管理部门对于计算机应用还仅限于简单的单机应用,随着时间的推移、任务的复杂、用户的需求,其应用还会扩大。
3.4系统功能需求分析
工资管理系统涉及到员工基本信息的录入、修改和删除,工资标准的设定、查询和结算等。
典型的工资管理系统主要有以下基本功能:
a)系统数据初始化
b)员工基本信息的录入、修改、删除等功能
c)工资标准的设定功能,集体包括职务工资、职称工资、其他工资标准和福利的设定。
d)工资信息的浏览
e)员工工资信息表的创建及查询
f)工资调整管理
g)工资计算
h)工资报表打印
3.5系统性能需求分析
3.5.1需求分析总体目标
需求分析的目的在于与开发人员与用户之间达成系统开发的共识,使开发人员所考虑的系统在功能(系统能做什么)、简单操作,良好界面,个人信息保密性,系统安全与稳定,良好帐户管理,友好信息返回模式(如报表及打印功能)。
3.5.2性能需求
此工资管理系统对工资数据精度的计算能在默认情况之下精确到小数点后3位小数,即是精确到分的计算。
但在用户使用过程中,能自行根据实际情况进行小数计算精度的设定,最大能允许保留小数点后5位的精度。
在时间特性上,当用户发出命令请求时的服务器的响应时间、对数据更新处理、工资数据的查询检索等上,同样要求系统响应时间不会超过0.5秒时间。
系统支持多种操作系统的运行环境,多不同操作系统,不同文件格式的磁盘上的数据均能实现信息的互通,及共享。
当服务器移植到其他的系统平台,如:
Linux平台下时,同样能和其他的系统进行数据存取同步,不会出现系统之间互不兼容的情况,系统支持多系统之间的互连互通,系统有巨大的强健性。
3.5.3运行需求
系统在进行数据的录入、计算、统计的时候,能将数据精确到小数点后三位小数。
系统接收到用户的操作命令后(如:
计算处理、查询等),能迅速的响应其操作请求,响应时间不超过1秒。
在同一时间,系统还提供支持至少10个客户端进行同一个操作请求的响应。
系统可移植较强,在不同的平台下运行,均不会影响系统的稳定性。
同时,支持在客户端安装不同操作系统、浏览器版本,均不会影响系统的运行。
3.5.4安全需求
为保障系统数据的安全性,系统采用访问控制策略,未授权者不能进入系统。
同时,对不同级别的用户授予不同的使用权限。
在系统运行期间,如发生掉电尚未保存数据,或由于操作不当等原因导致系统重启等,为保证数据的易恢复性,系统提供每隔30秒自动保存数据的机制,让用户的数据在发生意外时能最大程度上得到恢复。
同时,系统提供强大的容错性能,当一台服务器发生故障时,系统能自动切换到另外一台服务器上,从而保障服务器能长时间的提供系统的运行支持。
在输入数据时,如果用户输入的数据不符合系统的要求,则系统自动提示错误信息,并要求用户重新输入,直到输入完全正确时才允许进行下一步的操作。
3.5.5系统界面需求
系统开发基于B/S的开发模式,界面直观、简洁,人机交互性强。
基于表单和弹出式窗口的数据录入方式,菜单电击的方式操作。
用户使用时,只要是按照格式和要求填入信息,系统在后台响应用户操作过程。
让用户在最短时间里,不需要经过专门培训,就可以轻松上手使用。
3.5.6其他需求
数据不管是在企业内部之间传输,还是公司与分公司之间进行远程数据传输
时,防止数据被不法分析任意的修改和破坏,对所有的敏感数据均进行基于SSL协议的加密操作,只有对信息解密的人员才能最终读取数据信息。
这样,能最大程度的防止数据在传输过程的安全保密性。
3.6系统业务数据流
3.6.1数据流分析
数据流程图是一种能全面描述信息系统逻辑模型的主要工具,也是系统分析人员与用户进行交流的有效手段。
本系统的数据流程图把握住对系统总体目标与总体功能的要求,基于上述的业务流程图,从科学性,合理性和可行性入手,采用自顶向下,逐层分解的方法建立本管理信息系统的逻辑模型,综合地反映出信息在本系统中的流动,处理和存储,具有抽象性和概括性.通过进行用户调查收集用户需求后,就要对用户需求进行分析,并表达用户的需求。
采用结构化分析方法,主要采用数据流图对用户需求进行分析,用数字字典和加工说明对数据流图进行补充和说明。
数据流图用于描述系统中数据流动的过程,反映的是加工处理的对象。
3.6.2流程图,模块图如下:
流程图
模块图
3.7用例分析
用例图用于对软件系统的需求分析,即用于描述一个软件系统需要完成什么样的功能。
用例图中的信息包括系统中的执行者和用例的描述,以及两者之间的相互关系的描述。
用RationalRose画用例图。
〔1〕确定执行者
执行者是指用户在系统中所扮演的角色,表示与所创建的系统进行交互的人或物。
系统的执行者:
职工,管理员。
a.职工:
每个职工有个用户名和密码,能够方便的按照某种关键字对自己的信息和工资进行查询,也可以修改自己密码;
b.管理员:
定义系统以及汇总工资数据,完成工资设定、工资计算、工资发放及打印报表。
管理员有唯一用户名和密码,完成对职工工资料的增加,删除,修改和查询。
〔2〕确定用例
一个用例是用户与计算机之间的一次典型交互作用。
在UML中,用例被定义成系统执行的一系列动作(功能),即用例是对系统用户需求而的描述,表达了系统的功能和所提供的服务。
UML中用例用椭圆图形表示,用例之间的关系使用有扩展、使用、组合。
系统的用例:
添加用户、修改用户、删除用户、查询信息、工资设置、工资报表打印。
其中查询的信息有可能是查询员工的个人资料,也有可能查询工资信息。
工资设置有岗位工资设置,福利设置。
3.8用例列表
1、职工档案管理:
实现对员工基本信息的管理操作,包括员工基本数据信息的添加、修改、删除和查询等功能。
2、职工信息定义:
实现对工资结构信息的添加、修改、删除和查询等功能。
3、工资款项标准:
设定工资款项的标准。
4、工资数据汇总:
实现对工资数据的汇总、查询等功能。
5、工资项目定义:
实现对工资公式定义以及工资的多次发放定义。
6、个人所得税:
完成对个人所得税税率的定义以及对个人所得税的申报。
7、输入工资:
输入职工工资信息。
8、工资发放:
发放工资,查看工资发放情况。
11、工资计算:
完成对计算科目的定义。
3.9绘制系统模型图
3.9.1用例图
分析用例,建立用例图:
3.9.2活动图:
分析用例中的逻辑流程,描述用例的事件流,进而画出各用例对应的活动图
用户登录活动图:
管理员工信息活动图:
3.9.3类图:
类图是面向对象的软件开发中的一个核心概念。
Rose中的类图用于描述软件系统中涉及到的类的相关信息,以及类与类之间的相互关系。
〔1〕类的识别
类的识别通常由分析员在分析问题域的基础上来完成。
常用的方法有:
a.名词识别法。
b.系统识别法。
c.从用例中识别类。
d.利用分解与抽象技术。
〔2〕系统类图
3.9.4状态图:
状态图(StateDiagram)用来描述一个特定对象的所有可能状态及其引起状态转移的事件。
3.9.5时序图:
时序图用来描述对象之间动态的交互关系,着重体现对象间消息传送消息的时间顺序。
下面分别给出各个用例的时序图:
用户登录时序图:
职工时序图:
管理员时序图:
3.9.6组件图:
组件图是用来反映代码的物理结构。
从组件图中,您可以了解各软件组件之间的编译器和运行时依赖关系。
使用组件图可以将系统划分为内聚组件并显示代码自身的结构。
3.9.7配置图:
该系统是一个基于局域网和数据库的应用系统。
配置图如下图所示,有4个节点:
“SalarySystemServer”(工资管理系统服务器)、“DBServer”(数据库服务器)、“PC”(工资管理系统客户端PC)、“Printer”(打印机)。
第四章系统概要设计
软件需求分析阶段完成后,进入软件设计阶段,解决“怎么做”的问题。
在这个阶段主要任务:
将分析阶段获得的需求说明转换为计算机中可实现的系统,完成系统的结构设计,包括数据结构设计和程序结构设计。
4.1模块分析和概要设计
根据实际情况,我们使用原型法(RapidPrototyping)即以少量代价快速地构造一个可执行的软件系统模型。
使用户和开发人员可以较快地确定需求,然后采用循环进化的开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐增加上去,直到所有的性质全部满足。
此时模块也发展成为最终产品了。
通过对用户需求的分析,我们可以分析出该工资管理系统大致可以分为五个模块:
登录管理模块、用户管理模块、职工管理模块、工资管理模块、查询管理模块。
现在对这五个模块些说明:
①登录管理模块:
用户切换,密码修改,退出系统。
②用户管理模块:
新增用户,更新用户,删除用户。
③职工管理模块:
新增职工,更新或删除职工。
④工资管理模块:
工资信息管理,个人所得税的计算。
⑤查询管理模块:
工资信息查询,普通工资信息查询,高级工资查询。
设计基础是完成需求分析后提供的需求说明书,用概念数据模型表示数据及其相互间的关系,这种数据模型是与DBMS无关的、面向现实世界的、易如理解的数据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流十分方便。
概念性数据模型关心的是如何完整、正确地反映客观实际情况,不关心在数据库中如何实现。
这种数据模式能真实地反应用户要求的实际情况,是一种容易被人们理解的直观的数据库结构模式。
同时也是一种相对稳定统一的数据模式,一般情况下很少变动。
概念性数据在用户和设计者之间建立了桥梁。
是设计数据库结构的基础。
概念设计中自顶向下的实体分析方法,即常用的实体联系模型(简称E-R模型),对具体数据进行抽象加工,将实体集合抽象成实体类型。
用实体间联系反映现实世界事物间的内在联系。
E-R模型是建立概念性数据模型的有力工具。
4.2系统数据库逻辑结构设计
逻辑结构设计的任务是将概念结构设计阶段设计的E-R图,转化为选用所支持数据模型相符的逻辑结构,形成逻辑模型。
基于关系数据模型的逻辑结构的设计一般分为三个步骤:
〔1〕概念模型转换为关系数据模型。
〔2〕关系模型的优化。
〔3〕设计用户子模式书号。
4.3概念模型转换为关系数据模型
一般转换原则如下:
〔1〕一个实体转换为一个表(Table),则实体的属性转换为表的列(Column),实体的码转换为表的主键(PrimaryKey)。
〔2〕实体间的联系根据联系的类型,转换如下:
①1:
n的联系:
1:
n的联系是比较普遍的联系,其转换比较直观。
转换规律是在n端的实体对应的表中增加属性,该属性是1端实体对应表的主码。
如:
岗位和员工的关系是1:
n的联系。
②m:
通过引进一个新表来表达两个实体间多对多的联系,新表的主码由联系两端实体的主码组合而成,同时增加相关的联系属性。
部门与员工的联系是n:
m联系。
4.4数据库设计
数据库的物理结构设计是指为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法),它完全取决于给定的计算机系统。
物理结构可分两步进行。
第一步是分析所得到的各种数据模型,依据在实际执行时可能产生的数据容量以及各种数据模型之间的相互依赖程度等,确定数据库的物理结构;
第二步则要根据某种方法对所设计的物理结构进行评价,评价重点是时间和空间的效率。
数据库实施是指建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
根据人员规模,我们只建立起一个数据库,在此数据库基础上建立起如下表:
·
职工表 ·
用户表·
工资表
下面说明各表的字段名称和数据类型:
工资表:
职工表:
用户表:
第五章详细设计
详细设计阶段主要是将系统中的每个模块完成的功能进行具体描述。
5.1登录管理
根据系统总体结构可以得出登录管理模块实现用户登录、密码修改和退出系统三个功能。
其中,退出系统实现流程很容易,只需要一行代码即可;
用户登录的实现流程是用户在登录窗口输入用户名称和密码,如果没有用户名和密码可以进行注册后再登录,选择了用户角色后,单击【登录】按钮进行提交,系统开始验证用户提交的登录信息是否正确。
如果正确,则打开工资管理系统,并根据用户角色赋于相应的操作权限;
否则给出错误信息。
5.1.1界面设计
登录界面如下:
5.1.2代码
部分核心代码设计:
voidCZHUCE:
:
OnButton1()
{
UpdateData(TRUE);
if(m_username.IsEmpty()||m_password.IsEmpty()||m_password2.IsEmpty())
{AfxMessageBox("
请将资料填写完整!
"
);
m_password2.Empty();
m_password.Empty();
UpdateData(FALSE);
return;
}
OnInitADOConn();
if(m_password2==m_password)
{
CStringstr;
str.Format("
insertinto用户表(用户名,密码)values('
%s'
'
)"
m_username,m_password);
_variant_tvar;
intfieldrow;
try{//捕捉表的主键存在重复值的异常
m_pConnection->
Execute((_bstr_t)str,&
var,adCmdText);
fieldrow=(int)V_I2(&
var);
}
catch(...)
{
AfxMessageBox("
用户名已存在,注