[返回]
计算机世界2000年第49期

一个在线交易市场方案的设计与实现

莱阳农学院 徐鹏民 盖凌云 李常先

  本文设计了一个网上商品交易系统。作为虚拟社区的一部分,系统模拟现实生活中人们的市场行为,为社区用户提供购销服务。利用该系统,用户既可发布和查询供求信息,又可实时在线交流,表达购销意向,从事购销活动,从而实现在线交易。

系统以 Windows NT 4.0为平台,采用 IIS 4.0做 Web服务器, MS SQL Server 7.0做数据库服务器,数据库中设有用户表、供求信息表和成交记录表,三个数据表记录有关的交易数据,开发工具采用 HTML、 ASP和 JavaScript,部分程序如下。

用户身份认证子系统

系统采用会员制,所有用户必须首先注册,才能进入市场。对用户进行分级管理,根据不同的用户级别决定用户所登记的供求信息发布时间的长短。通过用户名和密码控制用户的登记行为和交易行为。该子系统主要由程序 LOGIN.HTM、 CHECK.ASP完成。

提供用户登录界面

//LOGIN.HTM

……

用户:

密码:

response.write "

"用户名 "和 "密码 "不匹配!"

response.write "原因与处理办法:"

1.如果您是第一次登录,则是该用户名已经被他人注册过 !您只能换其他名字注册;

"response.write " 2.如果您以前曾经用该名字注册成功,那么是密码错误;

"response.write " 3.如果密码没有问题,则可能是您的用户名已经被别人盗用,并且盗用者更改了密码 "

response.write "请与管理员联系。 "

response.write "点击这里进行修改 "

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 "

!!!欢迎您光临!!!

"

response.write "

您的用户名是: "& request.form(" username")& " "&

"密码是: "& request.form(" userpd")& "

"

response.write "再次光临您可继续使用以上数据!

"

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 "

卖方市场

"

else

response.write "

买方市场

"

end if

……

response.write" "

response.write " "& session(" rs").absoluteposition& " "

for i=0 to session(" rs").fields.count- 1

response.write " "& session(" rs")(i).value& " "

next

response.write " "

session(" rs").movenext

if session(" rs").eof then

exit for

end if

next

……

nowpage=session(" rs").absolutepage- 1

else

nowpage=session(" rs").pagecount

end if

response.write " |当前页数: "& nowpage& " "

response.write " |总页数: "& session(" rs").pagecount& " "

response.write " |总记录数: "& session(" rs").recordcount& " "

response.write " |每页记录数: "& session(" rs").pagesize& "

"

for i=1 to session(" rs").pagecount

if i<>nowpage then

response.write " < a href=" " search2.asp?page="& i& " " " >"& i& " "& " "

else

response.write i& " "

end if

next

% >

 

供求信息登记子系统

用户可以及时地将自己的商品或需求信息发布到网上。用户供求信息由后台数据库通过触发器,根据用户级别自动管理,定时删除。本子系统主要由程序 GOODS_ADD.ASP完成。

接受来自用户的登记信息并完成登记

//GOODS_ADD.ASP

<%

'接受来自商品登记界面的数据

username=request.cookies(" username")

……

set conn= server.createobject(" adodb.connection")

conn.connectionstring=" driver={sql server};server=;uid=;pwd=;database="

conn.open

'进行用户身份验证

sql1=" select* from park_online where name=' "& username& "' order by name"

set rs1=conn.execute(sql1)

if rs1.eof then response.write "拒绝访问 " : response.end

sql=" insert into market_goods values(' "& client_type& "',' "& goods_name& "',' "& goods_class& "',' "& description& "',' "& publisher& "',' "& contact& "',getdate())"

conn.execute (sql)

set conn=nothing

response.redirect " ../log.htm"

% >

在线用户交谈子系统

系统模仿现实生活中的市场,在线的供求双方可以直接交流商品的有关信息,确定商品的交易价格,以决定成交与否。主要由程序 ADDSAY.ASP、 SAY.ASP完成。

//ADDSAY.ASP

<%

……

says=request.form(" says")

says=server.HTMLEncode(says)

sql=" insert into park_says values(' "& username& "',' "& towho& "',' "& towhoway& "',' "& subject& "',' "& says& "',getdate(),' ')"

conn.execute sql

set conn=nothing

response.redirect " say.asp"

……

//SAY.ASP

<%

username=request.cookies(" username")

subject=request.cookies(" subject")

set conn=server.createobject (" adodb.connection")

conn.connectionstring=" driver={sql server};server=ntd0;uid=xpm;pwd=xpm123;database=park"

conn.open

set rs=conn.execute(" select name from park_online where name=' "& username& "'")

if rs.eof then

% >

'对于不遵守市场规则的用户 ,禁止其继续留在市场

<%

end if

% >

<%

set rs=server.createobject (" adodb.recordset")

sql=" select name,towho,towhoway,contents,time from park_saysrs.open sql,conn,3,1"

if not rs.eof then

line=1

rs.movelast

do while not rs.bof

if line>15 then

exit do

end if

if trim(rs(1))<>"全部 " and trim(rs(2))=" 1" then

if username=trim(rs(0)) or username=trim(rs(1)) then

response.write " "& trim(rs(0))& "只对 "& trim(rs(1))& "说 >>"& rs(3)& " ("& timevalue(rs(4))& " )

"

line=line+ 1

end if

else

response.write " "& trim(rs(0))& "对 "& trim(rs(1))& "说 >>"& rs(3)& " ("& timevalue(rs(4))& " )

"

line=line+ 1

end if

rs.moveprevious

loop

if rs.bof then

rs.movefirst

end if

end if

rs.close

conn.close

% >

成交记录子系统

本子系统主要是为在线用户而设,当在线用户通过交谈决定成交后,由本系统对此做详细的成交记录,包括交易双方的名字、成交商品的名称、数量、价格、要求和所提供的服务等项目。当交易产生争执时可提供证据,从而在一定程度上解决交易过程中的违规行为,以保证在线交易的信誉。本子系统通过发送 COOKIES进行用户身份验证,以确保用户的真实身份,避免冒充他人从事交易的欺骗行为。系统主要由程序 AGREE.ASP完成。

记录用户交易过程,以备查询

//AGREE.ASP

<%

'接受来自用户同意界面的数据

username=request.cookies(" username")

client_type=request.form(" jy1")

object=trim(request.form(" jy2"))

goods=request.form(" jy3")

amount=request.form(" jy4")

price=request.form(" jy5")

description=request.form(" jy6")

writer=trim(request.form(" jy7"))

says=writer+ client_type+ object+ goods+ amount+ price+ description

set conn= server.createobject(" adodb.connection")

conn.connectionstring=" driver={sql server};server=;uid=;pwd=;database="

conn.open

sql1=" select* from park_online where name=' "& username& "' order by name"

set rs1=conn.execute(sql1)

if rs1.eof then response.write "拒绝访问 " : response.end

sql=" insert into park_says values(' "& writer& "',' "& object& "',' 1',' "& says& "',getdate(),' 1')"

'对交易用户进行身份验证 ,以防冒充他人

if writer=username then

  conn.execute (sql)

set conn=nothing

response.write "

OK! "

response.write "

 

关闭窗口

"

else

response.write "

 

您不能冒充别人的名字从事交易! "

response.write "

关闭窗口

"

end if

% >