关于SQL的工资管理系统

更新时间:2023-10-25 03:00:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

铜陵学院

数学与计算机系

《数据库课程设计》

设计题目:工资管理系统

学生姓名: 盛文强、陈锐、许瑞、耿德彬 学 号:0906121029、06、14、45 专业班级:09信息系统与信息管理 指导教师: 杨慧

时间: 2011年6月6日 至 2011年6月14日

第5页 共28 页

指导教师对课程设计(论文)的评语(工作态度、任务完成情况、能力水平、设计说明书(论文)的撰写和图纸质量等):

第5页 共28 页

成绩

指导教师签字 年 月 日

第5页 共28 页

目 录

1、开发背景 .................................................................................................................................... 5 2、功能描述 .................................................................................................................................... 5 3、需求分析 .................................................................................................................................... 6 4、概念模型设计 ............................................................................................................................ 9 5. 逻辑模型设计和优化................................................................................................................. 13 6. 物理设计和实施 ........................................................................................................................ 15 7、课程设计心得体会................................................................................................................... 33

第5页 共28 页

1、开发背景

随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的管理工具,不断改善企业的服务质量,提高工作效率。无论是行政职能,还是生产运作的管理要求的不断提高,在很大程度上使企业不得不改变传统的经营管理方式以适应快速发展的社会主义市场经济,改变企业管理方式、方法已经成为企业发展的先决条件。建设一个科学高效的信息管理系统是解决这一问题的必由之路。

对企业内部的财务运用现代化技术进行管理,是提高工作效率的有效手段。工资管理作为企业内部财务管理的一个重要方面,也逐步被企业管理者所重视,由于企业的规模的不断扩,大企业职工人数的不断增多,使工资发放成为企业管理中的一个重课题;再加上每一位职工的具体实际情况相同,规章章制度的不断完善,增大了个人工资发放难度;每个人每月的工资都要通过工资制度的审核,这大大增加了管理人员的工作量,通过计算机管理系统对员工工资进行全面的统计与管理,全面解决了工资管理过程中所遇到的各种问题,并且克服了传统管理方式中的易出错等问题。工资管理系统成为企业现代化管理中的首选管理工具。

2、功能描述

(描述该系统所需要完成的功能)

2.1 项目规划

工资管理系统是由基本信息管理、工资查询、工资管理、系统管理和帮助等几个功能模块组成,规划系统功能模块如下:

?

基本信息管理模块

基本信息管理模块主要包括员工录入、员工删除2部分。

?

工资查询模块

工资查询模块主要包括基本工资查询、浮动工资查询、加班/休假查询、总体查询4个部分。

?

工资管理模块

工资管理模块主要包括工资发放管理、基本工资管理、浮动工资管理3个部分。

?

系统管理模块

系统管理模块主要包括用户管理、修改密码、退出系统3个部分。

?

帮助模块

第5页 共28 页

帮助模块主要包括关于1个部分。

2.2 系统功能结构

工资系统的功能结构如图1所示。

工资管理系统基本信息管理基本工资查询工资查询浮动工资查询加班休假查询工资发放管理工资管理基本工资管理浮动工资管理系统管理帮助员工录入员工删除总体查询用户管理修改密码退出系统关于 图1 系统功能图

2.3 设计目标

本系统是根据中小企业的实际需求而开发的,完全能够实现企业对客户的自动化管理,通过本系统可以达到以下目标:

? ? ? ? ? ? ?

系统运行稳定,安全可靠。

界面设计美观,人机交互界面友好。

信息查询灵活、方便、快捷、准确,数据存储安全可靠。 满足键盘和鼠标的双重操作,完全支持回车键。 采用多种方式查询数据。

操作员可以随时修改自己的口令。

对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。

数据保密性强,为每个用户设置相应的权限级别。

3、需求分析

(这一部分不对全体学生要求,对学有余力的学生可以参照下面的模式写出部分或全部,根据编号对数据流程图中的各元素如数据流、数据存储、外部实体和处理逻辑进行细节描述)

所谓数据库(Database)就是指按一定组织方式存储在一起的,相互有关的若干个数据的结合,数据库管理系统(Database Management System)就是一种操纵和管理数据库

第5页 共28 页

的大型软件,简称DBMS,他们建立在操作系统的基础上,对数据库进行统一的管理和控制,其功能包括数据库定义,数据库管理,数据库建立和维护,于操作系统通信等。DBMS通常由数据字典,数据描述语言及其编译程序,数据操纵(查询)语言及其编译程序,数据库管理例行程序等部分组成。

关系数据库是以关系模型为基础的数据库,是根据表、记录和字段之间的关系进行组织和访问的一种数据库,它通过若干个表(Table)来存取数据,并且通过关系

(Relation)将这些表联系在一起,关系数据库提供了成为机构化查询语言(SQL)标准接口,该接口允许使用多种数据库工具和产品,关系数据库是目前最广泛应用的数据库。

根据对工资管理工作的调查和用户需求分析,该系统的数据流图如图3.2所示。基础工资设定 岗位工资设定 工龄工资设定 工资标准设定 员工信息设定 员工工资汇总 图3.2 系统的数据流图

数据词典分析

该软件的数据库由下述四张数据表组成: 员工信息表:PERSONNEL.DBF 基础工资设置表:COURSE.DBF 岗位工资设置表:RANK.DBF 工龄工资设置表:GONGLING.DBF

1、员工信息表:PERSONNEL.DBF

第5页 共28 页

字段 1 2 3 4 5 6

字段名 员 工 号 员工姓名 员工性别 岗位名称 工 龄 工资等级 类型 字符型 字符型 字符型 字符型 数值型 宽度 3 10 2 14 2 2 说明 数字 小于等于5个汉字 “男”或“女” 小于等于7个汉字 1-99之间 1-99之间 数值型 2、基础工资设置表:COURSE.DBF

字段 1 2

3、岗位工资设置表:RANK.DBF

字段 1 2 字段名 岗位名称 工资标准 类型 字符型 数值型 宽度 14 4 说明 小于等于7个汉字 1-9999之间 字段名 工资等级 工资标准 类型 数值型 数值型 宽度 2 4 说明 1-99之间 1-9999之间 4、工龄工资设置表:GONGLING.DBF

字段 1 2 字段名 工资等级 工资标准 类型 数值型 数值型 宽度 2 4 说明 1-99之间 1-9999之间 5、管理员注册表:ADMINER.DBF

字段 1 字段名 注册名 类型 字符型 宽度 10 说明 任意字符 第5页 共28 页

2

口 令 字符型 10 英文字母或数字 4、概念模型设计

(可以使用工具PowerDesigner或visio画出该系统的E-R图)

在设计时,按照实际的要求把本系统划分为初始化、数据管理、查询、打印、计算、退出等相互独立的功能模块,以实现对工资系统的控制,其系统结构框图如图2-5-1所示。

初如化 数据库 数据管理 统计员工信息 查询结果统计 工资汇总计算 查询 编号查询 姓名查询 部门查询 打印 工资打印 考勤打印 扣款打印 退出 关于系统 增加 删除 修改

图2-6-1 系统结构流程图

第5页 共28 页

工资管理系初始数据管理 查询 统计 打印 退出 建立本月工资增减部门 当月全体修改 当月部门修改 删除人员 增加人员 人员内部调人员数据修复合 条件查单个条件查工资总额 满足条件信息 统计打印 汇总打印 动 改 询 软件各部分关系图如2-6-2图:

图 2-6-2 软件总体结构

得到上面的数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。

第8页 共28 页

根据上面的设计规出的实体有:员工基本信息实体,员工考勤信息实体,员工工作评价信息实体,员工工资信息实体,人事变动实体,部门管理实体。

实体与实体之间的E-R模型如下图3-3-1所示。

第8页 共28 页

属于 部门 员工

应得工资 扣除相应 员工工资 计算工资 员工考勤 员工评价 考勤管理 员工评价

第8页 共28 页

图3-3-1实体间的E–R模型

5. 逻辑模型设计和优化

(根据转换规则将E-R图转换为关系模式并进行优化并至少达到3NF标准)

逻辑设计:

a.数据字典

表1 员工津贴表jt

列 名 emp_no Jiaban_month jbtianshu Jiaban_jiangjin

数据类型 varchar(8) varchar(10) 可否为空 not null not null 说 明 员工号(主键一) 加班时间(主键二) char(2) float null null 加班天数 加班工资 表2 考勤信息统计表格kq

列 名 emp_no Kaoqin_month queqin Kaoqin_gongzi 数据类型 varchar(8) varchar(10) 可否为空 not null not null 说 明 员工号(主键一) 时间(主键二) char float null null 缺勤天数 考勤工资 第8页 共28 页

表3 工资标准表格gzbz

列 名 Zw Jibengongzi

数据类型 Varchar(10) Float 可否为空 not null null 说 明 工种(主键) 基本工资 表5 员工基本情况表yg

列 名 emp_no emp_name sex Department_id Emp_time Marry Telephon

数据类型 VARCHAR(8) VARCHAR(10) Char(2) Char(4) 可否为空 NOT NULL NULL NULL Not null 说 明 员工号(主键) 员工名称 性别 员工部门 VARCHAR2(6) Varchar(4) Char(11) NOT NULL Null Null 入公司时间 婚姻状况 电话号码 表6 员工月工资表ygz

列 名 emp_no jbgz jt Kq Ygz_total ygz_date 数据类型 VARCHAR2(6) NUMBER(6) NUMBER(6) NUMBER(6) NUMBER(6) VARCHAR2(6) 可否为空 NOT NULL NOT NULL NULL NULL NULL NOT NULL 说 明 员工号(主键一) 基本工资 津贴 缺勤扣除 总月工资 月工资时间(主键第8页 共28 页

二) b.关系模式

员工信息表(员工编号,员工姓名,性别,出生年月,参加工作时间,所属部门,职务,,婚姻状况,政治面貌,电话号码)

员工出勤表(员工编号,统计时间,员工姓名,矿工次数,考勤工资) 员工津贴表(员工编号,统计时间,员工姓名,加班天数,津贴工资) 员工月工资表(员工编号,基本工资,住房补贴,津贴,工会会费,水电费,位房公积金,养老保险,奖惩,总工资)

部门信息表(部门编号,部门名称,部门负责人,部门人数) 政治面貌)

基本工资表(职位,基本工资)

各表的属性都不能被分解,所有非主属性都完全依赖每一个候选关键属性,也没有传递依赖,因此符合1,2,3范式。

4. 物理设计

数据库最终是要存储在物理设备上的,为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构(存储结构与存取方法)的过程,就是数据库的物理设计。数据库的物理结构依赖于给定的计算机系统和DBMS。

5. 实施与维护

确定了数据库的逻辑结构和物理结构后,就可以用所选用的DBMS提供的数据定义语言(DDL)来严格定义数据库,包括建立表、定义表的约束等。数据库系统投入运行后,对数据库设计进行评价、调整、修改等维护工作。

6. 物理设计和实施

句)

第8页 共28 页

(根据第5部分优化后的逻辑模式使用create table语句写出各关系模式的创建语

4.1 建立工程框架

在Visual C++中建立文档管理系统的基本框架,步骤如下:

(1)单击菜单“File-->New”命令,打开“New”对话框,单击“Projects”选项卡,选择“MFC AppWizard(exe)”,输入工程名,并设置路径,如图3所示。

图3 “New”对话框

(2)单击“OK”按钮,“MFC AppWizard-Step1”对话框已经打开,如图4所示,选项“Dialog base”,接着单击“Next”按钮。

图4 “MFC AppWizard-Step 1”对话框

(3)在弹出的“MFC AppWizard-Step 2 of 4”对话框中,输入对话框标题,如图5所示。

第8页 共28 页

图5 “MFC AppWizard-Step 2 of 4”对话框

(4)在接下来的对话框中保持默认的选项。设置好的属性如图6所示,单击“OK”按钮后,就完成了新建工程。

图6 设计好的工程属性

4

4.2 主窗口设计

1.菜单资源设计

主窗口菜单设置的主要步骤如下:

第8页 共28 页

(1)单击“ResourceView”选项卡,右键单击“GZGLXT Resources”选项,选择“Insert”菜单项,打开“Insert Resource”窗口,如图7所示。

图7 “Insert Resource”窗口

(2)选择“Menu”文件夹,单击“New”按钮,在GZGLXT Resources目录下新增一个Menu目录项,菜单ID为IDR_MENU1。双击此菜单,对此菜单项的属性进行设计。如图8所示。

图8 设计菜单属性图

2.客户区设计

(1)打开对话框IDD_GZGLXT_DIALOG属性窗口,在对话框中添加1个Picture控件,用来存放图片。在Menu组合框中选择IDR_MENU1。如图9所示。

第8页 共28 页

图9 系统主界面

(2)预先在下边留出状态栏,声明CTime、CstatusBarCtrl类对象实体代码如下。

CTime t;

CStatusBarCtrl m_StatusBar;

引用的外部变量

extern CCzyxxb ffxxb;

(3)在OnInitDialog成员函数中添加状态栏。

// TODO: Add extra initialization here t=CTime::GetCurrentTime(); m_StatusBar.EnableAutomation();

m_StatusBar.Create(WS_CHILD|WS_VISIBLE,CRect(0,0,0,0),this,0);//ID_STATUSBAR); int width[]={200,370,500}; m_StatusBar.SetParts(4, &width[0]);

m_StatusBar.SetText(\吉林省明日科技有限公司\CString StatusText;

StatusText.Format(\当前用户:%s\m_StatusBar.SetText(StatusText,0,1); CString strdate;

strdate.Format(\当前时间:%s\m_StatusBar.SetText(strdate,0,2);

return TRUE; // return TRUE unless you set the focus to a control

第8页 共28 页

(4)打开ClassWizard窗口,为菜单项ID_EXIT添加代码。程序调用OnOK()函数关闭对话框,退出系统。

void CGZGLXTDlg::OnExit() { }

// TODO: Add your command handler code here OnOK();

4.3 登录模块设计

1.实现目标

登录模块功能是完成用户登录本系统的操作,用户登录对话框的设计如图10所示

图10 登录对话框

2.设计步骤

(1)向项目中添加一个新Dialog资源,资源ID为IDD_LOGIN。在IDD_LOGIN对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“Dialog Properties”对话框。在“Dialog Properties”对话框中选择General选项卡,更改其“Caption”文本框内容为“用户登录”。

(2)从Controls面板上向Dialog资源中添加2个Static、1个Picture、2个Edit,更改资源的属性,并为资源设置相对应的变量,如表1所示。

表1 资源设置

Member Variables Type CString CString Member m_name m_pwd ID IDC_EDIT1 IDC_ EDIT2 IDOK IDCANCEL IDC_STATIC Properties 默认 PassWord TRUE Caption 登录 Caption 退出 Type Bitmap 第8页 共28 页

2005年7月

25.《SQL Server数据库开发实例解析》机械工业出版社 宋昆、李严等

2006年1月

26.《Access数据库开发实例解析》机械工业出版社 李俊民、高春燕等

2006年1月

27.《Visual Basic数据库系统开发完全手册》人民邮电出版社 明日科技王春才、高春艳、

李俊民 2006年3月

28.《Visual C++ 数据库系统开发完全手册》人民邮电出版社 明日科技 王端、于速、张雨

2006年3月

29.《Delphi数据库系统开发完全手册》人民邮电出版社 明日科技 宋坤、邹天思

2006年3月

30.《JSP数据库系统开发完全手册》人民邮电出版社 明日科技 王国辉、李文立、杨亮

2006年3月

31.《Visual Basic数据库系统开发案例精选》人民邮电出版社 明日科技 高春艳、李俊民、

刘彬彬 2006年5月

32.《Delphi 数据库系统开发案例精选》人民邮电出版社 明日科技 李文立、刘强、梁冰

2006年5月

33.《ASP数据库系统开发案例精选》人民邮电出版社 明日科技 孙明丽、邹天思、盖天宇

2006年5月

34.《JSP数据库系统开发案例精选》人民邮电出版社 明日科技 王国辉、王易 2006年5月

第8页 共28 页

附录B 数据表

由于篇幅有限,只给出部分数据表。

表5 Ygjcxxb(员工基础信息表) 字段名 YGid YGxm Sex Whcd 数据类型 varchar varchar char varchar 表6 Ygjbgzb(员工基本工资表) 字段名 YGid YGxm JBgz ZWgz GLgz YLbxj 数据类型 varchar varchar money money money money 30 30 8 8 8 8 长度 描述 员工编号 员工姓名 基本工资 职务工资 工龄工资 养老保险金 30 30 2 20 长度 描述 员工编号 员工姓名 性别 文化程度

表7 Ygfdgzxmb(员工浮动工资表) 字段名 数据类型 varchar varchar money money money money 30 30 8 8 8 8 长度 描述 员工编号 员工姓名 个人所得税 住房补助 保险费 生活补助 YGid YGxm GRsds ZFbz BXf SHbz 表8 Ygjbsjb(员工加班休假表) 字段名 YGid YGxm Jiabts Jiabgz SJts Sjkk 数据类型 varchar varchar money money money money 30 30 8 8 8 8 长度 描述 员工编号 员工姓名 加班天数 加班工资 休假天数 休假扣款 第8页 共28 页

3.代码分析

(1)引用的外部变量。

extern CCzyxxb ffxxb;

(2)响应“登录”按钮的代码。

void CLogin::OnOK() { }

// TODO: Add extra validation here

//将对话框中编辑框的数据读取到成员变量中 UpdateData(true); if(m_name==\{ }

//如果读取数据和用户输入不同,则返回 if(ffxxb.HaveCzy(m_name,m_pwd)!=1) { }

ffxxb.SetCzyName(m_name); jb=\

//判断当前用户级别

if(ffxxb.HaveCzyjb(m_name,m_pwd,jb)==1) { }

CDialog::OnOK();

ffxxb.SetCzyjb(jb);

MessageBox(\用户名或密码错误!\return;

MessageBox(\请输入用户名\return;

下面在主对话框中添加代码,使对话框在启动时首先打开登录对话框。在主窗口选择OnInitDialog函数,该函数将打开登录对话框,如果用户不是通过单击“登录”按钮关闭对话框,则调用OnOK函数关闭主对话框,具体代码如下:

BOOL CWordGLXTDlg::OnInitDialog() { ......

// TODO: Add extra initialization here

第8页 共28 页

CDialog::OnInitDialog();

CLogin gin; ......

return TRUE; // return TRUE unless you set the focus to a control }

if(gin.DoModal()!=IDOK)

OnOK();

4.4 员工录入模块设计

1.实现目标

添加员工信息,员工录入对话框的设计如图11所示

图11 员工录入对话框

2.设计步骤

(1)向项目中添加一个新Dialog资源,资源ID为IDD_YGTJK。在IDD_YGTJK对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“Dialog Properties”对话框。在“Dialog Properties”对话框中选择General选项卡,更改其“Caption”文本框内容为“员工录入”。

(2)从Controls面板上向Dialog资源中添加4个Static、2个Combo、2个Edit,更改资源的属性,并为资源设置相对应的变量,如表2所示。

表2 资源设置

Member Variables Type CString CString CComboBox CComboBox m_id m_name m_sex M_whcd Member ID IDC_EDIT1 IDC_ EDIT2 IDC_COMBO1 IDC_COMBO2 IDOK IDCANCEL Properties 默认 默认 Type Bitmap Caption 退出 Caption 添加 Caption 退出 3.代码分析

(1)打开ClassWizard窗口,添加在OnInitDialog成员函数,向OnInitDialog添加代码如下。

第8页 共28 页

BOOL CYgjctjdlg::OnInitDialog() {

}

CDialog::OnInitDialog();

// 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 should return FALSE

(2)当用户单击“添加“按钮时,实现添加员工功能,其响应代码如下

void CYgjctjdlg::OnOK() {

// TODO: Add extra validation here CYgjcxxb xxb; UpdateData(true); if(m_id==\{ }

if(m_name==\{ }

if(xxb.HaveId(m_id)==1) { }

xxb.SetYGid(m_id); xxb.SetYGxm(m_name); CString sex,whcd;

m_sex.GetWindowText(sex);

第8页 共28 页

MessageBox(\员工编号已存在\return;

MessageBox(\姓名不能为空\return;

MessageBox(\编号不能为空\return;

if(sex==\{ }

//从组合框中读取文本

MessageBox(\性别不能为空\return;

m_sex.GetLBText(m_sex.GetCurSel(),strsex); }

xxb.SetSex(strsex);

m_whcd.GetWindowText(whcd); if(whcd==\{ }

m_whcd.GetLBText(m_whcd.GetCurSel(),strwhcd); xxb.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); sjb.sql_insert(); CDialog::OnOK();

MessageBox(\文化程度不能为空\return;

4.5 员工工资添加模块设计

1.实现目标

添加员工实际发放的工资情况,员工工资添加对话框设计如图12所示。

第8页 共28 页

图12 员工工资添加对话框

2.设计步骤

(1)向项目中添加一个新Dialog资源,资源ID为IDD_YGGONGZITJ。在IDD_YGGONGZITJ对话框资源中单击鼠标右键,执行弹出快捷菜单的 “Properties”菜单命令,打开“Dialog Properties”对话框。在“Dialog Properties”对话框中选择General选项卡,更改其“Caption”文本框内容为“员工工资添加”。

(2)从Controls面板上向Dialog资源中添加19个Static、17个Edit、2个Button控件,更改资源的属性,并为资源设置相对应的变量,如表3所示。

表3 资源设置

Member Variables Type CString CString int int int int int int int CEdit int CEdit int int Member 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 ID Properties 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 默认 默认 默认 默认 默认 默认 默认 默认 默认 Read-only TRUE 默认 Read-only TRUE 默认 默认 第8页 共28 页

IDC_EDIT15 IDC_EDIT16 IDC_EDIT17 IDOK IDCANCEL IDC_BUTTONsyye IDC_BUTTONyfgz 默认 Read-only TRUE Read-only TRUE Caption 添加 Caption 退出 Caption 上月余额 Caption 应发工资 int CEdit CEdit m_sfgz m_yfgz m_syye 3.代码分析

(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() // with the ENM_CHANGE flag ORed into the mask. UpdateData(true); CString str;

str.Format(\m_jiabgz.SetWindowText(str); UpdateData(false);

// TODO: Add your control notification handler code here

(2)双击“上月余额”按钮,系统自动添加消息响应函数OnBUTTONsyye,具体代码如下。

void CYggztjdlg::OnBUTTONsyye() {

// TODO: Add your control notification handler code here UpdateData(true); if(m_id==\{ }

ADOConn m_AdoConn; m_AdoConn.OnInitADOConn();

第8页 共28 页

MessageBox(\请先填写员工编号\return;

t = CTime::GetCurrentTime(); int m,y; CString str; m=t.GetMonth()-1; y=t.GetYear(); if(m==0) { }

CGzffmxb mxb;

if(mxb.Havesyye(m_id,y,m)==1) {

CString sql;

sql.Format(\m=12; y=y-1;

month(sjian)='%i'\

}

} else { }

UpdateData(false); m_AdoConn.ExitConnect();

m_syye.SetWindowText(\

m_AdoConn.GetRecordSet((_bstr_t)sql);

str=(char*)(_bstr_t)m_AdoConn.m_pRecordset->GetCollect(\m_syye.SetWindowText(str);

在头文件中添加下列代码。

CTime t;

(3)双击“应发工资”按钮,系统自动添加消息响应函数OnBUTTONyfgz,具体代码如下:

void CYggztjdlg::OnBUTTONyfgz() {

// TODO: Add your control notification handler code here UpdateData(true); CString syye;

m_syye.GetWindowText(syye);

第8页 共28 页

if(syye==\{ } int yfgz;

yfgz=atoi(syye)+m_jbgz+m_glgz+m_zwgz+m_shbz+m_zfbz-m_ylbxj;

MessageBox(\请先添加上月余额\return;

}

yfgz+=(-m_bxf+m_jiabts*40-m_sjts*40-m_grsds); CString str;

str.Format(\m_yfgz.SetWindowText(str);

(4)为“添加”按钮添加代码,实现添加员工工资功能,代码如下:

void CYggztjdlg::OnOK() {

// TODO: Add extra validation here UpdateData(true); CYgjcxxb xxb; CString yfgz;

m_yfgz.GetWindowText(yfgz); if(m_id==\{ }

if(xxb.HaveId(m_id)!=1) { }

if(m_name==\{ }

if(xxb.Havename(m_id,m_name)!=1) {

MessageBox(\员工不存在\

第8页 共28 页

MessageBox(\姓名不能为空\return;

MessageBox(\员工编号不存在\return;

MessageBox(\编号不能为空\return;

}

}

return;

if(yfgz==\{ }

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.SetJiaBgz(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();

MessageBox(\应发工资不能为空\return;

第8页 共28 页

4.6 用户管理模块设计

1.实现目标

实现新建、删除用户功能,用户管理对话框设计如图13所示。

图13 用户管理对话框

2.设计步骤

(1)向项目中添加一个新Dialog资源,资源ID为IDD_XINJYH。在

IDD_XINJYH对话框资源中单击鼠标右键,执行弹出快捷菜单的“Properties”菜单命令,打开“Dialog Properties”对话框。在“Dialog Properties”对话框中选择General选项卡,更改其“Caption”文本框内容为“用户管理”。

(2)从Controls面板上向Dialog资源中添加4个Static、1个Combo、3个Edit、1个Button控件,更改资源的属性,并为资源设置相对应的变量,如表4所示

表4 资源设置

Member Variables Type CString CString CString CComboBox Member m_name m_pwd m_pwd1 m_jb ID Properties IDC_EDIT1 IDC_EDIT2 IDC_EDIT3 IDC_COMBO1 IDOK IDC_BUTTON1 IDCANCEL 默认 Password true Password true 默认 Caption 添加 Caption 删除 Caption 退出 3.代码分析

(1)添加OnInitDialog()函数,初始化Combo控件,集体代码如下:

BOOL CXinjyhdlg::OnInitDialog() {

CDialog::OnInitDialog();

第8页 共28 页

本文来源:https://www.bwwdw.com/article/xu92.html

Top