课程设计JavaWeb图书管理系统.docx
《课程设计JavaWeb图书管理系统.docx》由会员分享,可在线阅读,更多相关《课程设计JavaWeb图书管理系统.docx(23页珍藏版)》请在冰豆网上搜索。
课程设计JavaWeb图书管理系统
信息系统工程与实践
----JavaWeb图书管理系统
班级:
文计081-2
姓名:
邓森
学号:
3
一、题目的选择
●JavaWeb图书管理系统
二、系统分析
2.1系统的可行性分析
可行性分析是在进行初步调查后所进行的对系统开发必要性和可能性的研究,所以也称为可行性研究。
信息系统也应从技术可行性,经济可行性和社会可行性三方面来论证。
通过长时间的观察与实践,我认为图书馆管理系统的可行性分析如下:
作为图书馆这样的商业性质较小的场所,其经济成分比重相对较少,主要是支出的费用:
其中包括设备购置费、软件开发费用、管理和维护费、人员工资和培训费等。
由于各个图书馆实行统一操作,系统共享,其设备购置,人员工资,维护费用相对较少,前期的资金投入主要集中于购置图书上。
建立信息中心,可将来自各方面的信息集中管理,提高图书管理的计划性和预见性,快速地反馈市场信息。
技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬件、软件配置能否满足开发者的需要,各类技术人员的数量,水平,来源等。
图书馆管理系统的工作主要是在读者和图书馆之间架起一座桥梁,能相互沟通信息和处理信息。
这一特点非常适合计算机特点,通过网络internet技术,发挥计算机的信息传输速度快、准确度高的优势。
计算机硬件和软件技术的飞速发展,为系统的建设提供了技术条件。
社会可行性有时也称为操作可行性,主要论证新系统在企业或机构开发和运行的可能性以及运行后可能一起的对企业或机构的影响,即组织内外是否具备接受和使用新系统的条件。
在当前信息技术飞速发展的大环境下,计算机技术和软件技术的更新是图书馆完全有可能也有能力采用这样先进的管理技术。
它对图书馆带来的影响可以看到:
(a)对传统管理理念的冲击,可能引起管理层的变动和人员的调整。
(b)对图书馆工作人员的要求提高,使图书馆在一定的可能下进行机构精简,迫使工作人员继续学习新知识,拓宽图书馆在市场环境下的生存空间。
(c)对图书馆与读者之间业务方式的转变和扩充。
最后,针对用户对图书资源进行有效利用和管理的功能需求,用建模技术对图书管理资源采用面向对象的描述方式,在具体系统功能实现之前,建立起系统模型是很必要的,这里采用具有可视化、能够柔性实现分析、设计和开发系统的统一建模语言实现系统模型构建。
同时,结合最流行的基于浏览器的数据管理模式,建议采用基于组件技术的B/S(brower/server)系统结构。
从技术的角度来考虑,随着计算机技术的深入发展,相关的应用软件、技术已经很成熟了,各种信息系统的开发工具也很完善了。
运用现在软件行业中流行的开发工具JAVA以及MySQL,借鉴别人成功开发的宝贵经验,可成功开发一个功能基本完善的、符合中小型生产企业生产管理所需的生产管理信息系统。
综上所述,实施生产管理系统在技术上、经济上、运行上以及社会环境上都是可行的,因此,开发生产管理信息系统是可行的。
2.2系统的需求分析
公司的图书管理涉及图书信息、系统用户信息、读者信息、图书借阅等多种数据管理。
从管理的角度可将图书分为三类:
图书信息管理、系统用户管理、读者数据管理。
图书信息管理包括图书征定、借还、查询等操作,系统用户管理包括系统用户类别和用户数据管理,读者数据管理包括读者类别管理和个人数据的录入、修改和删除。
图书借阅者的需求是查询图书室所存的图书、个人借阅情况及个人信息的修改;图书馆工作人员对图书借阅者的借阅及还书要求进行操作,同时形成借书或还书报表给借阅者查看确认;图书馆管理人员的功能最为复杂,包括对工作人员、图书借阅者、图书进行管理和维护,及系统状态的查看、维护等。
图书借阅者可直接查看图书馆图书情况,如果图书借阅者根据本人借书证号和密码登录系统,还可以进行本人借书情况的查询和维护部分个人信息。
一般情况下,图书借阅者只应该查询和维护本人的借书情况和个人信息,若查询和维护其他借阅者的借书情况和个人信息,就要知道其他图书借阅者的借书证号和密码。
这些是很难得到的,特别是密码,所以不但满足了图书借阅者的要求,还保护了图书借阅者的个人隐私。
图书馆工作人员有修改图书借阅者借书和还书记录的权限,所以需对工作人员登陆本模块进行更多的考虑。
在此模块中,图书馆工作人员可以为图书借阅者加入借书记录或是还书记录,并打印生成相应的报表给用户查看和确认。
图书馆管理人员功能的信息量大,数据安全性和保密性要求最高。
本功能实现对图书信息、借阅者信息、总体借阅情况信息的管理和统计、工作人员和管理人员信息查看及维护。
图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、查询、统计、添加、删除和修改图书借阅者的基本信息,浏览、查询、统计图书馆的借阅信息,但不能添加、删除和修改借阅信息,这部分功能应该由图书馆工作人员执行,但是,删除某条图书借阅者基本信息记录时,应实现对该图书借阅者借阅记录的级联删除。
并且还应具有生成催还图书报表,并打印输出的功能。
2.3系统的功能需求
在本系统中,对读者来说,他们关心的问题其实是如何方便的查询到图书馆中的书籍以及自己正在借阅或是已经借阅过些什么书,所借的书是否到期等。
[3]由此可以得出系统在面向读者方面应该至少做到如下几点:
1.图书查询。
2.读者信息查询,读者信息的查询内容应包括下面的几个方面:
读者信息——对读者的基本信息进行显示。
书刊借阅——对该读者借阅过的所有书籍进行查询。
借阅历史——查询该读者借阅过的所有书籍。
违章信息——该读者的违章信息。
读者规则——该读者所应用的规则。
对系统的管理员来说,应该注意的是:
1.图书馆中有些什么书,它们都存放在那里,是不是可以被借阅;
2.本图书馆发放的读者证有那些,如何管理这些读者证;
3.这些读者证都借阅着那些书;
4.如何来确定这些读者证是否可用,以及借书的还期等。
从以上问题出发,可以得出本系统应该具有的功能:
1.图书查询——对馆内的图书进行查询。
2.借阅管理——对读者的每一次借阅,还书进进登记和管理。
3.图书管理——对图书馆的书籍进行管理。
4.借阅证管理——对读者的借阅证进行管理。
5.读者规则管理——设置和管理读者规则。
2.4设计模式
设计模式是面向对象的程序设计人员用来解决编程问题的一种形式化表示。
本系统开发采用目前一种目前广泛流行的软件设计模式MVC。
MVC(Model-View-Controller)应用程序结构被用来分析分布式应用程序的特征。
这种抽象结构能有助于将应用程序分割成若干逻辑部件,使程序设计变得更加容易。
把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
如下图2.1所示:
图2.1MVC模式
三、系统设计
3.1系统概要
本图书管理系统总体上分为前台页面显示和后台管理。
前台页面(即本书图书管理系统的首页)实现了公告的显示图书查询,留言建议三大功能。
而后台的页面则集成了图书管理中所需的功能和录入新书到库,办公图书,借还手续,查询图书等等。
平时图书管理人员的工作都是在后台中完成的。
前台是为了师生显示的。
师生们可以看到图书管理人员发布的最新公告信息;并可以查询自己感兴趣的图书,也可以给学校的图书管理人员留言提议。
相对应的后台是针对学校图书管理人员,后台的页面都加密,如果不正常登录是进入不了后台管理页面的,后台功能具体包括:
发布首页公告,添加新书到库等等。
3.2功能模块
本系统的功能模块的设计如图3.1所示,整个系统包含基本信息设置,图书信息管理,查询图书管理,添加图书管理,修改图书管理和用户借阅管理。
图3.1功能结构图
3.3设计思想
利用软件开发现有软硬件环境,及先进的管理系统开发方案,从而达到充分利用现在资源提高系统开发水平和应用效果的目的。
系统应该符合软件工程开发的理论,开发方法等开发依据。
系统应满足图书馆管理工作需要,到操作过程中的直观,方便,实用,安全等要求。
系统具备数据库维护功能,及时根据用户需求进行数据库的各种操作。
系统采用原型,使用模块化程序设计方法,便于系统功能的各种组合和修改,以及系统的测试与维护。
3.4模块设计及功能
读者可以通过网络访问学校图书馆管理系统,并对馆内的图书进行查询,对查到的在馆图书可以进行借阅,如图3.2所示:
图3.2图书查询流程图
这一部分是对书籍借阅、书籍归还的管理,当读者借书的时候,图书馆管理员把书籍的编号和读者的借阅证号输入系统,当此次借阅符合借阅规则的时候,借阅成功。
并将结果写入到数据库中。
读者归还书籍时,将图书交给图书管理员,管理员把书籍的编号和读者的借阅证号输入系统,系统核对借阅规则,对违规(如超期)的读者进行罚款之类。
如图3.3所示:
借阅管理
书籍借阅
书籍归还
输入读者证号和图书索引号
输入读者证号和书籍索引号
归还成功
借阅成功
图3.3借阅管理流程图
图书管理主要实现的功能是对新购的图书进行入库和废书记录从库中删除。
当新书被放入图书馆时,管理员登录进入系统,把图书的信息添加到图书馆管理系统中,并指定是放到哪一个藏书馆中。
这时图书可以被读者查询到,并可以借阅。
当要把一本废书删除时,图书管理员登录进入系统,查找到这一本书,并将其删除。
这时,这一本图书将不再能被查询到。
如图3.4所示:
图3.4图书管理流程图
本部分是对借阅证进行管理,并对读者的一些基本的信息进行维护,提供增、删、改等功能。
每一个借阅证都要以某一个读者规则相应,读者规则决定读者可以借阅书籍的等级,如借书时间、借书种类等。
当读者借阅证丢失时,可以进行挂失处理。
持失之后借阅证失效。
如图4.5所示:
图3.5借书证管理流程图
读者规则包括借阅时间,可借阅的图书数目,可借阅图书的书馆等。
这一部分可以对读者规则进行管理,主要是增、删、改操作。
如图3.6所示:
图3.6读者规则管理流程图
图3.7借还书流程图
3.5数据库设计
设计两个表:
a)书籍信息autos(id,category类别,model型号,no书籍编号,price租书价格),如表3.8所示:
表3.8书籍信息表
b)租书信息leases(id,autoId书籍id,customer客户名称,leaseDate租书日期,returned是否还书?
,returnDate还书日期),如表3.9所示:
表3.9租书信息表
代码1:
createdatabasebookmanage;
usebookmanage;
createtableautos
(idintprimarykeyauto_increment,
categoryvarchar(50)notnull,
modelvarchar(50)notnull,
novarchar(50)notnull,
pricedouble
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
代码2:
createtableleases
(
idintprimarykeyauto_increment,
autoIdintnotnull,
customervarchar(20)notnull,
leasedatedate,
returnedintdefault0,
returndatedate
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
四、程序设计与编码
4.1系统登录界面
当系统登陆时,首先出现的是一个用户权限登陆的界面,权限设置主要是维护系统的安全性和完整性。
拥有管理员权限的操作员能对其他操作员进行相应的权限设置,没有权限的操作员不能对相应的窗口进行操作。
如下图4.1所示:
图4.1管理员登入界面
这是进入系统时的身份验证,用户首先要从软件开发者那里申请用户名和密码,才可以进入。
该过程的流程图如下图4.2所示:
图4.2系统登入流程图
核心代码如下:
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
response.setContentType(Constant.CONTENTTYPE);
request.setCharacterEncoding(Constant.CHARACTERENCODING);
try{
Stringmethod=request.getParameter("method").trim();
AdminBeanloginbean=newAdminBean();
HttpSessionsession=request.getSession();
session.setMaxInactiveInterval(1200);
SystemBeansystembean=newSystemBean();
Stringsysdir=systembean.getDir();
if(method.equals("one")){//admin登录
Stringusername=request.getParameter("username");
Stringpassword=request.getParameter("password");
if(username==null||username.trim().equals("")){
request.setAttribute("message","请正确输入用户名!
");
request.getRequestDispatcher("index.jsp").forward(request,response);
return;
}
elseif(password==null||password.trim().equals("")){
request.setAttribute("message","请输入密码!
");
request.getRequestDispatcher("index.jsp").forward(request,response);
return;
}
DBOdao=newDBO();
StringrealPassword="";
dao.open();
list=new;
ResultSetrs=dao.executeQuery("select*fromadminwhereusername='"+username+"'");
Datedate=newDate();
SimpleDateFormatformat=newSimpleDateFormat("yyyy-MM-dd");
Stringlogintime=format.format(date);
if(rs.next()){
realPassword=rs.getString("password").trim();
StringuserName=rs.getString("username").trim();
Stringright=rs.getString("quanxian").trim();
Integerlogintimes=Integer.valueOf(rs.getInt("logintimes"));
list.add(userName);
list.add(right);
list.add(logintimes);
list.add(logintime);
}
Stringpwd=MD5.MD5(password.trim());
if(!
pwd.equals(realPassword)){
request.setAttribute("message","密码错误!
");
request.getRequestDispatcher("index.jsp").forward(request,response);
}else{
session.setAttribute("list",list);
session.setAttribute("user",username);
request.getRequestDispatcher("admin/index.jsp").forward(request,response);
}
4.2添加图书信息
身份验证通过以后,点击可以使用系统的基本信息管理界面,这是管理员主要的输入信息部分,它即可以对数据进行输入包括图书类别,图书名称,图书作者等。
填写好各项信息后,单击保存按钮,系统将对这些信息进行处理。
界面见下图5.3所示:
图4.3添加图书信息界面
核心代码如下:
publicintaddBOOK(Stringbooktype,Stringname,Stringauthor,Stringcbs,Stringisbn,Stringprice,Stringnum,Stringintro,Stringjyjg){
Stringsql="insertintobook(booktype,name,author,cbs,isbn,price,num,intro,jyjg,addtime)"+
"values('"+booktype+"','"+name+"','"+author+"','"+cbs+"','"+isbn+"','"+price+"','"+num+"','"+intro+"','"+jyjg+"','"+date+"')";
DBOdbo=newDBO();
dbo.open();
try{
inti=dbo.executeUpdate(sql);
if(i==1)
returnConstant.SUCCESS;
else
returnConstant.SYSTEM_ERROR;
}catch(Exceptione){
e.printStackTrace();
returnConstant.SYSTEM_ERROR;
}finally{
dbo.close();
}
}
publicintupBOOK(Stringid,Stringbooktype,Stringname,Stringauthor,Stringcbs,Stringisbn,Stringprice,Stringnum,Stringintro,Stringjyjg){
Stringsql="updatebooksetbooktype='"+booktype+"',name='"+name+"',author='"+author+"',cbs='"+cbs+"',isbn='"+isbn+"',"+
"price='"+price+"',num='"+num+"',intro='"+intro+"',jyjg='"+jyjg+"'whereid='"+id+"'";
DBOdbo=newDBO();
dbo.open();
try{
inti=dbo.executeUpdate(sql);
if(i==1)
returnConstant.SUCCESS;
else
returnConstant.SYSTEM_ERROR;
}catch(Exceptione){
e.printStackTrace();
returnConstant.SYSTEM_ERROR;
}finally{
dbo.close();
}
}
4.3图书类别管理
点击可以使用系统的基本信息管理界面,这是管理员主要的输入信息部分,它即可以对数据进行输入,可以添加图书的类别。
填写好各项信息后,单击保存按钮,系统将对这些信息进行处理。
界面见下图4.4所示:
图4.4图书管理类别管理
核心代码如下:
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
"-----------");
response.setContentType(Constant.CONTENTTYPE);
request.setCharacterEncoding(Constant.CHARACTERENCODING);
PayBeanpb=newPayBean();
Stringmethod=request.getParameter("method").trim();
//图书类型
if(method.equals("addTYPE")){
Stringname=request.getParameter("booktype");
intflag=pb.addTYPE(name);
if(flag==Constant.SUCCESS){
request.setAttribute("message","操作成功!
");
request.getRequestDispatcher("admin/type/index.jsp").forward(request,response);
}
else{
request.setAttribute("message","系统维护中,请稍后再试!
");
request.getRequestDispatcher("admin/type/index.jsp").forward(request,response);
}
}
elseif(method.equals("addBOOK")){
Stringbooktype=request.getParameter("booktype");
Stringname=request.getParameter("name");
Stringauthor=request.getParameter("author");
Stringcbs=request.getParameter("cbs");
Stringisbn=request.getParameter("isbn");
Stringprice=request.getParameter("price");
Stringnum=