报告
123301班许铭均2016年1月22日
习
课题名称:
图书借阅管理系统
目录
目录
第1章 系统概述 ............................................................................................................................ 1 第2章 需求分析 .......................................................................................................................... 2
2.1图书管理系统需求概述 ................................................................................................... 2
2.1.1总体目标 ............................................................................................................... 2 2.1.2用户类型 ............................................................................................................... 2 2.2图书管理系统需求模型 ................................................................................................... 2
2.2.1功能描述 ............................................................................................................... 2 2.2.2图书管理员详细功能描述 ................................................................................... 3 2.2.3借阅书籍描述 ....................................................................................................... 3 2.3系统任务的可行性分析 ................................................................................................... 6
2.3.1技术可行性 ........................................................................................................... 6 2.3.2经济可行性 ........................................................................................................... 6
第3章 系统分析与设计 .............................................................................................................. 7
3.1系统数据库设计 ............................................................................................................... 7
3.1.1数据库设计概述 ................................................................................................... 7 3.1.2表结构设计 ........................................................................................................... 7 3.1.3读者类型信息表 ................................................................................................... 7 3.1.4用户信息表结构设计 ........................................................................................... 8 3.2 构架概述 .......................................................................................................................... 8 3.3 主要算法设计 .................................................................................................................. 9 第4章 详细设计与实现 ............................................................................................................ 11
4.1系统的工程结构 ............................................................................................................. 11
4.1.1 Hibernate实现 ................................................................................................. 11 4.1.2数据库的实现 ..................................................................................................... 13 4.1.3 用户界面的实现 ................................................................................................ 15 4.2程序测试的意义 ............................................................................................................. 17
4.2.1 程序调试 ............................................................................................................ 17 4.2.2 测试的重要性及目的 ........................................................................................ 17 4.3 测试的方法、计划 ........................................................................................................ 18
4.3.1 测试的主要步骤 ................................................................................................ 18 4.3.2 测试的主要内容 ................................................................................................ 18 4.4 测试的数据 .................................................................................................................... 19
I
目录
4.5测试结语 ......................................................................................................................... 19 第5章 结束语 ............................................................................................................................ 20 参考文献 ........................................................................................................................................ 21 附录 ................................................................................................................................................ 22
附录1系统截图 .................................................................................................................... 22 附录2 核心代码 ................................................................................................................... 23
II
第1章 系统概述
第1章 系统概述
1.1问题的提出
随着人类社会的发展,网络科技的发展,人类对知识的需求也不断地增长。信息时代已经来临,书籍逐渐地成为人们获取并增长知识的主要途径,随着图书信息系统的广泛深入和发展,建立与开发图书管理系统已具有深刻意义。
随着人们对图书需要的增大,各个书店及图书馆书籍数量的增加,传统的图书管理方法已经不能满足人们对图书信息量大,高效的要求。本次的图书管理系统不仅为广大有需要的网络用户提供免费、最新的图书资讯,同时用户可以通过书名或者作者,分类等查询所需要的图书或者预订借阅图书,并且也是可以看到个人的借阅信息。因此开发一个供图书管理人员和用户进行沟通和交流信息的图书管理网站是非常有意义和必要的。
1.2目的及意义
图书管理系统是一个可以完全实现网上图书管理和借阅图书的管理系统,使图书管理工作科学化,系统化,规范化,同时也提高了图书管理方面的数据处理的速度和准确性,使该系统能够快速、有效、准确的查询和修改图书的各种状态情况。在开发和设计博图书管理系统的过程中,我始终力求系统在操作简单,和快速查询的实现,希望能给用户带来最优越的体验,所以一直致力于这两个方面有所突破。在操作上,页面简单明了,所有的基本操作用户都能在系统界面上迅速、准确的进行,使管理功能清晰明了的呈现在广大用户的面前,让用户不用看帮助也能准确操作。该系统采用JAVA+JSP +SSH+MYSQL技术开发。主要利用了比较流行的,强大的JSP网络数据库访问技术,实现系统的功能。其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
1
第2章 需求分析
第2章 需求分析
2.1图书管理系统需求概述
2.1.1总体目标
该系统主要建立一个基于B/S模式的图书管理系统,面对当起很多小型图书管理仍是人工管理带来的检索速度慢,效率低,借阅归还书籍量大,书籍统计工作量大,藏书不能完成及时更新的问题,该系统可以对三个用户类型的使用实现。
1.对于读者在本系统的应用下可实现按照各种方式(如:书名,编号,作者)查询图书馆的藏书请客,方便的借阅书籍,续借书籍,归还书籍,能够查询自己的借阅书籍情况。
2.对于图书馆工作人员能够实现方便的对图书进行查询,方便的进行读者借阅情况查询,方便的进行借书还书处理等,便捷的对书籍信息进行添加、修改、删除,分类管理等操作,对读者信息进行相关添加,修改,分类管理等操作。 2.1.2用户类型
图书管理系统是一个基于B/S模式的对图书馆进行高效率管理的应用系统,它的用户主要是读者和图书管理员,学生通过该系统进行图书查询进而对自己需要的图书进行借阅及自己的借阅情况进行查询,图书管理员则通过本系统实现对图书及读者的高效管理,除此之外,还需要一个系统管理员对不同的用户进行权限的设置等操作。
2.2图书管理系统需求模型
2.2.1功能描述
图书管理系统的主要任务是实现读者迅速检索查询,方便借阅归还图书,图书管理员高效的完成系统的各项基本操作,系统管理员是管理用户设置权限等操作,图书管理系统要完成一下功能:
1)登录
图书管理员,系统管理员进入该系统必须登录,身份验证正确了才可以进入该系统,以不同身份进入该系统所对应的系统使用权限是不同的。
2)系统设置功能:系统管理员可以设置图书馆相关的参数信息。 3)用户管理功能:对系统用户进行添加,修改,删除,权限设置等操作。 4)查询功能:对图书馆的馆藏图书,借阅历史,读者用户等信息进行查询。
5)其他功能:系统管理员可以修改自己的密码,并且拥有其他用户所拥有的所有功能。
2
第2章 需求分析
2.2.2图书管理员详细功能描述
读者管理是对读者的类型和读者档案进行管理,包括添加,修改,删除读者类型和读者用户的相关信息,管理不同类型读者借阅书籍的数量。图书管理包括对书籍类型和具体书籍信息的管理,可以增加,修改,删除书籍,丰富具体书籍的信息,对不同书籍进行分类操作。借阅书籍可以完成对读者借阅,续接和还书的操作。系统查询查询书籍相关资料。可以修改自己的登录密码。
2.2.3借阅书籍描述
借阅图书管理系统涉及到的用例包括:借阅书籍,归还书籍,读书查询,读者信息管理,书籍信息管理,用户管理等,现就系统的主要用例借阅书籍,归还书籍,书籍查询进行详细分析。
图1-1借阅书籍用例图
3
借阅借阅者更新书籍列表登录uc Use Case Model 第2章 需求分析
用例名称 标识符 参与者 描述 UC-1 读者,书籍管理员 读书可以通过查询等方式获得自己想借阅的书籍的名称,编号,等其他可唯一识别的信息,向书籍管理员提出借阅请,管理员在系统中记录相应信息,将书籍交给读者,借阅成功。 前置条件 后置条件 主干过程 1) 登录;2)进入借阅书籍的页面 更新借阅书籍列表; 借阅书籍 读者提供想借阅的书籍的标号 系统存储读者和借阅的书籍,并将之存储到数据库中 系统更新借阅列表 分支过程 选择重置(第3步后分支出来) 1) 读者选择重置 2) 系统刷新该页面 被包含用例 无 借阅书籍 被扩展用例 无 优先级 高
4
第2章 需求分析
1-2 归还书籍用例图
用例名称 标识符 参与者 描述 前置条件 后置条件 UC-1 读者,书籍管理员 读者将自己借阅的归还书籍书籍馆。 1) 登录;2) 进入归还书籍页面 更新归还书籍列表; 归还书籍 更新列表借阅者进入归还页面登录uc Use Case Model 5
第2章 需求分析
主干过程 归还书籍 读者请求归还借阅的书籍并提供自己的编号 系统显示该读者的借阅信息表 系统更归还书籍列表 分支过程 选择重置(第3步后分支出来) 1)读者选择重置 2)系统刷新该页面 优先级
高 2.3系统任务的可行性分析
2.3.1技术可行性
首先我已经搭建好开发所需要的软硬件平台,并进行了合理而完善的需求分析,做好了充分的前期准备工作,其次因为本程序的平台将基于Java,将要使用JSP技术,它们具有易开发,操作简单等特点,所以这个程序的开发可行性在技术上是完全可行的。 2.3.2经济可行性
本系统的开发,为借阅书籍的工作效率带来了一个质的飞跃,为此主要表现有以下几个方面:本系统的运行可以代替人工进行许多繁杂的劳动;本系统的运行可以节省许多资源;本系统的运行可以大大的提高效率;本系统可以使敏感文档更加安全,等等。所以,本系统在经济上是可行的。
6
第3章 系统分析与设计
第3章 系统分析与设计
3.1系统数据库设计
3.1.1数据库设计概述
整个系统所包括的信息有书籍信息、读者信息、借阅书籍信息、归还书籍信息、系统用户信息、读者类型信息。可将这些信息抽象为下列系统所需要的数据项和数据结构:
1)书籍信息(编号,书籍名称,书籍类型,作者,入库时间,借阅天数) 2)读者信息(编号,姓名,性别,有效证件,证件号码,登记日期) 3)读者类型(编号,管理员,读者) 3.1.2表结构设计
图书信息表主要用于存储图书馆中所藏图书的相关信息,主要用于读者和图书管理员对馆中图书的查询,系统用户根据图书的某个属性进行查询,读者借阅时对图书的寻找。表的具体结果如下:
表3-1 图书信息表info_book
字段名称 barcode author price press intime operator page 数据类型 字段长度 varchr varchr float varchr date varchr int 30 10 30 30 8,2 70 是否为空 No Yes No No No No Yes 说明 Key 作者 价格 出版社 入库时间 操作员 页码
3.1.3读者类型信息表
此表的设计是为了对不同身份的读者进行分类方便读者的管理,根据读者需求的不同对起权限进行的设置,用于规定不同类型读者一次可借阅的图书数量,表的具体结构设计如下:
7
第3章 系统分析与设计
表3-2 读者类型信息表info_role
字段名称 ID rolename 数据类型 int varchar 字段长度 10 50 是否为空 No No 说明 Key 角色名称
3.1.4用户信息表结构设计
该表的设计用于记录图书管理系统用户的信息,方便对用户的管理,表中包括用户ID 和用户的登录密码,表的具体结构设计如下:
表 3-3 系统用户信息表tb_user
字段名称 userID username password roleid 数据类型 int varchar varchar varchar 字段长度 10 30 30 30 是否为空 No No No No 说明 Key 用户名 密码 角色编号
3.2 构架概述
根据需求分析的结果,按照“低耦合、高内聚”的原则,本系统将划分为以下主要功能模块:系统管理员功能模块,读者管理功能模块,图书管理功能模块,借还图书功能模块;系统查询功能模块。
在这里使用E-R图描述了图书管理系统的数据模型。具体结构如图3-1所示:
8
第3章 系统分析与设计
图3-1 系统E-R图
3.3 主要算法设计
本设计用到了冒泡算法查询借阅最多数量的图书。
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序算法的运作如下:
1) 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2) 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3) 针对所有的元素重复以上的步骤,除了最后一个。
4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
Public class BubbleSort{
public static void main(String[] args){
9
第3章 系统分析与设计
int score[] = {67, 69, 75, 87, 89, 90, 99, 100};
for (int i = 0; i < score.length -1; i++){ //最多做n-1趟排序
for(int j = 0 ;j < score.length - i - 1; j++){ //对当前无序区间score[0......length-i-1]进行排序(j的范围很关键,这个范围是在逐步缩小的)
if(score[j] < score[j + 1]){ //把小的值交换到后面 int temp = score[j]; score[j] = score[j + 1]; score[j + 1] = temp; } }
System.out.print(\"第\" + (i + 1) + \"次排序结果:\"); for(int a = 0; a < score.length; a++){ System.out.print(score[a] + \"\\"); }
System.out.println(\"\"); }
System.out.print(\"最终排序结果:\"); for(int a = 0; a < score.length; a++){ System.out.print(score[a] + \"\\"); } }
10
第4章 详细设计与实现
第4章 详细设计与实现
4.1系统的工程结构
在设计的Web层应用了著名的MVC模式,V有JSP来实现,为了业务逻辑和表示的分离。它是基于Web应用系统,它的客户端使用Broswer。然后是Web层的应用,业务逻辑层(有EJB实现),资源管理层。客户请求浏览页面,一般Web层的View有JSP组成,并且使用了大量Taglib。把每个请求映射到某个HTMLAction类来响应它。HTML Action类是一个标准的类,执行选择的HTML Action [13]。
在设计中还因应用了Struts框架,Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制[11]。 4.1.1 Hibernate实现
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
HibernateUtils.java
package cn.com.shxt.utils; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateUtils {
public static Configuration configuration; public static SessionFactory sessionfactory; static{ }
public static Session getSession(){
try{
Session session = sessionfactory ==null?null:sessionfactory.openSession(); return session;
11
configuration = new Configuration(); configuration.configure();
sessionfactory = configuration.buildSessionFactory();
第4章 详细设计与实现
}
}
}catch(Exception e){ }
e.printStackTrace(); return null;
OrderAction.java
package cn.com.shxt.action_1; import java.util.List;
import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import cn.com.shxt.dao.Dao;
import cn.com.shxt.dao.bean.DaoBean; import cn.com.shxt.model.Buyer;
import com.opensymphony.xwork2.ActionSupport;
public class BuyerAction extends ActionSupport{
private static final long serialVersionUID = -3659267408913003397L;
private String tojsp;
private Dao dao = new DaoBean(); public String search() throws Exception{ }
public String getTojsp() { }
12
List System.out.println(\"list\"+list.size()); request.setAttribute(\"listojsp=\"buyerlist.jsp\"; return SUCCESS; HttpServletRequest request = ServletActionContext.getRequest(); return tojsp; 第4章 详细设计与实现 4.1.2数据库的实现 存储记录结构设计:包括记录的组成、数据项的类型、长度,以及逻辑记录到存储记录的映射。 确定数据存放位置:可以把经常同时被访问的数据组合在一起,“记录聚簇(cluster)”技术能满足这个要求。 存取方法的设计:存取路径分为主存取路径及辅存取路径,前者用于主键检索,后者用于辅助键检索。 完整性和安全性考虑:设计者应在完整性、安全性、有效性和效率方面进行分析,作出权衡。 程序设计:在逻辑数据库结构确定后,应用程序设计就应当随之开始。物理数据独立性的目的是消除由于物理结构的改变而引起对应用程序的修改。当物理独立性未得到保证时,可能会引发对程序的修改。 CreateDB.java package cn.com.shxt.utils; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class CreateDB { } DaoBean.java package cn.com.shxt.dao.bean; import java.io.Serializable; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; 13 public static void main(String [] args){ Configuration configuration = new Configuration(); configuration.configure(); SchemaExport export = new SchemaExport(configuration); export.create(true, true); } 第4章 详细设计与实现 import cn.com.shxt.dao.Dao; import cn.com.shxt.model.PageBean; import cn.com.shxt.utils.HibernateUtils; public class DaoBean implements Dao { PageBean pagebean = new PageBean(); public int save(Object object){ } public int update(Object object){ Session session = HibernateUtils.getSession(); Transaction tx = session.beginTransaction(); object = session.merge(object); try{ session.update(session.merge(object)); tx.commit(); return 1; e.printStackTrace(); tx.rollback(); return -1; Session session = HibernateUtils.getSession(); Transaction tx = session.beginTransaction(); object = session.merge(object); try{ } session.save(object); tx.commit(); return 1; e.printStackTrace(); tx.rollback(); return -1; session.close(); }catch(Exception e){ }finally{ }catch(Exception e){ }finally{ 14 第4章 详细设计与实现 } } session.close(); @SuppressWarnings(\"rawtypes\") public int delete(Class cla, String[] id) { } Session session = HibernateUtils.getSession(); Transaction tx = session.beginTransaction(); try{ } for(int i = 0; i e.printStackTrace(); tx.rollback(); return -1; session.close(); Object object = session.get(cla, Integer.parseInt(id[i])); session.delete(object); }catch(Exception e){ }finally{ 4.1.3 用户界面的实现 1)登录模块程序测试 本模块主要是用户通过图书管理系统的首页登录进入该系统。用户输入正确的用户名和密码,系统会根据用户的身份进行相应权限划分;如果登录信息有错误,则系统提示登入错误的 信息,并且禁止系统用户进行任何操作。图书管理系统的登录主页面如图3-2所示: 15 第4章 详细设计与实现 图3-2 图书管理系统登录首页 2)系统管理员功能模块的实现 本模块中最主要的是管理系统用户,设置图书馆信息等操作,其中管理系统用户包括对他们进行添加,修改,删除及权限划分操作。其中系统管理员读系统用户进行管理的操作页面如图3-3所示 : 图3-3 系统管理员管理用户操作界面 3)读者管理功能模块的实现 读者管理主要实现对读者的类型管理和信息管理两个功能子模块,其中读者类型管理中需要设置不同类型读者一次性可借阅的图书数量,读者信息管理则主要管理维护读者的基本信息,其各自操作界面如图3-4所示: 读者类型管理功能界面: 16 第4章 详细设计与实现 图3-4 读者类型管理功能界面 4.2程序测试的意义 4.2.1 程序调试 在设计系统的过程中,存在一些错误是必然的。对于语句的语法错误,在程序运行时自动提示,并请求立即纠正,因此,这类错误比较容易发现和纠正。但另一类错误时在程序执行时由于不正确的操作或对某些数据的计算公式的逻辑错误导致的错误结果。这类错误隐蔽性强,有时会出现,有时又不出现,因此,对这一类动态发生的错误的排查是耗时费力的。 4.2.2 测试的重要性及目的 1)测试的重要性 软件的测试在软件生命周期中占据重要的地位,在传统的瀑布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户使用之前保证软件质量的重要手段。近来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难。 事实上对于软件来讲,不论采用什么技术和什么方法,软件中仍然会有错。采用新的语言、先进的开发方式、完善的开发过程,可以减少错误的引入,但是不可能完全杜绝软件中的错误,这些引入的错误需要测试来找出,软件中的错误密度也需要测试来进行估计。测试是所有工程学科的基本组成单元,是软件开发的重要部分。自有程序设计的那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工程量往往占软件开发总工作量的40%以上。而在软件开发的总成本中,用在测试上的开销要占35%到50%。如果把维护阶段也考虑在内,讨论整个软件生存期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含许多测试工作。 17 第4章 详细设计与实现 2)测试的目的 如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。 a.软件测试是为了发现错误而执行程序的过程; b.测试是为了证明程序有错,而不是证明程序无错误; c.一个好的测试用例实在于它能发现至今未发现的错误; d.一个成功的测试是发现了至今未发现的错误的测试; 首先,测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。 4.3 测试的方法、计划 4.3.1 测试的主要步骤 与开发过程类似,测试过程也必须分步骤进行,每个步骤在逻辑上是前一个步骤的继续。 大型软件系统通常由若干个子系统组成,每个子系统又由若干个模块组成。因此,大型软件系统的测试基本上由下述几个步骤组成: 1)模块测试:在这个测试步骤中发现的往往是编码和详细设计的错误。 2)系统测试:在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。 4.3.2 测试的主要内容 单独对系统的测试主要从以下几方面入手: 1)功能测试:测试是否满足开发要求,是否提供设计所描述的功能,是否用户的需求都得到满足。功能测试是系统测试最常用和必须的测试,通常还会以正式的软件说明书为测试标准。 2)强度测试及性能测试:测试系统能力最高实际限度,即软件在一些超负荷情况下功能实现的情况。 3)安全测试:验证安装在系统内的保护机构确实能够对系统进行保护,使之不受各种非常的干扰。针对本系统主要是对权限系统的测试和对无效数据、错误数据和非法数据干扰的能力的测试。 经过上述的测试过程对软件进行测试后,软件基本满足开发的要求,测试宣告结束。 18 第4章 详细设计与实现 4.4 测试的数据 表4-1测试表 序号 测 试 项 期望结果 实 际 结 果 描 述 1. 帐号、密码 登陆成功 与预期结果一致 管理员登陆测试 2. 姓名、电话 录入成功 与预期结果一致 管理员录入测试 3. 编号查询 查找成功 与预期结果一致 管理员查询测试 4. 帐号、密码 书名,作者录入 查询书籍 注册成功 与预期结果一致 用户注册测试 5. 录入成功 与预期结果一致 用户录入测试 6. 查询成功 与预期结果一致 用户查询测试 4.5测试结语 在测试系统的整个流程的过程中,针对系统的不同分支结构,不同功能模块,都发现了或大或小的问题,例如,非法用户的越权操作,以及一些逻辑顺序错误。在改正这些错误的同时,对整个系统的结构又进行了比较完善的修改,尽量做到了没有系统错误,没有异常退出等情况出现。经过多次修改并测试,基本能够达到功能完备,无异常错误,数据安全,用户权限可靠等目的。本系统的开发已达到预定目标,用户所需的功能基本实现。 本系统通过各功能模块的实现,将图书的资源快捷的,完整的展示给读者。系统通过图书编目模块,采编部将新书书目提供给读者,反馈获得读者的阅读需求。通过书目检索模块,读者获得所有图书的书目信息;通过图书流通模块,外借部为读者提供方便的借阅图书和续借服务;并对报废的图书记录进行及时的修改,保证了书目信息的准确性。因为本人的一些不足,在此软件中还不能实现网络功能,希望在以后还有更大的改进。 19 第5章 结束语 第5章 结束语 图书管理系统的各模块按原计划相继投入运行,并且运行正常。系统主要有三方面的内容:一方面是图书管理,主要包括新书入库、图书整理、图书信息的修改等方面;一方面是借阅图书,主要包括图书的借阅和归还;第三方面是信息查询,主要包括图书目录查询、读者信息查询等。 总的来说,这次的教学实习为我们即将踏入社会之前提供了一次锻炼的舞台。正像辅导老师说的一样,她让我们对几年来所学的专业课有了更为深刻的认识,使知识得到了融会贯通,得到了比以往学习任何一门课都大的提高和进步。对于我们来讲,我们每天都要学习,但这书本上的东西如果只是个理论,如果不把它应用于实践中,这门课可以对我们来说完全没有意义。经过开发这个系统,这不仅仅是一次教学实习,不仅仅是学会了一门开发语言,更重要的是在学习的过程中,所有的问题要自已去面对,有问题也只有靠自已去解决,在学习和解决这些困难的过程中提高了我们的学习的能力、解决问题的能力和实际工作的能力,学到了许多书本以外的知识,这让我们踏出这个校门给予自已最大的回报,同时我们也相信会给我们在以后的人生道路上带来很多的帮助。 20 参考文献 参考文献 [1] 钟珞,潘昊.现代软件工程学[M].北京:国防工业出版社,2010 [2] 钟珞.软件工程重点综述与试题分析[M].北京:中国民航出版社,2010 [3] James Turner, Kevin Bedell 著, 孙勇 译.Struts Kick Start[M].北京:电子工业出版社, 2011 [4] 孙卫琴编著. 精通Struts:基于MVC模式地Java Web设计与开发[M].北京:电子工业出版社,1992 [5] 飞思科技. Jsp应用开发详解[M].北京:电子工业出版社,2012 [6] 萨师煊,王珊. 数据库系统概论(第三版)[M].北京:高等教育出版社,2010 [7] 吴雷.Struts与MVC[M].北京:清华大学出版社,2012 [8] Martin Bond, Dan Haywood 著,周辉,付煜 译.21天学通J2EE(第二版)[M].北京:人民邮电出版社,2005 [9] Daren Broemmer 著,于洁,李稳 译. J2EE应用与实践技巧[M].北京:电子工业出版社,2011 [10] Strphen J.Chapman 著, 敖富江译. Java程序设计(第二版)[M].北京:清华大学出版社,2005 [11] Mack Hendricks等著, 卢刚,高春荣译. Java Web服务编程指南[M].北京:电子工业出版社,2004 [12] Ashton Hobbs著, 丁一青,吴静等译. 自学JDBC数据库编程[M].北京:清华大学出版社,2005 [13] Marty Hall著, 钟鸣,石永平译. Servlet 与 JSP权威指南[M].北京:机械工业出版社,2012 [14] 张利国著. JAVA实用案例教程[M].北京:清华大学出版社,2011 21 附录 附录 附录1系统截图 说明书:首先运行程序。管理员输入用户名aaa,密码123456进入系统点击确定,即可进入。 进入系统后选择自己想要查询或者需要建立的数据,然后点击确定即可查询或者保存。 管理员进入系统,可选择管理图书信息及用户管理两个操作。 访客进入系统,可选择个人管理,及借阅操作。 如果需要帮助,请点击帮助进入帮助查询。 22 附录 附录2 核心代码 // 用户登录操作 form, public ActionForward managerLoginQianTai(ActionMapping mapping, ActionForm HttpServletRequest request, HttpServletResponse response) { ManagerForm managerForm = (ManagerForm) form; managerForm.setName(managerForm.getName()); managerForm.setPwd(managerForm.getPwd()); int ret = managerDAO.checkManager(managerForm); if (ret == 1) { HttpSession session = request.getSession(); 23 附录 限 参数中 } } session.setAttribute(\"manager\return mapping.findForward(\"userLoginok\"); request.setAttribute(\"error\您输入的用户名称或密码错误!\"); return mapping.findForward(\"error\"); } else { private ActionForward managerModify(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { ManagerForm managerForm = (ManagerForm) form; managerForm.setId(managerForm.getId()); //获取并设置管理员ID号 managerForm.setName(managerForm.getName()); //获取并设置管理员名称 managerForm.setPwd(managerForm.getPwd()); //获取并设置管理员密码 managerForm.setSysset(managerForm.getSysset()); //获取并设置系统设置权限 managerForm.setReaderset(managerForm.getReaderset()); //获取并设置读者管理权限 managerForm.setBookset(managerForm.getBookset()); //获取并设置图书管理权限 managerForm.setBorrowback(managerForm.getBorrowback()); //获取并设置借还图书权managerForm.setSysquery(managerForm.getSysquery()); //获取并设置系统查询权限 } // 读者类型信息 private ActionForward managerAdd(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { ManagerForm managerForm = (ManagerForm) form; managerForm.setName(managerForm.getName()); // 获取设置公告名称 managerForm.setPwd(managerForm.getPwd()); // 获取并设置密码 int ret = managerDAO.insert(managerForm); // 调用添加公告信息 24 int ret = managerDAO.update(managerForm); //调用设置管理员权限的方法 if (ret == 0) { } request.setAttribute(\"error\设置管理员权限失败!\");//保存错误提示信息到errorreturn mapping.findForward(\"error\"); //转到错误提示页面 //转到权限设置成功页面 } else { return mapping.findForward(\"managerModify\"); 附录 限 参数中 } if (ret == 1) { } return mapping.findForward(\"managerAdd\"); // 转到公告信息添加成功页面 private ActionForward managerModify(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { ManagerForm managerForm = (ManagerForm) form; managerForm.setId(managerForm.getId()); //获取并设置管理员ID号 managerForm.setName(managerForm.getName()); //获取并设置管理员名称 managerForm.setPwd(managerForm.getPwd()); //获取并设置管理员密码 managerForm.setSysset(managerForm.getSysset()); //获取并设置系统设置权限 managerForm.setReaderset(managerForm.getReaderset()); //获取并设置读者管理权限 managerForm.setBookset(managerForm.getBookset()); //获取并设置图书管理权限 managerForm.setBorrowback(managerForm.getBorrowback()); //获取并设置借还图书权managerForm.setSysquery(managerForm.getSysquery()); //获取并设置系统查询权限 } HttpServletResponse response) throws ServletException, IOException { int ret = managerDAO.update(managerForm); //调用设置管理员权限的方法 if (ret == 0) { } request.setAttribute(\"error\设置管理员权限失败!\");//保存错误提示信息到errorreturn mapping.findForward(\"error\"); //转到错误提示页面 //转到权限设置成功页面 } else { return mapping.findForward(\"managerModify\"); public void checkConsumer(HttpServletRequest request, // 首页 request.setCharacterEncoding(\"gb2312\"); String account = request.getParameter(\"account\");// 取得访问次数 consumerDao = new ConsumerDao();// 连接数据库 try { ResultSet rs = connection.executeQuery(sql); // 结果集设置 while (rs.next()) { consumerForm = new ConsumerForm(); 25 附录 } } } consumerForm.setId(Integer.valueOf(rs.getString(1))); consumerForm.setAccount(rs.getString(2)); consumerForm.setPassword(rs.getString(3)); consumerForm.setName(rs.getString(4)); consumerForm.setSex(rs.getString(5)); list.add(consumerForm); } catch (SQLException e) { e.printStackTrace(); ConsumerForm consumerForm = consumerDao.getConsumerForm(account); requestDispatcher.forward(request, response); private ActionForward bookQuery(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ String str=null; request.setAttribute(\"book\//将查询结果保存到book中 return mapping.findForward(\"bookQuery\"); } /***********************查询全部书籍信息**************************/ private ActionForward bookQueryQianTai(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ String str=null; request.setAttribute(\"book\//将查询结果保存到book中 return mapping.findForward(\"bookQueryQianTai\"); 页面 private ActionForward bookborrow(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ request.setAttribute(\"readerinfo\ //查询读者的借阅信息 request.setAttribute(\"borrowinfo\ //完成借阅 String f = request.getParameter(\"f\"); String key = request.getParameter(\"inputkey\"); 26 //转到显示书籍信息列表页面 //转到显示书籍信息列表 附录 if (key != null && !key.equals(\"\")) { String operator = request.getParameter(\"operator\"); BookForm bookForm=bookDAO.queryB(f, key); if (bookForm!=null){ int ret = borrowDAO.insertBorrow(reader, bookDAO.queryB(f, key), operator); if (ret == 1) { request.setAttribute(\"bar\ return mapping.findForward(\"bookborrowok\"); } }else{ request.setAttribute(\"error\没有该图书!\"); return mapping.findForward(\"error\"); } return mapping.findForward(\"bookborrow\"); } 27 因篇幅问题不能全部显示,请点此查看更多更全内容