基于ASP工资查询系统的开发与应用

点赞:16443 浏览:71595 近期更新时间:2024-01-25 作者:网友分享原创网站原创

当前各企事业单位的工资和奖金津贴的发放基本都通过银行怎么发表,一种方案是将工资实发数存入职工的中,单位提供纸质工资单明细, 另一种处理方法是将单位职工工资数据上传至网上银行, 职工开通个人网上银行功能来查询和自行打印个人工资明细清单.第一种方案显然属于传统方式,不符合无纸化办公、增强财务信息公开透明化及财务管理创新.第二种方案职工必须在网上操作自己的银行账户,安全性是一个必须解决的问题,尤其是面对网上各种窃取信息的“ 网银大盗”等木马和病毒的威胁,一旦发生此类资金被的事,单位和个人责任的界定将变得很棘手.笔者认为现实可行的是采用第三种方案,在企事业单位内部局域网上开发一款工资查询系统, 这样既能满足职工安全方便的查询,使得广大职工能及时了解自己每月工资发放状况,可按需要随时到网上查询或打印出自己的工资单, 且网上工资电子数据也便于职工保留备份, 又能进行无纸化办公、节约成本、减轻财务人员负担.职工在及时了解自己的工资发放情况下,能与财务部门相互监督,发现错误也能及早解决,同时也便于各部门统计分析自己部门职工成本状况.通过这种财务信息逐步公开透明化,既能增加广大员工的知情权,有助于提高员工的激励效果,又能使单位在财务管理水平上上一新台阶.

基于ASP工资查询系统的开发与应用参考属性评定
有关论文范文主题研究: 关于工资的文章 大学生适用: 硕士学位论文、自考毕业论文
相关参考文献下载数量: 60 写作解决问题: 写作技巧
毕业论文开题报告: 论文模板、论文摘要 职称论文适用: 期刊发表、高级职称
所属大学生专业类别: 写作技巧 论文题目推荐度: 免费选题

从我国财务软件发展状况来看,在网络飞速发展的今天,也要求财务软件能着眼未来,在管理思想、体系结构上适应组织扁平化发展趋势,在网络化发展方向上满足远程查询、远程报表传送等功能,为单位创建便捷高效的财务资源应用共享平台.

一、系统拓扑结构

系统的数据存放有两种方式,一是存放在单位的网络中心,财务部门不需要维护WEB 数据怎么写作器, 只需每月将工资数据上传至网络中心即可, 另一种方式是财务部门自行备置WEB 数据怎么写作器,这样可以将ADO 的Connection 对象数据连接定义成系统数据源,直接连接到工资系统中,可实现数据的实时查询.用户登录时,须通过用户名及口令、SQL 驻入及用户身份检查, 然后根据相应的身份转入对应的功能, 系统设置查询权限, 分别为一般用户、部门级和单位级用户,系统管理员具有增加、删除、锁定用户权限, 设置工资查询项目以及用户权限设定功能.系统拓扑结构示意图如图1所示.

二、系统设计

(一) 数据结构数据结构设计主要是两张表, 在这里首先需定义两个ACESS 数据库,分别为存放工资数据的GZMX.MDB 和存放用户信息、定义工资查询项目的INFO.MDB,其中GZMX.MDB 包含两次工资数据表gz1 和gz2,INFO.MDB 中包含三张表,即用户信息表user 、定义第一次工资查询项目表gzstru1 和第二次工资查询项目表gzstru2 .这样无论单位存放在GZMX.MDB 中的工资数据结构是怎样的, 只要在工资查询项目表中按对应的字段来定义查询项目就可以了,实现查询与单位工资数据结构的相对无关性.

(1) 用户信息表结构设计.用户信息表user 的结构如表1所示:

这里的用户代码(userdm) 对应工资数据表中的职工编号, 因为工资数据表中职工编号是唯一的,用户初始口令(userpwd) 也是职工编号,部门代码(bmdm) 对应的是工资数据表中的部门代码, 只有身份是‘2’即部门级用户才需要设置,身份(qx) 即用户的权限,系统定义如下:‘0’为系统管理员、‘1’为一般用户、‘2’ 为部门级用户、‘3’为单位级用户、‘4’为锁定用户.如某个用户的身份是‘1’,那么该用户只能查询自己的工资信息,如果其身份为‘2’,其查询的数据是该用户所在部门所有职工工资信息,如果其身份为‘3’,则可查询所有职工工资信息.

(2) 工资查询项目表设计.该表的功能是定义显示查询用户实际看到的工资项目,gzstru1 和gzstru2 结构如表2所示:

序号(xh) 的作用是调整工资项目显示的顺序,即工资数据表中物理顺序不需作任何变动, 就可以按需要调整显示职工查询的工资项目顺序,工资项目名称(xmmc) 是显示查询用户看到的工资表头名称,工资字段代码(gzdm) 则完全对应于工资数据表gz1 和gz2 中的字段名.

(3) 工资数据结构.由于各单位工资结构差别较大, 但一些基本项目存在共性, 如gz1 和gz2 中必须含职工编号和月份这两个字段.其中职工编号是关键字key,月份的作用是可分月查询.

(4) 系统的E-R图.具体如图2所示.

(二) 用户端设计从E-R 图中可以看出, 以用户登录的用户代码作为关键字段在工资数据表(gz1 或gz2) 中查询和定位记录, 然后按工资查询项目表(gzstru1 或gzstru2) 中定义的字段显示.用户端主要是定义两个checked 选项(第一次和第二次工资) 和一个select 下拉列表(1~12 月和全部显示, 默认为全部显示,其optionvalue等于'yjp') , 登录时, 将user 表中该用户对应的部门代码、身份以及登录时的用户代码和选择的查询月份分别存放于四个session 中,形成全局变量,便于后面调用.

(三) 关键设计具体包括以下几种设计: (1) 定义SQL 查询语句.为了使系统在查询时能汇总计算应发数和实发数,需声明两个RecordSet 实例,下面是定义第一次工资的

SQL 查询语句源代码,放置在一个过程中,第二次工资查询类同.

<%Subcx_func1(rs1,rs2)

Setrs1等于Server.CreateObject("ADODB.RecordSet")

Setrs2等于Server.CreateObject("ADODB.RecordSet")

sqlstme1 等于 "SELECT * from gz1 where s3等于'"&Userdm&"' and

rq等于'"&onth&"'"

‘以上是一般用户按月查询, 其中:s3 为gz1 表中职工编号、rq 为工资月份、bmh 为部门代码,以下类同.

Sqlstme2等于"SELECT*fromgz1wheres3等于'"&Userdm&"'" ‘一般用户不分月查询

sqlstme21 等于"SELECTsum(s24) as hzyfs,sum(s38) as hzs from gz1wheres3等于'"&Userdm&"'"

‘汇总gz1 的应发数和实发数ifsession("gztimes")等于"V1"andsession("onth")<>"yjp"then

rs1.opensqlstme1,conn1,3,3

rs2.opensqlstme21,conn1,3,3

endif ‘分月查询

ifsession("gztimes")等于"V1"andsession("onth")等于"yjp"then

rs1.opensqlstme2,conn1,3,3


rs2.opensqlstme21,conn1,3,3

endif

‘不分月查询

endsub%>

(2) 定义显示过程.显示过程分两部分, 第一部分是显示定义在工资查询项目表的工资项目名称,其源代码如下:

<%subfirst_showstru()%>

<!--#includefile等于"conn.asp"-->‘是定义连接INFO.MDB .

<%i等于0

Setrs等于Server.CreateObject("ADODB.RecordSet")

sql等于"select*fromgzstru1orderbyxh"

rs.opensql,conn,1,3

ifrs.bofandrs.eofthen

errmsg等于errmsg+"<br>"+"<li> 当前没有记录!"

callerror()

response.end

endif%>

<h2 align等于"center"><b><font color等于"#3399FF"><% 等于session

("username")%></font><font color等于"#0000FF">__<%等于cint (year(cstr

(date ())))%> 年度第一次工资查询结果</font></b></h2> <hr

align等于centersize等于1width等于150%color等于"#00FFFF">

<table border等于1 cellpadding等于0 cellspacing等于0 width等于150%

align等于"center" bordercolor等于"#0099cc">

<%dowhilenotrs.eof%>

<tdalign等于centerwidth等于3% ><%等于rs("xmmc")%></td>

<%i等于i+1

rs.movenext

loop

rs.close

setrs等于nothing

conn.close

setconn等于nothing%>

</table>

<%endsub%>

第二部分是显示工资数据明细,其源代码如下:

<%subfirst_showmx()

dimgz_field%>

<!--#includefile等于"cx_conn.asp"-->‘是定义连接GZMX.MDB

<!--#includefile等于"cx_function.asp"-->

<table border等于1 cellpadding等于0 cellspacing等于0 width等于160%

align等于"center" bordercolor等于"#0099cc">

<tr>

<%callcx_func1(rs1,rs2)

dowhilenotrs1.eof%>

<tr>

<!--#includefile等于"conn.asp"-->

<%sql1等于"selectgzdmfromgzstru1orderbyxh"

setrs等于conn.execute(sql1)

dowhilenotrs.eof

gz_field等于rs("gzdm")%>

<tdalign等于centerwidth等于3%class等于td3><%等于rs1(gz_field)%></td>

<%i等于i+1

rs.movenext

loop%>

</tr>

<%rs.close

setrs等于nothing

conn.close

setconn等于nothing

i等于i+1

rs1.movenext

loop%>

</tr>

</table>

<%response.write"<divalign等于center><br> 应发数合计:"

response.writers2("hzyfs")

response.write" 实发数合计:"

response.writers2("hzs")

response.write"</div>"

rs2.close

setrs2等于nothing

endif

rs1.close

setrs1等于nothing

conn1.close

setconn1等于nothing

endsub%>

(3) 具体调用设计.按前述将显示第一次、第二次工资查询项目名称和显示查询明细数据分别定义在四个过程中, 在此只要分别调用这四个过程即可.

<%callcx_func1(rs1,rs2)

Ifrs1.eofthen%>

<center><table width等于"250" border等于"1" cellpadding等于"10"

height等于"80"><tr><td>

E-accounting!"#$$%&’()’*

E 化会计

<center><font size等于'5' color等于'#FF0000'><% 等于session ("username")%>:</font></center><br></td></tr>

<tr><td>

<%response.write"<center><fontsize等于'5' color等于'#FF0000'> 对不起!您要找的工资信息还没有发布! </font></center>"%>

</td></tr></table></center>

<%rs1.close

setrs1等于nothing

else

ifsession("gztimes")等于"V1"then

callfirst_showstru()' 调用第一次工资查询项目

callfirst_showmx()' 调用第一次工资明细数据

else

callsecond_showstru()' 调用第二次工资查询项目

callsecond_showmx()' 调用第二次工资明细数据

endif

endif%>

查询运行效果图如表3所示.

三、安全性设计

该系统利用第三方ASP 加密软件对源代码进行了加密, 对提交表单request.Form() 中含SQL 关键字和在地址栏直接提交查询request.ServerVariables("QUERY_STRING") 都作了过滤, 能有效地避免驻入式攻击和保护源代码, 安全性得到较好的保障.同时该系统是运行在单位局域网内部, 也能受到单位网管中心防火墙保护.另将INFO.MDB 和GZMX.MDB 的扩展名改成ASA, 并将数据库放置在一个没有规律的深层目录结构树下, 可防止对虚拟目录的识别及被盗链接下载.该系统开发的主要特色或创新之处是自定义工资查询项目,ASP 加密和防驻入式攻击, 使软件具有广泛的适应用和安全性, 同时也为单位节约了一笔购置软件的费用, 节约了人力和物力.实践证明该解决方案是可行和安全的.