数据库课设.docx
《数据库课设.docx》由会员分享,可在线阅读,更多相关《数据库课设.docx(22页珍藏版)》请在冰点文库上搜索。
![数据库课设.docx](https://file1.bingdoc.com/fileroot1/2023-6/29/15c4d7dd-04dd-4947-b3e2-332709cb7d14/15c4d7dd-04dd-4947-b3e2-332709cb7d141.gif)
数据库课设
企业工资管理系统的设计与开发
1前言
1.1作业背景
本文根据《数据库原理应用系统》课程要求而做。
课程作业要求如下:
1.用数据库管理系统开发工具(VisualFoxPro)开发一个实用的小型管理信息系统。
2.根据课程设计时间选择适当规模大小的设计题目,分小组进行设计。
3.小组组长为组员分配任务,根据合理的安排,按照系统开发的流程及方法,踏实地开展课程设计活动。
4.课程设计活动中,撰写相关技术文档。
最后提交详细的课程设计报告。
5.开发出可上机运行的管理信息系统,通过上机检查。
1.2选题说明
对企业而言,人力资源是企业最宝贵的资源,也是企业的“生命线”。
而工资管理又是人力资源管理的重中之重。
实行电子化的工资管理,可以让人力资源管理人员从繁重琐碎的案头工作解脱出来,去完成更重要的工作。
利用小型软件对小型企业的工资进行管理,不仅可以节省开支,而且还可以节省时间,充分发挥了其小却精的特点,通过对这个小软件的开发,可以使企业认识到自己在很多方面的不足,掌握很多应用方面的技巧。
1.2.1基本思路
1.明确课程作业要求并确定课程设计题目;
2.根据作业要求及拟定题目,小组讨论并明确作业应具体包含什内容并由组长分配各成员任务;
3.各成员完成任务后由组长进行整合,讨论并加以修改后形成一份完整的实践报
1.2.2作业目标
运用数据库的有关原理,通过大量的实践操作及VisualFoxPro软件的实际应用方法,了解某种系统的设计与开发过程并熟悉VisualFoxPro作为一种小型关系型数据库管理系统的主要功能,巩固教材书本上学到的基本理论知识。
1.3工作业绩
1.3.1个人主要工作
在这次论文的撰写过程中,我主要负责整理小组其他成员筛选的资料、论文的排版工作以及员工信息表单、工资结构设置表单、员工信息查询表单的制作及各表单包含的代码的编写工作。
与其他成员共同完成的部分是论文内容的编排和数据表的制作。
1.3.2主要收获
通过体验整份报告的完成过程,不仅巩固了理论知识,加强了实际操作能力,熟悉了一份实践报告的完成流程,而且认识到了小组成员之间讨论和合作的重要性,以及个人在各方面的优势和不足,也为毕业论文的设计积累了一定的经验。
1.3.3自我评定
□优□良□中□及格□不及格
2VisualFoxPro简介
2.1简介
数据库软件VisualFoxpro,又叫VFP,是数据库管理系统,集成编程语言,是开发小型数据库的前端工具。
VisualFoxPro中的Visual的意思是“可视化”,该技术使得在Windows环境下设计的应用程序达到即看即得的效果。
VisualFoxPro面向对象的开发环境使得无论是组织信息、运行、查询、创建集成的关系型数据库系统,还是编写数据库管理应用程序,都变得十分轻松。
作为市场上最灵活和功能最强大的数据库管理系统,VisualFoxPro拥有悠久而辉煌的发展历史。
它初创时是FoxSoftware公司的FoxBASE产品,之后,FoxSoftware被微软收购,加以發展,使其可以在Windows上運行,並且更名為VisualFoxPro。
2.2发展
FoxPro隶属于一种名为Xbase的DBMS类别。
Xbase这个术语很常见,他表示诸如FoxPro、dBASEIIIPLUS、dBASEIV、FoxBASE+以及ARAGO的语言。
Xbase最初起源于一个大型机使用的DBMS,这个DBMS叫做JPLDIS(喷射推动实验室数据库管理和信息检索系统)。
这个DBMS是由美国人JebLong在1972年开发成功的。
到目前为止全世界的开发者和程序员已经编写了几千万行的Xbase代码。
追溯到80年代末,FoxBASE是dBase的克隆系统。
只要是dBASEIII能做的工作,FoxBASE就能做得更好更快。
FoxBASE虽然拥有某些全新的特征,但它并没有真正重大的技术突破,只是为了运行得更快更好,而更重要的是它与dBASEIII兼容。
1.FoxPro1.0首先背离了与兼容的原则。
它开始在图形用户界面的设计和软件开发方法中采用一些新的思路,从而使它领先于当时年前景已不妙的dBASEIV。
2.从2.0开始,FoxPro才真正形成了它自己的特色。
当FoxPro2.0推出时,它包含了若干项关键技术,给PC数据库开发市场带来了革命性的变化。
这些技术是:
加入了Rushmore技术,它能从事许多难以想象的复杂工作。
突然之间,带有以百万计数的记录的表格在PC数据库系统中不仅成为可能,而且可以非常容易地加以实现,无需转用其他比较昂贵的技术;Rushmore最重要的优点在于它是完全自动化的,不用用户花费精力和时间。
因为有了Rushmore技术,再加上Fox天生的快速,即使在今天VisualFoxPro仍然是最快的桌面数据库引擎。
SQL语句是FoxPro2.0推出的另一项具有革命性意义的关键技术。
Fox的开发人员首次用单一语句取代了整个程序过程,并且这种支持是内含于Fox数据引擎之中的。
SQL语言曾经并且现在仍然是强大的数据语言。
FoxPro2.0还推出了某种所见即所得的开发报表和屏幕的工具。
FoxPro2.0确实具备了我们今天的VisualFoxPro拥有的一些出色的功能。
GUI设计服务、SQL和极快的数据访问,是它明显的特征。
3.VisualFoxPro3.0增加了一些人们企盼已久的特性,使PC数据库开发界大为震惊。
我们可以看到:
VisualFoxPro与FoxPro是由很大差别的,不要再把VisualFoxPro成为FoxPro了。
这些特性是:
数据库容器(DatabaseContainer),也叫DBC,它增加了开发人员多年盼望的对存储过程的支持、与表格相关联的数据规则和一系列的附加数据功能;远程数据的无缝连接。
VisualFoxPro数据处理引擎通过ODBC驱动程序与远程数据库服务器“通话”,远程数据库服务器的ODBC驱动程序能将VisualFoxPro数据转化成可由他们解释的数据;相反,VisualFoxPro的ODBC驱动程序也能将远程数据转化成可由VisualFoxPro数据引擎处理的数据。
常见的SQLServer、Oracle、Access等数据库都提供ODBC驱动程序。
在VisualFoxPro中实际操作远程数据有两种方法,远程视图和SPT技术。
视图(View)是可更新的SQL光标,增加了一整套的数据访问方法,用于数据处理、GUI显示和报表制作。
它支持两种类型的视图,即本地视图和远程视图。
本地视图是基于VisualFoxPro表格的视图,远程视图是基于任何ODBC数据源的视图。
另外为了使VisualFoxPro成为完整的C/S开发环境,除视图之外VisualFoxPro还支持SPT(SQLPassThrough)技术来完成视图无法完成的工作,比如数据库服务器的用户管理、存储过程调用等。
View与SPT技术的产生后,VisualFoxPro就成为访问远程数据的主要工具。
从总体来看,创建整个企业范围内的应用程序和使用存储在远程数据源中的数据,几乎与使用VisualFoxPro表格本身一样容易,处理在数据存取时增加了一些命令、函数,数据处理与普通的VisualFoxPro编程没有任何区别。
完全支持面向对象技术(OOP)。
充分而健壮的实现了面向对象的处理方式大大改善了软件开发条件。
健壮的对象模型和创建你自己的类及子类的所用的功能,形成了一种全新的软件开发手段。
4.VisualFoxPro5.0是3.0的升级版本,它是一个32位的系统。
具备了使用和创建COM服务器的功能,并开始支持在Internet上发布VisualFoxPro。
5.VisualFoxPro6.0也没有根本上的变化,不过有些变化还是相当明显的。
Access和Assign这两种方法在控制放入你的对象中的数据方面很有创意。
运用新的ComponentGallery(组件库)和FoundationClasses(基础类),你能很容易地转向创建面向对象的应用程序的工作。
对COM支持的更好,在ServerPack3后我们可以用VisualFoxPro创建多线程的COM组件。
3工资管理系统分析、设计与实施
3.1系统分析
3.1.1企业工资管理系统开发的必要性分析
随着我国国民经济建设的蓬勃发展和具有中国特色的社会主义市场经济体制的迅速完善,各个行业都在积极使用现代化的管理工具,不断改善企业的服务质量,提高工作效率。
无论是行政职能还是生产运作的管理要求的不断提高,在很大程度上使企业不得不改变传统的经营管理方式以适应快速发展的社会主义市场经济。
于是改变企业管理方式、方法已经成为企业发展的先决条件,借助现代信息技术和管理理论,建立企业管理信息系统是当今社会的重要趋势。
对企业内部的财务运用现代化技术进行管理,是提高工作效率的有效手段。
工资管理作为企业内部财务管理的一个重要方面,也逐步被企业管理者所重视,由于企业的规模的不断扩大,企业职工人数的不断增多,使工资发放成为企业管理中的一个重要工作;每一位职工的具体情况各有不同以及规章章制度的不断完善,个人工资发放难度就更加增大了;再加上每个人每月的工资都要通过工资制度的审核,这大大增加了管理人员的工作量,于是通过计算机管理系统对员工工资进行全面的统计与管理是企业急需解决的必要问题。
它全面解决了工资管理过程中所遇到的各种问题,并且克服了传统管理方式中重复、易出错等问题。
3.1.2企业工资管理系统开发的可行性性分析
随着社会的发展,企业投入了大量的资金购买办公设备,实现办公自动化,以提高员工的工作效率,人们普遍的接受了电子化的办公方式。
会计电算化的普及使会计人员都具备处理办公自动化软件的能力,并且管理者都希望从繁重的案头工作中解脱出来,将精力集中在企业的长远发展的规划上。
因此在现有的计算机硬件、软件和技术人员的条件下,开发一个适合于中小型企业的职工工资管理系统,不但没有任何的经济、技术问题,而且得到了办公人员的一致支持。
3.1.3目标系统应该达到以下要求:
1.时间经济性。
优化逻辑设计与物理设计,使系统运行效率高,反映速度快。
2.可靠性。
能连续准确的处理业务,有较强的容错能力。
3.可理解性。
用户容易理解和使用该系统。
4.可维护性和适应性。
系统应易于修改、易于扩充、易于维护,能够适应业务不断发展变化的需要。
5.可用性。
目标系统功能齐全,能够完全满足业务需求。
6.安全保密性。
保证系统的物理安全、数据存储和存取的安全与保密、数据传输的安全与保密,做好使用人员的授权管理。
3.1.4系统平台选择
选择微软平台作为主导,一方面考虑目前微软的飞速发展,越来越多的企业在规划内部网络时,将微软平台作为首选方案;另一方面从技术角度来讲,微软平台上的应用无论是在开发上,还是在软件的部署上都非常容易,而且性能优越。
操作系统:
WindowsXp
开发工具与语言:
VisualFoxPro6.0中文版
3.2系统设计
3.2.1系统功能需求简介
工资管理信息系统对企业加强工资管理有着极其重要的作用,就一般的大型企业来说,它的设计内容非常复杂而且繁多,比如拥有工资计算功能,工资统计功能,报表输出功能。
而且设计的模块也很多,比如工资管理模块,工资统计模块,报表设计模块,打印输出模块,模糊查询模块等等。
由于本软件是针对一家中小型企业,总体人员比较少、结构比较简单,所以只需要设计一个实用的小型工资管理系统就可以了。
该工资管理系统的主要功能如图3.1所示:
图3.1工资管理系统主要功能图
3.2.2功能需求描述
1.信息查询模块
员工基本信息模块具有员工信息输入、员工增删和员工信息查询三个功能。
员工基本信息包括员工号、员工姓名、员工性别、所在部门、所在岗位、工龄和工资等级等信息。
员工增删实现了对数据库中员工信息的增加和删除。
员工信息查询可以通过员工号或员工姓名对员工信息进行查询。
根据该公司的工资管理实际情况,本系统将工资结构分为基础工资、岗位工资和工龄工资三部分。
该模块可以对这三个工资类型设置工资等级,并对每个等级设置工资标准。
2.信息维护模块
信息维护功能由两个模块组成,分别是数据操作,登录信息操作。
工资设定实现了对基础工资、岗位工资、等级工资的查询、修改等功能。
3.2.3数据词典分析
1.员工信息表以及包含的字段等如表3.1所示:
图3.2员工信息表原图
表3.1员工信息表
字段
字段名
类型
宽度
说明
1
员工号
字符型
3
数字
2
员工姓名
字符型
10
小于等于5个汉字
3
员工性别
字符型
2
“男”或“女”
4
岗位名称
字符型
14
小于等于7个汉字
5
工龄
数值型
2
1-99之间
6
工资等级
数值型
2
1-99之间
2.基础工资设置表如表3.2所示:
图3.3基础工资设置表原图
表3.2基础工资设置表
字段
字段名
类型
宽度
说明
1
工资等级
数值型
2
1-99之间
2
工资标准
数值型
4
1-9999之间
3.岗位工资设置表如表3.4所示:
图3.4岗位工资设置表
表3.3岗位工资设置表
字段
字段名
类型
宽度
说明
1
岗位名称
字符型
14
小于等于7个汉字
2
工资标准
数值型
4
1-9999之间
4.等级工资表如表3.4所示:
图3.5等级工资表原图
表3.4等级工资表
字段
字段名
类型
宽度
说明
1
工资等级
数值型
2
1-99之间
2
工资标准
数值型
4
1-9999之间
5.修改密码表如表3.5所示:
图3.6修改密码表原图
表3.5修改密码表
字段
字段名
类型
宽度
说明
1
用户名
字符型
3
小于等于五个字
2
原密码
数值型
10
3
新密码
数值型
10
3.3系统实施
3.3.1各模块编码设计
1.员工信息模块编码设计
员工基本信息模块主要分为员工信息浏览界面和员工信息查询界面,员工信息浏览界面如图3.7所示:
图3.7员工信息模块界面
具体编码如下:
(1)“增加新记录”按钮控件源代码:
thisform.pageframe1.page1.fy1.enabled=.F.
mand2.enabled=.F.
mand3.enabled=.F.
mand4.enabled=.T.
ifmand1.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.
appendblank
mand1.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)
getindate=alltrim(thisform.pageframe1.page1.txtpindate.value)
getrank=alltrim(thisform.pageframe1.page1.txtprank.value)
ifempty(getid)orempty(getname)orempty(getsex)orempty(getjob)orempty(getindate)orempty(getrank)
messagebox("资料不足",48,"错误")
else
mand1.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.
mand2.enabled=.T.
mand3.enabled=.T.
mand4.enabled=.F.
endif
endif
(2)“修改这条记录”按钮控件源代码:
mand1.enabled=.F.
mand3.enabled=.F.
mand4.enabled=.T.
thisform.pageframe1.page1.fy1.enabled=.F.
ifmand2.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.
mand2.caption='修改确认'
thisform.pageframe1.page1.refresh
thisform.pageframe1.page1.txtpid.setfocus
else
mand2.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.
mand1.enabled=.T.
mand3.enabled=.T.
mand4.enabled=.F.
thisform.pageframe1.page1.fy1.enabled=.T.
endif
2.工资结构设置模块编码设计
工资结构设置模块界面如图3.8所示:
图3.8工资结构设置模块界面
其中“基础工资”功能界面如图3.9所示:
图3.9基础工资模块界面
具体编码如下:
(1)“修改”按钮控件源代码:
thisform.grdrank.column1.text1.enabled=.T.
thisform.grdrank.column2.text1.enabled=.T.
thisform.grdrank.column1.text1.setfocus
(2)“修改确认”按钮控件源代码:
thisform.grdrank.column1.text1.enabled=.F.
thisform.grdrank.column2.text1.enabled=.F.
(3)“添加”按钮控件源代码:
appendblank
gobottom
thisform.grdrank.column1.text1.enabled=.T.
thisform.grdrank.column2.text1.enabled=.T.
thisform.grdrank.column1.text1.setfocus
(4)“删除”按钮控件源代码:
thisform.grdrank.recordsource=''
userankexclusive
deletefromrankwherername=getid
pack
thisform.grdrank.recordsource='rank'
thisform.grdrank.refresh
(5)“退出”按钮控件源代码:
thisform.release
doformform\dataformat
3.员工信息查询代码设计
员工信息查询界面如图3.10所示:
图3.10员工信息查询模块界面
具体编码如下:
(1)“查询”按钮控件源代码:
getpid=alltrim(thisfor