-
- 后台系统的实现
每一个需要存取数据的网站都必须与数据库进行连接,连接数据库的包含文件:includes/dbconn.inc,代码如下:
<%
Function openDB()
set conn=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")
ConnString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=olbs;Data Source=(local);PWD=sa"
conn.Open ConnString
end function
Function closeDB()
set rs=nothing
conn.close
set conn=nothing
end function
%>
-
- 页面设计实施
页面是一个网站的窗口,它要反映公司的主要经营内容,要反映公司最基本的精神面貌、文化底蕴。因此,所设计的网页要力求美观大方、容易操作。另外,这里要说明的是,本系统作为一个毕业设计,更注重的是后台功能的实现。
-
-
- 前台页面设计实施
-
前台页面主要是登录页面、用户查询页面、用户订购页面等等,要设计好页面的布局,各个链接按钮的排列、主要的图形的设计要美观、合理,能反映出网站的特色和网站的内容。
图4-1 系统主页
- 主页说明:主页以“网城书店”命名,页面上的热点图书可以提供给我们最近的热点图书,还有图书搜索、管理员、购物车的快捷链接图标。只要点击相应的图标就可以进入相关的网页。
图4-2 顾客查询图书页面
- 顾客查询图书页面的说明:
- 当客户点击主页上的“搜索图书”后系统链接到bookquery.asp,该页面具有查询功能,客户可以根据图书名、ISBN号直接进行查询,或通过图书类别、图书子类别、出版社进行分类查找。
- 主要代码为:
sql="select categoryname from categories"
set rs=conn.execute(sql)
while not rs.eof
%>
<option><%=rs("categoryname")%></option>
<%
rs.movenext
wend
%>
</select></p>
<p> 图书子类别<select size="1" name="subcategoryname">
<option selected>-请选择-</option>
<%
sql="select subcategoryname from subcategories"
set rs=conn.execute(sql)
while not rs.eof
%>
<option><%=rs("subcategoryname")%></option>
<%
rs.movenext
wend
%>
</select></p>
<p> 出版社 <select size="1" name="suppliername">
<option selected>-请选择-</option>
<%
sql="select suppliername from suppliers"
set rs=conn.execute(sql)
while not rs.eof
%>
<option><%=rs("suppliername")%></option>
<% rs.movenext%>
wend
图4-3 要选定的图书加入购物车页面
- 要选定的图书加入购物车页面说明:
- 如果客户要购买图书则填写购买此书的册数,后点击“放入购物车”按钮,此时,客户所购的书放入购物车中。
- 放入购物车的代码如下 :
while not rs.eof
htmlcode="<td width=20% align=right>"&"<img border=0 src="""&rs("imageurl")&""">"
htmlcode=htmlcode&"</td>"
htmlcode=htmlcode&"<td width=80%\><b><font size=4>"&bookname&"</font></b><br>ISBN:"
htmlcode=htmlcode&rs("isbn")&" "&rs("suppliername")&"<br>"
if rs("discount")<>0 then
htmlcode=htmlcode&"<strike>原价:"&rs("price")&"元</strike> 现价:"&rs("price")*(100-rs("discount"))/100&"元!"
else
htmlcode=htmlcode&rs("price")&"元<br>"
end if
availstock=rs("availstock")
htmlcode=htmlcode&"在库数目:"&availstock&"<p></p>"
htmlcode=htmlcode&"<center>内容简介</center><br><center><div width=80%\>"&rs("details")&"</div></td>"
response.write htmlcode
rs.movenext
wend
图4-4 购物车页面
- 购物车页面说明:
- 客户可以在本页面进行购买书籍的调整,如果想修改购书数目则重新输入数量,如后点击“GO”进行更新。如果客户决定购买则点击“我要结帐”。
- 相应得主要代码为:
dim arrCart, cartIndex,i,htmlcode,total0,total1
arrCart = Session("MyCart")
cartIndex = Session("cartIndex")
count=0
for i=0 to CartIndex
if arrCart(i,2)<>"" then
if arrCart(i,2)>0 then
count=count+1
end if
end if
next
if count = 0 then
htmlcode="your cart is empty.<br>"
htmlcode=htmlcode&"<a href=""bookincategory.asp""><<back</a>"
response.write htmlcode
else
图4-5 用户注册
- 用户注册说明:
- 当客户点击我要结帐时要输入客户名,如果没有注册则需要注册,在注册时要填写详细的地址、姓名、邮政编码,以防止误投。
- 相应的注册代码如下:
dim htmlcode
username = request.form("username")
password = request.form("password")
realname = request.form("realname")
phone = request.form("phone")
email = request.form("email")
add = request.form("add")
city = request.form("city")
state = request.form("state")
zip = request.form("zip")
call openDB()
sql="select username from customers where username='"&username&"'"
set rs=conn.execute(sql)
if not rs.eof then
htmlcode="the username you choosed has been used by others please choose an other username"
htmlcode=htmlcode&"<a href=""regist.asp""><<back</a>"
response.write htmlcode
else
sql="insert into customers(username,password,realname,phone,email,add,city,state,zip) values ('"
sql=sql&username&"','"&password&"','"&realname&"','"&phone&"','"&email&"','"&add&"','"&city&"','"&state&"',"&zip&")"
set rs=conn.execute(sql)
sql="select Max(idcustomer) as idcust from customers"
set rs=conn.execute(sql)
Session("idcustomer")=rs("idcust")
call closeDB()
response.redirect "orderverify.asp"
end if
call closeDB()
-
-
- 后台页面设计实施
-
后台页面用于数据库中的信息查看和修改,只有通过管理员的密码认证才能进入系统,进行数据的添加、修改和查看。后台页面要方便操作人员的操作。
图4-6 管理员登录
- 管理员登录页面说明:
- 只有通过管理员用户名、密码验证后才可进入系统后台对系统数据进行管理,重写可清空文本框中的用户名和密码。
- 主要代码为:
if Session("adminname")="" then
adminname=request.form("adminname")
pws=request.form("pws")
if adminname="" or pws="" then
else
call openDB()
sql="select adminname from admin where adminname='"&adminname&"' and pws='"&pws&"'"
set rs=conn.execute(sql)
if rs.eof then
response.redirect "adminlogin.asp"
else
Session("adminname")=rs("adminname")
end if
call closeDB()
response.redirect "admin.asp"
end if
else
response.redirect "admin.asp"
end if
图4-7 新建图书类别
- 新建图书类别页面说明:
- 该页面用于增加图书类别,如:英语类、化工类等等。当添加进类别之后就可以进行新书的录入。
- 主要代码为:
if addcategory<>"" then
call openDB()
sql="insert into categories (categoryname) values ('"&addcategory&"')"
set rs=conn.execute(sql)
call closeDB()
response.redirect"addcategory.asp"
elseif addsubcategory<>"" then
call openDB()
sql="select idcategory from categories where categoryname='"&categoryname&"'"
set rs=conn.execute(sql)
idcategory=rs("idcategory")
sql="insert into subcategories(subcategoryname,idcategory) values ('"&addsubcategory _
&"',"&idcategory&")"
set rs=conn.execute(sql)
call closeDB()
htmlcode="<a href=""admin.asp"">新建图书子类别成功</a>"
response.write htmlcode
end if
图4-8 新书入库网页
- 新书入库网页说明:
- 管理员要根据入库单据进行新书的录入,在录入过程中要要择正确的图书类别、与出版社名,这样才能使用户在查询时容易查找。
- 主要代码为:
sql="select bookname from books where bookname='"&bookname&"' and isbn='"&isbn&"'"
set rs=conn.execute(sql)
if not rs.eof then
htmlcode="错误!输入的书籍已经在库!"
htmlcode=htmlcode&"<a href=""addbook.asp"">重试</a><p></p><a href=""admin.asp"">返回</a>"
response.write htmlcode
else
sql="select idcategory from categories where categoryname='"&categoryname&"'"
set rs=conn.execute(sql)
idcategory=rs("idcategory")
sql="select idsubcategory from subcategories where subcategoryname='"&subcategoryname&"'"
set rs=conn.execute(sql)
idsubcategory=rs("idsubcategory")
sql="select idsupplier from suppliers where suppliername='"&suppliername&"'"
set rs=conn.execute(sql)
idsupplier=rs("idsupplier")
sql="insert into books(idcategory,idsubcategory,idsupplier,bookname,isbn,details,orgcost,price,discount," _
&"imageurl,stock,availstock,active,hotdeal,sales,visits) values(" _
&idcategory&","&idsubcategory&","&idsupplier&",'"&bookname&"','"&isbn&"','"&details&"',"&orgcost&","&price&","&discount&",'" _
&imageurl&"',"&stock&","&availstock&","&active&","&hotdeal&",0,0)"
set rs=conn.execute(sql)
sql="select idbook from books where bookname='"&bookname&"' and isbn='"&isbn&"'"
set rs=conn.execute(sql)
if not rs.eof then
idbook=rs("idbook")
month_ = month(date)
day_ = day(date)
year_ = year(date)
sql="insert into stockmovements(idbook,datemovement,quantity) values("&idbook&","&month_&"/"&day_&"/"&year_&","&stock&")"
set rs=conn.execute(sql)
htmlcode="添加成功!"
else
htmlcode="发生问题!"
end if
htmlcode=htmlcode&"<p></p><a href=""admin.asp"">返回</a>"
response.write htmlcode
end if
call closeDB()
end if
图4-9 改变在库书信息网页
- 改变在库书信息网页说明:
- 管理员要根据“图书名”或“ISBN号”对在库图书查找,并修改相关信息。
- 主要代码为:
<%
if Session("adminname")="" then
response.redirect "adminlogin.asp"
end if
call openDB()
bookname=request("bookname")
isbn_=request.form("isbn")
details=request.form("details")
price=request.form("price")
discount=request.form("discount")
imageurl=request.form("imageurl")
availstock=request.form("availstock")
active=request.form("active")
hotdeal=request.form("hotdeal")
fromthis=request.form("fromthis")
if bookname="" then '//came from unknown
response.redirect"admin.asp"
end if
if fromthis="" then '// didnt came from this page:
sql="select bookname from books where bookname='"&bookname&"'"
set rs=conn.execute(sql)
if not rs.eof then
sql="select bookname, details,price,discount,imageurl,availstock,active,hotdeal from books where bookname='"&bookname&"'"
else
response.redirect"changstock.asp?msg=书库中没有找到你输入的图书!"
end if
set rs=conn.execute(sql)
'response.write bookname&"<br>"
'response.write sql
'/
%>
<%if not rs.eof then%>
<form method="POST" action="showans_stockc.asp">
<p>书名:<%=rs("bookname")%></p>
<p>售价:<input type="text" name="price" size="20" value=<%=rs("price")%>></p>
<p>折扣:<input type="text" name="discount" size="20" value=<%=rs("discount")%>>%</p>
<p>可售册数:<input type="text" name="availstock" size="20" value=<%=rs("availstock")%>></p>
<p>图片位置:<input type="text" name="imageurl" size="20" value=<%=rs("imageurl")%>></p>
<input type="hidden" name="bookname" size="20" value=<%=rs("bookname")%>>
<p>是否发布:<select size="1" name="active">
<%if rs("active")=1 then%>
<option selected>是</option>
<option>否</option>
<%else%>
<option>是</option>
<option selected>否</option>
<%end if%>
</select></p>
<p>是否热点:<select size="1" name="hotdeal">
<%if rs("hotdeal")=0 then%>
<option selected>是</option>
<option>否</option>
<%else%>
<option>是</option>
<option selected>否</option>
<%end if%>
</select></p>
<p align=center>内容简介</p>
<p align=center><textarea rows="8" name="details" cols="80" ><%=rs("details")%></textarea></p>
<input type="hidden" value="on" name="fromthis">
<p align=center><input type="submit" value="提交" name="B1"> <input type="reset" value="重写" name="B2"></p>
</form>
<%
end if
else
if hotdeal="是" then
hotdeal=1
else
hotdeal=0
end if
if active="是" then
active=1
else
active=0
end if
sql="update books set price="&price&",discount="&discount&",imageurl='"&imageurl& _
"',availstock="&availstock&",active="&active&",hotdeal="&hotdeal&",details='"&details&"' where bookname='"&bookname&"'"
set rs=conn.execute(sql)
'response.write sql&" !!!<br><br><br>"
htmlcode="<p align=center>修改成功!</p><p align=center><a href=""admin.asp""><<返回</a></p>"
response.write htmlcode
'/
end if
call closeDB()
%>
图4-10 查询销售状况网页
- 查询销售状况网页说明:
- 管理员可以根据图书的“销售日期段”或“指定查询项(图书相关信息)”对已销售图书查找。
- 主要代码为:
<%
if Session("adminname")="" then
response.redirect "adminlogin.asp"
end if
dim sql,conn,rs,htmlcode
fromyear=request.form("fromyear")
frommonth=request.form("frommonth")
fromday=request.form("fromday")
toyear=request.form("toyear")
tomonth=request.form("tomonth")
today=request.form("today")
if fromyear<>"" then
call openDB()
sql="select sum(totalmoney) as sumtotal from orders where orderdate between (#"&frommonth&"/"&fromday&"/"&fromyear&"# and #"&tomonth&"/"&today&"/"&toyear&"#)"
set rs=conn.execute(sql)
if rs("sumtotal")="" then
htmlcode="没有销售记录!<a href=""admain.asp"">返回</a>"
response.write htmlcode
else
htmlcode="总销售金额为"&rs("sumtotal")&"元。"
response.write htmlcode
end if%>
<p></p>
<table border="1" width="100%" bordercolor="#C0C0C0" bordercolorlight="#000080" cellspacing="0" cellpadding="0" bordercolordark="#E0E0E0">
<tr align=center>
<td width="20%">书名</td>
<td width="16%">类别</td>
<td width="16%">子类别</td>
<td width="15%">ISBN</td>
<td width="15%">出版商</td>
<td width="9%">库存数</td>
<td width="9%">已销售</td>
</tr>
<%
sql="SELECT DISTINCT books.bookname, books.isbn, categories.categoryname, subcategories.subcategoryname, books.sales, books.stock,"
sql=sql&" suppliers.suppliername FROM (suppliers INNER JOIN ((categories INNER JOIN books ON categories.idcategory = books.idcategory)"
sql=sql&" INNER JOIN subcategories ON (subcategories.idsubcategory = books.idsubcategory) AND "
sql=sql&"(categories.idcategory = subcategories.idcategory)) ON suppliers.idsupplier = books.idsupplier)"
sql=sql&" INNER JOIN orders ON books.idbook = orders.idbook WHERE (((orders.orderdate) "
sql=sql&"Between #"&frommonth&"/"&fromday&"/"&fromyear&"# And #"&tomonth&"/"&today&"/"&toyear&"#))"
set rs=conn.execute(sql)
while not rs.eof
response.write "<tr><td width=""20%"">"&rs("bookname")&"</td>"
response.write "<td width=""16%"">"&rs("categoryname")&"</td>"
response.write "<td width=""16%"">"&rs("subcategoryname")&"</td>"
response.write "<td width=""15%"">"&rs("isbn")&"</td>"
response.write "<td width=""15%"">"&rs("suppliername")&"</td>"
response.write "<td width=""9%"">"&rs("stock")&"</td>"
response.write "<td width=""9%"">"&rs("sales")&"</td></tr>"
rs.movenext
wend
call closeDB()
response.write "<p></p><a href=""admin.asp"">返回</a>"
%>
</table>
<%
else
response.redirect"salequery.asp"
end if
%>
图4-11 查询顾客状况网页
- 查询顾客状况网页说明:
- 管理员可以根据图书的“顾客ID”或“显示所有顾客信息”对注册用户及其他相关信息进行查询。
- 主要代码为:
<%
dim rsTEMP,displayall,customername
customername = request.form("customername")
call openDB()
displayall=request("displayall")
if displayall="on" then
sql="select * from customers"
else
customername=request.form("customername")
sql="select * from customers where username ='"&customername&"'"
end if
set rs=conn.execute(sql)
if rs.eof then
htmlcode="没有找到该顾客!<a href=""customerquery.asp"">返回</a>"
response.write htmlcode
else
%>
<!--#include file="includes/header.inc"-->
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="362">
<tr>
<td width="18%" bgcolor="#EFF6FA" height="362">
<!--#include file="includes/admin_left.inc"-->
</td>
<td width="82%" height="362" bgcolor="#F3F3F3">
<p></p>
<table border="1" width="100%" bordercolor="#C0C0C0" bordercolorlight="#000080" cellspacing="0" cellpadding="0" bordercolordark="#E0E0E0">
<tr align=center>
<td width="18%">顾客名</td>
<td width="15%">真名</td>
<td width="15%">电话</td>
<td width="14%">电邮</td>
<td width="20%">地址</td>
<td width="8%">邮编</td>
<td width="10%">购买记录</td>
</tr>
<%
while not rs.eof
response.write "<td width=18%\>"&rs("username")&"</td>"
response.write "<td width=15%\>"&rs("realname")&"</td>"
response.write "<td width=15%\>"&rs("phone")&"</td>"
response.write "<td width=14%\>"&rs("email")&"</td>"
response.write "<td width=20%\>"&rs("add")&"</td>"
response.write "<td width=8%\>"&rs("zip")&"</td>"
response.write "<td width=10%\><a href=""showsales_bycustomer.asp?username="&rs("username")&""">>></a></td>"
rs.movenext
response.write "</tr>"
wend
end if
call closeDB()
%>
</table>
</td>
</tr>
</table>