conn.execute(sql) ********/执行添加操作
sql=\“学号”=\学号\conn.execute(sql) ********/执行删除操作
关闭数据对象和链接对象
在使用了ADO对象之后要关闭它,因为它使用了一定的服务器资源。通过调用函数文件实现关闭,然后再释放它。
Function GetSQLServerRs( Computer, UserID, Password, Db, source, Cursor ) Dim conn, rs
On Error Resume Next Set GetSQLServerRs = Nothing
Set conn = GetSQLServerConnection( Computer, UserID, Password, Db ) If conn Is Nothing Then Exit Function
Set rs = Server.CreateObject(\ If Err.Number <> 0 Then Exit Function rs.Open source, conn, Cursor, 2 If Err.Number <> 0 Then Exit Function Set GetSQLServerRs = rs
End Function **********/关闭创建的数据对象及链接对象/*********
模块详解
登录分析:
<% if (Request(\ (request(\ response.write\请输入密码或用户名\else If Request(\
Set conn = GetSQLServerConnection( \
Set rs = GetSQLServerStaticRecordset(conn, \ ***/如果当学生用户输入相关登录身份时,连接数据库,并打开student表 /*** <% i=0
while not (rs.eof or i=1) ***/如果该身份在记录中存在,将获得的“id”传递给打开的记录集rs(2),
if rs(2)=request(\ 并且与该记录集中的“password”字段对应的内容做比较/*** if request(\ end if
rs.movenext
169
wend
if i=1 then
rs.moveprevious ***/如果用户名与密码相匹配,那么显示“id欢迎你的到来”/*** response.Write request(\
response.write \欢迎你的到来
\session(\ ***/并且把rs(2)中对应的内容传递给对象(session(“id”)),
在下面页面跳转中该变量不会改变。/***
Else response.write\用户名错误或密码错误\ ***/否则登录失败/***
end if %>
开课情况与选课内容分析:
<% if rs2.eof<>true then
sql=\学号='\ set rs5 =server.CreateObject(\
rs5.open sql,conn,1,1 ***/根据学生登录身份,打开该学生的选课记录表/*** i=rs5.recordcount
if i>=5 then %> ***/判断记录集是否超过5条/***
<% else if rs3.eof=true then ***/否则,有权行选课操作。但需要有以下几个约束条件。
当前所选的课程号不能与记录集中的相同。/***
if date>=rs(2) then ***/当前选课时间要符合开课时间和结束选课时间的要求。
/***
if rs(0) rs3.addnew ***/若满足以上几个约束条件,那么从rs(选课表)中获取相关课程 rs3(2)=rs2(0) 内容添加到rs3记录集中(学生选课记录表)。/*** rs3(1)=request(\课程号\ ……………. ……………. rs3(4)=rs2(4) rs3.update rs(0)=rs(0)+1 ***/在学生选课成功后,对于选课表中的“实招人数”一栏要做相 rs.update 应的修改。/*** response.write \选课成功 170 response.write \你已选了\ 课记录。/*** response.Write\ response.write \门课 Else %> <% end if Else response.write \你已经选了这门课返\ end if end if end if %> 选课记录: <% For i=0 to rs3.Fields.Count-1 Response.Write \ Next while not rs3.eof ***/根据session(\的传递,在学生选课记录表中找出对应的 response.Write \ 记录集,并通过循环的方式在页面中显示数据库的内容: response.Write rs3(0) 学生名,课程名,课程号,班级,系别等/*** …………………. …………………. …………………. 171 response.Write \ response.Write rs3(4) response.Write \ %> rs3.movenext wend %> 学生报名管理: <% dim stu stu=\student.学生名, class.课程名, student.班级,student.系别 FROM student INNER JOIN grade ON student.学号 = grade.学号 INNER JOIN class ON grade.课程号 = class.课程号 WHERE class.任课老师='\ Set conn = GetSQLServerConnection( \ Set rs = GetSQLServerStaticRecordset(conn, stu) if rs.eof then response.write \华文行楷>\ response.Write \对不起暂时还没有学生选你的课程如有意见请跟管理员联系\ response.write \ else session(\%> ***/通过student表中的学号与grade表中的学号连接使得student表与grade表相连,同时grade表中的课程号与class表中的课程号连接使得grade表与class表相连。然后,又通过session的变量“teacher”传递登录教师名。打开符合上述几个条件的记录集,如果找不到与上述几条相符的记录集,那么显示“对不起暂时还没有学生选你的课程如有意见请跟管理员联系”/*** <% For i=0 to rs.Fields.Count-1 Response.Write \ Next Response.Write \【删除此学生】【打印】\ while not rs.eof response.Write \ ***/ 用循环的方式将对应的记集在页面中显示出来,并且在 response.Write rs(0) 每一条记录后增加【删除此学生】与【打印】的链接/*** ……………… ……………… 172 response.Write rs(3) response.Write \ %> rs.movenext wend %> 【打印】 此功能本系统中巧妙的运用了ASP中调用word打印语句实现打印功能。这一设计简单又有效。 <% dim stu stu=\学生名, class.课程名, student.班级,student.系别 FROM student INNER JOIN grade ON student.学号 = grade.学号 INNER JOIN class ON grade.课程号 = class.课程号 WHERE class.任课老师='\ Set conn = GetSQLServerConnection( \Set rs = GetSQLServerStaticRecordset(conn, stu) %> <% Response.ContentType =\ response.AddHeader \%> ***/通过用SQL内联语句找出符合打印的的记录集,然后调用ASP中通过连接word打印的语句准备打印。/*** <% For i=0 to rs.Fields.Count-1 Response.Write \ Next while not rs.eof response.Write \ response.Write rs(0) ………………….. ***/在WORD页面中,通过用循环打印的方式,将符合条件的记录 ………………….. 集打印出来/*** ………………….. response.Write \ %> <% rs.movenext wend 173
\ ***/然后,显示“选课成功”,并提示你已有几条选
\ response.write \返回\ else %> <% end if else %> ***/否则一一提示没能成功选课的理由,让用户容易明白失败的原因,这在 script language=\ 代码中能直接反应,这里不做解释/*** MsgBox \对不起,该课程已报满!\ history.back() <% end if