vf课程设计.docx
《vf课程设计.docx》由会员分享,可在线阅读,更多相关《vf课程设计.docx(48页珍藏版)》请在冰豆网上搜索。
![vf课程设计.docx](https://file1.bdocx.com/fileroot1/2023-2/2/1b49d38f-30eb-4850-99be-a783c9e5382d/1b49d38f-30eb-4850-99be-a783c9e5382d1.gif)
vf课程设计
内容简介
本系统是一个面向中小型企业的工资管理系统,该系统在成功连编之后,可独立的在windows环境下操作,本模块共分为12个独立的模块,可以完成一些基本的工资管理操作,如基本的数据查找、修改、输入输出、打印以及数据统计的功能,可通过职工的基本信息表与工资表之间的联系来完成对职工工资的各种操作。
本系统包括项目的建立、数据库的建立、表的有关操作、数据库管理的操作、程序设计常用控件的使用、数据表的表单的程序设计、菜单的设计方法、SQL语言的使用等。
第一章.工资管理系统需求分析与设计
1.系统功能需求简介
工资管理信息系统对企业加强工资管理有着极其重要的作用,就一般的企业来说,它的设计内容非常复杂,拥有工资计算功能,工资统计功能,报表输出功能,而且设计的模块也很多,如工资管理模块,工资统计模块,报表设计模块,打印输出模块,数据查询模块等等。
因此,针对该要求而言,确定了工资管理系统的设计方案。
该工资管理系统的主要功能如图1所示:
图1系统功能模块组成
2、工资结构设置模块
该工资管理系统主要实现一些基本的数据管理,主要表单模块,由各种输入、输出、浏览、修改、统计、打印、查询、帮助及退出等功能组成。
“工资管理查询系统”要求进行设计,并工资的工作流程,该系统包括12大模块:
系统登录模块、系统主菜单模块、工资录入模块、工资记录修改模块、工资记录统计模块、工资记录查询模块、数据备份及初始化、工资浏览模块、工资记录打印、系统帮助、系统退出、系统时间模块组成。
系统登录模块的功能要求如下:
(1)用户权限设置,不同级别的用设有有不同的权限密码。
(2)综合初始系统设置。
数据录入模块功能要求如下:
(1)职工信息的录入。
(2)数据存储。
数据查询模块功能要求如下:
(1)根据职工姓名查询职工的工资情况。
(2)根据职工号查询职工的工资情况。
(3)根据职工工作时间查询情况。
数据修改模块功能要求如下:
(1)追加职工信息。
(2)删除职工信息。
(3)修改职工信息。
(包括个人信息及集体更改)
(4)自动计算职工工资信息。
报表浏览及打印模块功能要求如下:
(1)打印工资信息。
(2)打印工资条(个人信息)。
(3)打印工资表(统计信息)。
员工信息包含以下内容:
(1)职工号。
(2)姓名。
(3)日期。
数据备份及初始化功能要求如下:
(1)上月工资的备份存储。
(2)新信息存储初始化。
(3)退出。
系统帮助模块功能要求如下:
(1)显示系统时间。
(2)提示系统基本信息(注释版权出处)。
系统退出模块功能要求如下:
(1)用户可直接退出系统。
3.目标系统要求
目标系统应该达到以下要求:
1、时间经济性。
优化逻辑设计与物理设计,使系统运行效率高,反映速度快。
2、可靠性。
能连续准确的处理业务,有较强的容错能力。
3、可理解性。
用户容易理解和使用该系统。
4、可维护性和适应性。
系统应易于修改、易于扩充、易于维护,能够适应业务不断发展变化的需要。
5、可用性。
目标系统功能齐全,能够完全满足业务需求。
6、安全保密性。
保证系统的物理安全、数据存储和存取的安全与保密、数据传输的安全与保密,做好使用人员的授权管理。
4.系统平台设计
选择微软平台作为主导,一方面考虑目前微软的飞速发展,越来越多的企业在规划内部网络时,将微软平台作为首选方案;另一方面从技术角度来讲,微软平台上的应用无论是在开发上,还是在软件的部署上都非常容易,而且性能优越。
操作系统:
Windowsxp/2000/98
开发工具与语言:
VisualFoxPro6.0中文版
第二章.工资管理系统信息概要设计
1.工资数据流程图
1).由需求分析可知,主导流程应用封面(设置受制权限)的表单进入系统菜单,再由各个表单模块做成系统菜单项。
主要表单模块,由各种输入、输出、浏览、修改、统计、打印、查询、帮助及退出等功能。
分别如图2.1、2.2所示
图2.1
进入系统数据管理
图2.2
2.工资管理系统主要模块简介
2.1工资管理系统主要文件组成(数据词典分析)
一般的工资管理系统主要功能包括:
记录的录入、浏览、修改、统计、查找和打印等,下面为该系统主要功能模块。
1).表单功能模块
工资主控模块(调用表单gzgl.scx)
工资初始化及备份模块(调用表单gzinit.scx)
工资录入模块(调用表单gzlr.scx)
工资浏览模块(调用表单gzll.scx)
工资修改模块(调用表单gzmodi.scx)
工资统计模块(调用表单gzcount.scx)
工资查找模块(调用表单gzfind.scx)
工资打印模块(调用表单dayin.scx)
系统封面模块(调用表单fm.scx)
系统帮助模块(调用表单xthelp.scx)
系统时间模块(调用表单xttime.scx)
2).菜单与报表文件
系统功能菜单(xtcd.mnx)
工资表报表(gzb.frx)
工资条报表(gzt.frx)
3).数据库文件
数据库名称:
gz.dbc
数据表名称:
gzb.dbf
数据表名称:
XXb.dbf
Gzb表结构如下图所示:
字段名称
字段类型
字段宽度
小数点
默认值
职工号
C
8
0
职称
C
8
0
姓名
C
8
0
出勤情况
L
职务工资
N
7
2
0
旷工扣款
N
7
2
0
职务补贴
N
8
2
0
应发工资
N
8
2
0
养老保险
N
7
2
0
合计扣款
N
7
2
0
实发工资
N
8
2
0
所得税
N
7
2
0
实发现金
N
8
2
0
※其中合同%15与承包30%两字段在建立数据库表时写成其他形式。
XXB表结构如下图所示:
字段名称
字段类型
字段宽度
小数点
默认值
职工号
C
8
0
职称
C
8
0
姓名
C
8
0
性别
C
2
0
年龄
N
2
0
学历
C
8
0
2.2功能模块菜单
工资管理系统的菜单功能如下图3所示:
3.项目与数据库的建立
3.1项目地建立
①在硬盘上建立一个目录C:
\DocumentsandSettings\Administrator\桌面\vf作业ll\gzgl。
②启动VFP系统,在“项目管理器窗口”中,建立一个项目,项目的名称为“工资管理系统”,并保存到所建立的C:
\DocumentsandSettings\Administrator\桌面\vf作业ll\gzgl
目录下。
图4新建的项目
3.2数据库及数据库表的建立
建立一个GZ数据库和一个GZB表如下图5、6所示:
图5建立数据库
图6数据库表的内容
再在GZ数据库下建立一个xxb表如下图5.1、6.1所示:
图5.1
图5.2
3.3数据表间关系的建立:
为gzb建立主索引和xxb建立候选索引
第三章.工资管理系统模块设计
1.系统主菜单设计
①在“项目管理器”窗口中,选择“其他”选项卡。
②在其“他选”项卡中选择“菜单”。
③单击新建按钮,屏幕出现“新建菜单对话框”。
④在“新建菜单对话框”中,单击“菜单”命令,系统进入“菜单设计器”窗口。
分别建立“主菜单”及“工资记录管理子菜单”,主菜单包括工资记录管理、编辑菜单、记录打印、系统帮助、退出,工资记录子菜单中项目包括数据库初始化及备份、工资记录录入、工资记录浏览、工资记录修改、工资记录统计、工资记录查询、退出系统。
⑤退出系统设计为过程:
代码为
byebye=messagebox("真的要退出吗?
",64+1,"提示信息")
ifbyebye=1
closeall
clearevents
quit
endif
⑥在“菜单级”中选择“菜单栏”,返回主菜单。
⑦重复⑤~⑦步,编辑其他子菜单
图7
这些子菜单分别是调用系统的内部分量完成相应功能,其具体操作如下:
选单项目内部命令(图8所示)
撤销_MED_UNDO
重做_MED_REDO
剪切_MED_CUT
复制_MED_COPY
粘贴_MED_PASTE
清除_MED_CLEAR
⑧输入上述菜单项所对应的系统菜单内部命令生成菜单,其他菜单项调用程序如下所示:
(图7)所示:
记录打印菜单:
打印记录:
doformdayinwiths
记录浏览:
doformgzll
系统帮助菜单:
doformxttime
关于系统:
doformxthelp
退出菜单:
退出系统:
byebye=messagebox("真的要退出吗?
",64+1,"提示信息")
ifbyebye=1
closeall
clearevents
quit
endif
系统帮助:
doformxthelp
⑨设置顶层表单,保存菜单,菜单名为xtcd,扩展名.mnx,最后再生成.mpr文件。
⑩退出菜单设计器窗口,将会在“项目管理器”窗口中看到菜单文件,在对其行修改,直到运行无误为止。
图8
2.系统主控表单模块设计
主控表单用来调用系统菜单,用来控制整个系统的控制与管理。
2.1表单的执行屏幕
主控表单执行屏幕如图9所示。
2.2表单与控件属性设置:
Form表单的属性设置:
Caption=”工资管理系统”
showwindow=2-作为顶层表单(指定该表单位顶层表单)
Windowstate=2-最大化(指定表单在运行使最大化)
Showtips=.T.(指定表单对象显示“工具提示”)
2.3事件代码
Form表单的laod事件代码:
Doxtcd.mprwiththis,.t.
运行结果如下图所示:
图9
3.数据库初始化及备份模块表单设计
3.1表单的执行与设计
下图为该表单的执行屏幕及设计屏幕,分别为:
图10、图11
图10
3.2控件属性设置
Label1标签的属性设置。
Caption改为:
“数据库初始化”
FontName改为:
“华文行楷”
FontSize改为:
26
Fontunderline改为:
.T.—真
Shape1和Shape2的属性:
BackStyle改为:
0—透明
SpecialEffect改为:
0—3维
3.3事件代码
表单form1的activate事件代码
thisform.label1.caption="数据初始化"
thisform.label2.caption="使用说明"
thisform.label3.caption="使用本模块要注意,备份文件的时候一般要给出一个具体的文件名(不需扩展名);
名字由工资、年份、月份、日期组成,其意义为明确备份的日期及备份是那个月的工资."
thisform.label4.caption="当前数据库的信息"
thisform.label5.caption="当前数据库名称:
"+dbf()+chr(13)+"当前日期"+dtoc(date())+;
chr(13)+"需要备份到:
"+"工资"+alltrim(str(year(date())))+"-"+;
alltrim(str(month(date())))+"-"+alltrim(str(day(date())))+".dbf"
thisform.label6.caption="备份数据库到下面文件中"
thisform.label7.caption="下面是初始化"+alltrim(str(month(date())))+;
"月份的工资表:
"
thisform.text1.value="C:
\DocumentsandSettings\Administrator\桌面\vf作业\gz\gzb"+alltrim(str(year(date())))+;
alltrim(str(month(date())))+"-"+alltrim(str(day(date())))+".dbf"
“备份”command1按钮的click事件代码:
ff=alltrim(thisform.text1.value)
copytoff
“初始化”command2按钮的click事件代码:
setpathto
a="下面要进行初始化,将对原来的数据进行改变,所以一定要先进行备份,否则原来的数据将丢失。
";
+chr(13)+"进行备份吗?
"
inotice=messagebox(a,65,"提示信息")
ifinotice=1
iffile("temptemp.vfp")
deletefiletemptemp.vfp
endif
copytotemptemp.vfp
thisform.refresh
endif
Command3“退出”按钮的Click事件代码:
Thisform.Release
4.工资录入模块表单设计
4.1工资录入模块表单的执行与设计
工资录入模块是用来录入工资记录的,在具体操作时有些数据需要自动生成,参见代码。
具体设计时各字段是通过数据环境拖拽到表单中的,再利用“布局”工具栏进行调整。
表单的执行屏幕如图12、13所示:
图12
图13
4.2表单与控件的属性设置
Form1表单的属性:
Autocenter改为:
.T.—真(运行时表单居中)
ShowWindow改为:
1—在顶层表单中(使得该表单能够在顶层表单中运行)
Titlebar改为:
0—关闭(使该表单的标题栏不可见)
Image1控件的属性:
Stretch改为:
2—变比例填充
Label1控件的属性:
Caption改为:
”工资录入模块”
FontName改为:
”华文行楷”
FontSize改为:
36
Shape1控件的属性(“职工情况”的方框):
BackStyle改为:
0—透明(背景透明,另外在选择时注意选择“格式”中的置后,以免使该控件遮盖其他控件)
SpecialEffect改为:
0—3维(指明该控件是三维立体效果)
4.3事件代码
(1)文本框控件
“Txt应发工资”控件的事件。
Click和GotFocus(获得焦点事件)的代码:
withthis.parent
this.value=.TXT职务工资.VALUE+.TXT书报费.VALUE+.TXT构成津贴.VALUE+.TXT合同15.VALUE+.TXT家属价格.VALUE+.TXT综合补贴.VALUE;
+.TXT出勤补.VALUE+.TXT岗位津贴.VALUE+.TXT洗理费.VALUE+.TXT交通补.VALUE+.TXT儿保费.VALUE;
+.TXT提租补贴.VALUE+.TXT外租房补.VALUE+.TXT未纳奖.VALUE+.TXT职务补贴.VALUE+.TXT补发工资.VALUE
endwith
“Txt合计扣款”控件的事件。
Click和GotFocus(获得焦点事件)的代码:
withthis.parent
this.value=.txt养老保险.value+.txt扣会费.value+.txt公积金.value+.txt承包30.value
endwith
“txt所得税”控件的事件。
Click和GotFocus的代码:
ifthis.parent.txt实发工资.value>800
this.value=(this.parent.txt实发工资.value-800)*0.05
endif
thisform.refresh
“实发现金”控件的事件
Click和GotFocus(获得焦点事件)的代码:
withthis.parent
this.value=.txt实发工资.value-.txt所得税.value-.txt其他扣款.value
endwith
thisform.refresh
该代码是在“txt实发现金”控件获得焦点时,自动计算实发现金的总数。
(2)命令按钮的控件
“第一个”命令按钮Command1的Click事件代码:
gotop
thisform.refresh
“上一个”命令按钮Command2的Click事件代码:
skip-1
ifbof()
gotop
=messagebox("已经是第一个记录了!
",64,"提示信息")
endif
thisform.refresh
“上一个”命令按钮Command3的Click事件代码:
skip+1
Ifeof()
gobottom
=messagebox("已经是最后一个记录了!
",64,"提示信息")
endif
thisform.refresh
“最后一个”命令按钮Command4的Click事件代码:
gobottom
thisform.refresh
“添加”命令按钮Command5和Click事件代码:
appendblank
gobottom
thisform.refresh
“退出”命令按钮Command6的Click事件代码:
thisform.release
5.工资查找模块表单设计
5.1设计第一页
Form1表单的load事件
publicgetzgh1,getxm1,getrq1,s
getzgh1=''
getxm1=""
text1控件的interactivechange事件代码:
setexactoff
GETzgh1=ALLTRIM(thisform.pageframe1.page1.TEXT1.VALUE)
GETxm1=ALLTRIM(thisform.pageframe1.page1.TEXT2.VALUE)
GETrq1=thisform.pageframe1.page1.TEXT3.VALUE
s=''
iflen(getzgh1)>0
s=s+'职工号=GETZGH1'
endif
iflen(getxm1)>0
s=s+'.and.'+'姓名=GETXM1'
endif
dowhileleft(s,5)='.and.'.OR.LEFT(S,5)='.AND.'
s=subst(s,6)
enddo
IFLEN(ALLTRIM(S))=0
SETFILTERTO
ELSE
setfilterto&s
ENDIF
GOTOP
THISFORM.PAGEFRAME1.PAGE1.REFRESH
THISFORM.PAGEFRAME1.PAGE2.REFRESH
添加页框控件,以工资表作为数据源其执行及设计表单屏幕如下图14、15所示:
图14
Text2控件的interactivechange事件代码:
setfilterto在职称=this.parent.text2.value
thisform.refresh
Text3控件的interactivechange事件代码:
setfilterto姓名=alltrim(this.parent.text3.value)
thisform.refresh
“查看详细内容”命令按钮command1的click事件
thisform.pageframe1.page2.setfocus
thisform.refresh
“打印”命令按钮command2的click事件
doformdayinwiths
“退出”命令按钮command2的click事件
Thisform.release
图15第一页执行屏幕
5.2设计第二页
以上是查询表单的第一页的控件,下面对页框第二页进行编辑,表单的执行屏幕如图17所示,表单的设计屏幕如图16所示。
在该页中,有三个标签控件,其标题为职工号、日期、姓名,坑害有三个文本框控件txt职工号、txt日期、txt姓名,其ForeColor属性值为(0,0,255),即前景为蓝色。
“返回上页”命令按钮Command1的Click事件代码为:
thisform.pageframe1.page1.setfocus
thisform.pageframe1.page1.refresh
“打印”命令按钮Command2和”退出”命令按钮Command3的Click事件和页框第一页相
图16
图16.1添加数据源屏幕
图17第二页执行屏幕
第二页设计屏幕
6.工资浏览模块表单设计
6.1表单的执行与设计
6.2属性与事件代码
表单form的load事件代码如下:
publicgetzgh1,getxm1,getrq1,s
getzgh=''
getxm1=''
图18记录浏览执行屏幕
记录浏览设计屏幕
Text1,text2,text3控件的interactivechange事件代码:
setexactoff
GETzgh1=ALLTRIM(thisform.TEXT1.VALUE)
GETxm1=ALLTRIM(thisform.TEXT2.VALUE)
s=''
iflen(getzgh1)>0
s=s+'职工号=GETZGH1'
endif
iflen(getxm1)>0
s=s+'.and.'+'姓名=GETXM1'
endif
dowhileleft(s,5)='.and.'.OR.LEFT(S,5)='.AND.'
s=subst(s,6)
enddo
IFLEN(ALLTRIM(S))=0
SETFILTERTO
ELSE
setfilterto&s
ENDIF
GOTOP
THISFORM.REFRESH
THISFORM.REFRESH
7.修改记录模块表单设计
插入一个为页框数4的个页框控件,对各个页框设计
7.1设计第一页
(表单执行如图19)所示
图19第一页执行屏幕
Text1,text2,text3控件的interactivechange事件代码:
setexactoff
GETzgh1=ALLTRIM(thisform.pageframe1.page1.TEXT1.VALUE)
GETxm1=ALLTRIM(thisform.pageframe1.page1.TEXT2.VALUE)
s=''
iflen(getzgh1)>0
s=s+'职工号=GETZGH1'
endif
iflen(getxm1)>0
s=s+'.and.'+'姓名=GETXM1'
endif
ifleft(s,5)='.and.'.OR.LEFT(S,5)='.AND.'
s=subst(s,6)
endif
IFLEN(ALLTRIM(S))=0
SETFILTERTO
ELSE
setfilterto&s
ENDIF
GOTOP
THISFORM.PAGEFRAME1.PAGE2.CAPTION=姓名+"的详细内容"
THISFORM.PAGEFRAME1.PAGE1.