第 9章 工资系统开发案例
学习目标:
? 掌握一个实际应用项目的开发过程
? 自主开发一个小型的信息管理系统
第 9章 工资系统开发案例
教学内容:
9.1 系统结构
9.2 设计系统启动窗体
9.3 设计用户登录窗体
9.4 设计系统主窗体
9.5 设计基本数据输入窗体
9.6 设计基本数据修改窗体
9.7 设计专项数据修改窗体
9.8 设计工资组合查询窗体
9.9 设计查询工资明细窗体
9.10 有待完善的问题与思考
9.1 系统结构
1.系统流程图
返回目录
9.1 系统结构
2,系统的中的窗体模块
? frmStart,显示开发人员的名单及开发日期等
? frmLogin,用户登录界面
? frmMain,含系统菜单的主窗体
? frmInBase,输入每个职工的基本数据
? frmInEdit,浏览, 修改, 删除及查找职工的基本数据
? frmInSpecial,修改指定职工的基本工资和和岗位工资
? frmQryZh,查询指定职工或指定部门的职工工资情况
? frmQryGr,查询指定职工详细的工资信息
? frmPrtGzd,打印指定职工的工资单
? frmPrtDepart,打印指定部门的所有职工的工资单
返回目录
9.1 系统结构
3,系统中的数据库及数据表
工资库,MDB—基本工资表
返回目录
9.1 系统结构
工资库,MDB—部门表
工资库,MDB—密码表
返回目录
9.2 设计系统启动窗体 frmStart
1,窗体设计
返回目录
工程,wagesystem.vbp
窗体,frmStart
2,代码要求
无论单击窗体, 标签或
按下某个键, 均显示登录
窗体 frmLogin
9.3 设计用户登录窗体 frmLogin
1,窗体设计
,工程 → 添加窗体,
保存为 frmLogin.frm
返回目录
9.3 设计用户登录窗体 frmLogin
2,编写 代码
(1) 在, 通用, 声明段定义该模块通用的 sSQL,sirname、
sirpwd变量
(2) 主要的事件响应代码:
? 窗体的初始化事件 (Form_Initialize):将密码表中的用户名
添加到登录窗体的下拉列表框中 。
?, 确定, 按钮的单击事件 (cmdOK_Click):在, 密码表,
中查
找是否有对应的记录 。 有则显示 frmMain窗体, 否则提示
重新输入密码 。
?, 密码, 文本框的按键事件 (txtPassword_KeyPress):输入
密码后, 按回车键相当于单击, 确定, 按钮
返回目录
9.4 设计系统主窗体 frmMain
1,窗体设计
,工程 → 添加窗体,, 保存为 frmMain.frm
返回目录
9.4 设计系统主窗体 frmMain
2,编写 代码,单击菜单命令打开相应的窗体
返回目录
9.5 设计基本数据输入窗体 frmInBase
1,窗体设计
,工程 → 添加窗体,, 保存为 frmInBase.frm
返回目录
注:, 增加, 按钮与
,确定, 按钮在同一位

9.5 设计基本数据输入窗体 frmInBase
2,编写 代码,
(1) 在, 通用, 声明段定义该模块通用的 sum变量
(2) 窗体的 Load事件:设置, 工号, 和, 职工姓名, 两个文
本框
处于不活动状态
(3) 窗体的 Activate事件:将, 部门表, 中, 部门名称, 字段
的值
添加到, 系, 部, 处, 下拉列表框中
(4) 窗体的 KeyPress事件:按回车相当于单击, 增加, 按钮
(5),增加, 按钮的 Click事件:使各个用于输入职工信息的

件有效, 以便输入新职工的信息;同时, 增加, 按钮不
返回目录
9.5 设计基本数据输入窗体 frmInBase
(6),确定, 按钮的 Click事件:将一条新记录添加到, 基本

资表, 中
(7),取消, 按钮的 Click事件:使, 确定, 按钮不可见,
,增加,
按钮可见
(8),退出, 按钮的 Click事件,Unload Me
(9) 相应控件的 KeyPress事件:在控件中按回车键, 焦点自
动切换到下一个控件
(10),基本工资, 和, 岗位工资, 文本框的 LostFocus事件:

这两个文本框中输入数值后, 可自动算出别的项目, 如
所得税, 应发工资等
返回目录
9.6 设计基本数据修改窗体 frmInEdit
1,窗体设计
,工程 → 添加窗体,, 保存为 frmInEdit.frm
返回目录
注:两个 Data控件的属性与 frmInBase窗体上的 Data控件相同
9.6 设计基本数据修改窗体 frmInEdit
2,编写 代码,
(1) 在, 通用, 声明段定义变量和函数:
? 定义该模块通用的 ssql变量
? brsex函数:根据, 性别, 字段的值设定, 性别, 按钮的状态
? Updsex函数:根据, 性别, 按钮的状态设定, 性别, 字段的值
? BrDepart函数:设定数据控件 Data1和 Data2的属性
(2) 窗体的 Initialize事件,将, 部门名称, 字段所有可能的值
添加到, 系, 部, 处, 下拉列表框中, 并调用函数 brsex来
根据, 性别, 字段的值设定, 性别, 单选按钮的状态 。
(3),首条,,, 上一条,,, 下一条, 及, 末条, 按钮的
Click事件,移动指针, 并调用 brsex和 BrDepart函数
返回目录
9.6 设计基本数据修改窗体 frmInEdit
(4),修改, 按钮的 Click事件,按钮标题是, 修改,, 则等待用

修改数据, 并将标题改为, 确定, ;按钮标题是, 确定,, 则
将数据更新到数据库中, 并将标题改为, 修改, 。
(5),删除, 按钮的 Click事件,提示用户是否想真的删除纪录
(6),查找, 按钮的 Click事件,根据输入的条件查询纪录集
(7),退出, 按钮的 Click事件,Unload Me
(8) 相应控件的 KeyPress事件,在控件中按回车键, 焦点自
动切换到下一个控件
(9),基本工资, 和, 岗位工资, 文本框的 LostFocus事件:

这两个文本框中输入数值后, 可自动算出别的项目, 如
所得税, 应发工资等
返回目录
9.7 设计专项数据修改窗体 frmInSpecial
1,窗体设计
,工程 → 添加窗体,, 保存为 frmInSpecial.frm
返回目录
Data1:“工
资库”中的
“部门表”
MSFlexGrid控
件 grd_Result
9.7 设计专项数据修改窗体 frmInSpecial
注:设计时 Frame1和 Frame2位于相同位置
返回目录
Frame2
Visible=False
Frame1
Visible为 True
设计时 Frame2
覆盖 Frame1
9.7 设计专项数据修改窗体 frmInSpecial
2,编写代码:
(1) 在, 通用, 声明段定义模块级变量
(2) 窗体的 Initialize事件,将, 部门名称, 字段所有可能的值
添加到 Frame1的, 所在部门, 下拉列表
(3) Frame2“确定, 按钮的 Click事件,根据用户设定的条件修
改指定纪录的工资, 然后使 Frame2隐藏 Frame1出现
(4) Frame1“检索, 按钮的 Click事件,根据用户输入的条件查
询纪录集, 找到则显示在下面的 MSFlexGrid控件中;同时使
Frame1隐藏 Frame2出现
(5),退出, 按钮的 Click事件,Unload Me
返回目录
9.8 设计工资组合查询窗体 frmQryZh
1,窗体设计:, 工程 → 添加窗体,, 保存为 frmQryZh.frm
返回目录
Data1:
“工资库”
中的“部门
表”
属性设置:
DatabaseName-工资
库,mdb
代码中:
RecordSource = ssql
9.8 设计工资组合查询窗体 frmQryZh
2,编写代码:
(1) 在, 通用, 声明段定义模块级变量
(2) 窗体的 Load事件:, 教师工号, 和, 教师姓名, 文本框为空
(3) 窗体的 Initialize事件,将, 部门名称, 字段可能的值添加到
,所在部门, 下拉列表框中
(4),检索, 按钮的 Click事件,根据用户输入的条件查询纪录集,
找到则显示在下面的 MSFlexGrid控件中
(5),退出, 按钮的 Click事件,Unload Me
返回目录
9.9 设计查询工资明细窗体 frmQryGr
1,窗体设计:, 工程 → 添加窗体,, 保存为 frmQryGr.frm
返回目录
属性设置:
DatabaseName-工资
库,mdb
代码中:
RecordSource = ssql
9.9 设计查询工资明细窗体 frmQryGr
2,编写 代码,
(1) 在, 通用, 声明段定义模块级变量
(2) 窗体的 Load事件,选中, 职工号, 单选按钮
(3),查询选项, 框架中四个控件的事件响应代码:
? 单击, 职工号, 或, 姓名, 单选按钮, 对应的两个文本框清

? 单击, 职工号, 或, 姓名, 文本框, 则使对应的单选按钮选中
? 在, 职工号, 或, 姓名, 文本框中按回车, 等价于单击, 检索,
按钮, 同时使, 继续, 按钮成为缺省命令按钮
(4),检索, 按钮的 Click事件,根据用户输入的条件查询纪
录集, 找到则显示在下面的标签和文本框中
(5),继续, 按钮的 Click事件,显示下一个满足条件的纪录
(6),返回, 按钮的 Click事件,Unload Me
返回目录
9.10 有待完善的问题与思考
? 为了使读者既能学到知识, 又能提高自己, 教材中
只给出其中绝大多数模块的代码及设计过程 。
? 在已经介绍的窗体模块中也存在一些问题, 例如,
登录用户的数据存放在, 密码表, 中, 这显示不能
起到保密的作用;有些模块的功能也不完善 。
? 有兴趣的读者还可进一步扩充系统的功能, 如增加
数据统计及备份功能等 。
返回目录