当前位置:首页 >> IT/计算机 >>

盐边中学图书管理系统设计与实现(带任务书)


学号

中 南 大 学 现 代 远 程 教 育


论文题目 姓 专 层 名 业 次







盐边中学图书管理系统设计与实现

计算机科学与技术 专 升 本 2009 年秋 重庆教学管理中心 重庆直属学习中心

>
入学时间 管理中心 学习中心 指导教师

2011 年 11 月 5 日

中南大学网络教育 毕业论文(设计)任务书
学生姓名 入学时间 2009 年秋 学号 专业 计算机科学与技术 管理中心 学习中心 重庆教学管理中心 重庆直属学习中心

毕业论文(设计)题目 题目类型[1] 毕业论文(设计)时间

盐边中学图书管理系统设计与实现 软件开发 2011 年 9 月 题目来源[2] 1 日至 模拟或虚构题

2011 年 11 月 15 日

1.毕业论文(设计)内容要求(或内容纲要;字数>500 字) : 内容提纲 随着电脑、手机等信息工具的普及,人们能更加完善、快捷地处理数据信息。在图书馆的日常 运作中,由于图书借阅和用户查询次数繁多,需要进行繁杂的信息数据管理。 为了能更高效、快捷、稳定地管理图书馆的数据信息,本文设计并实现了一套基于 Web 的图书 管理借阅系统。系统采用 Browser/Server 运行模式,基于 JAVA 开发平台,并使用 SQL Server 作为 后台数据库系统。系统主要实现了以下几个功能:查询图书、借还图书、图书管理、读者信息管理, 读者留言、公告栏等。读者只需要通过浏览器访问本系统,就可以轻松实现图书查询、图书借还等 操作。同样,图书管理员也可以使用本系统方便快捷地完成图书馆的信息数据管理工作。另外,由 于手机使用的普及,本系统中还新加入了 WAP 查询功能,借助于无线网络,读者可以通过使用手机, 更加方便、快捷地完成图书查询的工作,这为读者带来了更多便捷。 本文提出的基于 WEB 的图书管理系统完成了借书,还书,查询图书,管理借书证和管理员帐户 设置等主要功能, 本系统是基于 B/S 模式,其后台部分完全实现借书与还书的手续操作与对图书和人 员的管理功能,系统界面简单、易用,任何人都可以在短时间内学会使用该系统,在前台部分,创 新设计的 WAP 图书查询部分,不仅大大方便了同学们查询图书,而且使得系统多样化,多元化,具 有有很强的扩展性。

[1] 题目类型:①理论研究,②实验研究,③工程设计,④工程技术研究,⑤软件开发。 [2] 题目来源:①工作任务题,②生产实际题,③模拟或虚构题,④学生自选题。

本任务书必须网上报送学院,学院审批通过后,下载放置在学生论文首页。

2.主要参考资料:
期刊文献书写规范:作者,论文篇名,刊物名,出版年,卷(期),论文在刊物中的页码。 图书文献书写规范:作者,书名,出版地,出版社,出版日期,引用内容所在页。

[1] 林上杰,林康司. JSP 2.0 技术手册[M].北京:电子工业出版社,2005,25-36 [2] 汪孝宜,刘中兵. JSP 数据库开发实例精粹[M].北京:机械工业出版社,2001,230-248 [3] 杨仁毅. DreamweaverMX2004 自学手册[M].成都:四川电子音像出版中心,2004,150-180 [4] 方睿,刁仁宏.网络数据库原理及应用[M].成都:四川大学出版社,2005,15-18 [5] 陈明. 实用软件工程基础[M].北京:清华大学出版社,2002,19-27 [6] 耿祥义,张跃平. JAVA2 实用教程[M].北京: 清华大学出版社,2006,24-58 [7]张海藩.软件工程导论[M].北京:北京清华大学出版社,2003,25-36 [8]孙东升,侯翠兰 .网络环境下图书馆建筑思考[M].清华大学出版社,2005,36-49 [9]王世伟. 论网络环境下图书馆的六大重建[J].四川电子音像出版中心,2004,46-59 [10]杨立文,向涛.对图书馆业务流程重组的思考[J]. 清华大学出版社,2005,110-121

3.毕业论文(设计)进度安排: 起 止 时 间 阶 社会调查。 完成初稿。 修改论文。 论文定稿,交电子版论文,准备答辩。 段 内 容

2011 年 8 月 1 日—2011 年 8 月 31 日 2011 年 9 月 1 日—2011 年 10 月 15 日 2011 年 10 月 16 日—2011 年 10 月 31 日 2011 年 11 月 1 日—2011 年 11 月 10 日

指 导 教 师

网络教育学院主管院长

2011 年 9 月 10 日

盐边中学图书管理系统设计与实现
学号: 姓名: 专业:计算机科学与技术

摘 要
随着电脑、手机等信息工具的普及,人们能更加完善、快捷地处理信息数据。在图 书馆的日常运作中, 由于图书借阅和用户查询次数繁多, 需要进行繁杂的信息数据管理。 为了能更高效、快捷、稳定地管理图书馆的数据信息,本文设计并实现了一套基于 Web 的图书管理借阅系统。系统采用 Browser/Server 运行模式,基于 JAVA 开发平台, 并使用 SQL Server 作为后台数据库系统。系统主要实现了以下几个功能:查询图书、 借还图书、图书管理、读者信息管理,读者留言、公告栏等。读者只需要通过浏览器访 问本系统,就可以轻松实现图书查询、图书借还等操作。同样,图书管理员也可以使用 本系统方便快捷地完成图书馆的信息数据管理工作。另外,由于手机使用的普及,本系 统中还新加入了 WAP 查询功能,借助于无线网络,读者可以通过使用手机,更加方便、 快捷地完成图书查询的工作,这为读者带来了更多便捷。

关键词: B/S 模式;JSP;WEB;图书管理系统


第1章



绪论 ........................................................................................................................ 1

1.1 引言 ......................................................................................................................... 1 1.2 课题的研究背景 ...................................................................................................... 1 1.3 课题的国内外研究动态 .......................................................................................... 2 1.4 课题的研究意义 ...................................................................................................... 2 1.5 课题的主要内容介绍 .............................................................................................. 3 第2章 系统开发工具及相关技术介绍 ............................................................................ 4

2.1 JSP 技术 ................................................................................................................... 4 2.2 JavaBean ................................................................................................................... 4 2.3 JDBC ........................................................................................................................ 5 2.4 Servlet ....................................................................................................................... 5 2.5 SQL Server2005 ....................................................................................................... 5 2.6 TOMCAT .................................................................................................................. 5 2.7 MyEclipse ................................................................................................................. 6 2.8 B/S 结构 ................................................................................................................... 6 2.9 本章总结 .................................................................................................................. 7 第 3 章 系统分析 .............................................................................................................. 8

3.1 系统的可行性分析 .................................................................................................. 8 3.1.1 经济可行性分析 ............................................................................................. 8 3.1.2 技术可行性分析 ............................................................................................. 8 3.1.3 社会可行性分析 ............................................................................................. 8 3.2 系统的需求分析 ...................................................................................................... 9 3.3 系统的功能需求 ...................................................................................................... 9 3.4 环境需求 ................................................................................................................ 10 3.5 数据要求 ................................................................................................................ 10 3.6 设计模式 ................................................................................................................ 10 第 4章 系统设计 ............................................................................................................. 12

4.1 系统概述 ................................................................................................................ 12 4.2 功能模块设计 ........................................................................................................ 12 4.3 设计思想 ................................................................................................................ 12 4.4 数据库设计及分析 ................................................................................................ 13 4.4.1 理清实体和实体之间的关系 ....................................................................... 13

4.4.2E-R 图到关系模式的转换 ............................................................................. 13 4.4.3 数据库表设计 ............................................................................................... 13 4.5 设计思想 ................................................................................................................ 15 4.5.1 图书查询 ....................................................................................................... 15 4.5.2 作者管理 ....................................................................................................... 15 4.5.3 图书管理 ....................................................................................................... 15 4.5.4 出版社管理 ................................................................................................... 16 4.5.5 读者规则管理 ............................................................................................... 16 第 5 章 系统实现 ................................................................................................................ 17 5.1 管理员登录模块设计 ............................................................................................ 17 5.2 图书馆主界面模块设计 ........................................................................................ 17 5.3 图书管理模块 ........................................................................................................ 18 5.4 出版社管理模块 .................................................................................................... 18 5.5 作者管理 ................................................................................................................ 19 5.6 用户管理 ................................................................................................................ 19 5.7 分页显示 ................................................................................................................ 20 第 6 章 系统测试 ................................................................................................................ 21 6.1 测试目的 ................................................................................................................ 21 6.2 测试环境 ................................................................................................................ 21 6.3 测试方案 ................................................................................................................ 21 6.4 设计测试用例 ........................................................................................................ 21 第7章 结 论 .................................................................................................................... 23

结束语 .................................................................................................................................. 25 参考文献 .............................................................................................................................. 26 附 录 .................................................................................................................................. 27

第1章
1.1 引言

绪论

随着社会的发展,人们对知识的需求也不断地增长。在这种形势下,书籍就渐渐地 成为人们获取并增长知识的主要途径,而图书馆就自然而然地在人们的生活中占据了一 定的位置,如何科学地管理图书馆不但关系到读者求知的方便程度,也关系到图书馆的 发展,因此,开发一套完善的图书馆管理系统就必不可少了,本文介绍了在WindowsXP 及Java、JSP、Dreamweaver+Mysql Server环境下采用“自上而下地总体规划,自下而 上地应用开发”的策略开发本系统的详细过程,提出实现图书馆信息管理、资源共享的 基本目标,从而推动迈向数字化图书馆的步伐,并阐述系统结构设计和功能设计,从图 书的入库登记到查询浏览,从借书证发放到图书的借阅,形成了一个整体自动化管理模 式,从软件工程的角度进行了科学而严谨的阐述。 图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数 据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管 理。数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的 来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息 管理,没有发挥它的效力,资源闲置比较突出,这就是图书馆管理系统的开发的基本环 境。 数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式 对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复 杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作 人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资 料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加 困难了。 基于这一问题,我认为有必要建立一个图书馆管理系统,使图书管理工作规范化, 系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、 准确、有效的查询和修改图书情况。

1.2 课题的研究背景
当今时代是飞速发展的信息时代,计算机与信息处理技术日渐成熟。随着Internet 和计算机网络技术的蓬勃发展,Web技术得到了迅猛地发展。在科学技术高速发展的今 天,信息技术已经渗透到社会发展的每一个领域,而计算机技术为工作提供了方便性、
1

高效性、灵活性及安全性,尤其Web技术的高速发展将计算机的应用提升到另一个层次。 而图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据 的管理,利用计算机来管理复杂的信息,能够充分发挥计算机的优越。

1.3 课题的国内外研究动态
随着社会的进步和科学文化的发展, 人类的知识总量不断增长, 科学领域不断扩大, 产生出许多分支学科和专业,科研劳动日益专业化和社会化,人们对书刊文献的利用行 为、对图书馆各个工作环节的要求都发生了很大的变化,科研活动中划分出图书馆情报 工作,图书馆的社会职能随之而变,图书馆从原先一般的文化教育机构扩大而成为科研 劳动不可或缺的1部分,图书情报事业在当今信息化社会的地位和作用日益加强。 图书馆学在我国发展较快、成绩显著,它作为一门具有现代科学意义的学科,在 我国的出现始于20世纪初,经过近百年的发展,已逐渐形成一定的中国特色;建国5 0余年以来,我国的图书事业渐成规模,形成了一个布局合理、藏书比较丰富、具有全 国规模的图书馆事业体系;尤其是改革开放近20年以来,通过对外交流,通过引进、 介绍、移植,我国在图书馆学情报学理论方面出了不少成果,并加强了对图书馆现代技 术的研发利用,图书馆正在逐步走向数字化、电子化和网络化,图书情报事业正在成为 我国社会生活中一个重要的信息产业部门。然而,作为国际性学科的图书馆学情报学, 其发展水平在国际上不具有可比性,与发达国家相比,无论在理论研究还是实际情况方 面,我国的图书情报事业都还确实存在一定差距,这必将对我国的现代化建设和未来的 综合发展产生不利影响。 图书情报事业与发达国家的差距,主要体现在两个方面,理论研究方面和实际情 况方面。理论研究方面。其中,在纯理论(也即基础理论)研究方面并不落后多少,甚 至在某些方面还颇具特色;而在应用研究方面则差距甚为明显,比如信息技术应用研究 方面的差距。究其原因,主要在于以下几个方面的因素: (1)历史的原因,科技发展水 平和经济基础落后,国民文化素质较低等, (2)图书馆界缺乏真正的、系统的有组织的 调查研究,理论脱离实际,而且在某些方面存在认识上的误区; (3)图书情报信息技术 应用水平低,不能为图书馆学情报学理论研究有效地开辟新领域、提出新课题,这是因 为我国的图书馆理论研究与实践活动严重脱节,理论成果对实践缺乏指导意义,因而理 论研究生命力不强。

1.4 课题的研究意义
尽管有的图书馆有图书管理系统,但是仅仅限于图书管理员使用,属于单机系统, 对于Internet服务几乎没有,更不用说是WAP等服务。这样的图书管理系统根本没有发
2

挥它的效力,资源闲置比较突出。 基于这此问题,有必要建立一个图书管理系统有效的支持WEB和WAP的服务,以使图 书管理工作规范化,系统化,程序化,提高信息处理的速度和准确性,并且能通过 Internet能够及时、准确修改图书情况。 本系统的设计主要有效的支持WEB访问和WAP访问,使得资源利用最大化用户只需要 通过浏览器或者手机WAP访问就可以实现操作,操作简单灵活。

1.5 课题的主要内容介绍
该图书馆借阅系统采用Browser/Server运行模式,基于JAVA开发平台,并使用SQL Server作为后台数据库系统。系统主要实现了以下几个功能:查询图书、借还图书、图 书管理、读者信息管理,读者留言、公告栏等。读者只需要通过浏览器访问本系统,就 可以轻松实现图书查询、图书借还等操作。同样,图书管理员也可以使用本系统方便快 捷地完成图书馆的信息数据管理工作。

3

第2章
2.1 JSP 技术

系统开发工具及相关技术介绍

JavaServer Pages 技术是一个纯Java平台的技术,它主要用来产生动态网页内容。 在传统的网页HTML文件中加入Java程序片段和JSP标记,就构成了JSP网页。Web服务器 接收到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式 返回给客户。JSP是基于Java Servlet以及整个Java体系的Web开发技术,利用这一技术 可以建立先进、安全、快速和跨平台的动态网页。 JSP在多个方面加速了动态的Web页面的开发: 程序写一次,到处可以运行。JSP在设计时,充分考虑到应用平台的无关性。依赖 于Java的可移植性,JSP得到目前许多流行操作平台的支持,可在Apache、NetScape、 IIS等服务器上执行。 执行速度快。JSP页面只需编译一次转化为Java字节代码,其后一直驻留于服务器 内存中, 加快了对JSP页面的响应速度。 若不考虑JSP页面第一次编译所花的时间, 则JSP 的响应速度要比ASP快得多。 Java的优势。JSP技术是用Java语言作为脚本语言的。跨平台、成熟、健壮、易扩 充的Java技术使得开发人员的工作在其他方面也变得容易和简单。Java语言通过提供防 止内存泄漏的方法,在内存管理方面大显身手。加之,JSP为应用程序提供了更为健壮 的意外事件处理机制,充分发挥了Java的优势。 JSP标签可扩充性和跨平台的可重用性。JSP技术能够使开发者扩展JSP标签得以应 用,JSP开发者能定制标签库,大大减少对脚本语言的依赖。由于定制标签技术,使网 页制作者降低了制作网页和向多个网页扩充关键功能的复杂程度。 JSP组件(企业 Javabeans,JavaBeans或定制的JSP标签)都是跨平台可重用的。Javabeans和企业 Javabeans组件可以访问传统的数据库,并能以分布式系统模式工作于UNIX和WINDOWS平 台。

2.2 JavaBean
JSP网站吸引人的地方之一就是能结合JavaBean技术来扩充网站中程序的功能。 JavaBean 是一个可重复使用、且跨平台的软件组件。 JSP搭配JavaBean来使用,有以下优点: 可将HTML和Java程序分离,为了日后维护的方便,如果把所有的程序代码(Html和 Java)写到JSP网页中,则会使整个程序代码又多又繁杂,造成日后维护上的困难。
4

我们可以将常用到的程序写成JavaBean组件,JSP网页只要调用JavaBean组件来执 行我们所要的功能,不用再重复写相同的程序,这样一来,可以节省开发所需的时间。

2.3 JDBC
JDBC由一组Java语言编写的类和接口组成,使用内嵌式的SQL,主要实现三方面的 功能:建立与数据库的连接,执行SQL声明以及处理SQL执行结果。JDBC支持基本的SQL 功能,使用它可方便地与不同的关系型数据库建立连接,进行相关操作,并无需再为不 同的DBMS分别编写程序。

2.4 Servlet
Servlet是是JAVA 2.0中新增的一个全新功能。它是与Applet相对应的,Applet是 运行在客户端的浏览器,而Servlet是运行在服务器端的。 JAVA Servlets 是运行在请 求/面向请求服务器上的模块。也就是说:servlet能够象CGI脚本一样扩展WEB服务器功 能,但是servlet占用很少密集资源,当一个服务器装载servlet时, 它运行servlet的 init 方法. 这个方法不能反复调用,一旦调用就是再装载servlet. 直到服务器调用 destroy 方法卸载 servlet后才能再调用.每个新的CGI要求在服务器上新增一个进程。 如果多个用户并发地访问该程序,这些进程将消耗该Web服务器所有的可用资源,并且 系统性能降低到极其低下的地步。有很多用CGI脚本编制的一些站点由于访问量剧增,性 能迅速下降,这是CGI脚本一个缺点。 同时由于servlet 是用java编写的,因此是跨平 台的。

2.5 SQL Server2005
SQL Server2005是一个多用户、多线程的SQL数据库,是一个客户机/服务器结构的 应用。SQL Server2005的快速和灵活性足以满足一个网站的信息管理工作。 因为具有 友好的图形界面,使得不管是任何人都可以很方便的使用,不管是私用,商用,还是学 术研究使用。命令执行速度快,也许是现今最快的;简单有效的用户特权系统。

2.6 TOMCAT
Tomcat服务器是Apache Group Jakarta小组开发的一个免费服务器软件,适合于嵌 入Apache中使用, 而且, 它的源代码可以免费获得, 你可以自由地对它进行扩充。 Tomcat 服务器的兼容性很好,如WebLogic服务器采用其为Web服务器引擎,Jbuilder将其作为 标准的测试服务器,Sun公司也将其作为JSP技术应用的示例服务器。但是Tomcat服务器 有众多大软件公司的支持,而且服务器的性能稳定,其发展前景很好。
5

2.7 MyEclipse
MyEclipse是一个非常优秀的集成开发环境,它旨在简化用于多操作系统软件工具 的开发过程,可以用于管理多种开发任务,其中包括测试、性能调整以及程序调试等,而 且还可以集成来自多个供应商的第三方应用程序开发工具。通过集成大量的插 件,MyEclipse的功能可以不断扩展,以支持各种不同的应用。 MyEclipse平台是一个成熟的、精心设计的、可扩展的体系结构,可以适应多平台的 需要 , 且具有良好的可扩展性和灵活性。 MyEclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言, 它只是一个框架和一组服务, 用于通过插件组件构建开发环境。 幸运的是, MyEclipse 附 带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT) 。

2.8 B/S 结构
本系统采用B/S模式来实现客户端对服务器端的调用,所谓B/S模式即浏览器/服务 器模式,是一种从传统的二层C/S模式发展起来的新的网络结构模式。在B/S模式中,客 户端运行浏览器软件。浏览器以超文本形式向WEB服务器提出访问数据库的要求,WEB服 务器接受客户端请求后,将这个请求转化为SQL语法,并交给数据库服务器,数据库服 务器得到请求后,验证其合法性,并进行数据处理,然后将处理后的结果返回给WEB服 务器,WEB 服务器再一次将得到的所有结果进行转化,变成HTML文档形式,转发给客户 端浏览器,以友好的WEB页面形式显示出来。如图所示。
Web Browser

Web Browser

WEB 服务器

数据库服务器

Web Browser

图 1 B/S 模式图

与传统的C/S模式相比,B/S结构把处理功能全部移植到了服务器端,用户的请求通 过浏览器发出,无论是使用和数据库维护上都比传统模式更加经济方便。而且使维护任 务层次化:管理员负责服务器硬件日常管理和维护,系统维护人员负责后台数据库数据 更新维护。
6

2.9 本章总结
本章主要介绍本课题所要采用的各种相关技术及开发工具。首先介绍了开发JAVA工 具,详细说明了JSP开发系统的特性及其发展史。之后叙述了SQL Server2005数据库服 务器的相关特性,常见版本以及常用工具。然后说明了SQL Server2005数据库应用程序 开发环境和用来生成数据库应用程序的语言。最后介绍了本课题所采用的B/S体系结构 模式,说明了该体系结构的特点和优势。

7

第 3 章
3.1 系统的可行性分析

系统分析

可行性分析是在进行初步调查后所进行的对系统开发必要性和可能性的研究,所以 也称为可行性研究。信息系统也应从技术可行性,经济可行性和社会可行性三方面来论 证。通过长时间的观察与实践,我认为图书馆管理系统的可行性分析如下: 3.1.1 经济可行性分析 作为图书馆这样的商业性质较小的场所,其经济成分比重相对较少,主要是支出的 费用:其中包括设备购置费、软件开发费用、管理和维护费、人员工资和培训费等。由 于各个图书馆实行统一操作,系统共享,其设备购置,人员工资,维护费用相对较少, 前期的资金投入主要集中于购置图书上。建立信息中心,可将来自各方面的信息集中管 理,提高图书管理的计划性和预见性,快速地反馈市场信息。 3.1.2 技术可行性分析 技术上的可行性分析主要分析现有技术条件能否顺利完成开发工作,硬件、软件配 置能否满足开发者的需要,各类技术人员的数量,水平,来源等。图书馆管理系统的工 作主要是在读者和图书馆之间架起一座桥梁,能相互沟通信息和处理信息。这一特点非 常适合计算机特点,通过网络 internet 技术,发挥计算机的信息传输速度快、准确度 高的优势。计算机硬件和软件技术的飞速发展,为系统的建设提供了技术条件。 3.1.3 社会可行性分析 社会可行性有时也称为操作可行性,主要论证新系统在企业或机构开发和运行的可 能性以及运行后可能一起的对企业或机构的影响,即组织内外是否具备接受和使用新系 统的条件。在当前信息技术飞速发展的大环境下,计算机技术和软件技术的更新是图书 馆完全有可能也有能力采用这样先进的管理技术。它对图书馆带来的影响可以看到: (a)对传统管理理念的冲击,可能引起管理层的变动和人员的调整。 (b)对图书馆工作人员的要求提高,使图书馆在一定的可能下进行机构精简,迫 使工作人员继续学习新知识,拓宽图书馆在市场环境下的生存空间。 (c)对图书馆与读者之间业务方式的转变和扩充。 最后,针对用户对图书资源进行有效利用和管理的功能需求,用建模技术对图书管 理资源采用面向对象的描述方式,在具体系统功能实现之前,建立起系统模型是很必要
8

的,这里采用具有可视化、能够柔性实现分析、设计和开发系统的统一建模语言实现系 统模型构建。同时,结合最流行的基于浏览器的数据管理模式,建议采用基于组件技术 的 B/S(brower/server)系统结构。 从技术的角度来考虑,随着计算机技术的深入发展,相关的应用软件、技术已经很 成熟了,各种信息系统的开发工具也很完善了。运用现在软件行业中流行的开发工具 JAVA 以及 SQL Server2005,借鉴别人成功开发的宝贵经验,可成功开发一个功能基本 完善的、符合中小型生产企业生产管理所需的生产管理信息系统。 综上所述,实施生产管理系统在技术上、经济上、运行上以及社会环境上都是可行 的,因此,开发生产管理信息系统是可行的。

3.2 系统的需求分析
公司的图书管理涉及图书信息、系统用户信息、读者信息、图书借阅等多种数据管 理。从管理的角度可将图书分为三类:图书信息管理、系统用户管理、读者数据管理。 图书信息管理包括修改、删除、查询等操作,系统用户管理包括系统用户类别和用户数 据管理,读者数据管理包括读者类别管理和个人数据的录入、修改和删除。 图书管理系统(BMS)主要提供图书的基本信息管理和查询,主要包括作者管理、 出版社管理、图书管理、系统用户管理、图书查询等。纳入管理的图书的属性包括图书 ISBN、书名、价格、出版社、出版年份、版本号、图片、作者信息。其中: 一本图书属于一个出版社,一个出版社可以有多本图书。 一本图书可以有多个作者,一个作者也可以出版多本图书。 图书馆管理员可以浏览、查询、添加、删除、修改、统计图书的基本信息;浏览、 查询、统计、添加、删除和修改图书借阅者的基本信息,浏览、查询、统计图书馆的借 阅信息,但不能添加、删除和修改借阅信息,这部分功能应该由图书馆工作人员执行, 但是,删除某条图书借阅者基本信息记录时,应实现对该图书借阅者借阅记录的级联删 除。

3.3 系统的功能需求
在本系统中,主要包括作者管理,出版社管理,图书管理,图书查询用户管理等。由 此可以得出系统在面向读者方面应该至少做到如下几点: 1.图书查询 2.读者信息查询,读者信息的查询内容应包括下面的几个方面:修改用户的用户 名,登录密码等。可以删除一个用户。系统管理员还可以添加一个新的用户。 对系统的管理员来说,应该注意的是:
9

1.图书馆中有些什么书,它们的价格是多少,上架时间,作者等。 2.出版社管理,包括对出版社的修改,删除,添加等操作。 3.图书作者管理,包括对作者的修改,删除,添加等操作。 4.用户管理,包括对用户的修改,删除,添加等操作。 从以上问题出发,可以得出本系统应该具有的功能: 1.图书查询——对馆内的图书进行查询。 2.出版社管理——对出版社的添加,修改等。 3.图书管理——对图书馆的书籍进行管理。 4.用户管理——设置和管理用户。

3.4 环境需求
1、硬件环境 ①CUP:至少 PentiumIII800 以上。 ②内存:至少 128M 以上。 ③硬盘:至少 20G 硬盘空间以上。 ④显示器:15‘显示器。 ⑤光盘驱动器:CD-ROM 或 DVD-ROM 驱动器。 2、软件环境 本系统在 WindowsXP 及 Java、JSP、Dreamweaver+SQL Server 中实现。 3、运行本系统的环境 ①Jdk1.6 下载与安装。 ②Eclipse3.2.1 下载与解压。 ③MyEclipse5.0 安装。 ④Tomcat6.0 下载与解压。 ⑤MyEclipse 中配置 Tomcat。
⑥SQL Server2005 数据库。

3.5 数据要求
保证数据的安全性和完整性及权限的设置等等。

3.6 设计模式
设计模式是面向对象的程序设计人员用来解决编程问题的一种形式化表示。本系统 开发采用一种目前广泛流行的软件设计模式 MVC。MVC(Model-View - Controller)应
10

用程序结构被用来分析分布式应用程序的特征。这种抽象结构能有助于将应用程序分割 成若干逻辑部件,使程序设计变得更加容易。把一个应用的输入、处理、输出流程按照 Model、View、Controller 的方式进行分离,这样一个应用被分成三个层——模型层、 视图层、控制层。 MVC 模式的出现,很好的解决了传统开发 WEB 应用方式中存在的问题。M 代表模型 (Model),包含完成任务所需要的所有的行为和数据;V 代表视图(View)界面,显示模 型提供的数据;C 代表控制器(Controller),它将模型映射到界面中,处理用户的输 入并响应请求。其模型关系如图所示。在 MVC 模式中,三层各尽其职、相对独立,各层 内部的改变不会影响到其它层,从而降低了数据表达、数据描述和应用操作的耦合度, 也能更好的实现开发中的分工,加快工程进度。

11

第 4章
4.1 系统概述

系统设计

本图书管理系统只是一个简单对图书进行管理,分为用户登录,注册,当登录进入 系统后,主界面显示图书信息,包括图书的出版日期,作者,图书名,上架时间等。用 户登录之后可以对图书作者进行管理,主要包括对图书作者进行修改名字,删除图书作 者,添加图书作者等。对图书管理,包括对图书进行修改,根据 ID 号删除某本图书, 添加新的图书,首先会到数据库中查找是否存在此图书,如果存在则不能添加,否则添 加成功。对出版社的管理,包括修改出版社的名称,按 ID 号删除出版社,添加新的出 版社等。对用户的管理包括添加新的用户,修改用户的账号,登录密码,添加新的用户 等。还有对按图书号对图书的查询等功能。

4.2 功能模块设计
JSP 图书管理系统

作 者 管 理

出 版 社 管 理

图 书 管 理

图 书 查 询

用 户 管 理

退 出 系 统

图 4-1 功能模块图

4.3 设计思想
1. 2. 3. 利用软件开发现有软硬件环境,及先进的管理系统开发方案,从而达到充分利 系统应该符合软件工程开发的理论,开发方法等开发依据。 系统应满足图书馆管理工作需要,并达到操作过程中的直观,方便,实用,安

用现在资源提高系统开发水平和应用效果的目的。

全,准确等要求。 4. 系统具备数据库维护功能,及时根据用户需求进行数据库的各种操作。
12

系统采用原型,使用模块化程序设计方法,便于系统功能的各种组合和修改,以及 系统的测试与维护。

4.4 数据库设计及分析
4.4.1 理清实体和实体之间的关系 1. 实体以及实体的属性: (1)作者 : (作者 ID、姓、名) (2)出版社: (出版社 ID、名称) (3)图书: (ISBN、书名、版本号、出版年份、价格、图片) (4)系统用户: (用户 ID 、帐号、密码、姓名、注册日期) 2. 实体之间的关系: (1)作者 - 图书: 多对多( M :N) (2)出版社- 图书:一对多(1: N) 4.4.2E-R 图到关系模式的转换 1. 一对一: 任意一端的主键加入到另一端作为外键。 2. 一对多: 一端的主键加入到多端作为外键。 3. 多对多: 形成一张关系表, 将两端的主键分别加入该关系表,作为联合主键; 联系的属性作为该关系表字段。 4.4.3 数据库表设计 在构建系统之前,我们必须对系统所用到的数据进行大致的分类和具体的结构设 计,既要做到清晰明了,又要能适应系统各项功能的调用,而不至于产生结构上的逻辑 混乱,保证关键数据在意外情况下不会被破坏,可以说数据库是系统的重中之重。 数据库设计要遵循一些规则,一个好的数据库满足一些严格的约束和要求。尽量分 离各实体对应的表,一个实体对应一个表,搞清楚该实体有哪些属性,对应有些什么字 段,以及各实体之间有何种联系。实体、属性与联系是进行概念设计时要考虑的三个元 素,也是一个好的数据库设计的核心。 从实际出发,经过仔细地设计,得到各表的设计,它们分别是表 1 作者信息表,表 2 作者出书表,表 3 用户表,表 4 图书表,表 5 出版社表。

13

表 1 作者信息表

字段 authorID firstName lastName

字段名 作者 ID 名 姓

类型 整型 字符型 字符型

宽度 10 50 50

索引 是

是否为空 否 否 否

表 2 作者出书信息表

字段 authorID isbn

字段名 作者 ID IDBN

类型 整型 字符型

宽度 10 50
表 3 用户信息表

索引

是否为空 否 否

字段 userId account password name

字段名 用户 ID 账号 密码 姓名

类型 整型 字符型 字符型 字符型 日期型

宽度 10 50 50 50

索引 是

是否为空 否 否 否

createTime 创建时间

表 4 图书信息表

字段 isbn title copyright publisherID imageFile price

字段名 IDBN 出版社 ID 版本号 出版年份 文件 价格

类型 字符型 字符型 字符型 整型 日期型 字符型 字浮型

宽度 50 50 50 10 50

索引

是否为空 否 否 否 否 否 否

editionNumber 书名

表 5 出版社信息表

字段 publisherID publisherName

字段名 出版社 ID 出版社名称

类型 整型 字符型

宽度 10 100

索引 是

是否为空 否 否

14

4.5 设计思想
4.5.1 图书查询 用户可以通过图书 ID 号对图书进行查询,也可以按图书的名称进行查询。可以查 询出多条记录。如下图 2 图书查询流程图
查询

图书 ID 号
图 4-2

修改

图书查询流程图

4.5.2 作者管理 这一部分主要是对作者的管理,管理员登录之后可以查看所有图书的作者,可以按 ID 号修改某个者的名字或是删除某个作者, 当管理员选中某个作者是主要是通过将作者 的 ID 号首先发送给服务端, 之后服务端便去根据相应的地址去找对应的 Servlet, 然后 通过反 xml 配置文件去找到对应的类,然后出 Servlet 将信息交给业务层去处理。业务 层将处理结果返回给控制层,最终通过 Response 返回给浏览器显示给用户。对作者的 管理可以方便管理员能清晰的查看当前系统中存在哪些作者,如果该作者的图书已被删 除,那么同样该删除该作者,所以要设置图书管理功能方便管理员对图书和作者进行管 理。如下图 3 作者管理流程图。

作者姓

修改作者(按 ID 号修改)

修改成功

作者管理
作者名 删除作者(按 ID 号删除) 图 4-3 作者管理流程图 删除成功

4.5.3 图书管理 图书管理主要实现的功能是对新购的图书进行入库和废书记录从库中删除。当新书 被放入图书馆时,管理员登录进入系统,把图书的信息添加到图书馆管理系统中,并指 定是放到哪一个藏书馆中。这时图书可以被读者查询到,并可以借阅。当要把一本废书
15

删除时,图书管理员登录进入系统,查找到这一本书,并将其删除。这时,这一本图书 将不再能被查询到。如下图 4 图书管理流程图。

图书入库

确定馆藏

图书上架

图书管理

图书维护 删除图书 图 4-4 图书管理流程图

图书下架

4.5.4 出版社管理 本部分主要是对出版社的管理,系统管理员可以查看所有的出版社,同样可以按出 版社的 ID 号来修改某个出版社的名称或是删除某个出版社。出版社管理功能主要是为 了方便管理员可以灵活的对添加的图书出版社进行管理。当某个出版社的图书被删除之 后,该出版社也应该被删除,当某个出版社的名称改名之后,在系统中也应该对基本名 称进行修改。 所以对出版社的管理可以方便管理员对图书进一步的管理。 如下图 5 借书 证管理流程图。
出版社管理 出版社名称 出版社修改

出 版 社 删 除 图 4-5 借书证管理流程图

4.5.5 读者规则管理 读者规则包括借阅时间,可借阅的图书数目,可借阅图书的书馆等。这一部分可以 对读者规则进行管理,主要是增、删、改操作。如下图 6。
增加规则 修改规则 删除规则 图 4-6 读者规则管理流程图 16 给读者设置规则

规则管理

第 5 章 系统实现
本系统的页面代码都是用 JSP 页面来写的,为管理上的方便,页面一般都遵循下列 的规则: 1. 同一模块的文件放到一个文件夹下。 2. 由 index.jsp 文件对页面进行调度。 3. Modify.jsp 页面用于记录的修改。 4. View.jsp 页面显示单行记录的详细内容。 5. add.jsp 实现记录的增加和修改。 6. Servlet.jsp 实现对数据连接组件的调用,完成数据的写入操作。 7. 其他的页面作为辅助页面,配合上述几个页面来使用。

5.1 管理员登录模块设计
打开 IE 浏览器,在地址栏中输入 http://localhost:8080/bms/login.jsp,就会出 现正如图 10 所示管理员登录界面,在管理员名称中输入我的登录名称:admin,在管理 员密码中输入我的登录密码:admin,再按确定就可以进入图书馆管理系统的主界面了。 如下图 1 管理员登录图。

图 5-1

用户登录界面

5.2 图书馆主界面模块设计
图书馆主界面主要包括对作者的显示,最上面是一个图书信息管理系统的标志,在 下方是一个系统的导航栏,导航栏的左边显示的是欢迎管理员,管理员可以修改自己的 密码,可以退出系统,在导航栏的右边是各个功能模块的链接,包括作者管理模块,出 版社管理模块,图书管理模块,用户管理模块。在下面就是一个表格主要显示的是作者 列表,作者列表包括对作者的修改的删除,添加新的作者等。如下 2 图书馆主界面图。
17

图 5-2

图书馆主界面图

5.3 图书管理模块
在该模块中主要包括对图书的显示,包括图书的书名,出版社,价格,修改,删除 图书等。还可以添加图书。如下图 3 图书管理图。

图 5-3

图书管理图

5.4 出版社管理模块
出版社管理主要包括对图书的出版管理,该界面显示出版社列表,包括显示出版社 的名称,修改,删除出版社等,还可以添加新的出版社。如下图 4 出版社管理图。

18

图 5-4

出版社管理图

5.5 作者管理
作者管理模块, 主要显示出系统所有的图书作者, 可以对所有的图书作者进行修改, 或是按 ID 号删除某个指定的作者。还可以添加新的作者,这样方面管理员查看图书的 所有作者,及时对作者进行更新等操作。如下图 5 作者管理图。

图 5-5

作者管理图

5.6 用户管理
用户管模块主要是对用户进行管理,从数据库中显示出所有的用户,可以对用户进 行修改,删除,添加新的用户,显示用户添加的时间,方便管理员对系统的用户进行管 理。如下图 6 用户管理图。

19

图 5-6

用户管理图

5.7 分页显示
分页显示主要是当一页显示不了所有数据时,分成多页显示,这样可以方便用户查 看,分页显示记录总的显示条数,当前的显示页数,可以通过进行跳到某一页。如下图 7 分页模块图。

图 5-7

分页模块图

20

第 6 章 系统测试
6.1 测试目的
依据用户需求、概要设计和详细设计说明,设计测试用例,对软件系统进行测试。 其目的是: 1. 测试是为了发现程序中的错误而执行程序的过程; 2. 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案; 3. 成功的测试是发现了至今为止尚未发现的错误的测试。

6.2 测试环境
WindowsXP 及 Java、JSP、Dreamweaver+SQL Server 中实现。 运行环境:MyEclipse6.5 SQL Server2005 Tomcat5.0。 测试的重点是系统底层基本功能模块。

6.3 测试方案
测试方案是测试阶段的关键技术问题。为了提高测试效率降低测试成本,本测试方 案采用黑盒法设计基本的测试方案,在黑盒法测试方案中,采用等价划分技术,把所有 可能的输入数据(有效的和无效的)划分成几等价类,再根据等价类的划分来测试系统 各模块。

6.4 设计测试用例
基于测试原则,本系统在设计测试用例时采用了黑盒测试技术中的划分等价类方 案,其测试用例设计如下:
表1 划分等价类

输入条件 作者 办证日期 证件号 单价

合理等价类 母、数字串 3.时间类型 母、数字串 7.大于零的数
21

不合理等价类 的字母、数字串 4. 非时间类型 的字母、数字串 8.等于零的数 9.小于零的数

1.由字母、数字开头的字 2.不是由字母、数字开头

5.由字母、数字开头的字 6.不是由字母、数字开头

10.非数字 入馆时间 读者 ID 11.时间类型 13.由字母、数字开头的 字母、数字串
表 2 合理类测试用例

12. 非时间类型 14.不是由字母、数字开 头的字母、数字串

测试数据 xiaosan(作者) 2005-5-15(办证日期) S1(证件号) 5(设备数量) 2005-5-10(入馆时间) 001(读者 ID)

期望结果 输入有效 输入有效 输入有效 输入有效 输入有效 输入有效 1 3 5 7 11 13

覆盖范围

表3

不合理类测试用例

测试数据 &#o 周(作者)

期望结果 输入无效

覆盖范围 2 4 6 8 9 10 14

2005-123-5(办证时间) 输入无效 ?×#(证件号) 0(单价) -5(单价) Abc(单价) @34(读者 ID) 输入无效 输入无效 输入无效 输入无效 输入无效

22

第7章

结 论

本文提出的基于 WEB 的图书管理系统完成了借书,还书,查询图书,管理借书证和 管理员帐户设置等主要功能,本系统是基于 B/S 模式,其后台部分完全实现借书与还书 的手续操作与对图书和人员的管理功能,系统界面简单、易用,任何人都可以在短时间 内学会使用该系统,在前台部分,创新设计的 WAP 图书查询部分,不仅大大方便了同学 们查询图书,而且使得系统多样化,多元化,具有有很强的扩展性。 在技术方面,通过此项目的开发,本人对基于 Browser/Server 即浏览器/服务器模 式的多层体系结构的 JSP 技术有了一定的实战经验,同时对 JavaBean 的使用有了深刻 的理解。将不同复杂的数据库操作划分为独立的模块封装于 Bean 中,提高了系统的安 全性和可移植性。 通对对基于 JSP 的图书馆管理系统的设计与实现,感受颇深,获益匪浅,同时获得 了许多项目设计与开发的方法和经验。 1.合理的开发原则 MIS 系统的开发,符合以下原则: ①.创新原则,体现先进性。计算机技术的发展十分迅速,要及时了解新技术,使 用新技术,使目标系统较原来系统有质的飞跃。 ②.整体原则,体现完整性。企业管理可以理解为一个合理“闭环”系统。目标系 统应当是这个“闭环”系统的完善。企业完整地实现计算机管理不一定必须在企业的各 个方面同时实现,但必须在企业完整地设计系统的各个方面。 ③.经济原则,体现实用性。大而全和高精尖并不是成功 MIS 衡量标准。事实上许 多失败的 MIS 正是由盲目追求高新技术而忽视了其实用性。盲目追求完善的 MIS 而忽视 了本单位的技术水平,管理水平和人员素质。 2.科学的开发过程 科学的开发过程是目标系统开发成功的关键,往往引用软件工程的方法,从可行性 研究开始,经过可行性研究,需求分析,总结设计,详细设计,编码,测试等主要设计 阶段。同时对每一阶段都要认真设计及周密评审,目标系统才能完成。 3.良好的编程习惯 编写程序要有良好的编程习惯,不可急功近利,盲目追求速度,而需统筹安排,考 虑周到,有条不紊的进行。在软件开发的过程中,也应同步做好相应文档的编写。 4.全面有效的测试
23

无论怎样强调软件测试的重要性和他对软件可靠性的影响都不过分。在开发大型软 件系统实,与工程密切相关的各类人员之间的通信和配合也不可能完美无缺,因此,在 软件生命周期的每个阶段都不可避免地会产生差错。只有做好软件测试工作,才能保证 软件的安全可靠性。

24

结束语
在这段时间里, 我的指导老师金大勇老师为我毕业设计的顺利完成付出了大量的心 血。他渊博的知识,严谨的治学态度,孜孜不倦的科研精神和精益求精的工作信条给我 留下了难忘的印记,将使我受益终身。 感谢学校给我们一个锻炼的机会。通过对该软件的独立开发,在这一段时间,我对 管理系统软件开发有了更深一层的了解,对于软件的规范化,系统化有了一定的掌握。 对在编写应用程序有了进一步的认识。 在此非常感谢我的指导教师,他们认真负责的工作态度,严谨的治学精神和深厚的 理论水平都使我受益匪浅,给予我诚恳的意见,再次表示感谢,无论在理论上还是在实 践中都给我很大的帮助,再次表示感谢。 感谢计算机科学系的老师们的大力支持,对我的论文完成提供了重要的帮助。还感 谢在学校的这四年来的每一个位老师,是他们教给我们知识,教会我们学习,同时也谢 谢帮助我的同学,他们在我开发系统的过程中给了我无私的帮助。 最后感谢各位评委老师在百忙之中抽出宝贵时间认真审阅本文。

25

参考文献
[1] 林上杰,林康司. JSP 2.0 技术手册[M].北京:电子工业出版社,2005,25-36 [2] 汪孝宜,刘中兵. JSP 数据库开发实例精粹[M].北京:机械工业出版社,2001,230-248 [3] 杨仁毅. DreamweaverMX2004 自学手册[M].成都:四川电子音像出版中心,2004,150-180 [4] 方睿,刁仁宏.网络数据库原理及应用[M].成都:四川大学出版社,2005,15-18 [5] 陈明. 实用软件工程基础[M].北京:清华大学出版社,2002,19-27 [6] 耿祥义,张跃平. JAVA2 实用教程[M].北京: 清华大学出版社,2006,24-58 [7]张海藩.软件工程导论[M].北京:北京清华大学出版社,2003,25-36 [8]孙东升,侯翠兰 .网络环境下图书馆建筑思考[M].清华大学出版社,2005,36-49 [9]王世伟. 论网络环境下图书馆的六大重建[J].四川电子音像出版中心,2004,46-59 [10]杨立文,向涛.对图书馆业务流程重组的思考[J]. 清华大学出版社,2005,110-121 [11]王克宏,柳西玲,丁峰. Java 技术教程(中级篇)[M]. 清华大学出版社,2003,104-106 [12] David M.Geary,贺民 译. JSP 高级开发与应用[M].北京大学出版社,2003,103-118 [13] 林上杰,林康司.JSP2.0 技术手册.电子工业出版社[M].清华大学出版社,2009,11-49 [14]王磊.网站 JSP 后台解决方案. 人民邮电出版社[M].清华大学出版社,2010,31-35

26


系统主要程序源代码: CSS 中的代码
table, td, th{ font-size : 12px; font-family: "宋体";



border : 1px solid #AAAAAA; border-collapse : collapse } th { background : #336699; color:#FFFFFF; height: 20px; }

td { height : 18px; }

table caption { font-size : 14px; color : #444444; font-family:serif; font-weight: bold; }

#headtb { font-size : 14px; color : white; } #headtb td { height : 25px; }

27

#headtb a { color : white; font-weight : bold; text-decoration : none } a:link { text-decoration: none; color: #3355FF; } a:hover { text-decoration: none; color: #3355FF; } a:active { text-decoration: none; color: #3355FF; } a:visited { text-decoration: none; color: #3355FF; }

BaseDAO 类
public class BaseDAO {

protected DbConnection dbConn; static Logger logger = Logger.getLogger(BaseDAO.class);//Class

public BaseDAO() { dbConn = new DbConnection(); }

/** * 执行增、删、改等操作,不返回结果集 * @param sql : * @return 影响记录的行数

28

*/ public int updateBySql(String sql){ Connection conn = null; Statement stmt = null; try { conn = dbConn.getConnection(); stmt = conn.createStatement(); logger.debug(sql); return stmt.executeUpdate(sql); } catch (SQLException e) { logger.debug("执行SQL异常"); e.printStackTrace(); return -1; }finally{ dbConn.closeStatment(stmt); dbConn.closeConnection(conn); } }

public int updateBySql(String sql, IParamBinding bind){ Connection conn = null; PreparedStatement pstmt = null; try { conn = dbConn.getConnection(); pstmt = conn.prepareStatement(sql); logger.debug(sql); bind.bindParam(pstmt); //参数绑定 return pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); return -1; }finally{ dbConn.closeStatment(pstmt); dbConn.closeConnection(conn); }

29

}

/** * 执行多条不带参数的SQL语句 * @param sqls * @return */ public int[] executeBatch(String[] sqls){ Connection conn = null; Statement stmt = null; try { conn = dbConn.getConnection(); conn.setAutoCommit(false); stmt = conn.createStatement(); for(int i=0; i<sqls.length; i++){ logger.debug(sqls[i]); stmt.addBatch(sqls[i]); } return stmt.executeBatch(); } catch (SQLException e) { logger.debug("执行SQL异常"); dbConn.rollbackTrans(conn); e.printStackTrace(); return null; }finally{ dbConn.commitTrans(conn); dbConn.closeStatment(stmt); dbConn.closeConnection(conn); }

}

/** * 仅负责创建和关闭Connection, 由IConnectionCreator做具体数据操作。 * @param connCreator * @return

30

*/ public boolean executeInConnection(IConnectionCreator connCreator){ Connection conn = null; try { conn = dbConn.getConnection(); conn.setAutoCommit(false); boolean success = connCreator.doInConnection(conn); if(!success) dbConn.rollbackTrans(conn); else dbConn.commitTrans(conn); return true; } catch (SQLException e) { logger.debug("执行SQL异常"); dbConn.rollbackTrans(conn); e.printStackTrace(); }finally{ dbConn.closeConnection(conn); } return false;

}

//public abstract Object mappingRow(ResultSet rs);

/** * 查询 */ public List queryBySql(String sql, IRowMapper mapper){ Connection conn = null; Statement stmt = null; ResultSet rs = null; List retList = new ArrayList(); try { conn = dbConn.getConnection(); stmt = conn.createStatement();

31

logger.debug(sql); rs = stmt.executeQuery(sql); while(rs.next()){ Object obj = mapper.mappingRow(rs); //AuthorModel model = new AuthorModel(rs.getInt("authorId"), rs.getString("firstName"), rs.getString("lastName")); retList.add(obj); } } catch (SQLException e) { e.printStackTrace(); }finally{ dbConn.closeResultSet(rs); dbConn.closeStatment(stmt); dbConn.closeConnection(conn); }

return retList;

}

public List queryBySql(String sql, IParamBinding bind, IRowMapper mapper){ Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; List retList = new ArrayList(); try { conn = dbConn.getConnection(); pstmt = conn.prepareStatement(sql); logger.debug(sql); bind.bindParam(pstmt); //参数绑定 rs = pstmt.executeQuery(); while(rs.next()){ Object obj = mapper.mappingRow(rs); //AuthorModel model = new AuthorModel(rs.getInt("authorId"), rs.getString("firstName"), rs.getString("lastName")); retList.add(obj);

32

} } catch (SQLException e) { e.printStackTrace(); }finally{ dbConn.closeResultSet(rs); dbConn.closeStatment(pstmt); dbConn.closeConnection(conn); }

return retList;

}

}

图书添加代码
<%@page contentType="text/html;charset=gbk"%> <jsp:directive.page import="com.runwit.books.db.AuthorDAO" /> <jsp:directive.page import="java.util.List" /> <jsp:directive.page import="com.runwit.books.model.AuthorModel" /> <jsp:directive.page import="com.runwit.books.db.PublisherDAO" /> <jsp:directive.page import="com.runwit.books.model.PublisherModel" /> <% AuthorDAO authorDAO = new AuthorDAO(); List<AuthorModel> authors = authorDAO.queryAll();

PublisherDAO publisherDAO = new PublisherDAO(); List<PublisherModel> publishers = publisherDAO.queryAll(); %> <html> <head> <title>盐边中学图书管理信息系统-图书管理</title> <link rel=stylesheet href="../inc/main.css" type="text/css"> <style type="text/css"> table select { width: 200px;

33

} .tcolumn { background: #DDDDFF; } </style> <script type="text/javascript"> //fromSel: 源选择框, toSel:目标选择框 function moveitem(fromSel, toSel) { var fromOpts = fromSel.options; //源选择项列表数组 var toOpts = toSel.options; var idx = 0; //当前索引 var toLen = toOpts.length; // 目标选择框已有的项数 //遍历所有的源选择项列表数组 for(var i=fromOpts.length-1; i>=0; i--) { if(fromOpts[i].selected){ //如果选中 toOpts[toLen+idx] = new Option(fromOpts[i].text, fromOpts[i].value);//添加到目标选择框中 fromOpts[i] = null; //删除源选择框中的选中项 idx++; } } //目标选择项列表数组

}

//表单提交 function checkForm(myform) { var authorOpts = myform.authorIds.options; if(authorOpts != null) {

for(var i=0; i<authorOpts.length; i++) { authorOpts[i].selected = true; } }

if(myform.isbn.value == "") { alert('isbn必须输入!');

34

myform.isbn.focus(); return false; } if(myform.title.value == "") { alert('书名必须输入!'); myform.title.focus(); return false; } if(myform.publisherId.value == "") { alert('出版社必须选择!'); myform.publisherId.focus(); return false; } var price = parseFloat(myform.price.value); if(isNaN(price)){ alert('价格必须为数字!'); myform.price.focus(); return false; } var copyright = myform.copyright.value; if(copyright.length != 4 || isNaN(parseInt(copyright))){ alert('出版年份必须为4位数字!'); myform.copyright.focus(); return false; } var editionNumber = parseInt(myform.editionNumber.value); if(isNaN(editionNumber)) { alert('版本号必须为数字!'); myform.editionNumber.focus(); return false; }

return true; }

function checkIsbn() {

35

if(form1.isbn.value == "") { alert('请先输入ISBN'); form1.isbn.focus(); return; }

window.open('checkIsbn.jsp?isbn='+form1.isbn.value, 'checkwin', 'width=500,height=400,scrollbar=yes,resizable=no,status=yes' ); } </script> </head> <body> <%@include file="/inc/head.jsp"%> <form action="add_do.jsp" method="post" name="form1" onsubmit="return checkForm(this);"> <table align="center" width="980"> <caption> 添加新图书 </caption> <tr> <td width="250" class="tcolumn"> 图书ISBN </td> <td width="730"> <input type="text" name="isbn" size="40"> * <input type="button" value="检查ISBN是否存在" onclick="checkIsbn();"> </td> </tr> <tr> <td class="tcolumn"> 书名 </td> <td> <input type="text" name="title" size="40">

36

* </td> </tr> <tr> <td class="tcolumn"> 出版社 </td> <td> <select name="publisherId"> <option value=""> 请选择... </option> <% for(PublisherModel model : publishers) { %> <option value="<%=model.getPublisherId()%>"> <%=model.getPublisherName()%> </option> <% } %> </select> </td> </tr> <tr> <td class="tcolumn"> 价格 </td> <td> <input type="text" name="price"> * </td> </tr> <tr> <td class="tcolumn"> 出版年份

37

</td> <td> <input type="text" name="copyright"> * </td> </tr> <tr> <td class="tcolumn"> 版本号 </td> <td> <input type="text" name="editionNumber"> * </td> </tr> <tr> <td class="tcolumn"> 作者 </td> <td> <table> <tr> <td> <select name="allauthors" multiple="multiple" size="8"> <% for(AuthorModel model : authors) { %> <option value="<%=model.getAuthorId()%>"> <%=model.getFirstName()%> &nbsp; <%=model.getLastName()%> </option> <% } %>

38

</select> </td> <td> <input type="button" value="增加>>"

onclick="javascript:moveitem(form1.allauthors, form1.authorIds);"> <br> <input type="button" value="<<删除"

onclick="javascript:moveitem( form1.authorIds, form1.allauthors);"> </td> <td> <select name="authorIds" multiple="multiple" size="8"> </select> </td> </tr> </table> </td> </tr> <tr> <td colspan="2" align="center" class="tcolumn"> <input type="submit" value="增加"> <input type="reset" value="清空"> </td> </tr> </table> </form> </html>

39


相关文章:
更多相关标签: