首页 - 电子商务 - 校园网站设计(3)  
  关于我们  
网站建设
网站推广
电子商务
联系我们

校园网站设计(3)

2007-10-19 14:06:38
3.2.3界面设计与重点代码的设计

   网上图书馆系统有两种用户,一是管理员。另一种是只允许使用图书馆系统,而没有管理功能的一般用户。访问者进入网站,首先要进行登录,如下图所示。登录页面(index.asp)



访问者输入E-mail地址和密码来登录,然后单击“登录”按钮。输入的数据提交后与数据库中的用户表进行匹配。
须创建一个记录来保存基于访问者登录的用户信息
set RSFindEmp = conn.Execute("select EmpID, Manager from LibEmps where " _
& "EmailAddress = '" & Request.Form("EmailAddress") & "' and " _
& "Password = '" & Request.Form("Password") & "'")
if RSFindEmp.EOF then
TheMessage = "密码或email地址不对."
else
Session("EmpID") = RSFindEmp("EmpID")
Session("Manager") = RSFindEmp("Manager")
Response.Redirect "../yk.htm"
end if
表单域EmailAddress和Password 用于Where了句中来获取一个记录。如果访问者输入了一个无效的用户名,则记录集中将不会返回匹配的记录。我们可以通过查看EOF标记来判断一个记录集是否为空。为空,则访问者将被拒绝进入该系统。不为空,则访问者的EmpID值和Manager值将从记录集中返回。写入Session 变量, 变量将在整个网站的所有网页中都是有效的。这些变量的存在与否及其取值将用于确定是否允许进入一个特定的网页,同时也用于访问者进行书目的归还和借阅操作。

图书馆菜单页面
图书馆菜单页面包含指向其他4个页面的链接:管理页面、搜索页面、图书列表页面和主页面。还有一个可显示用户所借书籍的按纽。如果访问者是图书馆管理员,则菜单界面如图所示。如果访问者不是图书馆管理员,则看到如图所示的界面。非管理员的访问者的界面上没有指向管理员菜单页面的链接。

  
  实现办法:访问者登录时在登录页面上的创建的会话变量Session 用于从数据库中获取访问者的有关信息,表示它是否是管理员。如果值为1,就表明访问者是一个管理员,则用如下代码写入一个指向管理员页面的链接:
<% If Session("Manager") = 1 then %>
<A HREF="../html/management_menu.asp">管理员菜单</A>
<% end if %>
通过按纽B1是否为空来判断要不要显示用户所借图书,利用一个记录集来获取访问者已经借出了的所有图书的列表。
if NOT isempty(Request.Form("B1")) then
set RSBooks = conn.Execute ("select BookID, Title from LibBooks where " _
& "CheckedOutTo = " & Session("EmpID"))
end if
再用循环语句将所借书以表格形式显示出来。
<table border=1 width="90%" >
<% if NOT isempty(Request.Form("B1")) then
Do Until RSBooks.EOF%>
<TR >
<TD WIDTH=40% height="20"><% Response.Write RSBooks("Title") %></td></tr>
<% RSBooks.MoveNext
loop
end if
%>
</table>
循环将遍历Rsbooks记录集中的每个记录,直到该记录集结束:
该网站中的所有ASP页面都会在访问者访问之前对其进行登录检查。这样就可以避免访问者通过输入某个页面地址然后在没有登录的情况下直接进入该页面的情况发生。此外,每个管理页面都要确认访问者是管理员。

管理菜单页面

管理菜单页面有一个HTML表单,根据选择的按钮的不同,可以进行5种不同的操作:图书的归还、图书的编辑、图书的删除、图书的添加和类别的添加。不管选择了哪一个按钮,该表单都提交人其自身进行处理。
要进行图书的归还、图书的编辑、图书的删除三种操作,须先进行搜索,找到该书后,由图书Book.asp返回一个链接:
<% If Session("Manager") = 1 then %>
<A HREF="../html/management_menu.asp?title=<% response.write RSBooks("Title") %>&BOOKID=<% response.write RSBooks("BOOKID") %>">管理员菜单</A>
<% end if %>

而管理者页面通过下列语句
<%=request.querystring("title")%>
<inputzztype=hidden name="BOOKID1"value="<%=request.querystring("BOOKID")%>>





这样就将所找到的书的书号BookID、书名Title传递管理者页面。再进行所须操作。共有3个不同的铵纽,可以进行3种操作。若单击“修改”钮:
则重定向到编辑图书页面,同时把Bookid 传递给该页面。
Response.Redirect "./edit_book.asp?BOOKID="&request("BOOKID1")
将其他的情况需要建立到数据库的连接:
set conn = server.createobject ("adodb.connection")
Conn.Open("FILEDSN=c:\Program Files\Common Files\ODBC\Data Sources\ms access database.dsn")
if NOT isempty(Request.Form("Delete")) and request("BOOKID1")<>"" then
conn.Execute "delete from LibBooks where BOOKID ="&request("BOOKID1")
end if
if (NOT isempty(Request.Form("checkin"))) and request("BOOKID1")<>"" then
conn.Execute "update LibBooks set checkedoutto= 0, status= 'Available' where BookID="&Request("BOOKID1")
end if



页面中的添加新的种类部分包含一个文本控件和一个选择控件。其中选择控件是用所有已经存在的类别列表进行填充的,包括特殊类别 Top level ,该类别表明当前类别是处于类别层次结构中的最顶层。代码如下:
先用一个记录集来填充父类别选择控件:
set RSCategories = conn.Execute("select CategoryName from LibCategories order by CategoryName")
再用下列循环语句:
<%
Do Until RSCategories.EOF
%>
<OPTION VALUE="<% response.write RSCategories("CategoryName") %>"><% response.write RSCategories("CategoryName") %></OPTION>
<%
RSCategories.MoveNext
Loop
%>
遍历RSCategories记录集中的每个记录,并作为一个选项添加到列表中,而记录集中CategoryName 同时作为显示值和传递值:
本页面还包含一个指向添加图书页面的链接。
搜索结果页面

搜索页面的代码获取与访问者查找规则相匹配的图书,然后将这些图书显示给访问者。
搜索页面上的表单包含一个选择控件和一个文本控件。选择控件中的选项是用可搜索 的字段填充的:
需要用一个记录集来保存与访问者的查找规则相匹配的记录:
set RSBooks = conn.Execute("select BookID, Author, Title, Subject from LibBooks where " _
& Request.Form("SearchField") & " Like '%" & Request.Form("SearchCriteria") & "%'")

注意:,符号%表示的是一个广义搜索。这一点类似于ACCESS中的符号*。
然后将所找到的书以表格形式显示出来。代码如下:
<% Do Until RSBooks.EOF %>
<TR VALIGN="top" ALIGN="left">
<TD WIDTH=40% height="20"><B>书名:</B> <A HREF="../html/book.asp?BookID=<% Response.Write RSBooks("BookID") %>"><% Response.Write RSBooks("Title") %></A></TD>
<td width=20% height="20"><B>著者:</B> <% Response.Write RSBooks("Author") %></td>
<td width=30% height="20"><B>主题:</B> <% Response.Write RSBooks("Subject") %> </td>
<% RSBooks.MoveNext
Loop %>
图书页面

图书页面的代码显示图书的有关信息,以及管理图书的出借操作。
该页面通过Querystring 传递BookID
if isempty(Request.QueryString("BookID")) then
Response.Redirect "./search.html"
end if

如果其中不存在,则访问者将被重定向到搜索页面:
如果同时传递表单中包含的变量Action不为空,则表明访问者正借阅该图书:
if Not isempty(Request.QueryString("Action")) then
在这种情况下,需要将图书状态改为 Checkout, 同时需要将Checkedoutto 字段修改为该访问者:
conn.Execute "update LibBooks set Status = 'Checked Out', " _
& "CheckedOutTo = " & Session("EmpID") & " where BookID = " _
& Request.QueryString("BookID")
Response.Redirect "./library_menu.asp"
end if
然后将该访问者重定到图书馆菜单页面:
下一步,利用图书的状态来确定不同的链接
未借出时链接如下:
if RSBooks("status") = "Available" then
LinkText = "<A HREF=""../html/book.asp?Action=CheckOut&BookID=" _
& Request.QueryString("BookID") & """>借这本书</A>"
如果图书已经借出,就创建一个不同的消息,并将链接设置为指向Library menu 页面:
LinkText = "<A HREF=""../html/library_menu.asp"">图书已出借,返回主菜单。</A>"
最后根据是否是管理员,显示管理员菜单链接。
<% If Session("Manager") = 1 then %><A HREF="../html/management_menu.asp?title=<% response.write RSBooks("Title") %>&BOOKID=<% response.write RSBooks("BOOKID") %>">管理员菜单</A><% end if %>

3.3网上评优投票系统
3.3.1功能:
能实现全校性的评选,快捷、公平,且有效,不允许做票。
3.3.2组成构造
这个系统由3个部分组成——投票页面vote.htm ,处理投票结果的脚本,显示投票页面 。
3.3.3数据表的设计:


3.3.4界面设计与重点、难点代码设计
投票页面

该页面是一个纯HTML文件,它让用户选择自己想选举的候选人,并填写自己的详细资料,以确认投票的有效性。页面显示如图所示。


表单处理脚本
在vote.htm中各项数据都填写完毕后,单击确定投票按钮,表单的数据就被提交,
本次评优共有4个候选人,但只能选两个。故用复选框。
投票的有效性通过是否是本校学生,且是否投过票来判断。
if request("passno")<>"" then
sql="select * from stud where password="&"'"&request("passno")&"'" &"and yitu=0"
set rs=cn.execute(sql)
if rs.eof then%>
<h2 align=center><%response.write"你无权投票"%></h2>
本设计允许少选,不允许多选。通过判断Vote投票界面传递过来的复选按纽值的长度看是否多选。
vo=request("cand")
if len(vo)>4 then%>
<h2 align=center><%response.write "多选了,无效"%></h2>

然后根据所投的票将对应候选人的投票结果字段加1,同时将该投票人的已投字段置为1。
sqq="update stud set yitu=1 where password="&"'"&request("passno")&"'"
cn.execute(sqq)
if instr(vo,"1") then
cn.execute("update stud set result=result+1 where name='李宁'")
end if
if instr(vo,"2") then

cn.execute("update stud set result=result+1 where name='杨兰'")
end if
if instr(vo,"3") then
cn.execute("update stud set result=result+1 where name='江道明'")
end if
if instr(vo,"4") then
cn.execute("update stud set result=result+1 where name='段启文'")
end if%>
显示当前投票情况show.asp
由于投票处理页面已经完成了绝大部分的工作,所以 显示结果页面就很简单了,其功能是从 Stud表文件中读取候选人所得票数,显示在页面上。
页面显示如图

值得注意的代码主要有以下几处:
该页面有自动刷新功能,使在线用户可以尽快的看到最新的选举情况。我们这里设定每隔30秒钟自动刷新一次。
<meta http-equiv="refresh" content="10;URL=show.asp">

显示投票时,我们采用了while循环,把候选人及其得票数,整齐地显示在一个表格中,这种技术在数据库查询结果的显示中也经常用到。代码如下:
<%while not hs.eof %>
<tr>
<td width="100%"><center>
<font color="#8000ff"><big>
<%=hs("name")&" "&hs("result")&"票"%>
</big> </font>
</center>
</td>
</tr>
<%hs.movenext%>
<%wend%>
3.4达级考试在线查分系统与计数器的制作
3.4.1功能:
它提供了在线查看成绩。考生可以在网上使用这一系统,通过输入准考证编号来查询达级考试的结果。
3.4.2数据表的设计
与评优系统共用STUd表,表设计同上。
3.4.3界面设计与重点难点代码的设计
该模块需要查询者输入准考证号后来查看结果。若ID1不为空时,表示有表单输入,开始查询数据库。使用 SELECT的SQL指令查询数据库的数据。先设定SQL指令,查询ID符合准考证编号Request.Form("ID1")的数据,下个“Execute”指令,即可开始执行存取、查询数据的动作了。并将查询结果储存到Recordsets组件RS中。
IF Request.Form("ID1")<>"" THEN
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("FILEDSN=c:\Program Files\Common Files\ODBC\Data Sources\ms access database.dsn")
SQL = "SELECT name,id,score FROM stud WHERE id='" & Request.Form("ID1") & "'"
Set RS = Conn.Execute(SQL)

若考试通过,则显示考试的结果,包括姓名、准考证编号、总分和考试结果,分别由RecordSets 组件的RS(0)、RS(1)、RS(2)、RS(3)得到。FS.Field.Count表示RecordSets组件的域的总数,由“for I=0 to RS.Fields.count-1”,取得RS(I)各域的数据。配合 <Table> 表格的HTML语法,将结果填入表格的各单元格中。 若还有下一个数据,就使用RS.MoveNext 移到下一个位置。

3.4.4页面访问计数器的制作
利用文件处理组件FILESYSTEM的强大功能来制作,比用Application对象计数器要好,Application计数器当有20分钟没有人连上该网页或关机时,计数器会被归零。而文件计数器却不会因时间而消失。我用Count.txt存放访问人次。代码如下:
whichfile=server.mappath("pic\count.txt")
set myfile=server.createobject("scripting.filesystemobject") 创建一个
set thisfile=myfile.opentextfile(whichfile) 组件对象

visit=thisfile.readline
thisfile.close 读取计数器数据文件Count.txt中的计数数据
visit=visit+1 记录自加一次
length=len(visit)
for i=1 to length
response.write "<img src="&mid(visit,i,1)&".jpg></img>" 将记录的数据用图片显示出来
next
set thisfile=myfile.createtextfile(whichfile,1) 将新计数数据写入文件thisfile.writeline(visit)
set myfile=nothing
数字图片我利用PHOTOSHOP中的文字特效制作了9个立方数字:



四.系统的使用说明与安装
4.1运行环境要求
Windows98
Personal Web Server 3.0(PWS)
Microsoft? Access 2000 (9.0.2812)

4.2安装设置
A. 将本网站拷贝到硬盘上的某一目录下,如:拷贝至c:\y1下。
B. 运行PWS,将默认的Web站点主目录设置为该目录,如上例应为c:\y1;
具体步骤:
a. 选择“高级”项;
b. 单击“编辑属性”按钮,在出现的“编辑属性”对话框中的“目录”项中填入“c:\y1”,其他不变,确定;

C. 设置启动默认文档为:yy.asp

致谢
通过这次毕业设计,使我感到高科技、新知识的力量。这次毕业设计过程中,得到了长沙市工商职业中专学校的大力支持,给我提供了舒适的工作学习环境,也得到了科大老师、教授的精心指导,在此表示衷心的感谢!


五.参考文献

[1]李世杰 Active Server Pages(ASP)3.0 网页设计手册 北京:清华大学出版社 1999
[2]前沿电脑图像工作室 巧学巧用Dreamweaver、Fireworks、Flash制作网页 北京:人民邮电出版社
[3]ASP入门与实例演练薄 小志编著 中国青年出版社
责任编辑:
相关文章
 
联系电话:021-51872701 51302668 51302669 上海旭强信息科技有限公司 版权所有