• 1.04 MB
  • 2022-04-22 13:43:42 发布

基于Internet的网上考勤系统毕业论文.doc

  • 50页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'基于Internet的网上考勤系统毕业论文目录第一章引言4第二章研究现状及设计目标62.1、现有考勤系统分析比较62.2、设计目标62.3、设计特点6第三章重点技术解决方案83.1、基于INTERNET网的点对点拨号和VPN技术8(1)WINDOWS2000下使用VPN方案8(2)MODEM点对点方案163.2、SQLServer2000远程数据库复制19第四章系统结构与模型244.1、业务流程图设计244.2、软件功能设计264.3、数据库设计284.4、功能的一般性规定314.5、性能的一般性规定314.6、其它专门要求314.7、运行环境要求31第五章系统实现技术335.1、与数据库的链接335.2、用户个性化登陆345.3、系统基本资料管理与维护385.4、考勤处理425.5、统计查询46第六章性能测试与分析486.1、测试实例的选择486.2、测试环境与测试条件486.3、实例测试486.4、性能分析46第七章结束语50致谢5150 参考文献52第一章引言对于一个具有分支机构的大型单位,员工的派工、请假、加班是管理部门考核员工的一项重要依据。目前大部份单位的派工、请假、加班等考勤管理都通过手工填写报表来完成,这样不仅给管理部门产生大量的统计、核对工作,也对考勤管理的真实性、准确性带来一定的影响。Internet是目前世界上最大的计算机互联网络,它遍布全球,将世界各地各种规模的网络连接成一个整体。企业网络建设时可借助现有的INTERNET网络将分布在不同地区、不同城市的分支机构搭建设成一个企业内部广域网。既便了信息共享与数据交换,与为考勤管理系统提供了一个网络环境。PowerBuilder8.0是一个功能强大的数据库开发软件,数据窗口是PowerBuilder功能最强大的对象。PowerBuilder8.0更加增强了Internet的支持,为考勤管理系统提供了一个快速、灵活、可伸缩性的开发平台。在某种程度上,几乎所有大大小小的商务系统都依赖于数据库技术。这种商业的竞争使用某此系统凸现出其卓越的特性。尽管维持许多数据库服务器不知疲倦地、高效运转是一件比较困难的事,但是更困难的是确保为合适的人提供合适的信息,并利用这些信息提供强大的分析能力为各种商业活动创造更大的获利空间。能够完成这些工作的数据库系统的确不多,MicrosoftSQLServer便是其中杰出的一个。SQLServer是微软公司推出的一个高性能的关系型数据库管理系统,它具有客户/服务器体系统结构,能够满足大规模分布式计算环境的需要。这也为考勤系统提供一强大的数据库平台。整个INTERNET考勤系统主要由使用PowerBuilder开发的Client/Server模式,以长沙市国家税务局岳麓分局为开发对象,其中有专用的数据库服务器,考勤系统数据存放服务器中,在局域网内各个部门、科室工作站安装客户端应用软件;同样各分支机构也应具有局域网环境,用高档PC做二级数据库服务器,存储本机构的考勤数据,同时用做和一级数据库服务器传递数据,各分支机构工作站安装客户端应用软件。整个系统网络结构图如图1.1所示。50 图1.1系统网络结构图项目小组共两人,由我和另一位开发人员共同完成从需求分析、数据库设计、系统设计与实现到软件验证与确认等工作。整个系统窗口25个,数据窗口56个,其中重点研究了INTERNET网点对点的拨号联接技术、VPN架设技术、SQLServer远程数据复制。50 第二章研究现状及设计目标2.1、现有考勤系统分析比较目前,考勤系统分为两类,一类是国内采用的较多的指纹考勤、打卡考勤等硬件考勤系统;一类是国外采用的较多的融合在企业信息化系统中的软件考勤系统。其两类系统比较如下表。项目硬件考勤软件考勤运行环境无特别要求需要企业有强大信息处理平台硬件环件无特别要求需要有小型机、数据库服务器特专用硬件考勤方式员工自觉考勤,人工统计员工自觉考勤,系统自动统计处理内容上下班,外出上下班、外出审批,多层考核系统架构硬件考勤,形成统计数据B/S/S三层架构系统投资小特别大系统特点投资小,考核效果差投资大,考核效果好考勤范围局域网内任何地区为了在硬件考勤和软件考勤系统中寻找一种适中的信息化考勤方式,又要满足不中地区的考勤要求,设计了这套基于INTELNET的网上考勤系统,做好最小的成本投入,全范围的考勤管理和严格的考勤审核制度。2.2、设计目标以当今先进的计算机技术和科学的管理方法,建立长沙市国家税务局岳麓分局考勤业务的科学化管理制度和规范的业务处理体制,实现考勤管理和处理的计算机自动化。考勤系统可以实现员工工作全过程的动态控制;实现员工信息全局流通,实现网络化信息共享;实现计算机派工、请假、加班管理,对员工管理增加了透明度,解决了考勤管理难而慢的问题。从而使长沙市国家税务局岳麓分局的各个部门有机的结合起来,提高了工作效率、健全了考勤管理制度、并且对信息进行更合理、更有效的管理。2.3、设计特点实现技术先进性、稳定性、安全性、易扩充性、经济性、易操作性等;先进性:系统设计本着先进性的原则,从整体结构规划等多角度使用合理而先进的技术;稳定性:充分考虑运行中可能出现的特殊状况,并采取了相应的解决措施;安全性:在系统内部提供了灵活丰富的权限管理手段,大大提高了系统的安全性能;易扩展性:对于业务处理的设计充分考虑到业务发展的需要,使得可以方便的增加未来业务;易维护性:采用Client/Server方式,完善、完整的安装版本,方便的升级方法。50 易操作性:系统的设计充分考虑了业务的需要,业务处理的改变可以通过系统内部的设置完成;50 第三章重点技术解决方案3.1、基于INTERNET网的点对点拨号和VPN技术由于本系统采用Client/Server方式,所有要实现不同的地区、不同城市间的软件运行就必须要实现远程的Client/Server连接。目前中国电信提供了DDN专线的广域联接方式,但其价格十分昂贵,除去初装费不谈,仅64KB的带宽,每月的租金就高达2500元/点(年付)。所有我研究了两种节约成本的广域联网方式。一种是基于宽带网的VPN联接技术,一种是基本电话MODEM的点对点拨号联接方式。由于软件硬件设备投入(服务器、静态IP)问题,最终在长沙市国家税务局岳麓分局使用的是MODEM的点对点拨号方案,但在这对两种技术我都进行了深入研究。(1)WINDOWS2000下使用VPN方案a、VPN简介VPN是VirtualPivateNetword(虚拟专用网络)的简称,它的目的是通过现有的INTERNET物理线路,在需要时把远程客户端链接到企业内部网上。比如A公司在外地增设一家子公司,此时子公司的工作人员就可以通过VPN方式与总公司的企业网建立连接,就好像在子公司和总公司之间架设一条专用线路(如图3.1),子公司和总公司的电脑,就好像在同一个局域网内。在局域网内,使用都可以非常安全的输重要数据,而不必担心会被拦截、共享局域网内的打印机或访问局域网内的其它电脑。借助VPN,不仅扩大了企业内部网的范围、降低了网络扩展和使用的成本,而且计算机之间的通信还具有与专用线路一样的安全性!终端MODEM终端MODEMINTERNETMODEM服务器VPNVPN图3.150 b、软件VPN和硬件VPN的区别软件VPN具有软件本身就有天生的成本低、实施方便等优势,同时WINDOWS2000等操作系统中就集成了这项功能,只需进行相应的设置即可投入使用,而硬件VPN必须借助专用的设备才可以实现,但是两者之间还是存在比较大的差别:(a)硬件VPN支持动态IP和穿透NAT防火墙,并且总部可以在没有公网IP地址的情况下工作;软件VPN不支持动态IP,在使用IPSEC协议进无法穿透NAT网络,使用局限性较大。(b)硬件VPN安全性远远好于WINDOWS自带的VPN,从加密强度、接入权限到VPN权限控制等多方面进行控制,而软件VPN的用户身份认证方式非常简单,只能通过用户名和密码方式进行识别。(c)硬件VPN可以支持集团用户的多级复杂网络,而软件VPN几乎无法实现这种功能。(d)硬件VPN的加密算法较为安全,具有比当前3DES更好的安全性和更快的速率,而软件VPN的加密仅仅能支持DES,安全性和性能远远不如硬件VPN。(f)硬件VPN集成了企业级防火墙、上网控制和路由功能,一次性提供多种宽带安全的解决方案,可以轻松实现远程实施和维护;软件VPN的后期维护显得较为复杂。c、VPN的优点对于企业用户来说,采用VPN有以下几点好处:(a)可以在任何地方,通过INTERNET网络访问企业内部资源,具有更大的使用范围。VPN具有较强的移动性,在任何可以连接到INTERNET的地方,都可以通过VPN连接到企业局域网中。而采用架设专线的方式,只能在固定的地方,才能通过专线联接到企业局域网。(b)使用VPN可以为企业节省相当大的成本。从我得到的DDN专线价格中看,除去初装费不谈,仅64K的带宽,每月租金就高达2500元。而宽带网上网费用,每月不会超过200元。同时,对于使用电话拨号,以点对点方式来连接企业内部网服务器的用户来说,使用VPN所付出的费用,肯定大大小于长途电话费。(c)VPN在企业内部网中也有着重要作用。为了保护一些核心部门计算机中所存放的重要数据,一般来说只能把这此部门从整个企业内部网中独立出来。如此做法虽然保护数据的安全性,但是其它部门无法能过内部网调用这些数据,给正常的工作带来诸多不便。然而采用VPN方案就可以通过一台VPN服务器指定只能符合特定身份要求的用户才能连接VPN服务器查看重要文件,这样既实现了整个企业网的连接,又可以保证重要数据的安全性。d、VPN架设详解(a)方案建立50 VPN对硬件和布线的要求非常简单,只经能连接到INTERNET就可以了。当然,并不是说只要实现了物理链接就能使用VPN了,还需要对VPN服务器和VPN客户端进行设置后,才能完成连接,现在我来描述本人的服务器和客户端具体配置。(b)VPN服务器设备建立VPN虚拟网络,首先需要在公司内部网络中配置一台VPN服务器,这样才能让其它用户顺利建立连接,VPN服务器要求在目前接触比较多的WINDOWS操作系统中,只有WINDOWS2000SERVER或者是WINDOWS2003SERVER可以作为VPN服务大使用的操作系统。由于WINDOWS2000SERVER/WINDOWS2003SERVER系统本身对于硬件的要求就比较高,因此我尽可能的选用配置好的计算机作为服务器。同时要尽量可能避免在VPN服务器上安装诸如DNS服务、DHCP服务或者是IIS服务等服务程序,各种第三方的软件也尽量不要安装在这台计算机中,以免对VPN服务器的正常运行造成影响。另外,连接企业内部网的VPN服务器必须要安装两块网卡,其中一块网卡用于与INTERNET连接,另一块网卡用于与企业内部网连接。这样VPN服务器更像是一个VPN路由器,它不仅需要验证远程用户权限,建立安全通道,而且也要像路由器一样根据路由表中的信息来决定是否允许用户访问企业内部资源。配置VPN服务器第一步:依次运行“开始/程序/管理工具/路由和远程访问”命令激活路由和远程访问窗口,此是可以从窗口列表中看见系统将当前计算机作为路由和远程访问服务器,用鼠标选中对应的计算机之后再运行“操作/配置并启用路由器和远程访问”命令进行配置。如图3.2图3.2第二步:在服务器安装向导窗口中提供了多种设置选择,其中程序默认的是“虚拟专用网络(VPN)服务器”一项。如果选择此项有可能给后面的设置带来一些麻烦,因此建议在此选取“手动配置服务器”以便日后对问题进行跟踪和纠正。如图3.350 图3.3第三步:接着返回设置主窗口,点选服务器之后如果可以从右部列表中查看到诸如路由接口、端口、远程访问客户端、IP路由选择等项目就说明己经完成了VPN服务器的创建操作(如图3.4)。图3.4第四步:用鼠标右击VPN服务器图标,并且弹出菜单中选择“属性”命令激活VPN服务器属性窗口。在“常规”标签中一定要选择“路由器”和远程访问服务器这两个复选框,同时选择“用于局域网和请求拨号路由选择”一项(如图3.5),这样才能让远程计算机正常连接到此台VPN服务器。50 图3.5第五步:在“安全”标签下可以设定远程访问用户的身份,一般情况下可以选择“WINDOWS身份验证”由VPN服务器自己验证或者用户使用WINDOWS域作验证。如图3.6图3.6第六步:接下来进入“IP”标签进行设置,在此首先需要选择“启用IP路由”和“允许基于IP的远程访问和请求拨号连接”两项,而“IP地址分配”区域中提供了“动态主机配置协议(DHCP)”方式以及“静态地址池”两项,如果允许远程客户连接到企业内部网的其它计算机,则需要选择“静态地址池”一项,并且点击“添加”按钮来设定运行访问的内部网计算机IP地址范围(如图3.7),最后从“适配器”下接列表中选择连接内部网络的网卡即可。50 图3.7完成上述配置后,VPN服务器己经初具雏行了。下面就要给对用户进行连接权限设置了远程用户验证通常设置VPN服务器时候都会选择WINDOWS身份验证由于服务器进行用户身份验证,因此首先要在WINDOWS2000SERVER中添加一个用户,然后才能进行远程访问授权。第一步:依次打开“开始/程序/管理工具/计算机管理”选项,在计算机管理窗口左侧表中进入“系统工具/本地用户和组/用户”,接首在右侧窗口右击鼠标,并且从弹出菜单中选择“新建”命令新建一个用户。此是需要输入用户名称、接密码等必须项目,而且可以设定用户是否可以自行更改密码、密码是否永不过期等属性。如图3.8图3.8第二步:创建了一个新用户之后,可以在计算机管理窗口中看见刚才新建的用户图标(如图3.9),用鼠标右击对应的图标并且从弹出菜单中选取“属性”一项时行授权设置。50 图3.9第三步:在“拨入”标签中选择上部的“允许访问“一项(附图3.10),这样当远程用户连接到VPN服务器的时候只需输入刚设置的用户名与相应密码即可顺利建立连接了。图3.10到此为止,VPN服务器的设置就全部完成了,下面继续设置远程用户如何连接到这台服务器。(c)客户端计算机设置对于连接到VPN服务器的客户端计算机并没有特殊的要求,只要能够拨号连接到INTERNET,就可以完成与VPN服务器建立连接。因此,我们就以WINDOWS2000PROFESSIONAL为例,介绍本人的配置步骤。第一步:右击桌面的“网上邻居”图标,并且从弹出菜单中选择“属性”选项,接着在窗口点击“新建连接”,激活网络连接向导,在网络连接类型中选择“通过INTERNET连接到专用网络”一项。如图3.1150 图3.11第二步:接下来向导会要求选择公用网络类型,对于通过DSL或者线缆调市解调器以及固定IP上网,24小时接入INTERNET的用户可以选择“不拨初始边接”,但是对于需要拨号上网的用户(如ADSL)则需要选择“自动拨此初始连接”一项,并且从列表中选择一个INTERNET拨号连接。第三步:接着需要设定VPN服务器的地址,此时可以输入服务器的主机名或者IP地址,一般来说直接输入对方服务器的IP地址为好,如图3.12图3.12第四步:设定好是否所有用户都可以使用虚拟远程连接后就完成了虚拟网络的拨号连接设置,此时在网络和拨号连接窗口中可以看见刚添加的图标。完成上述操作之后,只要双击创建的虚拟网络连接图标就可以先触发INTERNET拨号连接,在登录到INTERNET拨号连接,在登录到INTERNET上之后,将会弹出对话框进行身份验证,此时输入正确的用户名与密码,即可远程VPN服务器建立连接了。到此,VPN安装、设置全部完成了。(d)使用感受架设好VPN之后,实际上就相当于组建了一个点对点的网络。此时,我可以像在内部局域网中一样直接使用远程服务器上的各种资源、文件,省去了单独架设FTP服务器来共享文件的麻烦。此外,VPN还支持共享文件的麻烦。此外,VPN还支持共享打印服务,这样当我在个地编辑好一篇文档后,就可以借助这个功能直接打印输出,非常方便。同时,在连接VPN后,并不影响使用INTERNET网络,同样可以浏览网页,收发电子邮件。50 虽然VPN为远程工作提供了极大的便利,但是它的安全性却不可忽视。通常公司总部局域网都会安装一些杀毒软件或防火墙软件,而远程计算机就不一定拥有这些安全软件的防护了,如果黑客入侵了远程计算机,并且通过远程记录软件得到输入的用户名和密码,然后利用远程计算机登录到公司内部网,后果不堪设想。因此,必须有相应解决方案堵住VPN的安全漏洞,真正提高VPN安全性。(2)MODEM点对点方案相对VPN方案来说,MODEM点对点方案比较节省成本,易于维护,但安全性和连接的稳定性相对较弱一些。现在描述本人的服务器和客户端具体配置。a、配置拨入服务器第一步:依次运行“开始/程序/管理工具/路由和远程访问”命令激活路由和远程访问窗口,此时可以从窗口列表中看见系统将当前计算机作为路由和远程访问服务器,用鼠标选中对应的计算机之后再运行“操作/配置并启用路由器和远程访问”命令进行配置。如图3.13图3.13第二步:在服务器安装向导窗口中提供了多种设置选择,在此选取“远程访问服务”一项。如图3.1450 图3.14第三步:接着返回设置主窗口,点选服务器之后如果可以从右部列表中查看到诸如路由接口、端口、远程访问客户端、IP路由选择等项目就说明己经完成了拨入服务器的创建操作(如图4.15)。图3.15第四步:用鼠标单击拨入服务器图标,并且在打开的下拉列表中单击远程访问策略,右击列表中的“如果启用拨入许可,单击“属性”选取项。弹出属性窗口(如图3.16),单击“添加”按钮,选择“Framed-Protocol”选项,并单击添加,单击可用类型中的“PPP”,单击“添加”按钮,最后单击确定,这样才能让远程计算机正常连接到此台拨入服务器。图3.16第五步:打开“控制面板/网络和拨号连接”选项,单击新连接,在此选择拨号到专用网络。如图3.1750 图3.17第六步:接下来进入页面的电话号码处输入与服务器连接的电话号码,最后确定即可。完成上述配置后,拨入服务器己经配置完成。b、客户端计算机设置对于连接到拨入服务器的客户端计算机并没有特殊的要求,只要能够拨号连接到INTERNET,就可以完成与拨入服务器建立连接。因此,我们就以WINDOWS2000PROFESSIONAL为例,介绍本人的配置步骤。第一步:右击桌面的“网上邻居”图标,并且从弹出菜单中选择“属性”选项,接着在窗口点击“新建连接”,激活网络连接向导,在网络连接类型中选择“拨入到专用网络”一项。如图3.18图3.18第二步:接下来向导会要求输入拨入服务器连接的电话号码,最后完成即可建立连接。完成上述操作之后,只要双击创建的拨入网络连接图标就可以先触发INTERNET拨号连接,在登录到INTERNET拨号连接,在登录到INTERNET上之后,即可远程拨入服务器建立连接了。MODEM点对点安装、设置全部完成了。50 3.2、SQLServer2000远程数据库复制长沙市国家税务局岳麓分局的和税务所分布在不同的地点,通过了点对点拨号技术组成了一个网络了,在这个网络上,总部有一台数据库服务器,各税务所也有一台数据库服务器,它们分别运行各自的考勤管理系统。为了保证各税务所的讲假能由总部领导审批、查询和统计,它们之间必须实现数据库的合并。为此我采用了SQLSERVER的数据库合并复制方案。下面对其进行详细描述。(1)复制简介SQLSERVER2000的复制是在数据库之间对数据和数据库对数据库对象进行复制和分发并进行同步以确保其一致性的一组技术。复制:从一个数据库将数据和数据库对象复制和分发到另一个数据库,然后使两个数据库之间的信息同步以获得一致性的进程。使用复制可以将数据分发到不同的位置,通过局域网或INTERNET分发给远程用户。有以下需求时,复制是分布式数据环境的一种解决方案:a、将数据复制或分发到一个或多个站点。b、依照调度方式分发数据复本。c、将数据更改分发到其它服务器上。d、允许多个用户和站点进行更改,然后将数据修改合并到一起,潜在地识和解决冲突。(2)SQLSERVER2000复制模型SQLSERVER2000复制采用发布工业术语来表示复制拓朴中的组件和进程,如图3.19。自定义应用程序发布服务器发布数据库远程分发服务器分发数据库数据订阅服务器东部地区订阅数据库订阅服务器西部地区订阅数据库订阅服务器南部地区订阅数据库图3.19SQLSERVER2000复制模型50 发布服务器:提供数据以便复制到其它服务器的服务器。发布服务可以具有一个或多个发布,每个发布代表一组逻辑相关性的数据。分发服务器:作为分发数据库宿主并存储历史数据或事务以及元数据的服务器。远程分发服务器是独立于发布服务器并配置为复制的分发服务器的服务器。订阅服务器:接收复制数据的服务器。订阅服务器订阅的是发布而不是发而中分离的项目;并且订阅服务器只订阅其需要的发布。根据复制类型和所选择的复制选项,订阅服务器还可以将数据更改传回发布服务器或将数据重新发布到其它订阅服务器。发布:是一个数据库中的一个或多个项目的集合。项目:指要复制的数据表、数据分区或数据库对象。订阅:对数据或数据库对象的复本的请求。订阅定义将接收的发布和接收的时间、地点。(3)合并复制合并复制使各站点得以自主工作(联机或脱机),并且经过一段时间后将多个站点上的数据修改合并为一个统一的结果。首先在订阅服务器上应用初始快照,然后SQLSERVER2000在发布服务器和订阅服务器上跟踪对己发布数据的更改。数据在调度时间或请求时在服务器之间进行同步。以下条件适合使用合并复制:a、多个订阅服务器需要在不同时刻更新数据并将这些更改传播到发布服务器和其它订阅服务器。b、订阅服务器需要接收数据,脱机更改数据,然后将更改同步到发布服务器和其它订阅服务器。合并复制的工作机制合并复制是由快照代理程序和合并代理程序实现的。快照代理程序准备快照文件,其中包含己发布的架构和数据,然后将这些文件的存储在快照文件夹中,并在发布数据库中插入同步作业。快照代理程序还创建复制特定的存储过程、触发器和系统表。合并复制代理程序将保存在发布数据库表中的初始快照作业应用到订阅服务器上。如图3.20自定义应用程序发布服务器发布数据库快照代理程序合并代理程序快照文件夹分发数据库分发服务器订阅数据库自定义应用程序初始数据和架构新数据更改50 图3.20合并复制的工作机制(4)配置合并复制a、配置分发、出版服务器第一步:打开SQLSERVER企业管理器,打开“工具/SQLSERVER配置属性”菜单,单击复制的TAB页面。单击分发和发布的“配置”按钮,系统弹出发布和分发向导窗口,我在这里使用的分发和发布在同一台服务器上,快照文件夹使用系统默认路径,输入发布数据库名称,选择当前服务器为注册服务器,系统弹出启用数据库窗口(如图3.21),最后启用订阅服务器,单击完成系统弹出完状态窗口,如图3.22。图3.2150 图3.22第二步:打开企业管理器的数据库服务器,依次打开复制/发布内容,右键选择“新建发布”,弹出数据库发布向导,选择需要发布的数据库,弹出“选择发布类型”窗口(如图3.23),选择合并发布,并选择全部的数据库表进行发布,输入发布名称,最后单击完成。图3.23第三步:打开企业管理器的数据库服务器,依次打开复制监视器/发布服务器/服务器名/发布项目名,在右边的窗口在出现一个快照图标,右键单击并启动。到此为止,发布、出版服务器的设置就全部完成了,下面继续设置远程用户如何订阅发布服务器。b、配置远程数据订阅各税务所的服务器必须的到总部的服务器中合并复制相应的数据,以保证请假、派工等单据及时得到批复,其配置过程如下:第一步:通过VPN或点对点方式连接到总部的服务器第二步:打开企业管理器,依次打开“工具/复制/请求订阅”菜单,系统弹出请求订阅窗口,单击请求新订阅按钮,在弹出的发请求订阅向导中,单击“注册服务器”输入总部服务器名称和登录用户(如图4.24)。接下来输入服务器登录时的SQL身份验证用户名和密码,选择本地创建的订阅数据库,选择初始化订阅,选择合并代理程序调度时间,选择订阅优先级,最后单击完成。50 图3.24这时些服务器开始到发布服务器上订阅并合并复制数据库表中数据,以保证数据的传递与合并,订阅服务器配置完成。50 第四章系统结构与模型4.1、业务流程图设计(1)管理职能组成局长主管局长1主管局长2政工局长科(所)长科(所)长。。。。。。。科(所)长科(所)长。。。。。。。职员职员职员职员职员职员职员职员(2)业务处理总体流程图50 机构设置人员设置职务权限设置派工请假加班查询统计(3)派工业务处理流程科(所)长填写派工单政工科备案(4)请假业务处理流程当事人填写请假申请单科员请假半天科员请假一天以上科长请假一天以上科长请假一天职工学历学习科长审批政工科备案科长签意见政工局长审批主管局长签意见政工局长审批主管局长签意见局长审批政工局长审批50 (5)加班业务处理流程当事人填写加班情况表科所长签意见主管局长审批政工科备案4.2、软件功能设计(1)科室(所)设置a、新增科所:科所代码、名称、地址、电话等。b、修改科所:科所代码、名称、地址、电话等。c、删除科所。(2)职务设置a、新增职务:职务代码、名称等。b、修改职务:职务代码、名称等。c、删除职务。(3)在职人员设置a、新增人员:编号、姓名、科室、职务、参加工作时间等。b、修改人员:编号、姓名、科室、职务、参加工作时间等。c、删除人员。(4)权限设置a、新增权限:所管辖科室,请假审批、签署意见权,派工权,加班签署意见、审批权等。b、修改权限:所管辖科室,请假审批、签署意见权,派工权,加班签署意见、审批权等。c、删除权限。(5)派工a、科所负责人填写派工并签名确认。b、政工科备案(6)请假分五种情况及处理方法。a.科员病假、事假半天(a)填写:当事人(b)签名确认:当事人(c)审批:所属科室科所长50 (d)备案:政工科b.科员病假、事假一天以上(含一天)(a)填写:当事人(b)签名确认:当事人(c)签署意见:所属科室科所长(d)审批:政工局长(e)备案:政工科C.科所正、副职请假一天(a)填写:当事人(b)签名确认:当事人(c)签署意见:主管局长(d)审批:政工局长(e)备案:政工科d.科所正、副职请假一天以上(a)填写:当事人(b)签名确认:当事人(c)签署意见:政工局长(d)审批:局长(e)备案:政工科e.职工学历学习(a)填写:当事人(b)签名确认:当事人(c)审批:政工局长(d)备案:政工科(7)加班a、填写:当事人b、签名确认:当事人c、签署意见:所属科室科所长d、审批:主管局长e、备案:政工科(8)统计查询a、“外出工作指派单”查询查询条件:按时间段查询b、“请假/事假申请表”查询查询条件:(a)按请假分类查询50 (b)按时间段查询c、“科所加班情况统计表”查询查询条件:按时间段查询d、考勤统计汇总表汇总条件:按时间段汇总4.3、数据库设计数据库名称:KQXT编码式命名a.人事数据表KQ_BMAN字段名称中文名称类型长度小数初值说明BNENO员工编号VARCHAR10NOTNULL主键BNCODE编代码VARCHAR10NOTNULLBNNAM中文姓名VARCHAR20NOTNULLBDNO科室编号VARCHAR10NOTNULL外键BDEVBZWNO职务编号VARCHAR10NOTNULL外键BZWBNLAST上级标志VARCHAR1TorFBNNEXT下级标志VARCHAR1TorFBNWORK参加工作时间DATETIMEBNVAL有效标志VARCHAR1TTorF删除b.密码表KQ_BPWD字段名称中文名称类型长度小数初值说明BNENO员工编号VARCHAR10NOTNULL主键BNPWD登录密码VARCHAR10NOTNULLBNDS数字签名VARCHAR10NOTNULLc.权限设置表KQ_SYSPMS字段名称中文名称类型长度小数初值说明BNENO员工编号VARCHAR10NOTNULL主键PMSFUN功能项目VARCHAR10NOTNULL主键PMSNAM功能名称VARCHAR40NOTNULLPMS权限VARCHAR1NOTNULLTorFd.科室设置表KQ_BDEV50 字段名称中文名称类型长度小数初值说明BDNO科室编号VARCHAR10NOTNULL主键BDNAM科室名称VARCHAR40NOTNULL预设BDADR地址VARCHAR100NULLBDTEL1电话VARCHAR20NULLBDTEL2VARCHAR20NULLBDTEL3VARCHAR20NULLe.职务设置表KQ_BZW字段名称中文名称类型长度小数初值说明BZWNO职务编号VARCHAR10NOTNULL主键BZWNAM职务名称VARCHAR40NOTNULL预设f.外出工作指派表KQ_PG字段名称中文名称类型长度小数初值说明PGNO派工单号VARCHAR12NOTNULL主键BDNO科室编号VARCHAR10NOTNULLBNENO当事人编号VARCHAR10NOTNULLBNNAM当事人姓名VARCHAR20NOTNULLPGDAT派工日期DATETIMENOTNULLPGADR派工单位VARCHAR40NOTNULLPGCASE派工事宜VARCHAR200NOTNULLPGTEL联系电话VARCHAR20NOTNULLPGTIME外出时限VARCHAR11NOTNULLPGWEK星期几VARCHAR1PGMARK备注VARCHAR200BNENO1科长签名VARCHAR10NOTNULLBNNAM1科长姓名VARCHAR20NOTNULLPGZG政工备案标志VARCHAR1TTorFPGTRA传送标志VARCHAR1FTorFg.病假事假申请表KQ_QJ字段名称中文名称类型长度小数说明QJNO病假事假单号VARCHAR12NOTNULL主键50 QJKIND请假类型VARCHAR1NOTNULL1:病2:事BDNO科室编号VARCHAR10BDNAM科室名称VARCHAR40NOTNULLBNENO当事人编号VARCHAR10NOTNULLBNNAM当事人姓名VARCHAR20NOTNULLQJDAT日期DATETIMENOTNULLQJCASE请假事由VARCHAR200QJTIME请假时限DATETIMEQJDAY几天SMALLINTPGMARK备注VARCHAR200BNENO1科长签名VARCHAR10BNNAM1科长姓名VARCHAR20NOTNULLBNENO2政工局长签名VARCHAR10BNNAM2局长姓名VARCHAR20BNENO3局长签名VARCHAR10BNNAM3局长姓名VARCHAR20QJZG政工备案标志VARCHAR1TTorFQJTRA传送标志VARCHAR1FTorFh.科所加班情况表KQ_JB字段名称中文名称类型长度小数说明JBNO加班单号VARCHAR12NOTNULL主键BDNO科室编号VARCHAR10BDNAM科室名称VARCHAR40NOTNULLBNENO当事人编号VARCHAR10NOTNULLBNNAM当事人姓名VARCHAR20NOTNULLJBTIME加班DATETIMENOTNULLJBCASE加班事由VARCHAR200QJTIME请假时限DATETIMEJBMARK备注VARCHAR200BNENO1科长签名VARCHAR10BNNAM1科长姓名VARCHAR20NOTNULLBNENO2局长签名VARCHAR10BNNAM2局长姓名VARCHAR20LJBZGVARCHAR1TTorF50 政工备案标志JBTRA传送标志VARCHAR1FTorF4.4、功能的一般性规定本软件系统界面格式统一,统一的错误声音提示,在线帮助等。4.5、性能的一般性规定数据精度:DATETIME类型数据精确到秒.响应时间:保存、删除的平均响应时间小于2秒;各类查询的平均响应时间小于5秒.4.6、其它专门要求数据库系统能满足以下能力:a.良好的并行系统的解决方案b.对异种数据源的访问能力c.高可靠性和安全性d.提供分布试数据的存取和管理机制e.支持数据库维护工具、CLIENT开发工具、查询开发工具对数据库的要求,满足多平台特性要求,操作特性要求,场合适应性要求等;所有终端机安装开放的数据库接口(ODBC)。4.7、运行环境要求(1)网络拓扑结构(2)系统平台a、硬件系统(a)专用服务器50 IntelP4级CPU,512M以上内存,40G*2枚7200转硬盘(另一块做冗于RAID1),100M网卡。(b)工作站系统最低配置:Intel赛扬级CPU,64M以上内存,15寸以上显示器,最佳分辨率800*600,4.3G以上硬盘,使用Win98、Win2000、WinXp操作系统。b、软件系统(a)服务器操作系统:Win2000server+SP4(b)服务器数据库:SQL2000+SP150 第五章系统实现技术我在两台服务器、两个56K拨号MODEM上,Windows2000AdvancedServer环境下,实现了基于INTERNET的网上考勤系统各功能模块。具体开发工具为SybasePowerBuilder8.0(以下简称PB8),数据库采用MicrosoftSqlServer2000(以下简称SQL2000)数据库。该系统主要包括:a、系统基本资料管理维护b、考勤处理c、统计查询以下介绍了各功能模块的实现方法及一些特殊技术问题的解决。5.1、与数据库的链接由于各工作站客户程序频繁地与数据库打交道,如何与数据库链接就显得十分重要。本系统用到一个数据库,名为KQXT_DATA.MDF,所有用户登陆时就要进行数据库操作,为实现客户端和数据库链接,首先在WinSERVER的控制面板/管理工具/数据源(ODBC)选项中添加一个kqxt_sql的用户数据源。再在Pb8创建的“KQXT”开发工程的“KQXT”系统应用对象的OPEN事件中建立与SQL2000KQXT_DATA.MDF数据库的链接,即加入以下语句://ProfileKQXT_SQLSQLCA.DBMS=profilestring("HTJS_ODBC.ini","DataBase","DBMS","")SQLCA.DBParm=profilestring("HTJS_ODBC.ini","DataBase","DBParm","")SQLCA.AutoCommit=trueconnectusingsqlca;ifsqlca.sqlcode<>0thenmessagebox("错误","初始SQL数据库失败!",stopsign!)haltcloseendifopen(w_logo)该语句完成以下工作a、完成初始化工作b、利用INI文件设置属性,初始化一个事务对象c、连接要访问的数据库d、打开第一个窗口其中,SQLCA.DBMS表示数据库厂商的名称,SQLCA.DBParm表示与具体数据库管理系统相关的一组连接参数,SQLCA.AutoCommit50 定义就用程序如何提交事务,TRUE的取值表示自动提交每一条SQL语句。这样,在工作站打开客户端软件时提出一个数据库连接请求,就会去执行以上语句,从而建立与SQL2000的KQXT数据库连接。以后对其它程序代码操作数据库的所有操作都是基于此链接。该链接关闭于软件停止运行。5.2、用户个性化登陆要实现用户页面的个性化,首先要做的显然是弄清登陆的用户是谁。我采用“用户名/密码”登陆的方式来识别用户。用户登录时需要填入的是BNENO(用户代码),BNPWD(密码)二个信息。当用户点击“确定”按钮后,软件判断用户填入信息是否完整、系统根据BNENO查找数据库的KQ_BPWD密码表,将查找到的BNENO与用户输入BNENO比较,若相同则做相关初始化操作,允许用户进入软件,否则给出提示信息。这些过程由“W_logo”窗口的“确定”按钮的clicked事件实现。过程如下:stringls_pwd,ls_bnpwd,ls_bnenostringls_userls_user=trim(sle_user.text)ifls_user=""thenmessagebox("提示","用户名不能为空!",exclamation!)returnendif///系统时间datetimeldt_dateselectgetdate()into:ldt_datefromhtjs.kq_bpwd;gs_today=string(ldt_date,"YYYY-MM-DD")gd_today=date(ldt_date)gs_id=sle_user.text///////////////ifls_user="admin"thengs_id="admin"SELECThtjs.kq_bpwd.bnpwdINTO:ls_bnpwdFROMhtjs.kq_bpwdWHEREhtjs.kq_bpwd.bneno=:gs_id;ifls_bnpwd<>trim(sle_pwd.text)thenmessagebox("错误","登录密码不正确!",stopsign!)sle_pwd.setfocus()returnelsegs_bnnam="系统管理员"//姓名50 gs_bdnam="系统管理员"//科室名称open(w_main)close(parent)endifelse//比对密码SELECTHTJS.KQ_BPWD.BNPWD,HTJS.KQ_BPWD.BNENOINTO:ls_pwd,:ls_bnenoFROMHTJS.KQ_BPWDwherehtjs.kq_BPWD.BNENO=:ls_user;ifisnull(ls_bneno)orlen(ls_bneno)<=0thenmessagebox("错误","用户编号不存在!",stopsign!)sle_user.setfocus()returnendififls_pwd<>trim(sle_pwd.text)thenmessagebox("错误","登录密码不正确!",stopsign!)sle_pwd.setfocus()returnelse////////////////////初始数据//////////////////////stringls_bnnam,ls_bdno//用户中文姓名、科室noSELECTHTJS.KQ_BMAN.BNNAM,HTJS.KQ_BMAN.BDNOINTO:ls_bnnam,:ls_bdnoFROMHTJS.KQ_BMANWHEREHTJS.KQ_BMAN.BNENO=:gs_id;stringls_bdnam//科室名称selecthtjs.kq_bdev.bdnaminto:ls_bdnamfromhtjs.kq_bdevwherehtjs.kq_bdev.bdno=:ls_bdno;gs_bnnam=ls_bnnam//姓名gs_bdno=ls_bdno//科室编号gs_bdnam=ls_bdnam//科室名称50 open(w_main)close(parent)endifendif用户名和密码校验完后就必须校验用户的操作权限。在“W_main”窗口的的Open事件实现。过程如下://///菜单权限/////////////1.局长2.政工局长3.主管局长4.科所长5.科员//choosecasetrue//系统管理员casegs_id="admin"//快捷菜单设置为falsem_main.m_3.m_31.toolbaritemvisible=falsem_main.m_3.m_32.toolbaritemvisible=falsem_main.m_3.m_33.toolbaritemvisible=falsem_main.m_1.visible=falsem_main.m_2.visible=falsem_main.m_3.visible=falsem_main.m_5.m_52.visible=false//局长casef_read_bman_pms(gs_id,"cbx_qj_kz_more_sp")=truem_main.m_1.visible=falsem_main.m_2.m_21.visible=falsem_main.m_2.m_22.visible=falsem_main.m_2.m_23.visible=falsem_main.m_4.visible=falsegs_ruler="1"//政工局长casef_read_bman_pms(gs_id,"cbx_gx_sp")=trueand&f_read_bman_pms(gs_id,"cbx_fd_sp")=trueand&f_read_bman_pms(gs_id,"cbx_qj_ky_more_sp")=trueand&f_read_bman_pms(gs_id,"cbx_qj_kz_one_sp")=trueand&f_read_bman_pms(gs_id,"cbx_qj_kz_more_yj")=trueand&f_read_bman_pms(gs_id,"cbx_xx_sp")=truem_main.m_1.visible=false50 m_main.m_2.m_21.visible=falsem_main.m_2.m_22.visible=falsem_main.m_2.m_24.visible=falsem_main.m_4.visible=falsegs_ruler="2"//主管局长casef_read_bman_pms(gs_id,"cbx_jb_sp")=trueand&f_read_bman_pms(gs_id,"cbx_qj_kz_one_yj")=truem_main.m_1.visible=falsem_main.m_2.m_21.visible=falsem_main.m_2.m_23.visible=falsem_main.m_2.m_24.visible=falsem_main.m_3.m_34.visible=falsem_main.m_3.m_35.visible=falsem_main.m_3.m_36.visible=falsem_main.m_4.visible=falsegs_ruler="3"//科所长casef_read_bman_pms(gs_id,"cbx_pg")=trueand&f_read_bman_pms(gs_id,"cbx_gx_yj")=trueand&f_read_bman_pms(gs_id,"cbx_fd_yj")=trueand&f_read_bman_pms(gs_id,"cbx_jb_yj")=trueand&f_read_bman_pms(gs_id,"cbx_qj_ky_half")=trueand&f_read_bman_pms(gs_id,"cbx_qj_ky_more_yj")m_main.m_1.m_12.m_121.visible=falsem_main.m_1.m_b1.visible=falsem_main.m_1.m_15.visible=falsem_main.m_2.m_22.visible=falsem_main.m_2.m_23.visible=falsem_main.m_2.m_24.visible=falsem_main.m_3.m_34.visible=falsem_main.m_3.m_35.visible=falsem_main.m_3.m_36.visible=falsem_main.m_4.visible=falsegs_ruler="4"//科员50 caseelsem_main.m_1.m_11.visible=falsem_main.m_1.m_12.m_122.visible=falsem_main.m_1.m_b1.visible=falsem_main.m_1.m_15.visible=falsem_main.m_2.visible=falsem_main.m_3.m_34.visible=falsem_main.m_3.m_35.visible=falsem_main.m_3.m_36.visible=falsem_main.m_4.visible=falsem_main.m_5.m_52.visible=falsegs_ruler="5"endchoose//设置状态栏dw_1.x=0dw_1.y=this.y-dw_1.heightdw_1.width=this.widthdw_1.settransobject(sqlca)dw_1.insertrow(0)dw_1.setitem(1,"BNNAM",gs_bnnam)dw_1.setitem(1,"BDNAM",gs_bdnam)dw_1.setitem(1,"TODAY",gd_today)dw_1.setitem(1,"week",dayname(gd_today))5.3、系统基本资料管理与维护人员设置长沙市国家税务局岳麓分局的每个职工都有所属的工作部门、工作职称、和相应的管理权限。在软件中可进行人员设置管理,其功能包括有新增职工、职工信息修改、职工权限设置和删除职工等职能。(1)新增职工首先由系统管理员录入职工的BNENO(员工编号)、BNNAM(姓名)、所属科室、职务代码和参加工作时间,单击“新增”按钮系统自动完成数据保存事务。其过程如下:stringls_bdno,dwfilterstringls_bnenostringls_bnpwdifdw_in.update()=1then50 commit;//向密码表中增加新用户默认密码123ls_bnpwd="123"ls_bneno=dw_in.getitemstring(1,"BNENO")INSERTINTOhtjs.kq_bpwd(bneno,bnpwd)VALUES(:ls_bneno,:ls_bnpwd);//刷新dw_list窗口ls_bdno=dw_in.getitemstring(1,"BDNO")ifisnull(ls_bdno)thenreturndwfilter="BDNO=""+ls_bdno+"""dw_list.setfilter(dwfilter)dw_list.filter()dw_list.retrieve()//刷新dw_in窗口dw_in.setredraw(false)dw_in.reset()dw_in.insertrow(0)dw_in.setredraw(true)//setfocusdw_in.setcolumn("BNENO")dw_in.setfocus()elsemessagebox("错误","新增用户失败!",stopsign!)rollback;endif其含义为:首先,窗口的数据输入文本框中取得相应数值,并直接保存数据窗口的新增数据行,新增用户成功后立即新增该用户的系统登录权限,并为其设置初始密码。最后刷新所有窗口数据窗口。如果用户输入有误不保存数据并给用户提示。(2)职工权限设置a、职工权限设置窗口(W_right)具有权限设置、修改两种功能,如果是第一次设置该用户权限,则由系统管理员对相应人员设置对应权限;如果己对该用户设置权限,窗口打开时自动读该职工己有的权限,可提供给系统管理员进行修改。这个判断过程由W_right的Open事件执行,其过程如下:ifgstr_para.bneno=""then50 messagebox("提示","请用鼠标单击右边列表中的用户行!")close(w_right)returnendif//显示科室dw_dev_select.settransobject(sqlca)dw_dev_select.retrieve()dw_dev.settransobject(sqlca)dw_name.settransobject(sqlca)ifisnull(gstr_para.bneno)=falseorlen(gstr_para.bneno)>0thendw_name.retrieve(gstr_para.bneno)endif//显示现有管理科所dw_dev.retrieve(gstr_para.bneno)//读权限cbx_pg.checked=f_read_bman_pms(gstr_para.bneno,"cbx_pg")cbx_gx_yj.checked=f_read_bman_pms(gstr_para.bneno,"cbx_gx_yj")cbx_gx_sp.checked=f_read_bman_pms(gstr_para.bneno,"cbx_gx_sp")cbx_fd_yj.checked=f_read_bman_pms(gstr_para.bneno,"cbx_fd_yj")cbx_fd_sp.checked=f_read_bman_pms(gstr_para.bneno,"cbx_fd_sp")cbx_jb_yj.checked=f_read_bman_pms(gstr_para.bneno,"cbx_jb_yj")cbx_jb_sp.checked=f_read_bman_pms(gstr_para.bneno,"cbx_jb_sp")cbx_qj_ky_half.checked=f_read_bman_pms(gstr_para.bneno,"cbx_qj_ky_half")cbx_qj_ky_more_yj.checked=f_read_bman_pms(gstr_para.bneno,"cbx_qj_ky_more_yj")cbx_qj_ky_more_sp.checked=f_read_bman_pms(gstr_para.bneno,"cbx_qj_ky_more_sp")cbx_qj_kz_one_yj.checked=f_read_bman_pms(gstr_para.bneno,"cbx_qj_kz_one_yj")cbx_qj_kz_one_sp.checked=f_read_bman_pms(gstr_para.bneno,"cbx_qj_kz_one_sp")cbx_qj_kz_more_yj.checked=f_read_bman_pms(gstr_para.bneno,"cbx_qj_kz_more_yj")cbx_qj_kz_more_sp.checked=f_read_bman_pms(gstr_para.bneno,"cbx_qj_kz_more_sp")cbx_xx_sp.checked=f_read_bman_pms(gstr_para.bneno,"cbx_xx_sp")其含义为:首先,显示数据窗口内的所有内容,然后从登录时保存的全局函数据中读取用的相应权限,在窗口中的各种权限设计为“复选框”选择,复选框有选中与未选中两种状态。从全局函数中读出相应的项目来影响复选项的“Checked”属性。b、设置职工权限50 由系统管理员根据实际情况确定系统职工的所辖科室、科员请假、科长请假、派工、加班等相应权限。所辖科室从下拉列表框中进行选择,其余权限通过复选框进行选择,选择好权限后单击“确定存盘”系统自动判断数据自动性并进行保存,保存结果反馈给用户提示。其保存过程如下:ifdw_dev.rowcount()<=0thenmessagebox("提示","选择所管辖的科所!",exclamation!)returnendififmessagebox("提示","确认无误保存吗?",question!,okcancel!)=1thenifdw_dev.update()=1thencommit;//写权限f_write_bman_pms(gstr_para.bneno,"cbx_pg",cbx_pg.checked)f_write_bman_pms(gstr_para.bneno,"cbx_gx_yj",cbx_gx_yj.checked)f_write_bman_pms(gstr_para.bneno,"cbx_gx_sp",cbx_gx_sp.checked)f_write_bman_pms(gstr_para.bneno,"cbx_fd_yj",cbx_fd_yj.checked)f_write_bman_pms(gstr_para.bneno,"cbx_fd_sp",cbx_fd_sp.checked)f_write_bman_pms(gstr_para.bneno,"cbx_jb_yj",cbx_jb_yj.checked)f_write_bman_pms(gstr_para.bneno,"cbx_jb_sp",cbx_jb_sp.checked)f_write_bman_pms(gstr_para.bneno,"cbx_qj_ky_half",cbx_qj_ky_half.checked)f_write_bman_pms(gstr_para.bneno,"cbx_qj_ky_more_yj",cbx_qj_ky_more_yj.checked)f_write_bman_pms(gstr_para.bneno,"cbx_qj_ky_more_sp",cbx_qj_ky_more_sp.checked)f_write_bman_pms(gstr_para.bneno,"cbx_qj_kz_one_yj",cbx_qj_kz_one_yj.checked)f_write_bman_pms(gstr_para.bneno,"cbx_qj_kz_one_sp",cbx_qj_kz_one_sp.checked)f_write_bman_pms(gstr_para.bneno,"cbx_qj_kz_more_yj",cbx_qj_kz_more_yj.checked)f_write_bman_pms(gstr_para.bneno,"cbx_qj_kz_more_sp",cbx_qj_kz_more_sp.checked)f_write_bman_pms(gstr_para.bneno,"cbx_xx_sp",cbx_xx_sp.checked)messagebox("提示","成功保存权限!")dw_dev.reset()close(parent)elserollback;messagebox("错误","保存所属科所失败?",stopsign!)endifendif其含义为:首先,判断窗口中各项内容是否输入完整,数据完整无误后直接保存数据窗口中的内容,并将权限内容保存到全局函数中。最后反馈给用户保存提示。50 5.4、考勤处理科所长请假科所正、副职请假一天以上需首先由当事人填写请假申请单,由政工局长签署意见,再由局长审批,最后交政工科备案。a、填写请假申请单单击“考勤处理/请假/科所长”菜单,窗口打开时,首先取己知的部分数据,如姓名、当前日期、所属部门等,再交由用户自行填写其余内容,如请假类别、事由、天数等。其取己数据部分过程如下:longll_cur_rowstringls_qjno,ls_bnnam,ls_bdnamdatetimeldt1timelt1intli_xhlt1=now()ldt1=datetime(date(gs_today),lt1)dw_1.settransobject(sqlca)ll_cur_row=dw_1.insertrow(0)ls_qjno=f_qj_no(gs_id)//请假单号dw_1.setitem(ll_cur_row,"QJNO",ls_qjno)//用户NOdw_1.setitem(ll_cur_row,"BNENO",gs_id)//用户姓名dw_1.setitem(ll_cur_row,"BNNAM",gs_bnnam)//科室NOdw_1.setitem(ll_cur_row,"BDNO",gs_bdno)//科室名称dw_1.setitem(ll_cur_row,"BDNAM",gs_bdnam)//日期dw_1.setitem(ll_cur_row,"QJDAT",ldt1)dw_1.setitem(ll_cur_row,"QJTIME",ldt1)dw_1.setitem(ll_cur_row,"QJTIME1",ldt1)//查找个人序号xhdw_1.setitem(ll_cur_row,"xh",gstr_pa.qj_xh其含义为:首先,设置数据窗口的事务对象,然后取得系统己知的部分内容并填写到数据窗口的相应栏目中。己一个数据窗口反馈给用户。50 b、保存申请单内容用户填写完相应项目后,单击“保存”按钮系统将用户数据保存到数据库中。其处理过程如下:longll_cur_rowstringls_qjnodatetimeldt1timelt1ifdw_1.rowcount()<=0thenreturnifdw_1.update()=1thencommit;messagebox("提示","成功提交!")elserollback;messagebox("错误","保存请假单失败!",stopsign!)returnendifdw_1.setredraw(false)dw_1.reset()ll_cur_row=dw_1.insertrow(0)dw_1.setredraw(true)////初始化/////lt1=now()ldt1=datetime(date(gs_today),lt1)ls_qjno=f_qj_no(gs_id)//请假单号dw_1.setitem(ll_cur_row,"QJNO",ls_qjno)//用户NOdw_1.setitem(ll_cur_row,"BNENO",gs_id)//用户姓名dw_1.setitem(ll_cur_row,"BNNAM",gs_bnnam)//科所nodw_1.setitem(ll_cur_row,"BDNO",gs_bdno)//科所名称dw_1.setitem(ll_cur_row,"BDNAM",gs_bdnam)//日期dw_1.setitem(ll_cur_row,"QJDAT",ldt1)50 dw_1.setitem(ll_cur_row,"QJTIME",ldt1)dw_1.setitem(ll_cur_row,"QJTIME1",ldt1)//查找个人序号xhdw_1.setitem(ll_cur_row,"xh",gstr_pa.qj_xh)其含义为:首先,设置提交数据窗口的数据保存事务,并反馈用户保存结果。然后重新初始化数据窗口,以恢复初始值。c、签署意见和审批主管局长、政工局长等管理人员都需要对申请请假的单据进行签署意见和审批,在系统设计中首先单击“查询”按钮由数据窗口查询得到所有待审批的单据,再交由管理人员人审核,对审核通过的可以进行输入数据签名密码,其保存处理过程如下:longll_countintistringls_bz2ifsle_sig.text<>f_signature(gs_id)thenmessagebox("错误","签名密码错误!",stopsign!)returnendif//请假代码2、3、5ll_count=tab_1.tabpage_1.dw_1.rowcount()//查询标志0未1同意2不同意fori=1toll_countls_bz2=tab_1.tabpage_1.dw_1.getitemstring(i,"BZ2")ifls_bz2="1"orls_bz2="2"thentab_1.tabpage_1.dw_1.setitem(i,"BNENO2",gs_id)tab_1.tabpage_1.dw_1.setitem(i,"BNNAM2",gs_bnnam)endifnext//请假代码1ll_count=tab_1.tabpage_2.dw_2.rowcount()//查询标志0未1同意2不同意fori=1toll_countls_bz2=tab_1.tabpage_2.dw_2.getitemstring(i,"BZ2")ifls_bz2="1"orls_bz2="2"thentab_1.tabpage_2.dw_2.setitem(i,"BNENO2",gs_id)tab_1.tabpage_2.dw_2.setitem(i,"BNNAM2",gs_bnnam)50 endifnext//请假代码6ll_count=tab_1.tabpage_3.dw_3.rowcount()//查询标志0未1同意2不同意fori=1toll_countls_bz2=tab_1.tabpage_3.dw_3.getitemstring(i,"BZ2")ifls_bz2="1"orls_bz2="2"thentab_1.tabpage_3.dw_3.setitem(i,"BNENO2",gs_id)tab_1.tabpage_3.dw_3.setitem(i,"BNNAM2",gs_bnnam)endifnext//请假代码7ll_count=tab_1.tabpage_4.dw_4.rowcount()//查询标志0未1同意2不同意fori=1toll_countls_bz2=tab_1.tabpage_4.dw_4.getitemstring(i,"BZ2")ifls_bz2="1"orls_bz2="2"thentab_1.tabpage_4.dw_4.setitem(i,"BNENO2",gs_id)tab_1.tabpage_4.dw_4.setitem(i,"BNNAM2",gs_bnnam)endifnextifmessagebox("提示","确认要保存吗?",question!,okcancel!)=1theniftab_1.tabpage_1.dw_1.update()=1thencommit;tab_1.tabpage_1.dw_1.reset()elserollback;messagebox("错误","保存科员请假审批结果失败!",stopsign!)endififtab_1.tabpage_2.dw_2.update()=1thencommit;tab_1.tabpage_2.dw_2.reset()elserollback;50 messagebox("错误","保存在职学习审批结果失败!",stopsign!)endififtab_1.tabpage_3.dw_3.update()=1thencommit;tab_1.tabpage_3.dw_3.reset()elserollback;messagebox("错误","保存科所长请假一天审批结果失败!",stopsign!)endififtab_1.tabpage_4.dw_4.update()=1thencommit;tab_1.tabpage_4.dw_4.reset()elserollback;messagebox("错误","保存科所长请假一天以上审批结果失败!",stopsign!)endifendif其含义为:首先,校验数据签名的密码是否正确。然后查询审批意见,针对不同的审批结果,得到请假结果,最后保存数据窗口数据,反馈用户保存结果。5.5、统计查询系统所有的查询菜单都能针对时间段进行统计查询,部分选项还能分类查询。首先由用户输入查询的时间段,选择分类项目查询,单击查询按钮系统会根据查询条件对数据窗口进行检索。其派工查询处理过程如下://1.局长2.政工局长3.主管局长4.科所长5.科员stringdwfilterdatetimedt1,dt2timelt1,lt2lt1=time("00:00:00")lt2=time("23:59:59")dt1=datetime(date(em_1.text),lt1)dt2=datetime(date(em_2.text),lt2)//设置查询的时间条件ifisdate(em_1.text)=trueandisdate(em_2.text)=trueandem_1.text<=em_2.text50 then//按时间段choosecasetruecasegs_ruler="4"orgs_ruler="5"dw_1.setredraw(false)dw_1.dataobject="d_pg_cx"dw_1.setredraw(true)dw_1.settransobject(sqlca)dwfilter="BDNO=""+gs_bdno+"""dw_1.setfilter(dwfilter)dw_1.filter()dw_1.retrieve(dt1,dt2)casegs_ruler="3"dw_1.setredraw(false)dw_1.dataobject="d_pg_cx_fjz"dw_1.settransobject(sqlca)dw_1.setredraw(true)dw_1.retrieve(dt1,dt2,gs_id)casegs_ruler="1"orgs_ruler="2"dw_1.setredraw(false)dw_1.dataobject="d_pg_cx"dw_1.setredraw(true)dw_1.settransobject(sqlca)dw_1.retrieve(dt1,dt2)endchooseelsemessagebox("错误","输入查询的起止时间!~r"+"或截止时间大于起始时间!",exclamation!)endif其含义为:首先,取得用户输入的时间段查询条件。然后通过数据窗口检索数据库中是否有符合条件的数据,如果有就按用户职称分类进行显示,以供用户参考。第六章性能测试与分析50 为了验证系统的正常运行,我将系统安装到长沙市国家税务局岳麓分局总部和下属的五个税务所,完全按照需求分析的业务流程来操作使用本系统,税务所和总部之间采用点对点的联系方式,在总局设立了一台拨入发布分发服务器,每天定时进行数据的合并复制保证所有单据得到及时的审批和查询统计。经过多次的软件调试和修改后,目前系统运行正常,实现了长沙市国家税务局岳麓分局的INTERNET考勤管理。6.1、测试实例的选择(1)用户登陆和用户权限测试a、测试系统外用户登陆情况b、测试存在用户名但是系统管理员没有给予相应权限情况(2)“科员请假”测试(3)“科员学历学习”测试(4)“科员加班”测试(5)“科长请假”测试6.2、测试环境与测试条件(1)硬件环境数据发布服务器:P42.4G,128M内存,40G硬盘,10/100M自适应网卡。数据订阅服务器:P31.0G,128M内存,40G硬盘,10/100M自适应网卡客户端:P3赛扬533M,64M内存,20G硬盘,10/100M自适应网卡。(2)网络环境TPLINK24口交换机1台,实达外置56KModem2台。(3)软件环境数据发布服务器:Win2000serverfamily版本、SQL2000企业版数据订阅服务器:Win2000serverfamily版本、SQL2000企业版客户端:Win98、配置ODBC数据源6.3、实例测试测试序号测试项目结果结论1系统外用户用户名:123“用户编码不存在”通过用户未赋权限用户名:0108可以进入系统,菜单为科员通过2科员请假公休价科长签署意见、政工局长审批通过其它法定假科长签署意见、政工局长审批通过科员请假半天科长审批通过50 科员请假一天以上科长签署意见、政工局长审批通过3科员学历学习政工局长审批通过4科员加班科长审批通过5科长请假科长请假一天副局签署意见、政工局长审批通过科长请假一天以上政工局长签署意见、局长审批通过6.4、性能分析数据实例建立之后,我首先对个性化登录的功能进行测试。登录测试分两部分,一是系统外用户登陆情况,二是测试存在用户名但是系统管理员没有给予相应权限情况。对于系统以外的用户做随意登录时,系统能自动进行否决,并反馈给用户相应的提示;对于系统之内的用户,系统自动会根据登录用户的权限进行判断,再根据系统一定固定权限进行登录辨认,不同的用户权限有不同的用户界面。达到了普通用户与管理者的区别。科员请假测试。科员请假分别为公休假、法定假、半天假、一天以上假等四项测试。每一项测试都由科员在其客户端软件上填写请假申请,再根据相应的审批原则由各领导进行审批,测试全部通过,完成满足业务需求。科员学历学习测试。由科员在其客户端软件上进行请假申请,再根据相应的审批原则由政工局长进行审批,测试全部通过,满足业务需求。科员加班测试。由科员在其客户端软件上填写请假申请,再根据相应的审批原则由科长进行审批,测试全部通过,满足业务需求。科长请假测试。科长请假分别为请一天假、一天以上假等两项测试。每一项测试都由科长在其客户端软件上填写请假申请,再根据相应的审批原则由各领导进行审批,测试全部通过,完成满足业务需求。数据传输测试。在不同的税务所,填写完请假等相应考勤申请后,数据保存在本局域网的数据库中。然后,连通税务所与税务局总局的INTERNET网络连接,再进行SQLServer的数据库合并复制,数据合并成功。因此,在实际应用中,同一单位在不同地区可以纳人总部一并进行考勤管理,并且不用架设专的网络通讯,利用现有的INTERNET网络资源,完成申请、审批等相应功能,达到信息化管理的目的。第七章结束语50 在学习了INTERNET网点对点的拨号联接技术、VPN架设技术、SQLServer远程数据复制等基于INTERNETR开发技术后,以及对PowerBulder数据窗口设计有了一定了解的基础上,我完成了长沙市国家税务局岳麓分局的INTERNET网上考勤系统。本文讨论了考勤系统的系统结构、数据库设计的实现情况,着重分析了INTERNET网点对点的拨号联接技术、VPN架设技术、SqlServer远程数据复制技术,并将系统安装到了实际用户得到了软件的验证。基于INTERNET的信息化处理是信息化建设的潮流,许多系统上都可以见到关于此方面的应用。我们这里研究设计的方案从最后测试结果来看,效果比较明显,得到了实际用户的好评,提高了工作效率,当然,还有一些具体细节问题需要解决。随着计算机科学特别是INTERNET技术及数据库技术的发展,我们相信在不久的将来相关技术将发展成熟,并走向日常生活的其它领域,为提高人们的生活质量作出贡献。致谢50 在这里我首先要感谢的是我的指导老师王丽明副教授,在他无微不至的关怀下使我的设计得以顺利进行,他对我设计中的每一个环节都不遗余力地给予帮助。他深厚的学术修养、严谨的治学态度、强烈的责任心和对学生的无私关怀,将令我受益终生。我还要感谢长沙广播电视大学的所有教师,是他们的辛勤教诲,使我学到了丰富的专业知识和为人处世之道,提高了我的自学能力以及分析问题和解决问题的能力。参考文献[1]Ronsoukup:《MICROSOFTSQLSERVER技术内幕》,北京大学出版社。50 [2]耿冲:《SQLServer2000数据库管理》,机械工业出版社。[3]王梅君:《PowerBuilder基础类库技术详解》,电子工业出版社。[4]张长富:《PowerBuilder用户参考手册》,北京希望电脑公司。[5]李匀:《PowerBuilder开发人员指南》,北京希望电脑公司。[6]陆惠思:《软件工程》,电子工业出版社。[7]《数据库系统概论》高等教育出版社。[8]ChangjieTANG,RynsonW.H.QingLI,HuabeiYIN,TongLIandDannyKilis,PersonalizedCoursewareConstruction Basedon WebDataMining,,ProceedingsofTheFirstInternationalConferenceOnWebInformationSystemEngineering,19-21June2000,HongKong,Vol.2(Workshops)p200-207. 基于Web数据采掘的个性化课件构造。[9]PersonalizedDistanceTutorTreeBasedonDataMining,TangChangjie,YinHuabei,Liu,ChangYu,GuoYin,,ZhangTianqing,DepartmentofComputerScience,SichuanUniversity, Chengdu,China610064,个性化远程教学树,_计算机应用 JournalofComputerApplicationVol.20 No.9Sep.2000p5-8  [10]《SQLServermagazine》www.sqlmag.com。50'