[摘要]本文设计了一个网上商品交易系统。作为虚拟社区的一部分,系统模拟现实生活中人们的市场行为,为社区用户提供购销服务。利用该系统,用户既可发布和查询供求信息,又可实时在线交流,表达购销意向,从事购销活动,...
本文设计了一个网上商品交易系统。作为虚拟社区的一部分,系统模拟现实生活中人们的市场行为,为社区用户提供购销服务。利用该系统,用户既可发布和查询供求信息,又可实时在线交流,表达购销意向,从事购销活动,从而实现在线交易。 
系统以Windows NT 4.0为平台,采用IIS 4.0做Web服务器,MS SQL Server 7.0做数据库服务器,数据库中设有用户表、供求信息表和成交记录表,三个数据表记录有关的交易数据,开发工具采用HTML、ASP和JavaScript,部分程序如下。 
用户身份认证子系统
系统采用会员制,所有用户必须首先注册,才能进入市场。对用户进行分级管理,根据不同的用户级别决定用户所登记的供求信息发布时间的长短。通过用户名和密码控制用户的登记行为和交易行为。该子系统主要由程序LOGIN.HTM、 CHECK.ASP完成。
提供用户登录界面 
//LOGIN.HTM
…… 
< FORM action=“check.asp" method= 
“post" name=“form1" target=“_top" > 
用户:< INPUT name=“username" size=“16" >< br > 
密码:< INPUT name=“userpd" type= 
“password" size=“16" >< br >
< INPUT type=“submit" value=“进入" >&nbsp;&nbsp;
< INPUT type=“reset" value=“重写" > 
……  
对用户登录信息进行合法性验证并自动登记新用户 
//CHECK.ASP
…… 
’处理已经注册用户的操作 
if not rs.eof then
’密码不正确 
if userpd#trim(rs(1).value) then
response.write “< title >登录出错提示< /title >< br >" 
response.write “< center >“用户名”和 
“密码”不匹配!< /center >< br >" 
response.write “原因与处理办法:< br > 
1.如果您是第一次登录,则是该用户名已经被他人注册过! 
您只能换其他名字注册;< br >" 
response.write “2.如果您以前曾经用该名字注册成功, 
那么是密码错误;< br >" 
response.write “3.如果密码没有问题, 
则可能是您的用户名已经被别人盗用, 
并且盗用者更改了密码" 
response.write 
“请与< a href=mailto:nicstaff@lyac.edu.cn > 
管理员< /a >联系。" 
response.write “< a href=‘
javascript:history.go 
(-1);' >点击这里进行修改< /a >< /body >" 
response.end 
else '登录正确,进入市场 
response.redirect “market.htm" 
end if 
'处理未注册的新用户 
else
sql1=“insert park_users values 
(‘“&username&"',‘“&userpd&"', 
getdate(),getdate(),1)" 
sql2=“insert park_online values 
(‘“&username&"',‘“&ip&"',getdate())" 
conn.execute(sql1) 
conn.execute(sql2) 
response.write “< center > 
!!!欢迎您光临!!!< /center >< br >" 
response.write “< center >您的用户名是:” 
&request.form(“username")&“ ”& 
“密码是:”&request.form(“userpd")&“< br >" 
response.write “再次光临您可继续使用以上数据! 
< br >< /center >" 
end if 
……  
供求信息查询子系统
用户通过本子系统可得到详细的供求信息,包括供求的商品名称、价格、数量、联系方法以及有关描述,甚至图片、音频和视频。用户可采用分类浏览和关键词查询两种方式,对于关键词查询,只要输入商品名称或表示商品用途、形状等的单词或短语,系统即可通过专门的查询算法,对数据库进行准全文式的模糊查询。本子系统主要由程序SEARCH1.ASP、SEARCH2.ASP和LINK.ASP完成。
接受并完成用户查询请求 
//SEARCH1.ASP
…… 
’来自查询界面的数据 
c_type=request.querystring(“c_type")
goods_class=request.form(“D1") 
s=request.form(“T1") 
set conn= server.createobject(“adodb.connection")
’打开数据库 
conn.connectionstring=“driver={sql server}; 
server=;uid=;pwd=;database="
conn.open
set session(“rs")=server.createobject 
(“adodb.recordset") 
’构造检索算法 
if goods_class=“全部" then
sql=“select goods_name,goods_class, 
description,publisher,contact,pub_date from market_goods 
where client_type=‘“&c_type&"' and
goods_name like ‘%“&s&"%'" 
else 
sql=“select goods_name,goods_class, 
description,publisher,contact,pub_date from market_goods
where client_type=‘“&c_type&"' and goods_class= 
‘“&goods_class&"' and goods_name like ‘%“&s&"%'" 
end if 
…… 
if c_type=“s" then 
response.write “< center >卖方市场< /center >" 
else 
response.write “< center >买方市场< /center >" 
end if 
…… 
< !--#include file=“link.asp"-- >  
当检索结果超过一屏时,完成其他屏的显示 
//SEARCH2.ASP
…… 
for j=1 to session(“rs").pagesize 
response.write“< tr >" 
response.write “< td >”&session 
(“rs").absoluteposition&“< /td >" 
for i=0 to session(“rs").fields.count-1 
response.write “< td >”&session 
(“rs")(i).value&“< /td >" 
next 
response.write “< /tr >" 
session(“rs").movenext 
if session(“rs").eof then 
exit for 
end if 
next 
…… 
< !--#include file=“link.asp"-- >  
辅助完成多屏显示检索结果 
//LINK.ASP
< % 
if session(“rs").absolutepage >0 then 
nowpage=session(“rs").absolutepage-1 
else 
nowpage=session(“rs").pagecount 
end if 
response.write “< font size=2 > 
 当前页数:”&nowpage&“ " 
response.write “ 总页数:”&session 
(“rs").pagecount&“ " 
response.write “ 总记录数:”&session 
(“rs").recordcount&“ " 
response.write “ 每页记录数:”&session 
(“rs").pagesize&“< /font >< br >" 
for i=1 to session(“rs").pagecount 
if i< >nowpage then 
response.write “< a href=”“search2.asp?page= 
”&i&“ ”“ >”&i&“< /a >"&“ " 
else 
response.write i&“ " 
end if 
next 
% >   
关键词:一个在线交易市场方案的设计与完成(一)