工资管理系统设计与开发实训目的与要求:本实训以南京彩天粉末涂料实业有限公司工资管理系统的设计与开发为例,详细说明系统开发各主要阶段的内容。
通过本实训的学习,要求所有同学掌握在系统开发实践中,如何进行资料收集、系统规划、系统分析及系统设计工作,掌握使用Visual FoxPro工具进行系统的开发,掌握系统开发的基本方法和原理。
任务一:资料收集一、公司介绍南京彩天粉末涂料实业有限公司是南京天河科学研究院实现科技成果产业化而创办的股份制企业。
南京天河科学研究院于1958年在国内最早研究开发出粉末涂料这一环保产品,并一直致力于技术推广与新产品开发。
1992年南京天河科学研究院在浦口建立粉末涂料生产基地,1998年进行股份改制创建南京彩天粉末涂料实业有限公司。
公司有一批专业水平高的科技队伍,在公司市场化运作的十多年间,产业规模迅速扩张。
公司现有的纯环氧、环氧/聚酯、纯聚酯/TGIC、纯聚酯/PRIMID、纯聚酯透明、丙烯酸、聚氨酯七大类型的热固性粉末涂料,针对不同的应用领域和不同的表观效果形成多种系列产品,40多年的粉末涂料研究开发及技术储备,10多年的粉末涂料生产经验,年产5000吨各种粉末涂料的生产能力,多次获省、部级多项科技进步奖,在国内外享有盛誉。
二、组织结构南京彩天粉末涂料实业有限公司有职员245名,现有八个部门:总经理办公室、财务部、人事部、经营部、综合部、后勤部、一车间和二车间。
其组织机构如图1所示。
图1 组织结构三、业务流程图2 公司业务流程图四、相关数据资料南京彩天粉末涂料实业有限公司的工资发放流程如下,月末,核算员根据人事部的“人事变动通知单”、“工资变动通知单”及“上月工资表”编制“工资表”初表;核算员根据各部、车间考勤员上报的“出勤表”及后勤部的“扣款通知单”计算工资,然后将制好的工资表送主管会计审核;然后,核算员根据已审核工资表汇总工资,并编制工资汇总表,出纳到银行提款然后发放工资。
表1 人事变动通知单年月日表2 工资变动通知单年月日表3 出勤表年月日表4 扣款通知单年月日表5 工资表年月日部门:表6 工资汇总表五、数据处理(1)个人所得税的计算方法如表7所示。
表7 个人所得税计税表(2)工资计算公式应发工资=基本工资+补贴+奖金应纳税=(应发工资-800)×适用税率—速算扣除数实发工资=应发工资+上月扣零—所得税—房租—水费—电费(取整)扣零=应发工资+上月扣零—所得税—房租—水费—电费—实发工资六、用户对系统的需求(1)对部门编码进行维护(部门库追加、修改、删除)。
(2)对人员编码进行维护(人员库追加、修改、删除)。
(3)对工资数据进行维护。
(4)系统自动计算奖金、税金、应发工资、实发工资。
(5)系统工资自动扣零处理至元。
(6)系统对实发工资进行面值分解,以便从银行提款发放工资。
(7)按人员查询工资数据。
(8)按部门查询部门工资。
(9)按部门汇总工资数据。
(10)工资分配(管理费用,销售费用,生产成本)。
任务二:系统分析一、数据处理分析图3 工资系统数据处理进程图二、数据字典根据调查的资料分析,设计的数据字典如表8所示。
表8 数据字典任务三:系统设计一、系统功能结构设计此工资系统的系统功能如图4所示。
图4 系统功能结构二、系统流程设计处理流程设计是通过系统处理流程图的形式,将系统对数据处理过程和数据在系统存储介质间的转换情况详细地描述出来。
此工资系统的处理流程如图5所示。
三、数据库设计数据库设计阶段的任务:根据以上工资系统资料,设计该工资系统数据库,其步骤如下:1.建立表在U盘上创建一个gzgl文件夹,启动Visual FoxPro,在命令窗口中执行set default to e:\gzgl。
建立项目和有关的数据表,建立各表之间的联系及参照完整性,输入数据验证完整性,其步骤如下:(1)建立项目。
项目的名字为:gzxt.pjx(2)建立数据库,数据库的名字为:gzdata.dbc,如图6所示。
(3)根据表9建立七张表。
(4)建立各表间的关系及参照完整性。
如图9所示。
(5)输入数据。
(6)进行相关操作,验证数据完整性。
图5 工资系统处理流程图6 gzxt项目管理器图7 department表设计器图8 department表索引的设计图9 表关系和参照完整性的设置图10 输入数据2.视图设计建立工资表、工资汇总、工资面值分解、工资分配的SQL查询视图,如表10所示。
表10 查询视图建立步骤如下。
(1)建立工资表SQL查询视图(2)建立工资汇总SQL查询视图(3)建立工资面值分解SQL查询视图(4)建立工资分配的SQL查询视图其中所得税视图的SQL语句如下。
IIF(应发工资<=800,0,IIF(应发工资-800<=500,(应发工资-800)*0.05,IIF(应发工资<2500,(应发工资-800)*0.1-25,IIF(应发工资-800<5000,(应发工资-800)*0.15-125,(应发工资-800)*0.25-375)))) AS 所得税3.窗体设计建立主窗体、部门、人员基本情况、工资固定项目、扣款项、考勤等表单的设计。
(1)建立主窗体在计算机中搜索所有jpg格式的图片,选择一张复制到gzgl文件夹中。
在gzxt项目管理器中选择表单,点击“新建”按钮,设置主窗体的属性及方法程序,如表11所示。
主窗口表单名保存为main。
在主窗口中添加控件,如表12所示。
lb控件是主窗体中显示的系统标题,timer1 用于以字幕方式显示lb的内容。
表12 主窗体控件图11 主窗口的设计(2)设计登录表单图12 登录表单登录表单如图12所示。
在gzxt项目管理器中选择表单,点击“新建”按钮,调整好表单的大小,设置表单的属性如表13所示。
登录表单名保存为login。
图13 登录表单的设计表13 登录表单的属性在登录表单中添加如表14所示的控件,并设置相关的属性。
打开数据库表login,在login表中设置姓名和口令,如下图14所示。
图14 登录姓名和口令的设置选择主窗口main,点击“运行”按钮,启动login登录窗口,输入姓名和口令,确定后自动启动工资管理系统的主窗口,如有错误,请调试。
(3)设计主控菜单①菜单栏的设计根据前面介绍的系统功能结构图设计系统的主控菜单。
在项目管理器中,将“其他”展开,选择“菜单”,点击“新建”按钮,选择新建菜单,进入菜单设计器。
输入菜单栏名称,五项的结果全选择“子菜单”。
如图15所示。
图15 菜单栏的设计②子菜单项的设计选择要设计的菜单栏,点击“编辑”按钮,输入该菜单栏的子菜单项,在各个子菜单项的结果中,选择“命令”,点击“编辑”按钮,输入命令的内容。
用同样的方法完成五个菜单栏的子菜单项。
如下图16所示。
图16 子菜单项的设计在系统退出菜单项下建立子菜单项:退出,设计退出的命令为main.release。
③设置菜单的属性。
在VFP主窗口“显示”菜单中,选择“常规选项”,将菜单设置为顶层菜单。
如图17所示。
图17 常规选项设置④生成菜单。
将菜单保存,取名为mainmenu,然后选择VFP主窗口“菜单”菜单中的“生成”选项,如图18所示。
图18 菜单的生成选择主窗口main,点击“运行”,输入姓名和口令,启动工资管理系统,如图19所示。
图19 工资管理系统运行效果(4)建立部门编码维护表单部门编码表是工资管理系统的辅助数据表,可以使用表单向导设置该表单。
这里使用自定义的方式设计该表单,以数据记录控件设计为主要内容。
如图20所示。
图20 部门编码维护表单①设置自定义数据表单类。
在项目管理器中选择“类库”,点击“新建”按钮,出现新建类对话框如图21所示。
在类名框中输入myform,在派生出的下拉组合框中选择form,输入类地存储目录及文件名。
图21 新建类对话框将类库下的myclass展开,选择myform,点击“修改”按钮,打开类设计器,如图22所示,在类设计器中,给myform 添加新的属性,各属性值如表15所示。
图22 类设计器选择“类”菜单,点击“新建方法程序”,添加方法fref,如图23用来控制表单中的数据记录控件的可用性,dref的内容如下。
图23 新建方法程序drefif eof().and.bof()this.dt=.t.this.de=.t.elselocal ernbernb=recn()go topif eof()this.dt=.t.this.de=.t. elsego ernbdo case case bof() this.dt=.t. go top this.de=eof() case eof() this.de=.t. go bott this.dt=bof() otheskip -1if bof()go top this.dt=.t. skipif eof()go bott this.de=.t. elseskip -1 this.de=.f. endielseskipthis.dt=.f. endiskip 1if eof()go bott this.de=.t. skip -1if bof()go top this.dt=.t.elseskipthis.dt=.f.endielseskip -1this.de=.f.endiendcendiendithisform.refresh()前面的内容做完后,将类设计器中的myform进行保存。
将类库下的myclass展开,选择myclass,点击“新建”按钮,新建类commg,如图24所示,在类名框中输入commg,在派生出的下拉组合框中选择commandgroup,输入类地存储目录及文件名。
图24 新建类对话框选择commg,点击“修改”,设置commg的buttoncount属性为10,用鼠标调整10个按钮的排版位置,如图25所示,在类设计器中,给commg 分别设置命令按钮的click和refresh方法属性,各属性值如表16所示。
图25 按钮类设计选择myform ,点击“修改”按钮进入类设计器,点击表单控件工具中的添加,选择“添加”,将myclass 添加到表单控件工具中,如图26所示。
图26 表单控件工具的添加添加后,点击commg 工具,在类设计器中的表单的底部绘制按钮组,如图27所示。
图27 myform类的设计②创建部门编码维护表单。
选择vfp 主窗口中“工具”菜单,点击“选项”选项,设置选项中表单选项页,设置表单的模板类中的表单模板为myform。
如图28所示。
图28 表单模板的设置在项目管理器中,选择“表单”,点击“新建”按钮,新建表单。
设置表单数据环境为department,将数据环境设计器中的department表拖至表单中,再分别把数据环境中department表的dp_id和dp_name两个字段拖至表单中,如图30所示,在表单中添加标签,设置字体字号和颜色以及布局,如图29所示。