VFP课程课程设计说明书.docx
《VFP课程课程设计说明书.docx》由会员分享,可在线阅读,更多相关《VFP课程课程设计说明书.docx(19页珍藏版)》请在冰豆网上搜索。
![VFP课程课程设计说明书.docx](https://file1.bdocx.com/fileroot1/2023-3/18/c3354ff4-0a64-4473-8b32-eeed7b4d4230/c3354ff4-0a64-4473-8b32-eeed7b4d42301.gif)
VFP课程课程设计说明书
中国矿业大学矿业工程学院
实验报告
课程名称计算机辅助设计
姓名郭元渺班级交运09-2班
学号01090317日期2012年6月
成绩教师王振军
第一章运输企业工资管理信息系统概要…………………………2
第二章工资管理系统分析与设计………………………………3
2.1系统功能需求简介………………………………………………4
2.2功能需求描述…………………………………………………5
2.3目标系统要求…………………………………………………5
2.4数据词典分析…………………………………………………9
第三章运输企业工资管理系统的功能实现……………………10
3.1系统主表单…………………………………………………10
3.2登录界面……………………………………………………11
3.3员工信息管理模块……………………………………………12
3.4员工奖励管理模块……………………………………………12
3.5员工惩罚管理模块……………………………………………13
3.6工资发放统计模块……………………………………………13
3.7修改密码……………………………………………………14
3.8关于系统……………………………………………………14
3.9报表模块……………………………………………………15
第四章连编程序……………………………………………………16
第五章程序代码……………………………………………………18
第六章小结……………………………………………………19·
第一章运输企业工资管理信息系统概要
靠人工处理企业职员的工资既费力又极容易出错。
本系统采用现代化的信息管理手段来避免了上述问题。
系统安排了员工信息管理、员工奖励与惩罚管、基础数据管理、工资的统计与发放等功能,并提供员工信息和工资发放历史的查询功能;同时,这里还考虑了个人所得税的缴纳。
第二章工资管理系统分析与设计
2.1系统功能需求简介
工资管理信息系统对企业加强工资管理有着极其重要的作用,就一般的大型企业来说,它的设计内容非常复杂而且繁多,比如拥有工资计算功能,工资统计功能,报表输出功能,而且设计的模块也很多,比如工资管理模块,工资统计模块,报表设计模块,打印输出模块等。
由于本软件主要是为作者工作的一家运输公司定制开发的。
该公司是一家刚刚成立的公司,总体人员比较少,有正式员工20人,人员结构比较简单,学历比较高,基本上都拥有大专以上学历,部门划分也很清晰,而且人员的流动性不高,所以该公司目前对工资管理的要求并不高。
该工资管理系统的主要功能如图2.1所示:
2.1系统功能模块图
2.2功能需求描述
1、员工信息模块
员工信息模块具有员工信息输入、员工增删和员工信息查询三个功能。
员工基本信息包括员工编号、员工姓名、员工性别、所在岗位、底薪等信息。
员工增删实现了对数据库中员工信息的增加和删除。
员工信息查询可以通过员工编号或员工姓名对员工信息进行查询。
2、工资结构设置模块
根据工资管理实际情况,本系统将工资结构分为底薪、奖励工资和惩罚工资三部分。
该模块可以对这三个工资类型进行查询和打印报表。
3、工资统计模块
用户在员工信息管理模块对该员工的基本信息进行输入以后,在工资统计模块会自动对员工工资进行汇总。
用户可以打印出工资汇总表,打印之前可以通过打印预览功能进行打印预览。
2.3目标系统要求
目标系统应该达到以下要求:
1、时间经济性。
优化逻辑设计与物理设计,使系统运行效率高,反映速度快。
2、可靠性。
能连续准确的处理业务,有较强的容错能力。
3、可理解性。
用户容易理解和使用该系统。
4、可维护性和适应性。
系统应易于修改、易于扩充、易于维护,能够适应业务不断发展变化的需要。
5、可用性。
目标系统功能齐全,能够完全满足业务需求。
6、安全保密性。
保证系统的物理安全、数据存储和存取的安全与保密、数据传输的安全与保密,做好使用人员的授权管理。
2.4数据词典分析
该软件的数据库由下述七张数据表组成:
Salaryhistory表
Salarystatic表
Salarytax表
Staffenc表
Staffinfo表
Staffpun表
Userinfo表
1、员工信息表:
Staffinfo.DBF
字段
字段名
类型
宽度
说明
1
员工编号
字符型
12
主索引字段,不能为空
2
姓名
字符型
30
3
性别
字符型
2
默认值“男”
4
出生日期
日期型
8
5
籍贯
字符型
40
6
民族
字符型
10
7
文化程度
字符型
10
8
毕业院校
字符型
40
9
健康状况
字符型
40
10
身份证号码
字符型
18
输入掩码:
999999999999999999
11
电话
字符型
13
输入掩码:
9999999999999
12
电子邮件
字符型
12
13
银行账号
字符型
30
14
进入日期
日期型
8
15
岗位名称
字符型
30
16
备注
字符型
100
2、工资统计信息表:
salarystatic.DBF
字段
字段名
类型
宽度
说明
1
员工编号
字符型
12
普通索引字段,不能为空
2
员工姓名
字符型
30
3
工资月份
字符型
12
4
底薪
浮点型
8
2位小数
5
奖励金额
浮点型
8
2位小数
6
惩罚金额
浮点型
8
2位小数
7
工资总额
浮点型
8
2位小数
8
所得税额
浮点型
8
2位小数
9
实际工资
浮点型
8
2位小数
3、工资历史信息表:
salaryhistory.DBF
字段
字段名
类型
宽度
说明
1
员工编号
字符型
12
普通索引字段,不能为空
2
员工姓名
字符型
30
3
工资月份
字符型
12
4
底薪
浮点型
8
2位小数
5
奖励金额
浮点型
8
2位小数
6
惩罚金额
浮点型
8
2位小数
7
工资总额
浮点型
8
2位小数
8
所得税额
浮点型
8
2位小数
9
实际工资
浮点型
8
2位小数
10
领取人
字符型
30
4、员工惩罚信息表:
staffpun.DBF
字段
字段名
类型
宽度
说明
1
员工编号
字符型
12
普通索引字段,不能为空
2
惩罚类型
字符型
30
3
惩罚原因
字符型
150
4
惩罚日期
日期型
8
5
惩罚金额
浮动型
8
6
惩罚说明
字符型
100
5、员工奖励信息表:
staffenc.DBF
字段
字段名
类型
宽度
说明
1
员工编号
字符型
12
普通索引字段,不能为空
2
奖励类型
字符型
30
3
奖励原因
字符型
150
4
奖励日期
日期型
8
5
奖励金额
浮动型
8
6
奖励说明
字符型
100
6、个人所得税率表:
Salarytax.Dbf
字段
字段名
类型
宽度
说明
1
编号
整型
4
主索引字段,不能为空
2
级数
字符型
6
3
不计税工资
浮点型
8
4
工资下限
浮点型
8
5
工资上限
浮点型
8
6
所得税率
浮点型
8
备注
浮点型
100
7、系统用户表:
userinfo.dbf
字段
字段名
类型
宽度
说明
1
用户名
字符型
30
主索引字段,不能为空
2
密码
字符型
30
3
姓名
字符型
20
第三章运输企业工资管理系统的功能实现
3.1、系统主表单
1.1菜单系统设计
本系统中主菜单的作用是调用系统中提供的所有的功能,该主菜单按照功能模块的形式来组织菜单的结构。
四个主菜单分别为数据管理、奖惩操作、工资管理和系统管理,其中奖惩操作下有子菜单员工奖励管理和员工惩罚管理,系统管理有子菜单修改密码、关于系统,退出系统。
主菜单设计
子菜单设计
子菜单设计
2、登录界面
登录系统的设计是直接给用户的第一印象,所以采用了面向用户的设计方法,比较人性化的操作,具有方便性。
3、员工信息管理模块
“员工信息管理”表单用来管理企业中员工的基本信息,在该表单中可以查询、新增、添加、修改和删除员工的基本信息。
4、员工奖励管理模块
“员工奖励管理”表单用来对员工进行奖励,对员工进行奖励产生的金额、奖励类型、奖励原因和奖励说明都将出现在统计结果中,方便用户的查阅。
5、员工惩罚管理模块
“员工惩罚管理”表单用来对员工进行惩罚,对员工进行惩罚产生的金额、惩罚类型、惩罚原因和惩罚说明都将出现在统计结果中,方便用户的查阅。
6、工资发放统计模块
“工资统计发放”用来统计并发放“员工信息”表中所有员工的工资,同时还可以打印统计的报表。
7、修改密码
对于系统用户来说,长期使用一个密码对于系统来说是非常不安全的,较安全的作法就是定期更换密码,本系统中通过修改密码表单就可以实现对密码的修改。
8、关于系统
9、报表模块
该模块提供了报表的功能,同时还可以打印报表,方便统一集中的查看统计信息。
第四章连编程序
连编应用程序项目本设计的收尾工作。
通过连编将项目资源,如视图、查询、表单、报表、菜单、类、过程这些包含于项目管理器中的文件信息结合在一起,生成一个扩展名为salary.exe可执行文件,或扩展名为.app的应用程序。
连编程序之前,要进行设置主文件、确定包含或排除文件、设置项目信息等操作。
完成这些操作后,运行主程序,当主程序没有错误后,即可连编项目。
第五章程序代码
1、系统登录代码
locateforalltrim(userinfo.用户名)==alltrim(thisform.text1.value);
andalltrim(userinfo.密码)==alltrim(thisform.text2.value)
if!
eof()
=messagebox("欢迎使用系统!
")
domainmenu.mpr
_screen.show
else
=messagebox("用户名和密码不正确,请重新输入!
")
endif
thisform.release
2、员工信息查询代码
PublicFindString
FindString=".T."
IF.NOT.EMPTY(ALLTRIM(ALLTRIM(THISFORM.text1.Value)))
FindString=FindString+"and'"+ALLTRIM(THISFORM.text1.Value)+"'$员工编号"
ENDIF
IF.NOT.EMPTY(ALLTRIM(THISFORM.text2.Value))
FindString=FindString+"and'"+ALLTRIM(THISFORM.text2.Value)+"'$姓名"
ENDIF
IF.NOT.EMPTY(ALLTRIM(THISFORM.text3.Value))
FindString=FindString+"and性别='"+ALLTRIM(THISFORM.text3.Value)+"'"
ENDIf
IF.NOT.EMPTY(ALLTRIM(THISFORM.text4.Value))
FindString=FindString+"and民族='"+ALLTRIM(THISFORM.text4.Value)+"'"
ENDIF
IF.NOT.EMPTY(ALLTRIM(THISFORM.text5.Value))
FindString=FindString+"and'"+ALLTRIM(THISFORM.text5.Value)+"'$岗位名称"
ENDIF
SELECTStaffInfo
SETFILTERTO
SETFILTERTO&FindString
THISFORM.Refresh
3、信息添加代码
x1=thisform.text1.value
x2=thisform.text2.value
x3=thisform.text3.value
x4=thisform.text4.value
x5=thisform.text5.value
ifempty(x1)orempty(x2)orempty(x3)orempty(x4)orempty(x5)
messagebox("信息不能为空")
else
insertintostaffinfo(员工编号,姓名,性别,民族,岗位名称)values(x1,x2,x3,x4,x5)
messagebox("添加成功!
",48,"信息")
thisform.text1.value=""
thisform.text2.value=""
thisform.text3.value=""
thisform.text4.value=""
thisform.text5.value=""
endif
4、员工信息修改代码
x2=thisform.text2.value
x3=thisform.text3.value
x4=thisform.text4.value
x5=thisform.text5.value
ifempty(x1)orempty(x2)orempty(x3)orempty(x4)orempty(x5)
messagebox("信息不能为空")
else
replacestaffinfo.员工编号withx1
replacestaffinfo.姓名withx2
replacestaffinfo.性别withx3
replacestaffinfo.民族withx4
replacestaffinfo.岗位名称withx5
messagebox("修改成功!
")
endif
5、员工信息删除代码
n=messagebox("确定要删除吗?
",1+48+256,"信息")
ifn=1
thisform.dataenvironment.closetables("staffinfo")
usestaffinfoexclusive
deletefromstaffinfowhere员工编号=alltrim(thisform.text1.value)
pack
use
thisform.dataenvironment.opentables("staffinfo")
thisform.refresh
endif
messagebox("删除成功!
")
6、信息浏览的代码
docase
casethis.value=1
gototop
casethis.value=2
if!
eof()
skip
endif
casethis.value=3
if!
bof()
skip-1
endif
casethis.value=4
gotobottom
endcase
thisform.refresh
7、密码修改代码
locateforalltr(userinfo.用户名)=alltrim(thisform.text1.value)
ifalltr(userinfo.密码)<>alltr(thisform.text2.value)
=messageb("原密码有误,请重新输入!
")
thisform.text2.value=""
thisform.text2.setfocus
return
else
ifalltr(thisform.text3.value)<>alltr(thisform.text4.value)
=messageb("新密码输入不一致,请重新输入!
")
thisform.text3.value=""
thisform.text4.value=""
thisform.text3.setfocus
return
else
replaceuserinfo.密码withalltr(thisform.text2.value)
=messageb("密码修改成功,请您记好新密码!
")
thisform.release
endif
endif
8、工资统计代码
iYear=YEAR(DATE())
iMonth=MONTH(DATE())
iDate=DAY(DATE())
IFiDate<25
MESSAGEBOX("尚未到工资统计时间",48,"运输企业工资管理系统")
RETURN
ELSE
sYear=ALLTRIM(STR(iYear))
sMonth=ALLTRIM(STR(iMonth))
YF=sYear+"年"+sMonth+"月"
SELECTSalaryHistory
LOCATEFOR工资月份=YF
IFFOUND()
MESSAGEBOX(YF+"工资已经统计",48,"运输企业工资管理系统")
RETURN
ENDIF
SELECTSalaryStatic
LOCATEFOR工资月份=YF
IFFOUND()
MESSAGEBOX(YF+"工资已经统计",48,"运输企业工资管理系统")
RETURN
ENDIF
THISFORM.Refresh
ENDIF
第六章小结
在本项目的软件开发的过程中,我全面实践一个面向数据库的应用系统的开发过程,学习了很多有关的知识。
这样的项目对我学过的数据结构,程序设计,数据库,软件工程等课程是一个综合性很高的实践。
一些以前没有学得很扎实的课程的内容,由于需要在实践中运用,刚开始我也感到很头痛。
但回过头再去看有关的教科书,经过一段时间的钻研,对与这些知识点的相关的背景,概念和解决方案理解得更透彻了,学习起来也越来越有兴趣,越来越轻松。
在开始编写程序的时候,我看到别人的软件功能非常的详细,而且界面非常的漂亮,总希望自己的软件也非常的完善,但是经过学习发现编一个优秀的软件决不是一蹴而就的事情,需要长时间的积累和经验。
我认清自己的能力后,我就特别注意在工作的过程中不贪图大而全,而是根据自己的能力,制定适当的目标。
由于我的知识浅薄,经验不足及阅历颇浅,因此,在该系统的设计方面还有很多不足,比如功能过少,界面不够醒目等问题,我会在工作的使用过程中,根据工作的具体要求不断的修改,完善,争取使该系统慢慢趋向完美。
经过一个星期的实践和学习,感觉自己对这门课程有了一个新的认识和提高,确实得到了很大的锻炼,为自己以后在实际工作中解决实际问题提高了基础;同时我还认识到了我们大学生做事不能眼高手低,要静下心来去认认真真的去做任何一件事情,养成良好的工作习惯,为以后打下良好的基础。
最后,在本系统的设计过程中,老师、同事都给予了我许多无私的帮助,在这里,我向这些无私帮助我的人表示衷心的感谢。