




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录TOC\o"1-2"\h\z\u目录-2-第一章绪论-4-1.1开发背景说明-4-课程设计目的-4-课程题目及内容-4-课程设计要求-5-预期目标-5-1.6系统环境-5-第二章可行性分析-6-2.1可行性研究前提-6-2.2经济上可行性-6-2.3技术可行性-6-目标方案可行性-6-操作可行性-7-第三章需求分析-8-引言-8-任务陈述-8-市场需求分析-9-系统功能需求分析-9-系统性能需求分析-9-3.6系统业务数据流-11-用例分析-12-用例列表-12-绘制系统模型图-12-第四章系统概要设计-20-模块分析和概要设计-20-4.2系统数据库逻辑结构设计-20-概念模型转换为关系数据模型-21-4.4数据库设计-21-第五章详细设计-23-登录管理-23-用户管理-26-职工管理-27-工资管理-30-查询管理-35-第六章系统测试-39-6.1测试方法-39-测试内容-39-测试结果-39-6.4测试结果分析-42-测试的作用和意义-42-第七章总结-43-参考文献-44-第一章绪论1.1开发背景说明随着社会的进步和计算机技术的开展,特别是微型计算机的大范围普及,现在应用在大中型企业的信息管理系统中,几乎都包括了工资管理模块。有些环境中是有大型ERP软件中的一个模块引进的,有些作为企业的财务系统的一局部。计算机处理的数据量不断增加。文件管理系统采用的一次最多存取一个记录的访问方式,以及在不同文件之间缺乏相互联系的结构,越来越不能适应管理大量数据的需要,于是数据库管理系统便应运而生。有了数据库我们便能方便快捷的对数据进行读取、存取,并维护数据库的数据。但,西方管理制度设计的工资管理软件,在很多时候还不能完成解决中国特色中小企业的问题,本文介绍的毕业设计的研究工作就是要为这些具有中国特色的中小企业解决他们在工资管理方面的问题。今天,数据库管理已成为计算机信息管理的主要方式。数据库的应用非常广泛,可应用于各行各业,只要是稍复杂的数据,都可制作成数据库,交由电脑来管理。用电脑管理数据,运算速度快,检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、本钱低且不易出错等,这些优点能够极大地提高工资管理的效率,也是科学化、正规化管理的重要条件,尤其是现在的中小型企业正需要这种对口的工资管理系统,并且是现行的财务管理系统所代替不了的。软件工程课程设计是计算机专业集中实践性教学环节之一,是学习完《软件工程》课程后进行的一次全面的综合练习。其目的在于加深对软件工程理论和根本知识的理解,使学生通过软件开发的实践训练,进一步掌握软件工程的方法和技术,解决实际问题的能力。培养学生正确的设计思想,理论联系实际的工作作风,严肃认真、实事求是的科学态度和勇于探索的创新精神。培养学生综合运用所学知识与生产实践经验,分析和解决工程技术问题的能力。题目:工资管理系统内容:考察一个中小型企业,要求设计一套企业工资管理系统,其中应具有一定的人事档案管理功能。工资管理系统是企业进行管理的不可缺少的一局部,它是建立在人事档案系统之上的,其职能部门是财务处和会计室。通过对职工建立人事档案,根据其考勤情况,以及相应的工资级别,算出其相应的工资。为了减少输入帐目时的错误,可以根据职工的考勤、职务、部门、各种税费等等,自动求出工资。为了便于企业领导掌握本企业的工资信息在系统中应参加各种查询功能,包括个人信息、职工工资、本企业内某一个月或某一部门的工资情况查询。系统应能输出各类统计报表。本系统需要完成的功能主要有:系统数据初始化;职工根本信息数据的输入、修改、删除;企业工资的根本设定;职工工资的浏览;职工个人工资表的查询;职工工资的计算;工资报表打印。数据流:职工根本状况:包括职工编号、职工姓名、性别、年龄、职位等。工资级别和工资金额:包括工资等级、工资额。企业部门及工作岗位信息:包括部门名称、工作岗位名称、工作岗位工资等。工龄和工资金额:包括工龄及对应工资额。工资信息:包括职工编号、职工姓名、职工根本工资、职工岗位工资、职工工龄工资、公司津贴、职工实发工资等。坚持“规格严格,功夫到家〞的优良传统,加强根本功训练,做到理论与实际相结合,继承与创新相结合,充分发挥学生的主观能动性与教师因材施教、严格要求相结合,抓智力因素教育与非智力因素教育相结合,教书育人。所设计的工资管理系统应包含输入输出、修改、删除、查询等根本功能。根据题目的根本需求,画出流程图、用例图、类图等,编写程序,并写出详细的设计说明书。课程设计过程中,要严格遵守课程设计的时间安排,听从指导教师的指导。正确地完成上述内容,标准完整地撰写出课程设计报告。方案设计:对于企、事业单位的工资发放来说,不需要太大型的数据库系统,只需要一个操作方便,功能实用,能满足财务部门对工资及时的发放。本工资管理系统预期目标就是实现如下的一些功能:查询浏览记录功能,增加记录功能、修改记录功能、删除记录功能、刷新记录功能、最后实现统计计算功能。1.6系统环境硬件:个人PC软件:WindowsXP、MicrosoftVisualC++6.0、RationalRose。第二章可行性分析2.1可行性研究前提要求:满足对工资管理的根本要求及功能,并对职工信息收集、处理、保存。目标:实现无纸化办公,节省本钱,提高工作效率。条件、假定、限制:当企业工资管理的信息量和复杂程度到达某一限度时,即管理人员的劳动强度超过其承受能力时,就必须采用新的管理手段,如用计算机技术对信息的收集、加工、传递和存贮等,这样,一个工资管理系统就可以对企业职工工资进行高效、合理、恰当地管理。2.2经济上可行性开发本钱要低廉。效益:大幅度地提高工资管理信息系统的工作质量和效率,让企业掌握整个工资管理系统的全面情况,为管理人员提供了准确的工资管理信息,促进工资管理工作的标准化及各项管理制度与指标体系的建立和健全;提供各种加工处理了的工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍提出的新要求。效益/投资比:暂时无法估算。投资回收期内:(1)企业有能力承当系统开发费用。理理念的集合体。而管理是一个动态过程,在其运行过程中要采取多项措施。其最主要的表现就是减少了企业管理费用和人力开支。2.3技术可行性〔1〕软件需求:操作系统WINDOWS2000AdvanceServer以上。硬件需求:赛扬1.7GCPU、512M内存80G硬盘的计算机。〔2〕本系统采用VC++实现,依靠其强大的面向对象系统,与数据库管理系统相结合。计算机设备处理繁杂的工资增减问题,大幅度减少人力、物力,极大地提高企业的管理水平和管理效率。管理水平和管理效率的提高能直接产生经济效益。本系统平安保密性可靠,实施独立的局域网络,人员进入系统需要登录,需输入账户和密码。本系统的管理,可以根据市场需要进行调整,实用性强a.本系统采用基于Windows的图形用户界面,而该系统是大家熟悉的操作系统,对于那有一般的计算机知识的人员就可以轻松上手。b.整个工资管理系统采用较友好的交互界面,简单明了,操作方便,不需要对数据库进行深入的了解。第三章需求分析需求分析就是收集、分析用户的需求,准确地定义新系统的目标,获得需求规格说明书,关系到软件系统开发的成败,是决定软件产品质量的关键。只有准确获取用户需求,才能设计出优秀的软件产品。通过详细调查,获取工作过程和业务处理,明确用户的各种需求,确定新功能。在我国,管理信息系统是计算机应用最广泛的领域之一。企、事业单位为了提高自身的管理水平和竞争能力,纷纷投入人力物力,开发适合本单位需求的管理信息系统。随着计算机技术的开展,人们的办公环境不断改变,工作效率得到了很大的提高。在企业的开展中,办公自动化从一个侧面反映了公司的现代化水平。其中,用于管理员工工资的工资管理系统就是现代化办公的重要组合局部。工资管理系统的主要任务是通过工资费用的计算和分配,为本钱核算与账务处理提供依据,并且根据工资制度和职工劳动数量与质量,计算并发放应该支付给职工的工资。工资核算时工资管理的主要内容。工资核算包括工资结算与工资分配两个方面。工资结算是指应付工资、代扣款项和实发工资的计算;工资分配是指按部门、类别进行工资汇总,并按工资的用途对工资进行分配。工资总额是指各单位在一定时期内支付给本单位全体职工的全部劳动报酬总额。按照国家统计局的规定,工资总额有计时工资、计件工资、奖金、津贴和补贴、加班加点工资和特殊情况下支付的工资6局部组成,其中计时工资和计件工资是工资总额中最根本的局部。上述工资构成要件所组成的工资总额只是应发工资,并非每个职工拿到手的实发工资,原因在于存在一些应扣工程,例如水电费、工会会费、保险费、公积金、病事假扣款、旷工扣款和个人所得税等。在计算每个职工实发工资之前应在工资总额中扣除这局部款项,即有如下关系:应发工资=根本工资+工龄工资+岗位津贴+固定补贴+加班加点工资+奖金扣款合计=水电费+保险费+个人所得税+病假扣款+事假扣款+旷工扣款+其他扣款实发工资=应发工资–扣款合计每个月财务部门根据人事部门提供的职工根本工资数据、所得税率和人事变动情况计算所有员工的根本工资信息,然后根据各个部门提供并审核后的各种表格,如完成任务表、考勤表、考核表、职工当月的扣款情况〔包括水电费、病事假扣款等〕等计算职工变开工资、个人所得税和应发放工资等,编制工资单。按类进行汇总,编制工资汇总表。将实发工资转入代发银行,由银行代发工资,并进行账务处理。工资结算过程主要设计如下会计账户:现金、银行存款、应付工资、其他应付款、其他应收款等。工资管理系统是一个企业单位不可或缺的局部,他能为用户提供充足的信息和快捷的查询手段。一个工资管理系统可以高效能、大容量的收集、处理、存储工资管理信息,大幅度的工资管理信息系统的工作质量和效率。能够为企业管理人员及时掌握整个工资管理系统的全面情况,提供系统的准确的工资管理信息,可以促进工资管理工作的标准化及各项管理制度与指标体系的建立和健全。为企业提供各种加工管理了工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍建设提出的新要求,帮助管理人员选择方案,实现优化决策。虽然当前,不少单位的工资管理部门对于计算机应用还仅限于简单的单机应用,随着时间的推移、任务的复杂、用户的需求,其应用还会扩大。工资管理系统涉及到员工根本信息的录入、修改和删除,工资标准的设定、查询和结算等。典型的工资管理系统主要有以下根本功能:a)系统数据初始化b)员工根本信息的录入、修改、删除等功能c)工资标准的设定功能,集体包括职务工资、职称工资、其他工资标准和福利的设定。d)工资信息的浏览e)员工工资信息表的创立及查询f)工资调整管理g)工资计算h)工资报表打印需求分析总体目标需求分析的目的在于与开发人员与用户之间达成系统开发的共识,使开发人员所考虑的系统在功能〔系统能做什么〕、简单操作,良好界面,个人信息保密性,系统平安与稳定,良好帐户管理,友好信息返回模式〔如报表及打印功能〕。性能需求此工资管理系统对工资数据精度的计算能在默认情况之下精确到小数点后3位小数,即是精确到分的计算。但在用户使用过程中,能自行根据实际情况进行小数计算精度的设定,最大能允许保存小数点后5位的精度。在时间特性上,当用户发出命令请求时的效劳器的响应时间、对数据更新处理、工资数据的查询检索等上,同样要求系统响应时间不会超过0.5秒时间。系统支持多种操作系统的运行环境,多不同操作系统,不同文件格式的磁盘上的数据均能实现信息的互通,及共享。当效劳器移植到其他的系统平台,如:Linux平台下时,同样能和其他的系统进行数据存取同步,不会出现系统之间互不兼容的情况,系统支持多系统之间的互连互通,系统有巨大的强健性。运行需求系统在进行数据的录入、计算、统计的时候,能将数据精确到小数点后三位小数。系统接收到用户的操作命令后〔如:计算处理、查询等〕,能迅速的响应其操作请求,响应时间不超过1秒。在同一时间,系统还提供支持至少10个客户端进行同一个操作请求的响应。系统可移植较强,在不同的平台下运行,均不会影响系统的稳定性。同时,支持在客户端安装不同操作系统、浏览器版本,均不会影响系统的运行。平安需求为保障系统数据的平安性,系统采用访问控制策略,未授权者不能进入系统。同时,对不同级别的用户授予不同的使用权限。在系统运行期间,如发生掉电尚未保存数据,或由于操作不当等原因导致系统重启等,为保证数据的易恢复性,系统提供每隔30秒自动保存数据的机制,让用户的数据在发生意外时能最大程度上得到恢复。同时,系统提供强大的容错性能,当一台效劳器发生故障时,系统能自动切换到另外一台效劳器上,从而保障效劳器能长时间的提供系统的运行支持。在输入数据时,如果用户输入的数据不符合系统的要求,那么系统自动提示错误信息,并要求用户重新输入,直到输入完全正确时才允许进行下一步的操作。系统界面需求系统开发基于B/S的开发模式,界面直观、简洁,人机交互性强。基于表单和弹出式窗口的数据录入方式,菜单电击的方式操作。用户使用时,只要是按照格式和要求填入信息,系统在后台响应用户操作过程。让用户在最短时间里,不需要经过专门培训,就可以轻松上手使用。其他需求数据不管是在企业内部之间传输,还是公司与分公司之间进行远程数据传输时,防止数据被不法分析任意的修改和破坏,对所有的敏感数据均进行基于SSL协议的加密操作,只有对信息解密的人员才能最终读取数据信息。这样,能最大程度的防止数据在传输过程的平安保密性。3.6系统业务数据流数据流分析数据流程图是一种能全面描述信息系统逻辑模型的主要工具,也是系统分析人员与用户进行交流的有效手段。本系统的数据流程图把握住对系统总体目标与总体功能的要求,基于上述的业务流程图,从科学性,合理性和可行性入手,采用自顶向下,逐层分解的方法建立本管理信息系统的逻辑模型,综合地反映出信息在本系统中的流动,处理和存储,具有抽象性和概括性.通过进行用户调查收集用户需求后,就要对用户需求进行分析,并表达用户的需求。采用结构化分析方法,流程图,模块图如下:流程图模块图用例图用于对软件系统的需求分析,即用于描述一个软件系统需要完成什么样的功能。用例图中的信息包括系统中的执行者和用例的描述,以及两者之间的相互关系的描述。用RationalRose画用例图。〔1〕确定执行者执行者是指用户在系统中所扮演的角色,表示与所创立的系统进行交互的人或物。系统的执行者:职工,管理员。a.职工:每个职工有个用户名和密码,能够方便的按照某种关键字对自己的信息和工资进行查询,也可以修改自己密码;b.管理员:定义系统以及汇总工资数据,完成工资设定、工资计算、工资发放及打印报表。管理员有唯一用户名和密码,完成对职工工资料的增加,删除,修改和查询。〔2〕确定用例一个用例是用户与计算机之间的一次典型交互作用。在UML中,用例被定义成系统执行的一系列动作〔功能〕,即用例是对系统用户需求而的描述,表达了系统的功能和所提供的效劳。UML中用例用椭圆图形表示,用例之间的关系使用有扩展、使用、组合。系统的用例:添加用户、修改用户、删除用户、查询信息、工资设置、工资报表打印。其中查询的信息有可能是查询员工的个人资料,也有可能查询工资信息。工资设置有岗位工资设置,福利设置。1、职工档案管理:实现对员工根本信息的管理操作,包括员工根本数据信息的添加、修改、删除和查询等功能。2、职工信息定义:实现对工资结构信息的添加、修改、删除和查询等功能。3、工资款项标准:设定工资款项的标准。4、工资数据汇总:实现对工资数据的汇总、查询等功能。5、工资工程定义:实现对工资公式定义以及工资的屡次发放定义。6、个人所得税:完成对个人所得税税率的定义以及对个人所得税的申报。7、输入工资:输入职工工资信息。8、工资发放:发放工资,查看工资发放情况。11、工资计算:完成对计算科目的定义。用例图分析用例,建立用例图:活动图:分析用例中的逻辑流程,描述用例的事件流,进而画出各用例对应的活动图用户登录活动图:管理员工信息活动图:类图:类图是面向对象的软件开发中的一个核心概念。Rose中的类图用于描述软件系统中涉及到的类的相关信息,以及类与类之间的相互关系。〔1〕类的识别类的识别通常由分析员在分析问题域的根底上来完成。常用的方法有:a.名词识别法。b.系统识别法。c.从用例中识别类。d.利用分解与抽象技术。〔2〕系统类图状态图:状态图(StateDiagram)用来描述一个特定对象的所有可能状态及其引起状态转移的事件。时序图:时序图用来描述对象之间动态的交互关系,着重表达对象间消息传送消息的时间顺序。下面分别给出各个用例的时序图:用户登录时序图:职工时序图:管理员时序图:组件图:组件图是用来反映代码的物理结构。从组件图中,您可以了解各软件组件之间的编译器和运行时依赖关系。使用组件图可以将系统划分为内聚组件并显示代码自身的结构。配置图:该系统是一个基于局域网和数据库的应用系统。配置图如下列图所示,有4个节点:“SalarySystemServer〞(工资管理系统效劳器)、“DBServer〞(数据库效劳器)、“PC〞(工资管理系统客户端PC)、“Printer〞(打印机)。第四章系统概要设计软件需求分析阶段完成后,进入软件设计阶段,解决“怎么做〞的问题。在这个阶段主要任务:将分析阶段获得的需求说明转换为计算机中可实现的系统,完成系统的结构设计,包括数据结构设计和程序结构设计。根据实际情况,我们使用原型法〔RapidPrototyping〕即以少量代价快速地构造一个可执行的软件系统模型。使用户和开发人员可以较快地确定需求,然后采用循环进化的开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐增加上去,直到所有的性质全部满足。此时模块也开展成为最终产品了。通过对用户需求的分析,我们可以分析出该工资管理系统大致可以分为五个模块:登录管理模块、用户管理模块、职工管理模块、工资管理模块、查询管理模块。现在对这五个模块些说明:①登录管理模块:用户切换,密码修改,退出系统。②用户管理模块:新增用户,更新用户,删除用户。③职工管理模块:新增职工,更新或删除职工。④工资管理模块:工资信息管理,个人所得税的计算。⑤查询管理模块:工资信息查询,普通工资信息查询,高级工资查询。设计根底是完成需求分析后提供的需求说明书,用概念数据模型表示数据及其相互间的关系,这种数据模型是与DBMS无关的、面向现实世界的、易如理解的数据模型,其独立于计算机的数据模型,独立于计算机的软硬件系统,与用户进行交流十分方便。概念性数据模型关心的是如何完整、正确地反映客观实际情况,不关心在数据库中如何实现。这种数据模式能真实地反响用户要求的实际情况,是一种容易被人们理解的直观的数据库结构模式。同时也是一种相对稳定统一的数据模式,一般情况下很少变动。概念性数据在用户和设计者之间建立了桥梁。是设计数据库结构的根底。概念设计中自顶向下的实体分析方法,即常用的实体联系模型〔简称E-R模型〕,对具体数据进行抽象加工,将实体集合抽象成实体类型。用实体间联系反映现实世界事物间的内在联系。E-R模型是建立概念性数据模型的有力工具。4.2系统数据库逻辑结构设计逻辑结构设计的任务是将概念结构设计阶段设计的E-R图,转化为选用所支持数据模型相符的逻辑结构,形成逻辑模型。基于关系数据模型的逻辑结构的设计一般分为三个步骤:〔1〕概念模型转换为关系数据模型。〔2〕关系模型的优化。〔3〕设计用户子模式书号。一般转换原那么如下:〔1〕一个实体转换为一个表〔Table〕,那么实体的属性转换为表的列〔Column〕,实体的码转换为表的主键〔PrimaryKey〕。〔2〕实体间的联系根据联系的类型,转换如下:①1:n的联系:1:n的联系是比拟普遍的联系,其转换比拟直观。转换规律是在n端的实体对应的表中增加属性,该属性是1端实体对应表的主码。如:岗位和员工的关系是1:n的联系。②m:n的联系:通过引进一个新表来表达两个实体间多对多的联系,新表的主码由联系两端实体的主码组合而成,同时增加相关的联系属性。如:部门与员工的联系是n:m联系。4.4数据库设计数据库的物理结构设计是指为逻辑数据模型选取一个最适合应用环境的物理结构〔包括存储结构和存取方法〕,它完全取决于给定的计算机系统。物理结构可分两步进行。第一步是分析所得到的各种数据模型,依据在实际执行时可能产生的数据容量以及各种数据模型之间的相互依赖程度等,确定数据库的物理结构;第二步那么要根据某种方法对所设计的物理结构进行评价,评价重点是时间和空间的效率。数据库实施是指建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。根据人员规模,我们只建立起一个数据库,在此数据库根底上建立起如下表:·职工表·用户表·工资表下面说明各表的字段名称和数据类型:工资表:职工表:用户表:第五章详细设计详细设计阶段主要是将系统中的每个模块完成的功能进行具体描述。登录管理根据系统总体结构可以得出登录管理模块实现用户登录、密码修改和退出系统三个功能。其中,退出系统实现流程很容易,只需要一行代码即可;用户登录的实现流程是用户在登录窗口输入用户名称和密码,如果没有用户名和密码可以进行注册后再登录,选择了用户角色后,单击【登录】按钮进行提交,系统开始验证用户提交的登录信息是否正确。如果正确,那么翻开工资管理系统,并根据用户角色赋于相应的操作权限;否那么给出错误信息。界面设计登录界面如下:代码局部核心代码设计: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','%s')",m_username,m_password); _variant_tvar; intfieldrow; try{//捕捉表的主键存在重复值的异常 m_pConnection->Execute((_bstr_t)str,&var,adCmdText); fieldrow=(int)V_I2(&var); } catch(...) { AfxMessageBox("用户名已存在,注册失败"); m_username.Empty(); m_password.Empty(); m_password2.Empty(); UpdateData(FALSE); return; } AfxMessageBox("注册成功,请返回登录!"); m_pConnection->Close(); Cloginclg; clg.DoModal(); } else{AfxMessageBox("两次密码输入不一样,注册失败!"); m_username.Empty(); m_password.Empty(); m_password2.Empty(); UpdateData(FALSE); return; }}voidCZHUCE::OnInitADOConn(){ try {//创立连接对象实例 m_pConnection.CreateInstance("ADODB.Connection"); //设置连接字符串 CstringstrConnect="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=salary.mdb;PersistSecurityInfo=False;"; //使用Open方法连接数据库 m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown); } catch(_com_errore) { AfxMessageBox(e.Description()); }}_RecordsetPtr&CZHUCE::GetRecordSet(_bstr_tsqlstr){ { try{if(m_pConnection==NULL) {OnInitADOConn(); } m_pRecordset.CreateInstance(__uuidof(Recordset)); m_pRecordset->Open(sqlstr,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText); } catch(_com_errore) {e.Description(); } returnm_pRecordset; }}修改密码模块:成功登录主界面:用户管理用户管理模块用于实现用户的添加、删除、更新功能。新增用户模块:更新用户信息模块:删除用户信息模块:职工管理员工信息管理模块用于实现员工信息的添加、删除、修改。其中,员工信息添加的实现流程是用户在添加员工窗口中输入所要添加员的信息后,单击【确认添加】按钮进行提交,系统获得用户提交的员工信息,并尝试写入到工资管理系统的数据库中,最后返回员工信息添加的执行结果。新增职工:局部核心代码代码如下:voidCGXZHG::OnButton2(){//TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); if(m_Bianhao.IsEmpty()||m_Name.IsEmpty()) {AfxMessageBox("notnull"); return;} OnInitADOConn(); CStringstr; str.Format("update职工表set性别='%s',年龄=%d,='%s',住址='%s',职位='%s',备注='%s'where职工编号='%s'",m_Sex,m_Age,m_Telphone,m_Address,m_Zhiwei,m_Beizhu,m_Bianhao); m_pConnection->Execute((_bstr_t)str,NULL,adCmdText); m_pConnection->Close(); m_zhglist.DeleteAllItems(); AddToGrid();ClearAll();}voidCGXZHG::OnButton1(){//TODO:AddyourcontrolnotificationhandlercodehereClearAll(); UpdateData(FALSE); }voidCGXZHG::OnButton3(){//TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); if(m_tiaojian.IsEmpty()) {AfxMessageBox("请选择删除的职工!"); return;} OnInitADOConn(); CStringbstrSQL; bstrSQL.Format("deletefrom职工表where职工编号='%s'",m_tiaojian); CMAKESUREcmake; if(cmake.DoModal()!=IDOK) { return; } m_pConnection->Execute((_bstr_t)bstrSQL,NULL,adCmdText); m_pConnection->Close(); m_zhglist.DeleteAllItems(); AddToGrid(); ClearAll(); AfxMessageBox("删除成功!"); UpdateData(FALSE);}voidCGXZHG::OnButton4(){ UpdateData(TRUE); m_type.GetWindowText(m_Type); if(m_Type.IsEmpty()) {AfxMessageBox("请选择查询的方式!"); return;} if(m_tiaojian.IsEmpty()) {AfxMessageBox("请输入查询的职工编号!"); return;} OnInitADOConn(); CStringsql; sql+="select*from职工表where"; sql+=m_Type+"="+"'"+m_tiaojian+"'"; m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText); m_pConnection->Close(); m_zhglist.DeleteAllItems(); UpdateGrid(); ClearAll(); UpdateData(FALSE);}:该模块主要是录入工资,重填工资,更新工资,新增工资和删除工资的功能。局部核心代码如下:voidCTXGZ::OnButton2(){//TODO:Addyourcontrolnotificationhandlercodehere UpdateData(TRUE); m_yuefen.SetCurSel(0);// AfxMessageBox("该编号的职工不存在,请先到职工管理添加职工信息!"); if(m_Bianhao.IsEmpty()||m_Jibengz==NULL||m_Yuefen.IsEmpty()) {AfxMessageBox("编号不允许空值,请重新填写!"); ClearALL(); return;} OnInitADOConn(); floatf1=m_Jibengz+m_Jintie+m_Gangtie+m_Butie+m_Fangtie+m_Jiaotongbt; CStringcstr1; cstr1.Format("%.2f",f1); m_yfsh.SetWindowText(cstr1); floatf2=m_Fangzu+m_Chuxu+m_Huifei; CStringcstr2; cstr2.Format("%.2f",f2); m_yksh.SetWindowText(cstr2); floatf4; f4=calculator(f1-f2); floatf3=f1-f2-f4; CStringcstr3; cstr3.Format("%.2f",f3); m_shfsh.SetWindowText(cstr3); CStringcstr4; cstr4.Format("%.2f",f4); m_grsdsh.SetWindowText(cstr4); CStringstr; str.Format("insertinto工资表values('%s','%s',%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f)",m_Bianhao,m_Yuefen,m_Jibengz,m_Jintie,m_Gangtie,m_Butie,m_Fangtie,m_Jiaotongbt,f1,m_Fangzu,m_Chuxu,m_Huifei,f4,f2,f3); _variant_tvar; intfieldrow; try{ //捕捉表的主键存在重复值的异常 m_pConnection->Execute((_bstr_t)str,&var,adCmdText); fieldrow=(int)V_I2(&var); } catch(...) { AfxMessageBox("该编号记录已存在,新增失败"); ClearALL(); return; } m_pConnection->Close(); m_gzlist.DeleteAllItems(); AddToGrid(); }voidCTXGZ::OnButton3(){ UpdateData(TRUE); if(m_Bianhao.IsEmpty()||m_Yuefen.IsEmpty()) {AfxMessageBox("请填写要更新的职工的信息!"); ClearALL(); return;} OnInitADOConn(); CStringstr; str.Format("update工资表set根本工资=%.2f,月份='%s',津贴=%.2f,岗贴=%.2f,补贴=%.2f,房贴=%.2f,交通补贴=%.2f,房租=%.2f,储蓄=%.2f,会费=%.2fwhere职工编号='%s'",m_Jibengz,m_Yuefen,m_Jintie,m_Gangtie,m_Butie,m_Fangtie,m_Jiaotongbt,m_Fangzu,m_Chuxu,m_Huifei,m_Bianhao); m_pConnection->Execute((_bstr_t)str,NULL,adCmdText); m_pConnection->Close(); m_gzlist.DeleteAllItems(); AddToGrid();ClearALL(); m_yuefen.SetCurSel(0);}voidCTXGZ::ClearALL(){ m_Jibengz=NULL; m_Jintie=NULL; m_Shfsh.Empty(); m_Yfsh.Empty(); m_Yksh.Empty(); m_Yuefen.Empty(); m_Chaxun.Empty(); m_Jiaotongbt=NULL; m_Huifei=NULL; m_Grsdsh.Empty(); m_Fangzu=NULL; m_Fangtie=NULL; m_Chuxu=NULL; m_Bianhao=""; m_Gangtie=NULL; UpdateData(FALSE);}voidCTXGZ::OnClickList1(NMHDR*pNMHDR,LRESULT*pResult){//TODO:Addyourcontrolnotificationhandlercodehere intposition=m_gzlist.GetSelectionMark(); m_Bianhao=m_gzlist.GetItemText(position,0); m_Chaxun=m_gzlist.GetItemText(position,0); m_Yuefen=m_gzlist.GetItemText(position,1); m_Jibengz=atof(m_gzlist.GetItemText(position,2)); m_Jintie=atof(m_gzlist.GetItemText(position,3)); m_Gangtie=atof(m_gzlist.GetItemText(position,4)); m_Butie=atof(m_gzlist.GetItemText(position,5)); m_Fangtie=atof(m_gzlist.GetItemText(position,6)); m_Jiaotongbt=atof(m_gzlist.GetItemText(position,7)); m_Yfsh=m_gzlist.GetItemText(position,8); m_Fangzu=atof(m_gzlist.GetItemText(position,9)); m_Chuxu=atof(m_gzlist.GetItemText(position,10)); m_Huifei=atof(m_gzlist.GetItemText(position,11)); m_Grsdsh=m_gzlist.GetItemText(position,12); m_Yksh=m_gzlist.GetItemText(position,13); m_Shfsh=m_gzlist.GetItemText(position,14); UpdateData(FALSE); *pResult=0;}voidCTXGZ::OnButton4(){ UpdateData(TRUE); if(m_Chaxun.IsEmpty()) {AfxMessageBox("请输入删除的职工编号!"); return;} OnInitADOConn(); CStringsql; sql.Format("deletefrom工资表where职工编号='%s'",m_Chaxun); CMAKESUREcmake; if(cmake.DoModal()!=IDOK) { return; } m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText); m_pConnection->Close(); m_gzlist.DeleteAllItems(); AddToGrid(); ClearALL(); AfxMessageBox("删除成功!"); m_yuefen.SetCurSel(0); UpdateData(FALSE);}voidCTXGZ::OnButton5(){ UpdateData(TRUE); if(m_Chaxun.IsEmpty()) {AfxMessageBox("请输入查询的职工编号!"); return;} OnInitADOConn(); CStringsql; sql.Format("select*from工资表where职工编号='%s'",m_Chaxun); m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText); m_pConnection->Close(); m_gzlist.DeleteAllItems(); ClearALL(); m_Chaxun=m_Chaxun; m_yuefen.SetCurSel(0); UpdateData(FALSE);}floatCTXGZ::calculator(floata){floatb=a-2000; if(b<0){b=0;} if(0<b&&b<500){returnb=b*5/100;} if(b>=500&&b<2000){returnb=b*10/100-25;} if(b>=2000&&b<5000){returnb=b*15/100-125;} if(b>=5000&&b<20000){returnb=b*20/100-375;} if(b>=20000&&b<40000){returnb=b*25/100-1375;} if(b>=40000&&b<60000){returnb=b*30/100-3375;} if(b>=60000&&b<80000){returnb=b*35/100-6375;} if(b>=80000&&b<100000){returnb=b*40/100-10375;} if(b>=100000){returnb=b*45/100-15375;}}该模块实现功能是职工查询工资的详细信息,查询个人详细信息的功能。职工信息查询:工资信息查询:局部核心代码如下:voidCGXGZ::OnButton1(){ UpdateData(TRUE); if(m_Chaxun.IsEmpty()) {AfxMessageBox("请输入查询的职工编号!"); return;} OnInitADOConn(); CStringsql; sql.Format("select*from工资表where职工编号='%s'",m_Chaxun); m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText); m_pConnection->Close(); m_gzlist.DeleteAllItems(); UpdateGrid(); m_Chaxun.Empty(); UpdateData(FALSE);}voidCGXGZ::OnInitADOConn(){try {//创立连接对象实例 m_pConnection.CreateInstance("ADODB.Connection"); //设置连接字符串 CStringstrConnect="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=salary.mdb;PersistSecurityInfo=False;"; //使用Open方法连接数据库 m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown); } catch(_com_errore) { AfxMessageBox(e.Description()); }}voidCGXGZ::UpdateGrid(){//连接数据库 OnInitADOConn(); //设置查询字符串 CStringbstrSQL; bstrSQL.Format("select*from工资表where职工编号='%s'orderby职工编号desc",m_Chaxun); //创立记录集指针对象实例 m_pRecordset.CreateInstance(__uuidof(Recordset)); //翻开记录集 m_pRecordset->Open((_bstr_t)bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic, adLockOptimistic,adCmdText); while(!m_pRecordset->adoEOF) {m_gzlist.InsertItem(0,"");m_gzlist.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("职工编号"));m_gzlist.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("月份"));m_gzlist.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("根本工资"));m_gzlist.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect("津贴"));m_gzlist.SetItemText(0,4,(char*)(_bstr_t)m_pRecordset->GetCollect("岗贴"));m_gzlist.SetItemText(0,5,(char*)(_bstr_t)m_pRecordset->GetCollect("补贴"));m_gzlist.SetItemText(0,6,(char*)(_bstr_t)m_pRecordset->GetCollect("房贴"));m_gzlist.SetItemText(0,7,(char*)(_bstr_t)m_pRecordset->GetCollect("交通补贴"));m_gzlist.SetItemText(0,8,(char*)(_bstr_t)m_pRecordset->GetCollect("应发数"));m_gzlist.SetItemText(0,9,(char*)(_bstr_t)m_pRecordset->GetCollect("房租"));m_gzlist.SetItemText(0,10,(char*)(_bstr_t)m_pRecordset->GetCollect("储蓄"));m_gzlist.SetItemText(0,11,(char*)(_bstr_t)m_pRecordset->GetCollect("会费"));m_gzlist.SetItemText(0,12,(char*)(_bstr_t)m_pRecordset->GetCollect("个人所得税"));m_gzlist.SetItemText(0,13,(char*)(_bstr_t)m_pRecordset->GetCollect("应扣数"));m_gzlist.SetItemText(0,14,(char*)(_bstr_t)m_pRecordset->GetCollect("实发数")); //将记录集指针移动到下一条记录 m_pRecordset->MoveNext(); } //AfxMessageBox("123"); //断开数据库连接 ExitConnect();}voidCGXGZ::ExitConnect(){if(m_pRecordset!=NULL) m_pRecordset->Close(); m_pConnection->Close();}第六章系统测试6.1测试方法〔1〕测试人员:测试队伍由两位成员组成。软件的设计者在测试整个过程中负责整体测试方案的制定和测试进度的掌握以及白盒测试的测试者。第二位成员由未参加软件制作者担任,主要责任是进行软件的黑盒测试以及软件环境,硬件要求和极限测试工作。〔2〕机器测试:通过在计算机上直接运行被测程序,来发现程序中的错误。机器测试包括黑盒测试盒
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit1 Where did you go on vacation Section A 1a-2c 导学案(无答案)
- 抵押反担保合同书
- 倒土方合同土方运输协议书
- 厂房水电安装工程合同
- 买卖碎石合同协议书
- 化学材料专业应用题解答
- 香格里拉透水地坪施工方案
- 农业工程专项作业实施方案
- 刷白施工方案
- 高效办公时间管理方案
- 会计制度设计 课件 项目三 任务二 货币资金业务会计制度设计
- 【电动自行车谐振式无线充电系统设计(论文)10000字】
- Unit 3 On the Move单词讲解 课件高中英语外研版(2019)必修第二册
- 2024-2030年中国房地产经纪行业市场发展分析及竞争格局与投资前景研究报告
- 1shopee课程简介认识虾皮
- 信息系统项目验收方案
- 2024年新北师大版七年级上册数学 问题解决策略:直观分析 教学课件
- 2024小学数学新教材培训:新课标下的新教材解读
- 10以内连加减口算练习题完整版205
- 老年失能全周期综合康复管理模式专家共识
- 第九单元 文人情致 课件高一音乐人音版(2019)必修 音乐鉴赏
评论
0/150
提交评论