资源描述
小型图书资料管理系统设计与实现
胡昆鹏
(合肥财经职来学院)
摘 要 本文为大家介绍一个小型图书资料管理系统设计与实现,该系统适用于各中小学、中小企业及较大单位的某一部门。使用该系统可以帮助图书管理员使用计算机等工具来辅助其完成图书管理及借阅方面的工作,从而使得管理人员更加省时省力。本系统主要包括图书管理系统和用户借阅系统,其中图书管理系统包括了用户管理、分类管理、图书检索、新书入库管理和借阅管理等五大模块,而借阅系统包括了借书和还书等模块。该系统具有清晰的数据流和控制流,并有很好的安全性。
关键词 图书管理;图书借阅;检索;ASP;B/S
1 引言
当今社会是一个信息化的社会,图书资料仍是获取信息的一个主要来源,随着人们对信息需求的增强,各中小单位及有关部门都为日益增多的图书的管理而困扰。 本文为大家介绍一个小型图书资料管理系统的设计与实现,该系统适用于各中小学、中小企业及较大单位的某一部门。使用该系统可以帮助图书管理员使用计算机等工具来辅助其完成图书管理及借阅方面的工作,从而使得管理人员更加省时省力。
2 数据结构
一个实用而高效的信息管理系统必须建立在良好的数据结构基础上,图书管理主要包括用户管理、分类管理、新书入库管理和借阅管理。为此我们在数据库中设立了四个数据表:借书日志表、图书表、图书分类表、管理员表。
2.1 数据库设计
(1)借书日志表,包含如下信息:
编号、图书条形码、图书ID、姓名、借书类型(1借出 0 归还)、借阅时间、操作人、归还时间、备注。
(2)图书表,包含如下信息:
编号、条件码、书编号、书名、出版社、主编、简介、定价、购买时间、分类ID、册数、已经借出数、备注、借阅数、借阅记录、用户ID。
(3)图书分类表,包含如下信息:
编号、目录名称、上级目录I(根目录为0)、目录简要描述。
(4)管理员表,包含如下信息:
编号、用户名、密码、是否是管理员。
2.2 表的实现
使用Access建立表,注意备注栏填写字段的中文备注。
3 系统功能设计
本系统主要分为两大部分:一是图书管理系统,包括用户管理、分类管理、新书入库管理和借阅管理等五大模块。二是用用借阅系统,主要包括读者管理、借书模块、还书模块(这里读者管理我们不做介绍)。其功能结构如图1所示。
图1 系统结构图
3.1 管理员管理
该模块主要有管理用户的添加、删除和修改及管理用户的登陆功能。
(1) 管理员的管理功能,即数据记录增加、删除和修改的功能,比较简单,请参考本系统的原代码。如图2所示。
图2 管理员管理功能
(2)用户登陆表单的设计。如图3
图3 管理用户登陆表单
/*用表格嵌套登陆表单*/
<table width="48%" height="151" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td height="84" valign="top" bgcolor="#FFFFFF">
<form action="Index.asp?action=chkuser" method="post" name="form1" id="form1">
<table width="100%" height="156" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="28" colspan="2" align="center" bgcolor="#CCCCCC">校园图书管理--系统登录</td> </tr> <tr>
<td height="27" colspan="2" align="center"> </td> </tr> <tr>
<td width="48%" height="35" align="right">用户名:</td>
<td width="52%" align="left"> <input name="username" type="text" class="input" id="username" size="20" /> </td>
</tr>
<tr>
<td height="35" align="right">密码:</td>
<td width="52%" align="left"><input name="password" type="password" class="input" id="password" size="20" /></td>
</tr>
<tr>
<td colspan="2" align="center"><label>
<input type="submit" name="button" id="button" value="登录" onclick="return checklogin();" />
<input type="button" name="button2" id="button2" value="关闭" onclick="window.close();" />
</label></td>
</tr>
</table>
</form>
</td>
</tr>
</table>
<%
//管理员校验。如果登陆成功,则将进入管理系统,否则重定向到登陆页面请用户重新登陆。
dim action
action=trim(request.QueryString("action"))
if action="chkuser" then
dim password,username
username=request.Form("username")
password=request.Form("password")
password=md5(password,16)
set rs=conn.execute("select * from manager where userid='"&username&"' and password='"&password&"'")
if not rs.eof then
session("username")=rs("userid")
session("userid")=rs("id")
if rs("isadmin")=true then
session("isadmin")="admin"
end if
response.Write "<script>alert('登录成功 \n\n 图书管理系统');window.location.href='main.asp';</script>"
else
response.Write "<script>alert('密码错误 \n\n 校园图书管理系统');window.location.href='index.asp';</script>"
end if
end if
%>
3.2 分类管理
该模块具有分类的添加、删除、修改和分类图书记录浏览的功能。采用框架设计,框架的左边是具体的分类,右边的缺省页是分类管理(如图4),当你选择左边相应的分类时,它还可以显示该分类下的有关图书信息。我们采用action变量作为select开关语句的变量表达式,来判断用户所要执行的操作。如果action的值是add,系统就做添加分类操作;如果是edit系统就做编辑操作;如果是del系统就做删除操作。
图4 分类管理
<!--#include file="conn.asp"-->
<script type="text/javascript">
function checkadd(){
if (document.form1.foldername.value==""){
alert('分类名称不能为空');
document.form1.foldername.select();
document.form1.foldername.focus();
return false;
}
}
</script><title>分类管理</title>
<%
//分类的管理,通过action值判断做分类的添加、删除和修改
Dim action,id
action=trim(request.QueryString("action"))
select case action
case "add"
foldername=cstr(request.Form("foldername"))
Set rs=server.CreateObject("adodb.recordset")
sql="select * from folder"
rs.open sql,conn,1,3
rs.addnew
rs("foldername")=foldername
rs("folderparentid")=0
rs.update
rs.close
set rs=nothing
response.Write "<script>alert('添加分类成功!');window.location.href='foldermanage.asp';</script>"
case "editfolder"
%>
<p> </p>
<table width="54%" align="center" cellpadding="1" cellspacing="1" bordercolor="#CCCCCC" bgcolor="#999999">
<tr>
<td width="410" height="21" bgcolor="#E4E4E4"><div align="center"><strong>分类名称</strong></div></td>
<td width="127" bgcolor="#E4E4E4"><div align="center"><strong>操作管理</strong></div></td>
</tr>
<%
//浏览分类信息
set rs=conn.execute("select * from folder order by folderid asc")
do while not rs.eof
%>
<tr>
<td bgcolor="#FFFFFF"><%=rs("foldername")%></td>
<td align="center" bgcolor="#FFFFFF"><a href="foldermanage.asp?action=editfolder&id=<%=rs("folderid")%>">修改</a> | <a href="foldermanage.asp?action=del&id=<%=rs("folderid")%>" onclick="return confirm('删除分类,分类下所有图书都将删除!');">删除</a></td>
</tr>
<%
rs.movenext
loop
rs.close
set rs=nothing
%>
</table>
<p> </p>
<%
id=cint(request.QueryString("id"))
set rs=conn.execute("select * from folder where folderid="&id)
if rs.eof or rs.bof then
response.Write "<script>alert('没有该分类!');window.location.href='foldermanage.asp';</script>"
else
%>
<form id="form1" name="form1" method="post" action="foldermanage.asp?action=edit&id=<%=id%>">
<table width="54%" align="center" cellpadding="1" cellspacing="1" bordercolor="#CCCCCC" bgcolor="#999999">
<tr>
<td width="410" height="21" bgcolor="#E4E4E4"><div align="center"><strong>修改分类</strong></div></td>
<td width="127" bgcolor="#E4E4E4"><div align="center"><strong>操作管理</strong></div></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF"><input type="text" name="foldername" id="foldername" value="<%=rs("foldername")%>" /></td>
<td align="center" bgcolor="#FFFFFF"><input type="submit" name="button" id="button" value="修改分类" onclick="return checkadd();" /></ td>
</tr>
</table>
</form>
<%
end if
%>
<p> </p>
<%
case "edit"
id=cint(request.querystring("id"))
foldername=cstr(request.Form("foldername"))
Set rs=server.CreateObject("adodb.recordset")
sql="select * from folder where folderid="&id
rs.open sql,conn,1,3
rs("foldername")=foldername
rs.update
rs.close
set rs=nothing
response.Write "<script>alert('修改分类成功!');window.location.href='foldermanage.asp';</script>"
case "del"
id=cint(request.QueryString("id"))
conn.execute("delete from folder where folderid="&id)
conn.execute("delete From ebook where folderid="&id)
response.Write "<script>alert('删除分类成功!');window.location.href='foldermanage.asp';</script>"
case else
%>
<p> </p>
<table width="54%" align="center" cellpadding="1" cellspacing="1" bordercolor="#CCCCCC" bgcolor="#999999">
<tr>
<td width="410" height="21" bgcolor="#E4E4E4"><div align="center"><strong>分类名称</strong></div></td>
<td width="127" bgcolor="#E4E4E4"><div align="center"><strong>操作管理</strong></div></td>
</tr>
<%
set rs=conn.execute("select * from folder order by folderid asc")
do while not rs.eof
%>
<tr>
<td bgcolor="#FFFFFF"><%=rs("foldername")%></td>
<td align="center" bgcolor="#FFFFFF"><a href="foldermanage.asp?action=editfolder&id=<%=rs("folderid")%>">修改</a> | <a href="foldermanage.asp?action=del&id=<%=rs("folderid")%>" onclick="return confirm('删除分类,分类下所有图书都将删除!');">删除</a></td>
</tr>
<%
rs.movenext
loop
rs.close
set rs=nothing
%>
</table>
<p> </p>
<form id="form1" name="form1" method="post" action="foldermanage.asp?action=add">
<table width="54%" align="center" cellpadding="1" cellspacing="1" bordercolor="#CCCCCC" bgcolor="#999999">
<tr>
<td width="410" height="21" bgcolor="#E4E4E4"><div align="center"><strong>添加分类</strong></div></td>
<td width="127" bgcolor="#E4E4E4"><div align="center"><strong>操作管理</strong></div></td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF"><input type="text" name="foldername" id="foldername" /></td>
<td align="center" bgcolor="#FFFFFF"><input type="submit" name="button" id="button" value="添加分类" onclick="return checkadd();" /></ td>
</tr>
</table>
</form>
<p> </p>
<%
end select
%>
3.4 图书管理模块
该模块主要是用来实现根据图书的条形码进行图书的检索功能。
(1) 作检索表单:见图5
图5 图书查询表单
<!--#include file="checkuser.asp" -->
<body onLoad="tiaoxingma();">/*当用户打开检索页面时,系统就执行tiaoxingma()函数,将光标就定位到检索页面*/
<p> </p>
<p> </p>
<p> </p>
<form name="form1" method="post" action="bookedit.asp">
<table width="400" height="76" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="36" align="center" bgcolor="#003366"><span class="STYLE1">图书管理查询</span></td>
</tr>
<tr>
<td align="center"><p>条形码:
<input name="tiaoxingma" type="text" id="tiaoxingma">
<input type="submit" name="Submit" value="查找图书" onClick="return checkform();">
</p>
</td>
</tr>
</table>
</form>
</body>
<script language="JavaScript" type="text/javascript">
function tiaoxingma(){
document.form1.tiaoxingma.focus();
document.form1.tiaoxingma.select();
}
</script>
(2) 写检索功能代码。当用户输入条形码后,点击查找图书,则可以找到指定图书信息,并编辑它。该程序主要根据检索页面传的条形码值在数据库中实现查找的方法。程序界面如图6所示。
图6 图书详细信息表单
<!--#include file="conn.asp"-->
<!--#include file="checkuser.asp" -->
<%
action=request.querystring("action")
if action="edit" then
bookid=cint(request.Form("bookid"))
tiaoxingma=trim(request.form("tiaoxingma"))
shuming=request.form("shuming")
folderid=request.form("folderid")
zhubian=request.form("zhubian")
chubanshe=request.form("chubanshe")
ceshu=request.form("ceshu")
dingjia=request.form("dingjia")
jianjie=request.form("jianjie")
beizhu=request.form("beizhu")
shijian=request.form("shijian")
bookpic=request.form("bookpic")
set rs=server.createobject("adodb.recordset")
sql="select * from ebook where id="&bookid&""
rs.open sql,conn,1,3
rs("tiaoxingma")=tiaoxingma
rs("shuming")=shuming
rs("folderid")=folderid
rs("zhubian")=zhubian
rs("chubanshe")=chubanshe
rs("ceshu")=ceshu
rs("dingjia")=dingjia
rs("jianjie")=jianjie
rs("shijian")=shijian
rs("beizhu")=beizhu
rs("bookpic")=bookpic
rs.update
rs.close
set rs=nothing
response.write "<script>"
response.write "alert('修改书籍成功! \n\n 图书管理系统!');"
response.write "window.location.href='bookedit.asp?tiaoxingma="&tiaoxingma&"'"
response.write "</script>"
else
%>
<title>图书入库</title>
<script type="text/JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) { //v2.0
window.open(theURL,winName,features);
}
//-->
</script>
<body onLoad="tiaoxingma();">
<%
//在数据库中查询指定条形码对应的信息并显示,在该状态下也可以修改该图书的信息
tiaoxingma=trim(request("tiaoxingma"))
Set rs=conn.execute("select * from ebook where tiaoxingma='"&tiaoxingma&"'")
%>
<form id="form1" name="form1" method="post" action="?action=edit" >
<p> </p>
<table width="640" border="0" align="center">
<tr>
<td width="70" bgcolor="#CCCCCC">条形码:</td>
<td width="400"><input name="tiaoxingma" type="text" id="tiaoxingma" tabindex="0" onKeyDown="checkit();" value="<%=tiaoxingma%>" /></td>
<td width="156"> </td>
</tr>
<tr>
<td width="70" bgcolor="#CCCCCC">书籍类别:</td>
<td width="400">
<select name="folderid" id="folderid">
<%
Set rs1=conn.execute("select * from folder where folderParentid=0")
do while not rs1.eof
%>
<option value="<%=rs1("folderid")%>" <%if rs1("folderid")=rs("folderid") then response.Write "selected" %>><%=rs1("foldername")%></option>
<%
rs1.movenext
loop
rs1.close
set rs1=nothing
%>
</select>
</td>
<td width="156" bgcolor="#CCCCCC"><div align="center">缩略图</div></td>
</tr>
<tr>
<td bgcolor="#CCCCCC">书籍名称:</td>
<td><input name="shuming" type="text" id="shuming" tabindex="1" value="<%=rs("shuming")%>" /></td>
<td rowspan="6" align="center" valign="middle"><img src="<%=rs("bookpic")%>" width="120" height="150" border="0" /></td>
</tr>
<tr>
<td bgcolor="#CCCCCC">主编/作者:</td>
<td><input name="zhubian" type="text" id="zhubian" tabindex="2" value="<%=rs("zhubian")%>" /></td>
</tr>
<tr>
<td bgcolor="#CCCCCC">出版社:</td>
<td><input name="chubanshe" type="text" id="chubanshe" tabindex="3" value="<%=rs("chubanshe")%>" /></td>
</tr>
<tr>
<td bgcolor="#CCCCCC">册数:</td>
<td><input name="ceshu" type="text" id="ceshu" value="<%=rs("ceshu")%>" size="10" tabindex="4" onKeyUp="value=value.replace(/[\W]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" onKeyDown="if(event.keyCode==13)event.keyCode=9" />
册</td>
</tr>
<tr>
<td bgcolor="#CCCCCC">定价:</td>
<td><input name="dingjia" type="text" id="dingjia" tabindex="5" value="<%=rs("dingjia")%>" size="10" />
元</td>
</tr>
<tr>
<td bgcolor="#CCCCCC">书籍简介:</td>
<td><textarea name="jianjie" cols="50" rows="5" id="jianjie" tabindex="6"><%=rs("jianjie")%></textarea></td>
</tr>
<tr>
<td bgcolor="#CCCCCC">书籍状况:</td>
<td><input name="beizhu" type="text" id="beizhu" value="完好" size="10" tabindex="7" />
* 完好、破损等</td>
<td><input name="bookpic" type="text" id="bookpic" value="<%=rs("bookpic")%>" /></td>
</tr>
<tr>
<td bgcolor="#CCCCCC">购置时间:</td>
<td><script>arrowtag("shijian","")</script>
<input name="shijian" type="text" id="shijian" value="<%=rs("shijian")%>" size="15" tabindex="7" /></td>
<td><div align="center">
<input name="Submit3" type="button" tabindex="9" onClick="MM_openBrWindow('post_upload.asp','上传书籍照片','width=300,height=200')" value="上传图片" />
</div></td>
</tr>
<tr>
<td> </td>
<td>
<div align="center">
<input name="bookid" type="hidden" id="bookid" value="<%=rs("id")%>">
<input type="button" name="Submit" value="修改" tabindex="10" onClick="checkform();" />
<input type="button" name="Submit2" value="返回" onClick="window.location.href='bookguanli.asp';"/>
</div></td>
<td> </td>
</tr>
</table>
</form>
</body>
<%end if%>
<script language="JavaScript" type="text/javascript">
function tiaoxingma(){
document.form1.tiaoxingma.focus();
document.form1.tiaoxingma.select();
}
function checkit(){
if(event.keyCode=="13"){
document.form1.folderid.focus();
document.form1.folderid.select();
}
}
function checkform(){
if (document.form1.tiaoxingma.value==""){
alert('书籍条形码不能为空!');
document.form1.tiaoxingma.foc
展开阅读全文