添加收藏
 系统管理
 联系方式
  汉南在线网页设计Asp动态程序

ASP打造图书管理系统(access版)
作  者:匿名
关键字:ASP技术应用



各位朋友你们好,这是我第二次写教程了,所以感觉比上次要好点,在上次写企业新闻的教程种,由很多朋友反应我的教程写的比较仔细,很容易看懂,在这里我感谢支持我的这些朋友,在这次的教程中,我会更仔细的介绍一个完整的图书录入系统的制作(其重要核心为查询系统)

好了不废话了,继续授人以渔吧~~~

按照顺序先来介绍一下这次程序要实现的功能和所要学习的知识点!

界面演示

所具备的功能:
1.主程序是用框架制作,是左右型框架
2.可以添加书籍(书名,分类,出版社,价格,出版日期)
3.可以添加删除分类并自动加入添加列表
4.可以分类查询,和详细查询(按分类,价格,出版社,出版日期)
5.应朋友要求特别做了分页程序(本来不太喜欢做,感觉都很普遍有教程了)

欠缺部分:
1.没有做后台管理(可参照第一个新闻教程)
2.对于表单的验证不是很严格
3.再有什么问题大家在制作中在告诉我吧~

程序目录(看了是不是感觉非常简单啊)

重点就是搜索页面,因为主要的知识点就是在于搜索功能写法,我感觉写的比较全面了!

这个就是书籍添加图片,主要就是放在框架的left.asp,在2节课我会详细讲解!

好下面就开始安排一下课程吧

1.规划目录,建立数据库


2.写conn.asp数据库连接页面,规划index.asp框架(分left.asp,right.asp)


3.显示全部数据页面xh_qlook.asp和添加分类页面xh_add.asp


4.删除分类页面xh_del.asp和添加分类页面booktypesave.asp


5.程序的核心:查询页面的制作和处理

好了今天第一节,好的程序首先要规划好目录和数据库!

目录如下

上面就是这个图书的目录!

上面的图片说明必须建立2个表,一个xhbook,用于存放书籍的各个属性,另一个是xhbooktype存放书籍的分类!

上图就是xhbooktype的结构,只有一个booktype就是存放书籍分类

上面就是xhbook表的结构,下列就是分类:

bookname存放书籍名称
booktype 存放书籍分类
publishing 存放书籍的出版社
bookmoney 存放书籍的价格
xhdate 存放书籍的出版日期

好了第一节的问题已经说明白了~!下节讲框架!

 这次我们来讲解框架和conn.asp文件

在这里conn.asp文件我也不太想多讲解了,很多朋友已经很熟悉了,用于连接数据库文件!
<%
set db=server.createobject("adodb.connection")
db.open "DBQ="&server.mappath("date/xhbook.mdb")&";driver={microsoft access driver (*.mdb)}"
%>

属于规范写法,数据库地址为date/xhbook.mdb为安全期间大家在使用中可以更改为asp格式

框架页面为index.asp分left.asp和right.asp页面

left.asp页面中的要点为:

1.为连接数据库conn.asp文件
2.为一个SQL语句用于输出xhbooktype表中的记录(也就是分类)
3.执行SQL语句



这段语句中:
if request.form("active")="" then
else
set rs2=server.createobject("adodb.recordset")
date1=request.form("date1")
date2=request.form("date2")
date3=request.form("date3")
insertsql="select * from xhbook"
rs2.open insertsql,db,1,3
意思为我在表单添加了一个隐藏域设置为active值为YES,头句的目的就是打开页面探测一下active是否为空值,如果是就不执行,如果不是执行一下代码~!

中的
insertsql="select * from xhbook"
rs2.open insertsql,db,1,3
rs2.addnew
rs2("bookname")=trim(request.form("name"))
rs2("booktype")=trim(request.form("select"))
rs2("bookmoney")=trim(request.form("money"))
rs2("publishing")=trim(request.form("publishing"))
rs2("xhdate")=date1&"-"&date2&"-"&date3
rs2.update

为用记录集来更新表xhbook
rs.addnew和rs.update是互相组合的,一个添加记录,一个更新记录!中间5句就是从表单获取值来传递给数据库表单!


这个很简单就是循环了选择表单的值,只要循环一下就可以更新输出了,这样很方便的!


框架的right.asp页面就是一个显示页面,在这里就不废话了!准备下节课了~

这次咱们来讲主要显示全部数据的页面

下图为分页代码

好了我来讲解一下上面的代码
set rs=server.createobject("adodb.recordset")
sql="select * from xhbook order by id desc"
rs.open sql,db,1,1

为声明记录集用SQL输出所有XHBOOK记录

rs.pagesize=10
让每页面显示10条记录

pagecount1=rs.pagecount
把总页数赋值给pagecount1

if request.querystring("pagenum")=0 or request.querystring("pagenum")="" then
pagenum=1
else
pagenum=request.querystring("pagenum")
rs.absolutepage=trim(request.querystring("pagenum"))
end if

以上代码是判断页面的参数,如果是零或者空值就赋值1
rs.absolutepage=trim(request.querystring("pagenum"))
赋值给当前页面的数值!

还有一点重要的要讲解的分页就是在循环输出的时候,代码如下:
<%do while not rs.eof and i<=10%>
<tr align="center">
<td height="26"><%=rs("bookname")%></td>
<td height="26"><%=rs("booktype")%></td>
<td height="26"><%=rs("publishing")%></td>
<td height="26"><font color="#FF0000"><%=rs("bookmoney")%>元</font></td>
<td height="26"><%=rs("xhdate")%></td>
</tr>
<%
i=i+1
rs.movenext
loop

%>
必须声明一个变量I,这样才能保证循环次数!大家应该可以看明白吧~

这段代码就是分页了,赋值给首页的数值是1,尾页的数值就是原来赋值的PAGECOUNT1
剩下的就是上页和下页了,我做了判断,看是否给予连接代码中大家可以看到
<%if pagenum>1 then%>
<a href=xh_qlook.asp?pagenum=<%=(pagenum-1)%>>上一页</a>
<%else%>
上一页
<%end if%>
<%if pagenum < trim(pagecount1) then%>
<a href=xh_qlook.asp?pagenum=<%=(pagenum+1)%>>下一页</a>
<%else%>
下一页
<%end if%>
上页就用当前值-1,如果下页就+1,主要是通过querystring传递的~!

好了开始讲解添加新分类页面xh_add.asp,其实这个页面就是添加新分类页面!就是一个递交页面~大家看看页面代码一下就明白了~~!

好了准备下节课了~

这次来讲解删除分类页面xh_del.asp还有保存分类页面booktypesave.asp

上述图片的核心句代码就是这个
booktype=trim(request.form("booktype"))

传嗲的参数给booktype,然后传递给下面的SQL语句,让SQL能完整执行!
sql="select * from xhbooktype where booktype='"&booktype&"'"



这段代码就是判断xhbooktype中是否有相同的分类~!
if not rs.eof or not rs.bof then
判断指针是否到头或者到尾
如果找到相同的记录就输出

response.write "<script language=javascript>alert('对不起已经有这个分类');history.back(-1)</script>"

并且返回原来页面从新添加!
如果没有就更新记录,执行
rs.addnew
rs("booktype")=booktype
rs.update

执行添加新分类,上节讲了这个东西,大家不会忘记吧!

好了讲解一下删除页面吧~~~



删除的主要原理就是以下2段代码
id=request.querystring("id")
sql="delete * from xhbooktype where id="&id

第一个ID主要是通过URL传递过来的参数~
这个SQL语句是delete删除语句,他的where条件就是传递过来的ID值~
想必大家可以明白吧~按照条件删除记录分类~!

但是大家别忘记要连接数据库文件啊~第一行
<!--#include file="conn.asp"-->

为了方便用户还要在最后一行记得做个跳转页面
response.redirect "xh_booktype.asp"
这样用户可以继续添加或者转到其他页面~很方便吧~

好了这节就说这么多,下节就是最后一节了~~期待吧.....

 

 

 

这一节,我们就来讲解这个图书的最后一个关节,查询书籍信息!
看看查询页面的规划



主要可以按照书籍名,分类,出版社,价格,出版日期查询,基本SQL语句的几个功能都可以用到!

好了,大家来看看查询处理页面!

由于这个代码比较复杂我无法界图上来,让我一句句分析给大家听听~!
首先:
set rs=server.createobject("adodb.recordset")
..
..
date33=trim(request("date33"))
date111=date1&"-"&date2&"-"&date3
date222=date11&"-"&date22&"-"&date33

是获取页面传递的值过来的,为什么用request呢,为了自适应,这样有利于分页的时候参数传递!大家过会就明白了~!

date111=date1&"-"&date2&"-"&date3
date222=date11&"-"&date22&"-"&date33

两句的意思就是组合一个日期参数,我用了这么一个笨方法,如果大家有好的方法一定告诉我!价格参数我也是这么传递的!

好了来解决这个查询语句吧~!贴处代码解决!大家不要眼花啊!

if len(bookname)<>0 and booktype<>"不清楚" and len(publishing)<>0 then
sql="select * from xhbook where bookname like '%"&bookname&"%' and booktype='"&booktype&"' and publishing like '%"&publishing&"%' and bookmoney>="&money1&" and bookmoney<="&money2&" and xhdate between #"&date111&"# and #"&date222&"# order by id desc"
end if

意思是如果书名不为空,类别不为不清楚,出版社不为空就执行下面这个SQL..
好了相同的意思,想必大家可以看明白下面3个SQL语句
我就不一句句废话的讲解了!

只得一提的是,大家要了解SQL查询的条件,ID LIKE "%A%"这种模糊查询的方式,这是规范写法,还有通配符%,在ACCESS中是*,大家要牢记啊~~

好了下面开始写这个分页,这个东西当时可是浪费了我好多时间!

dim pagenum,i
i=0
rs.pagesize=5
pagecount1=rs.pagecount
if request.querystring("pagenum")=0 or request.querystring("pagenum")="" then
pagenum=1
else
pagenum=request.querystring("pagenum")
rs.absolutepage=trim(request.querystring("pagenum"))
end if

这段代码和2讲里面的分页原理是相同的,赋值每页显示5条记录!
然后把总野鼠赋值给pagecount1,I的赋值到后面会给大家讲解!

<%
do while not rs.eof and i<=5
%>

对应的
<%
i=i+1
rs.movenext
loop
rs.close
set rs=nothing
%>

大家可以明白I的作用了吧,就是控制循环次数!

好了大家看看这个分页的连接参数传递,比较繁琐,但是每办法必须这么写,首先是首页的连接

response.write "<a href=select.asp?pagenum=1&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&"&date33="&date33&">首页</a>"
看明白了吗?主要是逐个的传递参数,原因就是分页后,跳转页面必须传递否则就会出现SQL找不到参数,必会出错!

上页的代码写法一样,把赋值运算写上去就可以了!
response.write "<a href=select.asp?pagenum="&(pagenum-1)&"&bookname="&bookname&"&booktype="&booktype&"&publishing="&publishing&"&money1="&money1&"&money2="&money2&"&date1="&date1&"&date2="&date2&"&date3="&date3&"&date11="&date11&"&date22="&date22&"&date33="&date33&">上一页</a>&nbsp;"

主要功能就显示了,到此这篇教程我就写完了,这2天里面我也学习了不少东西,希望这些可以对大家或者那些新手朋友有帮助吧!
如果大家还对什么程序有兴趣,请来我站点给我留言,如果有时间我还会给大家奉献出好的程序教程!谢谢大家支持,晚安好梦~~~~



来源:网络
阅读:52
日期:2007-11-14

【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:如何安装Photoshop笔刷
下一篇:PHP动态网站开发中常用的8个小技巧

  >> 相关文章
 
  ·ASP处理XSLT转换XML的实现
  ·ASP网站程序自动升级实现的方法
  ·等差数列和等比数列通项公式
  ·在不支持FSO的服务器上使用XMLDOM创建HTML文件
  ·汉字转拼音ASP函数
  ·网页输出N行N列表格的ASP实现方法
  ·如何编写通用的ASP防SQL注入攻击程序
  ·ASP程序实现网页伪静态页源代码

5.12汶川大地震遇难同胞默哀 | 汉南在线总站 | 免费电影 | BT电影下载 | 东莞信息网 | 流行购商城

授权使用:汉南在线 http://hnzx.hzwz.net/
经营许可证:陕ICP备05000109号 Powered by:汉南在线
Copyright (c) 2002-2007 汉南在线. All Rights Reserved .