图书馆信息管理系统课程设计报告.doc_第1页
图书馆信息管理系统课程设计报告.doc_第2页
图书馆信息管理系统课程设计报告.doc_第3页
图书馆信息管理系统课程设计报告.doc_第4页
图书馆信息管理系统课程设计报告.doc_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库课程设计报告 -图书馆信息管理系统学院:软件学院 专业:软件工程 班级:*级软件*班姓名:* 学号:* 任课教师:* 实验教师:* 助教:*目录前言-3一系统开发平台 1.1开发平台简介-41.2一些细节问题 -4二数据库规划 2.1任务陈述-4 2.2任务目标-5三系统定义-5四需求分析 4.1用户需求说明-6 4.2系统需求说明-9五数据库逻辑设计5.1ER图-105.2数据字典-125.3用户视图中的表-14六数据库物理设计6.1基本表的实现-15 6.2具有派生数据的表的示例-19 6.3索引-19 6.4安全机制-19七应用程序设计7.1功能模块-197.2界面设计-317.3事务设计-31八测试和运行-31九部分代码分析9.1首页跳转代码-319.2用户登陆信息显示-319.3数据库操作通用类-32十总结-33附参考文献-35前言随着科学技术的高速发展,我们已步入数字化、网络化、信息化的时代。图书馆是学校的文献信息中心,是为全校教学和科学研究服务的学术性机构,是学校信息化的重要基地。图书馆的工作是学校教学和科学研究工作的重要组成部分,是全校师生学习和研究的重要场所。为了更好地适应这种网络数字化信息的环境,提高利用图书馆检索信息的效率,一种成功的跟踪最新技术、充分利用软硬件资源、扎根于准、新、全数字资源的图书馆信息管理系统已孕育而生。图书馆在正常运营中面对大量书籍、读者信息以及两者间相互联系产生的借书信息、还书信息、图书预约信息等。人工记录方法既效率低又错误过多,大大影响了图书馆的正常管理工作。因此需要对书籍信息、读者信息、借书信息、还书信息、图书预约信息等进行统一管理,及时了解各个环节中信息的变更,有利于管理效率的提高,同时为了提高工作效率、服务质量和管理水平,并使图书馆管理人员从繁琐的工作中解脱出来,故开发该图书馆信息管理系统。目前我校已经有一套功能比较完备的图书馆信息管理系统,但是在使用过程中,由于管理员以及读者不断提出新的功能需求,使现有系统的局限性逐渐体现出来,所以本系统在实现现有系统功能的基础之上,又实现了几种为用户提供便利的功能,使得本软件能够更好的满足用户的需求、更具人性化、使用起来更加方便。正文一系统开发平台1.1开发平台简介本图书馆信息管理系统采用B-S架构,使用Java EE的技术路线,遵守MVC Model2模型。Model模型层使用数据库作为持久性储存结构,选用的后台数据库是MySQL5.0。这是业界领先的开源数据库,在开源产品中具有仅次于Apache服务器的市场占有率。本数据库开放源代码,具有免费使用,比较稳定的特点,适合于小型系统的持久性存储。Model使用Java Beans作为OO层面上的抽象。View视图层使用JSP技术。这是Java EE平台推荐的表现层技术。图书馆信息管理系统中使用JSP2.0规范,严格控制页面代码中的业务逻辑部分,做到不在HTML代码中混杂Java业务代码,实现了很好的业务和表现的分离。在这里采用的JSTL标准标签库来达到这一目标。Controller控制层采用Servlet技术。页面获取的数据通过Servlet的转发传递给后面的Java Beans进行数据的封装和与数据库的交互,反馈信息由Java Beans传递给Servlet,再由Servlet进行转发,从而实现业务逻辑和表现的完全分离。本图书馆信息管理系统使用struts1.2作为MVC开发框架,整个系统有struts框架作为MVC的后台运行支持。struts1.2框架是业界最早的也是最稳定和成熟的MVC开发框架,经过时间的洗礼已经被证明是一款很优秀的MVC框架,尽管还存在一些不足之处,但struts已经是可以选择的最好的框架技术。本图书馆信息管理系统的软件开发平台是MyEclipse6.0GA + Dreamweaver CS3。它的软件运行平台是Apache Tomcat 6.0 + JSTL + struts1.2。1.2一些细节问题图书馆信息管理系统中存在大量的表单提交。这里我们采用JavaScript进行客户端的简单验证。对于一些相对简单的验证,比如表单提交项是否为空,两次密码的输入是否一致等,将这样的验证过程由服务器端转移到客户端可以减轻服务器的负担,从而为更多客户提供更好的服务。对于页面菜单的设计,考虑到浏览器兼容的问题,采取最大兼容的代码。经过实际测试,该代码可以正常显示在当前主流浏览器内核之上。测试浏览器包括IE6,IE7,Firefox,Opare9。二数据库规划2.1.任务陈述图书馆信息管理系统数据库用以收集、存储书籍信息、人员(读者、图书管理员)信息、图书借阅信息以及意外处理信息,及时记录存储各个环节信息的变更,以便管理、查询、显示、输出,节约大量人力物力把人们从繁杂的手工记录方式中解脱出来的同时,有力保障图书馆日常事务的高效运作。 2.2.任务目标目标类别子目标人员信息管理读者信息管理,包括读者类别、性别、借书数量、借书期限、备注等的输入、修改、删除、显示以及报表呈现。图书馆管理员信息管理,包括管理员权限、性别、备注等的输入、修改、删除、显示以及报表呈现。书籍信息管理书籍基本信息管理,包括书籍编号、类别、关键词、备注等的输入、修改、删除、显示以及报表呈现。借阅信息管理借书信息管理,包括书籍编号、读者编号、借书日期、借书期限、备注等的输入、修改、删除、显示以及报表呈现。还书信息管理,包括书籍编号、读者编号、还书日期、还书期限、备注等的输入、修改、删除、显示以及报表呈现。意外处理信息管理续借、超期赔偿、丢失赔偿、损坏赔偿等信息的输入、修改、删除、显示以及报表呈现。三.系统定义本图书馆信息管理系统主要面向各大图书馆的图书管理以及相关人员,读者和图书管理员。旨在实现图书管理的信息化,把人们从繁杂的手工记录方式中解脱出来,实现高效准确的管理。根据我对图书馆工作和管理模式的了解,再结合上网查找到的资料和从学校图书馆工作人员那里了解到的情况,做出如下设计:本系统将用户分为读者、图书馆管理员两种身份,共同参与图书的流通管理过程。图书馆管理员权限:具有该系统的最高权限,对系统进行管理,可对数据库进行系统所提供的所有操作,并负责图书流通过程中的借书、还书操作。权限具体陈述如下:1、图书管理:包括图书的录入、查询、修改和删除。2、管理员信息管理:添加、查询、修改、删除所有管理员的信息。3、读者管理:包括读者信息的添加、查询、修改、删除等。4、系统数据处理:数据查询,包括查看当前在馆书籍信息、当前所有违章罚款信息、所有被预约图书信息等。5、管理员的个人功能:包括查看个人信息、修改密码、重新登陆、退出系统等。6、图书流通中的借书操作:借书时需要输入用户号和图书ISBN。如果该图书可借,则正常借书,提示“借阅成功”;如果该书不可借,则弹出窗口提示。7、图书流通中的还书操作:还书时需要输入用户号和图书ISBN。若正常还书,点击确定即可;若读者违章,可填写违章记录,并处以罚款。8、察看读者的请求信息,加以处理。读者权限:使用系统的相应查询功能。具体权限如下:1、图书检索功能(包括简单检索和高级检索)。 2、查看个人信息、修改密码等个人信息。3、查看个人借阅历史。4、续借已借图书:在查看个人借阅历史模块里实现,当前已借未还未续借的每本书后面都有一个续借按钮,选中后点击可以实现该书的续借。5、图书预约:可查看自己的预约信息及处理情况,也可通过填写预约表单预约图书。6、查看违章欠款记录。四.需求分析4.1用户需求说明4.1.1数据需求 图书馆分为若干个分馆,分馆名称唯一。每个分馆都藏有图书,系统可以浏览、操作、管理各个分馆的图书信息。对应书籍实体的图书信息包括图书的编号,ISBN ,名称,第一、第二、第三作者,书名的汉语拼音缩写,内容简介,入库时间,书籍单价,图书馆购进图书总数,书籍当前在库数目,书籍所在馆号,书籍外借数目等。除了一些从服务器自动获取的信息外,大部分图书信息都由管理员来维护。此外管理员还可维护图书馆管理员信息、读者信息、分馆信息、权限信息、不良记录信息。图书馆管理员信息和读者信息由用户编号、用户密码、用户密码提示问题、用户名字、用户权限、用户年龄、用户性别、用户不良记录、用户请求记录组成。其中读者可以自行维护除编号、权限、不良记录以外的其它信息。读者在借书之前必须先注册,注册后便可进行借书、还书、留言等一系列操作。借书信息包括借书记录号、用户号书籍编号、借阅日期、是否续借、是否归还等信息。对于读者的不良记录,系统将予以存储。存储的信息有不良记录编号、借阅编号、不良记录描述。对应于用户请求记录实体的请求信息包括请求信息编号、用户编号、请求描述、请求发出时间、该请求是否实现等内容。 4.1.2事务需求n 数据录入 a 新用户注册时录入自己的详细情况; b 录入新进图书的各项信息; c录入分馆的基本信息; d用户登录后录入自己的请求信息; e管理员录入用户的不良记录n 数据更新/删除f 更新/删除用户的个人信息;g 更新/删除某些图书的基本信息;h更新/删除某些图书的借阅信息;i更新/删除某些分馆的基本信息;j更新/删除某些用户的请求信息;n 数据查询k查询用户的个人信息;l查询图书的基本信息;m查询图书的借阅信息;n查询分馆的基本信息;o查询用户的请求信息;p查询用户的不良记录信息; 4.1.3系统用例用例:用例总图:4.1.4 组件图4.1.5部署图4.2系统需求说明4.2.1网络和共享需求:n 所有分馆必须安全的和总部数据库网络互连;n 必须能够支持每个分馆至少3名用户同时访问; 4.2.2性能:n 单个记录查询时间少于3秒n 多个记录查询时间少于6秒n 更新/保存记录时间少于2秒4.2.3安全性:n 必须有口令保护n 每个用户分配特定的用户视图所应有的访问权限 4.2.4法律问题:n 对管理员和读者信息管理,遵守法律 4.2.5 运行需求4.2.5.1用户界面n 使用浏览器界面结构,采用导航栏界面方式,尽力带给操作用户便利,对用户友好;对鼠标和键盘单独支持。4.2.5.2硬件接口n 本软件需要能够互联网的支撑,用户的硬件平台应该能够与互联网连接。4.2.5.3软件接口n 运行于Windows98及更高版本的Windows操作系统之上,或者其他系统。4.2.5.4故障处理n 正常使用时不应出错,若运行时遇到不可恢复的系统错误,也必须保证数据库完好无损。4.2.6其它需求n 系统的功能实现情况: 用户可在本系统下实现各种用户要求的功能n 系统的安全性: 对于系统的重要数据都有密码保护,具有一定的安全性n 系统的容错性: 用户输错数据都有提示信息,具有较好的容错性能。n 系统的封闭性: 用户的封闭性较好,用户基本上在提示信息下输数据。五.数据库逻辑设计5.1E-R图图书信息管理系统的数据库可以设计定义用户(由权限可分为管理员和普通读者)、书籍、图书馆、借书信息、请求信息和不良记录信息等实体及其之间的联系。实体使用E-R图进行描述。为清楚起见,这里将实体图和联系图分开表现。5.1.1实体图: 5.1.1.1书籍信息的E-R图:书籍编号ISBN书名作者拼音缩写内容简介入库时间单价购进总数在库总数所在库号外借数目5.1.1.2用户信息的E-R图:用户编号密码密码提示问题密码提示问题答案名字权限年龄性别不良记录特殊请求5.1.1.3图书馆信息的E-R图:图书馆编号名字请求信息编号用户编号请求内容请求时间请求是否完成 5.1.1.4 请求信息的E-R图:5.1.1.5不良记录的E-R图:不良记录编号借书编号描述5.1.2.联系图:书籍编号读者编号书籍编号借阅时间是否续借是否归还读者借阅管理员用户管理管理员书籍管理管理员请求信息管理管理员不良记录管理5.2数据字典根据上面描述的E-R图进行数据库的逻辑结构设计。在这里以表格的形式给出数据库的设计。下面表中的字段除特殊标明的外,均不能为空。(5.2.1)书籍实体。字段类型备注book_idint(11)主键,书籍编号,自增类型book_isbnvarchar(30)书籍ISBNbook_titlevarchar(100)书籍名称book_author0varchar(20)第一作者book_author1varchar(20)第二作者,可以为空book_author2varchar(20)第三作者,可以为空book_chinese_shortvarchar(50)书名的汉语拼音缩写,用于支持拼音查找book_introductiontext书籍内容简介book_yeardate入库时间,该时间从服务器获取book_pricedecimal(11,0)书籍单价book_amountint(3)购进书籍总数book_amount_inint(3)书籍当前在库数目book_which_libint(2)书籍所在馆号book_how_many_borrowedint(3)书籍外借数目,该字段由book_amount和book_amount_in字段计算得出,用于快速查找(5.2.2)用户实体。在这里的用户具有管理员和普通读者的权限。字段类型备注user_idint(11)主键,用户编号,由用户自主选择,只能由数字构成user_passwordvarchar(20)用户密码user_password_questionvarchar(50)用户密码提示问题,用于用户忘记密码时找回密码之用user_password_question_answervarchar(50)用户密码提示问题答案,用于用户忘记密码时找回密码之用user_namevarchar(20)用户名字user_purviewvarchar(2)外码,指向user_pruview,用户权限user_agetityint(3)用户年龄user_sexenum(0,1)用户性别,枚举类型,0代表“男”,1代表“女”user_durty_recordint(11)外码,指向durty_info,不良记录,可以为空user_quest_recordint(11)外码,指向request_info,请求记录,可以为空(5.2.3)图书馆实体。字段类型备注lib_idint(2)主键,图书馆编号lib_namevarchar(50)图书馆名字(5.2.4)请求记录实体。字段类型备注request_idint(11)主键,自增类型request_user_idint(11)用户编号request_describetionvarchar(100)请求描述,由用户输入request_datedate请求发出时间request_finishedtinyint(1)该请求是否实现,0代表为实现,1代表已经实现(5.2.5)不良记录信息实体。字段类型备注durty_idint(3)主键,自增类型durty_borrow_idint(11)借阅编号durty_describetionvarchar(100)不良记录描述(5.2.6)借阅联系。字段类型备注borrow_idint(11)主键,自增类型borrow_user_idint(11)外码,指向user_info,用户编号borrow_ book_idint(11)外码,指向book_info,书籍编号borrow_datedate借阅日期,从服务器获得borrow_reborrowtinyint(1)是否续借,0代表没有续借,1代表已经续借,最大续借次数为1次,默认为0borrow_is_returntinyint(1)是否归还,0代表未归还,1代表已经归还,默认为05.3用户视图中的表(1)Book_info(book_id,book_isbn,book_title,book_author0,book_author1,book_author2,book_chinese_short,book_introduction,book_year,book_price,book_amount,book_amount_in,lib_id,book_how_many_borrowed) 主键:book_id外码lib_id参照Lib_info (lib_id)(2)User_info(user_id,user_password,user_password_question,user_password_question_answer,user_name,purview_id,user_age,user_sex,durty_id,request_id) 主键:user_id外码purview_id参照User_purview(purview_id)(3)Lib_info(lib_id,lib_name)主键:lib_id(4)Request_info(request_id,user_id,request_describetion,request_date,request_finished)主键:request_id外码user_id参照User_info (user_id)(5)Durty_info(durty_id,borrow_id,durty_describetion)主键:durty_id外码borrow_id参照Borrow_info (borrow_id)(6)Borrow_info(borrow_id,user_id,book_id,borrow_date,borrow_reborrow,borrow_is_return)主键:borrow_id外码user_id参照User_info (user_id)外码book_id参照Book_info (book_id)(7)user_purview(purview_id,purview_name) 主键:purview_id六数据库物理设计 6.1基本表的实现创建表及数据库的SQL语句如下:# SQL Manager 2007 for MySQL 4.1.1.2# -# Host : localhost# Port : 3306# Database : librarySET FOREIGN_KEY_CHECKS=0;CREATE DATABASE library CHARACTER SET utf8 COLLATE utf8_general_ci;USE library;# Structure for the lib_info table : #CREATE TABLE lib_info ( lib_id int(2) NOT NULL, lib_name varchar(50) NOT NULL, PRIMARY KEY (lib_id), UNIQUE KEY lib_id (lib_id) ENGINE=InnoDB DEFAULT CHARSET=utf8;# Structure for the book_info table : #CREATE TABLE book_info ( book_id int(11) NOT NULL auto_increment, book_isbn varchar(30) NOT NULL, book_title varchar(100) NOT NULL, book_author0 varchar(20) NOT NULL, book_author1 varchar(20) default NULL, book_author2 varchar(20) default NULL, book_chinese_short varchar(50) NOT NULL, book_introduction text NOT NULL, book_year date NOT NULL, book_price decimal(11,0) NOT NULL, book_amount int(3) NOT NULL, book_amount_in int(3) NOT NULL, book_which_lib int(2) NOT NULL, book_how_many_borrowed int(5) NOT NULL, PRIMARY KEY (book_isbn), UNIQUE KEY book_id (book_id), UNIQUE KEY book_isbn (book_isbn), UNIQUE KEY book_isbn_2 (book_isbn), KEY book_which_lib (book_which_lib), CONSTRAINT book_info_lib_fk FOREIGN KEY (book_which_lib) REFERENCES lib_info (lib_id) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;# Structure for the borrow_info table : #CREATE TABLE borrow_info ( borrow_id int(11) NOT NULL auto_increment, borrow_user_id int(11) NOT NULL, borrow_book_isbn varchar(30) NOT NULL, borrow_date date NOT NULL, borrow_reborrow tinyint(1) default 0, borrow_is_return tinyint(1) default 0, PRIMARY KEY (borrow_id), UNIQUE KEY borrow_id (borrow_id) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;# Structure for the durty_info table : #CREATE TABLE durty_info ( durty_id int(3) NOT NULL auto_increment, durty_borrow_id int(11) NOT NULL, durty_describetion varchar(100) NOT NULL, PRIMARY KEY (durty_id), UNIQUE KEY durty_id (durty_id), KEY durty_borrow_id (durty_borrow_id) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;# Structure for the request_info table : #CREATE TABLE request_info ( request_id int(11) NOT NULL auto_increment, request_user_id int(11) NOT NULL, request_describetion varchar(100) NOT NULL, request_date date NOT NULL, request_finished tinyint(1) NOT NULL default 0, PRIMARY KEY (request_id), UNIQUE KEY request_id (request_id) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;# Structure for the user_purview table : #CREATE TABLE user_purview ( purview_id varchar(2) NOT NULL, purview_name varchar(20) NOT NULL, PRIMARY KEY (purview_id), UNIQUE KEY pruview_id (purview_id) ENGINE=InnoDB DEFAULT CHARSET=utf8;# Structure for the user_info table : #CREATE TABLE user_info ( user_id int(11) NOT NULL, user_password varchar(20) NOT NULL, user_password_question varchar(50) NOT NULL, user_password_question_answer varchar(50) NOT NULL, user_name varchar(20) NOT NULL, user_purview varchar(2) NOT NULL, user_age tinyint(3) NOT NULL, user_sex enum(0,1) NOT NULL default 0, user_durty_record int(11) default NULL, user_quest_record int(11) default NULL, PRIMARY KEY (user_id), UNIQUE KEY user_id (user_id), KEY user_purview (user_purview), KEY user_durty_record (user_durty_record), KEY user_quest_record (user_quest_record), CONSTRAINT user_info_durty_fk FOREIGN KEY (user_durty_record) REFERENCES durty_info (durty_id), CONSTRAINT user_info_purview_fk FOREIGN KEY (user_purview) REFERENCES user_purview (purview_id) ENGINE=InnoDB DEFAULT CHARSET=utf8;6.2具有派生数据的表的示例由于每次计算派生数据都要花费一定的时间和代价,为了提高性能,在数据库的某些表中,我设计了派生列,像上表book_info中的派生列book_how_many_borrowed。6.3索引因为添加索引会改善系统性能,所以,根据不同的情况,我引入了不同类型的索引。举例说明如下。在列出馆中所有书时,选择排序的列为book_which_lib,非主键,此索引为聚簇索引。在列出馆中所有管理员时,选择排序的列为user_id,主键,此索引为主索引。但在一些表中,如lib_info表,没有建索引,因为通过课程学习我们了解到,不必为小表建立索引。列出馆中所有图书,此操作进行较为频繁,因而为其建立二级索引。先按所在馆进行分类,再按字典序依book_isbn进行排序。在表book_info中,因book_title 、book_author、 book_chinese_short为搜索条件,建立索引。6.4安全机制在本图书馆信息管理系统中,我建立了两种类型的安全机制,系统安全和数据安全。在系统安全的建设方面,不允许以游客身份访问本系统,所有用户都必须注册并登陆,登录时会验证用户名和密码。只有两者匹配时,才可访问本系统。在数据安全方面, 数据库对象的访问和使用有严格的控制,其中的某些表只有具有特定权限才可以访问。 七应用程序设计7.1功能模块7.1.1登陆模块说明:该登陆界面可实现管理员、读者两种身份的登录功能,如果输入的帐号和密码及用户类型均正确,则正常登陆系统,否则显示提示信息。本系统不支持游客身份,要想登陆系统需先进行注册。若未注册,可点击“没有注册?”的超链接,注册页面如下。注册过程中可能出现的提示信息如下。若已注册的用户忘记密码,可点击“忘记密码?”的超链接,寻回密码的界面如下。 在输入用户名之后,系统会从数据库中读出相应的密码提示问题和答案以及该用户的其他所有信息,存入系统的session值。若用户输入正确的答案,则显示密码匹配的对话框,进入到系统中。此时可以在系统中修改该用户的密码。否则密码不匹配,将继续返回到登录页面。7.1.2读者模块 若用户注册成功,则自动调转到读者页面,无需重新登陆。若已注册的读者用户名、密码相匹配,也会跳转到如下页面。系统会从服务器自动获取用户名登陆时间,显示在上端,并显示欢迎信息。在书刊查询模块中,支持书名、作者、拼音、内容四项查询,支持完全匹配、模糊查询两种方式。并作了相应的错误提示。用户可查看自己的借阅历史,并可根据需要续借图书,续借成功后会弹出JavaScript的提示符。用户可查看自己的违章欠款纪录。用户可查看自己的图书预约,图书预约处理情况,以及填写新的预约。用户还可以查看修改自己的信息。在这里如果要修改个人信息需要填写表单,表单内容会从数据库中读出并默认显示在上面,以方便用户更改信息。7.1.3管理员模块管理员成功登陆后界面如下。管理员可察看馆中书籍列表。书籍先按所在分馆进行分类,再依book-isbn按字典序排列。管理员可添加新书。管理员可察看读者列表,管理员列表,添加管理员。管理员进行书籍借阅和归还的界面如下。书籍归还时需要填写读者ID和书籍的ISBN。在这里由于可以从外界硬件中直接读取这两个值,因此这个步骤并不复杂。在归还书籍时如果需要填写不良记录,可以将复选框标记从而显示出书写框填写不良记录信息。这里使用JavaScript和CSS进行控制,在IE7和Firefox中需要点击鼠标显示,在Opera中可以立即显示。管理员可察看所有读者的预约列表,了解情况后进行相应处理。 管理员可以查看所有读者的违章情况。 管理员可以查看个人的信息,修改个人的信息。7.2界面设计 见功能模块中的截图。7.3事务设计 本图书馆信息管理系统中涉及到的事务,均以现实世界图书馆的日常事务为原型。其中可圈可点的几处介绍如下。找回密码的流程在此不再重复,见7.1.1登陆模块。书刊归还时,管理员可根据现实情况决定是否填写不良记录,若填写,该不良记录会出现在管理员界面的违章列表中,和读者界面的违章欠款中。若读者在查询时发现馆中目前尚未有自己想借的图书,可填写预约,该预约信息会显示在管理员界面的预约列表中,管理员了解读者预约后,可进行相应处理,若已购到该书,可将预约进行标记,标记后,读者可在“查看预约”模块中看到该处理信息,这时就可去图书馆借阅该书。除此之外,读者还可续借未还的图书。八测试和运行此图书馆信息管理系统在Tomcat6.0服务器进行了功能性测试。测试结果是所有功能已经实现。此图书馆信息管理系统在IE6、IE7、Firefox2、Opera9等四款浏览器上进行了兼容性测试。测试结果是系统界面能够基本完全一致的呈现。稍有不同之处是归还书籍页面中的不良记录的自动呈现,在Netscape内核和Opera内核处有不同的表现。除此之外,还对此图书馆信息管理系统进行了低强度的压力测试。测试结果较为理想。九部分代码分析9.1首页跳转代码 这里使用JSP2.0的标准表现输出标签JSTL进行跳转。这样可以最大化的将业务层和表现层的代码分离。这是JSP2.0标准的推荐使用方法。9.2用户登录信息的显示   用户名:   登录时间: 在登录时从服务器端获得登录时间,存放在session中。使用JSTL标签,取出该登录时间,使用JSP内置的时间本地化操作对该时间进行本地化。9.3数据库操作通用类package org.galaxy.database;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import net.snapbug.util.dbtool.ConnectionManager;import net.snapbug.util.dbtool.ConnectionPool;import net.snapbug.util.dbtool.PoolFulledException;public class DBWorker private ConnectionPool pool = null;private Statement st = null;private ResultSet result = null;private static final DBWorker INSTANCE = new DBWorker();public static DBWorker getInstance()return INSTANCE;public ResultSet getResultSet(String sql) throws PoolFulledException, SQLExceptionif(pool = null)throw new NullPointerException(Database connection pool is null.);st = pool.createStatement();result = st.executeQuery(sql);return result;public int updateDatabase(String sql) throws SQLExceptionif(pool = null)throw new NullPointerException(Database connection pool is null.);st = pool.createStatement();return st.executeUpdate(sql);private DBWorker()initialize();private void initialize() try / 获得当前class文件的路径String filePath = this.getClass().getResource(/org/galaxy/database/DBWorker.class).getPath();/ 获得DatabasePool文件的路径filePath = filePath.substring(1, filePath.indexOf(classes) - 1) + /Databa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论