<p> <strong>系统分析</strong> </p><p> 一、主要功能如下:</p><p> 1、个人工资信息浏览;</p><p> 2、修改记录;</p><p> 3、添加记录;</p><p> 4、删除记录。</p><p> 二、系统结构图如下图:</p><p> <img src="/content/uploadfile/200805/2008053117005171.jpg" onclick="get_larger(this)" /></p><p> 三、数据库设计:</p><p> 教职员工工资管理系统采用的是 Access 数据库,数据库名 RSGL 。由于本管理系统是一个很简单的管理系统,所以在 RSGL 数据库中只包含一个表,表名为:教师工资表。表内包含10个字段,其字段名分别为:所在部门、员工编号、员工姓名、基本工资、岗位工资、职位工资、年动工资、养老保险、医疗保险和实发工职。其结构如下图: </p><img src="/content/uploadfile/200805/2008053117005293.jpg" onclick="get_larger(this)" /> <p> 四、主页面结构:</p><p> 本系统的主页面名为 main.asp 。它由上、下两个框组成,上框架链接一个菜单页面。下框用于显示记录信息。其代码如下:</p><code> <html><br /> <frameset rows="100,*" border="0"><br /> <frame name="top" noresize scrolling="no" src="Menu.asp"><br /> <frame name="Bottom" noresize src="list1.asp"><br /> </frameset><br /> <noframes><br /> </noframes><br /> </html></code> </p><p> 五、菜单页面的代码如下:(文件名为:main.asp)</p><p> <code> <html><br /> <head><title>职工工资</title></head><br /> <body bgcolor="#9ccdcd"><br /> <table align="Center" width="70%" border="0"><br /> <caption><font face=隶书 size=6>职工工资管理</font></caption><br /> <tr height="30" bgcolor="#edf5f5" align="center"><br /> <td><a href="list1.asp?no=First" target="Bottom">第一个</a></td><br /> <td><a href="list1.asp?no=Previous" Target="Bottom">上一个</a><br /> <td><a href="list1.asp?no=next" Target="Bottom">下一个</a><br /> <td><a href="list1.asp?no=last" Target="Bottom">最后一个</a><br /> <td><a href="list2.asp" target="bottom">修改</a></td><br /> <td><a href="list3.asp" target="bottom">增加</a></td><br /> <td><a href="list4.asp" target="bottom">删除</a></td><br /> </tr><br /> </table><br /> </body><br /> </html></code><p> <strong>浏览记录</strong></p>
<p> </p>
<p> 一、浏览页面的功能:</p><p> 通过菜单栏上的导航条在浏览器上显示第一条、或上一条、或下一条、或最后一条记录。</p><p> 二、浏览页面的实现过程:</p><p> 1、连接数据库并打开“教师工资”表;</p><p> 2、通过条件判断语句,判断是不是刚打开网页,若是,则显示第一条记录,否则通过由 Request 对象获取的当前记录号,显示相应的记录;</p><p> 3、通过调用 ShowPage(objRS,no) 过程,显示记录;</p><p> 4、关闭记录集和数据库。</p><p> 三、浏览页面的代码如下:</p><code><html><br /><head><title>教师工资表</title></head><br /><body bgcolor="cccc99"><br /><%<br />'定义一个过程,带有两个参数,一个表示记录集,一个表示当前记录号。<br />Sub ShowPage(objRS,no)<br />objRS.AbsolutePosition=no '指定当前记录号<br />'显示单记录(逐个将字段名和字段值赋给变量Date 。然后通过 Recordset 变量的 Write 方法向用户端输出。<br />for j=0 to objRS.Fields.Count-1<br />Data="<tr><td>" & objRS.Fields(j).name<br />Data=Data & "<td>" & objRS.Fields(j).Value & "</tr>"<br />Response.Write data<br />Next<br />End Sub<br />'创建一个连接数据库对象。<br />set conn=server.createobject("adodb.Connection")<br />'通过连接字符串指定了要连接的数据库所使用的提供程序是 Microsoft.Jet.OLEDB.4.o;所连接的数据库名为 rsgl.mdb。<br />CS="Provider=Microsoft.jet.OLEDB.4.0;Data Source="<br />conn.ConnectionString=CS & Server.MapPath("rsgl.mdb")<br />'打开数据库。<br />conn.Open<br />'创建一个记录集。<br />set rs=server.createobject("adodb.recordset")<br />'打开“教师工资”表。<br />rs.open"教师工资表",conn,1,2,2<br />'如果是新打开网页,则第一条记录编号赋给变量 Session("no"),也就是说打开网页时显示的总是第一条记录。<br />if Request("no")="" then<br />Session("no")=1<br />'否则当前记录号由 Request 对象来获取。<br />else<br />Select case Request("no")<br />case "First"<br />Session("no")=1<br />case "Previous"<br />Session("no")=Session("no")-1<br />case "next"<br />Session("no")=Session("no")+1<br />case "last"<br />Session("no")=RS.RecordCount<br />end select<br />end if<br />'当 Session("no") 的值大于记录数时,则 Session("no") 等于记录数。<br />if Session("no")>RS.RecordCount then Session("no")=RS.RecordCount<br />'当 Session("no") 的值小于1时,则 Session("no")值等于1.<br />if Session("no")<1 then Session("no")=1<br />Response.write"<table border=1 align=center cellspacing=0 cellpadding=4 height=270 bgcolor='#9ccdcd'>"<br />Response.write"<tr><td width=100><td width=195>"<br />'调用 ShowPage Rs,Session("no") 过程。<br />ShowPage RS,Session("no")<br />Response.write"</table>"<br />RS.close<br />set RS=nothing<br />conn.close<br />set conn=nothing<br />%><br /></body><br /></html></code><p> 六、小结:</p>
<p> </p>
<p> 1、采用 server 对象的 createobject 方法创建一个连接对象和一个记录集对象;</p><p> 2、采用连接(Connection) 对象的 Open (打开)和 Close (关闭)两个方法打开和关闭一个数据库;</p><p> 3、采用记录集(Recordset) 对象中的 Open 和 Close 两个方法打开和关闭记录集;</p><p> 4、通过 Recordset 对象的 AbsolutePosition 属性来确定记录集中当前记录的顺序位置是第几行记录;</p><p> 5、通过 Request 对象从菜单页面由导航条提交的查询字符串中获取当前记录的书签;</p><p> 6、通过 Session 对象保存会话期中当前记录号。</p><p> <strong>修改记录</strong></p><p> 一、修改记录页面的功能:修改记录。</p><p> 二、修改记录页面的实现过程:</p><p> 1、连接数据库并打开“老师工资”表;</p><p> 2、用修改的记录更改数据库中原有的记录;</p><p> 3、将更改后的记录从数据库中取出反馈给浏览器;</p><p> 4、自动计算实发工资。即当名为 txt 的各文本框中某一个文本框的值被改变时,实发工资文本框中的值将随之改变。</p><p> 5、关闭记录集和数据库。</p><p> 三、修改记录页面的代码如下:</p><code><html><br /><head><title>教师工资表</title></head><br /><body bgcolor="#cccc99"><br /><!-- 创建一个表单 --><br /><form align=center method='post' name=frm1 action='list2.asp'><br /><table border=1 align=center cellspacing=0 cellpadding=2 height=200 bgcolor="#909011"><br /><tr><td width=100><td width=195><br /><%<br />'创建一个 ShowPage 过程,其带有三个参数objRS、on、a,分别表示记录集对象,当前的记录号,修改了的字段值。<br />'此过程的功能是修改后的字段值写入数据库,并通过 Response 对象的 Write 方法将其在浏览器中显示出来。<br />Sub ShowPage(objRS,no,a)<br />objRS.AbsolutePosition=no '指定当前记录号<br />'如果修改了的字段值长度不为 0 .<br />if len(a)>0 then<br />for j=1 to objRS.Fields.Count<br />'则用修改的记录更改数据库中原有的记录。<br />objRS.Fields(j-1).value=a(j)<br />next<br />'更新记录。<br />objRS.Update<br />end if<br />'将更改后的记录从数据库中取出反馈给浏览器。<br />for j=1 to objRS.Fields.Count<br />Data="<tr><td>" & objRS.Fields(j-1).name<br />Data=Data & "<td><input type=text name='txt' value=" & objRS.Fields(j-1).Value & "></tr>"<br />Response.Write data<br />next<br />end Sub<br />set conn=server.createobject("adodb.Connection")<br />CS="Provider=Microsoft.jet.OLEDB.4.0;Data Source="<br />conn.ConnectionString=CS & Server.MapPath("rsgl.mdb")<br />conn.Open<br />set rs=server.createobject("adodb.recordset")<br />'以键盘光标,乐观锁定,方式打开记录集,而且对 Recordset 对象进行批量更新后,查询当前记录的状态是记录被删除。<br />rs.open"教师工资表",conn,1,2,2<br />if Session("no")="" then<br />'如果网页刚打开,则给 Session("no")赋值1。<br />Session("no")=1<br />end if<br />ShowPage RS,Session("no"),Request.form("txt") '调用 ShowPage 过程,以表单提交的Txt中内容修改当前记录<br />Response.write"</table>"<br />RS.close<br />conn.close<br />%><br /><table border=0 align=center height=40><br /><tr><td><input type=submit value="确定修改"><br /></table><br /><!--自动计算实发工资。即当名为 txt 的各文本框中某一个文本框的值被改变时,实发工资文本框中的值将随之改变。--><br /><script for=txt event=onchange language=vbscript><br />w=ccur(frm1.txt(3).value)+frm1.txt(4).value+frm1.txt(5).value+frm1.txt(6).value<br />w=w-frm1.txt(7).value-frm1.txt(8).value<br />frm1.txt(9).value=w<br /></script><br /></form><br /></body><br /></html></code><p> 六、小结:</p>
<p> </p>
<p> 1、采用 server 对象的 createobject 方法创建一个连接对象和一个记录集对象;</p><p> 2、采用连接(Connection) 对象的 Open (打开)和 Close (关闭)两个方法打开和关闭一个数据库;</p><p> 3、采用记录集(Recordset) 对象中的 Open 和 Close 两个方法打开和关闭记录集;</p><p> 4、通过 Recordset 对象的 Update 属性更新记录;</p><p> 5、通过 Session 对象保存会话期中当前记录号;</p><p> 6、通过把 text3 到 text8 六个文本框之值的代数和赋给 text9文本框,自动输出实发工资的数;</p><p> 7、ccur 函数:强制进行货币计算。</p><p> <strong>添加记录</strong></p><p> 一、添加记录页面的功能:添加新增员工的工资信息:</p><p> 二、添加记录页面的实现过程:</p><p> 1、创建一个表单。用于输入记录中各字段的字段值;</p><p> 2、通过列表框中的选中项,将其赋给 txt1 文本框,作为员工编号的头部,并使 txt1 文本框获得焦点;</p><p> 3、当 txt1 文本框失去焦点时,判断此文本框值的长度是否小于5,若是,则弹出一个信息框:“编号太短”,否则将焦点转交给txt2文本框。</p><p> 4、连接数据库并打开“老师工资”表;</p><p> 5、判断“员工姓名”是否输入了,若是,则从记录集中将各字段名读取后赋给数组 an ,并从表单中读取各对象的值赋给数组 bb ;否则,弹出一个信息框:“姓名不能为空”;</p><p> 6、通过 Recordset 对象的 AddNew 方法将 aa 和 bb 两数组中的值添加到记录集;</p><p> 7、通过 Recordset 对象的 Update 方法更新记录集;</p><p> 8、关闭记录集和数据库。</p><p> 三、修改记录页面的代码如下:</p><code><html><br /><head><title>教师工资表</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><br /><body bgcolor="#cccc99" Language=VBScript><br /><!--创建一个表单。用于输入记录中各字段的字段值。--><br /><form method='post' name=frm1 action='list3.asp'><br /><table border=1 align=center cellspcing=1 cellpadding=4 height=200 bgcolor="#909011"><br /><tr><td width=100><td width=195><br /><tr><td>所在部门<td><br /><select id=select1 style="width:100px" name=select1><br /><option value="01">教务处<br /><option value="02">英语教研室<br /><option value="03">语文教研室<br /><option value="04">数学教研室<br /><option value="05">财务处<br /></select><br /><input type=hidden name=hid value='教务处'><br /><tr><td>员工编号<td><input type=text name=txt1 value=""><br /><tr><td>员工姓名<td><input type=text name=txt2 value=""><br /><tr><td>基本工资<td><input type=text name=txt value=""><br /><tr><td>岗位工资<td><input type=text name=txt value=""><br /><tr><td>职务工资<td><input type=text name=txt value=""><br /><tr><td>年动工资<td><input type=text name=txt value=""><br /><tr><td>养老保险<td><input type=text name=txt value=""><br /><tr><td>医疗保险<td><input type=text name=txt value=""><br /><tr><td>实发工资<td><input type=text name=txt value=""><br /></table><br /><!--当名为select1的列表框失去焦点时,则执行<script></script>标签之内的语句。--><br /><script for=select1 event=onblur Language=vbscript><br />i=frm1.select1.selectedindex '将在列表框中选中项的索引号赋给变量i。<br />f=frm1.select1.options(i).text '将在列表框中选中项的文本值赋给变量f。<br />k=frm1.select1.options(i).value '将在列表框中选中项的值赋给变量k。<br />frm1.hid.value=f '将在列表框中选中项的文本值赋给隐藏框的值。<br />frm1.txt1.value=k '将在列表框中选中项的值赋给文本框1的值。<br />frm1.txt1.focus '文本框1获得的焦点。<br /></script><br /><!--当 txt1 文本框失去焦点时,则判断此文本框值的长度是否小于5,若是,则弹出一个信息框:“编号太短”,否则将焦点交给txt2文本框。--><br /><script for=txt1 event=onblur language=vbscript><br />if len(frm1.txt1.value)<5 then<br />msgbox"编号太短"<br />frm1.txt1.focus<br />else<br />frm1.txt2.focus<br />end if<br /></script><br /><%<br />set conn=server.createobject("adodb.Connection")<br />CS="Provider=Microsoft.jet.OLEDB.4.0;Data Source="<br />conn.ConnectionString=CS & Server.MapPath("rsgl.mdb")<br />conn.Open<br />set rs=server.createobject("adodb.recordset")<br />rs.open"教师工资表",conn,1,2,2<br />p=Request.form("txt2")<br />'如果姓名不为空,则读取各字段的名称添加到数组 na 中。<br />if len(p)>0 then<br />redim na(rs.Fields.count-1)<br />for j=0 to RS.Fields.count-1<br />na(j)=RS.Fields(j).name<br />next<br />redim bb(rs.Fields.count-1)<br />bb(0)=Request.form("hid")<br />bb(1)=Request.form("txt1")<br />bb(2)=Request.form("txt2")<br />for j=3 to RS.Fields.Count-1<br />bb(j)=Request.form("txt")(j-2)<br />next<br />'添加一条新记录。<br />RS.AddNew na,bb<br />'更新一条记录。<br />RS.Update<br />end if<br />Response.write"</table>"<br />RS.close<br />conn.close<br />%><br /><table border=0 align=center height=40><br /><tr><td><input type=submit value="确定增加"><br /></table><br /></form><br /><!--当名为 txt 的各文本框中某一个文本框的值被改变时,实发工资文本框中的值将随之改变。--><br /><script for=txt event=onchange language=vbscript><br />w=ccur(frm1.txt(0).value)+ccur(frm1.txt(1).value)+ccur(frm1.txt(2).value)+ccur(frm1.txt(3).value)<br />w=w-ccur(frm1.txt(4).value)-ccur(frm1.txt(5).value)<br />frm1.txt(6).value=w<br /></script><br /> <!--如果当名为 txt 的各文本框中某一个文本框失去焦点时,则判断姓名是否为空,如为空则弹出一个信息框,并将焦点返回给它自身。--><br /><script for=txt event=onblur language=vbscript><br />if len(frm1.txt2.value)=0 then<br />msgbox"姓名不能空"<br />frm1.txt2.focus<br />end if<br /></script><br /></body><br /></html></code><p> 六、小结:</p>
<p> </p>
<p> 1、由表单提交添加的记录;</p><p> 2、采用 server 对象的 createobject 方法创建一个连接对象和一个记录集对象;</p><p> 3、采用连接(Connection) 对象的 Open (打开)和 Close (关闭)两个方法打开和关闭一个数据库;</p><p> 4、采用记录集(Recordset) 对象中的 Open 和 Close 两个方法打开和关闭记录集;</p><p> 5、通过 For 循环语句将记录集中各字段名赋给数组 na ,并将表单中提交的各项值赋给数组 bb ;</p><p> 6、通过 Recordset 对象的 AddNew 方法将数组na 和bb 的值添加到记录集中;</p><p> 7、通过 Recordset 对象的 Update 方法更新记录;</p><p> 8、通过把 text0 到 text5 六个文本框之值的代数和赋给 text6文本框,自动输出实发工资的数值;</p><p> 9、ccur 函数:强制进行货币计算;</p><p> 10、采用信息框函数(MsgBox)弹出一个输出信息框,用于提示客户什么地方输入不正确。</p><p> <strong>删除记录</strong></p><p> 一、删除记录页面的功能:删除离职员工的工资记录:</p><p> 二、删除记录页面的实现过程:</p><p> 1、连接数据库并打开“老师工资”表;</p><p> 2、判断确定按钮是否按下,若是,则删除当前记录;</p><p> 3、更新记录集;</p><p> 4、判断被删除的记录在删除前的指针位置是不是1,若是,则删除后,指针位置仍然回到1;</p><p> 5、判断被删除的记录在删除前的指针位置是不是在最后,若是,则删除后,指针位置仍然回到最后;</p><p> 6、关闭记录集和数据库。</p><p> 三、删除记录页面的代码如下:</p><code><html><br /><head><title>教师工资表</title></head><br /><body bgcolor="#cccc99"><br /><!-- 创建一个表单。--><br /><form method='post' action='list4.asp?YesNo=yes'><br /><table border=1 align=center cellspacing=0 cellpadding=4 bgcolor="#9ccdcd"><br /><tr><td width=100><td width=195><br /><%<br />'定义一个过程。<br />sub ShowPage(objRS,no)<br />'显示当前记录号。<br />objRS.AbsolutePosition=no<br />'显示单条记录<br />for j=0 to objRS.Fields.Count-1<br />'将索引号为 j 字段的字段名赋给变量 Data。<br />Data="<tr height='5'><td>"& objRS.Fields(j).name<br />'将索引号为 j 字段的字段名和字段值赋给变量 Data。<br />Data=Data & "<td>" & objRS.Fields(j).Value<br />'向浏览器输出此字段名和字段值。<br />Response.write data<br />Next<br />end sub<br />'打开一个数据库和记录集。<br />set conn=server.createobject("adodb.Connection")<br />CS="Provider=Microsoft.jet.OLEDB.4.0;Data Source="<br />conn.ConnectionString=CS & Server.MapPath("rsgl.mdb")<br />conn.Open<br />set rs=server.createobject("adodb.recordset")<br />rs.open"教师工资表",conn,1,2,2<br />if Request("YesNo")="yes" then<br />n=Session("no")<br />RS.AbsolutePosition=n<br />rs.delete<br />rs.update<br />end if<br />'当删除的是第1条记录时,则将指针移到删除并更新后的第1条记录,即删除前的第2条记录上。<br />if Session("no")="" then Session("no")=1<br />'当删除是最后一条记录,则将指针移到删除并更新后的最后一条记录上,即删除前的倒数第2条记录。<br />if Session("no")>RS.RecordCount then Session("no")=RS.RecordCount<br />ShowPage RS,Session("no")<br />Response.write"</table>"<br />RS.close<br />set RS=nothing<br />conn.close<br />set conn=nothing<br />%><br /><table border=0 align=center height=30><br /><tr><td><input type=submit value="确定删除"><br /></table><br /></form><br /></body><br /></html></code><p> 六、小结:</p></p><p> 1、通过 For 循环语句,将记录集中各字段名和值赋给变量a ;</p><p> 2、通过 Request 对象,将变量 a 中的值返回给浏览器;</p><p> 3、采用 server 对象的 createobject 方法创建一个连接对象和一个记录集对象;</p><p> 4、采用连接(Connection) 对象的 Open (打开)和 Close (关闭)两个方法打开和关闭一个数据库;</p><p> 5、采用记录集(Recordset) 对象中的 Open 和 Close 两个方法打开和关闭记录集;</p><p> 6、通过 Request("YesNo")="yes" 语句判断是否确定要删除记录,若是,则删除;</p><p> 7、通过 Recordset 对象的 UpDate 方法更新记录集;</p><p> 8、通过Session("no")的值判断删除的是不是第1条记录,若是,则将指针移到删除并更新后的第1条记录,即删除前的第2条记录上;</p><p> 9、通过Session("no")的值判断删除的是不是最后一条记录,若是,则将指针移到删除并更新后的最后一条记录上,即删除前的倒数第2条记录上;</p><p> 10、通过 set RS=nothing 和 set Conn=nothing 语句分别将记录集和数据库清空。;</p><p> <img src="/content/uploadfile/200805/2008053117005249.gif" onclick="get_larger(this)" /><a href="http://tech.ddvip.com/2006-10/11618046459861.html" target="_blank">查看全套"ASP入门基础"教程>>>>></a></p></p>