毕业设计(论文)基于VC++的工资管理系统的设计与实现_第1页
毕业设计(论文)基于VC++的工资管理系统的设计与实现_第2页
毕业设计(论文)基于VC++的工资管理系统的设计与实现_第3页
毕业设计(论文)基于VC++的工资管理系统的设计与实现_第4页
毕业设计(论文)基于VC++的工资管理系统的设计与实现_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于 vc+的工资管理系统的设计与实现 摘摘 要要 随着计算机技术的飞速发展,计算机在企业管理中应用越来越普及。利用计 算机实现企业人事工资的管理势在必行。本系统是结合公司实际的财务制度,经 过实际的需求分析,采用功能强大的 visual c+ 6.0 做为开发工具而开发出来的单 机版工资管理系统。 工资管理系统是针对企业的工资管理业务进行计算机处理而开发的应用软件。 整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成人事、 工资管理的全过程,企业的工资管理是公司管理的一个重要内容。该系统由基本 信息管理、工资管理、工资查询、系统管理、帮助等子模块组成,功能基本涵盖 普通企业的

2、工资管理业务范围。企业应用本系统后,可以有效的提高工资管理水 平。本文从需求分析、可行性分析、总体设计、数据库设计、功能模块编程实现 等方面阐述了本系统的设计过程。为便于说明,文中绘制了程序结构框图、部分 界面图和数据表。最后附有主要的源程序代码清单。 关键词关键词 :数据库 visual c+ 6.0 工资管理 the design approach and implementation of the wages management system based on vc+ abstract with the development of the computer technology an

3、d computers are universally used in business enterprise manage more and more, so it is imperative to implement the management of enterprise personnel wages using computers. actual company finance is combinative in this system. i have already made demand analysis and adopted visual c+ 6.0 which is mi

4、ghty in function as the tool to develop the management of enterprise personnel wages system that is the single machine version. salary management system is specially designed for the application of device managing of enterprise. the whole system must match the request which are operation simple, the

5、 interface amity, vivid, practical and safe and complete the management of personal and wages process. the management of enterprise personnel wage is an important content in company manage. the system is consisted with six subsystems. they are system maintenance, querying, forming and listing. these

6、 functions can meet the demands of most of the business. if the enterprise uses this system, the management of salary can rapidly be improved. in this paper, a description is given on the design process of this system from demands analyzing, feasibility analysis, frame design, database design, progr

7、amming module. program structure diagram, some map interfaces and data sheets are presented for the purpose of description. in addition, program source code is listed in the end of the article. keywords: database; visual c+ 6.0; salary management 目目 录录 1 引言.1 2 系统需求分析.2 3 可行性分析.3 4 总体设计.4 4.1 系统功能结构

8、 .4 4.2 设计目标 .4 5 系统设计.5 5.1 使用的相关技术介绍 .5 5.2 数据库设计 .5 5.2.1 数据库概要说明.5 5.2.2 部分数据表的结构.6 5.2.3 部分 e-r 模型的设计 .7 6 主要功能模块设计.9 6.1 建立工程框架 .9 6.2 主窗口设计 .11 6.2.1 菜单资源设计.11 6.2.2 客户区设计.12 6.3 登录模块设计 .13 6.3.1 实现目标.13 6.3.2 设计步骤.13 6.3.3 代码分析.14 6.4 员工录入模块设计 .15 6.4.1 实现目标.15 6.4.2 设计步骤.16 6.4.3 代码分析.16 6.

9、5 员工工资添加模块设计 .19 6.5.1 实现目标.19 6.5.2 设计步骤.19 6.5.3 代码分析.20 6.6 用户管理模块设计 .25 6.6.1 实现目标.25 6.6.2 设计步骤.25 6.6.3 代码分析.26 6.7 总体查询模块设计 .29 6.7.1 实现目标.29 6.7.2 设计步骤.29 6.7.3 代码分析.33 7 结论.39 谢辞.40 参考文献.41 附录.42 外文翻译.68 版权所有:版权所有:dgghate 1 1 引言 随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制 的迅速完善,各个行业都在积极使用现代化的管理工具,不断改

10、善企业的服务质 量,提高工作效率。无论是行政职能,还是生产运作的管理要求的不断提高,在 很大程度上使企业不得不改变传统的经营管理方式以适应快速发展的社会主义市 场经济体制,改变企业管理方式和方法已经成为企业发展的先决条件,建立一个 科学高效的信息管理系统是解决这一问题的好方法。 运用现代化技术对企业内部的财务进行管理,是提高企业工作效率的有效手 段。工资管理作为企业内部财务管理的一个重要方面,逐步被企业管理者所重视。 通过计算机管理系统对员工工资进行全面的统计与管理,全面解决了工资管理过 程中所遇到的各种问题,并且克服了传统管理方式中的易出错等问题。工资管理 系统成为企业现代化管理中的首选管理

11、工具。 版权所有:版权所有:dgghate 2 2 系统需求分析 员工工资管理系统是保证企业对员工工资的管理可以有秩序的进行的管理 软件。员工工资管理系统是用于企业对员工工资进行的集中分发管理,开发的 总体任务是实现工资管理的系统化、规范化和自动化,从而达到提高工资管理 效率的目的1。 工资管理系统主要根据公司的要求进行设计,并了解了公司工资的工作流 程,该系统是由基本信息管理、工资查询、工资管理、系统管理和帮助等几个 功能模块组成,规划系统功能模块如下: (1)基本信息管理模块 基本信息管理模块主要包括员工录入、员工删除两个部分。 (2)工资查询模块 工资查询模块主要包括基本工资查询、浮动工

12、资查询、加班/休假查询、 总体查询四个部分。 (3)工资管理模块 工资管理模块主要包括工资发放管理、基本工资管理、浮动工资管理三个 部分。 (4)系统管理模块 系统管理模块主要包括用户管理、修改密码、退出系统三个部分。 (5)帮助模块 帮助模块主要包括关于一个部分。 版权所有:版权所有:dgghate 3 3 可行性分析 传统的工资管理方法,都是通过人工统计和计算的管理方式进行的。这样的 管理方法不但费时费力,也容易产生计算上的错误和疏漏;计算机技术的全面普 及,打破了财务管理的传统管理方法,提高了管理效率的同时,克服了传统管理 方法中易产生的问题,使管理员能够有序的、全面的对每一位职工进行管

13、理,严 格按照工资条款及发放制度计算并发放员工工资。 企业工资管理系统可以完成日常工资的管理,如查询、修改、增加、删除以 及存储等操作,迅速准确地完成各种工资数据的统计和汇总工作,快速打印出工 资报表等,大大提高了企业工资管理效率2。 版权所有:版权所有:dgghate 4 4 总体设计 系统总体设计是把需求转化为软件系统的最重要的环节。系统总体设计的优 劣在根本上决定了软件系统的质量3。 4.1 系统功能结构 工资系统的功能结构如图 1 所示。 工资管理系统 基本信息管理工资管理工资查询系统管理帮助 员工录入 员工删除 基本工资管理 浮动工资管理 浮动工资查询 加班休假查询 总体查询 用户管

14、理 修改密码 退出系统 关于 基本工资查询 工资发放管理 图 1 系统功能图 4.2 设计目标 本系统是根据中小企业的实际需求而开发的,完全能够实现企业对客户的自 动化管理,通过本系统可以达到以下目标: (1)系统运行稳定,安全可靠。 (2)界面设计美观,人机交互界面友好。 (3)信息查询灵活、方便、快捷、准确,数据存储安全可靠。 (4)采用多种方式查询数据。 (5)操作员可以随时修改自己的口令。 (6)对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。 5 系统设计 5.1 使用的相关技术介绍 visual c+是 microsoft visual studio 开发组件中最为

15、强大的编程工具。一方面, 版权所有:版权所有:dgghate 5 它是当今最为流行的系统开发语言,另一方面,它能够和 microsoft 的操作系统无 缝结合,开发出高性能的 windows 应用程序3。在数据库领域,visual c+的表现 也异常抢眼,它提供了多种数据库开发技术,支持几乎所有的数据库系统,如 sql server,db2,sybase,foxpro,access 等;而且还提供了良好的开发环境和 丰富的文档支持。总之,利用 visual c+可以开发出功能强大、性能优良和界面 友好的数据库应用程序,这也正是许多公司长期以来采用 visual c+开发数据库 系统的重要原因3

16、。visual c+提供了可视化的编程环境,不仅可以编写面向用户 的应用程序,而且还适用于编写直接对系统或设备操作的底层程序4。 sql server 2000 在 sql server 7.0 版的基础上扩展了数据库管理系统的性能、 可靠性、质量和易用性。由于增加了这几种新的功能,因此它成为大规模联机事 务处理(oltp) 、数据仓库和电子商务应用程序的优秀数据库平台5。sql server 2000 是基于 sql 客户/服务器(c/s)模式的数据库系统,其图形化界面使数据库 管理更加简洁、灵活,同时又具有丰富的编程接口,为用户从事程序开发提供了 更多的方便。使用 sql server 2

17、000 可以获得非凡的可伸缩性和可靠性。通过向上 伸缩和向外扩展的能力,sql server 满足了苛刻的电子商务和企业应用程序要求。 ado 是 activex data object(activex 数据对象)的缩写,是目前最流行的客 户端数据库技术。ado 是建立在 ole db 底层技术之上的高级编程接口6。 5.2 数据库设计 5.2.1 数据库概要说明 在使用数据库之前,先创建数据库7。数据表是包含数据库中所有数据的数 据库对象,表定义为列的集合8。数据库 gzffxt 中包括员工基础信息表、员工 基本工资表、员工浮动工资表、员工加班/休假表、工资发放明细表、用户表 6 个 数据表

18、。 图 2 所示的即为本系统中数据库中的数据表结构图,该数据表结构图包含系 统所有数据表。可以清晰地反映数据库信息。 图 2 数据库概要说明 版权所有:版权所有:dgghate 6 5.2.2 部分数据表的结构 表 1 ygjcxxb(员工基础信息表) 字段名数据类型长度描述 ygid ygxm sex whcd varchar varchar char varchar 30 30 2 20 员工编号 员工姓名 性别 文化程度 表 2 ygjbgzb(员工基本工资表) 字段名数据类型长度描述 ygid ygxm jbgz zwgz glgz ylbxj varchar varchar mone

19、y money money money 30 30 8 8 8 8 员工编号 员工姓名 基本工资 职务工资 工龄工资 养老保险金 表 3 ygfdgzxmb(员工浮动工资表) 字段名数据类型长度描述 ygid ygxm grsds zfbz bxf shbz varchar varchar money money money money 30 30 8 8 8 8 员工编号 员工姓名 个人所得税 住房补助 保险费 生活补助 表 4 ygjbsjb(员工加班休假表) 字段名数据类型长度描述 ygid ygxm jiabts jiabgz sjts varchar varchar int mone

20、y int 30 30 4 8 4 员工编号 员工姓名 加班天数 加班工资 休假天数 版权所有:版权所有:dgghate 7 sjkkmoney8 休假扣款 5.2.3 部分 e-r 模型的设计 员工基础信息 性别文化程度 员工编号员工姓名 图 3 系统部分实体属性图 员工基本工资信息 基本工资职务工资 员工编号员工姓名 工龄工资养老保险金 图 4 系统部分实体属性图 员工浮动工资信息 保险费生活补助 员工编号员工姓名 个人所得税住房补助 版权所有:版权所有:dgghate 8 图 5 系统部分实体属性图 员工加班休假信息 休假天数休假扣款 员工编号员工姓名 加班天数加班工资 图 6 系统部分

21、实体属性图 图 7 系统部分实体属性图 6 主要功能模块设计 6.1 建立工程框架 直接利用 mfc appwizard 应用程序向导创建一个基于对话框的应用程序9, 对话框是 windows 应用程序中的一种常用资源,其主要功能是输出信息和接收用 户的输入数据10。 在 visual c+中建立工资管理系统的基本框架,步骤如下: 单击菜单“file-new”命令,打开“new”对话框,单击“projects”选项卡, 选择“mfc appwizard(exe)” ,输入工程名,并设置路径,如图 8 所示。 用户信息 级别密码用户名 版权所有:版权所有:dgghate 9 图 8 “new”对

22、话框 单击“ok”按钮, “mfc appwizard-step1”对话框已经打开,如图 9 所示, 选项“dialog based” ,接着单击“next”按钮。 图 9 “mfc appwizard-step 1”对话框 在弹出的“mfc appwizard-step 2 of 4”对话框中,输入对话框标题,如图 10 版权所有:版权所有:dgghate 10 所示。 图 10 “mfc appwizard-step 2 of 4”对话框 在接下来的对话框中保持默认的选项。设置好的属性如图 11 所示,单击 “ok”按钮后,就完成了新建工程。 版权所有:版权所有:dgghate 11 图

23、11 设计好的工程属性 6.2 主窗口设计 6.2.1 菜单资源设计 在程序设计中,我们所要做的很大一部分工作是对程序的输入进行响应,而 我们最常用的选择方式就是用菜单进行选择。在 visual c+ 6.0 中,菜单功能的实 现(比如增减菜单和菜单项,定义菜单的 id,菜单的布局以及菜单的初始化,提 示信息等)都是通过资源文件和相关函数来实现的11。 主窗口菜单设置的主要步骤如下: (1) 单击“resourceview”选项卡,右键单击“gzglxt resources”选项,选 择“insert”菜单项,打开“insert resource”窗口,如图 12 所示。 版权所有:版权所有:

24、dgghate 12 图 12 “insert resource”窗口 (2) 选择“menu”文件夹,单击“new”按钮,在 gzglxt resources 目录下新 增一个 menu 目录项,菜单 id 为 idr_menu1。双击此菜单,对此菜单项的属性进行 设计。 6.2.2 客户区设计 (1) 打开对话框 idd_gzglxt_dialog 属性窗口,在对话框中添加 1 个 picture 控件,用来存放图片。在 menu 组合框中选择 idr_menu1。如图 13 所示。 版权所有:版权所有:dgghate 13 图 13 系统主界面 (2) 打开 classwizard 窗口

25、,为菜单项 id_exit 添加代码。程序调用 onok() 函数关闭对话框,退出系统。 void cgzglxtdlg:onexit() / todo: add your command handler code here onok(); 6.3 登录模块设计 6.3.1 实现目标 登录模块功能是完成用户登录本系统的操作2,用户登录对话框的设计如图 14 所示。 图 14 登录对话框 6.3.2 设计步骤 (1) 向项目中添加一个新 dialog 资源,资源 id 为 idd_login。在 idd_login 对话框资源中单击鼠标右键,执行弹出快捷菜单的“properties”菜单 命令,

26、打开“dialog properties”对话框。在“dialog properties”对话框中选择 general 选项卡,更改其“caption”文本框内容为“登录框” 。 版权所有:版权所有:dgghate 14 (2) 从 controls 面板上向 dialog 资源中添加 2 个 static、1 个 picture、2 个 edit,更改资源的属性,并为资源设置相对应的变量,如表 5 所示。 表 5 资源设置 idpropertiestype member idc_edit1 idc_ edit2 idok idcancel idc_static 默认 password tru

27、e caption 登录 caption 退出 type bitmap cstring cstring m_name m_pwd 6.3.3 代码分析 (1) 引用的外部变量。 extern cczyxxb ffxxb; (2) 响应“登录”按钮的代码。 void clogin:onok() / todo: add extra validation here /将对话框中编辑框的数据读取到成员变量中 updatedata(true); if(m_name=) messagebox(请输入用户名); return; /如果读取数据和用户输入不同,则返回 if(ffxxb.haveczy(m_na

28、me,m_pwd)!=1) messagebox(用户名或密码错误!); return; ffxxb.setczyname(m_name); jb=1; /判断当前用户级别 if(ffxxb.haveczyjb(m_name,m_pwd,jb)=1) 版权所有:版权所有:dgghate 15 ffxxb.setczyjb(jb); cdialog:onok(); 下面在主对话框中添加代码,使对话框在启动时首先打开登录对话框。在主窗 口选择 oninitdialog 函数,该函数将打开登录对话框,如果用户不是通过单击 “登录”按钮关闭对话框,则调用 onok 函数关闭主对话框,具体代码如下: b

29、ool cwordglxtdlg:oninitdialog() cdialog:oninitdialog(); . / todo: add extra initialization here clogin gin; if(gin.domodal()!=idok) onok(); . return true; / return true unless you set the focus to a control 6.4 员工录入模块设计 6.4.1 实现目标 添加员工信息,员工录入对话框的设计如图 15 所示。 版权所有:版权所有:dgghate 16 图 15 员工录入对话框 6.4.2 设计

30、步骤 (1) 向项目中添加一个新 dialog 资源,资源 id 为 idd_ygtjk。在 idd_ygtjk 对话框资源中单击鼠标右键,执行弹出快捷菜单的“properties”菜单 命令,打开“dialog properties”对话框。在“dialog properties”对话框中选择 general 选项卡,更改其“caption”文本框内容为“员工录入” 。 (2) 从 controls 面板上向 dialog 资源中添加 4 个 static、2 个 combo、2 个 edit,更改资源的属性,并为资源设置相对应的变量,如表 6 所示。 表 6 资源设置 idproperti

31、estype member idc_edit1 idc_ edit2 idc_combo1 idc_combo2 idok idcancel 默认 默认 caption 添加 caption 退出 cstring cstring ccombobox ccombobox m_id m_name m_sex m_whcd 6.4.3 代码分析 (1) 打开 classwizard 窗口,添加在 oninitdialog 成员函数,向 oninitdialog 添 加代码如下。 bool cygjctjdlg:oninitdialog() 版权所有:版权所有:dgghate 17 cdialog:o

32、ninitdialog(); / todo: add extra initialization here seticon(m_hicon, true); m_sex.addstring(男); m_sex.addstring(女); m_whcd.insertstring(0,专科); m_whcd.insertstring(1,本科); m_whcd.insertstring(2,研究生); return true; / return true unless you set the focus to a control / exception: ocx property pages shou

33、ld return false (2) 当用户单击“添加“按钮时,实现添加员工功能,其响应代码如下 void cygjctjdlg:onok() / todo: add extra validation here cygjcxxb xxb; updatedata(true); if(m_id=) messagebox(编号不能为空); return; if(m_name=) messagebox(姓名不能为空); return; if(xxb.haveid(m_id)=1) messagebox(员工编号已存在); return; xxb.setygid(m_id); 版权所有:版权所有:dg

34、ghate 18 xxb.setygxm(m_name); cstring sex,whcd; m_sex.getwindowtext(sex); if(sex=) messagebox(性别不能为空); return; /从组合框中读取文本 m_sex.getlbtext(m_sex.getcursel(),strsex); xxb.setsex(strsex); m_whcd.getwindowtext(whcd); if(whcd=) messagebox(文化程度不能为空); return; m_whcd.getlbtext(m_whcd.getcursel(),strwhcd); x

35、xb.setwhcd(strwhcd); xxb.sql_insert(); /向浮动工资表添加编号、姓名 cygfdgzxmb xmb; xmb.setygid(m_id); xmb.setygxm(m_name); xmb.sql_insert(); /向基本工资表添加编号、姓名 cygjbgzb gzb; gzb.setygid(m_id); gzb.setygxm(m_name); gzb.sql_insert(); /向加班休假表添加编号、姓名 cygjbsjb sjb; sjb.setygid(m_id); sjb.setygxm(m_name); 版权所有:版权所有:dgghat

36、e 19 sjb.sql_insert(); cdialog:onok(); 避免漏输现象:对于一个软件来说,在保证一定功能的基础上,给使用者留 出的出错机会越少,那么开发出来的软件越成功。本系统在用户漏输某个重要字 段时,系统会弹出提示对话框警告,这个功能主要是在保存时判断文本框的值是 否为空,如果不为空,就继续向下执行;如果为空,弹出错误提示12。 6.5 员工工资添加模块设计 6.5.1 实现目标 添加员工实际发放的工资情况,员工工资添加对话框设计如图 16 所示。 图 16 员工工资添加对话框 6.5.2 设计步骤 (1) 向项目中添加一个新 dialog 资源,资源 id 为 idd

37、_yggongzitj。在 idd_yggongzitj 对话框资源中单击鼠标右键,执行弹出快捷菜单的 “properties”菜单命令,打开“dialog properties”对话框。在“dialog properties”对话框中选择 general 选项卡,更改其“caption”文本框内容为“员工 工资添加” 。 版权所有:版权所有:dgghate 20 (2) 从 controls 面板上向 dialog 资源中添加 19 个 static、17 个 edit、2 个 button 控件,更改资源的属性,并为资源设置相对应的变量,如表 7 所示。 表 7 资源设置 idproper

38、tiestype member idc_edit1 idc_edit2 idc_edit3 idc_edit4 idc_edit5 idc_edit6 idc_edit7 idc_edit8 idc_edit9 idc_edit10 idc_edit11 idc_edit12 idc_edit13 idc_edit14 idc_edit15 idc_edit16 idc_edit17 idok idcancel idc_buttonsyye idc_buttonyfgz 默认 默认 默认 默认 默认 默认 默认 默认 默认 read-only true 默认 read-only true 默认

39、 默认 默认 read-only true read-only true caption 添加 caption 退出 caption 上月余额 caption 应发工资 cstring cstring int int int int int int int cedit int cedit int int int cedit cedit m_id m_name m_jbgz m_zwgz m_glgz m_zfbz m_shbz m_bxf m_jiabts m_jiabgz m_sjts m_sjgz m_ylbxj m_grsds m_sfgz m_yfgz m_syye 6.5.3 代码分

40、析 (1) 双击“idc_edit9”控件,自动生成 onchangeedit9 函数,实现用户添加 加班天数时,加班工资自动计算并显示,具体代码如下: void cyggztjdlg:onchangeedit9() / todo: if this is a richedit control, the control will not / send this notification unless you override the cdialog:oninitdialog() / function and call cricheditctrl().seteventmask() 版权所有:版权所

41、有:dgghate 21 / with the enm_change flag ored into the mask. updatedata(true); cstring str; str.format(%d,m_jiabts*40); m_jiabgz.setwindowtext(str); updatedata(false); / todo: add your control notification handler code here (2) 双击“上月余额”按钮,系统自动添加消息响应函数 onbuttonsyye,具 体代码如下。 void cyggztjdlg:onbuttonsyy

42、e() / todo: add your control notification handler code here updatedata(true); if(m_id=) messagebox(请先填写员工编号); return; adoconn m_adoconn; m_adoconn.oninitadoconn(); t = ctime:getcurrenttime(); int m,y; cstring str; m=t.getmonth()-1; y=t.getyear(); if(m=0) m=12; y=y-1; cgzffmxb mxb; if(mxb.havesyye(m_

43、id,y,m)=1) 版权所有:版权所有:dgghate 22 cstring sql; sql.format(select * from gzffmxb where ygid=%s and year(sjian)=%i and month(sjian)=%i,m_id,y,m); m_adoconn.getrecordset(_bstr_t)sql); str=(char*)(_bstr_t)m_adoconn.m_precordset-getcollect(yu_e); m_syye.setwindowtext(str); else m_syye.setwindowtext(0); upd

44、atedata(false); m_adoconn.exitconnect(); 在头文件中添加下列代码。 ctime t; (3) 双击“应发工资”按钮,系统自动添加消息响应函数 onbuttonyfgz,具 体代码如下: void cyggztjdlg:onbuttonyfgz() / todo: add your control notification handler code here updatedata(true); cstring syye; m_syye.getwindowtext(syye); if(syye=) messagebox(请先添加上月余额); return;

45、int yfgz; yfgz=atoi(syye)+m_jbgz+m_glgz+m_zwgz+m_shbz+m_zfbz-m_ylbxj; yfgz+=(-m_bxf+m_jiabts*40-m_sjts*40-m_grsds); cstring str; 版权所有:版权所有:dgghate 23 str.format(%d,yfgz); m_yfgz.setwindowtext(str); (4) 为“添加”按钮添加代码,实现添加员工工资功能,代码如下: void cyggztjdlg:onok() / todo: add extra validation here updatedata(t

46、rue); cygjcxxb xxb; cstring yfgz; m_yfgz.getwindowtext(yfgz); if(m_id=) messagebox(编号不能为空); return; if(xxb.haveid(m_id)!=1) messagebox(员工编号不存在); return; if(m_name=) messagebox(姓名不能为空); return; if(xxb.havename(m_id,m_name)!=1) messagebox(员工不存在); return; if(yfgz=) messagebox(应发工资不能为空); 版权所有:版权所有:dggha

47、te 24 return; cgzffmxb mxb; mxb.setygid(m_id); mxb.setygxm(m_name); mxb.setglgz(m_glgz); mxb.setjbgz(m_jbgz); mxb.setylbxj(m_ylbxj); mxb.setzwgz(m_zwgz); mxb.setbxf(m_bxf); mxb.setgrsds(m_grsds); mxb.setshbz(m_shbz); mxb.setzfbz(m_zfbz); mxb.setjiabts(m_jiabts); int jiabgz; jiabgz=m_jiabts*40; mxb.s

48、etjiabgz(jiabgz); mxb.setsjts(m_sjts); int sjkk; sjkk=m_sjts*40; mxb.setsjkk(sjkk); mxb.setyfje(atoi(yfgz); mxb.setsfje(m_sfgz); mxb.sql_insert(); cygjbsjb sjb; sjb.setjiabts(m_jiabts); sjb.setjiabgz(jiabgz); sjb.setsjts(m_sjts); sjb.setsjkk(sjkk); sjb.sql_update(m_id); cdialog:onok(); 版权所有:版权所有:dgg

49、hate 25 6.6 用户管理模块设计 6.6.1 实现目标 实现新建、删除用户功能,用户管理对话框设计如图 17 所示。 图 17 用户管理对话框 6.6.2 设计步骤 (1) 向项目中添加一个新 dialog 资源,资源 id 为 idd_xinjyh。在 idd_xinjyh 对话框资源中单击鼠标右键,执行弹出快捷菜单的“properties”菜 单命令,打开“dialog properties”对话框。在“dialog properties”对话框中选择 general 选项卡,更改其“caption”文本框内容为“用户管理” 。 (2) 从 controls 面板上向 dialog

50、 资源中添加 4 个 static、1 个 combo、3 个 edit、1 个 button 控件,更改资源的属性,并为资源设置相对应的变量,如表 8 所 示。 版权所有:版权所有:dgghate 26 表 8 资源设置 idpropertiestype member idc_edit1 idc_edit2 idc_edit3 idc_combo1 idok idc_button1 idcancel 默认 password true password true 默认 caption 添加 caption 删除 caption 退出 cstring cstring cstring ccombo

51、box m_name m_pwd m_pwd1 m_jb 6.6.3 代码分析 (1) 添加 oninitdialog()函数,初始化 combo 控件,具体代码如下: bool cxinjyhdlg:oninitdialog() cdialog:oninitdialog(); / todo: add extra initialization here seticon(m_hicon, true); m_jb.addstring(系统管理员); m_jb.addstring(普通管理员); return true; / return true unless you set the focus

52、to a control / exception: ocx property pages should return false (2) 为“添加”按钮添加消息响应函数,代码如下: void cxinjyhdlg:onok() / todo: add extra validation here updatedata(true); if(m_name=) messagebox(请输入用户名); return; cstring jb; 版权所有:版权所有:dgghate 27 m_jb.getwindowtext(jb); if(jb=) messagebox(级别不能为空); return; i

53、f(m_pwd=) messagebox(请输入密码); return; if(m_pwd1=) messagebox(请确认密码); return; if(m_pwd!=m_pwd1) messagebox(两次密码不同); return; cczyxxb xxb; if(xxb.havename(m_name)=1) messagebox(用户以存在,请重新输入); return; xxb.setczyname(m_name); xxb.setpwd(m_pwd); m_jb.getlbtext(m_jb.getcursel(),strjb); if(strjb=系统管理员) strjb=

54、1; else 版权所有:版权所有:dgghate 28 strjb=0; xxb.setczyjb(strjb); xxb.sql_insert(); cdialog:onok(); (3) 为“删除”按钮添加消息响应函数,代码如下: void cxinjyhdlg:onbutton1() / todo: add your control notification handler code here updatedata(true); if(messagebox(是否删除当前记录,请确认,mb_yesno)=idyes) cczyxxb xxb; xxb.sql_delete(m_name)

55、; (4) 当用户单击主界面菜单中的“用户管理”菜单项时,将执行 onmenuyhgl 函数,具体代码如下: void cgzglxtdlg:onmenuyhgl() / todo: add your command handler code here if(ffxxb.getczyjb()=1) cxinjyhdlg dlg; dlg.domodal(); else messagebox(没有权限); return; 版权所有:版权所有:dgghate 29 6.7 总体查询模块设计 6.7.1 实现目标 便于用户查询员工的工资,公司发放工资总额。总体查询对话框设计如图 18 所示。 图 1

56、8 “总体查询”对话框 6.7.2 设计步骤 (1) 向项目中添加一个新 dialog 资源,资源 id 为 idd_ztcx。在 idd_ztcx 对话框资源中单击鼠标右键,执行弹出快捷菜单的“properties”菜单命令,打开 “dialog properties”对话框。在“dialog properties”对话框中选择 general 选项卡, 更改其“caption”文本框内容为“总体查询” 。 (2) 从 controls 面板上向 dialog 资源中添加 1 个 static、1 个 datacombo、2 个 check box 控件、1 个 ado data 控件、1

57、个 datagrid、1 个 date time、1 个 button 控件,更改资源的属性,并为资源设置相对应的变量,如表 9 所示。 版权所有:版权所有:dgghate 30 表 9 资源设置 idpropertiestype member idc_check1 idc_check2 idc_datacombo1 idc_adodc1 idc_datetimeoicker1 idc_datagrid1 idc_chaxun idok idcancel 默认 默认 默认 caption 选择 默认 caption 查询 caption 查询 caption 工资总额 caption 退出 b

58、ool bool cdatacombo cadodc cdatetimectrl cdatagrid m_check1 m_check2 m_dc m_ad m_time m_da (3) ado data 控件具体设置如下。 右键单击该控件,从弹出的菜单中单击“properties”项,弹出“ado data 控 件属性”对话框。 在“general”选项卡取消“visible”复选框的选择,因为一般使用 ado data 控件的对话框控件不可见。 单击“通用”选项卡,选择“使用连接字符串”选项,然后单击“生成”按钮,如 图 19 所示。 图 19 设置数据源 接着弹出“数据连接属性”对话框

59、,在“提供者”页中选择“microsoft ole db provider for sql server”选项,如图 20 所示。 单击“下一步”按钮,在“连接”选项卡上设置对 sql server 的连接属性, 版权所有:版权所有:dgghate 31 包括选择服务器,选择数据库,具体如图 21 所示。 图 20 “数据连接属性”对话框 图 21 “连接”选项卡 版权所有:版权所有:dgghate 32 单击“确定”按钮,完成对“数据连接属性”的设置。 在“ado data 控件属性”对话框中单击 “记录源”选项卡,在“命令类 型” 栏中选择“1-adcmdtext” ,然后在“命令文本(s

60、ql)”中输入“select ygid as 员工编号,ygxm as 员工姓名,jbgz as 基本工资,glgz as 工龄工 资,zwgz as 职务工资,ylbxj as 养老保险金,grsds as 个人所得税,shbz as 生活补助,zfbz as 住房补助,bxf as 保险费,jiabts as 加班天数,jiabgz as 加班工资,sjts as 事假天数,sjkk as 事假扣款,yfje as 应发金额,sfje as 实发金额,yu_e as 余额,sjian as 时间 from gzffmxb” ,如图 22 所示。 图 22 “记录源”选项卡 (4) data

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论