图书管理系统毕业设计.docx
《图书管理系统毕业设计.docx》由会员分享,可在线阅读,更多相关《图书管理系统毕业设计.docx(35页珍藏版)》请在冰豆网上搜索。
图书管理系统毕业设计
图书管理系统
图书管理系统主要提供网上的电子图书阅览平台,读者可以通过该系统阅览丰富的电子资源。
在图书管理系统中,读者可以方便的对书目进行检索和阅览,足不出户便可以尽览群书。
1.11.1统设计系
1.1.1目标设计
图书管理系统主要提供网上的图书阅览平台,一个简单的平台主要提供以下功能:
11对图书资源进行分类,发布到网上,以供读者阅读。
22为读者提供图书检索功能。
33读者能方便地阅览电子图书。
44读者能方便地建立书签。
55对读者的用户,密码及权限进行管理。
1.1.21.1.2设计思想
在本章中,我们将实现一个简单的图书管理系统,结构如图1-1所示,页面通过ASP脚本程序访问数据库和文件系统。
图1-1系统结构设计
1.1.31.1.3系统功能分析与设计
图书管理系统的功能模块划分如图1-2所示。
图1-2系统功能模块划分
1.图书分类浏览
图书按照起内容进行分类,呈树状结构。
读者可以按照类别进行查找,逐级浏览。
这种浏览方式能够将相关的书目排列在一起,读者能够很方便的找到自己感兴趣的主题进行阅读。
2..图书搜索
如果读者有很明确的阅读目的,例如知道某本书的书名,著者等相关信息,或者为了方便读者迅速的查找某个关键词,就可以利用图书搜索功能。
图书管理系统相对于旧式图书馆的一个重要优点就是查找方便,读者也能免去查找书目卡片之苦了。
3.3.书签
图书阅览中常有这样的情况,读者会定期经常访问某些书目,或者是读者对某本书没有看完准备以后继续完成阅读,这样的情况就会用到书签功能。
读者可以把以后还需要阅读的书目做上书签,以后便能方便地进行阅读了。
4.4.书评
他人对书的评价往往对阅读有很大帮助。
书评能够帮助我们选择阅读对象,还能够帮助读者更好的进行阅读。
图书阅览系统将为读者提供发表意见的园地,同时还请读者为书打分,以得到读者对书的评价和反馈。
5.5.书目类别维护
图书管理系统需要定期对图书的类别进行维护,对不同等级的类别加以区分和归属,把书目归类到相关的主题下。
同时生成一个树状结构,方便读者按类别浏览。
6.6.权限管理
权限管理包括两部分内容:
对用户帐号的管理和对书目阅读权限的管理。
管理员需要给用户分配用户名和密码,同时设定用户的级别。
同时,管理员还需要给阅读资源也分级,以确定那些级别的用户可以阅读。
1.2数据库设计与实现
1.2.1数据库的需求分析
根据系统需求,可以列出以下数据项和数据结构:
11用户信息表:
存放用户信息,数据项包括用户的名称,密码,权限等。
22书目信息表:
存放书目信息,数据项包括书目的名称,作者,存放位置,所属类别等。
33书目类别表:
对书目的类别以及类别之间的包含关系进行描述,数据项包括书目类别的名称,上级类别等。
44书评信息表:
存放书评信息,数据项包括书评的标题,内容,作者等。
55书目评分信息表:
存放书目评分信息,数据项包括评分者,得分,被评对象等。
66书签信息表:
存放书签信息,数据项包括书签内容及所有者信息。
77推荐书目表:
存放推荐书目的信息,数据项包括推荐书目的编号,推荐的文本内容等。
88新书信息表:
存放新书的信息,数据项包括新书的编号,对新书的评论等。
99访问次数表:
记录本站的访问次数。
1.2.2数据库的逻辑设计
根据系统要求,可以列出以下数据项和数据结构。
11用户信息表
用户信息表的结构如图1-3所示。
图1-3用户信息表
需要说明的是用户级别是使用一个数字来表示的。
1表示系统管理员。
从2以上每个数字分别表示一种用户级别。
数字越大用户的权限就越小。
具体实现是通过和书目阅读权限级别进行比较,例如:
某本书的阅读权限是3,那么这有用户级别是1,2,和3的用户可以阅读。
用户信息表的一些初始化数据如图1-4所示。
图1-4用户信息表初始化数据
22书目信息表
书目信息表的结构如图1-5所示。
这里的书目存放目录地址指的是书目在服务器上存放的相对目录,所有书目都存放在服务器的library目录下,因此这些书目的dir属性都是以“/library”开头的。
如果服务器上的书目存放在不同的目录下,那么dir的属性应该以相应的目录开头。
33书目类别表
书目类别表的结构如图1-7所示。
图1-7书目类别表
需要说明的是,对于书目的某一个类别,编号和类别编号都是唯一的。
为了区分类别,只需要一个编号就够了。
但是考虑到要对类别进行排序,以便对类别的显示顺序进行调整,因此增加了一项“编号“作为唯一标识。
4书评信息表
书评信息表的结构如图1-9所示。
图1-9书评信息表
5书目评分信息表
书目评分信息表的结构如图1-10所示。
图1-10书目评分信息表
66书签信息表
书签信息表的结构如图1-11所示
图1-11书签信息表
77推荐书目表
图1-12推荐书目表
88新书信息表
新书信息表的结构如图1-14所示。
图1-14新书信息表初始化数据
99访问次数表
访问次数表的结构如图1-16所示
图1-16访问次数表初始化数据
访问次数表只有一条数据,记录系统的访问次据。
1010书目类别临时表
书目类别临时表的结构与书目类别表相同,如图1-17所示。
这个表是用来存放临时数据的。
图1-17书目类别临时表
1.3前端网络页面的设计与开发
1.32登陆页面
系统的登陆页如图1-21所示。
用户输入正确的用户名和密码,就可以登陆到系统中。
如果用户名和密码不正确,则提示登陆失败。
图1-21登陆页面
此模块涉及到的部分asp文件如下:
11default.asp:
登陆表单页面。
22logon.asp:
用户身份校验页面。
default.asp的原程序如下:
<%
Response.Expires=0
session.Abandon
%>
DOCTYPEHTMLPUBLIC"-//IETF//DTDHTML//EN">
BODY
{
FONT-FAMILY:
宋体;
FONT-SIZE:
14px;
LINE-HEIGHT:
20px
}
CENTER
{
FONT-FAMILY:
宋体;
FONT-SIZE:
15px;
}
input
{
FONT-FAMILY:
宋体;
FONT-SIZE:
12px;
TEXT-DECORATION:
none
}
select
{
FONT-FAMILY:
宋体;
FONT-SIZE:
12px;
TEXT-DECORATION:
none
}
电子书库系统
 
电子书库系统
 
logon.asp:
用户身份校验页面。
其原程序如下:
<%@Language=VBScript%>
<%
name=Request.Form("name")
passwd=Request.Form("passwd")
sql="selectname,passwd,typefromusertypewherename='"&name&"'"
setconn=server.CreateObject("adodb.connection")
conn.Openapplication("dsn")
setrs=server.CreateObject("adodb.recordset")
rs.Opensql,conn
ifrs.EOFthen
response.write"错误的用户名或密码!
"
rs.Close
setrs=nothing
conn.Close
setconn=nothing
Response.End
endif
ifnot(rs("passwd")=passwd)then
response.write"错误的用户名或密码!
"
rs.Close
setrs=nothing
conn.Close
setconn=nothing
Response.End
endif
session("username")=rs("name")
session("usertype")=rs("type")
rs.Close
setrs=nothing
sql="updatevisitsetvisitnum=visitnum+1"
conn.Executesql
conn.Close
setconn=nothing
Response.Redirect"frame.asp"
%>
1.33主页面
主页面frame.asp实现方法如下:
<%@Language=VBScript%>
--#includefile="identify.asp"-->
书库
--
functionMM_swapImgRestore(){//v2.0
if(document.MM_swapImgData!
=null)
for(vari=0;i<(document.MM_swapImgData.length-1);i+=2)
document.MM_swapImgData[i].src=document.MM_swapImgData[i+1];
}
functionMM_preloadImages(){//v2.0
if(document.images){
varimgFiles=MM_preloadImages.arguments;
if(document.preloadArray==null)document.preloadArray=newArray();
vari=document.preloadArray.length;
with(document)for(varj=0;j="#"){
preloadArray[i]=newImage;
preloadArray[i++].src=imgFiles[j];
}}
}
functionMM_swapImage(){//v2.0
vari,j=0,objStr,obj,swapArray=newArray,oldArray=document.MM_swapImgData;
for(i=0;i<(MM_swapImage.arguments.length-2);i+=3){
objStr=MM_swapImage.arguments[(navigator.appName=='Netscape')?
i:
i+1];
if((objStr.indexOf('document.layers[')==0&&document.layers==null)||
(objStr.indexOf('document.all[')==0&&document.all==null))
objStr='document'+objStr.substring(objStr.lastIndexOf('.'),objStr.length);
obj=eval(objStr);
if(obj!
=null){
swapArray[j++]=obj;
swapArray[j++]=(oldArray==null||oldArray[j-1]!
=obj)?
obj.src:
oldArray[j];
obj.src=MM_swapImage.arguments[i+2];
}}
document.MM_swapImgData=swapArray;//usedforrestore
}
1.3.4顶部功能菜单
顶部菜单页面包括各项功能的连接或设定:
书库首页,显示/隐藏菜单,新闻,,按分类浏览,个人信息,更改密码,添加书签,发表看法,软件下载,退出系统。
functionshow_onclick(){
if(top.window.f2.cols!
="0,*")
{
top.window.f2.cols="0,*";
}
else
{
top.window.f2.cols="300,*";
}
}
functionreadmain()
{
top.window.f2.cols="0,*";
top.xbody.location="readmain.asp";
}
functionshow_person()
{
window.open("personal.asp","_blank","height=200,width=320,status=no,toolbar=no,menubar=no,location=no");
}
functionshow_passwd()
{
window.open("passwd.asp","_blank","height=260,width=320,status=no,toolbar=no,menubar=no,location=no");
}
functionadd_bm()
{
window.open("add_bookmark0.asp","_blank","height=430,width=320,status=no,toolbar=no,menubar=no,location=no");
}
functionadd_cm()
{
window.open("add_comment.asp","_blank","height=550,width=550,status=no,toolbar=no,menubar=no,location=no,scrollbars=yes,top=0,left=0");
}
functionwindow_onload(){
window.open("personal.asp","_blank","height=200,width=320,status=no,toolbar=no,menubar=no,location=no");
}
//-->
书库首页
show_onclick();">
显示/隐藏菜单
新闻
readmain();">
按分类浏览
show_person();">
个人信息
show_passwd();">
更改密码
add_bm();">
添加书签
add_cm();">
发表看法
<%ifsession("usertype")<=1then%>
重新生成书目
<%endif%>
软件下载
退出系统
|
<%@Language=VBScript%>
--#includefile="identify.asp"-->
书库
--
functionMM_swapImgRestore(){//v2.0
if(document.MM_swapImgData!
=null)
for(vari=0;i<(document.MM_swapImgData.length-1);i+=2)
document.MM_swapImgData[i].src=document.MM_swapImgData[i+1];
}
functionMM_preloadImages(){//v2.0
if(document.images){
varimgFiles=