工资管理系统设计报告
1。选择题目
题目:文本编辑器
2。内容摘要
摘要:对企业而言,人力资源是企业最宝贵的资源,也是企业的“生命线”。
而工资管理又是人力资源管理的重中之重.实行电子化的工资管理,可以让人力资源管理人员从繁重琐碎的案头工作解脱出来,去完成更重要的工作。本文介绍课程设计课题的选题意义,说明了本系统提供的主要功能,并画出功能框图,对设计思路、数据库设计、研究开发的过程、实现细节、开发工作进行了比较完整的综述,最后给出了作者在小学期设计过程的体会。
3.索引关键字
关键词:数据库,工资管理,功能框图
4。目录
1. 题目要求—-—————-———————--———
———-———-—---—4
2. 设计思想--——--—-—--———-——-—-———
--—————-——5
3. 系统完成功能及框图——-—-—-——-——---——
—----—6
4. 界面设计——---—-—-----———-—-——-——
—--———---6
5. 核心算法及说明-——--——--———-—————-—-——-——-8
6. 结论—-—————--————--——---——-—
----—————————10
7. 后记——--————--—-——-————-—----—
-—————-—-——15
8. 参考资料-——--———-—---——————-——-—-———--—--—17
9. 附录——-—-—---—--——-————---——-—
———--—-----18
5。正文
5。1课程设计题目要求
5.1。1内容要求
本系统能够方便、灵活地实现职工工资的输入、添加、删除等编辑操作以及查询
和打印。
职工工资表至少应包含编号、姓名、科室代码、参加工作时间、基本工资、工龄补贴、、单位津贴、应得工资、实发工资等不同类型的字段.
职工工资数据表请自行设计。 其中:
工龄根据参加工作时间计算。
应发工资=固定工资+活动工资+行业津贴+岗位工资+房补 个人所得税=固定工资+活动工资-1600)*0。1 实发工资=应发工资-个人所得税—公积金—房租—三险 请根据实际情况自行定义各字段的名称、类型、宽度。
系统至少应有两个数据表:一个是职工工资表,一个是科室情况表.
5。1.2设计要求
①建立一个项目,将完成本题目创建的所有文件添加到项目中;
②数据表必须是数据库表,视情况需要定义字段的有效性规则、默认值、出错信息等内容.
③数据表之间必须建立必要的联系. ④用表单设计一个漂亮的系统封面。
⑤要求用表单设计功能丰富的信息查询界面和查询结果的统计界面。如能够实现查询不同科室的职工工资,查询工资最低的十名职工工资等多种形式的查询.
⑥用顶层表单上的菜单实现输入、查询、报表打印、退出等功能项的选择。 ⑦可以自行设计报表和标签的样式,如能够实现按科室、按照工资高低等形式的职工工资报表。
⑧将完成的全部内容连编成一个。exe文件。
⑨所有的界面及打印的报表请尽可能设计的直观、漂亮一些。
5。2设计思想
在设计时考虑以下几个方面:
操作简单。因为使用者多为非计算机专业人员,所以该系统要求设计的界面美观,操作方便.要充分考软件界面有好和操作方便,便愈使用人员快速上手。
易于维护。一个软件的好坏,关键在于产品的可靠,稳定,便于维护。
易于升级。随着社会的发展,对系统的要求会越来越高。要求系统具有更高的安全性;更丰富的功能以及更快的操作速度.所以在设计时要考虑到到以后的升级问题。
2.开发语言的选择
针对世界上流行的大量软件和开发工具,经过认真分析其优缺点,结合目前的软硬件开发环境,选用微软WINDOWS平台下的VISUAL FOXPRO 6。0作为软件开发工具。选用工具有几下几方面优点:
vfp 6。0是比较好的关系数据库管理系统开发软件。它提供了可视化的开发平台和面向对象的程序设计方法。大量的控件的提供节省了开发的工作量,提高了开发的效率。
Vfp6。0提供了很多设计器,诸多如“数据库设计器”“表单设计器”“菜单设计器”等。
另外还开发了一些“向导工具”、利用这些设计器和向导工具,不用编写大量的程序代码,因而开发工作变得比较轻松.
VFP本身就是一个数据库开发软件系统.使用它开发数据库系统效率更高,稳定性好.
综上所述,VFP6。0可以满足企业财务部门对工资管理的要求,所以用来开发工资管理系统是非常合适的。
5。3系统完成功能及功能框图
工资管理信息系统对企业加强工资管理有着重要的作用,就一般的大型企业来说,它的设计内容非常复杂而且繁多,比如拥有工资计算功能,工资统计功能,报表输出功能,而且设计的模块也很多,比如工资管理模块,工资计算模块,报表设计模块,查询模块,部门调换等。
由于本软件主要是为公司定制开发的。我们经过反复论证,最终确定了工资管理系统的设计方案,主要功能如图所示:
基本工资管理 劳务奖金管理 报表打印管理 退出系统 主菜单 系统首页 验证密码 系统维护 密码管理 基本 工资 查询 基本工资计算 基本工资录入 劳务奖金查询 劳务奖金计算 劳务奖金录入 报表设计 工资条打印 奖金条打印 人员变动 我负责的主要是系统首页,验证密码,主菜单,退出系统,打印报表,系统维护及密码管理功能以及所有代码的修改.
登入表单的作用是操作者只有输入了正确的职工号和密码才能登入进行工资管理系统。
数据环境:操作职员表调换部门表单主要用来完成职工在不同的部门之间的变动.单击“调换”按钮实现职工调换到新的部门。单击“取消”按钮,取消职工的部门调换操作。因为部门的变动职工有可能引起职工的工资的变动。
菜单设计:通过菜单设计器可以方便、快捷的设计菜单,菜单起到了组织应用系统中各个模块的作用。
职工基本情况信息记录主要包含如下字段:职工号、姓名、所在部门、加班天数、加班工资、病假天数、事假天数、个人所得税以及劳务奖金总计。
报表打印管理:打印职工的基本工资单以及劳务奖金单.每月发工资时要打印每月的职工工资条、劳务奖金清单。使职工清楚地了解本人每月的工资的情况。
退出系统:离开工资管理系统。
系统维护管理:对系统数据进行维护。主题要包括职工在各部门间进行变动,需要有部门变动的记录。工资数据是保密的数据,要定期备份到安全的地方,以免被人非法修改。密码管理:对操作员的密码进行管理。在操作员登陆系统时,首先要核对操作员的职工号;如果是本企业的职工,接着核对输入密码是否正确.对密码进行统一的管理,没有操作权限的职工不能进入本系统,从而保证系统的安全.
5。4界面设计
本系统针对信息维护、数据查询统计、报表打印分别设计了7个界面,下面举例说明一些功能界面的设计。
5。4.1系统首页的界面设计:
建立一个表单做界面设计,在表单中添加两个标签,在其中输入所需文字,添加两
个按钮,分别为进入和退出。
5。4。2登入界面的设计,
本系统设计了一个登录界面,只由具备使用本系统权限的用户才能够使用本系统,在登录界面中用户需要输入用户名和密码,当验证是合法用户时使其进入主界面.如图2所示。
图2 用户登录界面
5.4。2主界面
5.4.3学生信息维护界面 5。4。4成绩分段查询界面 5。4.5报表预览界面
5。5核心算法及说明
5.5。1数据库
该软件的数据库由下述四张数据表组成:
部门表:部门.dbf 操作员表:操作员.dbf 基本工资表:基本工资。dbf 基本情况表:基本情况。dbf 1、 基本情况表 职工号 姓名 性别 出生年月 级别 职务
2、 操作员表.dbf 字段名 职工号 密码
3、 部门表.dbf 字段名 部门代码 部门名称
4、 基本工资表.dbf 字段名 类型 宽度 类型 字符型 字符型 宽度 8 20 类型 字符型 字符型 宽度 8 10 字符型 字符型 逻辑型 日期型 字符型 字符型 8 10 1 8 10 10 职工号 姓名 部门代码 固定工资 活动工资 行业紧贴 岗位工资 公积金 房补 房租 三险 个人所得税 应发工资 实发工资 字符型 字符型 字符型 数值型 数值型 数值型 数值型 数值型 数值型 数值型 数值型 数值型 数值型 数值型 8 10 6 8 8 8 8 8 8 8 8 8 8 8 5。5。2代码的修改
对不能查询出结果的查询结果表单的init事件代码进行修改,例如按部门查询工资:LPARAMETERS tcParameter1
public bm1
bm1=trim(tcParameter1)
locate for alltrim( 部门代码)=bm1 thisform。txt职工号。enabled=.f。 thisform。txt姓名.enabled=。f. thisform.txt部门代码.enabled=。f。 thisform。txt固定工资。enabled=。f.
thisform.txt活动工资.enabled=。f。 thisform.txt行业津贴。enabled=.f。 thisform。txt岗位工资.enabled=.f。 thisform。txt公积金。enabled=。f. thisform.txt房补。enabled=。f。 thisform.txt房租。enabled=.f。 thisform。txt三险。enabled=。f. thisform。txt个人所得税。enabled=.f。 thisform。txt应发工资。enabled=。f. thisform。txt实发工资。enabled=。f。
5。5。3部门调换表单的设计及修改,
在职工号文本框旁添加一个查询按钮,设置其代码为 locate for 职工号=alltrim(thisform。text1。value) thisform。refresh if found()
*!* thisform。txt职工号。value = 职工号 thisform.text2.value = 姓名
thisform。txt部门代码。value = 部门代码 else
messagebox(”没有找到!\") endif
该表单的确定按钮代码为public x
x=alltrim(thisform。txt部门代码。value)
replace 基本情况。部门代码 with alltrim(thisform。bu。value) replace 基本工资。部门代码 with alltrim(thisform。bu。value)
replace 劳务奖金。部门代码 with alltrim(thisform.bu.value) thisform。refresh
取消代码为replace 基本情况.部门代码 with x replace 基本工资。部门代码 with x replace 劳务奖金.部门代码 with x thisform.refresh
退出代码为thisform。refresh thisform.release
do form d:\\工资管理资料\\背景表单
5。5.4主程序的编制,
代码如下SET OPTIMIZE ON SET REFRESH TO 0,5 SET ODOMETER TO 100 SET CURRENCY LEFT SET CURRENCY TO ”¥” SET HOURS TO 12 set date to ymd SET DECIMALS TO 2 set resource on SET FDOW TO 1 SET FWEEK TO 1 SET MARK TO \".\" SET SEPARATOR TO \"。”
do form d:\\工资管理资料\\系统界面 read events
set sysmenu to default set sysmenu on SET EXCLUSIVE Off set safety on
modify windows screen
5。6结论
随着我国成功加入WTO及信息化浪潮的日益临近,企业在激烈的市场竞争环境下求得生存,就必须有效地利用人才、时间、信息结合的优势。因此,如何使企业及时掌握本企业人才的各种信息、第一时间处理好随时变化的工资管理问题,建立一套符合企业实际的工资管理系统就显得尤为重要。
在反反复复的学习和不耻下问之下,我的辛勤努力有了回报,终于作出一个简单的软件,虽然这个软件功能非常简单,而且我想,在实际运用中,还有些不足,因为工资的的内容非常丰富,我涉及到的仅仅是工资管理的一部分简单内容,离实际的客户需求肯定还有差距。例如工资管理和人事管理,考勤管理以及财务账表的关联考虑得还不完善。最好是这几部分的数据可以相互转化利用,不需要重复录入,针对工资管理,还应该建立一个有普遍意义的模型,这样对用户来讲,就比较容易通过修改有关管理制度来适应我们开发的软件。
由于我的知识浅薄,经验不足及阅历颇浅,因此,在该系统的设计方面还有很多不
足,比如功能过少,界面不醒目等问题,我会在工作的使用过程中,根据工作的具体要求不断的修改、完善,争取使系统慢慢趋于完美.
6。后记
在本项目的软件开发的过程中,我全面实践一个面向数据库的应用系统的开发过程,学习很多有关的知识。这样的项目对我们学过的数据结构,程序设计,数据库,软件工程,等课程是一个综合性很高的实践。一些以前没有学得很扎实的课程内容,由于需要
在实践中运行,刚开始我也感到头痛.但回过头来再去看教课书,经历着一段时间的实践,对于这些知识点有关的背景,概念和解决方案理解得更透彻了,学习起来也越来越有兴趣,越来越轻松。
另外我还充分体会了从事软件开发工作需要特别谨慎认真地态度和作风,一点都不
能马虎。每个细微的细节都必须十分注意,如果考不认真思考决策,就会出现或大或小的错误。如果早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时会推倒很多前面做的工作重来.有时候,我自己觉得我写的程序非常正确,但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,往往几天的时间没有一点进展.这时候,我一般是先自己通过书本,手册和资料找解决办法,实在没辙才向老师请教.尽管向老师请教解决问题比较快,自己钻研花的时间较多,但我强迫自己独立思考对其噢的学习提高帮助非常大。
在反反复复的学习和不耻下问之下,我的辛勤努力有了回报,终于作出一个简单的软件,虽然这个软件功能非常简单,而且我想,在实际运用中,还有些不足,因为工资的的内容非常丰富,我涉及到的仅仅是工资管理的一部分简单内容,离实际的客户需求肯定还有差距.
在本系统的设计过程和论文编写过程中,有好多老师和朋友都给予了我许多无私的
帮助,尤其是我的指导老师提出了很多宝贵意见,在这里,我向这些无私帮助我的人表示衷心的感谢。
7。参考文献
[1] 孙春来,韩正清等. 《Visual Foxpro 6.0中文版编程基础与范例》,电子工业出版社,出版日期:2001—1-1.
[2] 知寒工作室.《中文Visual Foxpro 6简明案例教程,机械工业出版社,出版日期:1999—4—1
[3] 徐健平,赵永.《Visual Foxpro基础教程,机械工业出版社
出版日期:2000—5—1
[4] 张鲁。《Visual Foxpro 6。0编程技巧与实例分析》,水利水电出版社 出版日期:1999—10—1
[5] 张磊等。 《Visual Foxpro 6使用详解》,机械工业出版社 出版日期:1999—7—1
[6] 康耀红,黄建青等。《Visual Foxpro 6.0数据库设计》,北京大学出版社,出版日期:2002—2—1
[7] 郑刚。《Visual Foxpro 6。0实效编程百例》,人民邮电出版社,出版日期:2002-7-1 [8] 周兰文.《Visual Foxpro 6中文版与上机指导》,清华大学出版社, 出版日期:1999
[9] 李加福.《Visual Foxpro 6。0中文版入门与提高》,清华大学出版社 , 出版日期:2002—7—1
[10] 陈明。 《Visual Foxpro 6。0程序设计》,清华大学出版社, 出版日期:2002—4-1
[11] 刘鹏,李冬梅,高燕。《Visual Foxpro 6。0全攻略宝典》,水利水电出版社, 出版日期:2000—6-1
[12] 章立民。《Visual Foxpro 6.x中文版程序设计-基础加强篇》,中国铁道出版社
8。附录
Thisform。pageframe1.page1.fy1。enabled=。F。 Thisform.pageframe1。page1.command2.enabled=。F。 Thisform。pageframe1。page1。command3.enabled=.F。 Thisform。pageframe1。page1。command4.enabled=.T.
If Thisform。pageframe1。page1.command1.caption='增加新记录’ Thisform.pageframe1.page1。txtpid。enabled=。T。 Thisform。pageframe1.page1。txtpname.enabled=。T。
Thisform.pageframe1.page1。txtpsex。enabled=.T。 Thisform。pageframe1.page1。txtpjob。enabled=。T。 Thisform。pageframe1。page1。txtpindate。enabled=。T. Thisform。pageframe1.page1。txtprank。enabled=。T. Append blank
Thisform。pageframe1.page1.command1。caption='增加确认’ Thisform.pageframe1.page1。refresh Thisform。pageframe1.page1.txtpid.setfocus Else
Getid=alltrim(Thisform.pageframe1.page1。txtpid。value) Getname= alltrim(Thisform.pageframe1。page1。txtpname.value) Getsex= alltrim(Thisform。pageframe1。page1.txtpsex。value) Getjob= alltrim(Thisform。pageframe1.page1。txtpjob.value) Getrank= alltrim(Thisform.pageframe1。page1.txtprank。value) Getindate= alltrim(Thisform.pageframe1。page1。txtpindate。value)
If empty(getid) or empty(getname) or empty(getsex) or empty(getjob) or empty(getindate) or empty(getrank) msg(“资料不足\",48,”错误”) else
Thisform。pageframe1.page1.command1。caption=’增加记录' Tableupdate(。t)
Thisform。pageframe1。page1。txtpid。enabled=。F。 Thisform。pageframe1.page1.txtpname.enabled=。F. Thisform。pageframe1。page1.txtpsex。enabled=。F。
Thisform。pageframe1。page1。txtpjob。enabled=。F。 Thisform.pageframe1。page1.txtpindate。enabled=。F。 Thisform。pageframe1。page1。txtprank。enabled=.F。 Thisform.pageframe1。page1.fy1.enabled=.T。 Thisform.pageframe1.page1。command2。enabled=.T。 Thisform。pageframe1.page1。command3.enabled=.T。 Thisform。pageframe1。page1。command4.enabled=.F。 End if End if:
Thisform。pageframe1.page1.fy1。enabled=。F。 Thisform.pageframe1.page1。command1。enabled=.F. Thisform。pageframe1。page1.command3.enabled=。F。 Thisform.pageframe1.page1.command4。enabled=。T.
If Thisform。pageframe1.page1。command2。caption=’修改记录’ Thisform。pageframe1。page1.txtpid.enabled=。T. Thisform。pageframe1。page1。txtpname.enabled=。T。 Thisform。pageframe1.page1.txtpsex。enabled=.T。 Thisform。pageframe1。page1。txtpjob。enabled=。T。 Thisform。pageframe1。page1.txtpindate.enabled=。T。 Thisform。pageframe1.page1。txtprank。enabled=.T。 Append blank
Thisform。pageframe1.page1。command2。caption=’修改确认' Thisform。pageframe1。page1。refresh
Thisform。pageframe1。page1。txtpid。setfocus Else
Thisform。pageframe1.page1.command2。caption=’修改记录’ Tableupdate(。t)
Thisform。pageframe1。page1。txtpid。enabled=.F。 Thisform。pageframe1。page1。txtpname。enabled=。F。 Thisform。pageframe1。page1。txtpsex.enabled=。F。 Thisform。pageframe1.page1。txtpjob.enabled=。F. Thisform.pageframe1。page1。txtpindate。enabled=。F。 Thisform。pageframe1。page1。txtprank.enabled=。F. Thisform.pageframe1。page1。fy1。enabled=。T。 Thisform。pageframe1.page1。command1。enabled=.T。 Thisform。pageframe1.page1。command3。enabled=.T. Thisform.pageframe1.page1.command4。enabled=.F. End if
因篇幅问题不能全部显示,请点此查看更多更全内容